Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Структура программы на языке Тurbo-Pascal




Программа на языке ТP состоит из трех компонентов: заголовка программы, описательной части и выполняемой части.

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

PROGRAM <идентификатор – имя программы>;

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

LABEL <список меток>;

CONST <объявление поименованных констант>;

TYPE   <определение типов данных>;

VAR <определение переменных>;

PROCEDURE    <описание процедур>;

FUNCTION <описание функций>.

В конце каждого оператора описания ставится символ “ ; ”.

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

LABEL 10, 20, 30;

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

Исполняемая часть программы содержит последовательность опе­раторов языка ТP, заключенную в операторные скобки. В качестве операторных скобок выступает пара служебных слов BEGIN и END. Структура выполняемой части программы на языке ТP такова:

BEGIN

<Оператор 1>;

<Оператор 2>;

<Оператор N-1>;

<Оператор N>;

END.

Каждый оператор выполняемой части программы на языке ТP заканчивается символом « ; » и может располагаться как на одной строке, так и на нескольких, причем на одной строке могут быть расположены несколько операторов.

В качестве идентификатора-имени, в дальнейшем просто имени, может выступать последовательность из латинских букв, цифр и символа подчеркивания « _ », обязательно начинающаяся с буквы. В качестве идентификаторов нельзя использовать служебные (заре­зервированные) слова и стандартные имена ТP.

Вопросы для самопроверки:

1. Из каких основных частей состоит программа на ТP?

2. Перечислить правила написания заголовка ТP-программы.

3. Дать характеристику операторов описания языка ТP.

4. Перечислить правила написания исполняемой части ТP-программы.

5. Дать определение оператора языка ТP.

6. Раскрыть понятие идентификатора.

7. Дать определение метки.

Типы данных

В языке ТP различают четыре основных типа данных: веществен­ные (обозначаемые в описательной части программы служебным словом REAL), целочисленные (INTEGER), символьные (CHAR) и логические (BOOLEAN).

Для представления вещественных данных (чисел) в ПЭВМ выде­ляется 6 байт. Диапазон возможных значений модуля вещественного числа, представленного в форме с плавающей точкой, находится в пределах от 2.9Е–39 до 1.7Е+38.

Целочисленные данные во внутреннем представлении ПЭВМ за­нимают 2 байта. Диапазон их возможных значений простирается от ‑32768 до +32767.

Для представления одного символа в ПЭВМ используется 1 байт. Обобщением символьного типа данных является строка символов (STRING), которая может занимать максимальное число символов в строке программы.

Данные логического типа занимают в машинном представлении 1 байт и могут принимать два значения: TRUE (истина) и FALSE (ложь).

Вопросы для самопроверки:

1. Перечислить основные типы данных языка ТP.

2. Раскрыть понятие вещественного типа данных.

3. Раскрыть понятие целочисленного типа данных.

4. Раскрыть понятие символьного типа данных.

5. Раскрыть понятие логического типа данных.

Выражения и стандартные функции

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

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

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

К знакам арифметических операций относятся:

* — умножение;

5/2 — вещественное деление (2,5);

5 DIV 2      — целочисленное деление (2);

45 MOD 7 — выделение минимального целого остатка от деления двух целых чисел (3);

+ — сложение;

– — вычитание.

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

К знакам логических операций относятся:

NOT — отрицание («НЕ»);

AND — логическое умножение («И»);

OR — логическое сложение («ИЛИ»).

Кроме того, к знакам логических операций относят знаки отно­шений: = (равно), <> (не равно), < (меньше), > (больше), <= (меньше или равно), >= (больше или равно).

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

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

Таблица 1.1

Значения операндов

NOT (A)

(A) OR (B) +

(A) AND (B) *

первого (А) второго (В)
FALSE (0) FALSE (0) TRUE (1) TRUE (1) FALSE (0) TRUE (1) FALSE (0) TRUE (1) TRUE (1) TRUE (1) FALSE (0) FALSE (0) FALSE (0) TRUE (1) TRUE (1) TRUE (1) FALSE (0) FALSE (0) FALSE (0) TRUE (1)

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

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

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

CONST <имя константы>=<значение константы>;

В языке ТP используются стандартные функции следующих ти­пов:

– стандартные функции преобразования;

– стандартные арифметические функции;

– функции порядкового типа;

– строковые процедуры и функции.

К числу стандартных функций преобразования относятся следу­ющие:

CHR(X:integer):char — определяет символ с заданным порядковым номером X;

ORD(X:char):integer — определяет порядковый номер переменной символьного типа, имеющей значение X;

ROUND(X:real):integer — округляет значение переменной Х ве­щественного типа до ближайшего целого;

TRUNC(X:real):integer — выделяет целую часть значения перемен­ной Х вещественного типа путем отбрасывания дробной части.

Стандартными арифметическими функциями называются следу­ющие:

ABS(X:real):real — определяет абсолютную величину (модуль) ар­гумента;

ARCTAN(X:real):real — вычисляет арктангенс аргумента;

COS(X:real):real — вычисляет косинус аргумента;

ЕХР(Х:геа1):геа1 — вычисляет экспоненту аргумента;

FRAC(X:real):real — определяет дробную часть аргумента;

INT(X:real):integer — определяет целую часть аргумента;

LN(X:real):real — вычисляет натуральный логарифм аргумента;

РI():геа1 — подставляет в программу значение числа «Пи», равное 3.1415926535897932385;

SIN(X:real):real — вычисляет синус аргумента;

SQR(X:real):real — возводит аргумент в квадрат,

SQRT(X:real):real — вычисляет квадратный корень аргумента.

Функция возведения в степень, большую чем 2, в языке ТP отсутствует. Поэтому данная операция моделируется с помощью стандартных арифметических функций ЕХР и LN следующим обра­зом: если необходимо значение переменной s возвести в степень r (где r>2), то требуемый результат вычисляется согласно выражению

EXP(r*LN(s)).

К числу функций порядкового типа относятся следующие:

ODD (X:integer):boolean — проверяет, является ли аргумент нечет­ным числом;

PRED(X) — возвращает предшествующее значение аргумента (тип результата совпадает с типом аргумента);

SUCC(X) — определяет последующее значение аргумента (тип результата совпадает с типом аргумента).

Строковыми процедурами и функциями называются следующие:

DELETE(VAR S:string; INDEX, COUNT:integer) — удаляет COUNT символов из строки S, начиная с позиции INDEX;

INSERT(SUBS:string; VAR S:string; INDEX:integer) — вставляет подстроку SUBS в строку S, начиная с позиции INDEX;

STR(X[:width[:decimals]]; VAR S:string) — преобразует численное значение Х в его строковое представление S;

VAL(S:string; VAR X:integer; VAR CODE: integer) — преобразует строковое значение S в его численное представление Х (параметр CODE содержит признак ошибки преобразования: равенство CODE=0 свидетельствует о том, что ошибки преобразования нет);

CONCAT(S1[, S2, …, SN]:string): string — выполняет конкатенацию (сцепление) последовательности строк;

COFY(S:string; INDEX, COUNT: integer) string — выделяет подст­року длиной COUNT символов из строки S, начиная с позиции INDEX;

LENGTH(S:string):integer — определяет текущую длину строки S;

POS(SUBS,S:string):integer — определяет позицию, начиная с ко­торой в строке S располагается подстрока SUBS (если функция принимает значение 0, это означает, что строка S не содержит подстроку SUBS).

 

Вопросы для самопроверки:

1. Дать определение арифметического выражения.

2. Перечислить знаки арифметических операций.

3. Перечислить порядок выполнения арифметических операций.

4. Дать определение логического выражения.

5. Перечислить знаки логических операций.

6. Перечислить знаки отношений.

7. Перечислить порядок выполнения логических операций.

8. Привести таблицу истинности выполнения логических операций.

9. Раскрыть понятие поименованной константы.

10. Перечислить стандартные функции преобразования.

11. Перечислить стандартные арифметические функции.

12. Перечислить функции порядкового типа.

13. Перечислить строковые процедуры и функции.

Массивы и записи

Массивом называется упорядоченная совокупность компонентов (элементов) одного из возможных в ТP типов данных. Описание массива задается следующим образом:

VAR <имя массива>: ARRAY [список индексов] OF <тип>;

где <имя массива> — уникальный идентификатор;

<список индексов> — перечисление размерностей массива с ука­занием минимального (начального) и максимального (конечного) значений каждой размерности;

<тип> — любой тип данных, используемых в ТP-программах.

Например:

VAR mas: ARRAY[1..2,1..3] OF INTEGER;

– двухмерный массив размерности 2 на 3 элемента, имеющий имя MAS. Все элементы массива принадлежат к целым числам.

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

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

Структура объявления типа записи такова:

TYPE <имя записи> = RECORD

<список полей>

END;

Здесь<имя записи> — правильный идентификатор;

<список полей> — представляет собой последовательность имен полей записи, между которыми ставится символ « ; ».

Например:

TYPE zap = RECORD

fio: STRING;

god_rogd: INTEGER;

END;

К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя записи, затем точку и имя поля, например: zap.fio или zap.god_rogd.

 

Вопросы для самопроверки:

1. Дать определение массива.

2. Привести описание массива в ТР-программе.

3. Привести форму обращения к элементу массива.

4. Дать определение переменной типа запись.

5. Привести описание переменной типа запись в ТР-программе.

6. Привести форму обращения к элементу записи.

Основные операторы

К числу основных операторов языка ТР относятся операторы присваивания, ввода, вывода, условного перехода, циклов, безуслов­ного перехода и выбора варианта.

Оператор присваивания служит для вычисления значений пере­менных. Он обозначается символом := и имеет следующую структуру:

<имя переменной> := <выражение>;

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

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

Оператор выполняется в два действия. Сначала вычисляется зна­чение выражения, стоящего справа от знака присваивания (:=). Потом полученное значение выражения присваивается переменной, стоящей слева от знака присваивания, при этом предыдущее зна­чение этой переменной будет потеряно.

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

READ(<список ввода>);

READLN(<список ввода>);

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

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

WRITE(<список вывода>);

WRITELN(<список вывода>);

Список вывода представляет собой последовательность разделен­ных запятыми выражений, имен переменных и констант, фрагментов выводимого текста. Текст, который необходимо вывести на экран без каких-либо изменений, заключается в апострофы (символ « ’ »). Опе­раторы WRITE и WRITELN отличаются тем, что последний осущес­твляет вывод элементов списка, начиная с новой строки. Оператор WRITELN без списка вывода производит переход на новую строку.

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

WRITE(<выражение>:N:M);

здесь N — количество позиций, отводимых под выводимое зна­чение выражения или переменной;

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

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

IF <условие> THEN

<оператор 1>

ELSE <оператор 2>;

Условие задается в виде логического выражения, истинность ко­торого влечет выполнение оператора 1, а ложность – оператора 2.

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

BEGIN

<простой оператор 1>;

· · ·

<простой оператор n>;

END;

Операторы цикла обеспечивают многократное выполнение прос­того или составного оператора, называемого телом цикла.

В языке ТP существуют три разновидности операторов цикла. Первая из них, реализующая цикл по схеме «ОТ И ДО», имеет следующую структуру:

FOR <имя переменной>:=<выражение 1> ТО <выражение 2> DO             <оператор>;

При выполнении данного оператора переменная, называемая счет­чиком цикла, увеличивает каждый раз на единицу свое целочислен­ное значение, изменяясь от величины, полученной в результате вычисления выражения 1, до величины, полученной в результате вычисления выражения 2.

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

Другой разновидностью оператора цикла является оператор, реализующий цикл по схеме «ДО ТЕХ ПОР, ПОКА» с проверкой условия в начале цикла. Он имеет следующую структуру:

WHILE <условие> DO

 <оператор>;

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

Третьей разновидностью оператора цикла является оператор, реа­лизующий цикл по схеме «ДО ТЕХ ПОР, ПОКА» с проверкой условия в конце цикла. Он имеет следующую структуру:

REPEAT

<группа операторов>

UNTIL <условие>;

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

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

GOTO <метка>;

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

CASE <Селекторное выражение> OF

<метка 1>:<оператор 1>;

<метка 2>:<оператор 2>;

<метка n>:<оператор n>;

END;

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

 

Вопросы для самопроверки:

1. Раскрыть понятие оператора присваивания.

2. Дать характеристику операторов ввода.

3. Дать характеристику операторов вывода.

4. Сформулировать правило форматирования вывода.

5. Раскрыть структуру условного оператора (оператора условного перехода).

6. Раскрыть структуру оператора цикла FOR.

7. Раскрыть структуру оператора цикла WHILE.

8. Раскрыть структуру оператора цикла REPEAT.

9. Дать характеристику оператора безусловного перехода.

10. Раскрыть структуру оператора выбора варианта.

Процедуры и функции

Процедуры и функции в языке ТP представляют собой раз­новидности подпрограмм.

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

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

PROCEDURE <имя процедуры>;

BEGIN

 . . . } группа операторов

END.

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

PROCEDURE <имя процедуры>;

операторов описания объектов:

LABEL <список меток>;

CONST <объявление поименованных констант>;

TYPE < определение типов данных>;

VAR < определение переменных>;

PROCEDURE <описание процедур>;

FUNCTION <описание функций>;

и исполняемой части:

BEGIN

 . . . } группа операторов

END;

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

При описании процедуры с параметрами необходимо перечислить переменные-параметры, которые используются при выполнении про­цедуры. Такие параметры указываются в круглых скобках после имени процедуры с указанием их типов:

PROCEDURE <имя процедуры> (VAR <имя переменной>: <тип>…);

Далее приводятся операторы описания объектов и исполняемая часть процедуры.

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

Для обращения к процедуре достаточно указать в соответствующем месте общей ТP-программы ее имя и перечислить фактические параметры в круглых скобках:

<Имя процедуры> (параметр 1, …, параметр N);

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

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

В качестве формальных параметров могут выступать не только переменные (формальные параметры-переменные), но и выражения, константы (формальные параметры-значения). Перед подобными параметрами в списке формальных параметров служебное слово VAR не ставится:

PROCEDURE <имя процедуры>(<имя переменой>:<тип>…);

Формальные параметры-переменные и параметры-значения могут быть объединены внутри единого списка параметров в заголовке процедуры:

PROCEDURE primer(VAR a,b,c:REAL; d,e:INTEGER);

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

Функции в языке ТP отличаются от процедур следующим:

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

– вычисленное значение функции присваивается непосредствен­но имени функции (как обычной переменной);

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

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

Вопросы для самопроверки:

1. Дать определение подпрограммы.

2. Пояснить понятие локальных объектов.

3. Дать определение формальных параметров-переменных.

4. Дать определение формальных параметров-значений.

5. Дать определение фактических параметров.

6. Раскрыть структуру подпрограммы.

7. Раскрыть правила вызова процедур и функций в ТП-программе.

8. Перечислить отличительные особенности функций и процедур.

Работа с файлами

Данные, предназначенные для длительного хранения, располага­ются на внешних запоминающих устройствах в виде файлов. Файлом называется совокупность записей, имеющих одну и ту же структуру (тип) данных.

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

В ТP существует два стандартных файла – INPUT и OUTPUT, которые, соответственно, поддерживают операции по вводу данных с экрана дисплея с помощью операторов READ и READLN и операции по выводу данных на экран с помощью команд WRITE и WRITELN. Эти файлы в программе не описываются. Все же осталь­ные файлы должны быть обязательно описаны в программе следу­ющим образом:

VAR <имя файла> : FILE OF <тип>;

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

АSSIGN(<имя файла>, ‘<имя набора данных>’);

Далее производится настройка либо на операцию записи данных в файл:

(Rewrite(<имя файла>)),

либо на операцию считывания данных из файла:

(reset(<имя файла>)).

Операция записи в файл производится по команде:

Writeln(<имя файла>,<имя переменной>);

а операция считывания из файла – по команде:

readln(<имя файла>,<имя переменной>);

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

 

Вопросы для самопроверки:

1. Дать определение последовательного файла.

2. Дать характеристику стандартных файлов INPUT и OUTPUT.

3. Раскрыть структуру описания файла в ТP-программе.

4. Описать способ соединения файла в ТP-программе с физи­ческим набором данных.

5. Описать способ настройки файла в ТP-программе на запись.

6. Описать способ настройки файла в ТP-программе на считы­вание.

7. Дать определение буферной переменной.

 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 452.

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