ковим чином. Відхилення становить + - 1-цу від швидкості, рекомендованої на початку шляху. Робота програми відбувається в режимі реального часу.
Через заданий проміжок часу програми виводить інформацію про час з моменту старту, пройденому шляху, середньої швидкості на попередньому відрізку, середньої швидкості до даного моменту, часу досягнення «Фінішу». Програма також рекомендує швидкість, яку необхідно розвивати, щоб встигнути до «фінішу» до терміну. Після закінчення часу на екран виводиться повідомлення про те, чи встиг автомобіль досягти «Фінішу» в бажаний час.
Програма реалізована в середовищі Turbo Pascal 7.1.
Розглянемо інтерфейс користувача програми. Після запуску програми на екрані з'являється головне меню (рис. 1). Тут користувач програми за допомогою курсору може вибрати необхідний йому пункт. При цьому обраний пункт меню підсвічується. Після натискання клавіші Enter буде запущена відповідна підпрограма, яка відповідає за виконання даної дії. На рис. 2 представлено вікно програми в режимі введення вихідних даних. Після натискання будь-якої клавіші на екрані знову з'являється меню користувача.
Рис.1. Меню користувача програми
Рис.2. Введення вихідних даних
Після вибору пункту меню «Робота програми» видається звуковий сигнал і запускається таймер. На екран виводиться час старту - поточний системний час, приємним умовні позначення, а також швидкість, рекомендована на початку шляху. З заданим інтервалом часу на екран виводяться розрахункові параметри.
Рис.3. Вікно програми в режимі емуляції роботи
бортового комп'ютера
Після закінчення часу, необхідного, щоб досягти фінішу, на екран виводиться, повідомлення, чи встигла машина його досягти. Оскільки швидкість машини в заданому діапазоні змінюється випадковим чином, при кожному запуску ми побачимо різний результат.
Після натискання будь-якої клавіші на екрані знову з'являється головне меню. При виборі пункту меню «Довідка» (рис. 4) запускається відповідна процедури, за допомогою якої на екран виводиться вміст файлу HLP.TXT. Цей файл повинен бути розташований в тому ж каталозі, що і виконуваний файл програми. При цьому, при бажанні, вміст цього файлу може бути легко змінене в текстовому редакторі без зміни початкового коду програми.
Пункт меню «Exit» дозволяє завершити роботу програми.
Як ми бачимо, використання меню користувача, що дозволяє за допомогою курсору легко вибрати потрібну дію, значно полегшує роботу користувача з програмою.
Рис.4. Вікно довідки про роботу програми
Розглянемо програмну реалізацію розробленої нами програми. Структура та призначення основних блоків відповідає матеріалу, який був досліджений в теоретичній частині курсової роботи.
Спочатку ми підключаємо необхідні модулі, визначаємо мітки, константи, масиви та інші глобальні змінні программи.Crt, dos; {Підключаємо модулі, їх призначення описане в теоретичній частині курсової роботи} {визначаємо константи, необхідні для реалізації користувацького меню}=$ 17; {Колір невиділеного пункту}=$ 70; {Колір виділеного пункту} N=4; menu: array [1..N] of string [50]; {назви пунктів меню} punkt: integer; {Номер виділеного пункту}: char; {Введений символ}, j, x, y, col: integer; {Координати першого рядка меню}, tf, ss: integer; {описуємо глобальні змінні, тут tin - інтервал виведення повідомлень на екран, tf - бажаний час фінішу, ss - відстань до фінішу ,, f1, f2: boolean; {логічні змінні, необхідні для контролю правильності введення даних користувачем}
У наступному блоці здійснюється визначення процедур і функцій користувача.
У розробленій нами програмі були використані наступні підпрограми.
Procedure MenuToScr; {висновок меню на екран}; {Очищення екрана};
writeln ( ГОЛОВНЕ МЕНЮ ) ;;; i:=1 to N do {перебираємо всі пункти меню в циклі}
begin (x, y + i - 1); {переклад курсору в потрібну позицію} (menu [i]); {висновок пункту меню, що міститься в масиві констант};:=SEL; {зміна атрибутів тексту - виділений} (x, y + punkt - 1); (menu [punkt]); {виділимо рядок меню}:=NORM; {зміна атрибутів тексту - невиділений};
Наступна описувана нами процедура відповідає за введення даних пользователем.punkt1; {процедура введення даних - відповідає першому пункту меню};:=false; f1:=false; f2:=false; {ознака того, що дані ще не введені} (13); {змінюємо колір тексту}; ( ВВЕДІТЬ ПОЧАТКОВІ ДАНІ ) ;; (14) ;; {заголовок циклу введення значень} f=false {якщо перший параметр ще не введений}