
- •1.2. Понятие алгоритма. Словесное задание алгоритмов
- •III. Тело алгоритма.
- •1.3. Типы алгоритмов. Операция присваивания
- •1.4. Графическое задание алгоритмов. Блок-схемы. Исполнение алгоритмов
- •2. Структурное программирование. Общие сведения по алгоритмическому языку паскаль и его среде разработки
- •2.1. Предпосылки появления и основные принципы структурного программирования
- •2.2. Язык программирования Турбо Паскаль. Единая интегрированная среда разработчика Turbo Pascal 7.0 (tp 7.0), структура ее диалогового окна и основные команды
- •2.3. Компилятор языка Паскаль Free Pascal ( fpc). Среда разработки Free Pascal ide
- •3. Основные элементы языка Паскаль. Алфавит. Идентификаторы. Типы данных. Выражения. Операции. Отношения. Математические функции в языке Паскаль
- •3.1. Синтаксис и семантика в описании алгоритмического языка. Алфавит языка Турбо-Паскаль
- •3.2. Элементарные конструкции языка Паскаль
- •3.3. Общая структура типов данных. Простые типы в языке Паскаль
- •3.4. Выражения, математические, логические операции, отношения, математические функции в языке Паскаль
- •3.5. Память пк, сегментная адресация, динамическая память
- •3.6. Указатели и динамические переменные
- •3.6.1. Виды указателей и их описание
- •3.6.2. Действия с указателями
- •3.6.3. Выделение и освобождение динамической памяти
3.4. Выражения, математические, логические операции, отношения, математические функции в языке Паскаль
Выражение задает правило вычисления некоторого значения. Каждое выражение состоит из констант, переменных, указателей функций, знаков операций и скобок.
Рассмотрим выполнение математических действий. В таблице 3.2 приведены основные математические операции языка Паскаль.
Таблица 3.2. Основные математические операции языка Паскаль.
Символ операции |
Название операции |
Пример |
* |
умножение |
2*3 (результат: 6) |
/ |
деление |
30/2 (результат: 1.5E+01) |
+ |
сложение |
2+3 (результат: 5) |
- |
вычитание |
5-3 (результат: 2) |
div |
целочисленное деление |
5 div 2 (результат: 2) |
mod |
остаток от деления |
5 mod 2 (результат: 1) |
В языке Паскаль определены следующие логические операции:
- NOT - логическое отрицание ("НЕ")
- AND - логическое умножение ("И")
- OR - логическое сложение ("ИЛИ")
- XOR - логическое "Исключающее ИЛИ" (сложение по модулю 2).
Таблице истинности логических операций приведены в таблице 3.3. Результаты выполнения этих операций над переменными А и В логического типа.
Таблица 3.3. Таблица истинности логических операций
A |
B |
not A |
A and B |
A or B |
A xor B |
true |
true |
false |
true |
true |
false |
true |
false |
|
false |
true |
true |
false |
true |
true |
false |
true |
true |
false |
false |
|
false |
false |
false |
В языке Паскаль приняты следующие отношения между величинами:
> - больше;
< - меньше;
= - равно;
<> - не равно;
>= - больше или равно;
<= - меньше или равно.
В операциях отношения могут принимать участие не только числа, но и символы, строки, множества и указатели.
Приоритетом операций называют порядок их выполнения в выражениях в тех случаях, когда иной порядок не задан скобками, имеющими наивысший приоритет. В языке Паскаль заданы следующие приоритеты операций:
- унарная операция not, унарный минус -, взятие адреса @;
- операции типа умножения: * / div mod and;
- операции типа сложения: + - or xor ;
- операции отношения: = <> < > <= >= in.
Равные по силе (имеющие одинаковый приоритет) операции, как и в математике, выполняются в порядке слева направо.
Для изменения порядка выполнения операций, задаваемого их приоритетом, используют скобки. Например, результат выполнения выражения 2*5+10 равен 20, а у выражения 2*(5+10) результат равен 30.
Рассмотрим основные математические функции языка Паскаль, встроенные в его системную библиотеку (Таблица 3.4).
Таблица 3.4. Встроенные математические функции языка Pascal
Математическая запись |
Запись на Pascal |
Назначение |
cos x |
cos(x) |
Косинус x радиан |
sin x |
sin(x) |
Синус x радиан |
ex |
exp(x) |
Значение e в степени x |
[x] |
trunc(x) |
Целая часть числа x. Результат имеет тип longint |
|x| |
abs(x) |
Модуль числа x |
x2 |
sqr(x) |
Квадрат числа x |
|
sqrt(x) |
Квадратный корень из x |
{x} |
frac(x) |
Дробная часть x |
arctg x |
arctan(x) |
Арктангенс числа x |
ln x |
ln(x) |
Натуральный логарифм x |
|
Pi |
Число |
[x] |
int(x) |
Целая часть числа x. Результат имеет тип real |
|
round(x)
|
Функция округляет число x. Результат имеет тип longint |
|
random(x)
|
Функция возвращает случайное целое число в диапазоне [0;X]. Если аргумент опущен, то возвращается случайное вещественное число от 0 до 1. |
x+y |
inc(x,y) |
Функция увеличивает значение числа x на y. Если число y не указано, то увеличение происходит на 1 |
x-y |
dec(x,y) |
Функция уменьшает значение числа x на y. Если число y не указано, то уменьшение происходит на 1 |
Среди встроенных функций отсутствуют тригонометрические тангенс и котангенс нет. Для их вычисления необходимо использовать определения через синус и косинус: tg(x) = sin(x)/cos(x); ctg(x) = cos(x)/sin(x).
Из обратных тригонометрических функций в Паскале есть только arctg(x). В случае необходимости все остальные обратные функции необходимо выражать через него, используя общепринятые зависимости:
Функции возведения в произвольную степень в Паскале нет. Для получения целочисленных степеней можно использовать многократное умножение, для возведения в вещественную степень можно использовать функции Exp, Ln.
Перед использованием random в программах рекомендуется сначала инициализировать генератор псевдослучайных чисел процедурой Randomize. В противном случае при каждом запуске программы будет генерироваться одна и та же последовательность случайных чисел.
Пример. Вывод на экран 5 случайных чисел в диапазоне -10..10.
var i: integer;
begin
randomize;
for i:=1 to 5 do writeln(random(21)-10);
end.
Вопросы для проверки знаний.
1. Найти с учетом приоритетов операций значения арифметических выражений:
а) 30/6 div 2; б) 28 mod 12-24/3; в) 65 div 12/3.
2. Какие логические операции есть в языке Паскаль?
3. Найти значения логических условий:
а)NOT (5 <=3) AND (2 <= 2); б)V1 OR V2 AND NOT (V1) при V1=false; V2= true.
4. Как найти в языке Паскаль значение обратной тригонометрической функции:
а) arcsin(x), если известно, что yгол x лежит на сегменте [;1,5]?
б) arccos(x), если известно, что yгол x лежит на сегменте [0,5;]?