Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
паскаль. Краткая инструкция.docx
Скачиваний:
7
Добавлен:
11.09.2019
Размер:
82.78 Кб
Скачать

Общая структура программы.

Program {заголовок программы}

($...) {глобальные директивы компилятора}

USES {подключение библиотек}

LABEL {объявление глобальных меток}

CONST {объявление глобальных констант}

TYPE {объявление глобальных типов}

VAR {объявление глобальных переменных}

Типы данных

Целочисленные:

Тип

Диапазон

Формат

Размер в байтах

Byte

0..255

Беззнаковый

1

ShortInt

−128..127

Знаковый

1

SmallInt

-32768..32767

Знаковый

2

Word

0..65535

Беззнаковый

2

Integer

-32768..32767

Знаковый

2

Cardinal

=LongWord

Беззнаковый

4

LongWord

0..4294967295

Беззнаковый

4

LongInt

−2147483648..2147483647

Знаковый

4

Int64

-9223372036854775808..9223372036854775807

Знаковый

8

Qword

0..18446744073709551615

Беззнаковый

8

Типы с плавающей точкой (вещественные):

Тип

Диапазон

количество значащих цифр

Размер в байтах

Real

2.9e-39..1.7e38

11-12

6

Single

1.5E-45..3.4E38

7-8

4

Double

5.0e-324..1.7e308

15-16

8

Extended

3.4e-4932..1.1e4932

19-20

10

Comp

-9.2e18..9.2e18

19-20

8

Currency

-922337203685477.5808..922337203685477.5807

19-20

8

Логические переменные.

Type   Boolean = (False, True);           WordBool = (False, True);           LongBool = (False, True);           ByteBool = (False, True);

Имеются четыре предопределенных булевых типа: Boolean, WordBool, LongBool и ByteBool.

Эти типы имеют следующие размеры:

  • Boolean - Byte (8 бит)

  • WordBool - Word (16 бит)

  • LongBool - LongInt (32 бита)

  • ByteBool - Byte (8 бит)

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

False < True Ord(False) = 0 Ord(True) = 1 Succ(False) = True Pred(True) = False

Тип Boolean является предпочтительным, так как он использует наименьшее количество памяти. ByteBool, WordBool и LongBool существуют только для совместимости с Windows.

Символьные переменные.

Переменные порядкового типа Char используются для хранения символов ASCII.

Символьные константы записываются в апострофах, например:

'A', '3' или '*'

Один символ апострофа записывается как два апострофа в апострофах, например:

''''

Функция Chr преобразовывает значение Integer в символ с соответствующим номером в таблице ASCII.

Функция Ord возвращает значение заданного символа ASCII.

Типы поддиапазонов (subrange)

Тип поддиапазона - это диапазон значений порядкового типа называемый главным типом.

Kонстанта1 .. константа2

При определении типа поддиапазона задается наименьшее и наибольшее значение в поддиапазоне.

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

Строковые переменные

Строковая переменная - это последовательность символов с динамической длиной, и постоянным максимальным размером в диапазоне от 1 до 255.

Строковый тип, объявленный без максимального размера имеет размер 255.

Строковые константы записываются в одинарных кавычках, например:

  • 'Turbo Pascal'

  • 'That''s all'

Две последовательных одиночных кавычки используются для задания в строке одиночной кавычки.

Со строковыми типами могут использоваться следующие операторы:

+ = <> < > <= >=

Стандартная функция Length возвращает динамическую длину строки.

Можно указывать максимальный размер строки в квадратных скобках при объявлении. Например,

Var a:string[70];

Массивы.

Описание типа массива:

type

имя типа = array[ список индексов ] of тип

Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:

var a,b,c: array[1..10] of integer;

Если массивы a и b описаны как:

var

a = array[1..5] of integer;

b = array[1..5] of integer;

то переменные a и b считаются разных типов. Для обеспечения совместимости применяйте описание переменных через предварительное описание типа.

Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно.

Так как тип, идущий за ключевым словом of в описании массива, - любой тип Турбо Паскаль, то он может быть и другим массивом. Например:

type

mas = array[1..5] of array[1..10] of integer;

Такую запись можно заменить более компактной:

type

mas = array[1..5, 1..10] of integer;

Таким образом возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт.

Записи

Запись представляет собой совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам. Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль, за исключением файлового типа.

Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end.

Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи:

type TRec = Record

FIO: String[20];

TEL: String[7]

end;

var rec: TRec;

Описание записей возможно и без использования имени типа, например:

var rec: Record

FIO: String[20];

TEL: String[7]

end;

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

rec.FIO, rec.TEL

Особой разновидностью записей являются записи с вариантами, которые объявляются с использованием зарезервированного слова case. С помощью записей с вариантами вы можете одновременно сохранять различные структуры данных, которые имеют большую общую часть, одинаковую во все структурах, и некоторые небольшие отличающиеся части.

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

type

TFigure = record

type_of_figure: string[10];

color_of_figure: byte;

...

case integer of

1: (x1,y1,x2,y2: integer);

2: (a1,a2,b1,b2,c1,c2: integer);

3: (x,y: integer; radius: word);

end;

var figure: TFigure;

Таким образом, в переменной figure мы можем хранить данные как об отрезке, так и о треугольнике или окружности. Надо лишь в зависимости от типа фигуры обращаться к соответствующим полям записи.