Upload
evgeny-smirnov
View
3.491
Download
1
Embed Size (px)
Citation preview
Условия Разбор условий Сложные условия Полное условие
Управляющие структуры в ruby
Информатика10-11 классы
4 октября 2011 г.
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Условия
Алгоритмы и программы зачастую имеют нелинейнуюструктуру.В зависимости от различных параметров системыпрограммы могут работать по-разному.Например, при логине на сайте ВКонтакте есть двевозможные ситуации:
1 Вы вводите правильные логин и пароль и попадаете насвою страницу.
2 Введённая пара “логин–пароль” неверна, и Васпереадресовывает обратно на страницу логина
Вариантов поведения может быть больше, чем два.Такое поведение программ соответствует элементублок–схемы “Условие” и структуре “Ветвление”.
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Блок–схема
Вернёмся к задаче о решении линейного уравнения.
Ввести a, b, c
a == 0 b == c
Решений нет
x — любоеx = (c − b)/a данет
нет
да
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Программа
Listing 1: Решение линейного уравнения
a = 5 .0b = 3 .0c = −2.5i f ( a == 0)
i f ( b == c )put s "x − any number"
e l s eput s " t h e r e i s no s o l u t i o n "
ende l s e
x = ( c−b )/ aput s "x = #{x}"
end
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Пояснения к программе
if ... else ... end — оператор условия.if (a == 0) означает если значение переменной a равнонулю.В случае, если a действительно равно нулю, товыполняется код, расположенный сразу после слова if.Если же условие ложно (то есть, в нашем случае a 6= 0), товыполняется код, расположенный после else (elseпереводится как иначе). При ложном условии код,расположенный после if, просто–напросто игнорируется.Условия могут быть вложенными друг в друга. В нашемпримере после одного условия сразу же следует другое.Количество “уровней вложенности” не ограничено.В конце условия ставится оператор end .
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Неполные условия
Условия могут быть неполными (неполное означаетотсутствие ключевого слова else):
Listing 2: Неполное условие
i f ( a == 0)put s "a equa l to 0"i f ( b == 0)
put s "b i s equa l to 0 too "end
end
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Модификаторы
Если мы имеем неполное условие и при этом нам нужновыполнить всего одно действие, можно использоватьсокращённую запись условия (модификатор):
Listing 3: Модификатор
put s "a i s equa l to 0" i f ( a == 0)
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Отрицательный модификатор
А если мы хотим сделать какое-либо действие в случае,когда a 6= 0?
Listing 4: Простой вариант
put s "a i s equa l to 0" i f ( a != 0)
Однако для лучшего понимания кода проще, когда всеусловия — простые. Для этого в ruby есть ключевое словоunless, которое можно перевести как если не. С нимпрограмма становится проще.
Listing 5: Улучшенный вариант
put s "a i s equa l to 0" u n l e s s ( a == 0)
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Логические операции
А если мы хотим одновременно проверить несколькоусловий? Например, если и a, и b равны нулю. Или жерассмотреть случай, когда хотя бы одна из переменныхравна нулю.Для этого нужно использовать логические операции:конъюнкцию && и дизъюнкцию ||.
Listing 6: Конъюнкция и дизъюнкция
i f ( ( a == 0) && (b == 0) )put s "a and b i s equa l to 0"
endput s "a or b i s equa l to 0" i f ( ( a == 0) | | ( b == 0) )
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Сравнения
Что кроме проверки на равенство можно делать вусловиях?
Оператор Описание Типы переменных== равно любые!= не равно любые> больше integer, float>= больше либо равно integer, float< меньше integer, float<= меньше либо равно integer, float
Таблица: Операторы сравнения
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Полное условие
Рассмотрим реальную задачу решения квадратногоуравнения.Пусть D — дискриминант уравнения. В ней три варианта:
1 D > 0 — два вещественных корня,2 D = 0 — один вещественный корень 2 кратности,3 D < 0 — вещественных корней нет.
Listing 7: Пример полного условия
i f (D > 0)put s "2 r e a l r o o t s "
e l s i f (D == 0)put s "One r e a l r o o t "
e l s eput s "No r e a l r o o t s "
end
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Полное условие
Listing 8: Схема полного условия
i f ( . . . ). . .
e l s i f ( . . . ). . .
. . .e l s i f ( . . . )
. . .e l s e
. . .end
В полном условии добавляется ключевое слово elsif, которое переводитсякак иначе если.
Сначала ruby рассмотрит условие после if. Если оно будет ложным, онперейдёт к первому elsif. И так далее. Если же все условия окажутсяложными, ruby перейдёт к блоку else.Кстати, блок else не является обязательным!
Информатика 10-11 классы
Условия Разбор условий Сложные условия Полное условие
Квадратное уравнение
Итак, вернёмся к квадратному уравнению. Напишемпрограмму, высчитывающую все корни (если таковыеимеются) квадратного уравнения ax2 + bx + c = 0.Немного упростим себе задачу, предположив, что a 6= 0.1
1 Вычислим дискриминант уравнения по формуле:D = b2 − 4ac .
2 Если дискриминант меньше нуля, то решений нет.3 Если дискриминант равен нулю, то корень — один. Он
равен: −b
2a.
4 Если дискриминант больше нуля, то существует двавещественных корня:
x1,2 =− b ±
√b2 − 4ac
2a
1Не забудьте сделать самостоятельно алгоритм без такого допущения.Информатика 10-11 классы