Как мы уже видели, циклы и итераторы позволяют нам делать одно и то же (выполнять тот же самый код) снова и снова. Однако, иногда мы хотим сделать одно и то же несколько раз, но в разных частях программы. Например, мы бы разрабатывали, скажем, программу опроса для студента-психолога. Судя по разговорам со знакомыми студентами-психологами и по опросам, которые они мне предлагали, она, наверное, должна быть примерно такой:
puts 'Здравствуйте! И спасибо, что Вы нашли время, чтобы'
puts 'помочь мне в этом исследовании. Мое исследование'
puts 'связано с изучением того, как люди относятся к'
puts 'мексиканской еде. Просто думайте о мексиканской еде'
puts 'и попробуйте отвечать на все вопросы честно,'
puts 'только словами «да» или «нет». Моё исследование'
puts 'не имеет ничего общего с ночным недержанием мочи.' puts
# Мы задаём эти вопросы, но игнорируем ответы на них. goodAnswer = false while (not goodAnswer)
puts 'Вам нравится есть такос?' answer = gets.chomp.downcase if (answer == 'да' or answer == 'нет') goodAnswer = true else
puts 'Пожалуйста, отвечайте «да» или «нет».' end end
goodAnswer = false while (not goodAnswer)
puts 'Вам нравится есть бурритос?' answer = gets.chomp.downcase if (answer == 'да' or answer == 'нет')
goodAnswer = true
else
puts 'Пожалуйста, отвечайте «да» или
«нет».'
end
end
# Мы, однако, обращаем внимание на *этот
* вопрос.
goodAnswer = false
while (not goodAnswer)
puts 'Вы мочитесь в постель?'
answer = gets.chomp.downcase
if (answer == 'да' or answer == 'нет')
goodAnswer = true
if answer == 'да'
wetsBed = true
else
wetsBed = false
end
else
puts 'Пожалуйста, отвечайте «да» или
«нет».'
end
end
goodAnswer = false
while (not goodAnswer)
puts 'Вам нравится есть чимичангас?'
answer = gets.chomp.downcase
if (answer == 'да' or answer == 'нет')
goodAnswer = true
else
puts 'Пожалуйста, отвечайте «да» или
«нет».'
end
end
puts 'И ещё несколько вопросов…'
goodAnswer = false while (not goodAnswer)
puts 'Вам нравится есть сопапиллас?' answer = gets.chomp.downcase if (answer == 'да' or answer == 'нет') goodAnswer = true else
puts 'Пожалуйста, отвечайте «да» или «нет».' end end
# Задайте много других вопросов о мексиканской еде. puts
puts 'ПОЯСНЕНИЕ:'
puts 'Спасибо за то, что Вы нашли время, чтобы помочь'
puts 'этому исследованию. На самом деле, это исследование'
puts 'не имеет ничего общего с мексиканской едой. Это'
puts 'исследование ночного недержания мочи. Мексиканская еда'
puts 'присутствовала только затем, чтобы усыпить Вашу бдительность'
puts 'в надежде, что Вы будете отвечать более'
puts 'правдиво. Ещё раз спасибо.'
puts
puts wetsBed
Здравствуйте! И спасибо, что Вы нашли время, чтобы помочь мне в этом исследовании. Моё исследование связано с изучением того, как люди относятся к мексиканской еде. Просто думайте о мексиканской еде и попробуйте отвечать на все вопросы честно, только словами «да» или «нет». Моё исследование не имеет ничего общего с ночным недержанием мочи.
Вам нравится есть такос? да