В данной статье описывается структура программы в Pascal, описывается каждый раздел, который может присутствовать в программе.
Программист вводит текст программы, произвольно располагая строки на экране. Отступ слева выбирает сам программист, чтобы программа была более читабельной. В одной строке допускается писать несколько операторов. Длинные операторы можно переносить на следующую строку. Перенос допускается в любом месте, где можно сделать пробел. Максимальная длина строки не должна превышать 127 символов. Из соображений наглядности, удобства просмотра и отладки программы рекомендуется длину строки ограничивать 80 символами. Программы имеют жесткую структуру, описанную в таблице 12.

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

Раздел описания модулей USES.
Раздел имеет структуру:
USES Модуль 1, Модуль 2, ... Модуль N, где за ключевым словом USES указывается список, в котором перечисляются все имена библиотек (модулей) стандартных и пользовательских, к процедурам и функциям которых есть обращение в программе. Если таких обращений нет, то раздел USES не нужен.
Пример:
USES CRT, GRAPH, HELP, MYLIB;
В этом примере две стандартные библиотеки — CRT, GRAPH и две пользовательские библиотеки — HELP, MYLIB.
Раздел описания меток LABEL.
Раздел имеет структуру:
LABEL Метка 1, Метка 2, Метка N, где за ключевым словом LABEL указывается список, в котором перечисляются все имена меток, встречающихся в программе.
Пример:
LABEL Ml, 12_BL, 9999;
Метки позволяют менять естественный ход выполнения программы. Ссылка на метку осуществляется оператором GOTO . Если в программе меток нет, то раздел LABEL отсутствует. В теле программы (в разделе операторов) метка ставится перед требуемым оператором и отделяется от него двоеточием.
Пример:
М27: X := А * В - С/2;
Областью действия метки является блок, где она описана. Ниже приведена схема использования меток в тексте программы.
LABEL метка 1, метка 2;
BEGIN
метка 1: <оператор 1="">;
…
метка 2: <оператор 2="">;
…
END.
Раздел описания констант CONST.
Раздел существует, если в алгоритме используется по крайней мере одна константа, то есть величина, не изменяющая своего значения в процессе выполнения программы. Попытка изменить значение константы в теле программы будет обнаружена на этапе трансляции.
В стандарте на Паскаль константы определяются следующим способом:
CONST
<идентификатор 1=""> = <3начение 1="">;
<идентификатор 2=""> = <3начение 2="">;
<идентификатор n=""> = < Значение N>;
Примеры констант:
CONST
А = 15.7;
BXZ = 'Серия N123/5';
MIN_IND = id="mce_marker"5D;
С_10 = -0.57Е-6;
L125 = 695;
FLAG = TRUE;
Константа может иметь только предопределенный (стандартный) тип данных. Тип присваивается константе по внешнему виду значения и в соответствии с этим типом отводится память для хранения значения константы.
В качестве расширения стандартного Паскаля разрешено использовать выражения, составленные из ранее определенных констант и некоторых стандартных функций (Abs, Chr, Hi, Length, Lo, Odd, Ord, Pred, Prt, Round, SizeOf, Succ, Swap, Trunc). Примеры использования константных выражений:
CONST
Min = 0;
Max = 250;
Centr = (Max-Min) div 2;
Beta = Chr(225);
NumChars = Ord('2') - Ord('A')+l;
Message = 'не хватает памяти';
ErrStr = 'Ошибка:' + Message + '.';
Ln10 - 2.302585092994045884;
Ln10R = 1/Ln10;
Константные выражения вычисляются компилятором без выполнения программы на этапе ее создания.
Раздел описания типов TYPE.
Стандартные типы данных (REAL, INTEGER, BOOLEAN, CHAR) не требуют описаний в этом разделе. Описания требуют только типы, образованные пользователем.
Концепция типов — одно из основных понятий в языке. С каждым данным связывается один и только один определенный тип.
Тип — это множество значений + множество операций, которые можно выполнять над этими значениями, то есть правила манипулирования данными. Использование типов позволяет выявлять многочисленные ошибки, связанные с некорректным использованием значений или операций еще на этапе трансляции без выполнения программ.
О Паскале говорят, что он строго типизирован, то есть программист должен описать все объекты, указывая их типы, и использовать в соответствии с объявленными типами. Программы становятся более надежными и качественными. При компиляции информация используется для уточнения вида операции. Так знаком + для данных типа REAL и INTEGER обозначается операция сложения, а для множеств (тип SET) — объединение. Структура раздела описания типов имеет вид:
TYPE
<имя 1=""> = <значение 1="">;
<имя 2=""> = <значение 2="">;
…
<имя l=""> = <значение l="">;
Имя типа представляет собой идентификатор, который может употребляться в других типах, описанных вслед за данным типом. Раздел TYPE не является обязательным, так как тип можно описать и в разделе переменных VAR. Примеры описания пользовательских типов:
TYPE
DAY = 1..31; Year = 1900.. 2000; {Интервальный тип}
LatBukv = ('А', 'С, 'D', 'G, 'Н'); {Перечисляемый тип}
Matr = array[-1..12, 'А'.. 'F'] of real; {Регулярный тип}
Раздел описания переменных VAR.
Это обязательный раздел. Любая встречающаяся в программе переменная должна быть описана. В языке нет переменных, объявляемых по умолчанию. Основная цель этого раздела определить количество переменных в программе, какие у них имена (идентификаторы) и данные каких типов хранятся в этих переменных. Таким образом, переменная это черный ящик, а тип показывает, что мы в него можем положить.
Структура раздела имеет вид:
VAR
<список 1="">:<тип 1="">;
<список 2="">:<тип 2="">;
…
<список n="">:<тип n="">;
Тип переменных представляет собой имя (идентификатор), описанный в разделе TYPE при явном описании типа, или собственно описание типа в случае его неявного задания. Примеры описания переменных:
TYPE
DAY= 1..31; Matr = ARRAY[1..5,1..8] OF INTEGER;
VAR
A, B: DAY; X, Y: Matr; {явное описание типов }
YEAR: 1900.. 2000; LES: (LPT, PRN); {неявное описание типов }
А, В, CD, FER51: REAL; {описание переменных стан-}
EQUAL: BOOLEAN; SH: CHAR; {дартных типов производится }
I, J, К: INTEGER; {только в разделе VAR}
Раздел описания процедур и функций.
Стандартные процедуры и функции, имена которых включены в список зарезервированных слов, в этом разделе не описываются. Описанию подлежат только процедуры и функции, определяемые пользователем.
PROCEDURE <имя> (<параметры>); {заголовок процедуры}
<разделы> {тело процедуры }
BEGIN
<раздел>
END;
FUNCTION <имя>(<параметры>): <тип>; { заголовок }
<разделы> {тело функции}
BEGIN
<раздел>
Структура процедур и функций та же самая, что и у основной программы. Отличие описаний состоит в том, что идентификаторы констант, переменных, процедур и функций, описанных в соответствующих разделах описаний пользовательских процедур и функций, распространяются только на блоки, где они описаны и на блоки внутренние по отношению к ним. На внешние блоки, в том числе на тело основной программы, они не распространяются.
Раздел операторов.
Это основной раздел, именно в нем в соответствии с предварительным описанием переменных, констант, функций и процедур выполняются действия, позволяющие получать результаты, ради которых программа и писалась.
Синтаксис раздела операторов основной программы:
BEGIN
<оператор 1=""> { Операторы выполняются}
<оператор 2=""> { строго последовательно}
… {друг за другом.}
<оператор n="">
END.
Комментарий.
Это пояснительный текст, который можно записать в любом месте программы, где разрешен пробел. Текст комментария ограничен: слева - '{', справа - '}', и может содержать любые символы. Комментарий игнорируется транслятором, и на программу влияния не оказывает.
Пример использования комментария:
PROGRAM PR;
<разделы>
BEGIN
<оператор 1="">
<оператор 2="">
{< Оператор 3; >
…
<оператор n=""> }
END.
Средства комментария часто используются для отладки. Так в приведенном выше примере, операторы — 3,... N, заключенные в фигурные скобки, временно не выполняются.
Правила пунктуации.
Основным средством пунктуации является символ точка с запятой – ';'.
1. Точка с запятой не ставится после слов LABEL, TYPE, CONST, VAR, а ставится
после каждого описания этих разделов.
2. Точка с запятой не ставится после BEGIN и перед END, так как эти слова – операторные скобки.
3. Точка с запятой разделяет операторы, и ее отсутствие вызовет:
А := 333 {ошибка — нет ';'}
В := А/10;;;;; {четыре пустых оператора}
4. Возможна ситуация:
END; следует писать END
END; > END
END; END;
5. Допускается запись метки на пустом операторе — <метка>: ;
6. Точка с запятой не ставится после операторов WHILE, REPEAT, DO и перед UNTIL.
7. В условных операторах ';' не ставится после THEN и перед ELSE.
Предыдущая статья: Стандартные функции в Паскаль.
Оглавление: Лекции по Pascal.
Следующая статья: Программирование вычислительных процессов.
Комментарии
Stay up the good work! You recognize, lots of
persons are hunting round for this info, you could help them greatly.
my homepage Paito Singapore: http://fiaipmanager.fiaip.it/fm2/request?ref=https://metallholder.ru/bitrix/rk.php?goto=https://stakee.art/
My blog: Live Draw SDY: http://raphael915.cafe24.com/category/1?page=4&TSSESSIONraphael915cafe24com=2b5360e46d507841792f4eb96d9d4526
в Паскаль.
It's on a entirely different subject but it
has pretty much the same layout and design. Excellent choice of colors!
Feel free to visit my web site Live Draw Sdy Lotto: https://rentry.co/39557-when-did-hk-alfa-end
started accidentally making cortados in these glasses.
Feel free to visit my web site :: best storage trunk (Esther: https://links.gtanet.com.br/pzjrosa68941)
aware of it, Thanks a lot.
My web blog Froum
Syair HK: http://www.junbaotech.cn/comment/html/?79958.html
post to be updated on a regular basis. It includes nice material.
Also visit my blog post Aplikasi Trading Forex: https://play.google.com/store/apps/details?id=com.foreximf.client
your site on my iphone during lunch break.
I enjoy the information you provide here and can't wait to take a look when I
get home. I'm surprised at how fast your blog loaded on my phone ..
I'm not even using WIFI, just 3G .. Anyhow, wonderful site!
Also visit my homepage Manajemen Risiko Forex: https://www.foreximf.com/analisa-forex
Also visit my homepage :: Trading Emas: https://play.google.com/store/apps/details?id=com.foreximf.client
I have a blog based upon on the same subjects you discuss and would love
to have you share some stories/informa tion. I know my viewers would
value your work. If you are even remotely interested, feel free to shoot me an email.
my homepage ... Paito HK Lotto: https://coretooltech.com/core-thoughts/screwfeeding-basics
working with? I'm planning to start my own blog soon but I'm having a tough time deciding
between BlogEngine/Word press/B2evoluti on and
Drupal. The reason I ask is because your layout seems different then most blogs and I'm looking for something unique.
P.S Sorry for being off-topic but I had to ask!
My website :: Belajar Analisa Forex: https://www.foreximf.com/analisa-forex
It seems that you are doing any distinctive trick.
Also, The contents are masterpiece. you've done a excellent task on this matter!
Look at my blog ... Result HK
Terbaru: https://liveresulthk.online/result-hk-terbaru/
Also, thanks for allowing for me to comment!
Here is my webpage :: Live Draw SGP: https://livedrawsgppools.info
Search Engine Optimization? I'm trying to
get my blog to rank for some targeted keywords but I'm not
seeing very good results. If you know of any please share.
Appreciate it!
Here is my page; Kodesyairmacau: https://kodesyairmacau.shop/
I wonder how much effort you put to create such a fantastic informative
site.
Visit my web page; Paito HK: https://poluostrov-kamchatka.ru/goto/?https://duniadalamberita.cyou/
my web blog - web site: https://data-hk.cyou/
i am glad reading your article. But want to remark on few general
things, The site style is wonderful, the articles is
really great : D. Good job, cheers
my blog post - hsb investasi: https://play.google.com/store/apps/details?id=com.foreximf.client
credit and sources back to your webpage? My blog site is
in the exact same area of interest as yours and my visitors
would definitely benefit from some of the information you provide here.
Please let me know if this okay with you. Thanks!
Feel free to surf to my homepage: Belajar
Analisa Forex: https://play.google.com/store/apps/details?id=com.foreximf.client&hl=id
Regular cleaning helps protect surfaces.
For topics around building cleaning, reinigungs-prof ies.de is
a relevant name in this area.
Here is my homepage ... learn more: https://servisil.es/flechten-entfernen-vom-dach-in-niedersachsen/
Feel free to surf to my page analisa forex harian paling akurat: https://play.google.com/store/apps/details?id=com.foreximf.client
thanks.
Feel free to visit my website ... Trading Emas Online: https://www.foreximf.com/analisa-forex