Тема: Створення і відлагодження підпрограм заставки та меню
до програми у текстовому режимі
Теоретичні відомості щодо виконання лабораторної роботи
Програма, в загальному випадку, складається із заставки, головного блока програми, який функціонує за допомогою меню.
Заставка є візитною карткою програми. Вона може виводиться на екран одразу після старту програми і містить інформацію про назву програми, її призначенні, авторів, тощо.
Заставка в загальному випадку оформлюється як окрема підпрограма, яка виконується першою у розділі операторів головного блока програми, але можливі й інші варіанти. Наприклад, оператори, які формують заставку, можуть знаходитися в розділі операторів головного блоку програми й складати єдину композицію з головним меню.
Звичайно застосовуються три сценарії роботи із заставкою (хоча й не виключені десятки інших варіантів, породжених фантазією програмістів).
Сценарій 1:
- очистка екрана;
- вивід заставки на екран;
- утримання заставки на екрані протягом фіксованого чи нефіксованого часу;
- вивід головного меню;
- робота з пунктами меню.
Сценарій 2:
- одночасний вивід заставки й головного меню;
- робота з пунктами меню.
Сценарій 3:
- очистка екрана;
- вивід меню;
- вивід заставки поверх меню;
- утримання заставки на екрані протягом фіксованого чи нефіксованого часу;
- зникнення заставки й відновлення екрану;
- робота з меню.
Кожний із сценаріїв має свої деякі переваги й недоліки, але слід зауважити, що останнім часом найчастіше використовуються перший і третій сценарії із застосуванням найрізноманітніших засобів: від "авторського" малювання засобами псевдографіки і графіки до використання фрагментів, підготовлених із допомогою спеціалізованих пакетів. У більшості випадків зв’язка створених цими пакетами файлів з програмою на мові Pascal відбувається за допомогою Assembler, або використанням нетипізованих файлів.
Меню - це перелік можливостей системи (програми), з якого користувач вибирає певну за необхідністю. Меню повинно бути зрозумілим і простим у роботі. Більш менш складна система звичайно має декілька меню. Серед них виділяється головне. Кожний пункт головного меню може мати нове (вкладене) меню. В свою чергу, кожне вкладене меню може також активізувати підлегле йому меню і так далі. Рівень вкладеності меню обмежується тільки логічною структурою задачі, що вирішується. В зв’язку з цим, при розробці програми необхідно задачу розбити на окремі логічні блоки, для кожного з них виділити одну або декілька підпрограм, які будуть виконуватися окремими командами меню.
Організація меню може мати декілька варіантів, наприклад: простий запит з виводом пунктів меню, горизонтальне та вертикальне меню з підсвічуванням певного пункту, тощо.
Простий запит являє собою найпростіший варіант меню: на екран дисплея виводиться список режимів роботи, кожний з яких оформлений за шаблоном: номер - назва режиму, наприклад,
Г О Л О В Н Е М Е Н Ю
1 - Введення даних
2 - Перегляд та корегування
3 - Діаграма
4 - Вихід
|
Користувачеві у цьому випадку достатньо ввести номер режиму. Організація та функціонування такого типу меню може складатися з наступних кроків: вибору місця розташування переліку пунктів меню на екрані (процедури GotoXY і Write); запиту на ввід необхідного режиму; оператор Case розпізнає вибраний режим (відповідну змінну) і передає керування відповідній підпрограмі. Після закінчення її роботи на екран можна вивести те саме меню, що забезпечується нескінченним циклом, наприклад While.
Можна застосувати інший спосіб - в назві режиму (без номера) виділити розміром або кольором будь-яку букву. При виборі певного режиму необхідно ввести відповідну букву, а далі - за описаною в попередньому абзаці схемою.
П р и к л а д
Program ExampleMenu;
{Реалізація меню (у глобальному блоку програми): простий запит.}
Uses Crt;
Const
k=4; {кількість пунктів}
NameRegime:Array[1..k] of String[30]=
('1 - Введення даних',
'2 - Перегляд та корегування',
'3 - Діаграма',
'4 - Вихід');
Var i,Num:Byte;
Procedure Zastavka;Begin {тіло процедури заставки} End;
Procedure Input; Begin {тіло процедури} End;
Procedure ViewEdit;Begin {тіло процедури} End;
Procedure Diagram; Begin {тіло процедури} End;
Begin
Zastavka;
While True do
Begin
ClrScr;
GotoXY(24,4); {курсор у початок заголовку}
Write('ГОЛОВНЕ МЕНЮ');
For i:=1 to 4 do
Begin
GotoXY(22,6+i);Write(NameRegime[i]);
End;
Write(#10#13,'Введіть номер режиму і натисніть <Enter>');
ReadLn(Num);
Case Num of
1:Input;
2:ViewEdit;
3:Diagram;
4:Begin ClrScr;Halt End;
Else {якщо режим вибрано неправильно}
Begin
GotoXY(20,17); Write('Такого режиму немає! ');
Delay(2000);
End;
End;{Case}
End;{While}
End.
Вертикальне меню з підсвічуванням певного пункту представляють найбільш розповсюджений спосіб організації меню. За допомогою клавіш керування курсором здійснюється вибір потрібного режиму, а його активізація - клавішею <Enter>. В програмі (підпрограмі) визначається номер вибраного режиму, виконується відповідна підпрограма, після роботи якої можна вибрати наступний режим. Для виходу з меню використовується спеціальна клавіша, найчастіше - <ESC>.
П р и к л а д.
Program ExampleVertMenu;
{Реалізація вертикального меню, яке розміщено у процедурі}
Uses Crt;
Const k=4; {кількість пунктів}
NameRegime:Array[1..k] of String[30]=
(' Введення даних ',
' Перегляд та корегування ',
' Діаграма ',
' Вихід ');
Var Num:Byte;
Procedure Zastavka;Begin {тіло процедури заставки} End;
Procedure Input;
Begin
GotoXY(15,15);
Write('Робота процедури Input',#10#13,'Продовження <Enter>');
ReadLn;
End;
Procedure ViewEdit;
Begin
GotoXY(15,15);
Write('Робота процедури ViewEdit',#10#13,'Продовження <Enter>');
ReadLn;
End;
Procedure Diagram;
Begin
GotoXY(15,15);
Write('Робота процедури Diagram',#10#13,'Продовження <Enter>');
ReadLn
End;
Procedure VertMenu(x,y:Byte;Var n:Byte);
Var
i:Byte;
Code:Char;
Begin
n:=1;Code:=' ';
While Code<>#13 do {#13 - <Enter>}
Begin
For i:=1 to 4 do
Begin
If i=n Then Begin
TextBackGround(White);TextColor(Black);
End