Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_лекций_2010_год_информатика.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

7.6.5.3. Операторы циклических алгоритмов

Циклическим называется алгоритм, в котором получение результата обеспечивается многократным выполнением одних и тех же операций. Возможны три способа организации алгоритма циклической структуры:

  • цикл «повторять…до» (цикл с постусловием, рис. 7.4);

  • цикл «пока» (цикл с предусловием, рис. 7.5);

  • счетный цикл (с управляющей переменной, рис. 7.6).

Различают циклы с заданным и неизвестным заранее числом повторений. В QBASIC существуют несколько операторов, которые позволяют реализовать в программе алгоритм циклической структуры.

Рис. 7.4. Цикл с постусловием Рис. 7.5. Цикл с предусловием

Рис. 7.6. Цикл с известным числом повторов

Операторы GOTO и IF

Совместное использование этих операторов позволяет организовать выполнение циклического процесса.

Пример. Найти сумму и произведение 5 чисел.

REM Объявление начальных значений переменных

SUM=0: P=1: N=1

NEXT.STEP:

PRINT “Введите “; N; “число”

INPUT NUM

REM Вычисление суммы

SUM=SUM+NUM

REM Вычисление произведения

P=P*NUM

N=N+1

IF N<=5 GOTO NEXT.STEP ‘ Переход на строку с меткой NEXT.STEP

PRINT “Сумма этих чисел = “;SUM; “Произведение = “;P

END

Оператор цикла с известным числом повторений

FOR …TO … NEXT

Этот оператор позволяет организовать выполнение блока операторов определенное число раз (организуют цикл по счетчику). Поэтому он может заменить операторы GOTO и IF. Общий вид оператора:

FOR U = A1 TO A2 [STEP A3]

тело цикла

NEXT U

где: U – управляющая переменная цикла; A1 , A2 – начальное и конечное значение управляющей переменной; A3 - шаг изменения управляющей переменной; тело цикла – набор операторов повторяющегося вычислительного процесса. Если А3=1, то конструкцию STEP A3 можно опустить. Программа в предыдущем примере эквивалентна следующей:

Пример 1. Найти сумму и произведение 5 чисел.

REM Объявление начальных значений переменных

SUM=0: P=1

REM Начало цикла

FOR U=1 TO 5

PRINT “Введите “; U; “ число”

INPUT NUM

REM Вычисление суммы

SUM=SUM+NUM

REM Вычисление произведения

P=P*NUM

NEXT U

PRINT “Сумма этих чисел = “;SUM; “Произведение = “;P

END

Пример 2.

FOR X=1 to 10 STEP 1

Y=X^2+ B*X- C

PRINT “ X=“; X, “ Y=“; Y

NEXT X

Пример 3. Ввод массива

REM ВВОД МАССИВА

INPUT “ВВЕСТИ L”; L

DIM P(L)

PRINT “ВВЕСТИ МАССИВ P”

FOR I= 1 to L

INPUT P(I)

NEXT I

END

Условные циклы

Для организации циклов с неизвестным числом повторений (итерационных) используются операторы условных циклов.

Оператор цикла с предусловием WHILE … WEND

Общий вид этого оператора:

WHILE условие

тело цикла

WEND

где: условие – логическое выражение; тело цикла – последовательность операторов.

Пока условие истинно, выполняются все операции тела цикла. Еcли условие - “ложь” - то управление передается на оператор, следующий за WEND. Особенности работы оператора:

- можно использовать при неизвестном заранее количестве повторений;

- можно использовать, если закон изменения параметров выражается формулой;

- в теле цикла должен быть оператор, изменяющий условие.

Пример 1. Найти количество первых n натуральных чисел, сумма которых не больше 20.

SUM=0: N=0

WHILE SUM<=20

N=N+1

SUM=SUM+N

WEND

PRINT N; SUM

END

Пример 2. Условный цикл

X= 4

WHILE X<= 12

Y=X^2 + B*X - C

PRINT “X=“; X, “Y=“; Y

X=X+2

WEND

Оператор условного цикла DO ... LOOP

Данный оператор аналогичен оператору WHILE ... WEND, однако отличается от него большей гибкостью. Управляющее условие может быть размещено как в начале цикла, так и в конце.

Проверка вверху:

DO WHILE условие DO UNTIL условие

тело цикла тело цикла

LOOP LOOP

Проверка внизу:

DO DO

тело цикла тело цикла

LOOP WHILE условие LOOP UNTIL условие

где: условие – логическое выражение; тело цикла – последовательность операторов.

Использование слова WHILE означает, что цикл будет выполняться до тех пор, пока условие будет иметь значение “истина“. При использовании слова UNTIL цикл выполняется только тогда, когда условие имеет значение “ложь”. При проверке вверху цикл может не выполниться ни разу. При проверке снизу цикл выполнится хотя бы один раз.

Пример 1. Найти сумму и произведение 5 чисел.

REM Использование формы «проверка-вверху» с условием WHILE

REM Объявление начальных значений переменных

SUM=0: P=1:N=1

DO WHILE N<=5

PRINT “Введите “; N; “ число”

INPUT NUM

REM Вычисление суммы

SUM=SUM+NUM

REM Вычисление произведения

P=P*NUM

N=N+1

LOOP

PRINT “Сумма этих чисел = “;SUM; “Произведение = “;P

END

Пример 2. Найти сумму и произведение 5 чисел.

REM Использование формы «проверка-внизу» с условием UNTIL

REM Объявление начальных значений переменных

SUM=0: P=1:N=1

DO

PRINT “Введите “; N; “ число”

INPUT NUM

REM Вычисление суммы

SUM=SUM+NUM

REM Вычисление произведения

P=P*NUM

N=N+1

LOOP UNTIL N>5

PRINT “Сумма этих чисел = “;SUM; “Произведение = “;P

END

Вложенные циклы

Циклы могут быть вложенными друг в друга. Внутренние циклы должны целиком помещаться во внешних. Если вложены друг в друга два цикла FOR … NEXT, то они должны иметь различные управляющие переменные.

Пример. Рассчитать и вывести на экран таблицу Пифагора.

PRINT “Таблица Пифагора”

FOR x=1 TO 10

FOR y=1 TO 10

A=x*y

PRINT USING “###”; A

NEXT y

PRINT

NEXT x

Результат выполнения программы:

Таблица Пифагора

1 2 3 4 5 6 7 8 9 10

2 4 6 8 10 12 14 16 18 20

3 6 9 12 15 18 21 24 27 30

4 8 12 16 20 24 28 32 36 40

5 10 15 20 25 30 35 40 45 50

6 12 18 24 30 36 42 48 54 60

7 14 21 28 35 42 49 56 63 70

8 16 24 32 40 48 56 64 72 80

9 18 27 36 45 54 63 72 81 90

10 20 30 40 50 60 70 80 90 100