§3.6. Диапазоны (интервальный тип)
Часто при описании переменных известно, что они будут принимать ограниченное множество значений, например часы, дни недели и др. Для облегчения восприятия программы и введения дополнительного контроля используются диапазоны, иначе интервальный тип.
Диапазоны можно задавать для любого простого, но дискретного типа. Дискретными или счетными типами являются такие, для которых можно указать два соседних значения, между которыми нельзя добавить еще одно. Например, для целого 1 и 2, для перечисляемого Sat и Sun и т. д. Единственным исключением здесь являются вещественные числа. В дальнейшем будет показано, что вещественные числа не могут использоваться в некоторых операторах и конструкциях языка Паскаль, в том числе и в диапазонах.
Для указания диапазона используются 2 точки:
Type C = '0'..'9';
Var Min,Sec:0..59;
Hour:0..23;
Так как диапазоны есть подмножества других типов, то для них определены и соответствующие операции.
Дополнительные типы в Delphi
В Delphi определен новый тип данных – денежный, описываемый словом Currency. Он аналогичен вещественному формату Comp, не имеющему дробной части. Здесь же добавлено 4 значащих цифры после запятой, то есть точность вычислений составляет 0.0001.
К логическому типу добавлено еще 3 разновидности для совместимости со стандартами Windows: ByteBool, WordBool, LongBool, с занимаемой памятью соответственно 1, 2 и 4 байта.
К символьному типу добавлены типы AnsiChar и WideChar. Первый полностью аналогичен Char, хотя в Windows и используется кодировка ANSI вместо АSСII. Второй же используется для хранения символов в кодировке UNICODE с размером таблицы 65 536 символов, поэтому под каждый символ выделяется 2 байта.
Контрольные вопросы -
Что такое тип переменной?
-
Что означает выражение «типизированный язык программирования»?
-
Перечислите служебные слова, которыми в Турбо-Паскале обозначаются целые типы со знаком, каков их размер?
-
Каков диапазон короткого целого со знаком?
-
Каков приблизительно диапазон стандартного целого со знаком?
-
Каков приблизительно диапазон длинного целого со знаком?
-
Перечислите служебные слова, которыми в Турбо-Паскале обозначаются целые типы без знака, каков их размер?
-
Каков диапазон беззнакового однобайтного целого?
-
Каков приблизительно диапазон беззнакового двухбайтного целого?
-
Что такое целая константа?
-
Какие системы счисления используются и как обозначаются в Турбо-Паскале?
-
Какие операции используются над целыми значениями?
-
Какие две операции предназначены только для целого типа данных?
-
Кроме арифметических, какие еще группы операций можно использовать над целыми данными?
-
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Real?
-
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Single?
-
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Double?
-
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Extended?
-
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Comp?
-
Как представляются константы с фиксированной точкой?
-
Как представляются константы с плавающей точкой?
-
Запишите три формы представления числа «двойка».
-
Какие операции используются над вещественными значениями?
-
Какое служебное слово используется для описания логических переменных?
-
Как записываются логические константы?
-
Перечислите четыре логические операции, используемые в Турбо-Паскале.
-
Как выполняются логические операции над целыми данными?
-
Перечислите операции отношения (сравнения).
-
Какой тип результата дают операции отношения?
-
Какое служебное слово используется для описания литерных (символьных) переменных?
-
Какая кодировочная таблица используется в Турбо-Паскале?
-
Как обычно записываются символьные константы, отображаемые на экране монитора?
-
Как записываются любые символьные константы?
-
Как записываются управляющие коды в виде литерных констант?
-
Какие операции можно выполнять над литерными данными?
-
В каких целях используется перечисляемый тип?
-
Как описываются значения перечисляемого типа?
-
Что такое свойство различимости для перечисляемого типа?
-
Что такое свойство упорядоченности для перечисляемого типа?
-
В каких целях используются диапазоны?
-
Что такое дискретный тип?
-
Какой простой тип нельзя использовать как базовый в диапазонах?
-
Какие операции допускается использовать для интервальных типов?
Выражения
В операторах широко используются выражения.
Выражение – это совокупность переменных, констант и функций, соединенных знаками операций.
Так как операций в выражении может быть несколько, то все эти операции разбиты по приоритетам (табл. 4.1), причем операции, имеющие более высокий приоритет, выполняются в первую очередь.
Таблица 4.1. Распределение операций по приоритетам
Приоритет
|
Операция
|
1 (высший)
|
( ) – выражение в скобках
|
2
|
Унарные операции:
NOT – логическая инверсия,
- «минус» – смена знака,
@ – взятие адреса.
|
3
|
* – арифметическое умножение,
/ – арифметическое деление,
DIV – целочисленное деление,
MOD – остаток от целочисленного деления,
AND – логическое умножение.
|
4
|
+ – арифметическое сложение,
- – арифметическое вычитание,
OR – логическое сложение,
XOR – логическое сложение по модулю 2.
|
5 (низший)
|
IN – проверка принадлежности множеству.
Операции отношения:
> – больше,
< – меньше,
= – равно,
<> – не равно,
>= – больше или равно,
<= – меньше или равно.
|
То есть, если необходимо, например, записать выражение , то запись вида a+b/c+d будет неправильна. С помощью скобок необходимо расставить приоритеты выполнения операций: (a+b)/(c+d).
При вычислении выражений часто приходится использовать алгебраические, тригонометрические и другие функции. Язык Паскаль содержит относительно небольшое число стандартных функций, делящихся по типам используемых операндов и получаемых результатов, а так же функции преобразования.
Следующие математические функции могут работать как с целым, так и с вещественным аргументом, тип получаемого результата соответствует типу аргумента:
Abs(x) – модуль числа х;
Sqr(x) – квадрат.
Функции с вещественным результатом:
Sin(x) – синус;
Cos(x) – косинус;
Arctan(x) – арктангенс;
Exp(x) – экспонента;
Ln(x) – натуральный логарифм;
Sqrt(x) – корень квадратный;
Frac(x) – дробная часть вещественного числа;
Int(x) – целая часть вещественного числа.
Функции с целым результатом:
Random(x) – случайное число от 0 до х;
Trunc(x) – округление с отбрасыванием дробной части;
Round(x) – округление по правилам арифметики.
Odd(x) с целым аргументом дает логический результат: True, если х нечетно.
Для работы с символьными значениями используются функции:
Chr(x) – возвращает символ, соответствующий ASCII-коду числа х;
Ord(x) – возвращает число, соответствующее символу х в ASCII-таблице;
UpCase(x) – преобразует латинские строчные буквы в прописные.
Функции для дискретных типов:
Ord(x) – порядковый номер числа х;
Pred(x) – предыдущий элемент;
Succ(x) – следующий элемент.
Достарыңызбен бөлісу: |