ݺߣ

ݺߣShare a Scribd company logo
Условия    Разбор условий              Сложные условия   Полное условие




          Управляющие структуры в 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 классы

More Related Content

What's hot (18)

Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
Evgeny Smirnov
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООП
Evgeny Smirnov
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
Andrey Dolinin
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
Елена Ключева
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмов
Andrey Dolinin
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
simple_people
Probabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignProbabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems Design
Iosif Itkin
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
Andrey Dolinin
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
Lidia Pivovarova
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
Unguryan Vitaliy
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
Scala Magic, Alexander Podhaliusin
Scala Magic, Alexander PodhaliusinScala Magic, Alexander Podhaliusin
Scala Magic, Alexander Podhaliusin
Vasil Remeniuk
Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
Evgeny Smirnov
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
Andrey Dolinin
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
Елена Ключева
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмов
Andrey Dolinin
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
simple_people
Probabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignProbabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems Design
Iosif Itkin
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
Andrey Dolinin
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
Lidia Pivovarova
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
Unguryan Vitaliy
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
Scala Magic, Alexander Podhaliusin
Scala Magic, Alexander PodhaliusinScala Magic, Alexander Podhaliusin
Scala Magic, Alexander Podhaliusin
Vasil Remeniuk

Viewers also liked (13)

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

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

8 3-4
8 3-48 3-4
8 3-4
natanikonenko19
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравнения
Alexandr Grigorenko
ветвление
ветвлениеветвление
ветвление
shcool26
Урок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графовУрок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графов
Система дистанционного обучения MyDLS
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Positive Hack Days
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
Evgeny Smirnov
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выражения
Tatyanazaxarova
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
dfdkfjs
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Platonov Sergey
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
DEVTYPE
P1-Chp8-BinomialExpansion_russian_translate.pptx
P1-Chp8-BinomialExpansion_russian_translate.pptxP1-Chp8-BinomialExpansion_russian_translate.pptx
P1-Chp8-BinomialExpansion_russian_translate.pptx
bahytazimbekova
основы Java для_any_logic
основы Java для_any_logicосновы Java для_any_logic
основы Java для_any_logic
KVPw
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
Fwdays
Стажировка 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.
SmartTools
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
LIPugach
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
Technopark
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравнения
Alexandr Grigorenko
ветвление
ветвлениеветвление
ветвление
shcool26
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Positive Hack Days
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
Evgeny Smirnov
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выражения
Tatyanazaxarova
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
dfdkfjs
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Platonov Sergey
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
DEVTYPE
P1-Chp8-BinomialExpansion_russian_translate.pptx
P1-Chp8-BinomialExpansion_russian_translate.pptxP1-Chp8-BinomialExpansion_russian_translate.pptx
P1-Chp8-BinomialExpansion_russian_translate.pptx
bahytazimbekova
основы Java для_any_logic
основы Java для_any_logicосновы Java для_any_logic
основы Java для_any_logic
KVPw
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
Fwdays
Стажировка 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.
SmartTools
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
LIPugach
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
Technopark

More from Evgeny Smirnov (20)

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
Evgeny Smirnov
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
Evgeny Smirnov
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
Evgeny Smirnov
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
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
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Evgeny Smirnov
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
Evgeny Smirnov
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
Evgeny Smirnov
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
Evgeny Smirnov
LMS42 в школьном образовании
LMS42 в школьном образованииLMS42 в школьном образовании
LMS42 в школьном образовании
Evgeny Smirnov
Импликация и логические уравнения
Импликация и логические уравненияИмпликация и логические уравнения
Импликация и логические уравнения
Evgeny Smirnov
Использование интернет-сервисов в образовании
Использование интернет-сервисов в образованииИспользование интернет-сервисов в образовании
Использование интернет-сервисов в образовании
Evgeny Smirnov
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
Evgeny Smirnov
Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
Evgeny Smirnov
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
Evgeny Smirnov
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
Evgeny Smirnov
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
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
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Evgeny Smirnov
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
Evgeny Smirnov
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
Evgeny Smirnov
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
Evgeny Smirnov
LMS42 в школьном образовании
LMS42 в школьном образованииLMS42 в школьном образовании
LMS42 в школьном образовании
Evgeny Smirnov
Импликация и логические уравнения
Импликация и логические уравненияИмпликация и логические уравнения
Импликация и логические уравнения
Evgeny Smirnov
Использование интернет-сервисов в образовании
Использование интернет-сервисов в образованииИспользование интернет-сервисов в образовании
Использование интернет-сервисов в образовании
Evgeny Smirnov
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
Evgeny Smirnov

Управляющие структуры в 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 классы