Обработка данных. Простейшие
логические выражения и циклы.
Логическими принято называть такие
операторы или их сочетания, в результате
работы которых вырабатываются указания о
выполнении или невыполнении каких-либо
операций.
В Pascal используются следующие
конструкции:
If <условие> Then
Begin
[Oператоры, работающие при выполнении
условия]
End
Else
Begin
[Операторы, работающие при не выполнении
условия]
End;
Примеры:
Задача: ввести 3 целых числа и выдать
на печать наибольшее из них.
Program Prim1;
Var a,b,c,max : Integer;
Begin
Write ('введите через пробел 3 целых числа'); ReadLn(a,b,c);
If(a>=b) and (a>=c) Then max:=a;
If(b>=a) and (b>=c) Then max:=b;
If(c>=a) and (c>=b) Then max:=c;
WriteLn('Max=',max);
End.
Задача 2; значения функции
вычисляются для положительных аргументов
по формуле y = x1/2 / sin(x),
а для отрицательных - по формуле y = cos(x1/2).
Найти значение функции при аргументе,
введенном с клавиатуры.
Program Prim2;
Var x,sx,y : Real;
Begin
Write('введите X='); ReadLn(x);
If x>0 Then
Begin
sx:=Sqr(x);
v:=sx/Sin(x);
End
Else y:=Cos(Sqr(x));
WriteLn('Y(',x,')=',y);
End;
End.
Другой конструкцией проверки условий
является оператор While.
While<условие>) Do
Begin
<Операторы>
End;
Этот оператор создаёт специфичную
структуру, в которой выполняется проверка
заданных условий, и, пока эти условия
выполняются структура работает. После
первого невыполнения условий работа
структуры завершается.
В качестве примера рассмотрим следующую
задачу.
Переменная xxx изменяется от
начального значения с шагом 0.1 до тех пор
пока не удвоится экспонента этой
переменной.
Program Prim3;
Var xxx,v: Real;
Begin
Write('Значение аргумента='); ReadLn(xxx);
v:=Exp(xxx);
While (Exp(xxx)<=2*v) Do{ Пока e*^xxx<2*v - выполнять}
xxx:=xxx+0.1;
WriteLn('Удвоение произошло при аргументе
=',xxx:10:3);
End.
Рассмотрим ещё одну задачу - задачу поиска
делителей целого
Program Wariant1;{Программа с
разветвлениями и циклами}
Uses Crt; {Подключение библиотеки CRT}
Var a,b,c,d,e : Integer; {При работе с длинными числами
заменить на Longint}
Begin
ClrScr; {Процедура очистки экрана}
{Эта процедура позволяет начать работу
программы "с чистого листа", то есть
при запуске программы на выполнение - перед
Вами появится чистый экран}
d:=0
Write('введите целое положительное число'); ReadLn(a);
b:=1; e:=a;
{первый способ с использованием repeat-until}
Repeat {Начало цикла с постусловием}
b:=b+1, c:=a mod b;
if c=0 Then
Begin
d:=d+1;WriteLn ('Число',b,'делитель числа',e);
End;
Until(b>a-2); {Конец цикла, пока b>a-2-выполнять}
If d=0 Then WriteLn('Число',a,'-простое');
ReadLn; WriteLn('Конец 1-го способа'); WriteLn;
{Второй способ - с использованием
конструкции While...Do}
d:=0; b:=1;
While b меньше a-2 Do {Начало
цикла с предусловием}
Begin
b:=b+1; WriteLn('Число',b,'- делитель числа',а)
End;
If d=0 WriteLn('Число',a,'-простое');
d:=o;
For e:=2 to a-2 Do
ReadLn; WriteLn('Конец 3-его способа'); ReadIn;
End.
В представленной программе кроме
операторов, описанных ранее представлена
новая конструкция.
For переменная:=[нижняя граница] to [верхняя
граница] Do
Begin
<операторы>
End;
Это классическое представление
циклического процесса, где целочисленная
переменная приобретает последовательный
ряд значений, с которыми выполняются
определённые наборы действий. Если
изменения этой переменной происходят с
убыванием, то вместо слова to
следует подставить DownTo.
содержание