Програма складена і відладжена в середовищі Turbo Pascal 7.0. Опишемо призначення кожного оператора програми.
На початку програми згідно з вимогами технології програмування щодо документування програм розміщено вступний коментар до програми, а решта операторів програми мають таке призначення:
001 | заголовок програми |
002 | підключення зовнішнього модуля управління дисплеєм (Crt) |
003-008 | опис структури запису вхідного файлу |
009 | опис типованої змінної для дискових файлів |
010 | опис дискового файлу zarplata |
011-015 | опис робочих змінних програми |
016 | заголовок процедури VVID |
017-019 | початок процедури, опис мітки та очистка екрану |
020 | відкриття дискового файлу ZARPLATA в режимі запису та дозапису |
021-022 | присвоєння змінним і та s початкових значень |
023-029 | вивід екранної форми для вводу даних з первинних документів та запрошення для продовження роботи або виходу з процедури вводу |
030 | заголовок оператора приєднання |
031 | присвоєння системній змінній CheckEof істинного значення (для організації виходу з процедури при натисканні комбінації клавіш Ctrl+Z |
032 | Заголовок циклу вводу |
033-036 | ввід значень змінних data (дата), sh_firma (код с/г підприємства), kod_utr (код утримань), suma (сума утримань) |
037 | запис уведених даних у дисковий файл ZARPLATA |
038 | збільшення номера стрічки (s) на одиницю |
039-044 | організація вводу по сторінках: при досягненні 23 стрічки здійснюється очистка екрану (вікна вводу) |
045 | кінець циклу вводу даних |
046 | кінець дії оператора приєднання |
047 | закриття оперативного файлу ZARPLATA (мітка zakr) |
048 | кінець тіла процедури вводу вхідних даних |
049 | заголовок процедури VYVID |
051 | початок процедури |
052 | відкриття дискового файлу ZARPLATA для читання записів |
053-060 | вивід екранної форми для відображення вхідних даних |
061 | присвоєння змінній s (номер стрічки екранної форми) початкового значення 7 |
063 | початок циклу вводу записів файлу ZARPLATA (поки не eof) |
064 | зчитування запису файлу ZARPLATA у змінну w1 |
065-068 | форматований вивід полів прочитаного запису на екран |
069 | збільшення змінної позиціонування курсору на одиницю |
070 | кінець циклу вводу |
071 | кінець дії оператора приєднання |
073 | закриття дискового файлу |
074 | пауза в роботі процедури |
075 | кінець процедури VYVID |
076 | заголовок процедури SORT |
077-080 | опис локальних змінних процедури |
081 | початок процедури |
082 | відкриття файлу F1 для читання |
083 | присвоєння змінній n значення‚ рівного кількості записів у вхідному файлі F1 |
084 | зчитування записів вхідного файлу в масив змінних а |
085 | закриття вхідного файлу F1 |
086-093 | впорядкування елементів масиву а методом простого обміну |
094 | відкриття файлу F2 для запису |
095 | запис елементів масиву а в файл F2 |
096 | закриття вхідного файлу F2 |
097 | кінець процедури сортування |
101 | заголовок процедуриzvedennya |
103 | початок процедури |
104 | відкриття дискового файлу zarplataдля читання |
105-112 | вивід заголовку та шапки вихідного зведення |
113 | читання запису файлу ZARPLATAв змінну w1 |
114 | заголовок оператора приєднання |
115 | заголовок циклу по кінцю файлу ZARPLATA (доки не eof) |
116 | запам’ятовування коду с/г підприємства поочного запису (sh_firma) в змінній c |
117 | присвоєння початкових значень змінній s1, яка призначена для підрахунку підсумків по коду с/г підприємства |
118 | заголовок циклу по коду с/г підприємства (до тих пір c = sh_firma) |
119 | присвоєння початкових значень змінній s2, яка призначена для підрахунку підсумків по коду утримання |
120 | запам’ятовування коду утримання поточного запису (kod_utr) в змінній kod |
121 | заголовок циклу по коду утримання (до тих пір поки kod = kod_utr |
122 | накописення підсумків по коду утримань |
123 | читання наступного запису дискового файлу ZARPLATAв змінну work |
124 | умовний оператор, котрий перевіряє, чи досягнуто кінець файлу ZARPLATA і в разі виконання цієї умови передає керування на мітку vtn (оператор 126) |
125 | кінець циклу по коду утримання |
126 | вивід підсумків по коду утримання |
127 | підрахунок підсумків по коду с/г підприємства |
128 | кінець циклу по підприємству (по кінцю файлу) |
129-134 | вивід підсумків по підприємству |
133 | закриття файлу ZARPLATA |
134 | організація паузи у виконанні програми |
135 | кінець процедури VYVID |
137 | початок головного блоку програми |
138 | присвоєння дисковому файлу з логічним іменем ZARPLATA фізичного імені zarplata.dat |
139 | заголовок циклу виводу меню програми |
140 | початок циклу |
141-144 | Встановлення основного та фонового кольорів, опис вікна виводу головного меню програми |
145-155 | вивід головного меню програми |
156 | очікування натискання клавіші на клавіатурі та присвоєння коду натиснутої клавіші змінній choise |
159 | заголовок оператора вибору, котрий аналізує код натиснутої клавіші |
160 | виклик процедури VVID, якщо натиснуто клавішу F2 (код клавіші 6016) |
161 | виклик процедури VYVID, якщо натиснуто клавішу F3 (код клавіші 6116) |
162 | виклик процедури SORT, якщо натиснуто клавішу F4 (код клавіші 6216) |
163 | виклик процедури ZVEDENNYA, якщо натиснуто клавішу F7 (код клавіші 6516) |
164 | оператор виходу, завершення роботи програми при натисканні клавіші Esc (код 2716) |
165 | кінець оператора вибору |
166 | кінець циклу виводу меню |
167 | кінець програми |
Блок-схема програми представлена в додатку 2, текст програми представлена в додатку 4.
Випробування будь-якої системи є найбільш відповідальним і пов’язаний з найбільшими труднощами і найбільшими втратами часу. Відпадка й тестування - найважливіші життєвого циклу програм. Не можна робити висновок про правильність програми лише на тій підставі, що програма повністю відкомпільована і при виконанні видає числові результати. Все, чого досягнуто в даному випадку - це отримання деякої вихідної інформації, необов’язково правильної. У програмі все ще можуть міститись логічні помилки. Тому необхідно здійснювати "ручну" перевірку машинних результатів.
Існує кілька способів перевірки правильності машинних результатів:
1) обчислення результатів вручну;
2) отримання результатів з довідкової літератури, документації або сукупності таблиць;
3) отримання результату з допомогою іншої програми.
Для перевірки правильності створеної програми розроблено тестові дані, представлені таблиці 3.
Таблиця 3.Тестові дані для перевірки правильності програми.
Дата | С/г підприємство | Вид утримань | Сума утримань |
15.11 | 01 | 81 | 1520.00 |
15.11 | 01 | 81 | 478.00 |
15.11 | 01 | 82 | 1457.00 |
18.11 | 01 | 82 | 204.00 |
18.11 | 01 | 90 | 252.00 |
17.11 | 01 | 93 | 300.00 |
16.11 | 02 | 81 | 1864.00 |
16.11 | 02 | 81 | 234.00 |
17.11 | 02 | 83 | 450.00 |
19.11 | 02 | 89 | 258.00 |
17.11 | 02 | 89 | 1230.00 |
17.11 | 02 | 90 | 560.00 |
Дані, представлені в таблиці 3 співпадають з результатами роботи програми, представленими на екранній копіях (додаток 1), що свідчить про те, що процедури запису даних на диск та виводу даних на дисплей працюють вірно.
Контрольний приклад для вихідної відомості розроблено з допомогою табличного процесора Excel і представлено в таблиці 4.
Таблиця 4.Контрольний приклад для співставлення з данимимашинного експерименту
Дата | С/г підприємство | Вид утримань | Сума утримань |
15.11 | 01 | 81 | 1998.00 |
15.11 | 01 | 82 | 1661.00 |
15.11 | 01 | 90 | 252.00 |
18.11 | 01 | 93 | 300.00 |
Всього по підприємству | 4211.00 | ||
18.11 | 02 | 81 | 2098.00 |
17.11 | 02 | 83 | 450.00 |
16.11 | 02 | 89 | 1488.00 |
16.11 | 02 | 90 | 560.00 |
Всього по підприємству | 4596.00 |
Порівняння результатів роботи програми (див. додаток 6) та даних таблиці 4 свідчить про їх повне співпадання. Таким чином, можна стверджувати, що програма дає правильні результати для розроблених тестових даних. Однак висновок про правильність програми можна зробити тільки після тривалої експлуатації.
Розв’язування економічних задач з використанням персональних комп’ютерів в умовах ринкової економіки набуває великого практичного значення, оскільки дає можливість отримати оперативну та достовірну інформацію. Використання з цією метою готових пакетів прикладних програм має певні вади, найважливішими серед яких є висока вартість фірмових пакетів та складність їх прив’язки для розв’язку конкретних, особливо нескладних задач. Тому надзвичайно важливо вміти самостійно складати прості програми для розв’язування задач економічного характеру.