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

Инф и Инф технол / ЛЕКЦИЯ 3 Инф ЖД 2 сем

.doc
Скачиваний:
41
Добавлен:
10.04.2015
Размер:
114.69 Кб
Скачать

7

1 курс (ЭЖД)

ЛЕКЦИЯ 3

КРАТКОЕ ОПИСАНИЕ ЯЗЫКА PASCAL ABC (ОКОНЧАНИЕ)

2 семестр

3.1. Типы данных

В языке Pascal ABC имеется огромный набор стандартных типов. Наиболее распространенные из них – числовые, булевский, символьный и строковый. Первые три относятся к стандартным скалярным типам, строковый – к регулярным.

Числовые типы подразделяются на целые и вещественные типы. Целые типы в языке Object Pascal представлены в следующей таблице:

Идентификатор типа

Диапазон допустимых значений

Занимаемая память

Integer

-2147483648..2147483647

signed 32-bit

Cardinal

0..4294967295

unsigned 32-bit

Shortint

-128..127

signed 8-bit

Smallint

-32768..32767

signed 16-bit

Longint

-2147483648..2147483647

signed 32-bit

Int64

-263..263-1

signed 64-bit

Byte

0..255

unsigned 8-bit

Word

0..65535

unsigned 16-bit

Longword

0..4294967295

unsigned 32-bit

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

Над представителями целых типов допустимы следующие арифметические операции:

Операция

Знак операции

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

Сложение

+

целый

Вычитание

целый

Умножение

*

целый

Деление

/

вещественный

Деление нацело

DIV

целый

Остаток от целочисленного деления

MOD

целый

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

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

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

Идентификатор типа

Диапазон допустимых значений

Количество значащих цифр

Занимаемая память, байт

Real

5.0∙10-324..1.7∙10308

15-16

8

Real48

2.9∙10-39 .. 1.7∙1038

11-12

6

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-4951..1.1∙104932

19-20

10

Comp

-263+1 .. 263 -1

19-20

8

Currency

-922337203685477.5808 ..922337203685477.5807

19-20

8

Вещественные константы могут быть представлены в одной из двух форм – с фиксированной точкой (обычный вид), с плавающей точкой (вид, в который входит мантисса и порядок, например, 0.2718е01; в форме с фиксированной точкой эта же константа запишется как 2.718).

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

Константы символьного типа (Character) записываются, как правило, в виде символа, заключенного между апострофами: 'G', '5', '#' и т.д. Если символ не имеет графического представления, он может быть представлен в виде #<код_символа>, например, #13, #27 и т.д. Так же может быть представлен и любой из символов, имеющих графическое изображение (то есть буква, цифра и т.д.). Над операндами символьного типа допустимы операции сравнения (<, <=, >, >=, =, <>). Результат этих операций (True – "истина" или False – "ложь") такой же, как и над числовыми кодами сравниваемых символов.

Булевский, или логический, тип (Boolean) представлен двумя константами (True и False). При этом считается True>False. Выражения булевского типа представляют собой либо обычные числовые или символьные неравенства, включающие знаки <, <=, >, >=, =, <>, либо те же неравенства, соединенные знаками логических операций (NOT, AND, OR, XOR).

Результат выполнения операции Not A всегда противоположен значению логического выражения A: если A=True, то NOT A=False и наоборот, если A=False, то NOT A=True. Данная операция является унарной, то есть определенной над одним операндом. Остальные логические операции – бинарные, то есть определенные над двумя операндами.

Результат выполнения операции A AND B равен True тогда и только тогда, когда оба операнда A и B равны True одновременно.

Результат выполнения операции A OR B равен False тогда и только тогда, когда оба операнда A и B равны False одновременно.

Результат выполнения операции A XOR B равен False, когда оба операнда A и B равны (то есть либо оба одновременно равны True или оба одновременно равны False), и равен True, когда оба операнда имеют разные значения (то есть, когда один из них равен True, а другой – False).

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

(x<2) AND (y>=4*x).

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

Целые типы, булевский и символьный типы составляют дискретные типы.

Все описанные выше типы данных относятся к простым типам языка Object Pascal.

Регулярные типы, или массивы, используются довольно часто. Массив – это упорядоченное множество переменных, имеющих одно и то же имя, обладающих одним и тем же типом и различающихся одним или более индексами, которые определяют порядок следования конкретного элемента в данном массиве. Ключевым словом для описания переменных такого типа является служебное слово ARRAY. Далее в квадратных скобках следует перечислить диапазоны индексов; количество диапазонов определяет количество индексов и, соответственно, размерность массива (одномерный, двумерный и т.д.). После этого указывается тип элементов массива.

Примеры описания массивов:

a,b:ARRAY[1..10] OF Real;

c:ARRAY[-5..5,2..12] OF Integer;.

Обращение к элементам массива может быть таким:

a[1]; b[N]; c[-2,I+1];.

Каждый диапазон индексов также представляет собой тип; он так и называется тип-диапазон, или ограниченный тип. Верхняя и нижняя границы индекса – это константы, которые могут быть заданы явно или предварительно описаны в разделе CONST. Как правило, границами индекса служат целочисленные константы. Ими также могут служить символьные или булевские константы, указанные в порядке их возрастания.

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

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

Описание процедуры начинается с ее заголовка, в котором после служебного слова PROCEDURE указываются имя процедуры и в скобках перечень формальных параметров (если они есть). Далее могут следовать такие же подразделы, как и у головной программы (то есть константы, метки, типы, переменные, а также "свои", вложенные, процедуры и (или) функции). Завершается описание процедуры телом, которое начинается со слова BEGIN и заканчивается словом END. Пример описания процедуры:

PROCEDURE Proc1(a,b,c:Real;VAR x1,x2:Real);

VAR

d:Real;

BEGIN

END;.

В приведенном примере параметры a, b и c описаны как параметры-значения. При вызове такой процедуры можно вместо них указать как переменные, так и константы. А параметры x1 и x2 описаны как параметры-переменные (этот факт определяется служебным словом VAR). При обращении к данной процедуре вместо них можно указывать только переменные. Например:

Proc1(1,2,s,p1,p2);

При этом значение переменной s должно быть известно заранее. Переменным p1 и p2, как параметрам-переменным, будет присвоен результат выполнения данной процедуры.

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

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

Пример описания функции:

FUNCTION arcsin(x:Real):Real;

BEGIN

END;

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

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

Пример:

TYPE

Complex = OBJECT

Re,Im:Real;

PROCEDURE CR;

PROCEDURE CW;

END;

При таком описании типа complex необходимы еще описания процедур CR и CW, которые указаны при описании типа. Например:

PROCEDURE Complex.CR;

BEGIN

END;

PROCEDURE Complex.CW;

BEGIN

END;

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

C.Re; C.Im; C.CR; C.CW;

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

3.2. Стандартные процедуры и функции

Отдельно следует сказать о стандартных процедурах и функциях языка Object Pascal.

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

Имя процедуры

Параметры

Назначение

Exit

нет

завершение работы процедуры или программы

Halt

[<числовой_код_завершения>]2

завершение работы программы

Read

[<список_вводимых_переменных>]

чтение данных из текущей строки

Readln

[<список_вводимых_переменных>]

чтение данных с переходом на следующую строку

Write

[<список_выводимых_выражений>]

вывод результатов в текущую строку

Writeln

[<список_выводимых_выражений>]

вывод результатов с переходом на следующую строку

Первая процедура (Exit) параметров не имеет, остальные – могут совсем не иметь параметров, либо имеют параметры, кратко описанные во втором столбце.

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

Имя функции

Тип аргумента

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

Математическое обозначение

Pi

нет

вещественный

=3,14159265…

Abs(x)

числовой

равен типу аргумента

Sin(x)

числовой

вещественный

Cos(x)

числовой

вещественный

Arctan(x)

числовой

вещественный

Sqrt(x)

числовой

вещественный

Sqr(x)

числовой

равен типу аргумента

Exp(x)

числовой

вещественный

Ln(x)

числовой

вещественный

Round(x)

числовой

целый

Trunc(x)

числовой

целый

Почти все функции, кроме функции-константы Pi, имеют числовой (то есть, целого или вещественного типа) аргумент. У функций Sin(x) и Cos(x) аргумент задан в радианах. Результат функции Arctan(x) – угол в радианах. Функция Round(x)округляет результат до ближайшего целого, не превосходящего x. Функция Trunc(x) отсекает дробную часть аргумента x, и ее результат равен целой части x.

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

В математике

В Pascal ABC

Sin(x)/Cos(x)

Exp(x*Ln(a))

Exp(ln(x)/n)

Ln(x)/Ln(10)

В некоторых программах иногда полезно использовать выражение вида x/Abs(x). Очевидно, что при x, отличном от 0, оно равно 1, если x имеет положительное значение, и 0, если – отрицательное. В математике такая функция есть, и она обозначается (сигнум или "знак").

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

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