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