- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Аператар выкліку працэдуры
Аператар выкліку працэдуры не мае ніякага службовага слова. Служыць для актывізацыі папярэдне вызначанай працэдуры.
Пусты аператар
Пусты аператар не змяшчае ніякіх сімвалаў і не выконвае ніякіх дзеянняў. Прыклад: ;;; – два пустых аператара; M:; – памечаны пусты аператар.
Гэта аператар-невідзімка. Ён можа быць размешчаны ў любым месцы праграмы, дзе сінтаксіс мовы дазваляе прысутнасць аператара.
Хутчэй за ўсё мы яго ўжываем выпадкова, калі ставім лішнія «;».
Састаўны аператар
Даволі часта ў праграме ўзнікае неабходнасць аб’яднаць групу аператараў у адзін аператар. Падобна таму як любы выраз, узяты ў дужкі, становіцца аперандам, састаўны аператар утвараецца з паслядоўнасці аператараў, якія заключаны ў дужкі, але не круглыя, а спецыяльныя аператарныя – BEGIN і END. Паміж гэтымі дужкамі можна напісаць любы лік аператараў, якія аддзяляюцца адзін ад аднаго «;» – кропкай з коскай (паколькі «;» ставіцца паміж аператарамі, то перад дужкай END кропка з коскай фактычна непатрэбна, аднак калі яна ставіцца, то тут проста з’явіўся пусты аператар).
Састаўны аператар успрымаецца як адзінае цэлае і можа знаходзіцца ў любым месцы праграмы, дзе сінтаксіс мовы дапускае наяўнасць аператара. Звычайна састаўны аператар выкарыстоўваецца як цела цыклаў ці пры напісанні ўмоўных аператараў.
Аператары выбару
Аператары выбару дазваляюць падзяліць вылічальны працэс на дзве ці больш галін, выконваючы кожны раз (у залежнасці ад умовы) патрэбны аператар.
У мове існуюць два віды аператараў выбару – умоўны аператар (IF) і аператар варыянта (CASE).
Умоўны аператар
Умоўны аператар мае наступны выгляд:
Аператар IF працуе так: падлічваецца значэнне булеўскага выразу і, калі яно праўдзівае, выконваецца аператар, які стаіць пасля THEN, калі лжывае – аператар, які стаіць пасля ELSE. Калі ж частка з ELSE адсутнічае, то ў гэтым выпадку ніякіх дзеянняў не выконваецца. Потым выконваецца наступны аператар, калі ў IF не было аператара GOTO ці аператараў завяршэння.
Заўвага. Можа стацца, што значэнне булеўскага выразу будзе вядомым яшчэ да канца вылічэння ўсяго выразу. Правілы мовы не патрабуюць вылічэння яго да канца, калі вынік атрымаўся «датэрмінова». Таму лагічны выраз пішацца так, каб ён стаў вядомым як мага хутчэй.
Напрыклад: (...) AND A, дзе А – простая булеўская пераменная, лепш запісаць: A AND (...). Гэта вынікае з таго факта, што калі адзін з аперандаў аперацыі AND мае значэнне false, то і вынік – false.
Калі ж выраз утрымлівае зварот да функцыі з пабочным эфектам, тады выраз трэба выканаць да канца, і таму яго або трэба структураваць так, каб значэнне атрымалася толькі ў канцы, або задаць адпаведную опцыю кампілятару $B+.
Метады і прыёмы праграміравання
Схематычна працэс, які разгаліноўваецца, можа быць адлюстраваны пры дапамозе структуры выбару.
Поўны аператар IF можна адлюстраваць блок-схемай.
Скарочаны аператар IF:
Фармат аператара IF:
IF умова THEN аператар1
ELSE аператар2;
Або крыху інакш:
IF умова THEN аператар1 ELSE аператар2;
Скарочаная форма аператара IF:
IF умова THEN аператар1;
Адзін аператар IF можа ўваходзіць у састаў другога IF, у гэтым выпадку гавораць аб укладанні аператараў.
IF умова THEN
IF падумова THEN аператар1
ELSE аператар2
ELSE аператар3;
Пры ўкладанні аператараў кожнае ELSE адпавядае таму THEN, якое непасрэдна яму папярэднічае.
Заўвага. Аператар, які стаіць пасля THEN ці ELSE, можа быць або простым, або састаўным, г. зн. мець выгляд BEGIN ... END.
Калі пры рэалізацыі ўкладзеных умоўных аператараў карыстацца іх поўнай і скарочанай формамі запісу, то можна лёгка дапусціць памылкі. Лепш за ўсё прымяняць поўную форму з выкарыстаннем пустога аператара пасля ELSE.
1. Напрыклад, не выкарыстоўвайце такую канструкцыю:
IF (a>=b) AND (adznaka>0) THEN пусты аператар
ELSE
IF (a<-5.5) OR (b>7.5) THEN adznaka=0
ELSE пусты аператар
1.1. Лепш запісаць
IF NOT((a>=b) AND (adznaka>0)) AND((a<-5.5) OR (b>7.5))
THEN adznaka=0;
1.2. Яшчэ лепш
d := … {умова};
IF d THEN …
2. А вось у наступным аператары ёсць сінтаксічная памылка. Дзе?
IF x > y THEN
BEGIN A := B; C := D; END;
ELSE A := 0;
Транслятар пакажа на ELSE і выдасць паведамленне аб памылцы. Трэба памятаць, што перад ELSE кропка з коскай не ставіцца.
3. Бяссэнсавай, напэўна, з’яўляецца і такая канструкцыя, хоць сінтаксічна яна правільная (транслятар на памылку не пакажа).
IF NOT P THEN;
BEGIN
C := Сos(z);
D := x*y-Sqrt(z);
END;
Напэўна, пасля THEN «;» лішняя, таму што наданне пераменным С і D значэнняў будзе выканана незалежна ад значэння P.
4. Бывае, умоўны аператар выкарыстоўваецца там, дзе ён не патрэбен. Замест IF a > b THEN P := true ELSE P := false; прасцей і эфектыўней запісаць P := a > b.
5. Праграміруючы ўкладзеныя ўмоўныя аператары, трэба памятаць, што ўмовы ў іх правяраюцца паслядоўна, і таму першай трэба пісаць умову, верагоднасць выканання якой большая.
Напрыклад, трэба лавіць пападанне пункта x у інтэрвалы (0,1], (1,10], (10,100], (100,500]. Калі ўсе значэнні x роўнаверагодныя, паколькі даўжыня апошняга інтэрвалу самая большая, то верагоднасць пападання x у яго самая вялікая. Атрымаем такі фрагмент праграмы.
Варыянт 1.
IF (100 < x) AND (x <= 500) THEN p := 1
ELSE
IF (10 < x) AND (x <= 100) THEN p := 2
ELSE
IF (1 < x) AND (x <= 10) THEN p := 3
ELSE
IF (0 < x) AND (x <= 1) THEN p := 4
ELSE p := 0
Аднак наступны варыянт больш эфектыўны, таму што ўтрымлівае менш праверак.
Варыянт 2.
IF x > 500 THEN p := 0
ELSE
IF x > 100 THEN p := 1
ELSE
IF x > 10 THEN p := 2
ELSE
IF x> 1 THEN p := 3
ELSE
IF x > 0 THEN p := 4
ELSE p := 0;