- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Даныя карыстальніцкага тыпу
У мове Pascal уведзена дастатковая колькасць тыпаў даных, але яшчэ ёсць магчымасць для ўвядзення новых тыпаў, якія больш падыходзяць для канкрэтных практычных мэт.
Мы разглядалі тыпы, якія ўводзяцца мовай Pascal. Гэта наперад вызначаныя тыпы. Для іх апісання ў мове існуюць стандартныя ідэнтыфікатары. Акрамя іх існуюць катэгорыі тыпаў даных, якія ўводзяцца праграмістамі. Імя тыпу абазначаецца ідэнтыфікатарам. Да іх у першую чаргу адносяцца пералічальныя і абмежаваныя (тып «дыяпазон») тыпы.
Аб’яўленне новых тыпаў робяць у блоку апісання тыпаў Type па наступнаму прынцыпу:
TYPE
Новы_тып_1 = масіў_цэлых_лікаў;
Новы_тып_2 = мноства_сімвалаў;
...
Новы_тып_101 = цэлы_лік;
Новы_тып_102 = пералічаныя_тут_значэнні;
Апісанне тыпаў:
Вызначэнне тыпу:
Стандартныя тыпы не трэба вызначаць нанава.
Даныя пералічальнага тыпу
Пералічальны тып – гэта тып даных, у якіх колькасць усіх магчымых значэнняў абмежавана. Яго можна распісаць у рад па значэннях, пералічваючы праз коску ў круглых дужках назвы (ідэнтыфікатары) элементаў-значэнняў тыпу (гэтыя назвы павінны быць унікальнымі ў межах праграмы). Пералічальнаму тыпу можна надаць імя, тады ён апісваецца ў секцыі TYPE.
Фармат найменнага пералічальнага тыпу:
TYPE
Імя тыпу = (ідэнтыфікатар_1,..., ідэнтыфікатар_n);
VAR
Ідэнтыфікатар_зм_1, ідэнтыфікатар_зм_2,... : імя тыпу;
Фармат ненайменнага пералічальнага тыпу:
VAR Ідэнтыфікатар_зм_1, ідэнтыфікатар_зм_2,...: (ідэнтыфікатар_1,... ідэнтыфікатар_n);
Пераменная такога тыпу зможа ўтрымліваць тыя значэнні, якія ўказаны ў яго пералічэнні, інакш – памылка. Максімальны лік элементаў у адным пералічэнні роўны 65 535. Захоўваецца значэнне пералічальнага тыпу ў бяззнакавым байце, калі пералічана не больш за 256 значэнняў, і як бяззнакавае слова – у астатніх выпадках.
Прыклад.
TYPE
Personages = (NifNif, NufNuf, NafNaf);
VAR
Q,P : Personages;
Любы пералічальны тып мае ўнутраную нумарацыю значэнняў ад 0 да апошняга. Нумар кожнага значэння можна атрымаць функцыяй Ord(x), якая вяртае цэлы лік у форме Longint: Ord(NufNuf) 1.
Мае месца адваротны запіс: P := Personages(і), дзе 0 і 2, i – цэлае. Напрыклад, пры i=2 пераменная P атрымае значэнне NafNaf. У пераменную P запісваецца значэнне, якое адпавядае зададзенаму парадкаваму нумару элемента пералічэння. Да пераменных пералічальнага тыпу прымянімы функцыі Succ(x) і Pred(x).
Паколькі значэнні пералічальнага тыпу ўпарадкаваны, іх можна параўноўваць: хто мае большы парадкавы нумар, той і большы. Напрыклад, вынік параўнання NufNuf NafNaf ёсць true.
Недахопы пералічальнага тыпу: значэнні даных пералічальнага тыпу не могуць быць выведзены на экран, ці прынтэр, ці ў файл і не могуць быць уведзены з клавіятуры, бо гэта ўнутраныя даныя (але змагацца з гэтым можна, завёўшы, напрыклад, масіў радкоў з такімі назвамі, а індэксы масіву – гэта тыя ж імёны даных пералічальнага тыпу).
Даныя інтэрвальнага тыпу
Мы можам вызначыць тып, які будзе ўтрымліваць значэнні толькі з абмежаванага паддыяпазону некаторага базавага парадкавага тыпу.
Базавым тыпам, з якога вычляняюцца дыяпазоны, можа быць любы цэлалікавы тып, Char і любы з уведзеных праграмістам пералічальных тыпаў.
Для ўвядзення новага тыпу-дыяпазону ў блоку вызначэння тыпаў TYPE трэба ўказаць імя гэтага тыпу і межы дыяпазону праз дзве кропкі:
CONST n=10;
TYPE Radius = 1..90;
CapsLetter = 'А'..'Я';
Diap = 2*n..3*n;
Межы могуць быць і выразамі, але нельга, каб выраз пачынаўся з дужкі, бо дужка – гэта адзнака пачатку пералічэння.
Кампілятар пры кожнай аперацыі з пераменнай інтэрвальнага тыпу можа генерыраваць падпраграмы праверкі, каб устанавіць, застаецца ці не значэнне пераменнай сярод дыяпазону яе значэнняў. Для гэтага трэба ўстанавіць дырэктыву кампілятара {$R+} (па змаўчанні {$R-}). Прыклад аб’яўлення пераменных інтэрвальнага тыпу:
TYPE
Day = (sat, sun, mon, tue, wed, thu, fri);
пералічальны найменны
VAR
WorkDay : Day;
DayOff : mon..fri;
інтэрвальны на базе пералічальнага
Symbol : 'A'..'Z'; інтэрвальны на базе Char
З данымі інтэрвальнага тыпу могуць працаваць функцыі Succ, Pred, Ord.
Да іх можна прымяняць усе стандартныя падпраграмы і аперацыі, якія вызначаны для базавага тыпу. Толькі калі дыяпазон узяты з базавага тыпу, які можа выводзіцца на экран ці ўводзіцца з клавіятуры (або ўвод-вывад у файл), тады і абмежаваныя даныя можна такім чынам уводзіць-выводзіць.