Лекция 2
Типы вычислительных процессов
Существует три типа вычислительных процессов:
· следования;
· ветвления;
· циклы.
Следования
Процессы, в которых действия выполняются строго в том порядке, в каком записаны, называются следованиями (линейными). Естественный ход вычислений не нарушается.
Рассмотрим пример линейной структуры.
Задача:
Даны два целых числа. Найти их полусумму и произведение.
23 16
рrogram primer;
Uses
crt;
var a, b, p: integer;
s: real;
Begin
сlrscr; {оператор очистки экрана}
writeln (’ введите a, b ’); {вывод сообщения на экран}
readln (a, b); {ввод данных с клавиатуры }
s: = (a + b)/2;
p: = a*b;
writeln (’ s = ’, x:8:3, ’ ’, ’p = ’, y:4); {вывод результатов вычисления}
End.
Ветвления
Очень часто встречаются ситуации, когда требуется выбрать между двумя или более вариантами действий в зависимости от заданного условия. Такая алгоритмическая конструкция называется ветвлением.
Операторы условия и перехода
Строки программы на Паскале не нумеруются. Отдельные строки в программе могут иметь метки, к которым можно переходить.
Метки должны быть описаны в программы с помощью ключевого слова
Label
N1, N2 …;
Где N1, N2, … - метки.
Метками могут быть идентификаторы или целые числа (положительные) в диапазоне 0 9999.
Оператор перехода по метке:
go to N;
Где N - метка.
Фрагмент программы с использованием меток:
program pr;
label 3;
Var
x, y: real;
Begin
3: readln (x, y);
...
go to 3;
...
End.
Логический оператор
if < условия > then P1 [else P2 ];
(если) (то) (иначе)
[ else P2 ] - не обязательная часть оператора.
Где <условие> - логическое выражение;
P1, P2 - простые или составные операторы.
По этому оператору:
если <условие> - "истинно" (true), то выполняется P1, если - " ложно" (false), то выполняется P2. Перед структурой else «;» - не ставится.
Если else - отсутствует и <условие> - "ложно", то управление передается следующему оператору.
Приведем примеры использования оператора:
1. наибольшее из значений двух переменных вывести на печать:
if a>b then writeln(‘a=’,a)else writeln(‘ b=’,b);
2. в зависимости от значения переменной, вычислить значение функции по одной из формул:
If x>=0 then y:= sin(x) else y:= - sin(x);
3. в зависимости от значения переменной, выполнить определенные действия:
if a<0 then
Begin
b:=2*a;
writeln(b);
End
Else
Begin
b:=a/2;
goto 3;
end;
Операции отношения
Операция | Название |
= | Равно |
<> | Не равно |
> | Больше |
< | Меньше |
>= | Больше или равно |
<= | Меньше или равно |
Логические операции
Операция | Название |
and | И |
or | Или |
not | Не |
В операторе if можно одновременно проверять несколько условий.
Например:
if (a>b)and(a>c) then writeln(’a - max’);
При проверке нескольких условий в одном операторе, каждое условие записывается в скобках.
Паскаль допускает вложенность операторов if.
Например:
if n>0 then
if (m div n)>n then m: = m - n
else m: = m + n;
Структура else - всегда относится к ближайшему оператору if.
Если n>0 и (m div n)>n - будет выполнено m: = m-n.
Если n>0, но (m div n) n - будет выполнено m: = m + n.
Если n 0 - переход к следующему оператору.
Задача.
Найти максимальное число из трех вещественных чисел.
program max;
Var
a, b, c: real;
Begin
writeln (’введите a, b, c’); readln (a, b, c);
if a>=b then
if a>=c then writeln (’max - a’)
Else writeln (’max - c’)
else
if b>=c then writeln (’max - b’)
else writeln (’max - c’);
readln;
End.
Оператор выбора.
Этот оператор предназначен для замены конструкций из вложенных if.
Структура:
Case N of
N1: P1;
N2: P2;
NN: PN;
[else P;]
end;
[else P;] - необязательная часть оператора.
где N - целочисленная переменная, или выражение целого типа;
N1, N2, … NN - возможные значения переменной N;
P, P1, P2, … PN - простые или составные операторы.
По этому оператору:
если значение N = N1, то выполняется P1 (после чего управление передается оператору, следующему за оператором case...of);
если значение N = N2, то выполняется P2, (после чего управление передается оператору, следующему за оператором case...of);
…
если N не принимает ни одного из перечисленных значений, управление передается оператору P;
если структура else - отсутствует и N - не принимает ни одного из перечисленных значений, управление передается следующему за
case...of оператору.
Например:
Case N of
1, 2, 5: writeln (’a’);
7.. 10: writeln (’b’);
end;
1, 2, 5 - перечисляемые значения разделяются «, ».
7.. 10 - интервал задается начальными и конечными значениями через «..».
Циклические вычислительные процессы
Процессы, в которых ряд действий повторяются многократно по одним
и тем же математическим зависимостям, называются циклическими.
При организации циклов необходимо:
определить параметр цикла и его начальное значение;
изменять значение параметра цикла на каждом шаге итерации;
организовать проверку на выход из цикла.
На языке Паскаль существует три оператора цикла:
· оператор цикла с параметром;
· оператор цикла с предусловием;
· оператор цикла с постусловием.