Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование. Практикум.doc
Скачиваний:
5
Добавлен:
30.04.2019
Размер:
901.63 Кб
Скачать

4. Проектирование и реализация циклического алгоритма

Цель

Ознакомиться с тремя видами циклических структур. Реализовать на языке Pascal три задачи, для каждого из видов организации цикла.

Теория

Повторяющееся выполнение действий (групп действий), зависящее от выполнения условия, называется циклом.

Любой цикл состоит из трех частей: начала, проверки и тела цикла. Начало – всегда первая часть цикла. Главная его функция – подготовить цикл. Проверка определяет момент выхода из цикла.

Базовая структура "цикл". Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла.

В языке Турбо Паскаль различают операторы цикла типа арифметической прогрессии (оператор цикла со счетчиком – FOR) с шагом +1 или -1 и операторы цикла итерационного типа (WHILE и REPEAT).

Итерационный цикл

Предписывает выполнять тело цикла до тех пор, пока выполняется условие, записанное после слова пока. Условие может находиться или перед циклом (как на рисунке), или после цикла. Такие структуры называют циклами с предусловием и с постусловием соответственно.

Цикл типа арифметической прогрессии.

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

Оператор цикла типа арифметической прогрессии используется, если заранее известно количество повторений цикла и шаг изменения параметра цикла +1 или –1.

FOR<параметр цикла>:=<выражение1> TO | DOWNTO <выражение2> DO < оператор >;

< параметр цикла > - это переменная цикла любого порядкового типа (целого, символьного, перечисляемого, интервального); TO – шаг изменения параметра цикла +1; DOWNTO - шаг изменения параметра цикла -1; <выражение 1> - начальное значение параметра цикла, выражение того же типа, что и параметр цикла;  <выражение 2> - конечное значение параметра цикла, выражение того же типа, что и параметр цикла; <оператор>- тело цикла - простой или составной оператор. 

При выполнении оператора FOR выполняются следующие действия:

- вычисляется < выражение 1> , которое присваивается параметру цикла; - проверяется условие окончания цикла : <параметр цикла> больше <выражения 2> при использовании конструкции TO и <параметр цикла> меньше <выражения 2> при использовании конструкции DOWNTO; - выполняется тело цикла; - наращивается (TO) или уменьшается (DOWNTO) на единицу параметр цикла; -  все этапы, кроме первого, циклически повторяются.

При использовании оператора необходимо помнить :

- Внутри цикла FOR нельзя изменять начальное , текущее или конечное значения параметра цикла. - Если в цикле с шагом +1 начальное значение больше конечного, то цикл не выполнится ни разу. Аналогично для шага -1, если начальное значение меньше конечного. - Телом цикла может быть другой оператор цикла.

Пример: вычислить значение факториала F=N! 

a) … F:=1; b) … F:=1;                  FOR I:=1 TO N DO FOR I:=N DOWNTO 1 DO                      F:=F*I; … F:=F*I; …

В следующем примере цикл выполняется 26 раз и SIM принимает значения всех латинских букв от ’A’ до ‘Z’.

   …    FOR SIM:=’A’ TO ‘Z’ DO    WRITELN( SIM);    …

Если телом цикла является другой цикл, то циклы называются вложенными или сложными. Цикл, содержащий в себе другой цикл, называют внешним. Цикл, содержащийся внутри другого цикла, называется внутренним. Внутренний и внешний циклы могут быть любыми из трех видов: FOR, WHILE или REPEAT. При построении вложенных циклов необходимо, чтобы все операторы внутреннего цикла полностью находились в теле внешнего цикла. Возможная глубина вложенности циклов ограничивается объемом памяти компьютера. Вначале выполняется самый внутренний цикл при фиксированных значениях параметров циклов с меньшим уровнем вложенности, затем изменяется параметр цикла следующего (за внутренним) уровня и снова выполняется самый внутренний цикл и т.д.

Пример: вычислить значение Y , определяемое по формуле

            PROGRAM SP;             CONST N=10;                M=15;            VAR A: ARRAY [1..N,1..M] OF REAL;                 I,J: INTEGER;                 P,Y: REAL;

   BEGIN                 FOR I:=1 TO N DO                     FOR J:=1 TO M DO                         READLN(A[I,J]);                 Y:=0;                 FOR I:=1 TO N DO                     BEGIN                         P:=1;                         FOR J:=1 TO M DO P:=P*A[I,J];                         Y:=Y+P                     END;                 WRITELN(‘Y=’,Y)             END. 

Операторы цикла итерационного типа используются обычно в том случае, если число повторений цикла заранее неизвестно или шаг изменения параметра цикла отличен от +1 или –1.

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

WHILE <логическое выражение > DO <оператор>; 

Логическое выражение вычисляется перед каждым выполнением тела цикла. Если логическое выражение принимает значение TRUE, то тело цикла выполняется, если значение FALSE, происходит выход из цикла. Тело цикла может не выполниться ни разу, если логическое выражение сразу ложно. Телом цикла является простой или составной оператор.

Любой алгоритм, реализуемый через оператор FOR, может быть записан с помощью конструкции WHILE. Например, вычисление значения факториала F=N!:

   …    F:=1;    I:=1;    WHILE I<=N DO    BEGIN      F:=F*I;      I:=I+1;    END; …

Оператор цикла с постусловием

REPEAT   < оператор 1 > [< оператор 2 >] […< оператор n >] UNTIL <логическое выражение>; 

Данная конструкция оператора цикла используется, если число повторений цикла заранее неизвестно, но известно условие выхода из цикла. Управляющее циклом логическое выражение является условием выхода из цикла. Если оно принимает значение TRUE (истина), то выполнение цикла прекращается. При использовании оператора REPEAT цикл выполняется хотя бы один раз. В отличие от других операторов цикла оператор данного вида не требует операторных скобок BEGIN - END, так как их роль выполняют REPEAT - UNTIL.

Вычисление F=N! с использованием конструкции REPEAT – UNTIL будет выглядеть следующим образом:

. . .   F:=1;   I:=1;   Repeat     F:=F*I;     I:=I+1;   Until I>N; . . .

Рассмотрим другой пример использования этого оператора. Вводится последовательность чисел. Определить количество элементов кратных 7.

           Program rep;            Var A,K: integer;                 C : char;

Begin                 K:=0;                 Repeat    Writeln(‘ Введите очередное число ‘);                    Readln( A);                     If A mod 7=0 then K:=K+1;                     Writeln(‘Хотите выйти из цикла? д/y’ );                     Readln( C );                 Until ( C=’д‘ ) or ( C=’y’) ;                 Writeln(‘kol=’,K);             End. 

Здесь условием выхода из цикла является ввод символов «Д» или «Y» при ответе на вопрос о выходе из цикла. Если вводится одна из этих букв, логическое выражение, записанное после UNTIL, становится TRUE и происходит выход из цикла.

Задачи А

1. Вычислить ;

2. Вычислить ;

3. Вычислить ;

4. Вычислить ;

5. Вычислить

6. Вычислить ;

7. Вычислить

8. Вычислить .

9. Дано натуральное число n. Вычислить ;

10. Дано натуральное число n. Вычислить

11. Дано натуральное число n. Вычислить

12. Дано натуральное число n. Вычислить ;

13. Дано натуральное число n. Вычислить

14. Дано натуральное число n. Вычислить ;

15. Дано натуральное число n, действительное число х.

Задачи В

1. Дано натуральное число п.

Вычислить ;

2. Дано натуральное число п. Вычислить ;

3. Даны действительное число а, натуральное число n. Вычислить

;

4. Даны действительное число а, натуральное число n. Вычислить

5.Вычислить .

6. Дано действительное число х. Вычислить

.

7. Даны действительные числа х,a, натуральное число n. Вычислить

8. Дано действительное число х. Вычислить

.

9. Даны натуральное n, действительное х.

Вычислить ;

10. Даны натуральное число n, действительное число х.

Вычислить ;

11. Дано натуральное число n.Вычислить

.

12. Вычислить

13. Дано натуральное число п.

Вычислить ;

14. Дано натуральное число п.

Вычислить ;

15. Дано натуральное число п.

Вычислить .

Задачи С

1. Даны действительное число а, натуральное число n. Вычислить ;

2. Даны действительное число а, натуральное число n. Вычислить

;

3. Даны действительное число а, натуральное число n. Вычислить

.

4. Дано действительное число a.

Найти среди чисел первое , большее a;

5. Дано действительное число a.

Найти такое наименьшее n, что

6. Даны натуральное n, действительное х.

Вычислить ;

7. Даны натуральное n, действительное х.

Вычислить

8. Дано натуральное п. Найти

.

9. Даны натуральное число n, действительное число х.

Вычислить .

10. Дано целое число m>1. Получить наибольшее целое k, при котором .

11. Дано натуральное число n. Получить наименьшее число вида ,превосходящее n.

12. Дано действительное число .Вычислить