Всё, что стоит после знака #, считается комментарием (конечно, если только он не находится внутри строки). После этого я заменил комментарии работающим кодом. Некоторым нравится оставлять комментарии; лично я думаю, что хорошо написанный код обычно говорит сам за себя. Раньше я применял больше комментариев, но чем более «бегло» я пишу на Ruby, тем меньше я их использую. На самом деле я нахожу их в большинстве случаев отвлекающими внимание. Но это каждый выбирает для себя сам; и у вас сложится свой собственный (обычно развивающийся) стиль. И вот, мой следующий шаг выглядел так:
puts 'Здравствуйте и добро пожаловать в 7-й класс на урок английского.'
puts 'Меня зовут миссис Габбард. А тебя зовут…?'
name = gets.chomp
if name == name.capitalize
puts 'Садись, пожалуйста, ' + name + '.' else
puts name + '? Ты имел в виду: ' + name.capitalize + ', не так ли?' puts 'Ты что, даже не знаешь, как пишется твоё имя??' reply = gets.chomp
if reply == 'да' else end end
Снова я написал if, else и end одновременно. Это на самом деле помогает мне отслеживать, «где я нахожусь» в тексте программы. К тому же от этого задача кажется немного легче, поскольку я могу сфокусироваться на небольшой части программы – на вставке кода между if и else. Ести и другое преимущество от того, что я поступаю именно так. Оно состоит в том, что компьютер может понять программу на любом этапе разработки. Каждая из незаконченных версий программы, которые я показывал вам, будет выполняться. Они не были закончены, но это были работающие программы. Таким образом, я мог проверять её по ходу её написания, что помогало увидеть, как обстоят дела, и где она всё ещё нуждалась в доработке. Когда она прошла все проверки, я и выяснил, что я её закончил!
Эти подсказки помогут вам писать программы с ветвлением, но они также помогут освоить другой основной тип управления выполнением:
Довольно часто вам может захотеться, чтобы ваш компьютер выполнял одно и то же снова и снова – в конце концов, предполагается, что именно этим компьютеры занимаются лучше всего.
Когда вы говорите вашему компьютеру повторять что-либо, вам также нужно сказать ему, когда остановиться. Компьютеру никогда не может наскучить, поэтому если вы не скажете ему остановиться, он и не остановится. Мы можем быть уверены, что подобное не случится, если скажем компьютеру повторять отдельные части программы пока (while) определённое условие является истинным. Это работает очень похоже на то, как работает if:
command = ' ' while command != 'пока' puts command command = gets.chomp end
puts 'Приходите ещё!'
Ау?
Ау?
Привет!
Привет!
Рад
познакомиться.
Рад
познакомиться.
О..,
как приятно!
пока
Приходите ещё !
Вот это и есть цикл. (Вы, наверное, заметили пустую строку в в начале вывода; она – от первого puts, перед первым gets. Как бы вы изменили программу, чтобы избавиться от этой пустой строки? Проверьте её! Она работает в точности, как программа выше, не считая первой пробельной строки?)
Циклы позволяют вам делать самые разные интересные вещи, какие только можно себе вообразить. Они, однако, могут также вызвать и неприятности, если вы сделаете ошибку. Что если ваш компьютер попадётся в ловушку бесконечного цикла? Если вы думаете, что именно так, возможно, и случилось, то просто, удерживая клавишу Ctrl, нажмите на клавишу с. [Это прервёт выполнение вашей программы. –
Но прежде, чем мы начнём забавляться с циклами, давайте изучим несколько вещей, которые облегчат нам жизнь.
Давайте снова взглянем на нашу первую программу с ветвлением. Что если моя жена пришла домой, увидела эту программу, попробовала выполнить её, и она не сказала ей, какое милое имя у неё? Я не хотел бы обидеть её чувства (и спать на кушетке), так что давайте перепишем её:
puts 'Привет, как Вас зовут?' name = gets.chomp puts 'Привет, ' + name + '.' if name == 'Chris'
puts 'Какое милое имя!' else
if name == 'Katy'
puts 'Какое милое имя!' end end
Привет, как Вас зовут?
Katy
Привет, Katy. Какое милое имя!