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

Учебное пособие по информатике. Часть 3

.pdf
Скачиваний:
25
Добавлен:
31.05.2015
Размер:
1.49 Mб
Скачать

31

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

Const <идентификатор константы> = <константное выражение>; Примеры объявления именованных констант:

Const maxn = 12;

name = „Алексей‟;

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

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

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

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

Заголовок находится в начале программы и имеет вид: Program <Имя программы>;

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

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

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

Структура программы в общем случае: Program <Имя программы>;

Uses <Список модулей>; Label <Список меток>; Туре <Описание типов>; Const <Список констант>;

Var <Объявление переменных>; <Описание процедур>; <Описание функций>;

Begin

<операторы тела программы>;

{Выполняемая часть программы}

end.

 

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

32

Раздел подключения модулей состоит из зарезервированного слова Uses и списка имен подключаемых стандартных и пользовательских библиотечных модулей. Формат этого раздела:

Uses <Имя1>, <Имя2>, ... , <ИмяN>;

Например:

Uses Crt, Dos, MyLib;

Раздел объявления меток начинается зарезервированным словом Label, за которым следуют имена меток, разделенные запятыми. Имена меток записываются как любой идентификатор, кроме того, метками могут быть целые числа без знака в диапазоне 0..9999. Формат данного раздела:

Label <имя1>, <имя2>, ..., <имяN>;

Например:

Label metkal, metka2, 10, 567;

Раздел описания типов описывает пользовательские типы данных. Этот раздел не является обязательным, и типы могут быть описаны неявно в разделе объявления переменных. Формат раздела:

Туре <Имя типа 1> = «Описание типа 1>; …<Имя типа N> = <Описание типа N>;

Например:

Type char2 = ('а'..'z'); massiv = array[1..100] of real; month = 1..12;

В Object Pascal есть много стандартных типов, не требующих описания: Real, Integer, Char, Boolean, String и др.

Раздел объявления констант начинается зарезервированным словом Const. Именованная константа может быть определена с помощью любого математического или строкового выражения. Формат:

Const <идентификатор константы> = <константное выражение>; Примеры объявления именованных констант:

Const maxn = 12; kd = Pi/180;

name = „Алексей‟;

Раздел объявления переменных начинается зарезервированным словом Var. Объявление переменных обеспечивает выделение памяти для размещения

5.5 Переменные

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

Сколько байтов памяти выделить под переменную компилятор определяет по указанному типу переменной при ее объявлении в разделе Var.

Формат объявления:

Var <список идентификаторов переменных>: <тип значений>;

33

Примеры объявления переменных:

Var a, b: integer; Name: string; x, y: real;

Переменные, в зависимости от места их объявления, можно разделить на локальные и глобальные.

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

Глобальные переменные можно инициализировать при объявлении.

5.6 Типы данных

Любые данные (константы, переменные, свойства, значения функций или выражений) в Object Pascal характеризуются своими типами.

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

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

Object Pascal характеризуется разветвленной структурой встроенных типов данных:

 

 

 

 

 

 

 

34

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т

 

 

Простые

 

 

 

Порядковые

 

 

 

Целые

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

Логический

П

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дата - время

 

 

 

Символьный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Перечисляемый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

Массивы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тип - диапазон

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Записи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Указатели

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Множества

 

 

 

 

 

 

Строки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файлы

 

 

 

 

 

 

Процедурные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Объекты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Варианты

 

 

Настраиваемые

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

варианты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Классы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

В Object Pascal для хранения одних и тех же данных можно использовать разные типы. Гибкое применение разных типов данных позволяет существенно сэкономить объем памяти, занимаемой переменными. Чаще всего начинающие программисты используют такие типы данных, как Integer (целый), Real (вещественный), Boolean (логический), Char (символьный), String (строковый).

Целые типы данных

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

Тип

 

Диапазон значений

Требования к

Знаковый

 

 

 

 

памяти

(может ли хранить

 

 

 

 

(в байтах)

отрицательные числа)

Byte

0

255

1

нет

Word

0

65535

2

нет

Longword

0

4294967295

4

нет

ShortInt

-128

127

1

да

SmallInt

-32768

32767

2

да

Cardinal

0

4294967295

4

нет

Integer

-2147483648

4

да

 

2147483647

 

 

LongInt

-2147483648

4

да

35

 

2147483647

 

 

Int64

-263 263 -1

8

да

Максимальную производительность обеспечивают типы Integer и Cardinal. Приведенные в таблице затраты памяти могут изменяться, поэтому, если

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

Действительные (вещественные) типы данных

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

Тип

 

Диапазон значений

Число значащих

Требования к

 

 

 

 

 

разрядов

памяти

 

 

 

 

 

 

(в байтах)

Real48

± 2.9 *

10-39

± 1.7 * 1038

11-12

6

Real

± 5.0 *

10-324

± 1.7 * 10308

15-16

8

Single

± 1.5

*

10-45

± 3.4 * 1038

7-8

4

Double

± 5.0

*

10-324

± 1.7 * 10308

15-16

8

Extended

± 3.6

*

10-4932

± 1.1 * 104392

19-20

10

Comp

-263

262

 

19-20

8

Currency

-922337203685477.5808

19-20

8

 

922337203685477.5807

 

 

Максимальную производительность обеспечивают тип Real. Тип Extended обладает максимальной точностью. Тип Currency используется для представления денежных величин.

Булевы (логические) типы данных

Переменные булевых типов данных представляют логические значения true (истина) и false (ложь).

Символьные типы данных

Символьные типы предназначены для хранения одного символа. Символьный тип CHAR – представляет собой тип данных,

предназначенный для хранения одного символа (буквы, знака или кода). Множеством значений этого типа являются символы, упорядоченные в соответствии с расширенным набором символов кода ASCII. При вызове функции Ord(Ch), где Ch – переменная символьного типа, возвращается порядковый номер символа.

Значение для переменных типа CHAR задается - в апострофах.

Ch:='a';

Также можно задавать значение, используя знак #,указав код ASCII – для символа.

Ch:=#65

В Object Pascal определен символьный тип Char. К символам применимы следующие функции:

Chr(x):Char – возвращает символ с кодом, равным целочисленного выражения х;

Upcase(c):Char – преобразует символ с к верхнему регистра.

36

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

К структурным типам относятся: строки; массивы; множества; записи; файлы; классы.

Строки

Строки обеспечивает тип String, который представляет строку с максимальной длиной около 2*1031 символов.

Тип string (строка) широко используется для обработки текстов. Он во многом похож на одномерный массив символов ARRAY[0..N] of CHAR.

Однако в отличие от последнего, количество символов в строке может меняться от 0 до N, где N-максимальное количество символов в строке. Строка объявляется типа string[N]. Для обращения к отдельному символу строки можно указать название строковой переменной и номер (позицию) этого символа в квадратных скобках, например, str[2] .

Массивы

Одним из определяющих свойств в структурированных типов данных является то, что они состоят из нескольких элементов. Любой из структурированных типов данных (массивы, записи, множества, файлы) характеризуются множественностью образующих этот тип элементов, т.е. переменная или константа структурированного типа имеет несколько компонент. Массивы – упорядоченные последовательности однотипных объектов, обозначаемые одним именем. Необходимость в использовании массивов возникает, когда требуется связать и использовать ряд родственных величин. Например, многократные замеры температуры воздуха в течение года удобно рассматривать как совокупность вещественных величин, объединенных в один сложный объект – массив измерений Доступ к содержимому конкретного элемента массива осуществляется по его номеру (индексу). Индексная переменная, служащая для указания отдельного элемента массива должна быть простого типа. Количество индексных позиций определяет мерность массива (одномерный, двумерный и т.д.). Различают массивы статические и динамические. Статический массив представляет собой массив, границы индексов и, соответственно, размеры которого задаются при объявлении – известны до компиляции программы.

Наряду с термином массив часто можно встретить термины матрица, вектор, таблица. Суть этих терминов одна и та же. При описании массива используются зарезервированные слова ARRAY и OF. За словом ARRAY в квадратных скобках указывается тип-диапазон. Он задается левой и правой границами изменения индекса массива. За словом OF указывается тип элементов, образующих массив.

<идентификатор>:ARRAY[нач.индекс.. кон.индекс] OF <тип компонент>

37

Пример:

Var A:ARRAY[1..10] of real ; //статический одномерный массив;

B: ARRAY[1..10, 1..100] of real; ; //статический двумерный массив.

Множества

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

256.Формат описания множественного типа: Set of <тип элементов>;

Переменная множественного типа может содержать любое количество элементов своего множества – от нуля до максимального. Значения множественного типа заключаются в квадратные скобки. Пустое множество обозначается [].

Выражения

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

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

Выражение состоит из: операндов; знаков операций; круглых скобок.

Операнды представляют собой данные, над которыми выполняются действия. Операндами могут быть константы, переменные, элементы массивов, обращения к функциям и свойства компонентов.

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

относится к одному операнду, и ее знак записывается перед операндом, например, -х. Бинарная операция выражает отношение между двумя операндами, и ее знак записывается между операндами, например, х+у.

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

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

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

5.7Арифметические выражения

Тип результата вычисления выражения определяется типом операндов и

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

38

Приоритет выполнения операций:

унарные операции - (not, сохранение знака, отрицание знака); операции типа умножения - (*, /, and, div, mod);

операции типа сложения - (+, -, or);

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

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

Бинарные арифметические операции: + (сложение), - (вычитание), * (умножение), / (деление).

Унарные арифметические операции: + (сохранение знака), - (отрицание знака). Унарные арифметические операции относятся к знаку числа и не изменяют тип числа.

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

Div - целочисленное частное от деления двух чисел; Mod - целочисленный остаток от деления двух чисел.

Пример. Пусть переменные а и b описаны как целые (integer). a:=10 div 3;

b:=10 mod 3.

Врезультате выполнения операций будут получены следующие значения: a=3, b=1.

Вязыке Object Pascal отсутствует операция возведения в степень. Возведение числа (выражения) в целую степень можно выполнить в цикле

путем многократного умножения числа на себя.

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

exp(a*ln(x)).

Математические функции [4]

Основные математические функции описаны в модуле System, дополнительные в модуле Math. Модуль Math должен быть подключен в разделе

Uses.

39

Функция

 

Действие

 

Тип результата

abs(x)

Возвращает модуль (абсолютное значение)

Совпадает

с

 

х

 

 

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

chr(b)

Возвращает символ по его коду

 

Char

 

odd(x)

Возвращает True, если аргумент – нечетное

Boolean

 

 

число

 

 

 

 

sqr(x)

Возвращает квадрат аргумента

 

Совпадает

с

 

 

 

 

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

sqrt(x)

корень квадратный из х

 

Real

 

ln(x)

натуральный логарифм х

 

Real

 

random(x)

Возвращает

псевдослучайное

число из

Integer,

если

 

диапазона 0..(x-1).

 

параметр

есть,

 

Если параметр не указан, то возвращает

real,

если

 

псевдослучайное число из диапазона 0..1

параметра нет

 

Перед первым обращением к функции

 

 

 

необходимо вызвать процедуру Randomize.

 

 

exp(х)

Экспонента Х. Возведение числа е в

Real

 

 

степень х. e – основание натурального

 

 

 

логарифма. E = 2.71828

 

 

 

Математические процедуры:

 

 

 

Запись

Действие

 

 

 

 

dec(x [, i])

Уменьшает значение x на i, а при отсутствии i – на 1

 

inc(x [, i])

Увеличивает значение x на i, а при отсутствии i- на 1

 

Randomize

Выполняет

инициализацию

программного генератора

случайных чисел.

Пример записи выражения на языке Object Pascal

X= ; X=(-b+sqrt(sqr(b)-4*a*c))/(2*a);

5.8 Логические выражения

Логические выражения чаще всего используются в условной инструкции и в инструкциях цикла и состоят из:

логических констант True или False; логических переменных типа boolean; операций сравнения (отношения); логических операций; круглых скобок.

Результатом вычисления логического выражения является логическое значение True или False.

Для установления отношения между двумя значениями, заданными выражениями, переменными или константами, используются операции сравнения (отношения):

= (равно); < (меньше); > (больше);

<= (меньше или равно); >= (больше или равно);

40

<> (не равно)

Результатом операции сравнения является значение False, если соответствующее отношение не выполняется, и значение True, если отношение выполняется.

Логические операции (функции)

Операция

Описание

 

Знаковое

 

Результат

 

 

 

 

 

 

 

 

обозначение

 

 

 

 

Not (НЕ)

Инверсия,

 

¬

 

Высказывание истинно,

(унарная)

отрицание

 

 

 

 

если операнд ложный

 

 

 

 

 

 

 

 

 

 

 

 

 

And (И)

Конъюнкция,

 

 

Λ

 

Высказывание истинно,

(бинарная)

логическое

 

 

 

 

если оба операнда истинны

 

 

умножение

 

 

 

 

 

 

 

 

Or (ИЛИ)

Дизъюнкция,

 

 

V

 

Высказывание ложно, если

(бинарная)

логическое

 

 

 

 

оба операнда ложны

 

 

сложение

 

 

 

 

 

 

 

 

Xor

Исключающее

 

 

 

Выражение ложно, если оба

(бинарная)

ИЛИ

 

 

 

 

операнда или истинны или

 

 

 

 

 

 

 

 

 

ложны

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2.

 

 

 

 

Таблица истинности основных логических операций

 

a

 

b

 

¬a

 

a Λ b

a V b

a → b

a ↔ b

 

 

1

 

1

 

0

 

1

1

 

1

1

 

 

1

 

0

 

0

 

0

1

 

0

0

 

 

0

 

1

 

1

 

0

1

 

1

0

 

 

0

 

0

 

1

 

0

0

 

1

1

 

5.9 Строковые выражения

Для строк можно применять операцию "+", выполняющую соединение (конкатенацию) двух строк. Выражение S1+S2 даст в результате строку, в которой после символов строки S1 будут расположены символы строки S2.

Результатом строкового выражения является строка символов. Пример строкового выражения: 'summa = ' + FloatToStr(х)

Здесь 'summa = ' - строковая константа, а х – вещественное число. При x=3.14 значение строкового выражения будет: summa = 3.14

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