- •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;
3.5. Организация циклов
В своей практической деятельности человек постоянно сталкивается с задачами, при решении которых требуется многократно повторять одни и те же действия. Для составления алгоритмов решения таких задач используются команды повторения (цикла).
Рассмотрим следующий пример. Пусть требуется определить остаток от деления числа М на число N (М и N — произвольные натуральные числа). Самый простой способ решения этой задачи заключается в следующем: проверяем, не меньше ли М, чем N (если М < N, то М и есть остаток от деления М на N); если М ≥ N, то уменьшаем значение М на значение N (т. е. вычитаем из М число N и дальнейшие действия осуществляем с результатом этой операции, который для удобства мы снова обозначим М); снова проверяем, не стало ли М меньше N, если не стало, то еще раз уменьшаем значение М на величину значения N и т. д.
Эти две операции (сравнения и вычитания) повторяются до тех пор, пока очередное значение М не станет меньше значения N. Значение М в этот момент и будет остатком от деления заданных вначале чисел.
Как видно, в этом примере несколько раз повторяется одна и та же последовательность действий.
Компьютер может заданное число раз выполнить одни и те же действия с разными данными. Повторяющиеся действия в программировании называются циклом. Если изобразить цикл в виде блок-схемы, то получатся две разные структуры (рис. 34). Цикл не может выполняться вечно, в этом случае нарушается свойство алгоритма решить задачу за конечное число шагов. Цикл заканчивается по какому-либо условию. Проверка этого условия может производиться в начале каждого повторяющегося шага, в этом случае цикл называется пока. При проверке условия в конце каждого шага цикл называется до. Разновидностью цикла до является цикл пересчет.
99
Цикл
до
Рис. 34. Циклические структуры
В цикле пока сначала проверяется условие, и если оно выполняется, т. е. логическое выражение истинно, то выполняется оператор и снова проверяется условие. Записанное в цикле пока условие является условием продолжения цикла. Как только оно перестанет выполняться, цикл завершится. На рисунке 34 выход из ромба «+» (или да) означает выполнение условия цикла, «—» (или нет) — невыполнение. Цикл пока не выполнится ни разу, если условие при входе в структуру оказалось ложным. Как правило, цикл пока содержит условие повторения, а цикл до — условие окончания работы цикла. Обе структуры имеют один вход и один выход. Однако цикл до всегда выполняется хотя бы один раз, потому что условие проверяется после выполнения действия. Это затрудняет проверку правильности программы, поэтому лучше использовать цикл пока. Оператор в цикле может быть простым или составным, заключенным в операторные скобки. В этом случае в цикле могут повторяться несколько операторов, а не один. Повторяющиеся в цикле операторы называются телом цикла.
Циклы можно организовывать, используя различные средства языка Паскаль.
Оператор безусловного перехода. Этот оператор позволяет перейти без проверки условия либо на один из предыдущих операторов, либо на один из последующих, т. е. изменить порядок выполнения команд. Общий вид оператора:
goto n;
где п — целое число, не более чем из четырех цифр, называемое меткой. Метка появляется в программе три раза: 1) в описательной части в разделе Label; 2) в операторе goto; 3) перед оператором, на который осуществляется безусловный переход, в этом случае метка от оператора отделяется двоеточием.
100
Организация циклов с помощью операторов условного и безусловного переходов. Пусть требуется вычислить наибольший общий делитель двух натуральных чисел А и В. Воспользуемся алгоритмом Евклида: будем уменьшать каждый раз большее из чисел на величину меньшего до тех пор, пока оба числа не станут равны.
Исходные данные |
Первый шаг |
Второй шаг |
Третий шаг |
НОД(А,В)=5 |
А=25 |
А=10 |
А=10 |
А=5 |
|
В=15 |
В=15 |
В=5 |
В=5 |
|
program E5;
label 1,2;