§ 14. Мова праграміравання Паскаль

Жаданне спрасціць і паскорыць разнастайныя разлікі ўласціва чалавеку са старажытных часоў. Сёння камп’ютар здольны выконваць сотні мільёнаў аперацый у секунду. Для рашэння вылічальных задач патрабуецца спачатку скласці алгарытм іх рашэння, а затым запісаць яго ў выглядзе праграмы, выкарыстоўваючы якую-небудзь мову праграміравання.

Мова праграміравання вызначае набор правіл, якія акрэсліваюць знешні выгляд праграмы і дзеянні, што ажыццявіць выканаўца пад яе кіраваннем.

Мова праграміравання Паскаль (Pascal) выкарыстоўваецца для навучання праграміраванню і з’яўляецца базай для шэрага прафесійных моў праграміравання.

Існуе мноства асяроддзяў праграміравання, якія падтрымліваюць мову Паскаль: PascalABC, FreePascal, Delphi, GNU Pascal, Dev-Pascal, Rad Studio і інш. У вучэбным курсе выкарыстоўваецца асяроддзе PascalABC (з ім вы працавалі, знаёмячыся з вучэбнымі камп’ютарнымі выканаўцамі).

 

14.1. Каманда вываду

Дэманстраваць работу любой праграмы мае сэнс толькі тады, калі яна выводзіць якую-небудзь інфармацыю.

Праграма на мове Pascal (цела праграмы) павінна пачынацца са слова begin, а заканчвацца словам end і кропкай. Праграма, што складаецца з гэтых каманд, раздзеленых прабелам або пераводам радка, можа быць запушчана на выкананне, але яна нічога не робіць. Дабавім у яе каманду вываду прывітання:

begin

write(‘Прывітанне!’);

end.

Вынік работы праграмы адлюстроўваецца ў ніжняй частцы акна праграмы PascalABC у акне вываду (прыклад 14.1).

Каманда write( ); прызначана для вываду даных.

Тэкст, які трэба вывесці на экран, змяшчаюць у апострафах (адзінарнае двукоссе). Гэты тэкст не аналізуецца і выводзіцца ў тым выглядзе, у якім ён запісаны. Тэкст можна запісаць на любой мове. Тэкстам можа быць адвольны набор сімвалаў.

У адной праграме можа быць некалькі каманд вываду. Для вываду тэксту, запісанага ў некалькі радкоў, выкарыстоўваюць каманду writeln( ). Спалучэнне «ln» (скар. ад англ. line — лінія, радок), запісанае ў канцы каманды, азначае, што пасля вываду трэба перавесці курсор у новы радок.

Прыклад 14.2. Выведзем на экран камп’ютара наступны тэкст: «Прывітанне!      Я      камп’ютар!!!      Я ўмею      выконваць      праграмы!      Сёння
ты      напісаў      сваю      першую      праграму,      а      я      яе      выканаў.      Зараз      на экране – вынік      гэтай      праграмы
».

Выкарыстоўваючы спалучэнне каманд write i writeln, тэкст можна размясціць па-рознаму.

Як вы ўжо ведаеце, тэкст у камандзе write( ), запісаны ў двукоссі, не аналізуецца. Калі двукоссе прапусціць, то выконваецца аналіз даных, запісаных у дужках. Так, калі ў дужках напісаць арыфметычны выраз, то спачатку вылічваецца яго значэнне, а затым выводзіцца вынік.

Прыклад 14.3. Вылічым значэнне выразу 2 + 2 ∙ 2.

Калі запісаць выраз у двукоссі, то будзе выведзены сам выраз. Пры адсутнасці двукосся на экран будзе выведзена значэнне дадзенага выразу.

 

14.2. Паняцце тыпу даных

На практыцы рэдка даводзіцца пісаць праграмы, якія рашаюць толькі адну задачу. Звычайна праграмы пішуцца для рашэння цэлага класа задач, што можна сфармуляваць у агульным выглядзе.

З такімі задачамі вы ўжо сустракаліся ў курсе матэматыкі. Напрыклад, рашэнне задачы «Знайдзіце плошчу прамавугольніка» можна запісаць так: S =  b, дзе пераменныя a i b абазначаюць адпаведна даўжыню і шырыню прамавугольніка, а S — плошчу. Ведаючы гэту формулу, можна знайсці плошчу любога прамавугольніка.

У праграміраванні для рашэння задач у агульным выглядзе таксама выкарыстоўваюць пераменныя. Паколькі з такімі пераменнымі будзе працаваць камп’ютар, то яны павінны захоўвацца ў яго памяці.

Iнфармацыю, пададзеную ў прыдатным для апрацоўкі на камп’ютары выглядзе, называюць данымі.

Пераменная ў праграміраванні — гэта найменная ячэйка памяці, якая захоўвае значэнне пераменнай.

Камп’ютар можа апрацоўваць даныя розных тыпаў: цэлыя і рэчаісныя лікі, сімвалы, тэксты і інш.

Тып даных вызначае спосаб захоўвання даных у памяці камп’ютара, дыяпазон магчымых значэнняў даных і аперацыі, якія з гэтым тыпам даных можна выконваць.

Каб выкарыстаць якую-небудзь пераменную, яе трэба апісаць. Апісанне пераменных выконваецца да пачатку праграмы (каманды begin) (прыклад 14.4). Пры апісанні пераменнай вылучаецца памяць для захоўвання яе значэння. У працэсе выканання праграмы значэнне пераменнай можа змяняцца.

Для апісання пераменных выкарыстоўваецца каманда var (скар. ад англ. variable — пераменная). Фармат запісу каманды:

var <імя пераменнай>: <тып>;

Для абазначэння імя пераменнай выкарыстоўваюць літары лацінскага алфавіта, лічбы і знак «_». Першым знакам павінна быць літара або знак падкрэслівання.

Тып даных real у мове Pascal дазваляе працаваць з лікамі і выконваць над імі арыфметычныя дзеянні.

14.3. Аператар прысвойвання

Адной з асноўных каманд для апрацоўкі даных у праграме з’яўляецца аператар прысвойвання.

Аператар прысвойвання прызначаны для таго, каб:

  • задаваць значэнні пераменным;
  • вылічваць значэнні арыфметычнага выразу (вынік вылічэння будзе запісаны як значэнне пераменнай).

Фармат запісу аператара:

<імя пераменнай>:= <выраз>;

(Разгледзьце прыклад 14.5.)

У запісе арыфметычнага выразу выкарыстоўваюцца знакі матэматычных дзеянняў.

 

Матэматычныя
аперацыі

Запіс
у Pascal

+ (складанне)

+

(адніманне)

(множанне)

*

: (дзяленне)

/

Прыярытэт выканання аперацый адпавядае прынятаму ў матэматыцы: спачатку выконваюцца множанне і дзяленне, а затым складанне і адніманне. Для змянення парадку дзеянняў у выразах выкарыстоўваюць дужкі.

Для запісу звычайнага дробу выкарыстоўваецца знак дзялення. Знак множання апускаць нельга. Цэлая частка дробавага ліку аддзяляецца ад дробавай часткі кропкай. (Разгледзьце прыклад 14.6 і пример 14.7).

 

14.4. Увод даных

Пачатковыя значэнні пераменным можна задаваць не толькі з дапамогай аператара прысвойвання, але і шляхам уводу з клавіятуры. У гэтым выпадку, калі неабходны вылічэнні з новым наборам значэнняў зыходных даных, тэкст праграмы не трэба змяняць.

Каманда read( ) прызначана для ўводу даных. У дужках праз коску пералічаюцца імёны пераменных, значэнні якіх неабходна ўвесці.

Увод даных адбываецца ў ніжняй частцы акна праграмы PascalABC. Для гэтага выкарыстоўваецца акно «Увод даных». Пасля націскання на кнопку «Увесці» або на клавішу «Enter» уведзеныя значэнні пераносяцца ў акно вываду. Пасля завяршэння работы праграмы ў гэтым жа акне будзе выведзены вынік (прыклад 14.8).

 

14.5. Структура праграмы

Усе праграмы на мове праграміравання Pascal маюць агульную структуру. У праграме можна вылучыць наступныя часткі:

  • загаловак (неабавязковы);
  • бібліятэкі, што падключаюцца (модулі) (калі падключаць дадатковыя бібліятэкі не трэба, раздзел адсутнічае; вядомыя бібліятэкі: Drawman, Robot, RobTasks);
  • апісанне пераменных з вызначэннем іх тыпу;
  • апісанне дапаможных алгарытмаў (калі выкарыстоўваць дапаможныя алгарытмы не трэба, раздзел адсутнічае);
  • beginend. — службовыя словы, што абрамляюць цела асноўнай праграмы, у якой знаходзяцца выконваемыя каманды; begin пачынае выконваемую частку праграмы, а end. (кропка ў канцы абавязковая) яе завяршае.

У мінімальна магчымым наборы праграма складаецца з пустога цела праграмы: begin end. Праграма, што змяшчае ўсе раздзелы, паказана ў прыкладзе 14.9.

Для кожнага раздзела вызначана ключавое службовае слова, якім ён пачынаецца. Пры напісанні праграмы ключавыя словы вылучаюцца паўтлустым шрыфтам.

Камп’ютар (ад англ. computer — вылічальнік) — устройства або сістэма, здольныя выконваць зададзеную дакладна пэўную змяняемую паслядоўнасць аперацый (часцей за ўсё лікавых разлікаў).

Электронна-вылічальная машына (ЭВМ) — комплекс тэхнічных сродкаў, дзе асноўныя функцыянальныя элементы (лагічныя; якія запамінаюць; індыкацыйныя і інш.) выкананы на электронных прыборах, прызначаных для аўтаматычнай апрацоўкі інфармацыі ў працэсе рашэння вылічальных задач.

Ніклаус Вірт (нарадзіўся ў 1934 г.) — швейцарскі вучоны, спецыяліст па інфарматыцы, адзін з самых вядомых тэарэтыкаў у галіне распрацоўкі моў праграміравання, прафесар камп’ютарных навук. Стваральнік і вядучы праекціроўшчык моў праграміравання Паскаль, Модула-2, Аберон.

Па традыцыі, якая пачалася ў 1978 г. з прыкладу ў кнізе Б. Кернігана і Д. Рытчы «Мова праграміравання Сі», першая праграма на любой мове праграміравання павінна выводзіць на экран прывітанне свету:

Прыклад 14.1.

Акно асяроддзя PascalABC з вынікам работы праграмы:

Прыклад 14.2. Тэкст праграмы:

Вынік работы праграмы:

Прыклад 14.3. Тэкст праграмы:

Вынік работы праграмы:

Дзве каманды write ў праграме можна аб’яднаць у адну, аддзяліўшы тэкст ад выразу коскай:

Да пачатку 1950-х гг. ХХ ст. праграмісты ЭВМ пры стварэнні праграм карысталіся машынным кодам. Запіс праграмы на машынным кодзе складаўся з адзінак і нулёў. Машынны код прынята лічыць мовай праграміравання першага пакалення. Тыпы даных не выкарыстоўваліся.

Першай мовай праграміравання, у якой з’явілася магчымасць ствараць пераменныя, лічыцца Асэмблер. У гэтай мове замест машынных кодаў сталі выкарыстоўваць каманды, запісаныя тэкстам. Асэмблер належыць да моў праграміравання другога пакалення.

У 1957 г. з’явілася мова Фартран, якая адкрыла эру моў праграміравання трэцяга пакалення. Яна дазволіла выкарыстоўваць розныя лікавыя тыпы даных, неабходныя для складаных разлікаў: цэлыя, рэчыўныя (рэчаісныя) і комплексныя.

Далейшае развіццё моў праграміравання дазволіла дабавіць магчымасць работы з іншымі тыпамі даных. Сучасныя мовы праграміравання дазваляюць працаваць з вялікай колькасцю тыпаў даных.

У асяроддзі праграміравання PascalABC рэалізавана больш за 30 розных тыпаў даных.

Прыклад 14.4. Прыклады апісання пераменных:

Дыяпазон магчымых значэнняў тыпу real задаецца лікамі ў стандартным уяўленні ад – 1.8   ∙   10308 до 1.8   ∙   10308 . Найменшы дадатны лік тыпу real прыбліжана роўны  5.0   ∙   10–324 . Пры вылічэннях у ліку захоўваецца да 16 лічбаў.

Прыклад 14.5. Прыклады запісу аператара прысвойвання:

x:= 7;
x1:= 3.5;
a_1 := 20 * (x + x1) — 32;
y := y + 7;

Прыклад 14.6. Запішам аператар прысвойвання на Pascal для матэматычных выразаў:

 

Выраз Запiс на Pascal
S = 2( a + b ) S:= 2*( a + b ) ;
S = a2 S:= a * a ;
a := ( x + y )/3;

 

Прыклад 14.7. Запішам аператар прысвойвання, пасля выканання якога значэнне пераменнай a павялічыцца ў 2 разы, а пераменнай b паменшыцца на 3.

У Pascal дапушчальныя каманды прысвойвання наступнага выгляду:

a:= a * 2;

Сэнс такой каманды наступны: з ячэйкі памяці здабываецца значэнне пераменнай a, затым яно памнажаецца на 2, вынік запісваецца ў тую ж ячэйку памяці. Старое значэнне пераменнай a будзе страчана.

Запіс аператара прысвойвання для змянення значэння пераменнай b наступны:

b:= b — 3;

Прыклад 14.8. Увесці два лікі, знайсці і вывесці іх суму.

Тэкст праграмы:

Вынік:

Результат:

Прыклад 14.9. Праграма, якая змяшчае ўсе раздзелы (падлічваецца колькасць зафарбаваных клетак у полі Робата памерам 10 х 10):



1 Якая каманда мовы праграміравання Pascal прызначана для вываду даных?



2 Што вызначае тып даных?



3 Якая каманда мовы праграміравання Pascal прызначана для ўводу даных?



4 Якая каманда мовы праграміравання Pascal прызначана для ўводу даных?



5 З якіх раздзелаў складаецца праграма на мове праграміравання Pascal?



1 Для праграмы з прыкладу 14.2 выканайце наступныя заданні (файл з праграмай можна спампаваць):

1. Замяніце ўсе каманды writeln на каманды write і выканайце праграму. Што адбылося? Растлумачце чаму.

2. Як зменіцца вынік работы праграмы, калі ў зыходным тэксце замяніць усе каманды write на writeln?

3. Змяніце праграму так, каб тэкст на экране выглядаў наступным чынам:

Прывітанне! Я камп’ютар!!! Я ўмею выконваць праграмы!
Ты сёння напісаў сваю першую праграму!!!
Я выканаў тваю праграму. Паглядзі на экране вынік!

2 Унясіце неабходныя змяненні ў праграму з прыкладу 14.3, каб дзеянні выконваліся ў тым парадку, у якім запісаны, г. зн. спачатку складанне, а потым множанне.

3 Уводзіцца ўзрост карыстальніка ў гадах. Вызначыце ўзрост карыстальніка праз 5 гадоў.

4 Напішыце праграму, у якой уводзяцца два лікі a і b. Затым першы лік памяншаецца ў 2 разы, а другі павялічваецца на 30. Выведзіце змененыя значэнні пераменных.

5 Напішыце праграму для вылічэння значэння лікавых выразаў:

1. 23 + 45 ∙ 11 – 15.

2. \frac{37 + 2 \cdot 27}{41}.

3. \frac{5638 - 2347}{49} + \frac{123 \cdot 756}{455}.