В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (1107618), страница 16
Текст из файла (страница 16)
фактически дать этому типу другое имя,являющееся синонимом первого. Например, описание типацелое = integerпозволяет везде далее в программе для указания стандартного целочисленного типа вместо его стандартного имени integer использовать имя целое,напримерvarn,m:целоеВсе описания типов должны быть даны в разделе типов. Этот раздел начинается служебным словом type (тип), за которым следуют описания типов,отделенные друг от друга точкой с запятой:< раздел типов > : := < пусто > |type < описание типа > {; (описание типа >} ;Пример раздела типов:type/1огич=Ьоо1 еап;Неделя=(пн,вт,ср,чтв,птн,сб,вскр) ;Рабдень=пн..птн;Этот раздел содержит три описания типов. Первое из них стандартному логическому типу дает другое имя — Логич. Второе описание вводит к употребление новый, а именно — перечислимый тип, которому дается имя Неделя.
Третье описание вводит в употребление новый тип с именем Рабдень,который относится к ограниченному типу: множеством значений этого56типа является указанный диапазон значений типа Неделя, который былопределен предыдущим описанием типа. Подробнее упомянутые здесьперечислимые и ограниченные типы будут рассмотрены в главе 6.Раздел переменных. Практически в каждой реальной программе используются такие программные объекты, какп е р е м е н н ы е . Напомним,что переменная — это объект, способный принимать значение. В отличиеот констант, значения которых зафиксированы в самом тексте программы(а значит, они известны до выполнения программы), значения переменныхопределяются уже в процессе выполнения программы.
Действия же надэтими заранее неизвестными значениями должны быть заданы в текстепрограммы. Для этого каждой переменной дается свое имя, и действия надзначениями переменных описываются в терминах их имен. Таким образом,с каждой переменной связываются два ее атрибута: имя и значение, приэтом имя переменной используется для ссылки на ее значение.Каждая переменная, используемая в программе, предварительно должнабыть введена в употребление, т.е.
объявлена. Для этой цели в языке служиттакое понятие, как (описание переменных ). В этом описании каждой вводимой в употребление переменной дается свое имя и указывается типзначений, которые может принимать эта переменная: попытка в процессевыполнения программы присвоить переменной значение иного типа расценивается как ошибка в программе. Заметим, что требование явного описания всех используемых переменных позволяет еще на этапе трансляции,т.е. до выполнения программы на машине, выявить попытки присваиванияпеременным значений недопустимых для них типовОписание отдельной переменной имеет вид:< имя переменной >: (тип >Напомним, что< тип ): := ( имя типа > | ( задание типа >так что тип переменной (т.е. тип значений, которые может принимать переменная) в паскале можно задавать двумя способами.
Если этот тип былописан в разделе типов или он является одним из стандартных типов, тов качестве компоненты ( т и п ) используется просто имя этого типа, например:х: real;ДЕНЬ: Неделя;Первое из этих описаний вводит в употребление переменную с именем хтипа real, а второе - переменную с именем ДЕНЬ типа Неделя.Другой способ состоит в том, что в качестве компоненты (тип > в описании переменной используется не имя типа, а его явное задание (определение), напримерi : I . . 20Такое описание переменной в паскале на самом деле выполняет двойнуюфункцию: оно одновременно вводит в употребление и новый (безымянный) тип значений (в данном случае — ограниченный тип, множеством значений которого являются целые числа от 1 до 20), и переменную с именем i, способную принимать значения указанного типа.57Предпочтение следует отдавать первому из упомянутых выше способов,т.е. указанию имени типа.
Обоснование такой рекомендации будет данопри более подробном рассмотрении типов значений, вводимых в употребление самим программистом. Однако уже и сейчас ясно, что этот способобеспечивает простоту и единообразие указания типов переменных.В паскале с помощью одного описания можно ввести в употребление сразу несколько переменных одного и того же типа (чтобы не указывать этоттип для каждой переменной в отдельности), что находит свое отражение всинтаксисе понятия (описание переменных >:(описание переменных > ::= (имя переменной >{, ( и м я переменной >}: (тип >Пример описания переменных:>:,y,z,h: realЭто описание вводит в употребление четыре вещественные переменные сименами х, у, z и h.Все описания переменных должны содержаться в разделе переменных,который начинается служебным словом var (сокращение от Variable переменная):( раздел переменных >: := (пусто > |var (описание переменных > {; (описание переменных >};Пример непустого раздела переменных:vari , j,ks i nteger;x,h,sum,way: real;n,m: integer; day: Неделя;Каждая переменная, используемая в программе, должна быть описана,но не более одного раза — повторное описание переменной расцениваетсяк а к ошибка в программе!Раздел процедур и функций.
Как уже отмечалось, программист можетввести в употребление любые удобные для него процедуры и функции.Естественно, каждая такая процедура и функция должна быть определенас помощью соответствующего описания. Основной частью такого описанияявляется тот частичный алгоритм, который объявляется процедурой,или алгоритм вычисления значения определяемой функции, причем этоталгоритм формулируется также на языке паскаль. Кроме того, каждой описываемой процедуре или функции дается свое имя, с использованием которого будут производиться обращения к этой процедуре или функции. Такчто обращения к описываемым процедурам (функциям) производятсятак же, как и к стандартным процедурам (функциям).
Все описания процедур и функцийдолжны содержаться в рассматриваемом здесьразделе.Раздел процедур и функций не начинается каким-то специальным служебным словом — начало данного раздела легко определяется по служебным словам procedure или function, поскольку каждое описание процедуры начинается первым, а каждое описание функции — вторым из этихслужебных слов.58Паскаль не накладывает каких-либо ограничений на порядок размещения отдельных описаний процедур и функций в этом разделе - важнолишь, чтобы все процедуры и функции, к которым содержатся обращенияв разделе операторов (за исключением стандартных процедур и функций),были описаны в этом разделе.Раздел операторов.
Этот раздел является основным разделом программы — именно здесь задаются те действия, которые должны быть выполнены по данной программе. Раздел операторов определяется следующимобразом:< раздел операторов >: := begin < оператор > {; < оператор >} endВыполнение программы сводится к выполнению раздела операторов, т.е.к выполнению последовательности операторов, заключенной в операторные скобки begin и end. Следует при этом подчеркнуть, что те частичныеалгоритмы, которые содержатся в описаниях процедур и функций, активизируются (принуждаются к выполнению) только в результате обращенияк соответствующей процедуре или функции из раздела операторов.Следующая глава как раз и посвящена рассмотрению наиболее употребительных и доступных для понимания (при тех сведениях о языке, которые были даны в предыдущих главах), операторах языка паскаль.ГЛАВА4ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ4.1.
Концепция действияОсновное назначение программы состоит в задании тех действий по обработке данных, которые должны быть выполнены дня решения поставленной задачи. Напомним, что программа — это запись алгоритма на некоторомязыке, т.е. инструкция для того исполнителя, который фактически будетосуществлять заданный процесс решения задачи. При этом имеется в видутакой исполнитель, который умеет выполнять только заранее фиксированный набор операций над отдельными значениями, причем набор типов такихзначений также зафиксирован.
Именно таким исполнителем и являетсяЭВМ. И хотя программа, написанная на паскале, адресована не непосредственно ЭВМ, а некоторому гипотетическому (воображаемому) исполнителю, более "интеллектуальному" по сравнению с ЭВМ, этот исполнительдолжен быть четко определен самим языком программирования — в томсмысле, что должно быть зафиксировано, с какими типами значений онумеет работать и какие действия он может выполнять непосредственно,без дополнительных указаний.Что касается типов значений, допустимых в паскале, то об этом уже говорилось в главе 2 — там достаточно подробно рассматривались простейшиеиз этих типов. Для задания же действий над данными, которые необходимовыполнить для решения той или иной задачи, в алгоритмическом языкеслужит такое понятие, к а к оператор. Каждый оператор в паскаль-программе определяет некоторый логически законченный, самостоятельный этаппроцесса обработки данных. Естественно, что для однозначности пониманияи интерпретации программы зафиксирован набор допустимых операторови четко определены правила их записи, т.е.