- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Механізмы структуравання праграм Працэдуры і функцыі
Поўная сінтаксічная дыяграма вызначэння працэдуры:
Загаловак працэдуры:
Цела працэдуры ў агульным выглядзе вызначаецца наступнай сінтаксічнай дыяграмай.
Вызначэнне блока глядзіце ў тэме «Агульная структура Pascal-праграмы».
Опцыя INTERRUPT (опцыя – тое, што і рэжым) служыць для вызначэння так званых працэдур перарыванняў, калі ў праграме неабходна вызначыць асабістыя алгарытмы рэакцыі на перарыванні аперацыйнай сістэмы, скасаваўшы пры гэтым стандартныя рэакцыі. Гэта працэдуры спецыяльнага віду.
У мове Pascal, пачынаючы з версій 4.0, інтэрфейс сувязі з мовай Асэмблер прыняў завершаны выгляд: мова дазваляе задаваць цела падпраграмы непасрэдна ў выглядзе паслядоўнасці машынных каманд, выкарыстоўваючы спецыяльную канструкцыю з опцыяй INLINE, ці ў выглядзе серыі асэмблерных інструкцый з выкарыстаннем опцыі ASSEMBLER.
Опцыі NEAR ці FAR вызначаюць, як кампілятару будаваць машыннае ўяўленне падпраграмы: бліжэйшы тып выкліку – NEAR, больш далёкі – FAR. Гэтыя опцыі ўжываюцца ў асноўным пры выкарыстанні падпраграм у якасці фармальных параметраў для дадзеных працэдурных тыпаў.
Опцыя EXTERNAL выкарыстоўваецца тады, калі трэба звярнуцца да падпраграмы, цела якой напісана па-за вашай праграмай і знаходзіцца ў выглядзе аб’ектнага кода (ці было запісана ў машынных камандах, ці пасля трансляцыі з нейкай алгарытмічнай мовы). Гэта так званае знешняе апісанне. У Pascal-праграме паказваецца загаловак знешняй падпраграмы, пасля якога замест цела падпраграмы павінна ісці службовае слова EXTERNAL. Акрамя таго, дзе-небудзь у тэксце праграмы неабходна задаць дырэктыву кампілятара $L, аргументам якой з’яўляецца імя obj-файла, які змяшчае код знешняй падпраграмы.
Але можна і так: {$I імя_файла} – уключыць файл (лакальны). Гэта паведамленне кампілятару аб неабходнасці ўключыць у кампіляцыю названы файл. (Разумеецца імя_файла.Pas.)
Функцыі карыстальніка
Функцыя ў адрозненне ад працэдуры вяртае толькі адно простае скалярнае ці радковае значэнне, якое можна скарыстаць у тым ці іншым выразе.
Сінтаксічная дыяграма вызначэння функцыі:
Цела функцыі аналагічна целу працэдуры, за выключэннем таго, што адсутнічае опцыя INTERRUPT.
У целе функцыі ў раздзеле аператараў павінен знаходзіцца па меншай меры адзін аператар, які надае ідэнтыфікатару функцыі выніковае значэнне.
Кожная працэдура ці функцыя можа мець свае працэдуры ці функцыі – лакальныя.
Параметры
Параметры забяспечваюць механізм замены, які дазваляе выконваць падпраграмы з рознымі данымі.
Працэдуры і функцыі могуць мець (а могуць і не мець) спіс фармальных параметраў. Кожны параметр апісваецца некаторым іменем. Тып жа параметра можа быць любым дазволеным.
Пры выкліку падпраграмы фармальныя параметры замяняюцца фактычнымі данымі. Спісы фармальных і фактычных параметраў павінны мець адну колькасць параметраў, тыпы фармальных і фактычных параметраў павінны быць эквівалентнымі, інакш кампілятар заўважыць памылку: «TYPE mismatch» – несупадзенне ці неадпаведнасць тыпаў.
Спіс фармальных параметраў:
Секцыя фармальных параметраў:
Тып параметра:
Тып функцыі:
Адразу зразумела, што нельга рабіць такія апісанні:
PROCEDURE InCorr(VAR A : ARRAY[1..10] OF Byte);
Трэба тып масіву апісаць асобна і затым выкарыстаць яго:
TYPE mas = ARRAY[1..10] OF Byte;
PROCEDURE InCorr(VAR A : mas);
Сустракаецца кананічная форма секцыі фармальных параметраў, калі кожны параметр – гэта адна секцыя.
У мове Pascal бываюць і фармальныя параметры – «адкрытыя масівы», якія вызначаюцца ў секцыі фармальных параметраў пры дапамозе канструкцыі ARRAY OF тып_элементаў. Напрыклад:
PROCEDURE InCorr(aArray : ARRAY OF Integer)
Масіў aArray толькі аднамерны, індэкс яго заўсёды пачынаецца з 0 і змяняецца да велічыні High(aArray). У падпраграме індэкс так і змяняюць.
Значыць, калі параметры-масівы пажадана ўжываць для аднамерных масіваў рознай даўжыні, можна карыстацца адкрытымі масівамі, у якіх указваецца базавы тып элементаў масіву, але не акрэсліваюцца яго памеры і межы.
High(x) – вяртае максімальнае значэнне тыпу-дыяпазону, да якога належыць пераменная x.
Прыклад.
CONST A : ARRAY[-1..2] OF Integer = (0, 1, 2, 3);
B : ARRAY[ 5..7] OF Integer = (4, 5, 6);
PROCEDURE ArrayPrint(aArr : ARRAY OF Integer; c : char);
VAR k : Integer;
BEGIN
Writeln(c);
FOR k := 0 TO High(aArr) DO Write(aArr[k]:8);
Writeln;
END;
BEGIN
ArrayPrint(A, 'A');
ArrayPrint(B, 'B');
Readln;
END.
У мове Pascal выкарыстоўваюцца і параметры CONST (апісанне аналагічна апісанню VAR з тыпам), а праграмы працуюць з параметрамі-канстантамі так, што ў падпраграме любыя змены з такімі параметрамі не дапускаюцца.