4 Алгоритмы циклической структуры.ppt
- Количество слайдов: 22
Алгоритмы циклической структуры
В языке ПАСКАЛЬ имеется три вида операторов цикла: цикл с предусловием (while), ¡ цикл с постусловием (repeat) ¡ цикл с параметром (for). ¡
Оператор цикла с параметром FOR имеет два варианта записи: for <имя_пер> : = <нач_знач> to <кон_знач> do <тело цикла> for <имя_пер> : = <нач_знач> downto <кон_знач> do <тело цикла>
Пример 1. Вывести на экран таблицу перевода из градусов по шкале Цельсия в градусы по Фаренгейту для значений от 15 С до 30 С с шагом в 1 С. Перевод осуществляется по формуле: F=C*1. 8+32.
Решение: Program р1; Var i: integer; f: real; Begin Writeln(‘Температура’); For i: =15 to 30 do Begin F: =i*1. 8+32; Writeln(‘по Цельсию’, i, ‘по Фаренгейту’, f: 5: 2); End.
Пример 2. Вывести на экран натуральные числа от 1 до 9 в обратном порядке.
Решение: Program р2; Var i: integer; Begin For i: =9 downto 1 do Writeln(i); End.
Цикл с предусловием While. . do While <условие_продолж_цикла> do <тело цикла>;
Пример 3. Найти сумму 10 произвольных чисел.
Решение: Program р3; Const N=10; Var k, x, s: integer; Begin k: =0; s: =0; {k- количество введенных чисел} while k < n do begin k: =k+1; write(‘Введите число’); readln(x); s: =s+x; end; writeln(‘Сумма чисел равна’, s); end.
Цикл с постусловием Repeat…until Repeat <оператор>. . . <оператор> until <условие окончания цикла>
Пример 4. Составить программу, которая вводит и суммирует целые числа. Если введено значение 999, то на экран выводится результат суммирования.
Решение: Program р4; Var x, s: integer; Begin S: =0; Repeat Write(‘Ввести число’); Readln(x); If x<>999 then s: =s+x; Until x=999; Writeln(‘Сумма введенных чисел’, s); End.
Стандартные процедуры, изменяющие последовательность выполнения операторов: Break – реализует немедленный выход из цикла, передавая управление оператору, стоящему сразу за концом оператора цикла; ¡ Continue – обеспечивает досрочное завершение очередного прохода цикла, передавая управление на конец цикла; ¡ Exit - выполняет выход из программы или подпрограммы, внутри которой записан; ¡ Halt – немедленное завершение выполнения программы. ¡
Пример 5. Написать программу, вычисляющую произведение для n>2. n – вводится с клавиатуры (цикл for).
Решение: Program р5; var i, n, p: longint; begin write(‘Введите число n, большее 2 -х: ’); readln(n); p: =1; for i: =2 to n do p: =p*(1 -1/i*i); write(‘Искомое произведение р=‘, р); end.
Пример 6 Найти сумму всех двузначных чисел, кратных вводимому с клавиатуры числу (цикл repeat).
Решение: Program р6; var i, n, s: longint; begin write(‘Введите число n: ’); readln(n); s: =0; i: =10; repeat if i mod n =0 then s: =s+i; i: =i+1; until i>99; write(‘Искомая сумма s=‘, s); end.
Пример 7. Вывести таблицу значений функции на отрезке [a, b] с шагом h. Значения a, b, h должны вводиться с клавиатуры (цикл while).
Решение: Program р7; var a, b, h, f, x: real; begin write(‘Введите число a, b, h: ’); readln(a, b, h); writeln(‘------------- ’); writeln(‘| x | f |’); writeln(‘------------- ’); x: =a; while x<=b do begin f: =5*x*x-1; writeln(‘| ‘, x: 5: 2, ’ | ‘, f: 5: 2, ’ x: =x+h; end; writeln(‘------------- ’); end. |’);
Вложенные циклы. Пример 8: Вычислить значение переменной Y=2 K+N при всех значениях переменных N=1, 2, 3 и K=2, 4, 6, 8.
Решение PROGRAM PR; VAR N, K, Y: INTEGER; BEGIN FOR N: =1 TO 3 DO BEGIN K: =2; WHILE K<=8 DO BEGIN Y: =2*K+N; WRITELN (N: 4, Y: 4); K: =K+2 END END. Здесь внешний цикл организован с использованием оператора FOR, а внутренний - с использованием оператора WHILE. В процессе выполнения вложенных циклов переменные получат следующие значения: N ………… 1 1 2 2 3 3 K ………… 2 4 6 8 Y ………… 5 9 13 17 6 10 14 18 7 11 15 19