SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Условия    Разбор условий              Сложные условия   Полное условие




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

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


                            4 октября 2011 г.




          Информатика 10-11 классы
Условия     Разбор условий            Сложные условия   Полное условие



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




           Информатика 10-11 классы
Условия           Разбор условий            Сложные условия    Полное условие



Условия

          Алгоритмы и программы зачастую имеют нелинейную
          структуру.
          В зависимости от различных параметров системы
          программы могут работать по-разному.
          Например, при логине на сайте ВКонтакте есть две
          возможные ситуации:
           1   Вы вводите правильные логин и пароль и попадаете на
               свою страницу.
           2   Введённая пара “логин–пароль” неверна, и Вас
               переадресовывает обратно на страницу логина
          Вариантов поведения может быть больше, чем два.
          Такое поведение программ соответствует элементу
          блок–схемы “Условие” и структуре “Ветвление”.

                 Информатика 10-11 классы
Условия          Разбор условий                 Сложные условия            Полное условие



Блок–схема

     Вернёмся к задаче о решении линейного уравнения.


                          Ввести a, b, c


                       нет
      x = (c − b)/a           a == 0                  b == c           x      любое
                                           да                     да

                                                      нет

                                                   Решений нет



                Информатика 10-11 классы
Условия               Разбор условий            Сложные условия   Полное условие



Программа

      Listing 1: Решение линейного уравнения

          a = 5.0
          b = 3.0
          c = −2.5
          i f ( a == 0 )
             i f ( b == c )
                p u t s " x − any number "
             else
                p u t s " t h e r e i s no s o l u t i o n "
             end
          else
             x = ( c−b ) / a
             p u t s " x = #{x }"
          end
                    Информатика 10-11 классы
Условия             Разбор условий             Сложные условия   Полное условие



Пояснения к программе

          if ... else ... end        оператор условия.
          if (a == 0) означает если значение переменной a равно
          нулю.
          В случае, если a действительно равно нулю, то
          выполняется код, расположенный сразу после слова if.
          Если же условие ложно (то есть, в нашем случае a = 0), то
          выполняется код, расположенный после else (else
          переводится как иначе). При ложном условии код,
          расположенный после if, просто–напросто игнорируется.
          Условия могут быть вложенными друг в друга. В нашем
          примере после одного условия сразу же следует другое.
          Количество “уровней вложенности” не ограничено.
          В конце условия ставится оператор end.

                  Информатика 10-11 классы
Условия             Разбор условий            Сложные условия   Полное условие



Неполные условия


           Условия могут быть неполными (неполное означает
           отсутствие ключевого слова else):

      Listing 2: Неполное условие

          i f ( a == 0 )
             p u t s " a e q u a l t o 0"
             i f ( b == 0 )
                p u t s "b i s e q u a l t o 0 t o o "
             end
          end



                   Информатика 10-11 классы
Условия           Разбор условий            Сложные условия   Полное условие



Модификаторы




          Если мы имеем неполное условие и при этом нам нужно
          выполнить всего одно действие, можно использовать
          сокращённую запись условия (модификатор):

      Listing 3: Модификатор

           p u t s " a i s e q u a l t o 0" i f ( a == 0 )




                 Информатика 10-11 классы
Условия            Разбор условий            Сложные условия         Полное условие



Отрицательный модификатор

          А если мы хотим сделать какое-либо действие в случае,
          когда a = 0?

      Listing 4: Простой вариант

           p u t s " a i s e q u a l t o 0" i f ( a != 0 )

          Однако для лучшего понимания кода проще, когда все
          условия простые. Для этого в ruby есть ключевое слово
          unless, которое можно перевести как если не. С ним
          программа становится проще.

      Listing 5: Улучшенный вариант

           p u t s " a i s e q u a l t o 0" u n l e s s ( a == 0 )

                  Информатика 10-11 классы
Условия    Разбор условий            Сложные условия   Полное условие



Пример




          Информатика 10-11 классы
Условия             Разбор условий             Сложные условия              Полное условие



Логические операции


          А если мы хотим одновременно проверить несколько
          условий? Например, если и a, и b равны нулю. Или же
          рассмотреть случай, когда хотя бы одна из переменных
          равна нулю.
          Для этого нужно использовать логические операции:
          конъюнкцию && и дизъюнкцию ||.

      Listing 6: Конъюнкция и дизъюнкция
          i f ( ( a == 0 ) && ( b == 0 ) )
             p u t s " a and b i s e q u a l t o 0"
          end
          p u t s " a o r b i s e q u a l t o 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 )
              p u t s "2 r e a l r o o t s "
          e l s i f (D == 0 )
              p u t s "One r e a l r o o t "
          else
              p u t s "No r e a l r o o t s "
          end


                     Информатика 10-11 классы
Условия             Разбор условий            Сложные условия             Полное условие



Полное условие

      Listing 8: Схема полного условия
          if  (...)
             ...
          elsif (...)
             ...
          ...
          elsif (...)
             ...
          else
             ...
          end

          В полном условии добавляется ключевое слово elsif, которое переводится
          как иначе если.
          Сначала ruby рассмотрит условие после if. Если оно будет ложным, он
          перейдёт к первому elsif. И так далее. Если же все условия окажутся
          ложными, ruby перейдёт к блоку else.
          Кстати, блок else не является обязательным!

                  Информатика 10-11 классы
Условия                 Разбор условий            Сложные условия        Полное условие



Квадратное уравнение

               Итак, вернёмся к квадратному уравнению. Напишем
               программу, высчитывающую все корни (если таковые
               имеются) квадратного уравнения ax 2 + bx + c = 0.
               Немного упростим себе задачу, предположив, что a = 0.1
                 1   Вычислим дискриминант уравнения по формуле:
                     D = b 2 − 4ac.
                 2   Если дискриминант меньше нуля, то решений нет.
                 3   Если дискриминант равен нулю, то корень один. Он
                              b
                     равен: − .
                              2a
                 4   Если дискриминант больше нуля, то существует два
                     вещественных корня:
                                                 √
                                            − b ± b 2 − 4ac
                                     x1,2 =
                                                  2a
          1
              Не забудьте сделать самостоятельно алгоритм без такого допущения.
                       Информатика 10-11 классы

Weitere ähnliche Inhalte

Was ist angesagt?

элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
Елена Ключева
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
Lidia Pivovarova
 
19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3
Ann Eres
 
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
Julia Gorbatova
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
AliyaAringazinova
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
igorm9so
 

Was ist angesagt? (18)

Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООП
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
 
алгоритм
алгоритмалгоритм
алгоритм
 
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
 
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмов
 
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
 
Probabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignProbabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems Design
 
Python
PythonPython
Python
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
 
десант презентация
десант презентациядесант презентация
десант презентация
 
19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3
 
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
 
Scala Magic, Alexander Podhaliusin
Scala Magic, Alexander PodhaliusinScala Magic, Alexander Podhaliusin
Scala Magic, Alexander Podhaliusin
 

Andere mochten auch

Основы математической логики
Основы математической логикиОсновы математической логики
Основы математической логики
Evgeny Smirnov
 
Основы формальной и математической логи
Основы формальной и математической логиОсновы формальной и математической логи
Основы формальной и математической логи
Evgeny Smirnov
 
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
Evgeny Smirnov
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
Evgeny Smirnov
 
Логические задачи
Логические задачиЛогические задачи
Логические задачи
Evgeny Smirnov
 
Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ru
Alexander Shcherbinin
 
Сервисы Google в образовании
Сервисы Google в образованииСервисы Google в образовании
Сервисы Google в образовании
whatsab
 

Andere mochten auch (13)

Основы математической логики
Основы математической логикиОсновы математической логики
Основы математической логики
 
25 интернет сервисов
25 интернет сервисов25 интернет сервисов
25 интернет сервисов
 
Основы формальной и математической логи
Основы формальной и математической логиОсновы формальной и математической логи
Основы формальной и математической логи
 
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
 
Логические задачи
Логические задачиЛогические задачи
Логические задачи
 
Блок-схемы
Блок-схемыБлок-схемы
Блок-схемы
 
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
 
Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ru
 
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
 
Сервисы Google в образовании
Сервисы Google в образованииСервисы Google в образовании
Сервисы Google в образовании
 
Использование сервисов Google в образовании
Использование сервисов Google в образованииИспользование сервисов Google в образовании
Использование сервисов Google в образовании
 
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
 

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

Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравнения
Alexandr Grigorenko
 
ветвление
ветвлениеветвление
ветвление
shcool26
 
практика 8
практика 8практика 8
практика 8
student_kai
 
основы Java для_any_logic
основы Java для_any_logicосновы Java для_any_logic
основы Java для_any_logic
KVPw
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
Technopark
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Nikolay Grebenshikov
 

Ähnlich wie Управляющие структуры в Ruby: условия (20)

8 3-4
8 3-48 3-4
8 3-4
 
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравнения
 
ветвление
ветвлениеветвление
ветвление
 
8 простые и составные условия
8 простые и составные условия8 простые и составные условия
8 простые и составные условия
 
Урок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графовУрок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графов
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
 
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
 
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выражения
 
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
 
практика 8
практика 8практика 8
практика 8
 
основы Java для_any_logic
основы Java для_any_logicосновы Java для_any_logic
основы Java для_any_logic
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
 
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
Стажировка 2016-07-08 01 Евгений Тюменцев. S.O.L.I.D.
 
Diskretn analiz
Diskretn analizDiskretn analiz
Diskretn analiz
 
Diskretn analiz
Diskretn analizDiskretn analiz
Diskretn analiz
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 

Mehr von Evgeny Smirnov

Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
Evgeny Smirnov
 
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
Evgeny Smirnov
 
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
Evgeny Smirnov
 
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
Evgeny Smirnov
 
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
Evgeny Smirnov
 
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
Evgeny Smirnov
 
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
 
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
Evgeny Smirnov
 
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
Evgeny Smirnov
 
Импликация и логические уравнения
Импликация и логические уравненияИмпликация и логические уравнения
Импликация и логические уравнения
Evgeny Smirnov
 
Использование интернет-сервисов в образовании
Использование интернет-сервисов в образованииИспользование интернет-сервисов в образовании
Использование интернет-сервисов в образовании
Evgeny Smirnov
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
Evgeny Smirnov
 

Mehr von Evgeny Smirnov (20)

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
 
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
 
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
 
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
 
Newtonew Media
Newtonew MediaNewtonew Media
Newtonew Media
 
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
 
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
 
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
 
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
 
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
 
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
 
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
 
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
 
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
 
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
 
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
 
LMS42 в школьном образовании
LMS42 в школьном образованииLMS42 в школьном образовании
LMS42 в школьном образовании
 
Импликация и логические уравнения
Импликация и логические уравненияИмпликация и логические уравнения
Импликация и логические уравнения
 
Использование интернет-сервисов в образовании
Использование интернет-сервисов в образованииИспользование интернет-сервисов в образовании
Использование интернет-сервисов в образовании
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
 

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

  • 1. Условия Разбор условий Сложные условия Полное условие Управляющие структуры в ruby Информатика 10-11 классы 4 октября 2011 г. Информатика 10-11 классы
  • 2. Условия Разбор условий Сложные условия Полное условие Вместо введения Информатика 10-11 классы
  • 3. Условия Разбор условий Сложные условия Полное условие Условия Алгоритмы и программы зачастую имеют нелинейную структуру. В зависимости от различных параметров системы программы могут работать по-разному. Например, при логине на сайте ВКонтакте есть две возможные ситуации: 1 Вы вводите правильные логин и пароль и попадаете на свою страницу. 2 Введённая пара “логин–пароль” неверна, и Вас переадресовывает обратно на страницу логина Вариантов поведения может быть больше, чем два. Такое поведение программ соответствует элементу блок–схемы “Условие” и структуре “Ветвление”. Информатика 10-11 классы
  • 4. Условия Разбор условий Сложные условия Полное условие Блок–схема Вернёмся к задаче о решении линейного уравнения. Ввести a, b, c нет x = (c − b)/a a == 0 b == c x любое да да нет Решений нет Информатика 10-11 классы
  • 5. Условия Разбор условий Сложные условия Полное условие Программа Listing 1: Решение линейного уравнения a = 5.0 b = 3.0 c = −2.5 i f ( a == 0 ) i f ( b == c ) p u t s " x − any number " else p u t s " t h e r e i s no s o l u t i o n " end else x = ( c−b ) / a p u t s " x = #{x }" end Информатика 10-11 классы
  • 6. Условия Разбор условий Сложные условия Полное условие Пояснения к программе if ... else ... end оператор условия. if (a == 0) означает если значение переменной a равно нулю. В случае, если a действительно равно нулю, то выполняется код, расположенный сразу после слова if. Если же условие ложно (то есть, в нашем случае a = 0), то выполняется код, расположенный после else (else переводится как иначе). При ложном условии код, расположенный после if, просто–напросто игнорируется. Условия могут быть вложенными друг в друга. В нашем примере после одного условия сразу же следует другое. Количество “уровней вложенности” не ограничено. В конце условия ставится оператор end. Информатика 10-11 классы
  • 7. Условия Разбор условий Сложные условия Полное условие Неполные условия Условия могут быть неполными (неполное означает отсутствие ключевого слова else): Listing 2: Неполное условие i f ( a == 0 ) p u t s " a e q u a l t o 0" i f ( b == 0 ) p u t s "b i s e q u a l t o 0 t o o " end end Информатика 10-11 классы
  • 8. Условия Разбор условий Сложные условия Полное условие Модификаторы Если мы имеем неполное условие и при этом нам нужно выполнить всего одно действие, можно использовать сокращённую запись условия (модификатор): Listing 3: Модификатор p u t s " a i s e q u a l t o 0" i f ( a == 0 ) Информатика 10-11 классы
  • 9. Условия Разбор условий Сложные условия Полное условие Отрицательный модификатор А если мы хотим сделать какое-либо действие в случае, когда a = 0? Listing 4: Простой вариант p u t s " a i s e q u a l t o 0" i f ( a != 0 ) Однако для лучшего понимания кода проще, когда все условия простые. Для этого в ruby есть ключевое слово unless, которое можно перевести как если не. С ним программа становится проще. Listing 5: Улучшенный вариант p u t s " a i s e q u a l t o 0" u n l e s s ( a == 0 ) Информатика 10-11 классы
  • 10. Условия Разбор условий Сложные условия Полное условие Пример Информатика 10-11 классы
  • 11. Условия Разбор условий Сложные условия Полное условие Логические операции А если мы хотим одновременно проверить несколько условий? Например, если и a, и b равны нулю. Или же рассмотреть случай, когда хотя бы одна из переменных равна нулю. Для этого нужно использовать логические операции: конъюнкцию && и дизъюнкцию ||. Listing 6: Конъюнкция и дизъюнкция i f ( ( a == 0 ) && ( b == 0 ) ) p u t s " a and b i s e q u a l t o 0" end p u t s " a o r b i s e q u a l t o 0" i f ( ( a == 0 ) | | ( b == 0 ) ) Информатика 10-11 классы
  • 12. Условия Разбор условий Сложные условия Полное условие Сравнения Что кроме проверки на равенство можно делать в условиях? Оператор Описание Типы переменных == равно любые != не равно любые > больше integer, float >= больше либо равно integer, float < меньше integer, float <= меньше либо равно integer, float Таблица: Операторы сравнения Информатика 10-11 классы
  • 13. Условия Разбор условий Сложные условия Полное условие Полное условие Рассмотрим реальную задачу решения квадратного уравнения. Пусть D дискриминант уравнения. В ней три варианта: 1 D>0 два вещественных корня, 2 D=0 один вещественный корень 2 кратности, 3 D<0 вещественных корней нет. Listing 7: Пример полного условия i f (D > 0 ) p u t s "2 r e a l r o o t s " e l s i f (D == 0 ) p u t s "One r e a l r o o t " else p u t s "No r e a l r o o t s " end Информатика 10-11 классы
  • 14. Условия Разбор условий Сложные условия Полное условие Полное условие Listing 8: Схема полного условия if (...) ... elsif (...) ... ... elsif (...) ... else ... end В полном условии добавляется ключевое слово elsif, которое переводится как иначе если. Сначала ruby рассмотрит условие после if. Если оно будет ложным, он перейдёт к первому elsif. И так далее. Если же все условия окажутся ложными, ruby перейдёт к блоку else. Кстати, блок else не является обязательным! Информатика 10-11 классы
  • 15. Условия Разбор условий Сложные условия Полное условие Квадратное уравнение Итак, вернёмся к квадратному уравнению. Напишем программу, высчитывающую все корни (если таковые имеются) квадратного уравнения ax 2 + bx + c = 0. Немного упростим себе задачу, предположив, что a = 0.1 1 Вычислим дискриминант уравнения по формуле: D = b 2 − 4ac. 2 Если дискриминант меньше нуля, то решений нет. 3 Если дискриминант равен нулю, то корень один. Он b равен: − . 2a 4 Если дискриминант больше нуля, то существует два вещественных корня: √ − b ± b 2 − 4ac x1,2 = 2a 1 Не забудьте сделать самостоятельно алгоритм без такого допущения. Информатика 10-11 классы