- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
У групу парадкавых тыпаў аб’яднаны цэлалікавыя, сімвальны, лагічны, пералічальны і інтэрвальны тыпы. Гэта зроблена таму, што яны валодаюць наступнымі ўласцівасцямі:
1) усе магчымыя значэнні парадкавага тыпу ўяўляюць сабой абмежаванае ўпарадкаванае мноства;
2) да любога парадкавага тыпу можна прымяняць стандартную функцыю Ord, якая ў якасці выніку вяртае парадкавы нумар канкрэтнага значэння ў дадзеным тыпе;
3) да любога парадкавага тыпу можна прымяняць стандартныя функцыі Pred і Sucс, якія вяртаюць адпаведна папярэдняе і наступнае значэнні;
4) да любога парадкавага тыпу могуць быць прыменены стандартныя функцыі Low і High, якія вяртаюць найменшае і найбольшае значэнні велічынь дадзенага тыпу.
Структураваныя тыпы даных вызначаюць упарадкаваную сукупнасць скалярных пераменных і характарызуюцца тыпам сваіх кампанентаў.
Мноствы
Тып «мноства» ўтвараецца спецыяльнай канструкцыяй:
SET OF базавы_парадкавы_тып
Мноства ў мове Pascal – гэта абмежаваная (<=256 элементаў) сукупнасць папарна розных аб’ектаў аднаго скалярнага парадкавага тыпу (Word, Integer, Shorting), які называецца базавым. Скалярныя тыпы Byte і Char уводзяцца мовай і могуць быць асновай для пабудовы мностваў, бо іх колькасць роўна 256.
Базавы тып задаецца пералічэннем, дыяпазонам ці іменем тыпу.
TYPE
SetOfChar = SET OF Char; {мноства з сімвалаў}
SetOfByte = SET OF Byte; {мноства з лікаў}
SetOfDigit = SET OF 0..9; {мноства - інтэрвал лікаў}
SetOfDChar = SET OF '0'..'9';{мноства - інтэрвал сімвалаў}
VAR
SChar : SetOfChar;
SByte : SetOfBYTE;
SDigit : SetOfDigit;
Кожны аб’ект у мностве называецца элементам мноства. Калі мноства не мае элементаў, яно называецца пустым. Вобласць значэнняў тыпу «мноства» – набор разнастайных падмностваў, якія складзены з элементаў базавага тыпу.
Выява мноства:
Спроба абвешчаным пераменным надаць значэнні, якія не ўваходзяць у базавае мноства, выклікае праграмнае перарыванне. Напрыклад:
SDigit := [0,2,4,6,8];
SDigit := [10]; {памылка}
SChar := ['a'..'z','A'..'Z','б','г'];
SChar := [2]; {памылка}
Парадак чаргавання элементаў унутры дужак не мае значэння, таксама як не мае значэння колькасць паўтарэнняў элемента. Напрыклад:
Schar := ['a', 'a', 'а', 'а'] эквівалентна аднаразоваму ўпамінанню сімвала 'a'.
Прыклад.
VAR
x : Byte;
S : SET OF Byte;
. . .
x := 3;
S := [1, 2, x];
S := S+[x+1];
Мноства можа пашырацца ці скарачацца па ходу праграмы. Існуюць працэдуры Exclude і Include, якія адпаведна выдаляюць і дабаўляюць элемент у мноства. Працэдура Include(S, i) выдаляе з мноства S элемент, зададзены параметрам і. Працэдура Exclude(S, i) дабаўляе да мноства S элемент, зададзены параметрам і.
Аперацыі над мноствамі (накшталт матэматычных), якія вызначаны ў мове Pascal, прадстаўлены ў наступных трох табліцах.
Аб’яднанне мностваў (тое, што ўваходзіць у 1-е і 2-е мноствы) |
Рысунак |
|||
|
||||
У матэматыцы |
У мове Pascal |
|||
Абазначэнне |
Прыклад |
Абазначэнне |
Прыклад |
|
|
|
|
|
Перасячэнне мностваў (тое, што агульнае ў 1-м і 2-м мноствах) |
Рысунак |
|||
|
||||
У матэматыцы |
У мове Pascal |
|||
Абазначэнне |
Прыклад |
Абазначэнне |
Прыклад |
|
|
|
|
|
Рознасць мностваў (тое, што ёсць толькі ў 1-м мностве, за выключэннем таго, што ёсць у абодвух) |
Рысунак |
|||
|
||||
У матэматыцы |
У мове Pascal |
|||
Абазначэнне |
Прыклад |
Абазначэнне |
Прыклад |
|
|
|
|
|
Вынік гэтых аперацый – заўсёды мноства.
Другая група аперацый – гэта аперацыі параўнання ці адносін: =, <>, >=, <=. Вынік заўсёды true ці false.
Аперацыя |
Назва |
Форма |
Тлумачэнне: false – у адваротным выпадку |
= |
Праверка на роўнасць |
S1=S2 |
True, калі S1 і S2 складаюцца з аднолькавых элементаў |
<> |
Праверка на няроўнасць |
S1<>S2 |
True, калі S1 і S2 адрозніваюцца хоць адным элементам |
<= |
Праверка на падмноства |
S1<=S2 |
True, калі ўсе элементы S1 уваходзяць у S2 незалежна ад парадку чаргавання |
>= |
Праверка на падмноства |
S1>=S2 |
True, калі ўсе элементы S2 у S1 |
IN |
Праверка на ўваходжанне элемента ў мноства |
E IN S1 E IN […] |
True, калі значэнне элемента E належыць базаваму тыпу мноства і ўваходзіць у мноства S1 ці мноства-канстанту ([...]) |
Аперацыю IN добра скарыстоўваць, калі трэба праверыць пападанне значэння ў дыяпазоны пералічальных тыпаў:
IF ch IN ['a'.. 'x', 'A'.. 'X'] THEN …
IF j IN [100..200] THEN
Тут скарыстаны канстанты тыпу «мноства». Гэтым спрашчаюцца лагічныя аператары. Параўнайце наступную ўмову:
C IN ['0'.. '9', 'A'.. 'Z'];
і такую:
(C>='0') AND (C<='9') OR (C>='A') AND (C<='Z');
Вартасці мностваў відавочны:
1) эканоміцца памяць, бо аб’ём памяці, які займае адзін элемент мноства, роўны 1 біту. Значыць, аб’ём мноства з 256 элементаў складае ўсяго 32 байты, а адвольнага – (MaxNum DIV 8)-(MinNum DIV 8)+1;
2) эканоміцца час, бо распрацоўшчыкі транслятараў звычайна звязваюць элементы мноства з машынным словам, у якім: код «1» – прысутнасць элемента ў мностве, «0» – адсутнасць.
Значыць, параўнанне мностваў і аперацыі над мноствамі рэалізаваны на ўзроўні апрацоўкі бітаў.
Недахопы мностваў – немагчымасць іх вываду (напрыклад, на экран) ці ўводу (напрыклад, з клавіятуры). Існуе магчымасць толькі пераканацца, што элемент належыць мноству. Аднак можна зрабіць наступнае: узяць нейкую рабочую пераменную, прабегчы па ўсіх базавых элементах пэўнага мноства і, пераканаўшыся, што элемент з мноства, друкаваць яго.
Тып «мноствы» істотна пашырае гібкасць мовы.