- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Тэсціраванне праграм
Атрыманы алгарытм, які можа быць запісаны на мове блок-схем ці на алгарытмічнай мове, трэба праверыць на наяўнасць памылак па розных зыходных даных.
Чым раней будуць выяўлены памылкі, тым меншую шкоду яны прынясуць. Вядома, напрыклад, што запуск першай амерыканскай станцыі да Венеры закончыўся няўдачай у выніку адзінай памылкі (апіскі) у праграме. Пакуль не існуе тэорыі тэсціравання, якая гарантавала б выяўленне ўсіх памылак.
Разгледзім некалькі практычных правіл тэсціравання, кіраванне якімі дазволіць паменшыць колькасць нявыяўленых памылак пры параўнанні з бессістэмнай праверкай праграм.
1. Трэба рыхтаваць не толькі зыходныя даныя для тэстаў, але і загадзя знаходзіць вынікі, якія павінны атрымацца, бо можна лёгка прыняць памылковыя вынікі за правільныя.
2. Вельмі важна, каб праграма асэнсоўвала некарэктныя даныя, таму сярод тэставых даных падрыхтоўваюць і некарэктныя зыходныя даныя.
3. Пачынаць састаўленне тэстаў трэба да састаўлення праграмы. Калі выяўлены выпадкі, якія належыць праверыць, тады і праграму прасцей пісаць, а ўлік магчымых памылак у зыходных даных зробіць праграму больш устойлівай да зыходных даных.
4. Састаўленне тэстаў працягваецца паралельна з распрацоўкай праграмы. Як толькі ў праграме пішацца ўмоўная інструкцыя, тэставыя даныя папаўняюцца, каб забяспечыць праверку работы гэтай інструкцыі і для праўдзівай, і для лжывай умовы. Пры напісанні інструкцыі цыкла трэба забяспечыць праверку работы праграмы ў выпадках, калі цыкл не выконваецца ні разу, адзін ці некалькі разоў.
5. У тэстах трэба правяраць крайнія выпадкі. Сярод тэставых даных абавязкова павінны быць значэнні, гранічныя паміж дапушчальнымі і недапушчальнымі, а таксама значэнні, якія па ўмове задачы неабходна апрацоўваць асаблівым чынам.
6. Трэба дасканала і старанна аналізаваць вынікі выканання тэстаў, інакш тэсціраванне губляе сэнс.
7. Набор тэстаў трэба захоўваць, каб пры неабходнасці паўтарыць тэсціраванне (напрыклад, пры выпраўленні праграмы).
Прыклад тэста для задачы рашэння квадратнага ўраўнення (прыклад адлюстроўвае таксама схему распрацоўкі праграмы).
а |
b |
с |
Карані |
|
0 |
0 |
0 |
Любы лік |
Гэта некарэктныя зыходныя даныя, бо ўраўненне не квадратнае |
0 |
0 |
5 |
Каранёў няма |
|
0 |
2 |
–4 |
2 |
|
1 |
–2 |
2 |
Карані камплексныя (D < 0) |
|
1 |
–2 |
1 |
1 1 – карані супалі |
|
1 |
–2 |
0 |
0 2 |
|
6 |
–13 |
6 |
2 / 3 3 / 2 |
|
1 |
2 · 2,5 |
2,52 |
D = 0 |
|
1 |
2 · 2,6 |
2,62 |
D = 0 |
|
1 |
2 · 2,7 |
2,72 |
D = 0 |
Разгледзім другі прыклад. Саставіць праграму, якая ўводзіць тры цэлыя лікі. Калі гэтыя лікі задаюць даўжыню старон трохвугольніка, вызначыць яго від (правільны, раўнабедраны ці рознастаронні).
Пачнём з састаўлення тэста да гэтай праграмы. Спачатку праверым даўжыні старон, з якіх трохвугольнік саставіць нельга.
a |
b |
c |
Трохвугольнік |
Суадносіны старон |
0 |
0 |
0 |
Не існуе |
a = b = c = 0 |
2 |
2 |
4 |
(Адрэзак) не існуе |
a + b = c |
1 |
3 |
–1 |
Не існуе |
c < 0 |
1 |
1 |
5 |
Не існуе |
a + b < c |
5 |
3 |
3 |
Раўнабедраны |
b = c a |
4 |
6 |
4 |
Раўнабедраны |
a = c b |
5 |
5 |
7 |
Раўнабедраны |
a = b c |
4 |
4 |
4 |
Правільны |
a = b = c |
9 |
8 |
7 |
Рознастаронні |
a b, a с, b c |
Па гэтым тэсце ўжо можна напісаць фрагмент праграмы:
IF (a >= b + c) OR (b >= a + c) OR (c >= a + b)
THEN Write ('не існуе')
ELSE IF (a = b) AND (b = c) THEN Write ('правільны')
ELSE IF (a = b) OR (b = c) OR (a = c)
THEN Write ('раўнабедраны')
ELSE Write ('рознастаронні')