- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Прыклады праграм
Задача 1. Няхай дадзены натуральны лік N 100. Напісаць праграму, якая выводзіць запіс гэтага ліку ў рымскай сістэме злічэння.
Рашэнне. Для запісу лікаў першай сотні выкарыстоўваюцца літары I, V, X, L, C (1, 5, 10, 50, 100). Паколькі літары, якія абазначаюць колькасць дзесяткаў, колькасць адзінак, могуць быць выведзены незалежна, то ў праграме для вываду тых ці іншых можна выкарыстаць аператар выбару.
PROGRAM RIMSKIE;
VAR N: Integer;
BEGIN
Read(N);
IF (N<1) OR (N>99) THEN
Writeln('памылкова зададзены зыходны лік N', N)
ELSE
BEGIN
Writeln(N, 'арабскімі лічбамі');
CASE N DIV 10 OF {выбар па колькасці дзесяткаў}
1: Write('X');
2: Write('XX');
3: Write('XXX');
4: Write('XL');
5: Write('L');
6: Write('LX');
7: Write('LXX');
8: Write('LXXX');
9: Write('XC');
END;
CASE N MOD 10 OF {выбар па колькасці адзінак}
1: Write('I');
2: Write('II');
3: Write('III');
4: Write('IV');
5: Write('V');
6: Write('VI');
7: Write('VII');
8: Write('VIII');
9: Write('IX');
END;
Write(' – рымскімі лічбамі')
END
END.
Задача 2. Зададзены лік, які запісаны дзвюма рымскімі лічбамі. Вывесці яго значэнне ў арабскай сістэме злічэння.
Рашэнне. Няхай лік зададзены дзвюма лацінскімі літарамі з мноства (I, V, X, L, C, D, M). Адпаведна рымскай сістэме запісу лікаў, калі літара, якая абазначае меншы лік, запісана перад літарай, якая абазначае большы лік, то меншы лік аднімаецца ад большага, інакш лікі складваюцца.
PROGRAM ARABSKIE;
VAR RIMS1, RIMS2: Char; {рымскія лічбы}
ARAB1, ARAB2: Integer; {арабскія лікі}
BEGIN
Readln(rims1, rims2);
{задаём з клавіятуры сімвалы без апострафаў!}
CASE rims1 OF
'I': arab1:=1;
'V': arab1:=5;
'X': arab1:=10;
'L': arab1:=50;
'C': arab1:=100;
'D': arab1:=500;
'M': arab1:=1000;
ELSE Write('памылка')
END;
CASE rims2 OF
'I': arab2:=1;
'V': arab2:=5;
'X': arab2:=10;
'L': arab2:=50;
'C': arab2:=100;
'D': arab2:=500;
'M': arab2:=1000;
ELSE Write('памылка')
END;
Writeln(rims1, rims2, ' – рымскімі лічбамі');
IF arab1<arab2 THEN Write(arab2-arab1)
ELSE Write(arab2+arab1);
Write(' – арабскімі лічбамі')
END.
Калі ў якасці зыходных даных будуць пададзены не рымскія лічбы, то памылка будзе вызначана адпаведным аператарам выбару і надрукавана слова «памылка».
Аператары паўтарэння
Шматразовае паслядоўнае выкананне аднолькавых дзеянняў у праграме з’яўляецца асновай праграміравання, бо дае магчымасць пры дапамозе параўнальна невялікай колькасці каманд у праграме заставіць машыну зрабіць большы аб’ём вылічэнняў. Паколькі цыклічнасць – найбольш характэрная асаблівасць значнай часткі практычна выкарыстоўваемых алгарытмаў, пытанне праграміравання цыклаў з’яўляецца адным з важных.
Пры цыклічных працэсах тыповым з’яўляецца выпадак, калі момант заканчэння цыклічнага працэсу вызначаецца бягучым значэннем некаторай пераменнай, якую называюць параметрам цыкла.
Для гібкага кіравання цыклічнымі аператарамі For, While, Repeat існуюць дзве працэдуры – Break і Continue:
Break – рэалізуе «адразу ж» выхад з цыкла;
Continue – забяспечвае датэрміновае завяршэнне чарговага праходу цыкла, эквівалент перадачы кіравання ў самы канец цыклічнага аператара (цела цыкла).
Увядзенне гэтых аператараў практычна выключае патрэбу ў аператары GOTO.
Калі колькасць паўтарэнняў вядома загадзя – ці ў час састаўлення праграмы, ці к моманту ўваходу ў цыкл, тады лепш выкарыстоўваць аператар цыкла з параметрамі (схема а).
а) FOR_TO_DO, FOR_DOWNTO_DO
1 – першапачатковы ўваход у цыкл;
2 – уваход у цыкл пры яго чарговым паўтарэнні;
3 – выхад з цыкла па яго заканчэнні.
Калі колькасць паўтарэнняў цыкла вызначаецца па ходу вылічэнняў у залежнасці ад атрыманых бягучых вынікаў, выкарыстоўваюцца аператары цыкла з перадумовай ці пасляўмовай (схемы б і в – ітэрацыйныя цыклы з паслядоўным набліжэннем).
б) REPEAT UNTIL в) WHILE DO
Разгледзім падрабязна кожны аператар цыкла.