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

§ 6 Система типов языка Object Pascal

Object Pascal является языком строгой типизации. Это значит, что переменным, объявленным с некоторым конкретным типом, могут присваиваться значения только этого типа и, следовательно, выделяется необходимое количество памяти для их хранения и определены действия, выполняемые над ними. Количество стандартных типов Object Pascal больше, чем в TurboPascal, однако, между системами типов указанных языков нет противоречий. Кроме того, на основе стандартных типов пользователь имеет возможность создавать собственные типы. Для работы с числами используются две стандартных группы типов. Названия и характеристики некоторых числовых типов приведены в таблице 1.

Табл. 1

Тип

Диапазон

К-во цифр

Формат, к-во байт

ЦЕЛЫЕ

shortint

-127…128

Знаковый, 1

smallint

-32768…32767

Знаковый, 2

integer

-32768…32767

Знаковый, 2

longint

-2147483648…2147483647

Знаковый, 4

byte

0…255

Беззнаковый, 2

word

0…65535

Беззнаковый, 4

ВЕЩЕСТВЕННЫЕ

real

2.9*10-39 …1.7*10+38

11-12

6

single

1.5*10-45…3.4*10+38

7-8

4

double

5*10-324… 1.7*10+308

15-16

8

extended

3.4*10-4932… 1.1*10+4932

19-20

10

Значения целых типов в программе могут изображаться двумя способами: в десятичном виде и в шестнадцатеричном виде. В последнем случае цифры старше 9 обозначаются латинскими буквами от A до F, а перед числом ставится знак “$”. Пример $F1  241.

Действительные числа могут быть представлены двумя формами записи:

  1. 17.384 или 0.5 – с фиксированной точкой;

  1. 6Е-33.6х10-3 – с плавающей точкой.

Синтаксическая диаграмма вещественного числа с фиксированной или плавающей точкой

ВЕЩЕСТВЕННОЕ ЧИСЛО

ПОРЯДОК

Над целыми и вещественными значениями допустимы операции сравнения и следующие арифметические операции:

  1. 4 арифметические действия, имеющие привычный смысл и обозначаемые следующими символами:

    1. + сложение;

    2. - вычитание;

    3. * умножение;

    4. / деление;

  2. две дополнительные операции «типа деления», обозначаемые служебными словами:

    1. div деление нацело (с отбрасыванием дробной части);

    2. mod взятие остатка от целочисленного деления.

При применении к целым значениям все перечисленные операции (кроме деления) дают целый результат. Если хотя бы один операнд вещественный, результат всех перечисленных операций (кроме целочисленного деления) вещественный. Для выражения присваивания некоторой величине заданного значения используется символ «:=». Например, А:=5, В:=А, С:=А+В.

Язык программирования Object Pascal поддерживает три символьных типа ansichar, widechar и char. Типы ansichar и char используется для описания печатаемых и служебных символов, которые кодируются числами от 0 до 255. Символы типа widechar кодируются числами от 0 до 65535, причём первые 256 символов этого типа совпадают с символами ansichar и char.

Последовательности символов (символьные массивы), называемые строками, могут быть описаны с использованием какого-либо из трёх стандартных строковых типов shortstring, longstring, widestring. Тип shortstring представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов. Тип longstring представляет собой динамически размещаемые в памяти компьютера строки длина которых ограничена только объёмом свободной памяти. Тип widestring представляет собой динамически размещаемые в памяти компьютера строки длина которых ограничена только объёмом свободной памяти, однако, в отличие от строки типа longstring каждый символ кодируется 16 битами. Допускается для обозначения типа shortstring использование идентификатора string, который определён в языке TurboPascal. Для обозначения величин символьных и строковых типов используются символы или последовательности символов, заключённые между двух апострофов (‘x’ – символ, ‘xyz’ - строка). Пустая строка обозначается следующим образом ‘’. Если символ не имеет графического представления, его можно представить в виде решётки, за которой следует код нужного символа. Пример: #7 - подача звукового сигнала. Переход к новому параграфу в Windows имеет код 13.

Для символов и строк допускаются операции сравнения. Из двух сравниваемых символов большим считается тот, который имеет большее значение числового кода. Например, ‘1’<’2’; ‘5’>’4’; ‘a’<’b’; ‘d’>’c’. При сравнении строк в языке Pascal действуют следующие правила:

  1. Более короткая строка всегда меньше более длинной.

  2. Если длины сравниваемых строк равны, то происходит поэлементное сравнение символов этих строк слева направо по правилам сравнения символов.

Для строк, кроме того, допускается операция конкатенации, обозначаемая знаком «+». Смысл конкатенации заключается в формировании новой строки в виде строк-операндов, расположенных последовательно. В отличие от сложения чисел, порядок следования операндов влияет на результат конкатенации. Например, ‘город’ + ‘ Москва ’ ‘город Москва’, но ‘ Москва ’ + ‘город’ ‘Москва город’.

Булевский (логический) тип. В разделе описаний X, Y, Z: boolean;. Значения булевского типа (истина/ложь) обозначаются стандартными идентификаторами true(истина) и false(ложь) и занимают 1 байт памяти. Над значениями булевского типа допустимы операции сравнения, причём считается, что true > false. Кроме того, в Паскале имеются 4 стандартные логические операции, обозначаемые служебными словами:

  • Not (Not A = Ā;)– логическое отрицание;

  • And (A and B; ) – логическое умножение (конъюнкция);

  • Or (A or B;) – логическое сложение (дизъюнкция);

  • Xor (A xor B;)- исключающее «или» (сложение по модулю 2).

Операция

A

B

Результат

Not A

1 (true)

-

0 (false)

0 (false)

-

1 (true)

A and B

0 (false)

0 (false)

0 (false)

0 (false)

1 (true)

1 (true)

1 (true)

0 (false)

0 (false)

1 (true)

1 (true)

1 (true)

A or B

0 (false)

0 (false)

0 (false)

0 (false)

1 (true)

1 (true)

1 (true)

0 (false)

1 (true)

1 (true)

1 (true)

1 (true)

A хor B

0 (false)

0 (false)

0 (false)

0 (false)

1 (true)

1 (true)

1 (true)

0 (false)

1 (true)

1 (true)

1 (true)

0 (false)

Результатом каждой из логических операций является логическая величина. Для представления операций сравнения используются следующие символы:

= равно;

> больше;

< меньше;

>= больше или равно;

<= меньше или равно;

<> не равно.

Пример A<B+1; C<=’B’ X<>true.

В зависимости от типа используемых операций выражения могут быть арифметическими, логическими (булевскими), строковыми. Реальные выражения могут включать как арифметические операции, так и операции сравнения и логические операции. Приоритеты выполнения операций каждого типа следующие.

Not

* / Mod Div And

+ - Or

= < > <= >= <>

Чем выше строка, тем выше приоритет операции. Операции, стоящие в одной строке, имеют одинаковый приоритет и выполняются в порядке следования. Для изменения «естественного» порядка выполнения операций используются круглые скобки ().

Пример. Имеются 3 числа А, В, С. Проверить, можно ли построить треугольник, длины сторон которого равны указанным числам. Условия существования треугольника имеют вид A+B>C и A+C>B и C+B>A. Логические выражения, отражающие этот факт, будут иметь вид:

  1. (A+B>C) AND (A+C>B) AND (C+B>A)

  2. var A,B,C: real;

L1,L2,L3: boolean;

……………………

L1:=A+B>C;

L2:=A+C>B;

L3:=B+C>A;

L1 AND L2 AND L3; {выражение равно true , все три условия выполнены, и false, если не выполнено хотя бы одно из них}

……………………..

Выполнение операций в выражениях или операций сравнения требует, чтобы операнды имели совместимые типы. Типы совместимы, если выполняется хотя бы одно из следующих условий:

  • Два типа эквивалентны, т.е. имеют один и тот же идентификатор.

  • Оба типа являются либо целыми, либо вещественными.

  • Один тип является базовым типом второго или оба типа имеют один и тот же базовый тип.

Важный частный случай – совместимость типов двух величин, стоящих в левой и в правой частях оператора присваивания (совместимость по присваиванию).

  • Оба типа совместимыми дискретными или вещественными типами, и значения левой части попадают в диапазон возможных значений типа левой части.

  • Тип левой части является вещественным, а тип правой части – целым.

Если в операторе присваивания не выполняется ни одно из перечисленных условий, то на этапе компиляции будет выдано сообщение об ошибке.

Приведенная выше информация о системе типов языка Object Pascal, очевидно, не является исчерпывающей. Рассматривались только стандартные скалярные типы данных (за исключением строк), т.е. значения данных определяются единственной величиной. Однако, этой информации достаточно для описания переменных, которые будут использованы при решении простых задач на языке Object Pascal.

Задание: Получить у преподавателя 1-ю индивидуальную задачу и создать программу её решения. Ввод исходных данных и вывод результата выполнить с использованием окон ввода и окон редактирования.

Отчёт по данной работе должен включать перечень использованных визуальных компонентов, описание свойств компонентов, изменённых при создании формы или изменяемых в процессе выполнения программы, описание событий, изменяющих ход выполнения программы, описание использованных в программе констант и переменных (указать их типы и диапазоны изменения), распечатку процедуры обработки каждого из указанных событий.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]