Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Паскалю.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.06 Mб
Скачать

4.6. Константы и константные выражения

Константа – это идентификатор, отмечающий значение, которое не может изменяться.

В качестве расширения стандарта языка, в BP допускается использовать константные выражения. Константным называется такое выражение, которое может быть вычислено при компиляции и не зависит от исполняемого кода. Следующие стандартные функции можно также использовать в определении констант:

Abs

Length

Ord

Sizeof

Chr

Lo

Pred

Succ

Hi

Low

Ptr

Swap

high

Odd

Round

Trunc

Примеры определений констант:

const

Min = 0;

Max = 100;

Center = (Max - Min) div 2;

Beta = Chr(255);

NumChars = Ord('Z') - Ord('A') + 1;

Message = 'Out of memory';

ErrStr = 'Error:' + Message + '.';

Ln10 = 2.302585092994095684;

Numeric = ['0'..'9'];

Alpha = ['A'..'Z','a'..'z'];

Вопросы:

  1. Что называется именами (идентификаторами) в языке Паскаль? Каковы правила их использования?

  2. В чем разница между переменными и константами? Что делает компилятор, встретив описание переменной или константы в тексте программы?

  3. Какие типы данных существуют в языке Паскаль. В каком случае два типа являются эквивалентными?

  4. В каком случае типы данных являются совместимыми? Как можно обойти в BP ограничения на совместимость типов? Приведите примеры приведения типов.

  5. Использование каких типов зависит от наличия математического сопроцессора? С какими ключами необходимо компилировать программу при наличии и отсутствии сопроцессора?

5. Операторы и процедуры языка

Оператор – это законченная фраза языка, определяющая некоторый этап обработки данных. Операторы в программе отделяются друг от друга «.

Простой оператор – это оператор, в который не входят другие операторы, например, x:=0;

Составной оператор – это последовательность произвольных операторов программы, заключенная в операторные скобки Begin – End.

5.1. Поразрядные оператоpы. Логические оператоpы. Опеpатоpы отношения

Для действий над битами Паскаль имеет следующие поразрядные операторы:

shl(сдвиг влево) – сдвигает биты влево на указанное количество разрядов, заполняя остающиеся справа разряды нулями.

shr(сдвиг вправо) – сдвигает биты вправо на указанное количество разрядов, заполняя остающиеся слева разряды нулями.

and – выполняет логическое умножение and над каждой соответствующей парой бит, возвращая 1, если оба бита содержат 1, или 0 в обратном случае.

or – выполняет логическое сложение or над каждой соответствующей парой бит, возвращая 0, если оба бита содержат 0, или 1 в обратном случае.

xor – выполняет логическое сложение по модулю 2 над каждой соответствующей парой бит, возвращая 1, если биты отличны друг от друга, или 0 в противном случае.

not – выполняет операцию логического дополнения над каждым битом, изменяя 0 на 1 и обратно. Эти оператоpы позволяют выполнять действия на очень низком уровне с целочисленными значениями.

Program ExBit;

Var A,B : Byte;

Begin

A:=15;B:=5;

Writeln(A And B);Writeln(A Or B);

Writeln(B shl 1);Writeln(A shr (B-2));

Writeln(A xor B);Writeln(Not A); Readln;

End.

Приведенная программа выдаст на экран числа: 5, 15, 10, 1, 10 и 240.

Имеется четыре логических оператоpа – and, xor, or и not, которые, хотя они и аналогичны поразрядным оператоpам, но не тождественны им. Логические опеpатоpы pаботают с логическими значениями (True и False), позволяя комбинировать выражения отношения, булевы переменные и булевы выражения.

Они отличаются от соответствующих поразрядных оператоpов следующим образом:

Логические оператоpы всегда в качестве результата дают значение True или False (то есть булево значение), в то время как поразрядные оператоpы выполняют побитовые действия над целочисленными значениями.

Эти операции не позволяют комбинировать булевы и целочисленные выражения. Другими словами, выражение Flag and Indx недопустимо, если Flag имеет булев тип, а Indx целочисленный тип (и наоборот). По умолчанию логические оператоpы and и or pаботают по короткой схеме, а оператоpы xor и not – нет. Допустим, имеется выражение exp1 and exp2. Если exp1 имеет значение False, то выражение в целом также будет иметь значение False, поэтому exp2 никогда не вычисляется. Аналогичным образом, если дано выражение exp1 or exp2, то exp2 никогда не вычисляется, если exp1 имеет значение True.

Оператоpы отношения позволяют сравнивать два значения, возвращая в результате булево значение Тrue или False.

Пример:

program TestGreater;

var A,B : integer;

Test : boolean;

begin

Write('Введите два числа: ');

Readln(A,B);

Test := A > B;

Writeln('A больше B', Test);

end.

При выполнении программы будет напечатано True, если A больше В, или False, если A меньше или равно В.