- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Адладка праграм
Калі тэсціраванне паказала, што ў праграме ёсць памылкі, тады пачынаецца адладка – працэс лакалізацыі і выпраўлення памылак.
Перш за ўсё трэба пакласці перад сабой тэкст праграмы і прааналізаваць яе на наяўнасць апісак. Далей пачынаецца лакалізацыя ўчастка, які і прыводзіць да памылковага выніку. Дзеля гэтага можна некаторыя аператары вылучыць як каментарыі, зрабіць іх невыканальнымі і прадоўжыць тэсціраванне.
Памылкі могуць праяўляцца па-рознаму. Самы просты выпадак, калі здараецца аварыйнае завяршэнне праграмы: дзяленне на нуль, overflow, underflow, выхад за межы масіву. Пры гэтым звычайна паказваецца на аператар, выкананне якога прывяло да аварыі. У рэжыме адладкі можна праглядзець значэнні велічынь, якія ўваходзяць у выраз, і прааналізаваць іх. Трэба шукаць, што прывяло да памылковага выніку.
Цяжэй за ўсё знайсці памылку, калі праграма працуе «амаль правільна» або «доўга». Трэба пастарацца прааналізаваць алгарытм, напрыклад растлумачыць яго каму-небудзь.
Пры выпраўленні праграмы неабходна прадумаць, каб выпраўленне адной часткі алгарытму не прывяло да памылак у другім месцы. Ёсць такое правіла: калі правак надта многа, то лепш напісаць праграму нанава.
Прыклад. Рашыць прыведзенае квадратнае ўраўненне
Этапы рашэння гэтай задачы будуць скарочаны, таму што методыка рашэння такіх ураўненняў вядома.
Алгарытм. Атрымаем наступную паслядоўнасць дзеянняў.
1. Атрымаць каэфіцыенты p, q.
2. Падлічыць .
3. Калі D = 0, то інакш калі D < 0, то каранёў няма; інакш (D > 0) .
4. Надрукаваць вынік.
Блок-схема алгарытму:
Структураграма алгарытму:
Заданне p, q |
||
Падлік |
||
< 0
D –
? |
0 |
|
Каранёў няма |
D
– ?
= 0 |
> 0 |
|
|
|
Друкуем х1, х2 |
||
Канец |
Праграма, якая рэалізуе алгарытм на мове Pascal:
PROGRAM Pr1;
CONST p = …; q = …;
VAR x1, x2, D: Real;
BEGIN
D := p * p – 4 * q;
IF D < 0 THEN Writeln ('D < 0, няма каранёў')
ELSE
BEGIN
IF D = 0 THEN
BEGIN
Writeln ('D = 0, кратны корань');
x1 := -p / 2; x2 := x1
END
ELSE
BEGIN
Writeln ('D > 0, два розныя карані');
x1 := (-p - sqrt(D)) / 2;
x2 := (-p + sqrt(D)) / 2;
END;
Writeln('X1=', x1, ' X2=', x2)
END;
Readln
END.
Для тэсціравання алгарытму праграмы рашыце наступныя ўраўненні:
Пры дапамозе атрыманай праграмы падлічыце карані гэтых ураўненняў. Тэсціраванне пакажа: нягледзячы на тое, што ўсе ўраўненні з’яўляюцца поўнымі квадратамі, вынік работы праграмы будзе розным. Для першага ўраўнення праграма надрукуе «D = 0, кратны корань», для другога – «D < 0, няма каранёў», для трэцяга – «D > 0, два розныя карані».
Тым, хто незнаёмы з тэмай уяўлення сапраўдных даных у ЭВМ, магчыма, і зусім будзе незразумела, чаму камп’ютар няправільна падлічвае дыскрымінанты. Аказваецца, што добра вядомыя чалавеку алгарытмы на ЭВМ іншы раз паводзяць сябе непрадказальна, таму што існуе такая ўласцівасць у ЭВМ, як паталогія лікаў (напрыклад, (1 / 3) * 3 1).
Калі тэставыя ўраўненні прывесці да віду ўраўненняў з цэлымі каэфіцыентамі, то памылкі пры падліку дыскрымінанта не будзе зусім.