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

Структура программы. Стандартные типы данных (теория)

.pdf
Скачиваний:
11
Добавлен:
13.03.2016
Размер:
733.75 Кб
Скачать

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

2.1. Алфавит языка

Алфавит – совокупность допустимых в языке символов (или групп символов, рассматриваемых как единое целое). Элементы алфавита можно условно разбить на четыре группы:

символы, используемые в идентификаторах;

разделители;

специальные символы;

неиспользуемые символы.

Идентификатор – имя любого объекта программы (константы,

метки, типа, переменной, процедуры, функции, модуля, объекта). Он может включать буквы, цифры и символ подчеркивания. В качестве букв можно использовать 26 латинских букв (прописных и строчных). Помимо идентификаторов буквы могут использоваться в шестнадцатеричных числах (латинские a – f, A-F), строковых константах, служебных словах и комментариях. Прописные и строчные буквы в идентификаторах, служебных словах и числах не различаются. Однако в строках символов и комментариях строчные и прописные буквы различаются и при компиляции не преобразуются друг в друга. В качестве цифр можно использовать арабские цифры. В идентификаторах они могут присутствовать в любой позиции, кроме первой. Символ подчеркивания может находиться в любой позиции. Длина идентификатора может быть любой, но значимыми являются первые 63 символа, и по этим символам идентификаторы должны быть уникальны. Не разрешается использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы.

Примеры имен:

A b12 r1m SIGMA gamma I80_86

~ 1 ~

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

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

пробел;

любой управляющий символ (коды от 0 до 31, например ^, #, $ );

комментарий.

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

Специальные символы можно разделить на три категории:

знаки операций;

знаки пунктуации;

зарезервированные слова.

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

типов: состоящие из небуквенных символов (+

– * / = <> <

> <=

>=

:=

@) и буквенные операции,

представляющие

собой

зарезервированные слова.

 

 

~ 2 ~

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

Знаки пунктуации

{}, (* *) Скобки комментария [] Выделение индексов массивов, элементов множеств, размера

строки.

() Выделение выражений, списков параметров.

апостроф для выделения символов или строковой константы.

:= Знак присваивания значения переменной, типизированной

константе или функции.

;Разделение предложений программы (операторов и

объявлений).

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

метки от оператора.

=Отделение идентификатора типа от описания типа или

константы от ее значения.

, Запятая для разделения элементов списка.

.. Разделение границ диапазона.

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

^Обозначение типа-указателя, значения величины по ее

указателю или управляющего символа.

@Обозначение адреса переменной, типизированной константы,

подпрограммы, метода.

#Обозначение символа по его коду.

$ Обозначение директивы компилятора или знак 16-го числа.

~ 3 ~

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

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

absolute

exports

library

set

assembler

external

mod

shl

and

far

name

shr

array

file

nil

string

asm

for

near

then

assembler

forward

not

to

begin

function

object

type

case

goto

of

unit

const

if

or

until

constructor

implementation

packed

uses

destructor

in

private

var

div

index

procedure

virtual

do

inherited

program

while

downto

inline

public

with

else

interface

record

xor

end

interrupt

repeat

 

export

label

resident

 

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

~ 4 ~

Структура программы

2.2. Структура программы

Программа на языке Delphi состоит из заголовка, разделов описаний и раздела операторов. К разделам описаний относятся разделы описания переменных, констант, производных типов и подпрограмм:

1.Раздел объявления используемых модулей. Раздел описания модулей определяется служебным словом uses и содержит имена подключаемых модулей (библиотек) как входящих в состав стандартной библиотеки, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей отделяются друг от друга запятыми. Описание этого раздела имеет следующий синтаксис:

uses

имена_модулей;

2.Раздел объявления меток. Метки – это имена операторов программы. Метки используются для того, чтобы программист смог указать компилятору, какой оператор программы должен выполняться следующим. Однако используются метки крайне редко. Описание раздела имеет синтаксис:

label

список_меток;

3. Раздел объявления констант. Описание констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описаний констант const по следующему правилу:

const

имя_константы = константное_выражение;

4.Раздел описания типов. В этом разделе можно определить свой тип данных, задав идентификатор типа и структуру нового типа

~5 ~

Структура программы

данных. Определенные в этом разделе идентификаторы типов можно использовать для описания переменных.

5.Раздел описания переменных. В разделе описания переменных задается тип всех переменных, используемых в программе. Делается это по следующему правилу:

var

список_имен_переменных: тип_переменных;

6.Раздел объявления процедур и функций. Процедуры и функции – это относительно самостоятельные фрагменты программ, оформленные особым образом и снабженные именем. Упоминание этого имени в тексте программы называется вызовом подпрограммы. Описание подпрограммы имеет точно такую же структуру, как и программа, за одним исключением. В разделе описаний подпрограммы нельзя использовать оператор uses.

Раздел операторов представляет собой составной оператор, который содержит между служебными словами begin.......end последовательность операторов. Операторы отделяются друг от друга символом «;». Тело программы является обязательной частью программы. Текст программы заканчивается символом «точка» после слова end.

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

~ 6 ~

Структура программы

1.Заголовок программы необязателен и игнорируется компилятором. Фактически заголовок играет роль комментария.

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

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

4.В любом месте программы можно использовать те элементы, которые были определены ранее по тексту программы или являются предопределенными элементами языка.

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

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

program TRIANG; {пример простой программы}

var A, B, C, S, P: real;

begin

Read(A,B,C);

WriteLn(A,B,C);

P:=(A+B+C)/2;

S:=Sqrt(P*(P–A)*(P–B)*(P–C));

WriteLn('S=',S:8:3)

end.

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

~ 7 ~

Структура программы

символ $ и букву – ключ с последующим знаком + (включить режим) или

– (выключить режим). Например:

{$E+} – эмулировать математический сопроцессор;

{$F+} – формировать дальний тип вызова процедур и функций; {$N+} – использовать математический сопроцессор;

{$R+} – проверять выход за границы диапазонов.

Некоторые ключи компиляции могут содержать параметр, например:

{$I имя файла} – включить в текст компилируемой программы названный

файл.

~ 8 ~

Стандартные типы данных

2.3. Концепция типа для данных

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

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

Как и в стандарте языка Pascal, в Delphi существует правило: тип

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

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

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

каждая операция или функция требует аргументов фиксированного типа и выдает результат фиксированного типа.

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

возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;

внутреннюю форму представления данных в ЭВМ;

операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.

~9 ~

Стандартные типы данных

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

1.Простые:

Порядковые

A.Целые

B.Логические

C.Символьный

D.Перечисляемые

E.Ограниченные (тип-диапазон)

Вещественные

Дата-время

2.Структурированные:

Массивы

Записи

Множества

Файлы

3.Указатели

4.Строки

5.Процедурные типы

6.Варианты

7.Классы

~10 ~