|
Увод
Тези уроци имат за цел да подпомогнат профилираното обучение по програмиране на езика Паскал. Те може да са полезни както за начинаещи, така и за средно напреднали. Езикът носи името на Блез Паскал – френски философ, математик, физик, писател. Автор на езика е швейцарският професор Никлаус Вирт. І. Основни означения Пример за програма на езика Паскал: Задача 1. Да се напише програма, която въвежда стойности на реалните променливи a и b и извежда тяхната сума s. CODE
Първият ред на програмата се нарича заглавие. С него започва всяка програма. Името на програмата (в случая Suma) може да съчетава букви, цифри и знака за подчертаване _ , но започва винаги с буква. Променливите, използвани при описанието на алгоритмите в езика Паскал задължително се описват в раздела var (от variable - променлив). В горния случай това са a, b и s. И трите променливи са от тип real, т.е. могат да приемат стойности от множеството на реалните числа. Декларирането на променливите води до отделяне на памет за тях. След раздела на променливите в програмата е разделът на операторите. Този раздел започва с думата begin и завършва с end. В примера са използвани няколко оператора. Те описват алгоритъма на програмата. Отделят се със символа ; . - оператора write(‘текст’) извежда върху екрана в позицията на курсора текста, ограден в апострофи. - оператора write(a) извежда на екрана стойността на параметъра а. Горните два оператора могат да се съчетават (например write(‘a=’, a)). Ако след думата write се постави ln (writeln) операторите отново извеждат информацията на екрана, но на нов ред. - опрераторът read записва въведената стойност в оперативната памет. Той действа по следния начин: след write компютърът чака да се въведе стойност (например променливата а). Въвежда се стойност, която задължително трябва да е от декларирания тип. След натискането на клавиша Enter въведената стойност се записва в оперативната памет. - операторът readln без параметри означава преминаване за четене на нов ред, чрез натискането на Enter. Readln в края на програмата, непосредствено преди заключителния end задържа екрана до натискане на enter, за да може да се види резултата от изпълнението на програмата. - операторът s:= a + b е оператор за присвояване на стойност. Двойката символи := се нарича знак за присвояване. Променливата s присвоява стойността на израза a + b. Идентификатори. Идентификаторите в езика паскал се използват за означаване на имена на програми, променливи, процедури, функции и др. Както обикновени идентификатори, въведени от програмиста, съществуват и идентификатори, които са запазени. Те се използват в програмирането по стандартен, предварително определен начин и не могат да се използват по друг начин. В стандарта на езика паскал има 35 запазени думи, като в програмата Suma са използвани 4 – program, var, begin и end. В езика паскал програмистите могат да въвеждат коментари. Коментарите са редица от символи, които са заградени в скобите { и }. Предназначени са за програмистите и се игнорират при изпълнение на програмата. Чрез тях програмата става по-ясна и разбираема, като програмистът може да въвежда всякакви коментари и при това на произволни места. Препоръчително е обаче, коментарите да не се използват вътре в операторите, а между тях. Ето пример за програма, в която са включени коментари: CODE
ІІ. Структура на паскалската програма Всяка програма на езика Паскал има точно определена структура. Тя се състои от заглавие (виж урок №1) и блок и завършва със символа точка. Блокът се състои от шест раздела, всеки от които може да бъде празен, като изключение прави последния. Това са резделите на етикетите, константите, типовете данни, променливите, функциите и процедурите, операторите. Разделите задължително трябва да са в горния порядък. Първите пет раздела са декларации. Чрез тях програмистът обявява различните обекти на програмата. Раздел на етикетите – етикетът е цялочислено число без знак. Служи за отбелязване на място в програмата, където да бъде предадено управлението. Етикетът се поставя пред оператора, към който ще се предава управлението, като за разделител се използва двуеточие. <етикет> : <оператор> Всички етикети, които се използват в програмата се декларират в раздела на етикетите: label <етикет> Раздел на константите – често в програмите се използва една и съща стойност няколко пъти. В такъв случай се препоръчва константата да бъде декларирана предварително в раздела на константите. В долния пример можете да видите как се декларира и използва дадена константа. Задача 2: Да се напише програма, която по даден радиус намира Р и S на окръжност, кодето P=2.p.r и S=p.r.r, а р=3,142857. CODE
Раздел на типовете данни. В езика Паскал има точно определен стандартен набор он типове данни – integer, real, boolean, char и др. В един език за програмиране не могат да се приведат всички типове данни, които могат да са необходими на програмиста. По тази причина езикът дава възможност на програмиста сам да дефинира нови типове данни. Това се извършва в раздела на типовете type <идентификатор> = <име на тип> В следващите параграфи ще бъдат дадени различни описания наконструкцията <име на тип>. Раздел на променливите. Всяка променлива, която се използва в програма на езика Паскал, трябва да се опише. Това се извършва в раздела на променливите: var <променлива> : <тип> За всяка декларирана променлива се отделя точно количество памет, което зависи от типа на променливата. Раздел на процедурите и функциите – в езика Паскал има определен набор от оператори и вградени функции. Чрез дефинирането на процедури се разширява наборът от оператори, а чрез дефинирането на функции – наборът от функции в езика Паскал. Конструирането на процедури и функции ще разгледаме в отделен урок. Раздел на операторите – докато първите пет раздела имаха декларативен характер и някои от тях могат да бъдат празни, разделът на операторите описва алгоритъмът за решаване на задачата и задължително трябва да участва в програмата. CODE
ІІІ. Типове данни в езика Паскал В езика Паскал съществуват следните типове данни: - скаларни – цял, реален, символен, булев, изборен, подобласт; - съсатвни – масив, запис, множество, файл; - тип указател. Всеки от тези типове данни се характеризира с множество от стойностти и операции и вградени функции, които могат да се приложат над елементите му. Съставните типове данни се наричат онези данни, компонентите на които са редици от елементи. Типът указател дава средства за динамично разпределение на паметта и се използва за реализиране на различни динамични структури от данни. В този урок ще разгледаме скаларните типове булев, цял, реален и символен. 3.1 Булев тип данни За означаването и дефинирането на този тип се използва стандартната дума boolean. Множеството от стойностите на този език се състои от два елемента – стойтостите true (истина) и false (лъжа). Тези стойности се наричат булеви константи. Декларирането на булеви променливи стьвь по познатия начин: var b,x: boolean; Над данни от булев тип е възможно да се прилагат някои операции и вградени функции. Опeраторите not, and и or (съответно логическо отрицание, логическо умножение и логическо събиране) се прилагат над операнди от булев тип. Резултатът е булева константа или променлива. На долната таблица са дадени стойности на променливите a и b, както и операции с тях: a b not a a and b a or b false false true false false false true true false true true false false false true true true false true true Операторите за сравнение също могат да се прилагат над данни от булев тип = равно <= по-малко или равно <> различно > по-голямо < по-малко >= по-голямо или равно Сравняването се извършва, като се сравнят кодовете на булевите константи. Например true<=false получава стойност false, false=true също получава стойност false, true>=false получава true и така нататък. Стандартни функции, даващи булев резултат: Odd(x) – установява дали цяло цисло е четно или не Odd(x) = true ако x е нечетно и обратно. Eoln(x) – булева функция, установяваща дали е достигнат края на реда на даден текстов файл. Има стойност true за достигнат край на реда и false за недостигнат. Eof(x) – булева функция, установяваща дали е достигнат края на даден текстов файл. Отново приема стойност true за достигнат и false за недостигнат край. Функциите eof и eoln ще разгледаме по-подробно в един от следващите уроци (работа с файлове). Променливите от типа булев не се въвеждат. На тях може да се дава стойност с оператора := (например b:=1 или b:=true), като 0 се счита за false а 1 - за true. Извеждането на този тип данни става по стандартния начин – с write и writeln. 3.2 Булеви изрази Булевите изрази са правила за получаване на булева константа. Булевите константи true и false, както и булевите променливи са булеви изрази. Прилагането на булевите оператори not, and и or над булеви изрази също е булев израз. Например [not(b and a)] or (b or a)= e булев израз. Прилагането на оператори за сравнение също е булев израз. 3.3 Тип цял За означаването и дефинирането на този тип се използва стандартната дума integer. Множеството от стойностите на променливите от този тип са всички цели числа от [-32768;32767]. Декларирането става по стандартния начин: var x, y: integer; Операции и вградени функции: - унарни операции – + и - - потвърждават или променят знака, към който са приложени; - бинарни операции – прилагането на следните операции дава цяла стойност: + - събиране * - умножение div – частното от деление - - изваждане mod – остатък от деление Пример 12 / 5 = 2.4 12 div 5 = 2 12 mod 5 = 4 - следните функции, приложени над ця аргумент връщат цял резултат: abs(x) – връща абсолютната стойност на x - |x| sqr(x) – дава квадрата на x – x*x succ(x) – дава наследника на x – x+1 pred(x) – дава предшественика на x – x -1 - функции, приложени над реален аргумент и даващи цял резултат: trunc(x) – отрязва дробната част и запазва цялата – trunc 7,9=7 round(x) – закръгля x. Въвеждането на данни от типа integer става с read и readln, а извеждането – с write и writeln. Освен integer в езика Паскал са дефинирани и следните цилочислени типове, резличаващи се само от своето множество от стойности. Shortint[-128,127] integer[-32768,32767] word[0,65636] Longint[-2147483648,2147483647] byte[0,255]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









