- •1. Введение
- •2. Операторы языка
- •Var Описание переменных;
- •3. Организация ветвлений
- •4. Логические функции
- •5. Организация циклов
- •Оператор цикла с предусловием имеет вид
- •Var I,j:integer; X,y,r:real;
- •Program p5_8;
- •Var y,X,z: integer;
- •6. Массивы
- •Var I,j: integer;
- •Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
- •Var I,j,n,m: integer;
- •X:array [1..10] of integer;
- •Var n,I,j,st,kl,k:integer;
- •7. Символьные данные
- •Var n:integer;y:string;
- •Var X:string[1]; d:string; I:integer;
- •8. Записи
- •Var X:vr; y:array [1..5] of vr;
- •9. Файлы
- •Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:
- •10. Подпрограммы
- •11. Графика
- •Var d,I,m,rx,ry:integer;
- •Initgraph(d,m,''); {переход в графику}
- •Var d,m,rx,ry:integer;
- •X,y,xn,xk,ymin,ymax,dx:real; msy,msx:real;
4. Логические функции
Функция одного аргумента НЕ (NOT) истинна тогда, когда ложен ее аргумент (значение функции обратно аргументу). Поведение функции полностью описывает таблица. Например, следующие два оператора полностью идентичны
if x<10 then y=5 if not (x>=10) then y=5
|
аргумент |
функция НЕ |
|
1-й аргумент |
2-й аргумент |
функция И |
функция ИЛИ |
|
Ложь |
Истина |
|
Ложь |
Ложь |
Ложь |
Ложь |
|
Истина |
Ложь |
|
Ложь |
Истина |
Ложь |
Истина |
|
|
|
|
Истина |
Ложь |
Ложь |
Истина |
|
|
|
|
Истина |
Истина |
Истина |
Истина |
Л
огические
операции имеют приоритет перед операциями
отношения, поэтому, если таких условий
несколько, последние берутся в скобки.
В качестве примера снова рассмотрим
задачу 3-2. Решение будет очень компактным
(вспомогательные операторы опущены):
readln(a,b,c);
if (a+b>=c) and (b*b>a) then writeln('верно') else writeln('неверно');
Пример. Для чисел А,В,С выяснить, правда ли что первое число самое большое, а последнее – самое маленькое.
if (a>b) and (a>c) and (c<a) and (c<b) then writeln('верно') else writeln('неверно');
Еще. Верно ли, что среди чисел есть отрицательные.
if (a<0) or (b<0) or (c<0) then ...
Еще. Верно ли, что среди чисел ровно одно меньше нуля.
if (a<0) and (b>0) and (c>0) or (a>0) and (b<1) and (c>0) or (a>0) and (b>0) and (c<0) then ...
В этом решении перебираются все возможные, интересующие нас, комбинации переменных. Иногда проще (см. справа) воспользоваться косвенным способом, например, увеличивать вспомогательную переменную Х, каждый раз, когда встречается число меньше нуля. Если в конце окажется, что Х=1 значит, имеется ровно одно число меньшее нуля.
Задание. Имеются числа a,b,c. Вывести их в порядке возрастания.
Задание. Выяснить, правда ли, что среди чисел a,b,c,d имеется хотя бы одно отрицательное и одно положительное.
Задание. Выяснить, правда ли, что среди a,b,c,d имеется в точности одно отрицательное и одно нулевое числа.
О
CASE
выражение OF
константа1:
оператор1;
константа2:
оператор2;
. . .
ELSE
операторN;
END;
Задача 4-1. Пусть требуется по числу прожитых лет Т отнести человека к какой-то возрастной группе. Решение очевидно, но нуждается в одном пояснении. Поскольку женщины и мужчины уходят на пенсию в разное время (55 и 60 лет), кроме возраста нужно учитывать и пол Р.


да
начало
нет
Y=X/2
печать Y
ввод Х
конец
да
Рис.
5-1б Рис.5-1а
Задача 4-2. Положим, введен какой-то знак в переменную S и его нужно отнести к соответствующей группе. Следует сказать, что латинские символы в символьной таблице ПК находятся не вместе. Подряд идут буквы с А по Z, затем идут не буквы, затем буквы с а по z. В виду этого пришлось указать два диапазона констант ('A'..'Z','a'..'z'). Символы русского алфавита состоят из еще большего числа диапазонов (см. раздел ‘Символьные данные’).
Задание. Написать программу, в которой вводятся два числа-операнда Х и Y и знак операции Z (+,–,/,*). Вычислить результат S в зависимости от знака. Предусмотреть реакции на возможный неверный знак операции, а также на ввод Y=0 при делении.
