Програмна структура в Turbo Pascal

Програмата на Pascal се състои от заглавка, секции за описание и секция за оператори. Заглавката на програмата съдържа името на програмата, например:

Описанията могат да включват:

  • раздел от свързани библиотеки (модули);
  • раздел с описание на етикета;
  • секция за постоянно описание;
  • раздел за описание на типа;
  • раздел за деклариране на променливи;
  • раздел, описващ процедури и функции.

Секцията за описание на модула се дефинира от ключовата дума USES и съдържа имената на допълнителните модули (библиотеки), както включени в системата Turbo Pascal, така и написани от потребителя. Разделът за описание на модула трябва да е на първо място сред разделите за описание. Имената на модулите са разделени едно от друго със запетаи:

Всеки израз в програма може да бъде маркиран с етикет. Името на етикета се задава според правилата за формиране на идентификаторите на Turbo Pascal. Произволно цяло число без знак, съдържащо до четири цифри, също може да се използва като етикет. Етикетът се поставя преди оператора и се отделя от него с двоеточие. Всички етикети, използвани в програмата, трябва да бъдат изброени враздела за описание на тагове, например:

етикет 3, 471, 29, Изход;

Декларацията на константите позволява използването на имена като синоними за константи, те трябва да бъдат дефинирани враздела на декларацията на константи :

const K= 1024; MAX=16384;

Враздела за деклариране на променливи трябва да посочите всички променливи, използвани в програмата, и да определите техния тип:

varP,Q,R: Цяло число; A, B: Char; F1,F2: Булева;

Описанието на видовете, процедурите и функциите ще бъде разгледано по-долу. Отделни секции от описания може да липсват, но трябва да се помни, че в програмата на Pascal всички програмни компоненти трябва да бъдат описани.

Раздел с изявления е съставен оператор, който съдържа между служебните думи

последователност от оператори. Операторите са разделени един от друг със символа ;. Текстът на програмата завършва с точка.

програма Буквар; var x,y,s: integer;begin WriteLn('Въведете две числа, разделени с интервали'); ReadLn(x,y); s := x + y WriteLn('Сумата на числата е ',s);end.

Тази програма пита две числа от клавиатурата, намира тяхната сума и показва отговора. Сега нека направим така, че програмата първо да изчисти екрана, да изпълни своите действия и в края на работата да позволи на потребителя да види резултата, чакайки го да натисне клавиш.

програма Буквар; използва Crt; var x,y,s: integer;begin ClrScr; WriteLn('Въведете две числа, разделени с интервали'); ReadLn(x,y); s := x + y WriteLn('Сумата на числата е ',s); ReadKey; край.

- емулиране на математически копроцесор;

- формират отдалечен тип процедура и извикване на функция;

- използване на математически копроцесор;

- проверка за граници извън диапазона.

Някои превключватели на компилация могат да съдържат параметър, например:

- включване на посочения файл в текста на компилираната програма.

Организиране на клонове в програмата.

Езикът Pascal използва два оператора за реализиране на условни скокове – IF и CASE, както и оператора за безусловен скок GOTO. Те ви позволяват да нарушите последователния ред на изпълнение на програмните инструкции.

Оператор за условен преход

Операторът за условен скок в Turbo Pascal е:

ifусловиеthenоператор 1elseоператор 2;

условиее логически израз, в зависимост от това кой от двата алтернативни клона на алгоритъма е избран. Ако стойността на условието е TRUE, тогаваизпълниизявление 1, написано след ключовата дума then. В противен случайоператорът 2след думата else ще бъде изпълнен, докатооператорът 1се пропуска. След изпълнение на посочените оператори, програмата преминава към изпълнение на командата веднага след оператора if.

Не забравяйте, че ключовата дума else никога не се предхожда от точка и запетая!

else - част в оператора if може да липсва:

акоусловиетогаваоператор 1;

След това, ако логическото условие не е изпълнено, управлението незабавно се прехвърля към оператора, който е в програмата след конструкцията if.

Трябва да се помни, че синтаксисът на езика позволява само един оператор да бъде написан след ключовите думи then и else, така че група изрази трябва да се комбинират в съставен оператор (заграден с операторни скоби begin . end). Иначе най-често логическа програмна грешка възниква, когато компилаторът на езика не дава грешки, но въпреки това програмата не работи правилно.

ако x > 0 тогава модул := x друг модул := -x; ако k>gt; 0 then WriteLn('k е положително число'); ако min > max след това започнете t := min; min := max; max := t; край;

Избор на оператор

Често има ситуации, когато трябва да изберете един от няколко алтернативни начина за изпълнение на програма. Въпреки че такъв избор може да бъде организиран с помощта на оператор if .. then, по-удобно е да се използва специален оператор за избор. Форматът му е:

caseизразнаопция:оператор; .опция:изявление;край;

caseизразнаопция:оператор; .опция:оператор; elseизявлениекрай;

изразтованаписана след ключовата дума case, нареченаселектор, тя може да бъде от всякакъв изброен тип.вариантсе състои от една или повече константи или диапазони, разделени със запетаи. Те трябва да са от същия тип като селектора и повече от еднаопцияне е позволена в запис на case statement. От изброения набор отоператорище бъде избран само този, предшестван отопцията, която съответства на стойността на селектора. Ако няма такаваопция, се изпълняваоператорътслед думата else (ако има такава).

case ch от 'A'..'Z', 'a'..'z' : WriteLn('Letter'); '0'..'9' : WriteLn('Цифра'); '+', '-', '*', '/' : WriteLn('Оператор'); else WriteLn('Специален знак')end;

Оператор за безусловен преход

В допълнение към операторите за условно разклоняване има и оператор goto. формат:

Инструкцията goto прескача по време на изпълнение на програмата към конкретна програмна инструкция, предшествана отетикет.Етикеттрябва да бъде деклариран в раздела за описание на етикета на програмата (процедура или функция), в която се използва. Не можете да прескачате от една процедура или функция към друга.

Необходимо е програмата да има оператор, маркиран с посочения етикет. Пише се преди оператора и се отделя от него с двоеточие.

етикет 1;начало. отидете на 1; . 1: WriteLn('Отидете до етикет 1'); край.

Цикли

В повечето задачи, които се срещат в практиката, е необходимо многократно да се извършват някакви действия. Такъв многократно повтарящ се участък от изчислителния процес се наричацикъл.

Ако броят на необходимите повторения е известен предварително, тогава цикълът се извиквааритметика. Ако броят на повторенията не е известен предварително, тогава се говори заитеративен цикъл.

При итеративните цикли се проверява определено условие и в зависимост от резултата от тази проверка или се излиза от цикъла, или се повтаря изпълнението на тялото на цикъла. Ако условието се проверява преди изпълнението на блока от оператори, тогава такъв итеративен цикъл се наричацикъл с предусловието ("while" цикъл), а ако тестът се извършва след изпълнението на тялото на цикъла, тогава това ецикъл с постусловието ("before" цикъл).

Особеността на тези цикли е, че тялото на цикъла с постусловие винаги се изпълнява поне веднъж, докато тялото на цикъла с предусловие може никога да не се изпълни. В зависимост от проблема, който се решава, е необходимо да се използват един или друг вид итеративни цикли.

Аритметични цикли

запроменлива:=стойност 1достойност 2направетеоператор

запроменлива:=стойност 1надолу достойност 2направиоператор

Операторът for извикваоператораслед думата do веднъж за всяка стойност в диапазонастойност 1достойност 2.

Променливата на цикъла, началните и крайните стойности трябва да са от пореден тип. С думата to, стойността на променливата на цикъласе увеличава с 1 при всяко повторение на цикъла. С думата downto стойността на променливата на цикъласе намалява с 1 при всяка итерация на цикъла. Не трябва независимо да променяте стойността на контролната променлива вътре в цикъла.

Както в случая с използването на оператора за условно прескачане, трябва да запомните, че синтаксисът на езика позволява само един оператор да бъде написан след ключовата дума do, така че ако искате да преминете през групатаоператори, не забравяйте да ги комбинирате в съставен оператор (заградете скобите на оператора начало. край). В противен случай ще бъде направена логическа програмна грешка.

Пример 1. Квадрати на числа от 2 до 10.

за x:=2 до 10 направете WriteLn(x*x);

Пример 2. Латиница.

за ch:='A' до 'Z' направете Writeln(ch);

Пример 3: Използване на цикъл с downto.

за i:=10 downto 1 направете WriteLn(i);

Пример 4: Използване на съставен израз.