Циклы - Домашняя

advertisement
Циклы. Цикл “ДО”. Цикл “ПОКА”
Цель урока:
1. Изучить циклы. Проверить знания прошлого урока.
2. Воспитание умения слушать учителя.
3. Развитие познавательного интереса.
План урока:
1.
2.
3.
4.
5.
Проверка домашнего задания.
Объяснение нового материала.
Особенности циклов "До" и "Пока"
Домашняя работа.
Подведение итогов урока.
Ход урока
Проверка домашнего задания.
Постановка цели урока.
Объяснение нового материала.
Цикл – это многократно повторяющаяся последовательность одних и тех
же действий. Любой цикл характеризуется тремя стадиями:



началом цикла;
телом цикла;
концом цикла.
Начало цикла – зто условие вхождения в цикл. Цикл может никогда не
наступить, если не выполняется условие вхождения в цикл.
Телом цикла называют последовательность действий, которые выполняются
многократно в цикле. В теле цикла может быть всего одно действие, может быть
несколько действий, может не быть ни одного действия. Последнюю разновидность
цикла называют пустым циклом. Пустой цикл иногда применяют, например, для
задержки времени.
Конец цикла – это условие выхода из цикла или прекращение цикла. Если
условие выхода из цикла нарушено – цикл может никогда не кончится, произойдет
зацикливание (бесконечный цикл).
Схема простейшего цикла.
В этом примере цикла, действия линейного алгоритма бесконечно повторяются,
например, с помощью оператора GOTO. Это так называемый бесконечный цикл.
Чтобы цикл имел конец в начале или конце цикла с помощью ветвления
(IF….THEN…) нужно задать условие выхода из цикла.
Схема цикла с условием.
В первых версиях Basic, например, УК-НЦ и др. циклы (кроме цикла с параметром)
строились именно так. С развитием языка Бейсик в версиях GW Basic, Qbasic,
QuickBASIC и др. появились специальные операторы циклов (WHILE…WEND и
DO…LOOP).
Циклы ДО и ПОКА применяются в тех ситуациях, когда известно условие, при
котором могут закончится циклы, но неизвестно, когда или через сколько
повторений это условие наступит. Общая запись этих циклов можно осуществить с
помощью операторов DO…LOOP. Причем оператор DO указывает начало цикла.
Завершается цикл оператором LOOP. После одного из операторов DO или LOOP
должно записываться условие выхода (окончание) из цикла. Условие окончание
цикла обычно представляет логическое выражение, значение которого – истина
или ложь. Присоединяется это условие с помощью ключевых слов WHILE или
UNTIL. Если используется ключевое слово WHILE, то выполнение тела цикла
повторяется, если значение условия – истина, и прекращается, если значение –
ложь. При использовании ключевого слова UNTIL тело цикла выполняется, если
значение условия – ложь и прекращается, если значение условия истина.
Если условие присоединено к оператору DO , то первая проверка условия
производится до того, как операторы тела цикла начнут выполнятся хотя бы один
раз. Отсюда и название цикла ДО.
Если условие присоединено к оператору LOOP, то первая проверка условия
выполняется после того, как операторы тела цикла были выполнены в первый раз,
и тело цикла будет выполняться, пока выполняется условие. Отсюда и название
цикла ПОКА. Отличие цикла ПОКА от цикла ДО в том, что в цикле ПОКА операторы
тела цикла гарантировано выполняются хотя бы один раз. В этих циклах возможен
альтернативный выход – вне зависимости от того выполнено ли условие выхода,
из цикла можно выйти с помощью операторов EXIT DO.
Формат записи цикла ДО.
DO WHILE…LOOP
DO UNTIL…LOOP
Пример 1
DO UNTIL INKEY$<>””
‘Пустой цикл, в котором ожидается нажатие любой клавиши
LOOP
Логика цикла ДО.
В цикле ДО операторы тела цикла выполняются между операторами цикла DO
WHILE…LOOP или DO UNTIL…LOOP.
Пример 2
DO
INPUT “Число”, Ch
Total = Total + Ch
LOOP WHILE Ch <> 0
Логика цикла ПОКА.
При использовании циклов следует помнить формы записи цикла DO…LOOP,
которые удобно записать в виде таблицы
DO WHILE <условие>
Тело цикла
Тело цикла выполняется ДО тех
пор, пока УСЛОВИЕ ИСТИННО
(может не выполнится ни разу)
LOOP
DO UNTIL <условие>
Тело цикла
Тело цикла выполняется ДО тех
пор, пока УСЛОВИЕ ЛОЖНО
(может не выполнится ни разу)
LOOP
DO
Тело цикла
LOOP WHILE <условие>
DO
Тело цикла
LOOP UNTIL <условие>
Тело цикла выполняется, ПОКА
УСЛОВИЕ ИСТИННО
(выполнится хотя бы один раз)
Тело цикла выполняется, ПОКА
УСЛОВИЕ ЛОЖНО (выполнится
хотя бы один раз)
Цикл WHILE…WEND.
Этот цикл, также является циклом ПОКА, хотя условие проверяется в начале
цикла. Он применяется, когда известно условие цикла, но неизвестно число
повторений цикла. Альтернативный выход из этого цикла невозможен.
Логика цикла WHILE…WEND.
Пример 3
Напишите программу для нахождения 100 первых простых чисел. (Воспользуйтесь
алгоритмом примера 12).
CLS
DATA 3, 1
READ N, B
DO
M=2
DO
K=N / M
IF K=INT(K) THEN 20
M= M + 1
LOOP WHILE M < SQR (N)
B=B+1
PRINT N;
20: N=N+1
LOOP WHILE B<100
END
Пример 4
Пузырьковая сортировка символьного массива.
DEFINT A-Z
CONST FALSE=0, TRUE=NOT FALSE
‘ резервируется массив из 10 символьных элементов
DIM a$(10)
‘каждому элементу массива присваивается значение
a$(1)=”Москва”
a$(2)=”Санкт-Петербург”
a$(3)=”Самара”
a$(4)=”Алма-Ата”
a$(5)=”Хабаровск”
a$(6)=”Новосибирск”
a$(7)=”Владивосток”
a$(8)=”Тверь”
a$(9)=”Воронеж”
a$(10)=”Белгород”
max=UBOUND(a$): exch=TRUE
‘начало сортировки
WHILE exch=TRUE
exch=FALSE
‘сравнение элементов массива попарно,
‘если произошла замена, то присвоить переменной exch
‘значение TRUE
FOR i=2 TO max
IF a$(i-1) > a$(i) THEN exch=TRUE
SWAP a$(i-1),a$(i)
END IF
NEXT i
WEND
CLS
‘вывод на экран отсортированного списка
FOR i=1 TO max: PRINT a$(i): NEXT i
END
Результатом работы этой программы будет отсортированный по алфавиту список
городов. В этой программе цикл WHILE…WEND является внешним циклом.
Внутренний цикл FOR…TO…NEXT, мы рассмотрим позже.
Домашняя работа.
1. Используя, любой из изученных циклов, найдите НОД (наибольший общей
делитель) двух чисел. Составьте алгоритм и программу.
2. Вычислите значение число e с точностью до 0,000001, используя разложение
функции ex в ряд.
Download