- •3.1. Язык программирования Паскаль
- •3.2. Структура программы в Паскале. Ввод и вывод данных.
- •Var ij:integer; X: real;
- •Var a,b: real;
- •3.3. Работа в системе Турбо Паскаль
- •3.4. Условный оператор
- •Var a, b: integer;
- •3.5. Организация циклов
- •Var a, b: integer;
- •Var a, b: integer;
- •Var a, b: integer;
- •Var a, p: real; I, n: integer;
- •Var p, I, n: integer;
- •Var X, у: real;
- •Var a, s: real; I, n: integer;
- •Var a: array [1 .. N ] of real;
- •1. Вычисление суммы элементов массива.
- •Var a: array [1 .. N ] of real; s : real; I: integer;
- •2. Нахождение наибольшего элемента массива.
- •Var a: array [1 .. N ] of integer; max, I: integer;
- •3. Упорядочение массива по возрастанию.
- •Var a : array [ 1.. N ] of real; I, j: integer; c: real;
- •4. Поиск элемента в массиве.
- •Var a : array [1 .. N ] of real; X : real; I : integer;
- •3.7. Алгоритмы обработки таблиц
- •1. Вычисление суммы элементов главной диагонали квадратной таблицы.
- •Var b: array [ 1..N, 1..N ] of real; I, j: integer;
- •Var b: array [ 1.. N, 1 .. N ] of real; I, j: integer; s: real;
- •2. Нахождение наибольших элементов каждой строки таблицы.
- •Var b: array [1 .. N, 1 .. N ] of integer; I, j: integer; a: array [1 .. N ] of integer;
- •3. Нахождение сумм элементов столбцов таблицы.
- •Var b: array [1 .. N, 1 .. N ] of integer; s, I, j: integer; a: array [1 .. N ] of integer;
- •4. Перестановка строк таблицы.
- •Var b: array [ 1 .. N, 1 .. M ] of real; c: real; I, j, k, l: integer;
Var a, b: integer;
begin
write ('введите два натуральных числа');
readln (a, b); 1:
1: if a = b then goto 2;
if a > b then a: = a - b else b: = b - a;
goto 1;
2: write ('НОД = ',a);
Readln
end.
Оператор цикла пока. Как видно из предыдущего примера, циклический процесс можно организовать без использования специальных операторов. Однако при составлении достаточно серьезных программ использовать оператор безусловного перехода не рекомендуется, так как можно быстро запутаться при проверке программы. Оператор цикла пока имеет вид:
while условие do оператор;
и выполняется следующим образом: оператор (тело цикла) повторяется до тех пор, пока выполняется условие (истинно логическое выражение). Оператор может быть простым или составным, заключенным в операторные скобки begin ... end. Для алгоритма Евклида программа примет вид:
program E6;
Var a, b: integer;
begin
write ('введите два натуральных числа');
readln (a, b);
while a<>b do
if a>b then a: = a - b else b: = b - a;
write ('НОД= ', a);
readln;
end. 101
Оператор цикла до. Проверка условия в цикле до осуществляется после выполнения оператора. Если условие в цикле пока является условием продолжения повторений, то условие в цикле до — условием выхода из цикла, его завершением. Поэтому для одной и той же задачи эти условия противоположны. Общий вид оператора:
repeat оператор until условие;
Между словами repeat (повторить) и until (до тех пор пока) можно записать любое количество операторов без использования операторных скобок. Перед словом until не ставится точка с запятой.
Программа нахождения наибольшего общего делителя примет вид:
program E7;
Var a, b: integer;
begin
write ('введите два натуральных числа');
readln (a, b);
repeat
if a > b then a: = a - b;
if b > a then b: = b - a
until a = b;
write ('НОД= ',а);
readln
end.
Операторы циклов пересчет. При выполнении программ нахождения наибольшего общего делителя число повторений различно для разных данных. Когда известно число повторений, удобно использовать цикл пересчет. В Паскале имеется два оператора для организации циклов пересчет: прямой и обратный. Прямой пересчет идет от известного меньшего числа до известного большего, на каждом шаге прибавляется единица (например, от 120 до 140: 121, 122, 123, ..., 139, 140). Оператор прямого пересчета:
for i: = n1 to n2 do оператор; читается как «для i начиная с n1 до п2 выполнить оператор».
102
Переменная i называется переменной цикла, она при прямом пересчете всегда меняется от меньшего значения до большего. При i = n1 цикл выполняется первый раз. Затем к значению переменной i добавляется единица и осуществляется проверка, не превысило ли полученное значение величину n2. Если i + 1 ≤ n2, то оператор выполняется, если нет, то происходит выход из цикла и выполнение следующего по порядку оператора программы. Поскольку оператор цикла for сам изменяет значение переменной цикла, ее нельзя менять другими способами, например присваиванием ей какого-либо значения в теле цикла (она не должна появиться слева от знака «: = »).
Оператор в цикле может быть простым или составным, заключенным в операторные скобки. Оператор пересчет работает как цикл до, поэтому надо быть внимательным, оператор в теле цикла выполнится всегда хотя бы один раз. Рассмотрим примеры использования операторов цикла.
1. Пусть надо вычислить аn. Известно, что для получения целой степени и числа его надо умножить само на себя и раз. Это произведение при выполнении программы будет храниться в ячейке с именем р. Каждый раз, при очередном выполнении цикла, из этой ячейки будет считываться предыдущий результат, домножаться на основание степени а и снова записываться в ячейку р. Основной оператор в теле цикла повторяется п раз и имеет вид:
р: = р * а;
При первом выполнении цикла в ячейке р должно находиться число, не влияющее на умножение, т. е. до цикла туда надо записать единицу.
Программа имеет вид:
Выполнение программы |
|
a=2 n=5 |
|
i |
Р |
|
1 |
1 |
2 |
2 |
4 |
3 |
8 |
4 |
16 |
5 |
32 |
103
program E8;