Структурированные типы данных

Лекция 16

Запуск Turbo Pascal. Алфавит языка Turbo Pascal

Цель: Изучить программирование объем 1 ч

Система программирования Turbo Pascal представляет собой интегрированную среду, включающую в себя экранный редактор, компилятор, редактор связей, отладчик.

Интегрированность среды проявляется не только в единой идеологии построения компонент, но и в связи их друг с другом: при возникновении ошибки автоматически переходит в режим экранного редактирования и позиционирует курсор в точку возникновения ошибки.

Запуск Turbo Pascal

Для запуска Turbo Pascal необходимо дважды щелкнуть на соответствующем ярлыке, расположенном на рабочем столе, или запустить исполняемый файл Turbo.exe.

Алфавит языка Turbo Pascal

Основными символами языка в системе программирования являются:

A .. Z, a .. z буквы

0 .. 9 цифры

+ - * / = ^ ( ) “пробел” [ ] { }. , : ;‘ # $ спецсимволы

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

Следующие слова зарезервированы в Turbo Pascal и, следовательно, не могут быть использованы пользователем в целях, отличных от определенных в языке:

absolute type string procedure mod
begin var unit set of
destructor and virtual then program
else div array until shl
for end const while to
if forward do asm uses
interface implementation external constructir with
nil interrupt function downto xor
or not in file  
record packed label goto  
shr repeat object inline  

Стандартные идентификаторы служат для обозначения заранее определенных разработчиками языка типов данных, констант, процедур и функций. Например, стандартный идентификатор sin вызывает функцию, вычисляющую синус заданного угла. Любой из стандартных идентификаторов в отличие от зарезервированных слов можно переопределить, но это чаще всего приводит к ошибкам. Поэтому на практике стандартные идентификаторы лучше использовать без каких – либо изменений.

Идентификаторы пользователя применяются для обозначения меток, констант, переменных, процедур и функций, определенных самим программистом. Идентификатор начинается с буквы или “_” и состоит из букв, цифр и “_” (символа подчеркивания). Большие и малые буквы не различаются. Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы, а также уменьшают вероятность появления ошибок при модификации программ. Например, значение даты удобнее обозначить идентификатором Data, чем просто буквой D или любым другим символом.

Задание 1.1

1. Какие из приведенных записей могут служить идентификаторами?

а) АА_А_А; б) А#; в) ‘abAB’;

г) 123; д) С = 3

Типы данных

Общие сведения

Каждый элемент данных относится к одному из конечного множества типов, допустимых для конкретной версии языка программирования. Тип – это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями. Например, значения 1 и 2 относятся к целочисленному типу, их можно складывать, умножать и выполнять другие арифметические операции.

Все типы данных разделяются на две группы: скалярные (простые) и структурированные (составные). Скалярные типы в свою очередь подразделяются на стандартные и пользовательские. Стандартные типы предлагаются пользователям разработчиками системы Turbo Pascal.

К стандартным скалярным относятся целочисленные, вещественные, символьные (литерные), логические (булевские) типы данных.

Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системах. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак $. Диапазон изменений шестнадцатеричных чисел от $0000 до $FFFF.

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

Вещественные десятичные числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой. Если десятичная точка отсутствует, число считается целым. Перед числом может находиться знак «+» или «-». Если знак отсутствует, по умолчанию число считается положительным. Например,

125 – целое десятичное число

$1FF – шестнадцатеричное число

124.674 – вещественное число

- 12.9 – отрицательное вещественное число.

Вещественные десятичные числа в форме с плавающей точкой представлены в экспоненциальном виде: mE+p, где m – мантисса (целое или дробное число с десятичной точкой), Е означает «десять в степени», р – порядок (целое число). Например,

5.18Е+02 = 5.18 × 102 = 518

10Е-03 = 10 × 10-3 = 0.01.

Пользовательские типы - перечисляемый и интервальный – разрабатываются самим программистом.

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

Скалярные типы

Целочисленные типы данных представляют собой значения, которые могут использоваться в арифметических выражениях и занимать в памяти от 1 до 4 байт.

Таблица – Целочисленные типы

Тип Диапазон Требуемая память
Byte 0..255
Shortint -128..127
Integer -32768..32767
Word 0..65535
Longint -2147483648..2147483647

Например:

var x1, x2 : byte;

y1 : word;

Вещественные типы данных представляют собой вещественные значения, которые используются в арифметических выражениях и занимают в памяти от 4 до 10 байт.

Таблица – Вещественные типы

Тип Диапазон Требуемая память
Real 2.9E-39..1.7E+38
Single 1.5E-45..3.41E+38
Double 5E-324..1.7E+308
Extended 1.9E-4932..1.1E+4932
Comp -2E+63..2E+63-1

Например:

var summa : single;

root1, root2 : double;

Логический (булевский) тип представлен двумя значениями: True (истина) и False (ложь). Он широко применяется в логических выражениях и выражениях отношения. Занимает 1 байт памяти.

Например:

var flag1, flag2 : boolean;

Символьный (литерный) тип определяется множеством значений кодовой таблицы. Для переменной символьного типа требуется 1 байт. В программе значения переменных и констант типа char должны быть заключены в апострофы. Например, ‘А’ обозначает букву А, ‘ ‘ - пробел, ‘;’ - точку с запятой.

Например:

var ch : char;

let, znak : char;

Пользовательские типы

Кроме стандартных типов данных, Паскаль поддерживает скалярные типы, определенные самим пользователем. К ним относятся перечисляемый и интервальный типы. Данные этих типов занимают в памяти 1 байт, поэтому любой пользовательский тип не может содержать более 256 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок и экономит память.

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

Формат:

type <имя типа> = (<значение1, значение2, …, значение n>);

var <идентификатор, …> : <имя типа>;

Например:

type gaz = (C, O, N, F);

metall = (Fe, Co, Na, Cu, Zn);

var G1, G2, G3 : gaz;

met1, met2 : metall;

Пример 1.1 type month = (Jan, Feb, March, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec);

var m, m1 : month;

Присвойте переменной название месяца, следующего за месяцем.

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

if m = Dec then m1 := Jan else m1 := succ(m);

Пример 1.2 Для предыдущего примера присвойте переменной m1 название k-го месяца после месяца m.

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

m1 := m;

for i := 1 to k mod 2 do

if m1 = Dec then m1 := Jan else m1 := succ(m1);

Пример 1.3 type month = (Jan, Feb, March, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec);

sezon = (zima, vesna, leto, osen);

var m : month; s : sezon;

Определите s - sezon, на который приходится месяц m.

Для определения сезона можно использовать оператор выбора:

case m of

Jan, Feb, Dec : s := zima;

March, Apr, May : s := vesna;

June, July, Aug : s := leto;

Sep, Oct, Nov : s := osen;

end;

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

Формат:

type <имя типа> = <константа1> .. <константа2 >;

var <идентификатор, …> : <имя типа>;

Например:

type dni = 1 .. 31;

var rabdni, prazdniki : dni;

Пример 1.4 type month = (Jan, Feb, March, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec);

var d: 28..31; m : month;

Переменной d присвойте количество дней в месяце m (год невисокосный)

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

case m of

Jan, March, May, July, Aug, Oct, Dec : d := 31;

Feb : d := 28;

Apr, June, Sep, Nov : d := 30;

end;

Структурированные типы данных

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

Наши рекомендации