В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (1107618), страница 7
Текст из файла (страница 7)
Суть же этих диалектов, т.е. их принципиальные возможности и особенности, одни и те же, так что после изучения одной из версийязыка переход к другой его версии трудностей уже не представляет.В данной книге мы хотим не только описывать и объяснять я з ы кпаскаль — мы будем приводить и конкретные тексты на этом языке,причем не только отдельные фрагменты программ, но и законченныепаскаль-программы, которые при наличии соответствующего транслятораможно доводить до их выполнения на машине.
Для этого необходимо23зафиксировать ту конкретную версию, которая будет использоватьсяв дальнейшем — эту версию мы и будем понимать под термином паскаль.Конкретизацию этой версии мы будем давать постепенно, по мере изученияязыка. Сейчас эта конкретизация пока относится к алфавиту языка, и отличия от стандарта здесь состоят в следующем:— в качестве букв используются строчные и прописные буквы как латинского, так и русского алфавитов;— в качестве знаков операций сравнения используются обычные литеры = , * , < , < , > , > .— для достижения большей наглядности текстов программ служебныеслова выделяются полужирным шрифтом, а в рукописных текстахподчеркиваются.1.6.
Правила записи текста программыДля облегчения понимания текста паскаль-программы и упрощения транслятора, я з ы к паскаль требует выполнения определенных правил записитекста программы, которые не находят своего отражения в синтаксисеязыка. При формулировании этих правил мы будем использовать понятие "разделитель текста", понимая под этим термином пробел, конец строки и комментарий.Пробел — это литера, не имеющая графического изображения: пробелусоответствует пустая позиция в строчке текста (на листе бумаги, бланке,экране дисплея и т.д.).
Однако пробел имеет определенное представление(свой цифровой код) в машине и вводится в машину вместе с остальнымилитерами текста программы.Конец строки — это управляющая литера, также не имеющая графического изображения. Дело в том, что при записи текста паскаль-программыон естественным образом разбивается на отдельные строчки — хотя быв силу ограниченности листа бумаги, бланка или экрана дисплея, на которых фиксируется этот текст. Число возможных позиций в строчке обычнофиксировано, однако число литер в части текста, образующей очереднуюстрочку, может быть меньше числа возможных позиций.
Разбиение всеготекста на отдельные строчки производится программистом но своемуусмотрению. Чтобы указать, что очередная часть текста должна образовывать новую строчку, и служит управляющая литера "конец строки", которая заносится в исходный текст при его нанесении на внешние носителиданных или при его непосредственном вводе в машину с помощью клавиатуры терминала. Как и в случае пробела, эта литера тоже имеетсвой код, который фиксируется на внешнем носителе данных или непосредственно вводится в машину при наборе текста на клавиатуре.О комментариях в паскале мы уже говорили ранее.Упомянутые выше правила записи текста паскаль-программы состоятв следующем.1. Между двумя последовательными конструкциями языка, любая изкоторых является идентификатором, числом или служебным словом,обязательно должен находиться хотя бы один разделитель текста.2.
Разделители текста не должны встречаться внутри идентификаторов,чисел и служебных слов.243. Кроме случаев, указанных в предыдущем пункте, между двумя последовательными основными символами языка может встречаться любоечисло разделителей текста и они не влияют на смысл программы (притрансляции паскаль-программы в машинную программу разделителитекста в указанных здесь случаях игнорируются).Управляющая литера "конец строки" в тексте не задается в явном виде:переход на следующую строчку текста автоматически подразумевает наличие этой управляющей литеры.В тех случаях, когда в тексте надо явно указать наличие пробела(это бывает существенно при записи текста вручную на обычном листе бумаги, а не на бланке), мы будем изображать его литерой " _ ", напримерbegin_if _ х < 25_then_>:: =>: + I _el se x : =0Сформулированные выше правила записи текста программы отвечают ина вопрос о том, где могут быть помещены комментарии. И хотя в этом отношении возможности весьма велики, обычно комментарии помешаютмежду достаточно крупными синтаксическими единицами — описаниями,операторами и т.д.1.7.
Пример программы на паскалеПри изучении какого-либо языка программирования важно научиться какможно раньше составлять законченные программы с доведением их до выполнения на машине, ибо только это может дать учащемуся уверенностьв правильности понимания и усвоения изучаемого материала. Это важнои с точки зрения получения регулярного практического навыка работыс данным языком в процессе его изучения. С другой стороны, доведениепрограмм до машины требует достаточного продвижения в изученииязыка, в том числе знания и таких его моментов, которые при систематическом изучении довольно трудно излагать на начальных стадиях обучения.В связи с этим представляется целесообразным в самом начале обучениядать некоторые необходимые сведения в минимальном объеме и без подробных объяснений, изложив эти вопросы более подробно на соответствующем этапе обучения.
Именно так мы и поступим: чтобы дать читателюобщее представление о паскаль-программе, рассмотрим достаточно простойпример, на базе которого и дадим необходимые "опережающие" сведения.П р и м е р 1.1. Получить с помощью ЭВМ таблицу значений функций/,(*) = хг. / 2 ( х ) = 3 - х , / 3 ( х ) = 0.5 — sin(x)в узлах сетки, получающейся разбиением отрезка [А, В.], где В > А,на 10 равных частей (в число узлов должны войти и границы отрезка).Алгоритм решения этой задачи настолько очевиден, что мы не будемостанавливаться на его разработке, а сразу приведем окончательный текстпрограммы на паскале.
На примере этой программы читателю полезно сначала самому попробовать выделить ее составные части и понять назначениекаждой из них, а затем сравнить свои предположения с приведенными25после программы объяснениями.{Пример 1.1. Костив О. В.ЛьвовГУ7.1.87г.Получение таблицы значений Функций+ 1 <>:)=>!*>;; + 2<>:)=3-х; f 3 <х ) =0. 5-sin <х )вузлах сетки.получаемой разбиениемотрезка СА.ВЗ на10 равных частей)program ТАБЛИЦА<input,output);{через п обозначено число частей, на которые делитсяотрезок СА,ВЭ >const п=10;{введем Е) употребление нужные переменные:}var А,В: real; i: integer; х , h,у1,у2,уЗ: real;{задание процесса вычислений и печать результатов:}begin{ввод и распечатка исходных данных:}read(А, В) ; writeln<'_A=', A,'_B=', B);{вычисление h, задание начальных значений x,i:}h:--(B-A)/n; x:=A; i:=0;{циклический процесс получения строк таблицы:}repeat{вычисление значений Функций при текущем значении х}у 1: =х *х ;у2:=3—х;уЗ: =0.
5—s i п х ) ;{печать очередной строки таблицы:}writeln < '_«=' ,х,<>:> = ' ,yl, '_f2(x> = ' ,у2, '_f3<x>=' ,уЗ) ;{переход к следующему узлу сетки:}x:=x+h;i:=i+l{условие окончания цикла}until i=n+l{при i=n+lвычисления заканчиваются}end.Теперь д а д и м п о я с н е н и я к п р и в е д е н н о й п р о г р а м м е .Начальная часть т е к с т а , з а к л ю ч е н н а я в ф и г у р н ы е с к о б к и , я в л я е т с я в в о д н ы м к о м м е н т а р и е м к п р о г р а м м е и не о к а з ы в а е т н и к а к о г о в л и я н и я на еев ы п о л н е н и е .
Б о л е е того, этот к о м м е н т а р и й — по с и н т а к с и с у п о н я т и я< п р о г р а м м а > — в о о б щ е не я в л я е т с я частью п р о г р а м м ы , а п р е д ш е с т в у е т ей.С о б с т в е н н о п а с к а л ь - п р о г р а м м а начинается с л у ж е б н ы м с л о в о м p r o g r a m исостоит из д в у х о с н о в н ы х частей: заголовка программы к тела программы,н а з ы в а е м о г о блоком. В з а г о л о в к е п р о г р а м м ыprogram ТАБЛИЦА (i nput., output)который всегда начинается служебным словом program, программе даетсясвое имя (в данном случае ТАБЛИЦА) , вслед за которым в круглых скобках указываются ее параметры.Дело в том, что каждая программа выполняется в некотором ее окружении, которое обеспечивает связь программы с внешней средой. Так, каждаяпрограмма использует какие-то исходные данные — в нашем случае это значения А и В , задающие отрезок, и п — число частей, на которые разбиваетсяотрезок [А, В].
Конечно, эти значения можно зафиксировать в программе(как это сделано со значением п ) . Однако если все исходные данные будутзафиксированы, то при каждом своем выполнении программа будет выдавать одни и те же результаты, так что такая программа пригодна лишь дляразового использования. Подобного рода программы не имеют большойпрактической ценности, поэтому программу следует составлять так, чтобыее можно было использовать с минимальными изменениями (или вообщебез изменений) при различных задаваемых ей извне (допустимых) исходных данных. Результаты выполнения программы надо как-то выдать вовнешнюю среду для их последующего использования, например отпечататьвычисленную таблицу на бумаге в виде, удобном для ее использованиячеловеком.В вычислительных системах роль окружения программы играет операционная система - специальный комплекс программ, под управлением которых и функционирует вся вычислительная система.
Операционная система, в частности, обеспечивает связь каждой выполняемой программыс внешним миром. Для этой цели используются файлы — специальным образом организованные наборы данных, которые могут отображаться на различные внешние носители данных (перфокарты, рулон бумаги, экрандисплея и т.д.) и могут использоваться в программах. В связи с этим в заголовке программы должны быть указаны имена всех тех файлов, которыебудут использоваться в данной программе. Среди множества возможныхфайлов выделены два стандартных текстовых файла с именами input иoutput. Имя input присвоено системному файлу, из которого программаможет читать (т.е. вводить) исходные данные — этот файл'обычно отображается на перфокарты или дисплей (в случае диалогового режима работыс ЭВМ).
Имя output дано системному файлу, отображаемому обычнона рулон бумаги алфавитно-цифрового печатающего устройства (АЦПУ)или на экран дисплея — этот файл используется для вывода окончательныхрезультатов.Тело программы {блок) состоит из двух основных разделов: разделаописаний и раздела операторов. В каждом из этих разделов нашей программы даны некоторые пояснения с помощью комментариев, на которых мыостанавливаться не будем из-за их очевидности. В данной программе разделописаний начинается с раздела константconst n=10содержащего единственное описание константы п = 10. Это описание говорит о том, что везде далее в тексте программы под именем п понимаетсяцелое число 10, так что если изъять это описание, а везде в программеимя п заменить на число 10, то смысл программы не изменится.Далее в нашей программе следует раздел описаний переменных, открывающийся служебным словом var (от слова Variable — переменная).27Этот раздел содержит три описания переменных.