Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

NÃO COMPREENDI o PARAMETRO>

Pessoal, primeiramente Boa Tarde, tudo bem? Agradeço desde já a atenção de quem estiver vendo. Por favor, se puder me ajudar. Nesta aula, não consegui compreender o pq na def inicializar_letras_acertadas ele colocou parâmetro nessa função, enquanto as outras não precisaram, meu raciocínio não ligou. Entendo que parece besteira, sinto muito, mas se puderem me ajudar a compreender. Obrigado.

5 respostas

Felippe, coloque o código para facilitar a visualização do que vc precisa para tentarmos te auxiliar.

Se possível, adicione um comentário ao lado da linha de código sobre a qual está com dificuldade de assimilar. (utilize o #comentario)

Certo.

import random

def jogar():

    imprime_mensagem_abertura()

    palavra_secreta = carrega_palavra_secreta()

    letras_acertadas = inicializa_letras_acertadas(palavra_secreta) #Aqui ele adiciona a palavra_secreta no parâmetro da função,



def inicializa_letras_acertadas(palavra):
    return ["_" for letra in palavra]

Quando ele adiciona esse parâmetro é somente para fornecer para a função a variável palavra_secreta, por ela estar sendo citada dentro da função e não haver variável interna com esse valor definido ? De modo que, se ele criasse uma variável dentro do escopo, não precisaria colocar esse parâmetro, o raciocínio está certo? Porém, como o valor dentro da variável "palavra_secreta" está fora dessa função, então ele coloca como parâmetro para buscar fora e colocar dentro...é isso?

solução!

Ah, Felippe... Na verdade, tua dúvida é bastante pertinente. (deve ser uma das perguntas mais interessantes com a qual tive a oportunidade de interagir...)

Vamos lá: O professor não utilizou argumentos (ou parâmetros) explícitos nas demais funções até então pois essas não "exigiam" isso.

Imaginemos, por exemplo, que queiramos fazer uma função simplória para calcular 2 + 1.

def soma():
    soma = 0
    elemento_1 = 2
    elemento_2 = 1
    soma = elemento_1 + elemento_2
    return soma
print (soma())

Nessa função (soma) que eu criei para calcular 2 + 1 eu não precisei adicionar argumentos à função, percebeu? Note que tudo o que precisei para confeccionar a lógica da função estava disposto lá dentro, tudo botinho e prontinho. Eu não precisei importar nada, não precisei de "descobrir" nenhuma variável no meio do caminho e também não precisei chamar nenhuma outra função para essa aí funcionar. Ela simplesmente calcula os 2 +1.

.....

Agora, problemas "reais" não são tão simplórios assim... Vamos adicionar um pouquinho mais de complexidade ao exemplo da função soma. Digamos que em vez de somar apenas 2 +1 eu quero criar uma "engrenagem", supondo que minha função possa futuramente fazer parte de um código mais complexo e possa ser chamada para, talvez, resolver questões em 1 ou mais instancias de trabalho. Agora, eu quero que aquela minha função def soma() não apenas some 2 +1, mas some qualquer número que eu quiser. Vamos criar uma função genérica para soma de 2 argumentos quaisquer. Vamos lá:

def soma(elemento_1,elemento_2):
    soma = 0
    soma = elemento_1 + elemento_2
    return soma
print (soma(2,1))

Felipe, note que ambas as funções tem a "mesma" utilidade: calcular a soma de 2 elementos. Mas você conseguiu notar a diferença entre a execução de ambas? A primeira é fechada. Eu forneço os elementos dentro da def (o 1 e o 2) e os mando somar. Ambos são dados, são fechados. Sempre que eu chamar soma () elá vai me retornar = 3, caso eu não atribua outro valor às minhas variáveis elmento1,elemento2.

Agora, na segunda execução, def soma é uma engrenagem de um potencial todo, de uma lógica mais sistemática. Notou que eu em vez de dar para a função variáveis fechadas, eu forneci argumentos que podem ser mutáveis de acordo com, bem, o que eu desejar. Os argumentos, nesse caso em particular, são também 1 e 2. Mas, seu eu quisessem, poderia chamar a segunda função com outros argumentos, como 3 e 4, por exemplo. E, quando realizasse essa chamada ele automaticamente realizaria a logica do somatório = 7.

def soma(elemento_1,elemento_2):
    soma = 0
    soma = elemento_1 + elemento_2
    return soma
print (soma(3,4))

E, a coisa mias legal disso é que você não precisa reescrever o CORPO da função para realizar mudança nas variavies. Isso reduz MUITO retrabalho uma vez que corre um risco menor de você reescrever uma função erradamente e colocar em risco uma das engrenagens do teu programa. (Já vi isso acontecendo com nossos desenvolvedores, pode ser catastrófico...) ... .. . Bem, eu espero que tenha ficado melhor para você visualizar a diferença da necessidade do uso de parâmetros nas funções.. Escolhi esse exemplo da soma pois imaginei que ficasse mais didático ;)

Muito boa a explicação Rosemeri, muito boa mesmo! Obrigado.! Compreendido! Obrigado.

Sem problemas. :)