3
respostas

Explicação sobre um código quebrado.

Olá, cá estava eu fazendo um código para exercitar tudo o que eu tinha aprendido. Depois de 1 hora de vários erros , eu dei uma olhada no exercício que o professor tinha dado (que companho fazendo igual as aulas) e percebi que meu código faltava um: numero_secreto = (um escopo qualquer) Vou passar o código sem isso, e com. Quem conseguir me explicar do por que o código quebrar sem o tal comando, eu agradeço. Pois eu li o código de novo e de novo e não consegui entender o que esse comando fez que resolveu. Obrigado pela atenção.

CÓDIGO FUNCIONAL :

def da_boas_vindas
    puts "Olá amiogown! Tudo certo? Fala pra mim, qual é o seu nome?"
    puts
    nome = gets
    puts "\n\n"
    puts "Olá #{nome} Que tal fazermos uma brincadeira?"
end 

def escolhendo_numero_secreto 
    puts
    puts "Vamos lá, estou pensando em um número, entre 10 e 20. Será que consegue acertar?"
    puts
    numero_secreto = 17
    puts "Pronto, escolhi meu número secreto"
    numero_secreto
end

def pede_um_numero (chute, tentativa, limite_tentativa)
    puts
    puts "Tentativa #{tentativa} de #{limite_tentativa}"
    puts "Faça seu melhor chute!"
    chute = gets
    puts "\n\n"
    chute.to_i
end

def verifica_se_acertou (chute, numero_secreto)
    acertou = numero_secreto == chute
    if acertou
        puts "TA PORRA, você acertou amiogo!"
        return true
    end    
    maior = numero_secreto > chute
    if maior 
        puts "QUAAASE! Meu número é maior que esse, hehehe" 
    else
        puts "Opaaa, calma ai. Meu número é menor que esse!"
    end
    false
end


da_boas_vindas
numero_secreto = escolhendo_numero_secreto

limite_tentativa = 3

for tentativa in 1..limite_tentativa
    chute = pede_um_numero chute, tentativa, limite_tentativa

    if verifica_se_acertou numero_secreto, chute
        break 
    end
end



limite_tentativa = 5

FIM DO CÓDIGO FUNCIONAL

CÓDIGO COM ERRO

def da_boas_vindas
    puts "Olá amiogown! Tudo certo? Fala pra mim, qual é o seu nome?"
    puts
    nome = gets
    puts "\n\n"
    puts "Olá #{nome} Que tal fazermos uma brincadeira?"
end 

def escolhendo_numero_secreto 
    puts
    puts "Vamos lá, estou pensando em um número, entre 10 e 20. Será que consegue acertar?"
    puts
    numero_secreto = 17
    puts "Pronto, escolhi meu número secreto"
    numero_secreto
end

def pede_um_numero (chute, tentativa, limite_tentativa)
    puts
    puts "Tentativa #{tentativa} de #{limite_tentativa}"
    puts "Faça seu melhor chute!"
    chute = gets
    puts "\n\n"
    chute.to_i
end

def verifica_se_acertou (chute, numero_secreto)
    acertou = numero_secreto == chute
    if acertou
        puts "TA PORRA, você acertou amiogo!"
        return true
    end    
    maior = numero_secreto > chute
    if maior 
        puts "QUAAASE! Meu número é maior que esse, hehehe" 
    else
        puts "Opaaa, calma ai. Meu número é menor que esse!"
    end
    false
end


da_boas_vindas
escolhendo_numero_secreto

limite_tentativa = 3

for tentativa in 1..limite_tentativa
    chute = pede_um_numero chute, tentativa, limite_tentativa

    if verifica_se_acertou numero_secreto, chute
        break 
    end
end



limite_tentativa = 5

FIM DO CÓDIGO COM ERRO

3 respostas

Germano, tudo bem? Seria melhor você dizer o erro que tá acontecendo pra gente poder focar em um problema específico.

Vou apontar um primeiro problema. Veja, você executa a função escolhendo_numero_secreto, que te devolve um valor, mas você não está salvando esse valor em variável alguma. Depois você usa a função verifica_se_acertou informando uma variável numero_secreto que não foi criada.

Tudo isso nesse trecho:

da_boas_vindas

# pra onde foi o número escolhido?
escolhendo_numero_secreto

limite_tentativa = 3

for tentativa in 1..limite_tentativa
    chute = pede_um_numero chute, tentativa, limite_tentativa


  # que número secreto é esse?
    if verifica_se_acertou numero_secreto, chute
        break 
    end
end

Amigo, esse código eu fiz baseado nas aulas que to fazendo. Não tem nada de diferente ali, apenas troquei strings.

Germano, apontei diferenças no código que você falou estar com erro. Por favor, leia novamente e compare linha a linha os dois trechos. Se não houvesse diferenças, não deveria ter erro, concorda?