Мови
програмування h2>
Передмова. h2>
Як відомо, в даний час найбільш
поширеними алгоритмічними мовами є Паскаль і Сі. Саме ці
мови використовуються практично на всіх діючих обчислювальних системах-от
супер-ЕОМ до персональних комп'ютерів. Що стосується ПЕОМ, то лідером сімейства
мов Паскаль для них, без сумніву, є Турбо Паскаль 7.0, розроблений
фірмою Borland. Ця остання
версія дозволила об'єднати в рамках єдиної системи потужний алгоритмічний
потенціал мови, методи об'єктно-орієнтованого програмування, сучасну
графіком, зручні засоби тестування й налагодження програм, а також забезпечити
дружній інтерфейс з користувачами. [1]
Тому я вибрав цю мову програмування як основу для створення тестового
редактора. p>
Я вирішив створити тестовий редактор, тому
що саме тести останнім часом завойовують все більшу популярність. Вони
дозволяють швидко і досить точно перевірити рівень знань з того чи іншого
предмету, дізнатися ту чи іншу інформацію про тестується. Звичайно, тест без
зусиль можна скласти вручну, але буде потрібно багато часу, щоб його
розмножити. Крім того, можна в будь-який момент протестуватися і миттєво
дізнатися результати. p>
Розробляючи програму крок за кроком, я
виділив основні функції, які присутні в будь-якому редакторі і, звичайно, в моєму,
а саме: p>
створення нового
файлу тесту p>
відкриття тесту
і тестування p>
редагування
тесту p>
перегляд
результатів p>
друк файлу p>
вихід з
програми. p>
У процесі створення редактора я виділив
основні етапи моєї роботи, що виникають у зв'язку з цим задачі та їх вирішення.
Сподіваюся, прочитавши мою роботу, ви врахуєте мій досвід і продовжите розпочаті
дослідження в галузі редакторів. Програма може бути використана навчальними
закладами як посібник для створення тестів. p>
Почнемо дослідження зі статті про
конструюванні програм. p>
Конструювання
програм. p>
Конструювання програм - одна з
найважливіших розділів сучасної інформатики. Бурхливий розвиток
програмно-апаратних засобів, поява нових стилів і технологій
програмування, як не парадоксально, не знижують, а підвищують рівень
вимог до масової алгоритмічної культури. Практично всі діалогові
системи є програмованими. Методика конструювання програм легко
переноситься на інші процедурні мови програмування, у тому числі і
об'єктно-орієнтовані. [2]
p>
Відповідно до технології
конструювання програм побудована програма тестового редактора. Я розділив її
на етапи: p>
Створення
структурної програми, багато в чому незручною у використанні через відсутність
діалогу, упорядкованого введення та виведення інформації і багато чого іншого. Вихідна
програма мала лише основні функції. Вона була «ядром», яка здійснювала всі процеси і функції редактора. У
наступному розділі в точності наведено текст структурної програми. p>
Розбиття
суцільного тексту програми на процедури. Таким чином, текст став займати не
так багато місця, зник оператор варіанту, багато мітки, посилання і т. п. Треба
сказати, багато програмісти віддають перевагу вводити процедури в програму. Це
значно спрощує її. p>
Введення
віконної системи за допомогою доступних можливостей мови (оператор Window). Це дозволило значно спростити
роботу, створити діалог користувача з програмою, зменшити кількість
інформації, що надходить до користувача і кількість її «потоків». p>
Введення
об'єкта-панелі управління. Ви можете бачити її внизу екрану. Вона взяла на себе
управління функціями редактора. Причому введення об'єкта значно спростило
програму. Методи роботи з об'єктами ви можете прочитати у розділі «Об'єктне
програмування ». p>
Структурний
програмування. h2>
Структурне програмування-це
програмування, технологія якого припускає використання суперпозиції
трьох базових алгоритмічних структур: лінійної, розгалуженої та циклічної.
Але для створення складних програм використовуються більш складні принципи. Принцип
Суперпозиції-поєднання структур з взаємним вкладенням (складанням).
Передбачає взаємне включення структур.
p>
Турбо Паскаль сприяє впровадженню
сучасної технології програмування, заснованої на принципах структурного
програмування та покроковому методі проектування програм. Основні оператори
мови є хорошою ілюстрацією базових керуючих конструкцій
структурного програмування. Їх використання дозволяє записувати складні
алгоритми обробки даних в компактній формі. [3]
p>
Хоча Бейсік не є повністю
структурним мовою, в ньому відображені основні концепції структурного
програмування. розглянемо їх докладніше. p>
Бейсік-мова
програмування ПЕОМ. p>
Бейсік - інтерактивна мова високого рівня,
орієнтований на користувачів ПЕОМ, непрофесіоналів в області
обчислювальної техніки. Бейсік - переважно інтерпретує програма,
що дозволяє виробляти порядково налагодження текстів програм. Даний спосіб
набагато зручніше для початківців програмістів, ніж компіляція (компілятор
виробляє налагодження тільки цілої програми, а не по частинах), і широко
використовується в Паскалі. Відмінною рисою структурних мов є
короткі однозначні оператори (на відміну від довжелезних команд об'єктного
програмування )*. p>
У деяких версіях Бейсіка є
вбудований редактор програм, що дозволяє працювати з текстом програми з
командного вікна. Робота з програмою здійснюється в трьох різних режимах: p>
Безпосереднє
спілкування p>
Введення програм p>
Обчислення по
введеної в ОЗУ програмі p>
В основному, Паскаль виконує ті ж функції
що і Бейсік. Однак Паскаль має більший потенціал в областях
програмімірованія, роботи з «комп'ютерним залізом», створення власних
модулів і систем. p>
Структурна
програма. h2>
Першим етапом розробки програми стало
написання тексту структурної програми. Структурна програма -
послідовність простих команд, операторів, що реалізує ядро, тобто
дія програми. Уже на цьому етапі програма працює з текстовими файлами.
Для здійснення зв'язків між окремими частинами програми, що реалізують
функції редактора, я використовував оператор безумовного переходу GoTo. p>
Нижче наведена схема структурної програми
тестового редактора, що пояснює відповідний підхід до програмування.
Основний список операторів вирізано і замінено на.
Кінцевий вигляд програми буде приведений у розділі "Об'єктне програмування"
об'єктів. p>
Program redactor; p>
uses crt, printer; (підключення модулів) p>
label l1, l2, l3, l4; (мітки) p>
Var
a, f, f1, a2: string; (розділ описів) p>
b, k: char; p>
c, u, y, a1, b1: text; p>
d, e, i, j, p, z: integer; p>
c1: boolean; p>
Procedure oform; (процедура оформлення початку програми) p>
Begin p>
p>
End; p>
Begin p>
oform;
(оформлення початку програми) p>
p>
Writeln ( 'Новий
файл (New), Відкрити файл (Open), Редагування (Redact ),'); (висновок p>
альтернативних
функцій) p>
Writeln ( 'Перегляд
результатів (Search), Вихід (Any key )'); p>
b: = readkey; (вибір потрібної функції) p>
case b of (оператор варіанту) p>
При натисканні
відповідної клавіші відбувається вибір функції. p>
'n', 'в': Begin p>
l1: (виконання функції) p>
End; p>
'o', 'й': Begin p>
l2: (виконання функції) p>
End; p>
'r', 'Є': Begin p>
l3: (виконання функції) p>
End; p>
's', 'и': Begin p>
l4: (виконання функції) p>
End; p>
End; p>
p>
Writeln ( 'Новий файл (New),) Відкрити
файл (Open), Редагувати (Redact) ');
(запит про вибір перед p>
виходом) p>
Writeln ( 'Перегляд
результатів (Search), Вихід (Any key )'); p>
b: = readkey; (вибір варіанту) p>
p>
case b of
(оператор варіанту) p>
'n', 'т': GoTo l1; (посилання на мітку) p>
'o', 'щ': GoTo l2; p>
'r', 'до': GoTo l3; p>
's', 'и': GoTo l4; p>
End; p>
Набір
операторів безумовного переходу для повернення до тієї чи іншої функції. p>
p>
End. p>
На екран виводиться список можливих функцій
програми. Для вибору певної функції необхідно натиснути відповідну
клавішу (вказана в дужках великою літерою). Потім оператор варіанту запускає
потрібну функцію. Як видно, врахований випадок непереключенного алфавіту (букви вводяться
як латинські, так і російські). p>
Перед виходом знову виводиться даний запит
(так як цикл недоречний) і у випадку вибору певної функції відбувається
посилання на функцію. p>
Доробка
програми. h2>
Після налагодження початкової програми
треба було ввести додаткові функції. Крім стандартної функції
створення та відкриття готового тіста, з'явилися такі як редагування тестів,
підрахунок результатів і виставлення оцінки, таймер, складання звіту, захист
тестів від перегляду. Але найголовніше-це вдосконалення інтерфейсу,
введення віконної діалогової системи. p>
Розглянемо перераховані функції. Функція
підрахунку результату записана так: p>
z: = p * 100 div z; (розрахунок кількості правильних відповідей) p>
Writeln ( 'кількість правильних відповідей:
', p); p>
Write ( 'оцінка'); (виставлення оцінки) p>
If z> = 90 Then
Begin p>
Writeln ('5 ') p>
Writeln (b1, '5'); p>
End; p>
else If
z> = 70 Then Begin p>
Writeln ('4 ') p>
Writeln (b1, '4'); p>
End; p>
else If
z> = 40 Then Begin p>
Writeln ('3 ') p>
Writeln (b1, '3'); p>
End; p>
else Begin p>
Writeln ('2 ') p>
Writeln (b1, '2'); p>
End; p>
Readln; p>
Write ( 'Прізвище:'); (вписування
прізвища) p>
Readln (a); p>
d: = length (a); (виставлення прогалин) p>
Write (b1, a); (запис у файл) p>
For i: = 1 to 14-d
do Write (b1, ''); p>
Write ( 'Ім'я:'); (вписування імені, процедура
повторюється) p>
Readln (a); p>
Write (b1, a); p>
d: = length (a); p>
For
i: = 1 to 11-d do Write (b1, ''); p>
Write ( 'Отчесчтво:'); (вписування
по батькові, процедура повторюється) p>
Readln (a); p>
Write (b1, a); p>
d: = length (a); p>
For
i: = 1 to 17-d do Write (b1, ''); p>
Write (b1, f); p>
d: = length (f); p>
For
i: = 1 to 8 do Write (b1, ''); p>
GetDate (g1, g2, g3, g4); (проставлення дати) p>
Writeln (b1, g3 ,'.', g2 ,'.', g1); p>
close (b1); p>
Window (15,10,50,19); p>
TextBackGround (black); p>
clrscr; p>
Програма розраховує кількість
правильних відповідей за формулою, відповідно до цього виставляє оцінку,
запитує ваші ПІБ, записує їх у файл, проставляє назва тесту і дату
його проходження. При цьому використовується метод роботи з рядками:
конкатенація (злиття) строк. Проблемою стало коректне вписування в файл
рядки, тому що кількість букв може бути різним, тому програма
проставляє прогалини в файл між даними, використовуючи дані про довжину рядків
прізвища, імені, по батькові і віднімаючи їх з постійного числа p>
Таймер,
системний час. p>
Таймер був розроблений для відліку часу
на тест, час вводиться попередньо укладачем тесту. Крім того,
паралельно з висновком часу на тест виводиться поточний системний час.
Дія таймера засноване на змінній-лічильнику, яка через певні
проміжки часу зменшує своє значення на 1 (секунду). Системний час
виводиться завдяки процедурі GetTime. p>
Repeat (цикл лічильника часу) p>
Window (60,20,70,21); (вікно виводу
часу) p>
TextBackGround (black); p>
clrscr; p>
z2: = z2-1; (зворотний відлік секунд) p>
If z22 Then Begin (перевірка наявності у файлі пароля) p>
Write ( 'введіть пароль'); p>
Readln (f); (введення пароля) p>
If af Then Begin p>
Write ( 'пароль невірний'); p>
GoTo l1; (вихід з
процедури) p>
End; p>
End p>
else
Begin p>
close (u); p>
Reset (u); p>
End; p>
Readln (c, f); p>
Writeln ( 'тест за темою "', f ,'"');
(висновок теми тесту) p>
z2: = 60; p>
repeat p>
Window (60,20,70,21); (закриття вікна
пароля) p>
TextBackGround (black); p>
clrscr; p>
TextColor (yellow); p>
z2: = z2-1; (включення таймера) p>
If
z2