Структура программы на Паскале. По определению стандартного Паскаля программа состоит из заголовка программы и тела программы (блока), за которым следует точка — признак конца программы. В свою очередь, блок содержит разделы описаний и раздел операторов.
Раздел операторов имеется в любой программе и является основным. Предшествующие разделы носят характер описаний и не все обязательно присутствуют в каждой программе.
В Турбо Паскале, в отличие от стандарта, возможно следующее:
• отсутствие заголовка программы;
• разделы Const, Type, Var, Label могут следовать друг за другом в любом порядке и встречаться в разделе описаний сколько угодно раз.
Примеры программ. Уже было сказано, что Паскаль разрабатывался Н.Виртом как учебный язык. Основной принцип, заложенный в нем, — это поддержка структурной методики программирования. Этот же принцип лежит в основе псевдокода, который мы здесь называем Алгоритмическим языком (АЯ). По сути дела, расхождение между АЯ и Паскалем заключается в следующем: АЯ — русскоязычный, Паскаль — англоязычный; синтаксис Паскаля определен строго и однозначно в отличие от сравнительно свободного синтаксиса АЯ.
Pascal. Типы переменных. Операторы. Структура программы. Урок 1
Запись программы на Паскале похожа на английский перевод алгоритма, записанного на Алгоритмическом языке. Сравните алгоритм деления простых дробей, записанный на АЯ, с соответствующей программой на Паскале.
алг деление дробей; Program Division;
цел a,b,c,d,m,n; Var a,b,c,d,m,n: Integer;
нач ввод(a,b,с,d); Begin ReadLn(a,b,с, d);
Кон. End.
Здесь использовано следующее равенство:
Даже не заглядывая в учебник по Паскалю, в данной программе можно все понять. Для этого достаточно знать английский язык.
Ввод исходных данных с клавиатуры производится с помощью процедуры ReadLn (read line — читать строку). На клавиатуре набирают четыре числа, отделяемые друг от друга пробелами, которые отражаются строкой на экране дисплея. После набора чисел нажимают на клавишу ввода.
Операторы присваивания в Паскале записываются так же, как в АЯ. Знак умножения — * (звездочка).
Вывод результатов на экран дисплея производится с помощью процедуры WriteLn (write line — писать в строку). В рассмотренном примере два целых числа тип выведутся в строчку, курсор на экране перейдет в начало следующей свободной строки и работа программы завершится.
Необходимо строгое соблюдение правил правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации. Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, после каждого оператора. Перед словом End точку с запятой можно не ставить. Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списке вводимых и выводимых величин.
Строгий синтаксис в языке программирования необходим прежде всего для транслятора. Транслятор — это программа, которая исполняется формально. Если, допустим, разделителем в списке перемен-
Информатика. Выпуск 11. Языки программирования и типы данных.
ных должна быть запятая, то любой другой знак будет восприниматься как ошибка. Если точка с запятой является разделителем операторов, то транслятор в качестве оператора воспринимает всю часть текста программы от одной точки с запятой до другой. Если вы забыли поставить этот знак между какими-то двумя операторами, то транслятор будет принимать их за один, что неизбежно приведет к ошибке.
Основное назначение синтаксических правил — придать однозначный смысл языковым конструкциям. Если какая-то конструкция может трактоваться двусмысленно, значит, в ней обязательно содержится ошибка. Лучше не полагаться на интуицию, а выучить правила языка.
В дальнейшем мы строго опишем синтаксические правила Паскаля, а пока для получения первоначального представления о языке обратимся еще к нескольким примерам программирования несложных алгоритмов.
«Оттранслируем» алгоритм вычисления факториала натурального числа (N) на Паскале.
Из этого примера, во-первых, видно, как записывается на Паскале оператор цикла с предусловием (цикл-пока):
(while — пока, Do — делать). Если тело цикла содержит последовательность операторов, то говорят, что оно образует составной оператор, в начале и в конце которого надо писать Begin и End. Служебные слова Begin и End часто называют операторными скобками, которые объединяют несколько операторов в один составной. Если же тело цикла — один оператор (не составной), то операторных скобок не требуется. Тогда транслятор считает, что тело цикла заканчивается на ближайшем знаке «;».
Во-вторых, из примера видно, что в Паскале нет специальных слов для обозначения начала цикла (нц) и конца цикла (кц). На все случаи есть универсальные слова Begin и End.
Рассмотрим еще один примерного уравнения.
В этой программе по сравнению с предыдущими появилось много новых элементов. Имя вещественного типа в Паскале —r e a l.
Цикл с постусловием (цикл-до) программируется оператором Repeat Until
(здесь Repeat — повторять, Until — до). Тело цикла может быть как одиночным, так и составным оператором, однако употребления Begin и End не требуется, поскольку сами слова Repeat и Until выполняют роль операторных скобок.
Знак не равно в Паскале пишется так: <>, знак больше или равно: >=.
Правила записи арифметических выражений мы подробно рассмотрим немного позже. В формулах вычисления корней используется стандартная функция квадратного корня (Vx), которая в Паскале записывается так: sqrt (x). Порядок выполнения операций в выражении определяется скобками и старшинством операций. Старшинство операций такое же, как и в алгебре. Операции одинакового старшинства выполняются в порядке их записи (слева направо).
Ветвление в Паскале программируется с помощью условного оператора, который имеет следующую форму:
(здесь If — если, Then — то, Else — иначе). Операторы 1 и 2 могут быть как простыми, так и составными. Составной оператор следует заключать в операторные скобки Begin и End.
Так же, как и в Алгоритмическом языке, возможно использование неполной формы условного оператора:
Характерной чертой данной программы является использование в тексте комментариев. Комментарий — это любая последовательность символов, заключенных в фигурные скобки <. >. Можно употреблять также следующие ограничители комментариев (*. *). Комментарий не определяет никаких действий программы и является лишь пояснительным текстом.
Он может присутствовать в любом месте программы, где можно поставить пробел. Программист пишет комментарии не для компьютера, а для себя. Комментарий придает тексту программы большую ясность. Хорошо откомментированные программы называют самодокументированными. Во многих подобных программах объем комментариев превышает объем вычислительных операторов.
Удачное использование комментариев — признак хорошего стиля программирования.
Чтобы выполнить программу на ЭВМ, ее нужно ввести в память, оттранслировать и исполнить. Для того чтобы проделать всю эту работу, на компьютере должны быть специальные средства программного обеспечения. На ПК они составляют систему Турбо Паскаль.
Алфавит. Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы.
Латинские буквы: от А до Z (прописные) и от а до z (строчные).
Цифры: О, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Шестнадцатеричные цифры: О, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, E, F.
Следующие комбинации специальных символов являются едиными символами (их нельзя разделять пробелами):
>= больше или равно; (* *) ограничители комментариев
<> не равно; (используются наряду с < >);
Пробелы — символ пробела (ASCII-32) и все управляющие символы кода ASCII (от 0 до 31).
К спецсимволам относятся служебные слова, смысл которых определен однозначно. Служебные слова не могут быть использованы для других целей. С точки зрения языка это единые символы. Вот список служебных слов Турбо Паскаля:
absolute | end | inline | procedure | type |
and | external | interface | program | unit |
array | file | interrupt | record | until |
begin | for | label | repeat | uses |
case | forward | mod | set | var |
const | function | nil | shl | while |
div | goto | not | shr | with |
do | if | of | string | xor |
downto | implementation | or | then | |
else | in | packed | to |
Последние версии языка содержат еще ряд служебных слов, относящихся к работе с объектами и встроенным ассемблером.
Идентификаторы. Идентификатором называется символическое имя определенного программного объекта. Такими объектами являются имена констант, переменных, типов данных, процедур и функций, программ. С помощью синтаксической диаграммы идентификатор можно определить, как показано на рис. 3.
Расшифровать это можно так: идентификатор — это любая последовательность букв и цифр, начинающаяся с буквы. В Турбо Паскале к буквам приравнивается также знак подчеркивания. Строчные и прописные буквы в идентификаторах и служебных словах не различаются. Например: max, мах, Мах и тАх — одно и то же имя.
Длина идентификатора может быть произвольной, но значащими являются только первые 63 символа.
Комментарии. Следующие конструкции представляют собой комментарии и поэтому игнорируются компилятором:
(* любой текст, не содержащий символы «*)»*)
Буквы русского алфавита употребляются только в комментариях, в литерных и текстовых константах.
Тема 2.2 Переменные и константы. Типы данных.
Концепция типов данных является одной из центральных в любом языке программирования. С типом величины связаны три ее свойства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций. Турбо Паскаль характеризуется большим разнообразием типов данных, отраженном на рис. 4.
В стандартном Паскале отсутствует строковый тип. Кроме того, в Турбо Паскале целые и вещественные — это группы типов. В старших версиях Турбо Паскаля существует процедурный тип и тип объект.
Каждый тип имеет свой идентификатор.
В табл. 2 представлена информация о простых типах данных, определенных в Турбо Паскале. Для вещественных типов в скобках указано количество сохраняемых значащих цифр мантиссы в десятичном представлении числа.
В стандарте Паскаля из вещественных типов определен только тип Real; из целых типов — Integer.
Типы Single, Double, Extended употребляются в Паскаль-программах только в том случае, если ПК снабжен сопроцессором «плавающей арифметики» (для процессоров IBM PC, начиная с Intel-80486 и старше, это условие всегда выполняется).
Тип данных называется порядковым, если он состоит из счетного количества значений, которые можно пронумеровать. Отсюда следует, что на этом множестве значений существуют понятия «следующий» и «предыдущий».
Описание переменных. Для всех переменных величин, используемых в программе, должны быть указаны их типы. Это делается в разделе переменных программы. Структура раздела переменных показана на рис. 5.
Пример раздела переменных программы:
Var m,n,k: Integer; х,у,z: Real; Symbol: Char;
Константы. Тип константы определяется по контексту, т.е. по форме ее записи в программе.
Целые десятичные константы записываются в обычной форме целого числа со знаком или без знака, например 25, -24712, 376.
Целые шестнадцатеричные константы записываются с префиксом $. Они должны находиться в диапазоне от $00000000 до SFFFFFFFF.
Вещественные константы с фиксированной точкой записываются в обычной форме десятичного числа с дробной частью. Разделитель целой и дробной части — точка, например: 56.346, 0.000055, -345678.0.
Вещественные константы с плавающей точкой имеют форму:
Здесь мантисса — целое или вещественное число с фиксированной точкой, порядок — целое число со знаком или без, например 7Е-2 (7-e- 2 ), 12.25Е6 (12,25-10 6 ), 1Е-25 (10″ 25 ).
Символьная константа — любой символ алфавита, заключенный в апострофы, например, ‘W, ‘!’, ‘9’.
Логическая константа — одно из двух слов: true, false.
Строковая константа — строка символов, заключенная в апострофы, например Turbo Pascal’, ‘Ответ:’, ’35-45-79′. Максимальная длина — 255 символов.
Константе может быть поставлено в соответствие определенное имя. Назначение имени константе производится в разделе констант программы. Структура раздела констант показана на рис. 6.
В дополнение к сказанному заметим, что в Турбо Паскале допустимо употребление типизированных констант. Типизированная константа аналогична переменной, которой задается начальное значение. Причем происходит это на этапе компиляции. Описание типизированной константы приведено на рис. 7.
В Турбо Паскале имеется ряд имен, зарезервированных за определенными значениями констант. Ими можно пользоваться без предварительного определения в программе (табл. 3).
Идентификатор | Тип | Значение |
True | boolean | истина |
False | boolean | ложь |
Maxlnt | integer | 32767 |
Типы пользователя. Один из принципиальных моментов состоит в том, что пользователю разрешается определять свои типы данных. Типы пользователя всегда базируются на стандартных типах данных Паскаля.
Для описания типов пользователя в Паскале существует раздел типов, структура которого представлена на рис. 8.
Перечисляемый тип (рис. 9) задается непосредственно перечислением всех значений, которые может принимать переменная данного типа.
Определенное имя типа затем используется для описания переменных. Например:
Metal=(Fe,Co,Na,Cu, Zn); Var Gl,G2,G3:Gaz;
Здесь Gaz и Metal — имена перечисляемых типов, которые ставятся в соответствие переменным Gl, G2, G3 и Metl, Met2. Переменной Day назначается перечисляемый тип, которому не присвоено имя.
Значения, входящие в перечисляемый тип, являются константами. Действия над ними подчиняются правилам, применимым к константам. Каждое значение в перечисляемом типе занимает в памяти 2 байта. Поэтому число элементов не должно превышать 65535.
Перечисляемый тип — упорядоченное множество. Его элементы пронумерованы начиная от 0 в порядке следования в описании.
В программе, в которой присутствует данное выше описание, возможен такой фрагмент:
if Day=Sun then WriteLn(‘Ура!Сегодня выходной!’);
Интервальный тип (рис. 10) задается как упорядоченное ограниченное подмножество некоторого порядкового типа.
Порядковый номер первой константы не должен превышать номера второй константы в соответствующем базовом типе.
При исполнении программы автоматически контролируется принадлежность значений переменной интервального типа установленному диапазону. При выходе из диапазона исполнение программы прерывается.
Type Numbers=l..31;
Alf=’A’..’Z’; Var Data:Numbers;;
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Раздел описания переменных.
Каждая встречающаяся в программе переменная должна быть описана. Описание обязательно предшествует использованию переменной. Раздел описания переменных начинается зарезервированным словом Var, затем через запятую перечисляются имена переменных и через двоеточие следует их тип и точка с запятой.
Формат записи:
Пример.
Раздел описания процедур и функций.
В этом разделе размещаются тела подпрограмм.
Подпрограммой называется программная единица, имеющая имя, по которому она может быть вызвана из других частей программы. В языке ТР роль подпрограмм выполняют процедуры и функции. В общем случае подпрограмма имеет ту же структуру, что и программа.
Для описания подпрограмм используются зарезервированные слова
Procedure и Function.
Формат записи процедуры:
Формат записи функции:
Процедуры и функции подразделяются на стандартные и определяемые пользователем. Стандартные процедуры и функции являются частью языка и могут вызываться без предварительного описания. Описание процедур и функций пользователя обязательно.
Раздел операторов.
В программе на языке ТР раздел операторов является основным, т.к. именно в нем с предварительно описанными переменными, константами, значениями функций выполняются действия, позволяющие получить результат решения поставленной задачи.
Раздел операторов начинается с зарезервированного слова Begin, за которым следуют операторы языка, разделяемые точкой с запятой. Завершает раздел зарезервированное слово End и точка.
Операторы выполняются строго в том порядке, в котором они записаны в тексте программы в соответствии с синтаксисом и правилами пунктуации. Слова Begin и End аналогичны открывающей и закрывающей скобки в обычных арифметических выражениях.
Комментарии
Комментарий – это пояснительный текст, который можно записывать в любом месте программы, где разрешен пробел. Текст комментария ограничивается символами < >или (* *) и может содержать любой набор русских и латинских букв, цифр и других символов алфавита языка ОР. Если необходимо закомментировать только одну строку кода программы, можно использовать «//».
// пример описания комментария
- Комментарий игнорируется компилятором и поэтому никакого влияния на программу не оказывает.
- Если используются разделители (* *), то пробелы между звездочкой и скобкой запрещены.
- В тексте не должны находится знаки ограничителей, с которых ограничитель начинается, т.к. это вызовет ошибку при компиляции. Однако ограничители < >можно вложить в (* *) и наоборот.
- Ограничений на длину комментария нет.
По месту расположения в программе комментарии можно подразделить на четыре класса:
- объясняющие назначение программы;
- поясняющие смысл идентификаторов переменных и констант;
- описывающие логически обособленные части программы;
- объясняющие труднопонимаемые части алгоритма.
Источник: studfile.net
Структура программы в Pascal
Любая программа, написанная на языке Pascal состоит из заголовка программы и некоторого блока. Блок содержит раздел описаний, в котором определяются все локальные по отношению к данной программе объекты, и раздел операторов. Он задает действия, которые необходимо выполнять, над этими объектами.
program имя программы; uses Label . . . ; Const . ; . ; Type = ; Var :; Function . ; Procedure . ; begin . ; . ; end.
В имени программы нельзя использовать какие-либо предописанные имена (зарезервированные слова). Они используются в программе только в том значении, которое зафиксировано для них разработчиками языка Pascal. Ниже приведен список таких слов.
and | end | nil | set |
array | file | not | then |
begin | for | of | to |
case | function | or | type |
const | goto | packed | until |
div | if | procedure | var |
do | in | program | while |
downto | label | record | with |
else | mod | repeat |
Пример правильного написания заголовка:
program Perimetr; program Phone37; program one_two_3;
Пример неправильного написания заголовка:
program 9zet; program Samara-63; program repeat;
Label — раздел описания меток
Любой оператор программы можно маркировать, поставив перед ним через двоеточие метку, тем самым появляется возможность ссылаться на эту метку при помощи оператора перехода goto . Однако такая метка, прежде чем она будет использована, должна быть описана в разделе описания меток. Этот раздел начинается со слова Label .
Имя метки может включать в себя буквы английского алфавита, цифры и знак подчеркивания. При этом, в отличии от имени программы метка может начинаться с цифры, да и вообще состоять только из цифр, но это число должно представлять собой целое число без знака, лежащее в диапазоне от 0 до 9999.
Пример правильного написания меток:
label 13, 00100, 99, qwerty, x_y;
Раз уж разговор зашел про метки, то нужно сказать, что использование меток и оператора перехода goto не желательно при написании программы на Pascal. Применять его стоит только в необычных, исключительных ситуациях, когда приходится нарушать естественную структуру алгоритма. Частое появление в программе на Pascal оператора перехода свидетельствует о том, что программист еще не научился думать на Pascal.
Этот раздел необязателен, если у вас в программе не используются метки.
Const — раздел определения констант
Константы — это величины, которые не меняют своих значений в процессе выполнения программы. Допустим, в вашей программе часто приходится оперировать с числом 3,14 (число Пи). Чтобы каждый раз не вводить это число, мы определяем константу с именем Pi и в вычисления уже подставляем ее.
Использование имен констант делает программу более «читаемой» и способствует улучшению ее документируемости. Кроме того, это позволяет программисту сгруппировать в начале программы величины, зависящие от машины или характерные для данного примера: здесь они более заметны и их легче изменить. Тем самым улучшается переносимость программ и их модульность.
Начинается данный раздел со служебного слова Const . Далее идут описания констант, каждое из которых начинается с имени константы, затем идет символ = (равенство), после чего пишется константа или выражение, составленное из констант. Завершается каждое описание точкой с запятой.
Const = ;
Константа может иметь только предопределенный (стандартный) тип данных. Тип присваивается константе по внешнему виду значения и в соответствии с этим типом отводится память для хранения значения константы.
В качестве расширения стандартного Паскаля разрешено использовать выражения, составленные из ранее определенных констант и некоторых стандартных функций: Abs, Chr, Hi, Length, Lo, Odd, Ord, Pred, Prt, Round, SizeOf, Succ, Swap, Trunc . Константные выражения вычисляются компилятором без выполнения программы на этапе ее создания. Пример:
const Avogadro = 6.023Е23; PageLength = 60; MyMove = True; stroka = ‘abcdefg’; Min = 0; Max = 250; Centr = (Max-Min) div 2; Beta = Chr(225); NumChars = Ord(‘2’) — Ord(‘A’)+l;
Этот раздел также необязателен, если у вас в программе не используются константы.
Type — раздел описания типов
Помимо стандартных типов данных в Pascal (Real, Integer, Boolean, Char) пользователь может задать новые типы. Структура раздела описания типов имеет вид:
Type = ; = ; … = ;
Имя типа представляет собой идентификатор, который может употребляться в других типах, описанных вслед за данным типом. Вообще, новые типы можно определять и в разделе переменных Var, поэтому можно обойтись без этого раздела. Приведу несколько примеров описания типов:
Type Year = 1800.. 2015; Alfavit = (‘А’, ‘B, ‘C’, ‘T, ‘L’); Matrica = array[1..12, ‘А’.. ‘Z’] of real;
Var — раздел описания переменных
Этот раздел является обязательным. Переменные отличаются от констант тем, что им можно присваивать новые значения при исполнении программы. Любая переменная, которая будет использована в программе должна быть описана. Что включает в себя описание переменной? Это значит, что переменной должен быть присвоен какой-либо тип данных, который характеризует множество значений, которые может принимать объект; множество операций, которые могут применяться к объекту; размер памяти, занимаемый объектом.
Начинается этот раздел с предописанного слова var . Следом идут описания переменных, каждое из которых начинается со списка имен переменных, разделяемых запятыми, затем идет символ : (двоеточие), затем указывается тип этих переменных. Завершается каждое описание точкой с запятой.
Структура раздела имеет вид:
Тип переменных представляет собой имя (идентификатор), описанный в разделе TYPE при явном описании типа, или собственно описание типа в случае его неявного задания. Примеры описания переменных:
Var Year: 1800.. 2000; А, В, C: Real; Istina: Boolean; Stroka: Char; I, J, К: Integer;
Function, Procedure — раздел описаний процедур и функций
В разделе Function и Procedure описываются пользовательские процедуры и функции, если таковые имеются. Если их нет, то этот раздел не обязателен в программе.
Процедура представляет собою подпрограмму и активируется (начинает выполняться) через оператор процедуры. Функция — это тоже подпрограмма, но она выдает некоторое значение — результат и поэтому используется, как компонента выражения.
Структура раздела имеет вид:
Procedure (); Begin End; Function (): ; < заголовок > Begin End;
Структура процедур и функций та же самая, что и у основной программы. Отличие описаний состоит в том, что идентификаторы констант, переменных, процедур и функций, описанных в соответствующих разделах описаний пользовательских процедур и функций, распространяются только на блоки, где они описаны и на блоки внутренние по отношению к ним. На внешние блоки, в том числе на тело основной программы, они не распространяются.
Источник: program4you.ru