
- •Тема 2.2. Основные понятия языка программирования высокого уровня Free Pascal
- •Системы программирования
- •Интегрированная среда разработки FreePascal
- •Введение в язык Паскаль Характеристика языка программирования Паскаль
- •Основные понятия технологии программирования
- •Алфавит языка Паскаль
- •Структура программы на Паскале
- •Типы данных
- •Стандартные типы данных
- •Структуры данных
- •Строковый тип
- •Структурированные переменные
- •Представление основных структур программирования на языке Паскаль Операции и выражения
- •Арифметические операции и выражения
- •Логические операции
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Процедура write
- •Процедура ввода
- •Оператор выбора
- •Операторы повторений
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Метки и операторы перехода
- •Работа с массивами
- •Операции над строками
- •Функция Length
- •Функция Upcase
- •Функция Сopy
- •Функция Pos
- •Процедуры Insert и Delete
- •Процедура Str
- •Процедура val
- •Практические примеры работы со строковыми данными
- •Оператор присоединения with
- •Процедуры и функции Паскаля
- •Формальные и фактические параметры
- •Типизированные константы
- •Interface
- •Implementation
- •Interface
- •Interface
- •Implementation
- •Файловый тип данных Типизированные файлы
- •Текстовые файлы
Логические операции
Логические выражения имеют значение типа boolean, то есть true или false.
Выражение, служащее для вычисления логического значения, называется логическим выражением или логическим условием.
Одним из видов логического выражения является отношение. Отношение – это два выражения, соединенные операцией отношения. Например,
y < 0, a > b, x = y, x < a-b.
Операции отношения: > (больше), < (меньше), ≥ (больше или равно), ≤ (меньше или равно), = (равно), ≠ ( не равно) – на языке Паскаль записываются соответственно: >, <, >=, <=, =, <> и имеют более низкий приоритет по сравнению с арифметическими операциями. Иными словами, сначала выполняются арифметические операции, а потом операции отношения.
Условие
на языке Паскаль записывается так: a + b
<> c + d.
Высказывания о значениях переменных могут быть истинными или ложными в зависимости от самих значений переменных. Так, если s = 5, t = 6, то высказывание s>t – ложное, высказывание s < t + 12 – истинное.
Логические значения упорядочены. Выражение true > false является истинным.
Из простых высказываний в Паскале разрешается строить более сложные. Пусть А и В – некоторые высказывания, тогда А and В – это новое высказывание, утверждающее истинность обоих высказываний А и В; А or В – это новое высказывание, утверждающее истинность хотя бы одного из высказываний А и В. Если С – истинное высказывание, то not С – это новое высказывание, утверждающее, что С – ложное высказывание.
Операции над высказываниями (логические операции) and, or, not называются соответственно конъюнкцией, дизъюнкцией и отрицанием.
Следующие таблицы уточняют словесные объяснения.
Таблица 14. Логические операции
Таблица 15. Логическое отрицание
Пример:
1) a and b or c;
2) a and (b or c);
3) i <10;
4) (i<10) and (k<= 0).
При определении истинности высказывания, построенного из отношений с помощью знаков логических операций и круглых скобок, действуют следующие правила старшинства операций: самая старшая операция отрицание, следующая – конъюнкция, потом – дизъюнкция (см. табл. 5.4).
Первой из двух операций одного старшинства выполняется та, знак которой в выражении встречается раньше. Круглые скобки изменяют этот естественный порядок. Для высказывания
(x > y) or (y > z) and not ((x > 0) or (z > x))
устанавливается следующий порядок логических операций:
4 3 2 1
(x > y) or (y > z) and not ((x > 0) or (z > x))
При x = –1, z = –2, y = 1 результатом будет значение true.
(x > 0) – false, (z > x) – false;
(x > 0) or (z > x) – false;
not ((x > 0) or (z > x)) – true;
(x > y) – false, (y > z) – true;
(y > z) and not ((x > 0) or (z > x)) – true.
В конечном итоге false or true дает true.
Таблица 16.Приоритеты логических операций
Оператор присваивания
Отдельные инструкции, входящие в программу, принято называть операторами. В раздел операторов (исполняемой части) программы помещаются операторы, которые должны быть выполнены с определенными в описательной части данными.
Арифметическое выражение не является оператором, а представляет собой правило (формулу), в соответствии с которым может быть вычислено некоторое значение. Оно может использоваться как составная часть различных операторов, в частности, оператора присваивания.
Оператор присваивания является важнейшим оператором любого языка программирования. С его помощью можно присвоить переменной значение выражения. Выражение оценивается, то есть определяется его значение, и это значение присваивается переменной. В результате прежнее значение переменной перезаписывается, а поэтому старое значение утрачивается. Знаком присваивания в Паскале является совокупность знаков ( := ). Например, в операторе присваивания Y := (A * X + B) * X + C справа от знака := записано выражение (A * X + B) * X + C, а слева – переменная Y.
Пусть i = 1. После выполнения оператора присваивания i := i + 1, переменная i будет иметь значение 2.
При использовании оператора присваивания v:= e следует учитывать, что переменная v и выражение е должны иметь одинаковый тип. Имеется лишь одно исключение из этого правила: переменная может иметь тип real, а выражение значение типа integer.
Пример:
Пусть
var i, j : integer; x, y : real; a, b : char; p, q : boolean;
Следующие операторы присваивания верны:
p := i < 5;
a := ‘+’;
x := i + j mod 7;
y := 275;
y := x*(sqr(2));
Следующие операторы неверны, поскольку не учитывают типа:
i := 3.678;
b := ‘stroka’;
a := +;
Задача. Составить программу вычисления площади треугольника по трем сторонам a, b, c.
Алгоритм решения задачи представим в виде блок-схемы (см. рис. 1.2).
Программа на Паскале
program task1;
var a, b, c, p, s : real;
begin
readln(a, b, c);
p := (a + b + c)/2;
s := sqrt(p*(p –a) * (p – b)*(p – c));
write(s)
end.
Как уже говорилось ранее, совершенно не обязательно записывать каждый оператор на новой строке. Верной была бы и следующая запись:
program task1; var a, b, c, p, s : real; begin readln(a, b, c); p := (a + b + c)/2;
s := sqrt(p*(p –a) * (p – b)*(p – c)); write(s) end.
Важно, чтобы после каждого оператора стояла ; .
Прокомментируем каждый оператор программы.
program task1; |
Заголовок программы с именем программы task1. Еще раз напомним, что это не обязательный оператор, его может не быть. |
var a, b, c, p, s : real; |
Раздел описаний. Все переменные в Паскале должны быть описаны. a, b, c, p, s – это все переменные, которые встречаются в программе и все они вещественного типа. |
begin |
Оператором begin открывается основной блок программы – блок операторов. |
readln(a, b, c); |
Функция readln вводит численные значения переменных a, b, c. Идентификаторы этих переменных записываются в скобках и через запятую |
p := (a + b + c)/2; |
Оператор присваивания. Те численные значения, которое получили переменные a, b, c при вводе, суммируются; полученная сумма делится на 2; результат присваивается переменной с именем p. |
s:=sqrt(p*(p–a)*(p–b)*(p–c)); |
Оператор присваивания. |
write(s); |
Функция вывода. На экран дисплея выводится численное значение переменной s. |
end. |
Последний оператор программы. Закрывает раздел операторов. После последнего оператора end ставится точка. |
После того, как программа написана и для нее выбраны исходные данные, нужно, чтобы эта программа была выполнена. Программа вводится в оперативную память ЭВМ (например, с клавиатуры), дается команда на компиляцию и выполнение. Процессор выполняет программу. Оператор readln потребует ввода трех численных значений. Оператор write выведет численное значение переменной s.