- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Параметры-значэнні
Параметры-значэнні з’яўляюцца лакальнымі (унутранымі) пераменнымі падпраграмы, якія існуюць толькі ў межах вызначэння падпраграмы. Змяненне параметра-значэння ў падпраграме ніяк не паўплывае на значэнні фактычнага (адпаведнага яму) параметра, бо ў сітуацыі работы з параметрам-значэннем кампілятар будуе нейкую сваю пераменную ў памяці, перасылае ў яе значэнне фактычнага параметра і працуе фактычна з гэтай копіяй. Калі падпраграма заканчвае сваю работу, доступ да такой пераменнай губляецца.
Сінтаксічная дыяграма параметраў значэнняў:
Вывад. Фактычны параметр у такім выпадку можа быць выразам (у прыватнасці, канстантай ці пераменнай). Параметры-значэнні служаць для таго, каб падпраграме перадаць нейкія звесткі (фактычна іх копіі), і ніяк іх нельга выкарыстоўваць, каб атрымаць з падпраграмы нейкія вынікі пры дапамозе параметраў такога віду.
Параметры-пераменныя
Параметры-пераменныя выкарыстоўваюцца, калі падпраграма павінна вярнуць у праграму, якая яе выклікала, некаторыя вынікі. Змяненні значэнняў такіх параметраў у падпраграме адразу становяцца вядомымі ў праграме, якая выклікае гэту падпраграму. Кампілятар будуе праграму так, што такія фактычныя параметры апрацоўваюцца на сваім месцы ў памяці (пры дапамозе спасылак). Значыць, пры актывізацыі (выкліку) падпраграмы на месцы фактычных параметраў-пераменных перадаюцца адрасы іх знаходжання ў памяці. Калі мы хочам прадугледзець нейкую абарону ад памылковага змянення даных у праграме, якая выклікае падпраграму, трэба выкарыстоўваць параметры-значэнні або параметры-канстанты; калі ж у праграму трэба перадаць вынік – тады параметры-пераменныя.
Сінтаксічная дыяграма параметраў-пераменных:
Прыклад. Надрукаваць у двайковым уяўленні нейкі цэлы лік.
PROCEDURE Write_Integer_To_Binary;
FUNCTION Binary (x : Longint; NumOfbits : Byte) : STRING;
{дзе Longint – 4 байты = 32 біты,
а NumOfbits – колькасць рэальных бітаў}
VAR bit, I : Byte;
S : STRING[32];
BEGIN
S := '';
FOR i := 0 TO 31 DO
BEGIN
bit := (X SHL i) SHR 31;
S := S + chr(Ord('0') + bit);
END;
Delete (S, 1, 32 - NumOfbits);
Binary := s;
END;
VAR i : Integer;
BEGIN
FOR i := -5 TO 5 DO
Writeln(i:7, '->', Binary(Longint(i),8*sizeof(i)));
Readln
END;
Заданне. Цэлы дадатны лік m запісваецца ў двайковай сістэме злічэння, і разрады ў гэтым уяўленні перастаўляюцца ў адваротным парадку (рэверс). Узяць атрыманы лік у якасці значэння функцыі Вit_Reveres(m). Надрукаваць значэнні Bit_Reveres(m) для m = 512 да 1012 з крокам 50.
Яшчэ адзін механізм перадачы звестак падпраграмам засноўваецца на прынцыпе лакалізацыі.
Прынцып лакалізацыі
Усе даныя можна заўсёды кваліфікаваць як глабальныя ці лакальныя адносна нейкай падпраграмы, бо падпраграмы павінны валодаць пэўнай незалежнасцю пры выкарыстанні пераменных.
Аб’екты, якія апісваюцца толькі ў галоўнай праграме, называюцца глабальнымі. Яны даступны ў любым месцы праграмы, пачынаючы з месца свайго вызначэння, калі іх не «засланяе» другое вызначэнне ва ўнутранай падпраграме.
Апісанні метак, канстант, тыпаў, пераменных, працэдур, функцый уводзяць аб’екты і замацоўваюць за імі імёны.
Вобласцю дзеяння аб’яўленага імені з’яўляецца ўнутраны тэкст падпраграмы, у якой выконваецца аб’яўленне, і тых падпраграм, якія апісваюцца ў дадзенай. Вобласць дзеяння аб’яўленага імені распаўсюджваецца да таго месца, дзе гэта імя аб’яўляецца нанава.
Такім чынам, у кожным падпраграмным блоку могуць ужывацца аб’екты, лакалізаваныя ў ім самім або ў адным з ахопліваючых праграмных блокаў. Аб’екты, што вызначаны ўнутры падпраграмы, з’яўляюцца лакальнымі аб’ектамі гэтай падпраграмы. Апісаныя ў ахопліваючых блоках аб’екты называюцца глабальнымі ў суадносінах да гэтага блока.
Вывад. Адзін і той жа аб’ект можа быць лакальным і глабальным. Трэба кожны раз уяўляць, адносна чаго мы яго разглядаем.
Трэба памятаць, што змяненне ў падпраграме лакальнага аб’екта ніяк не праяўляецца ў ахопліваючай праграме. Калі ж змяняецца глабальны аб’ект – гэта іншая справа.
Аб’екты, лакалізаваныя ў падпраграме, нараджаюцца пры ўваходзе ў падпраграму і знікаюць пры выхадзе з яе. Такім чынам, глабальныя аб’екты, якія выпадкова супадаюць па імені з нейкімі лакальнымі аб’ектамі, становяцца недаступнымі да выхаду з падпраграмнага блока.
Лакальныя аб’екты – гэта ўнутраныя, рабочыя велічыні падпраграмы. Уся інфармацыя, якую падпраграма атрымлівае ці аддае ў знешнія блокі, праходзіць праз параметры і глабальныя аб’екты.
Значыць, вынікі, атрыманыя ў падпраграме, можна выкарыстаць у ахопліваючай праграме (падпраграме) толькі тады, калі прысвоіць іх значэнні глабальным пераменным (сюды ўваходзяць і параметры-пераменныя).
Вобласць дзеяння метак пераходаў заўсёды лакальная, таму нельга планаваць пераходы з падпраграмы ў ахопліваючую праграму пры дапамозе GOTO.
Прыклад. Што будзе надрукавана?
PROGRAM Pr;
VAR x, y : Integer;
PROCEDURE P;
VAR y : Byte;
BEGIN
x := x + 1; y := 1;
Writeln ('у падпраграме x=', x : 4, ' y=', y : 4);
END;
{ у падпраграме x=1 y=1}
VAR a, b, c : …;
{гэтыя глабальныя пераменныя ўжо недаступныя ў P,
бо яны апісаны пазней за P}
BEGIN
x := 0; y := 0;
P;
{тут актывізуецца падпраграма P,
у якой глабальная пераменная x атрымае другое значэнне}
Writeln ('у праграме x=', x : 5, ' y=', y : 5);
{у праграме x=1 y=0}
END.