- •Элементы языка pascal
- •1.1 Алфавит
- •1.2 Идентификаторы
- •1.3 Типы данных
- •1.4. Константы. Переменные
- •Структура Pascal-программы
- •Преобразование типов
- •Выражения. Операции
- •2. Операторы
- •2.1. Составной и пустой операторы
- •2.2. Условный оператор
- •2.3. Операторы повторений
- •2.4. Оператор выбора
- •2.5 Метки и операторы перехода
- •3. Массивы
- •Процедуры и функции
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
Преобразование типов
В Паскале преобразование типов следует использовать явно. Исключение сделано только в отношении констант и переменных целого типа, которые разрешается использовать в выражениях вещественного типа.
Var
X : integer;
Y : real;
То оператор Y:=X+2; будет синтаксически правильным.
В то же время оператор X:=2.0 будет неверным, т.к. преобразование вещественного типа в целый запрещено.
Для преобразования данных в языке предусмотрены встроенные функции, которые получают в качестве параметра значение одного типа а возвращают результат в виде значения другого типа. Как и процедура, функция вызывается своим именем и может содержать произвольное число операторов. Отличие функции от процедуры является то обстоятельство, что функция имеет собственное значение и, следовательно, может использоваться наравне с переменными в выражениях соответствующего типа.
Для преобразования вещественного типа в целый имеются две встроенные функции – Round, которая округляет вещественное до ближайшего целого и Trunc, усекает вещественное путем отбрасывания дробной части.
Для преобразования символьного типа в целое число предназначена функция Ord, обратное преобразование осуществляет функция Chr.
Program Code;
{Программа читает символ с клавиатуры и выводит на экран этот
символ и соответствующий ему внутренний код}
Var
Ch : char;
Begin
Write(‘Введите символ’);
ReadLn(Ch);
WriteLn(ch, ‘=’, ord(ch));
End.
Выражения. Операции
Из основных элементов из которых конструируется исполняемая часть программы (константы, переменные, обращения к функциям) с помощью знаков операций и скобок составляются выражения, которые фактически представляют собой правила получения новых значений.
Операции:
1. Арифметические операции над переменными целого и вещественного типа
+ сложение
- вычитание
* умножение
/ деление вещественное
div деление целочисленное (отбрасывание дробной части результата)
Для целого типа существует операция mod – получение остатка от целочисленного деления (5 mod 2)=1.
В Паскале отсутствует операция возведения в степень, однако это можно реализовать с помощью функции sqr, возвращающей квадрат от значения параметра.
При работе с целыми существуют две процедуры:
- Dec(x [,n]) – уменьшает содержимое переменной x на значение выражения n (если n не задано, то на 1).
- Inc(x [,n]) – увеличивает значение x на значение выражения n (если n не задано, то на 1).
2. Над символами и строками символов определена единственная операция – сцепление двух строк (+). Остальные действия реализуются с помощью процедур и функций.
3. Над данными целого, вещественного, символьного и строкового типа определены следующие операции отношения
= <> (не равно) < > <= >=
В операциях сравнения должны участвовать однотипные операнды. Исключение составляют целый и вещественный типы, которые могут сравниваться друг с другом. Результат применения операции отношения к любым операндам имеет логический тип.
Сравнение строк осуществляется следующим образом. Символы строк сравниваются попарно друг с другом так, что первый символ первой строки сравнивается с первым символом второй строки, второй символ первой строки со вторым символом второй строки и т.д. Символы сравниваются путем сравнения их кодов во внутреннем представлении. Отношение первой несовпадающей друг с другом пары символов и принимается за отношение двух строк.
При сравнении данных логического типа учитывается, что false есть нулевой байт, а true – байт с единицей в младшем разряде. Функция ord преобразует к целому не только символы, но и логические величины: ord(true)=1.
Операция отношения in применима к двум операндам. Левым операндом должно быть выражения целого, логического, символьного (перечисляемого, типа-диапазона) типа, правым – множество, состоящее из элементов того же типа, или идентификатор множественного типа. Операция даст результат истина, если левый операнд принадлежит множеству.
4. Логические операции
not – логическое НЕ
and – логическое И
or – логическое ИЛИ
xor – исключающее ИЛИ
Применимы к операндам целого и логического типа. Если операнды целого типа – результат целое число, биты которого (двоичные разряды) формируются из битов операндов по определенным правилам. Если операнды логические данные – результат логического типа.
К логическим операциям так же относят и две сдвиговые операции над целыми числами
i shl j – сдвиг содержимого i на j разрядов влево; освободившиеся младшие разряды заполняются нулями.
i shr j – сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.
5. Операция @ применяется к операнду любого типа и возвращает результат типа Pointer, в котором содержится адрес операнда.
При вычислении выражений приоритет вычислений определяется расставленными скобками, а при их отсутствии в порядке убывания приоритета.
Приоритет Операция
not, @
*, /, div, mod, and, shl, shr
+, -, or, xor
=, <>, >, >=, <, <=, in