Ветвление — это простое, но очень мощное понятие. При помощи ветвлений в программировании реализуются все нелинейные алгоритмы. Фактически, оно настолько простое, что, ей-Богу, мне совсем даже и не нужно объяснять его; я просто покажу его вам.
puts 'Привет, как Вас зовут?'
name = gets.chomp
puts 'Привет, ' + name + '.'
if name == 'Chris'
puts 'Какое милое имя!'
end
Привет, как Вас зовут?
Chris
Привет, Chris.
Какое милое имя!
Но если мы введём другое имя...
Привет, как Вас зовут?
Chewbacca
Привет, Chewbacca.
Вот это и есть ветвление. Если то, что находится после if, имеет значение true, мы выполняем код между if и end. Если то, что находится после if, имеет значение false, то не выполняем. Ясно и просто.
Я выделил отступом код между if и end просто потому, что, полагаю, таким образом легче отслеживать ветвление. Почти все программисты делают так, независимо от того, на каком языке они программируют. В этом простом примере может показаться, что от этого не слишком много пользы, но когда программа становится более сложной, это существенно меняет дело.
Часто нам бы хотелось, чтобы программа выполняла что-то, если выражение равно true, и нечто другое, если оно равно false. Для этого имеется else:
puts 'Я - предсказатель судьбы. Скажите мне своё имя:'
name = gets.chomp
if name == 'Chris'
puts 'Я предвижу у Вас в будущем великие дела.'
else
puts 'Ваше будущее... О Боже! Посмотрите-ка на часы!'
puts 'На самом деле мне пора уходить, извините!'
end
Я предсказатель будущего. Скажите мне своё имя:
Chris
Я предвижу у Вас в будущем великие дела.
А теперь давайте попробуем другое имя...
Я предсказатель будущего. Скажите мне своё имя:
Ringo
Ваше будущее... О Боже! Посмотрите-ка на часы!
На самом деле мне пора уходить, извините!
Ветвление — это как будто мы подошли к развилке в коде: мы выберем дорожку к людям, чьё имя — Крис (name == 'Chris'), или же (else) мы выберем другой путь.
И совсем как ветви на дереве, у вас могут быть ветвления, которые сами содержат ветвления:
puts 'Здравствуйте и добро пожаловать в 7-й класс на урок английского.'
puts 'Меня зовут миссис Габбард. А тебя зовут...?'
name = gets.chomp
if name == name.capitalize
puts 'Садись, пожалуйста, ' + name + '.'
else
puts name + '? Ты имел в виду: ' + name.capitalize + ', не так ли?'
puts 'Ты что, даже не знаешь, как пишется твоё имя??'
reply = gets.chomp
if reply == 'да'
puts 'Хммм! Ну хорошо, садись!'
else
puts 'УБИРАЙСЯ ВОН!!'
end
end
Здравствуйте и добро пожаловать в 7-й класс на урок английского.
Меня зовут миссис Габбард. А тебя зовут...?
chris
chris? Ты имел в виду: Chris, не так ли?
Ты что, даже не знаешь, как пишется твоё имя??
да
Хммм! Ну хорошо, садись!
Прекрасно, напишу его с заглавной буквы...
Здравствуйте и добро пожаловать в 7-й класс на урок английского.
Меня зовут миссис Габбард. А тебя зовут...?
Chris
Садись, пожалуйста, Chris.
Иногда можно запутаться, пытаясь "вычислить", куда же ведут все эти if-ы, else-ы и end-ы. Я делаю так: пишу end сразу же, когда напишу if. Так, когда я писал приведённую выше программу, сначала она выглядела вот так:
puts 'Здравствуйте и добро пожаловать в 7-й класс на урок английского.'
puts 'Меня зовут миссис Габбард. А тебя зовут...?'
name = gets.chomp
if name == name.capitalize
else
end