SlideShare 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

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 DesignIosif 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_3Ann Eres
 
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатовJulia Gorbatova
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013AliyaAringazinova
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1igorm9so
 
Scala Magic, Alexander Podhaliusin
Scala Magic, Alexander PodhaliusinScala Magic, Alexander Podhaliusin
Scala Magic, Alexander PodhaliusinVasil Remeniuk
 

What's hot (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
 

Viewers also liked

Основы математической логики
Основы математической логикиОсновы математической логики
Основы математической логики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.ruAlexander Shcherbinin
 
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyEvgeny Smirnov
 
Сервисы Google в образовании
Сервисы Google в образованииСервисы Google в образовании
Сервисы Google в образованииwhatsab
 
Использование сервисов Google в образовании
Использование сервисов Google в образованииИспользование сервисов Google в образовании
Использование сервисов Google в образованииEvgeny Smirnov
 
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школеEvgeny Smirnov
 

Viewers also liked (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 в образовании
 
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
 

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

Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравнения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
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIPlatonov Sergey
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функцийDEVTYPE
 
практика 8
практика 8практика 8
практика 8student_kai
 
основы Java для_any_logic
основы Java для_any_logicосновы Java для_any_logic
основы Java для_any_logicKVPw
 
Николай Паламарчук "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
пугач му по матлогике 2015LIPugach
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Technopark
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 

Similar to Управляющие структуры в 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. Введение. Предмет "Теория вычислительных процессов"
 

More from Evgeny Smirnov

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

More from 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 классы