3. Програмиране на Pascal
3.1. Първа среща с Паскал
Структурата на Pascal програма. Според дефиницията на стандартния Pascal, програмата се състои от заглавка на програмата и тяло на програмата (блок), последвани от точка - знак за край на програмата. На свой ред блокът съдържа раздели с описания и раздел с изявления.
Операторският раздел присъства във всяка програма и е основният. Предходните раздели са описателни по природа и не е задължително всички да присъстват във всяка програма.
В Turbo Pascal, за разлика от стандарта, е възможно следното:
• липса на заглавие на програмата;
• Секциите Const, Type, Var, Label могат да следват една след друга в произволен ред и да се появяват толкова пъти, колкото е необходимо в раздела за описание.
Примери за програми. Вече беше казано, че Паскал е разработен от Н. Вирт като образователен език. Основният принцип зад него е поддръжката на методология за структурирано програмиране. Същият принцип е в основата на псевдокода, който тук наричаме Алгоритмичен език (AL). Всъщност разминаването между ЕЛ и Паскал е следното: ЕЛ е българоговорящ, Паскал е англоезичен; Синтаксисът на Паскал е строго и недвусмислено дефиниран, за разлика от сравнително свободния синтаксис на EL.
Писането на програма на Pascal е подобно на английски превод на алгоритъм, написан на алгоритмичен език. Сравнете алгоритъма за деление на прости дроби, написан на LA, със съответната програма на Pascal.
Тук се използва следното уравнение:
Заглавието на програмата започва с думата Program (програма), последвана от произволно име, измислено от програмиста (division - division). Разделът за деклариране на променливи започва с думата Var (променливи), последвана от списък с променливи. Типобозначен след двоеточие с думата Integer - цяло число. Началото и краят на секцията с програмен оператор са маркирани с думите Begin (начало) и End (край). В края на програмата трябва да се постави точка.
Операторите за присвояване в Pascal се пишат по същия начин, както в LA. Знакът за умножение е * (звездичка).
Резултатите се извеждат на екрана с помощта на процедурата WriteLn (напишете ред - пишете на ред). В горния пример две цели числа m и n ще бъдат показани в един ред, курсорът на екрана ще се премести в началото на следващия свободен ред и програмата ще приключи.
Необходимо е стриктно спазване на правилата за правопис (синтаксис) на програмата. По-специално, в Pascal целта на препинателните знаци е недвусмислено дефинирана. Точка и запетая (;) се поставя в края на заглавката на програмата, в края на раздела за деклариране на променливи, след всеки израз. Не е необходимо да поставяте точка и запетая преди думата End. Запетая (,) е разделителят на елементите във всички видове списъци: списъкът с променливи в секцията за декларация, списъкът с входни и изходни стойности.
Строгият синтаксис на езика за програмиране е необходим преди всичко за преводача. Транслаторът е програма, която се изпълнява формално. Ако, например, разделителят в списъка с променливи трябва да бъде запетая, тогава всеки друг знак ще се възприема като грешка. Ако точка и запетая е разделител на изрази, тогава преводачът възприема цялата част от програмния текст от една точка и запетая до друга като оператор. Ако забравите да поставите този знак между всеки два оператора, тогава преводачът ще ги приеме за един, което неизбежно ще доведе до грешка.
Основната цел на синтактичните правила е да придадат недвусмислено значение на езиковите конструкции. Ако една конструкция може да се тълкува двусмислено, тогава вопределено съдържа грешка. По-добре е да не разчитате на интуицията, а да научите правилата на езика.
В бъдеще ще опишем стриктно синтаксисните правила на Pascal, но засега, за да добием първоначална представа за езика, нека се обърнем към още няколко примера за програмиране на прости алгоритми.
Нека "преведем" алгоритъма за изчисляване на факториела на естествено число (N!) в Pascal.
От този пример, първо, можете да видите как операторът за цикъл с предварително условие (loop-while) е написан на Pascal:
(Докато - още, Направете - направете). Ако тялото на цикъла съдържа последователност от изрази, тогава те казват, че образува съставен оператор, в началото и в края на който трябва да напишете Begin и End
Служебните думи Begin и End често се наричат операторни скоби, които комбинират няколко оператора в едно съединение. Ако тялото на цикъла е единичен оператор (а не съставен), тогава не са необходими скоби. Тогава компилаторът счита, че тялото на цикъла завършва на най-близкия знак ";".
Помислете за друг пример за програма - решението на квадратно уравнение.
В тази програма, в сравнение с предишните, има много нови елементи. Името на реален тип в Pascal е real.
Цикъл с постусловие (цикъл към) се програмира от оператора
(тук Repeat - повторете, Until - докато). Тялото на цикъла може да бъде единично или съставно изявление, но използването на Begin и End не е необходимо, тъй като думите Repeat и Until сами по себе си действат като операторни скоби.
Знакът за неравно в Pascal се записва така: <>, знакът за по-голямо или равно: >=.
Малко по-късно ще разгледаме подробно правилата за писане на аритметични изрази. Във формулите за изчисляване на корените се използва стандартната функция за квадратен корен (), която в Pascalнаписана така: sqrt (x). Редът, в който се изпълняват операциите в израз, се определя от скоби и приоритет на операциите. Предходството на операциите е същото като в алгебрата. Операциите с еднакъв приоритет се изпълняват в реда, в който са написани (отляво надясно).
Разклоняването в Pascal се програмира с условен израз, който има следната форма:
If Then Else "изявление 2>
(тук If - ако, Then - тогава, Else - иначе). Оператори 1 и 2 могат да бъдат прости или съставни. Сложният оператор трябва да бъде ограден в операторни скоби Begin и End.
Точно както в алгоритмичния език е възможно да се използва непълна форма на условния оператор:
За да изпълни програма на компютър, тя трябва да бъде въведена в паметта, преведена и изпълнена. За да извърши цялата тази работа, компютърът трябва да разполага със специални софтуерни инструменти. На компютъра те съставляват системата Turbo Pascal.