Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програмування.doc
Скачиваний:
14
Добавлен:
04.05.2019
Размер:
374.27 Кб
Скачать

Лабораторна робота 5

Тема: Створення і відлагодження підпрограм заставки та меню

до програми у текстовому режимі

Теоретичні відомості щодо виконання лабораторної роботи

Програма, в загальному випадку, складається із заставки, головного блока програми, який функціонує за допомогою меню.

Заставка є візитною карткою програми. Вона може виводиться на екран одразу після старту програми і містить інформацію про назву програми, її призначенні, авторів, тощо.

Заставка в загальному випадку оформлюється як окрема підпрограма, яка виконується першою у розділі операторів головного блока програми, але можливі й інші варіанти. Наприклад, оператори, які формують заставку, можуть знаходитися в розділі операторів головного блоку програми й складати єдину композицію з головним меню.

Звичайно застосовуються три сценарії роботи із заставкою (хоча й не виключені десятки інших варіантів, породжених фантазією програмістів).

Сценарій 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

Else Begin

TextBackGround(Black);TextColor(White);

End;

{вивід пунктів меню}

GotoXY(x, y+i);Write(NameRegime[i]);

End;

Code:=ReadKey;

Sound(700);Delay(50);NoSound;

If Code=#0 Then {ознака функціональної клавіші}

Begin

Code:=ReadKey;

Case Code of

{Up} #72:If n>1 Then Dec(n) Else n:=k;

{Down} #80:If n<k Then Inc(n) Else n:=1;

End;{Case}

End;

End;{While}

End;{VertMenu}

Begin

Zastavka;

While True do

Begin

ClrScr;

VertMenu(Num);

Case Num of

1:Input;

2:ViewEdit;

3:Diagram;

4:Begin

TextBackGround(Black);TextColor(LightGray);

ClrScr;Halt End;

End;{Case}

End;{While}

End.

Контрольні питання

  1. Типи меню. В чому їх особливості?

  2. Яким чином підтримується переміщення та зображення вибраного пункту меню?

  3. Навіщо використовують перечислюваний тип у задачі побудови меню?

Завдання та пояснення щодо виконання до лабораторної роботи

Розробити підпрограму заставки засобами модуля Crt для програми, яка відповідає варіанту завдання лабораторної роботи 2.

Тип меню можна обрати, вирішивши до якого типу з перелічених нижче типів (з точки зору меню), належить програма.

  1. Проста програма: реалізує один або кілька алгоритмів (наприклад, декілька обчислень). Меню у цьому випадку не потрібне, оскільки немає логічно відособлених елементів процесу вирішення.

  2. Лінійна програма: реалізує виконання ряду логічно завершених блоків, які необхідні для реалізації загальної мети. Основна особливість програм цього типу - відсутність підменю, оскільки керування здійснюється на рівнях режимів.

  3. Структурована програма: реалізує усілякі функціональні блоки різних рівнів вкладеності. Керування ведеться на рівні режимів і підрежимів. Основна особливість програм цього типу - необхідність організації доволі складного структурованого меню. Наприклад, меню інтегрованого середовища системи Turbo Pascal.