SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи




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

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


                                     20 октября 2011 г.




                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



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



Блок–схема


                                                       Ввести a, b, c


                                                 нет                    да
                                                          a == 0



                              D = b 2 − 4ac                                  нет          да
                                                                                   b=0


                           D<0             D=0
             решений нет                                b
                                     D?           x = − 2a           c
                                                                x = −b              нет         да
                                                                                          c=0
                                          D>0
                                           √
                                     −b±     D
                            x1,2   =                                          решений нет       любое x
                                       2a




                       Информатика 10-11 классы
Квадратное уравнение              Циклы                Задачи на циклы                           Числа Фибоначчи



Программа

     Listing 1: Квадратное уравнение
           a = 2.0
                                                         Ввести a, b, c
           b = 4.0
           c = 2.0                                                        да
           i f ( a == 0 )                                   a == 0
              i f ( b == 0 )
                 i f ( c == 0 )
                    p u t s " any x "                                          нет          да
                                                                                     b=0
                 else
                    p u t s " no s o l u t i o n s "
                 end                                                   c
                                                                  x = −b              нет          да
              else                                                                          c=0
                 x = −c /b
                 puts x                                                         решений нет         любое x
              end
           else


                       Информатика 10-11 классы
Квадратное уравнение              Циклы              Задачи на циклы                   Числа Фибоначчи



Программа


     Listing 2: Квадратное уравнение

           else
                                                                                        нет
             D = b∗b−4∗a ∗ c                                                                   a == 0
             i f (D > 0 )
                 x1 = (−b+D∗ ∗ 0 . 5 ) / ( 2 . 0 ∗ a )
                 x2 = (−b−D∗ ∗ 0 . 5 ) / ( 2 . 0 ∗ a )                 D = b 2 − 4ac
                 p u t s x1 , x2
             e l s i f (D == 0 )
                                                                  D<0            D=0
                x = −b / ( 2 ∗ a )                  решений нет             D?                 b
                                                                                         x = − 2a
                 puts x
                                                                            D>0
             else
                                                                                √
                 p u t s " no s o l u t i o n s "                          −b± D
                                                                  x1,2   =
             end                                                             2a
           end


                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Основы


            Часто встречаются ситуации, когда какое-либо действие
            надо повторить несколько раз.
            Например, вывести на экран первые 5 натуральных чисел.
            Простейшая программа выглядела бы следующим
            образом:

      Listing 3: 5 последовательных чисел

                 puts " 1 ,2 ,3 ,4 ,5 "

            А если чисел          100? 1000? 10000?



                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Основы


            На помощь приходят циклы.
            Цикл управляющая структура в алгоритме/программе,
            позволяющая повторять какую-либо операцию несколько
            раз.
            Два основных типа циклов:
              1   с заданным количеством шагов–итераций (явный цикл)
              2   без явно заданного количества итераций (неявный цикл)
            Первый тип состоит из начала цикла, номера итерации,
            тела цикла (что делаем), конца цикла.
            Второй тип из начала цикла, условия выхода из цикла,
            номера итерации (опционально), тела цикла, конца цикла.



                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы       Числа Фибоначчи



Пример цикла




                                                                    1

         1
             Где здесь цикл и какому типу он принадлежит?
                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы          Числа Фибоначчи



For и while


            Двум типам циклов соответствует два оператора: for и
            while.
            Напишем программу, выводящую на экран числа от 1 до
            100.


     Listing 4: for                               Listing 5: while
                 for i in 1..100                             i = 0
                   puts i                                    w h i l e ( i < 100)
                 end                                            i = i +1
                                                                puts i
                                                             end



                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



For и while

            Рассмотрим программы более детально.
            Оба оператора образуют следующую структуру:
              1   Ключевое слово (for или while).
              2   Условие повторения (явное или неявное).
              3   Конец (оператор end).
            В определении цикла for используется специальная
            переменная i, которая указывает на номер итерации.
            Она “пробегает” значения в заданном интервале:
            for i in 1..100 последовательно пробегает значения 1, 2, 3,
            ... 99, 100.
            В цикле while с помощью оператора присваивания
            (i = i+1) мы эмулируем такую переменную.


                       Информатика 10-11 классы
Квадратное уравнение                Циклы         Задачи на циклы                 Числа Фибоначчи



Суммирование чисел: алгоритм


            Посчитаем сумму чисел от 1 до 100000 с помощью циклов.


                        For                                         While


            по i от 1 до 100000
                                                                                 нет
                                  sum:=sum+i                        i<=100000


                                                                          да
                                                                      i:=i+1

                                                                    sum:=sum+i




                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы          Числа Фибоначчи



Программа




     Listing 6: for                               Listing 7: while
                 sum = 0                                     i      = 0
                 for i in 1..100000                          sum = 0
                    sum = sum + i                            w h i l e ( i < 100000)
                 end                                             i = i +1
                 p u t s sum                                    sum = sum + i
                                                             end
                                                             p u t s sum




                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Логарифмирование
            Задача: найти наименьшее целое число, для которого
            выполнено неравенство:
                                           2x > 1000000
            Цикл for здесь не поможет, ведь мы заранее не знаем,
            сколько итераций будет.
            Решаем через while. Как?
            Пробежим все степени двойки, начиная с нулевой,
            фиксируя на каждом шаге значение показателя степени.
            Если текущее значение меньше 1000000, увеличим
            показатель на 1.
            Когда-нибудь наступит ситуация, когда 2 в какой-либо
            степени станет больше, чем 1000000.
            Последнее значение показателя степени и будет искомым
            числом.
                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Логарифмирование


      Listing 8: Вычисление наименьшей степени

                 num = 0
                 i = 0
                 w h i l e (num <= 1 0 0 0 0 0 0 )
                    i = i +1
                   num = 2∗∗ i
                 end
                 puts i

            Задание: дан алфавит, состоящий из N букв. Написать
            программу, которая считает, сколько бит занимает один
            символ этого алфавита.


                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Выход из цикла
            Может возникнуть ситуация, когда нам нужно прекратить
            выполнение до цикла даже несмотря на то, что не все
            итерации пройдены.
            Для окончания цикла нужно вызвать оператор break.
            Пример: если бы в задаче 2x > 1000000 мы использовали
            цикл for, то нам следовало бы остановиться в ситуации,
            когда 2i стало бы больше 1000000, где i номер итерации.

      Listing 9: Break
            for i in 1..1000000
              ...
              break i f (2∗∗ i > 1000000)
            end

            Для перехода к следующей итерации без выполнения
            дальнейшего кода из тела цикла оператор next.
                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы        Числа Фибоначчи



Оператор times

            Оператор times (англ. кол-во раз) очень похож на for. Он
            повторяет определённое заданное количество раз
            определённое действие.
            Его зачастую используют, когда цикл                очень простой и
            содержит всего одно действие.
            Приведём пример: выведем на экран квадраты чисел от 0
            до 9.

      Listing 10: Вычисление наименьшей степени

             1 0 . t i m e s { | i | p u t s i ∗∗2 }

            Лаконично, не правда ли?
            NB! Нумерация начинается с 0, а не с 1!

                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы         Числа Фибоначчи



Числа Фибоначчи

            Числа Фибоначчи задаются рекуррентной формулой:

                                          ϕn = ϕn−1 + ϕn−2

            где ϕ0 = 1, ϕ1 = 1.
            Первые несколько чисел Фибоначчи:
             ϕ0 ϕ1 ϕ2 ϕ3 ϕ4 ϕ5 ϕ6 ϕ7                            ϕ8   ϕ9   ϕ10
             1    1    2   3    5   8 13 21                     34   55   89
            Числа Фибоначчи встречаются и в природе: филлотаксис
            (листорасположение) у растений описывается
            последовательностью Фибоначчи.
            Зерна подсолнуха, сосновые шишки, лепестки цветков
            располагаются также по числам Фибоначчи.

                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Числа Фибоначчи




                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Числа Фибоначчи




                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Вычисление 100 числа Фибоначчи

            Итак, чтобы вычислить число Фибоначчи, нужно знать
            два предыдущих.
            Пойдём последовательно. Нам известны значения двух
            первых чисел: ϕ0 = 1, ϕ1 = 1.
            Чтобы вычислить второе число, надо сложить первое и
            нулевое.
            Прибавив к полученному числу первое получим третье:

                               ϕ3 = ϕ2 + ϕ1 = (ϕ1 + ϕ0 ) + ϕ0 .

            Для вычисления четвёртого числа воспользуемся
            значениями третьего и второго.
            Итого: нам надо хранить два последних числа. Складывая
            их, мы получаем новое число. “Сдвигаемся” на единицу
            дальше.
                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



Программа

      Listing 11: 100 число Фибоначчи

                 a0 = 1
                 a1 = 1
                 a_new = 0
                 for i in 2..100
                    a_new = a0 + a1
                    a0 = a1
                    a1 = a_new
                 end
                 p u t s a_new

            Задание: подготовить блок–схему программы.
            Задание: сделать аналогично с циклом while.

                       Информатика 10-11 классы
Квадратное уравнение              Циклы           Задачи на циклы   Числа Фибоначчи



References




            Все презентации доступны на http://school.smirik.ru!
            Вопросы, предложения, д/з: smirik@gmail.com




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

Weitere ähnliche Inhalte

Was ist angesagt?

Skalirovanie proizvedenija vektorov
Skalirovanie proizvedenija vektorovSkalirovanie proizvedenija vektorov
Skalirovanie proizvedenija vektorovNarvatk
 
векторы 10 класс
векторы 10 классвекторы 10 класс
векторы 10 классmarzac
 
9 класс линейные алгоритмы
9  класс линейные алгоритмы9  класс линейные алгоритмы
9 класс линейные алгоритмыliz_f
 
Линейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляЛинейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляDEVTYPE
 
8 klass
8 klass8 klass
8 klasssng
 
в мире квадратных уравнений
в мире квадратных уравненийв мире квадратных уравнений
в мире квадратных уравненийartem2905
 
проект "Способы решения квадратных уравнений"
 проект "Способы решения квадратных уравнений" проект "Способы решения квадратных уравнений"
проект "Способы решения квадратных уравнений"suvalex
 

Was ist angesagt? (7)

Skalirovanie proizvedenija vektorov
Skalirovanie proizvedenija vektorovSkalirovanie proizvedenija vektorov
Skalirovanie proizvedenija vektorov
 
векторы 10 класс
векторы 10 классвекторы 10 класс
векторы 10 класс
 
9 класс линейные алгоритмы
9  класс линейные алгоритмы9  класс линейные алгоритмы
9 класс линейные алгоритмы
 
Линейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуляЛинейная алгебра ll. Разбор задач второго модуля
Линейная алгебра ll. Разбор задач второго модуля
 
8 klass
8 klass8 klass
8 klass
 
в мире квадратных уравнений
в мире квадратных уравненийв мире квадратных уравнений
в мире квадратных уравнений
 
проект "Способы решения квадратных уравнений"
 проект "Способы решения квадратных уравнений" проект "Способы решения квадратных уравнений"
проект "Способы решения квадратных уравнений"
 

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

20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08Computer Science Club
 
тригонометрия в1
тригонометрия в1тригонометрия в1
тригонометрия в1leshiy_AlisA
 
Matemat526
Matemat526Matemat526
Matemat526tesla21
 
2 вариант ответы
2 вариант ответы2 вариант ответы
2 вариант ответыvova123367
 
ответы вариант 2
ответы вариант 2ответы вариант 2
ответы вариант 2vova123367
 
тригонометрия в2
тригонометрия в2тригонометрия в2
тригонометрия в2leshiy_AlisA
 
Formula kornej kvadratnogo_uravneniya
Formula kornej kvadratnogo_uravneniyaFormula kornej kvadratnogo_uravneniya
Formula kornej kvadratnogo_uravneniyaИван Иванов
 
Мысль №8
Мысль №8Мысль №8
Мысль №8rasparin
 
Квадратные неравенства 9 класс
Квадратные неравенства 9 классКвадратные неравенства 9 класс
Квадратные неравенства 9 классАлексей Вахонин
 
десять способов решений кв. ур ий
десять способов решений кв. ур ийдесять способов решений кв. ур ий
десять способов решений кв. ур ийNovikovaOG
 

Ähnlich wie Ruby: управляющие структуры — циклы (14)

20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08
 
Quadratic equations location of roots.
Quadratic equations location of roots.Quadratic equations location of roots.
Quadratic equations location of roots.
 
тригонометрия в1
тригонометрия в1тригонометрия в1
тригонометрия в1
 
Matemat526
Matemat526Matemat526
Matemat526
 
2 вариант ответы
2 вариант ответы2 вариант ответы
2 вариант ответы
 
ответы вариант 2
ответы вариант 2ответы вариант 2
ответы вариант 2
 
тригонометрия в2
тригонометрия в2тригонометрия в2
тригонометрия в2
 
Formula kornej kvadratnogo_uravneniya
Formula kornej kvadratnogo_uravneniyaFormula kornej kvadratnogo_uravneniya
Formula kornej kvadratnogo_uravneniya
 
задания на блок схемы
задания на блок схемызадания на блок схемы
задания на блок схемы
 
1 вариант
1 вариант1 вариант
1 вариант
 
2 вариант
2 вариант2 вариант
2 вариант
 
Мысль №8
Мысль №8Мысль №8
Мысль №8
 
Квадратные неравенства 9 класс
Квадратные неравенства 9 классКвадратные неравенства 9 класс
Квадратные неравенства 9 класс
 
десять способов решений кв. ур ий
десять способов решений кв. ур ийдесять способов решений кв. ур ий
десять способов решений кв. ур ий
 

Mehr von Evgeny Smirnov

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

Mehr von Evgeny Smirnov (20)

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
 
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
 
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
 
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
 
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
 
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
 
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
 
Newtonew Media
Newtonew MediaNewtonew Media
Newtonew Media
 
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
 
Мастер-класс: 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
 
Блок-схемы
Блок-схемыБлок-схемы
Блок-схемы
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
 

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

  • 1. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Управляющие структуры в ruby: циклы Информатика 10-11 классы 20 октября 2011 г. Информатика 10-11 классы
  • 2. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Описание Итак, вернёмся к квадратному уравнению. Напишем программу, высчитывающую все корни (если таковые имеются) квадратного уравнения ax 2 + bx + c = 0. Если a = 0, то: 1 Вычислим дискриминант уравнения по формуле: D = b 2 − 4ac. 2 Если дискриминант меньше нуля, то решений нет. 3 Если дискриминант равен нулю, то корень один. Он b равен: − . 2a 4 Если дискриминант больше нуля, то существует два вещественных корня: √ − b ± b 2 − 4ac x1,2 = 2a В случае a = 0 уравнение из квадратного превращается в линейное, которое мы уже умеем решать. Информатика 10-11 классы
  • 3. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Блок–схема Ввести a, b, c нет да a == 0 D = b 2 − 4ac нет да b=0 D<0 D=0 решений нет b D? x = − 2a c x = −b нет да c=0 D>0 √ −b± D x1,2 = решений нет любое x 2a Информатика 10-11 классы
  • 4. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Программа Listing 1: Квадратное уравнение a = 2.0 Ввести a, b, c b = 4.0 c = 2.0 да i f ( a == 0 ) a == 0 i f ( b == 0 ) i f ( c == 0 ) p u t s " any x " нет да b=0 else p u t s " no s o l u t i o n s " end c x = −b нет да else c=0 x = −c /b puts x решений нет любое x end else Информатика 10-11 классы
  • 5. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Программа Listing 2: Квадратное уравнение else нет D = b∗b−4∗a ∗ c a == 0 i f (D > 0 ) x1 = (−b+D∗ ∗ 0 . 5 ) / ( 2 . 0 ∗ a ) x2 = (−b−D∗ ∗ 0 . 5 ) / ( 2 . 0 ∗ a ) D = b 2 − 4ac p u t s x1 , x2 e l s i f (D == 0 ) D<0 D=0 x = −b / ( 2 ∗ a ) решений нет D? b x = − 2a puts x D>0 else √ p u t s " no s o l u t i o n s " −b± D x1,2 = end 2a end Информатика 10-11 классы
  • 6. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Основы Часто встречаются ситуации, когда какое-либо действие надо повторить несколько раз. Например, вывести на экран первые 5 натуральных чисел. Простейшая программа выглядела бы следующим образом: Listing 3: 5 последовательных чисел puts " 1 ,2 ,3 ,4 ,5 " А если чисел 100? 1000? 10000? Информатика 10-11 классы
  • 7. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Основы На помощь приходят циклы. Цикл управляющая структура в алгоритме/программе, позволяющая повторять какую-либо операцию несколько раз. Два основных типа циклов: 1 с заданным количеством шагов–итераций (явный цикл) 2 без явно заданного количества итераций (неявный цикл) Первый тип состоит из начала цикла, номера итерации, тела цикла (что делаем), конца цикла. Второй тип из начала цикла, условия выхода из цикла, номера итерации (опционально), тела цикла, конца цикла. Информатика 10-11 классы
  • 8. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Пример цикла 1 1 Где здесь цикл и какому типу он принадлежит? Информатика 10-11 классы
  • 9. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи For и while Двум типам циклов соответствует два оператора: for и while. Напишем программу, выводящую на экран числа от 1 до 100. Listing 4: for Listing 5: while for i in 1..100 i = 0 puts i w h i l e ( i < 100) end i = i +1 puts i end Информатика 10-11 классы
  • 10. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи For и while Рассмотрим программы более детально. Оба оператора образуют следующую структуру: 1 Ключевое слово (for или while). 2 Условие повторения (явное или неявное). 3 Конец (оператор end). В определении цикла for используется специальная переменная i, которая указывает на номер итерации. Она “пробегает” значения в заданном интервале: for i in 1..100 последовательно пробегает значения 1, 2, 3, ... 99, 100. В цикле while с помощью оператора присваивания (i = i+1) мы эмулируем такую переменную. Информатика 10-11 классы
  • 11. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Суммирование чисел: алгоритм Посчитаем сумму чисел от 1 до 100000 с помощью циклов. For While по i от 1 до 100000 нет sum:=sum+i i<=100000 да i:=i+1 sum:=sum+i Информатика 10-11 классы
  • 12. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Программа Listing 6: for Listing 7: while sum = 0 i = 0 for i in 1..100000 sum = 0 sum = sum + i w h i l e ( i < 100000) end i = i +1 p u t s sum sum = sum + i end p u t s sum Информатика 10-11 классы
  • 13. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Логарифмирование Задача: найти наименьшее целое число, для которого выполнено неравенство: 2x > 1000000 Цикл for здесь не поможет, ведь мы заранее не знаем, сколько итераций будет. Решаем через while. Как? Пробежим все степени двойки, начиная с нулевой, фиксируя на каждом шаге значение показателя степени. Если текущее значение меньше 1000000, увеличим показатель на 1. Когда-нибудь наступит ситуация, когда 2 в какой-либо степени станет больше, чем 1000000. Последнее значение показателя степени и будет искомым числом. Информатика 10-11 классы
  • 14. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Логарифмирование Listing 8: Вычисление наименьшей степени num = 0 i = 0 w h i l e (num <= 1 0 0 0 0 0 0 ) i = i +1 num = 2∗∗ i end puts i Задание: дан алфавит, состоящий из N букв. Написать программу, которая считает, сколько бит занимает один символ этого алфавита. Информатика 10-11 классы
  • 15. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Выход из цикла Может возникнуть ситуация, когда нам нужно прекратить выполнение до цикла даже несмотря на то, что не все итерации пройдены. Для окончания цикла нужно вызвать оператор break. Пример: если бы в задаче 2x > 1000000 мы использовали цикл for, то нам следовало бы остановиться в ситуации, когда 2i стало бы больше 1000000, где i номер итерации. Listing 9: Break for i in 1..1000000 ... break i f (2∗∗ i > 1000000) end Для перехода к следующей итерации без выполнения дальнейшего кода из тела цикла оператор next. Информатика 10-11 классы
  • 16. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Оператор times Оператор times (англ. кол-во раз) очень похож на for. Он повторяет определённое заданное количество раз определённое действие. Его зачастую используют, когда цикл очень простой и содержит всего одно действие. Приведём пример: выведем на экран квадраты чисел от 0 до 9. Listing 10: Вычисление наименьшей степени 1 0 . t i m e s { | i | p u t s i ∗∗2 } Лаконично, не правда ли? NB! Нумерация начинается с 0, а не с 1! Информатика 10-11 классы
  • 17. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Числа Фибоначчи Числа Фибоначчи задаются рекуррентной формулой: ϕn = ϕn−1 + ϕn−2 где ϕ0 = 1, ϕ1 = 1. Первые несколько чисел Фибоначчи: ϕ0 ϕ1 ϕ2 ϕ3 ϕ4 ϕ5 ϕ6 ϕ7 ϕ8 ϕ9 ϕ10 1 1 2 3 5 8 13 21 34 55 89 Числа Фибоначчи встречаются и в природе: филлотаксис (листорасположение) у растений описывается последовательностью Фибоначчи. Зерна подсолнуха, сосновые шишки, лепестки цветков располагаются также по числам Фибоначчи. Информатика 10-11 классы
  • 18. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Числа Фибоначчи Информатика 10-11 классы
  • 19. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Числа Фибоначчи Информатика 10-11 классы
  • 20. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Вычисление 100 числа Фибоначчи Итак, чтобы вычислить число Фибоначчи, нужно знать два предыдущих. Пойдём последовательно. Нам известны значения двух первых чисел: ϕ0 = 1, ϕ1 = 1. Чтобы вычислить второе число, надо сложить первое и нулевое. Прибавив к полученному числу первое получим третье: ϕ3 = ϕ2 + ϕ1 = (ϕ1 + ϕ0 ) + ϕ0 . Для вычисления четвёртого числа воспользуемся значениями третьего и второго. Итого: нам надо хранить два последних числа. Складывая их, мы получаем новое число. “Сдвигаемся” на единицу дальше. Информатика 10-11 классы
  • 21. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи Программа Listing 11: 100 число Фибоначчи a0 = 1 a1 = 1 a_new = 0 for i in 2..100 a_new = a0 + a1 a0 = a1 a1 = a_new end p u t s a_new Задание: подготовить блок–схему программы. Задание: сделать аналогично с циклом while. Информатика 10-11 классы
  • 22. Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи References Все презентации доступны на http://school.smirik.ru! Вопросы, предложения, д/з: smirik@gmail.com Информатика 10-11 классы