- •Введение в object pascal
- •Лекция 1. Интегрированная Среда и Состав языка Object Pascal
- •1.1 Работа с окнами
- •1.2 Редактирование в Object Pascal
- •1.3 Команды меню
- •1.4 «Горячие» клавиши в Object Pascal
- •1.5 Состав языка
- •1.5.1 Алфавит и ключевые слова
- •1.5.2 Идентификаторы
- •1.5.3 Знаки операций, разделители, выражения и операторы
- •Лекция 2. Описательная часть программы
- •2.1 Структура программы
- •2.2 Описание констант
- •2.3 Описание и использование меток
- •2.4 Комментарии
- •Лекция 3. Описание переменных
- •3.1 Структура раздела описания переменных
- •3.2 Классификация типов данных
- •3.2.1 Целочисленные типы
- •3.2.2 Логический тип
- •3.2.3 Символьный тип
- •3.2.4 Вещественные типы
- •3.3 Описание типов пользователя
- •Лекция4. Выражения
- •4.1 Порядок выполнения операций
- •4.2 Выражения целого типа
- •4.3 Вещественные выражения
- •4.4 Логические выражения
- •Лекция 5. Программы Линейной структуры
- •5.1 Операторы ввода (Read, Readln)
- •5.2 Операторы вывода (Write, Writeln)
- •5.2.1 Форматирование численных значений
- •5.2.2 Вывод строковых, символьных и логических значений
- •5.2.3 Вывод вещественных значений в экспоненциальном формате
- •5.2.4 Расположение данного в поле вывода. Примеры
- •5.3 Оператор присваивания
- •5.4 Составной оператор
- •5.5 Стандартные процедуры и функции
- •5.5.1 Понятие процедуры и функции
- •5.5.2 Описание некоторых стандартных процедур и функций
- •5.5.3 Примеры программ линейной структуры
- •Лекция 6. Операторы ветвления (выбора)
- •6.1 Оператор ветвления if
- •6.2 Оператор множественного выбора (варианта) - case
- •Лекция 7. Операторы организации циклов
- •7.1 Цикл типа for
- •7.1.1 Прямая форма оператора for
- •7.1.2 Обратная форма оператора for
- •7.1.3 Советы для начинающих и примеры
- •7.2 Цикл типа While
- •7.3 Цикл типа Repeat... Until
- •7.4 Дополнительные операторы при программировании циклов
- •7.4.1 Досрочный выход из цикла - break
- •7.4.2 Переход к следующей итерации цикла - continue
- •Лекция 8. Массивы
- •8.1 Одномерные массивы
- •8.2 Сортировка одномерного массива
- •8.3 Массивы с большей размерностью
- •8.4 Констант-массивы
- •8.5 Генератор случайных чисел
- •8.5.1 Описание функции Random
- •8.5.2 Применение случайных чисел при работе с массивами
- •Лекция 9. Строки
- •9.1 Строковый тип
- •9.2 Операции над строками
- •Лекция 10. Записи и множества
- •10.1 Запись
- •10.2 Множества
- •11 Пользовательские процедуры и функции
- •11.1 Описание функции и процедуры
- •11.2 Понятие формальных и фактических параметров
- •11.3 Способы передачи параметров в подпрограмму через заголовок
- •11.4 Область видимости идентификаторов
- •12 Файлы
- •12.1 Основные понятия
- •12.2 Типизированные файлы
- •12.3 Текстовые файлы
Лекция4. Выражения
4.1 Порядок выполнения операций
Запись, содержащая константы, переменные, обращения к функциям и знаки операций, называется выражением. При этом константы, переменные и обращения к функциям обозначают общим словом операнд. В зависимости от типа операндов, от используемых операций и функций значения выражений различаются по типам.
Для нас важно выделить целые, вещественные, логические, символьные и строковые выражения, которые приходится чаще всего использовать в программах.
Порядок выполнения операций определяется их старшинством, или приоритетом. Ниже в таблице 4.1 приведены приоритеты операций. Первый уровень приоритетов является наивысшим, а четвёртый – низшим.
Таблица 4.1. Приоритет операций
-
Операция
Приоритет
Обращение к функции f(∙)
Первый
not
Второй
*, /, div, mod, and, shl, shr
Третий
+, -, or, xor
Четвёртый
=, <>, <, >, <=, >=, in
Пятый
При определении порядка выполнения операций следует учитывать следующее:
операнд, находящийся между двумя операциями с различными приоритетами, относится к операции, имеющей более высокий приоритет;
операнд, находящийся между двумя операциями с равными приоритетами, относится к той операции, которая находится слева от него;
выражение, заключенное в скобки, перед использованием вычисляется как отдельный операнд;
любая операция внутри скобок производится раньше операции за скобками;
операции с равным приоритетом выполняются слева направо, если этот порядок не изменён с помощью круглых скобок.
4.2 Выражения целого типа
В целых выражениях допускаются следующие операции:
+ - сложение;
- - вычитание;
* - умножение;
div - целочисленное деление;
mod - остаток от целочисленного деления величины a на b:
a mod b = a - ((a div b) * b).
Примеры (использование операций mod и div):
t:=5 div 2; { t =2 }
z := 5 mod 2; { z = 1 }
В выражениях целого типа операнды могут быть только целого типа: целые значения, целые константы и переменные, функции, имеющие целые значения и т. д. Для указания порядка выполнения операций в выражениях допускается использование круглых скобок.
Примеры (выражения):
(а + b)*с - m div 3
c*2 + k*k-3*a
((а + b) mod (d * f)) * 12
При составлении выражений следует руководствоваться вышеуказанными правилами. Однако, если вы сомневаетесь в порядке выполнении операций, то используйте скобки. Трудно ошибиться, используя лишние скобки, но отсутствие скобок очень часто приводит к ошибкам.
4.3 Вещественные выражения
В выражениях вещественного типа допускаются следующие операции:
+ - сложение;
- - вычитание;
* - умножение;
/ - деление.
Наряду с вещественными операндами в вещественных выражениях могут использоваться операнды целого типа.
Необходимо отметить, что операция возведения в степень в Object Pascal отсутствует, но для вещественных выражений эта проблема легко решается, если воспользоваться свойствами функций Exp (экспонента) и Ln (натуральный логарифм). Из математики известны тождества:
и
Отсюда следует, что
.
Для вычисления логарифмов по другим основаниям можно применять формулу:
.
Здесь a > 0 и a ≠ 1. Приведём пример. Пусть мы имеем математическое выражение:
.
Средствами языка Object Pascal это выражение следует записать так:
(x*x-a)/(sqr(sin(x)/cos(x))-sin(x)*sin(x)*sin(x))*exp(-b*b/x) -
exp((x*x-b)*ln(a))*(b-x)/(a-x*x*x).
Хотя вещественный тип относится к скалярным, но на переменные и выражения данного типа накладываются некоторые ограничения. В частности, к вещественным аргументам нельзя применить функции порядка Pred и Succ. Нельзя использовать вещественные значения при индексации массивов, в качестве параметра цикла типа for и т. п.