15
Условия Разбор условий Сложные условия Полное условие Управляющие структуры в ruby Информатика 10-11 классы 4 октября 2011 г. Информатика 10-11 классы

Управляющие структуры в Ruby: условия

Embed Size (px)

Citation preview

Условия Разбор условий Сложные условия Полное условие

Управляющие структуры в ruby

Информатика10-11 классы

4 октября 2011 г.

Информатика 10-11 классы

Условия Разбор условий Сложные условия Полное условие

Вместо введения

Информатика 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 классы

Условия Разбор условий Сложные условия Полное условие

Пример

Информатика 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 классы