Anteriormente, eu externei que estava tendo uma dificuldade em desenvolver um código e o Felipe me auxiliou, segue abaixo o código desenvolvido seguindo a sugestão:
#nome do arquivo: dado_privado3c4.rb
def pegar_nome
puts "Qual o seu nome?"
informar_nome = gets.chomp
end
def pegar_idade
puts "Quantos anos você tem?"
informar_idade = gets.chomp.to_i
end
def imprimir_dados(nome,idade)
puts "\n" + "seus dados foram armazenados".upcase
puts nome.upcase + " você tem " + idade.to_s + " anos de idade." + " teste concluído.".upcase
end
def o_jogo(nome,idade)
menor = idade<18
if menor
puts "\n" + nome.upcase + " que pena você não tem idade para participar do jogo..."
return true
else
puts "\n" + nome.upcase + " gostaria de participar do jogo de matemática? (sim/nao)"
confirma = gets.chomp
if confirma == "nao"
puts "\n" + "Ok " + nome.upcase + " , até a próxima oportunidade..."
return false
else
puts "\n" + nome.upcase + " vamos testar seu conhecimento de matemática, começaremos com algo simples"
if idade >= 18
limite = 3
for tentativa in 1..limite
acertou = teste_de_matematica
break if verificar_se_acertou(nome,acertou,tentativa,limite)
end
end
end
end
end
def teste_de_matematica
puts "Qual o resultado da equação x = 9 +8"
soma = gets.chomp.to_i
end
def verificar_se_acertou(nome,acertou,tentativa,limite)
if acertou==17
puts "Você acertou!!!"
return true
else
if tentativa == limite
puts "\n" + nome.upcase + " você precisa estudar mais e tentar novamente."
return false
end
resta = limite-tentativa
puts "Você ainda tem " + resta.to_s + " tentativas"
end
end
nome = pegar_nome
idade = pegar_idade
imprimir_dados(nome,idade)
o_jogo(nome,idade)
Entretanto, não consegui prosseguir porque para mim não havia lógica para que o código que eu tentei desenvolver não se comportasse como o presentado acima. Depois de muito tempo analisando o código que havia desenvolvido, descobri a falha e também passou a comportar-se de forma correta. Segue abaixo a minha versão:
# nome do arquivo: dado_privado3c3.rb
def pegar_nome
puts "Qual o seu nome?"
informar_nome = gets.chomp
end
def pegar_idade
puts "Quantos anos você tem?"
informar_idade = gets.chomp.to_i
end
def imprimir_dados(nome,idade)
puts "\n" + "seus dados foram armazenados".upcase
puts nome.upcase + " você tem " + idade.to_s + " anos de idade." + " teste concluído.".upcase
end
def verificar_idade(nome,idade)
maior = idade.to_i >= 18
if maior
puts "\n" + nome.upcase + " gostaria de participar do jogo de matemática? (sim/nao)"
confirma = gets.chomp
if confirma == "nao"
puts "\n" + "Ok " + nome.upcase + " , até a próxima oportunidade..."
return true
else
puts "\n" + nome.upcase + " vamos testar seu conhecimento de matemática, começaremos com algo simples"
confirma
end
else
puts "\n" + nome.upcase + " que pena você não tem idade para participar do jogo..."
return true
end
end
def teste_de_matematica
puts "Qual o resultado da equação x = 9 +8"
soma = gets.chomp.to_i
end
def verificar_se_acertou(nome,acertou,tentativa,limite)
if acertou==17
puts "Você acertou!!!"
return true
else
if tentativa == limite
puts "\n" + nome.upcase + " você precisa estudar mais e tentar novamente."
return false
end
resta = limite-tentativa
puts "Você ainda tem " + resta.to_s + " tentativas"
end
end
nome = pegar_nome
idade = pegar_idade
imprimir_dados(nome,idade)
aceita = verificar_idade(nome,idade)
if aceita == "sim"
if idade >= 18
limite = 3
for tentativa in 1..limite.to_i
acertou = teste_de_matematica
if verificar_se_acertou(nome,acertou,tentativa,limite)
break
end
end
end
end
A minha questão é: Qual das duas versões é a mais correta, ou que segue as Boas Práticas?