Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
01.03.2016
Размер:
395.97 Кб
Скачать

Лучше сразу тут-------------http://mif.vspu.ru/books/pascal/procedure2.html

4. Структуры и типы данных.

В языке Паскаль любые объекты, т.е. константы, переменные, значения функций или выражения,  характеризуются своими типами. Тип определяет множество допустимых значений того или иного объекта, а также множество операций, которые к нему применимы. Кроме того, тип определяет формат внутреннего представления данных в памяти ЭВМ. В отношении типов объектов Паскаль является статическим языком. Это означает, что тип объекта, например, переменной, определяется при ее описании и не может быть изменен в дальнейшем.

Структура типов данных в языке Паскаль:

Ниже рассматриваются только некоторые из указанных в схеме типов:

Целочисленные | Логический | Символьный | Строковый | Вещественные  | Диапазон | Массив |

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

Порядковые типы характеризуются тем, что каждый из них имеет конечное число возможных значений, среди которых установлен линейный порядок. С каждым из значений можно сопоставить некоторое целое число - его порядковый номер.

Целочисленные типы - обозначают множества целых чисел в различных диапазонах. Имеется пять целочисленных типов, различающихся диапазоном допустимых значений и размером занимаемой оперативной памяти. Целочисленные типы обозначаются идентификаторами: ByteShortIntWordIntegerLongInt; их характеристики приведены в следующей таблице.

Тип 

Диапазон 

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

Byte   ShortInt   Word Integer   LongInt

0 ... 255 -128 ... 127 0 ... 65535 -32768 ... 32767 -2147483648 ... 2147483647

1 1 2 2 4

Значения целых типов записываются в программе привычным способом:

123     4    -3    +345    -699

Наличие десятичной точки в записи целого числа недопустимо. Будет ошибкой записать целое число следующим образом:

123.0

Кроме прывычной десятичной формы записи допускается запись целых чисел в шестнадцатиричном формате, используя префикс $, например:

$01AF     $FF    $1A    $F0A1B

Регистр букв A,B, ..., F значения не имеет.

Допустимые операции: - присваивание; - все арифметические: +, - ,*, /, div, mod (при обычном делении [/] результат вещественный!); - сравнение <, >, >=, <=, <>, =.

Логический тип (Boolean) - состоит всего из двух значений: False (ложно) и True (истинно). Слова False и True определены в языке и являются, по сути, логическими константами. Регистр букв в их написании несущественен: FALSE = false. Значения этого типа являются результатом вычислений условных и логических выражений и участвуют во всевозможных условных операторах языка.

Допустимые операции:  - присваивание; - сравнение: <, >, >=, <=, <>, =; - логические операции: NOT, OR, AND, XOR

Символьный тип (Char) - это тип данных, состоящих из одного символа (знака, буквы, кода). Значением типа Char может быть любой символ из набора ASCII. Если символ имеет графическое представление, то в программе он записывается заключенным в одиночные кавычки (апострофы), например:

'ж'     's'    '.'    '*'    ' '-(пробел)

Для представления самого апострофа его изображение удваивается: ''''.  Если же символ не имеет графического представления, например, символ табуляции или символ возрата каретки, то можно воспользоваться эквивалентной формой записи символьного значения, состоящего из префикса # и ASCII-кода символа:

#9     #32    #13

Допустимые операции:  - присваивание; - сравнение: <, >, >=, <=, <>, =. Большим считается тот символ, который имеет больший ASCII-номер.

Строковый тип (String, String[n]) - этот тип данных определяет последовательности символов - строки. Параметр n определяет максимальное количество символов в строке. Если он не задан, подразумевается n=255. Значение типа "строка" в программе запиывается как последовательность символов, заключенных в одиночные кавычки (апострофы), например

'Это текстовая строка'   'This is a string' '1234' - это тоже строка, не число '' - пустая строка

Допустимые операции:  - присваивание; - сложение (конкатенация, слияние); например, S := 'Зима'+' '+'пришла!'; - сравнение: <, >, >=, <=, <>, =. Строки считаются равными, если имеют одинаковую длину и посимвольно эквивалентны.

Функции для работы со строками смотри здесь

Вещественные типы - обозначают множества вещественных чисел в различных диапазонах. Имеется пять вещественных типов, различающихся диапазоном допустимых значений и размером занимаемой оперативной памяти. Вещественные типы обозначаются идентификаторами: Real, Single, Double, Extended, Comp; их характеристики приведены в следующей таблице.

Тип 

Диапазон 

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

Real Single Double Extended Comp

2.9·10-39 ... 1.7·1038 1.5·10-45 ... 3.4·1038 5.0·10-324 ... 1.7·10308 3.4·10-4932 ... 1.1·10-4932 -2·1063 ... +2·1063-1

6 4 8 10 8

Тип Comp хотя и относится к вещественным типам, на самом деле является целочисленным с очень огромным диапазоном значений.

Значения вещественных типов могут записываться в программе несколькими способами:

1.456

0.000134

-120.0

65432

+345

0

-45

127E+12

-1.5E-5

-1.6E+12

5E4

0.002E-6

Будет ошибкой записать вещественное число следующим образом:

.5 (правильно 0.5) 12. (правильно 12.0 или 12)

Вещественное число в форме с плавающей точкой (экспоненциальная форма) записывается как пара

<мантисса> Е <порядок>

Такое обозначение понимается как "мантисса, умноженная на десять в степени, равном порядку". Например,

-1.6E+12 сответствует -1.6·1012

Допустимые операции:  - присваивание; - все арифметические: +, - ,*, / ; - сравнение: <, >, >=, <=, <>, =. При сравнении вещественных чисел следует помнить, что в следствие неточности их представления в памяти компьютера (в виду неизбежности округления) стоит избегать попыток определения строгого равенства двух вещественных значений. Есть шанс, что равенство окажется ложным, даже если на самом деле это не так.

Диапазон или (ограниченный тип) не является предопределенным типом языка (таким как, например, Integer или Char) и поэтому ему не соответствует никакой идентификатор. Этот тип является вводимм пользователем. Используя его мы можем определить новый тип, который будет содержать значения только из ограниченного поддиапазона некоего базового типа. Базовым типом может быть только целочисленный тип, тип Char (символьный) и любой из введенных программистом перечислимых типов.

Для введения нового типа - диапазона - нужно в блоке описания типов TYPE указать имя вводимого типа и границы диапазона через специальный символ диапазона ".." (две точки подряд):

TYPE   Century = 1..21; { поддиапазон цилочисленного типа }   CapsLetters = 'А'..'Я'; { поддиапазон из типа Char }

 

Структурированные типы языка К структурированным типам относятся: массив, запись, множество, файл и др. Все они определяют тип (или типы) некоторой структуры данных.

Массив - упорядоченная структура однотипных данных, хранящая их последовательно. Массив обязательно имеет размеры, определяющие сколько элементов хранится в структуре. До любого элемента в массиве можно добраться по его индексу.

Тип массив определяется конструкцией:

Array [диапазон]   of  ТипЭлементов;

Диапазон в квадратных скобках указывает значения индексов первого и последнего элемента в стурктуре. Примеры объявления типов и переменных:

TYPE   Vector = array[1..10] of Real; VAR    V1 : Vector;    V2 : array[0..5] of Byte; Здесь переменная V1 определяется с использованием описанного выше типа Vector; тип переменной V2 конструируется непостредственно на этапе ее описания.

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

VAR    M1 : array[1..3] of array[1..3] of Byte;

Это же самое можно записать гораздо компактнее:

VAR   M2 : array[1..3, 1..3] of Byte;

Зжесь массивы M1 и M2 имеют совершенно одинаковую структуру - квадратной матрицы размером 3x3.

Доступ к элемента массива осуществляется путем указания его индекса, например:

writeln( V1[1] ); {вывод на экран первого элемента массива V1} readln( M2[2,3] );{ввод третьего элемента второй строки матрицы М2}

 Основные конструкции языка программирования.