Алфавит языка Turbo Pascal 7.0 и объявление данных

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

Алфавит языка Turbo Pascal 7.0 включает следующие символы:

  • 1) прописные буквы латинского алфавита: А, В, С, D, Е, F, G, H, J, I, К, L, М, N, О, P, Q, R, S, T, V, U, W, X, Y, Z;
  • 2) строчные буквы латинского алфавита: a, b, с, d, е, f, g, h, j, i, k, 1, m, n, o, p, q, r, s, t, v, u, w, x, y, z;
  • 3) разделители: точка ., запятая ,, точка с запятой ;, двоеточие :, апостроф
  • 4) арабские цифры: 0, 1,2, 3, 4, 5, 6, 7, 8, 9;
  • 5) знаки арифметических операций: плюс +, минус -, умножить *, разделить /;
  • 6) знаки отношений: равно =, меньше <, больше >, меньше или равно < , больше или равно > , не равно о ;
  • 7) круглые ( ), квадратные [ ], фигурные { } скобки;
  • 8) специальные символы: доллар $, номер #, подчеркивание _, собака @, крыша Л.

На основании перечисленных символов составляются директивы и операторы программы.

Комментарии, как правило, записываются на русском языке, алфавит которого не входит в состав символов языка.

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

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

And — и;

Array — массив;

Asm — ассемблер;

Begin — начало;

Case — случай;

Const — константа;

Constructor — построитель;

Destructor — разрушитель;

Div — деление;

Do — делать;

Down to — вниз к;

Else — иначе;

End — конец;

File — файл;

For — для;

Function — функция;

Goto — идти к;

If — если;

Implementation — выполнение;

In — в;

Inherited — наследующий;

In line — на линии;

Interface — сопряжение;

Label — метка;

Mode — режим;

Nil — пустой;

Not — не;

Object — объект;

Of — из;

Or — или;

Paced — упаковывать;

Procedure — процедура;

Program — программа;

Record — запись;

Repeat — повторить;

Set — установить;

Shi — сдвинуть влево;

Shr — сдвинуть вправо;

String — строка;

Then — тогда;

То — к;

Туре — тип;

Unit — единица;

Until — до тех пор, пока;

Uses — использования;

Var — переменная;

While — пока;

With - с;

Хог — исключающее или.

Раньше мы говорили о том, что составлению программы предшествует тщательный анализ исходных, промежуточных и результирующих данных задачи (гл. 2, п. 2.3). Большинство языков программирования, в том числе и Turbo Pascal 7.0, содержит средства, фиксирующие результаты этого анализа.

Данные, фигурирующие в программе, принято классифицировать по следующим направлениям:

  • 1) одиночные данные и их структуры, т. е. связанные между собой совокупности данных;
  • 2) постоянные данные и переменные, т. е. величины, не изменяющиеся в процессе выполнения программы и могущие принимать различные значения;
  • 3) числовые данные и нечисловые.

Одиночные данные, часто называемые скалярными величинами, могут принимать как постоянные, так и переменные значения. Первые принято называть константами, вторые — переменными. Они могут иметь числовое и нечисловое значение. В качестве структур данных в языке Turbo Pascal 7.0 предусмотрена обработка массивов, множеств, записей, строк и файлов. Элементы этих структур также могут быть как константами, так и переменными и принимать числовые и нечисловые значения. Перечисленные характеристики данных определяются содержанием решаемой информационной задачи и, безусловно, решающим ее алгоритмом.

Для построения эффективной машинной программы программа-компилятор с языка Turbo Pascal 7.0 должна «знать» характеристики данных, фигурирующих в программе. Они нужны прежде всего для того, чтобы выделить память под скаляры и структуры, под числа разной величины и нечисловые данные. Компилятор должен знать, где скаляр, а где структура, где переменная, а где константа, где переменная или константа числовая, а где нечисловая.

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

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

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

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

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

Program — Имя программы; {Название программы}.

Uses — Перечень названий модулей; {Используемые в программе модули}.

Label — Перечень имен меток; {Используемые в программе метки}.

Const — Перечень имен констант; {Используемые именовананные константы}.

Туре — Перечень названий типов; {Типы имен, вводимые программистом}.

Var — Перечень имен переменных, имен подпрограмм;

{Переменные и подпрограммы главной программы}.

Begin — {Предложения программы: операторы, комментарии, директивы}.

End. — {Фиксация конца текста программы}.

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

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

Такой вид программы на языке Turbo Pascal 7.0 представляет собой четко выраженную ее структуру. Поэтому часто говорят, что в отличие от других языков этот язык поддерживает строгую дисциплину программирования.

Не следует, однако, думать, что приведенная структура программы получается сразу: сел за стол, объявил, написал тело программы и — готово. Процесс разработки программы, образно говоря, прикидочно-челночный. На основании алгоритма вводятся первоначальные скаляры и структуры, определяются переменные и константы. Затем при составлении кода они могут измениться, что повлечет изменения в разделе объявлений, и т. д. Окончательный стандартный вид программы, безусловно, получается после ее отладки и тестирования.

В разделе деклараций программы недостаточно указать используемые структуры данных, переменные, константы и т. д.

Для элементов всех данных необходимо объявить их типы. В компиляторе с языка Turbo Pascal 7.0 предусмотрена обработка данных таких типов: числовой, символьный, логический (булевый). В свою очередь числовой тип допускает декларацию отдельно целых и вещественных чисел. Целые числа могут быть заявлены как принадлежащие следующим интервалам: [0, 255], [0, 65 535], [-128, 127], [-32 768, 32 767], [-2 147 483 648, 2 147 483 647]. Для этих интервалов приняты обозначения Byte, Word, Shortint, Integer, Longint, что означает байтовый, типа слово, короткий целый, целый, длинный целый. Эти обозначения применяются для деклараций типов переменных и элементов структуры, принимающих целые значения из того или иного интервала согласно алгоритма решения задачи.

Допускается, что вещественные числа могут принадлежать таким интервалам: [2.9Е-39, 1.7Е38], [1.5Е-45, 3.4Е38], [5.0Е-324, 1.7Е308], [3.4Е-4932, 1.1Е4932]. Для указанных интервалов приняты обозначения: Real, Singl, Double, Extended, что означает вещественный, простой, двойной, протяженный. Они используются для объявления типов переменных и элементов структур, принимающих вещественные значения.

Следует отметить, что во всех языках програмирования, в том числе и в Turbo Pascal 7.0, в десятичных дробях (вещественных числах) целая часть числа от дробной его части (мантиссы) отделяется точкой. Например, 2,103 следует записывать так 2.103. Или 0,125 можно записать как 0.125 или .125.

Символьный и логический типы в языке Pascal декларируются словами Char и Boolean.

Для простого запоминания типов на рис. 4.1 приведена их древовидная схема, а в табл. 4.1 — данные об интервалах изменения чисел и объемах памяти, которые отводит компилятор для хранения данных.

Таблица наглядно показывает, какими минимальными и максимальными целыми и вещественными числами можно оперировать в Turbo Pascal 7.0, какие объемы памяти отводит компилятор для хранения числовых, символьных и булевых переменных, сколько цифр после запятой могут содержать вещественные числа разных типов.

Что же делать в том случае, когда требуется обрабатывать целые величины, выходящие за пределы типа Longint? Рекомен-

Схема типов данных языка Turbo Pascal 7.0

Рис. 4.1. Схема типов данных языка Turbo Pascal 7.0

Таблица 4.1. Таблица интервалов чисел

Тип

Интервал

Объем памяти

Мантисса

Byte

0, 255

1

Word

0, 65 535

2

Shortint

128, 127

1

Integer

-32 768, 32 767

2

Longint

-2 147 483 648, 2 147 483 647

4

Real

2.9Е-39, 1.7Е38

6

11-12

Single

1.5Е-45, 3.4Е38

4

7-8

Double

5.0Е-324, 1.7Е308

8

15-16

Extended

3.4Е-4932, 1.1Е4932

10

19-20

Char

Любые символы клавиатуры

1

Boolean

0 или 1

1

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

Теперь мы вплотную подошли к объяснению правил декларации данных. Пусть в некоторой программе, имя которой мы дали «Весна» (в переводе на английский Spring), используются три константы, обозначенные а, Ь, с, две переменные /, к целого типа, три вещественные переменные х, у, z, переменная w символьного типа, булевая переменная bul и две метки ml, m2. Константы имеют значения а = 3, Ь = -8,7, с = !. Переменная i — индекс массива, изменяющийся от 1 до 100. Переменная к вычисляется в программе и по предложению должна лежать в интервале — 32 768, 32 767. Переменные х, у, z также вычисляются в программе и по предложению должны принадлежть интервалу [2.9Е-39, 1.7Е38]. Тогда раздел наиболее удобно читаемых объявлений программы будет таким:

Program Spring;

Labi?

ml;

m2; {Пояснения к меткам}

Const а=3; b—8.7; c=?;

{Пояснения к константам}

Var

i: byte; {Назначение переменных}

k: integer; х, у, z: real; w: char; bul: boolean;

{Пояснения к переменным}

В приведенном фрагменте программы указано ее название Spring, заканчивающееся точкой с запятой. Кроме этого, он содержит предложения деклараций, каждое из которых также заканчивается точкой с запятой, и комментарии: {Пояснения к ...}.

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

Общим правилом также является заканчивать как предложения деклараций, так и предложения тела программы точкой с запятой. Конец программы обозначается точкой, которая ставится после слова End.

Константы фрагмента объявлений записаны по правилам записи констант, целого, вещественного и символьного вида так, что а получает целое значение 3, b — вещественное значение — 8.7, а с — символьное значение!. Отметим, что константы символьного типа как в разделе объявлений программы, так и в предложениях программы всегда заключаются в апострофы. К слову говоря, ' ' — представляет константу пробел.

Правило записи переменных Var (Variables) такое. Сначала указывается имя переменной, затем через двоеточие — ее тип. В примере объявлено пять типов переменных.

В языке Turbo Pascal нет строгих требований обязательной записи предложений объявлений каждого его раздела в виде отдельного предложения по каждому объявляемому объекту программы. Допускаются записи в строку. Например, ml;m2 или а=3; Ь=-8,7; с=Т или i: byte; k: integer; и т. д. Однако ради экономии места это не рекомендуется делать. Программа в этом случае становится трудно читаемой и самому автору будет нелегко в ней разобраться даже через несколько дней.

Если известно, что некоторая переменная (переменные) программы будет принимать заведомо заданные значения, то они могут быть объявлены как переменные перечисляемого типа. Например,

Var

а:(7, 9, 11, 13); b:(dog, cat, puma);

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

Var

х:-1... 11; y:'a'...'h';

При этом левая граница интервала должна быть меньше правой.

Рассмотрим, как объявляются массивы, множества, строки и записи.

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

Язык Turbo Pascal 7.0 допускает использование одномерных, двухмерных, трехмерных и, вообще говоря, массивов п измерений. Чаще всего, однако, используются одномерные и двухмерные массивы.

Обращение к любому элементу массива осуществляется по имени массива с указанием индексов элемента. Для одномер-норго массива это один индекс, для двухмерного — два, для трехмерного — три и т. д.

В языке Turbo Pascal 7.0 есть два способа объявления массивов. Объясним простейший из них.

Пусть в программе используется два массива: одномерный массив Alf, содержащий 26 заглавных букв латинского алфавита, и матрица МАТ, состоящая из 10 строк и 20 столбцов вещественных чисел, принадлежащих интервалу 2.9Е-39,17Е38. Тогда простейший способ объявления массивов будет таким:

Var

Alf: Array [ 1 ..261 of char;

Mat: Array [1..10, 1..20] of real;

Как видим, в этом случае массивы декларируются в разделе переменных Var. После имени массива через двоеточие записывается служебное слово Array (массив), после этого в квадратных скобках через две точки указываются нижние и верхние индексы массива.

Числовые значения индексов массива допускается заменять буквенными обозначениями. Для этого значения индексов должны быть заданы в разделе Const. Например,

Const

h=26;

m=10;

n=20;

Var

Alf: Array [l..h] of char;

Mat: Array [l..m, l..n] of real;.

Безусловно, можно указать в виде символа и нижний индекс массива — единицу, например,

Const

г=1;

h=26;

Var

Alf: Array [r..h] of char;

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

Обращение к элементу массива в теле программы осуществляется по имени массива, за которым в квадратных скобках указываются индексы массива. Например, Alf[i], Mat[i,j]. При этом, разумеется, индексы i, j должны быть предварительно объявлены в разделе деклараций Var как типы Byte, Word, Shortint или Integer. В данном случае так:

Var

ij: byte;

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

Множества — это совокупности воображаемых или реально существующих объектов любой природы, мыслимых как единое целое. Множество могут составлять, например, студенты группы, автомобили марки Jeep некоторого города или страны, целые и вещественные числа, треугольники, которые можно нарисовать на листе бумаги, и т. д.

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

В языке Turbo Pascal 7.0 предусмотрены инструкции программирования обработки множеств. Для этого множество должно быть предварительно объявлено. Отрицательные элементы множества не допускаются. Множества могут быть либо перечислимого, либо интервального типа.

Переменная ш типа множество объявляется так:

Var

m: Set of char;

При этом слово Set означает множество.

Строки представляют собой последовательности символов. Например, слово «процедура» есть строка, состоящая из девяти символов. Буква «а» может также трактоваться как строка, содержащая один символ.

Длина строки в языке Turbo Pascal 7.0 ограничена 255 символами. В предложениях программы строка, как и символьная константа, заключается в апострофы. Приведенные выше строки должны быть записаны так: 'процедура', 'а'.

Строковая переменная объявляется двумя способами: с указанием длины строки и без него. Например,

Var

Art: string(n);

или

Var

Beta: string;

В первом случае указывается, что Art — это строковая переменная, содержащая п символов, п < 255.

Второй пример объявления говорит о том, что Beta — строковая переменная длиной 255 символов.

Запись — это структура данных, состоящая из последовательности полей. Простейшее представление о записи может быть, например, таким: сведения о студенте некоторого учебного заведения. Эти сведения удобно представляются как строка, включающая фамилию, имя, отчество, год рождения, курс, группу, домашний адрес, телефон и т. д. Условно запись может выглядеть так (рис. 4.2).

Фамилия И. О.

Год

рождения

Курс

Группа

Домашний

адрес

Телефон

Рис. 4.2. Пример записи

Turbo Pascal 7.0 предусматривает возможность программирования обработки записей. Так же, как и массивы, записи объявляются двумя способами. Простейший из них применительно к рассмотренному примеру такой:

Var

Stud: record; pi: string(40); p2: integer; p3: byte; p4: string( 10); p5: string(50); p6: byte;

End;

В разделе Var вначале указывается имя записи Stud. Затем через двоеточие записывается слово record, указывающее, что переменная Stud — это запись. Далее идут перечисления полей р 1, ..., рб с указанием через двоеточие типа данных каждого поля. Декларация записи заканчивается словом End.

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

Туре

ch=(7,9,11,13); g=(dog, cat, puma);

Var

a:ch;

b:g;

Последовательности чисел 7, 9, 11, 13 мы присвоили тип ch, последовательности животных dog, cat, puma — тип g. Далее в разделе Var указывается, что переменные а, b будут иметь соответственно типы ch и g, а, следовательно, в конечном итоге — перечисляемый тип.

Аналогичным способом может быть объявлен интервальный тип:

Туре

cs= -1...11; crt= 'a'...'h';

Var

x:cs;

y:crt;

Декларация массивов с введением типа данных программиста может быть такой:

Туре

Massl: Array [1..26] of char;

Mass2: Array [1..10, 1..20] of real;

Var

Alf: Massl;

Mat: Mass2;

Запись может быть объявлена так:

Туре

S = record;

pi: string(40); р2: byte; рЗ: byte; р4: string(lO); р5: string(50); рб: byte;

End;

Var

Stud: S;

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

Осталось рассмотреть объявления модулей в разделе Uses и объявления подпрограмм.

Модуль — это специальным образом оформленная программная единица. Она имеет название (имя), интерфейс, исполняемую и инициализируемую части. Модули, подготовленные ранее и постоянно эксплуатируемые, называются стандартными. В языке Turbo Pascal 7.0 используется ряд стандартных модулей, хранящихся либо в файле с расширением .tpu (Turbo Pascal Unit), либо в библиотеке turbo.tpl (Turbo Pascal Library). Для того чтобы использовать модули в составляемых программах, они должны быть объявлены. Например, так:

Uses

Crt, Graph, Printer;

Здесь Crt — модуль, позволяющий управлять работой клавиатуры, текстовым выводом на экран и звуком. Модуль Graph обеспечивает графический режим Turbo Pascal. Модуль Printer управляет выводом текста на печать. Все это стандартные модули. Общее правило объявления модулей такое. В разделе Uses их имена перечисляются через запятую.

Объявление подпрограмм будет рассмотрено ниже.

 
< Пред   СОДЕРЖАНИЕ     След >