Download - Ruby: управляющие структуры — циклы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Управляющие структуры в ruby: циклы
Информатика10-11 классы
20 октября 2011 г.
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Описание
Итак, вернёмся к квадратному уравнению. Напишемпрограмму, высчитывающую все корни (если таковыеимеются) квадратного уравнения ax2 + bx + c = 0.Если a 6= 0, то:
1 Вычислим дискриминант уравнения по формуле:D = b2 − 4ac .
2 Если дискриминант меньше нуля, то решений нет.3 Если дискриминант равен нулю, то корень — один. Он
равен: −b
2a.
4 Если дискриминант больше нуля, то существует двавещественных корня:
x1,2 =− b ±
√b2 − 4ac
2a
В случае a = 0 уравнение из квадратного превращается влинейное, которое мы уже умеем решать.
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Блок–схема
Ввести a, b, c
a == 0
D = b2 − 4ac
D? x = − b2a
x1,2 =− b ±
√D
2a
решений нет
b = 0
x = − cb
c = 0
любое xрешений нет
нет да
да
данет
нет
D = 0
D > 0
D < 0
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Программа
Listing 1: Квадратное уравнение
a = 2 .0b = 4 .0c = 2 .0i f ( a == 0)
i f ( b == 0)i f ( c == 0)
put s "any␣x"e l s e
put s "no␣ s o l u t i o n s "end
e l s ex = −c/bput s x
ende l s e
Ввести a, b, c
a == 0
b = 0
x = − cb
c = 0
любое xрешений нет
да
да
данет
нет
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Программа
Listing 2: Квадратное уравнение
e l s eD = b∗b−4∗a∗ci f (D > 0)
x1 = (−b+D∗∗0 . 5 ) / ( 2 . 0∗ a )x2 = (−b−D∗∗0 . 5 ) / ( 2 . 0∗ a )put s x1 , x2
e l s i f (D == 0)x = −b/(2∗ a )put s x
e l s eput s "no␣ s o l u t i o n s "
endend
a == 0
D = b2 − 4ac
D? x = − b2a
x1,2 =− b ±
√D
2a
решений нет
нет
D = 0
D > 0
D < 0
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Основы
Часто встречаются ситуации, когда какое-либо действиенадо повторить несколько раз.Например, вывести на экран первые 5 натуральных чисел.Простейшая программа выглядела бы следующимобразом:
Listing 3: 5 последовательных чисел
put s " 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
f o r i i n 1 . . 1 0 0put s i
end
Listing 5: while
i = 0wh i l e ( i < 100)
i = i+1put s 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
по i от 1 до 100000
sum:=sum+i
While
i<=100000
i:=i+1
sum:=sum+i
да
нет
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Программа
Listing 6: for
sum = 0f o r i i n 1 . . 100000
sum = sum + iendput s sum
Listing 7: while
i = 0sum = 0wh i l e ( i < 100000)
i = i+1sum = sum + i
endput s sum
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Логарифмирование
Задача: найти наименьшее целое число, для котороговыполнено неравенство:
2x > 1000000
Цикл for здесь не поможет, ведь мы заранее не знаем,сколько итераций будет.Решаем через while. Как?Пробежим все степени двойки, начиная с нулевой,фиксируя на каждом шаге значение показателя степени.Если текущее значение меньше 1000000, увеличимпоказатель на 1.Когда-нибудь наступит ситуация, когда 2 в какой-либостепени станет больше, чем 1000000.Последнее значение показателя степени и будет искомымчислом.
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Логарифмирование
Listing 8: Вычисление наименьшей степени
num = 0i = 0while (num <= 1000000)
i = i+1num = 2∗∗ i
endput s i
Задание: дан алфавит, состоящий из N букв. Написатьпрограмму, которая считает, сколько бит занимает одинсимвол этого алфавита.
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Выход из цикла
Может возникнуть ситуация, когда нам нужно прекратитьвыполнение до цикла даже несмотря на то, что не всеитерации пройдены.Для окончания цикла нужно вызвать оператор break.Пример: если бы в задаче 2x > 1000000 мы использовалицикл for, то нам следовало бы остановиться в ситуации,когда 2i стало бы больше 1000000, где i — номер итерации.
Listing 9: Break
f o r i i n 1 . . 1000000. . .break i f (2∗∗ i > 1000000)
end
Для перехода к следующей итерации без выполнениядальнейшего кода из тела цикла — оператор next.
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
Оператор times
Оператор times (англ. кол-во раз) очень похож на for. Онповторяет определённое заданное количество разопределённое действие.Его зачастую используют, когда цикл — очень простой исодержит всего одно действие.Приведём пример: выведем на экран квадраты чисел от 0до 9.
Listing 10: Вычисление наименьшей степени
10 . t imes { | i | pu 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 = 1a1 = 1a_new = 0fo r i in 2 . . 1 0 0
a_new = a0 + a1a0 = a1a1 = a_new
endput s a_new
Задание: подготовить блок–схему программы.Задание: сделать аналогично с циклом while.
Информатика 10-11 классы
Квадратное уравнение Циклы Задачи на циклы Числа Фибоначчи
References
Все презентации доступны на http://school.smirik.ru!Вопросы, предложения, д/з: [email protected]
Информатика 10-11 классы