Вихідними даними є текстовий файл розміром не більше 500 рядків, а також мінімальна й максимальна ціни телефону, що вводяться користувачем із клавіатури. Оскільки в процесі роботи програми, можливо, прийдеться виводити базу і її частину неодноразово, бажано зберігати весь файл в оперативній пам'яті. А так як його максимальний розмір відомий і не занадто великий, для розміщення інформації з файлу можна завести масив записів, кожна з яких містить відомості про одну модель телефону.
Результатом роботи програми є та ж база, виведена у вікно на екран, а також вибірка з бази, тобто ті рядки, які задовольняють уведеним користувачем критеріям. Вибірку можна одержувати безпосередньо при виводы на екран або формувати заздалегідь в окремій структурі даних. Другий варіант бажаніший, тому що він дозволяє розділити процеси вибірки й виводу на екран, а отже, спростити структуру програми.
Проміжні величини. Наша програма, крім "обчислювальної" складової, містить інтерфейсну частину, тобто меню. Пункти меню будемо зберігати в статичному масиві. Для того щоб можна було використовувати меню в інших програмах, необхідно його максимально параметрезувати. Тому кількість пунктів, довжину пункту й позиції початку кожного пункту на екрані задамо у вигляді іменованих констант. Очевидно, що для нашого завдання досить створити меню із трьох пунктів. Назвемо їхній Вивод бази, Вибір, Вихід.
|
|
Після визначення загальної структури програми потрібно визначити інтерфейси складових її підпрограм. При описі інтерфейсу треба, щоб всі необхідні дані передавалися програмі через параметри, а всі величини, використовувані тільки усередині її, визначалися як локальні. Спочатку визначимо необхідні константи й типи даних.
Const n_items = 3; {кількість пунктів меню}
l_dbase = 500; {максимальний розмір бази телефонів}
l_model = 20; {максимальна довжина найменування моделі телефонів}
type Tel = record {тип одного запису в базі телефонів}
model: string[l_model];
weight, price: real;
end;
Tbase = array[1..l_dbase] of Tel; {тип бази телефонів}
Опис процедур і функцій
Читання бази з файлу:
Procelure ReadFile (var base: Tbase; var n: word);
Підпрограма повинна повертати в визиваючу програму те, що вона прочитала: базу і її фактичну довжину (кількість записів).
Ініціалізація меню:
Procelure InitMenu (ActivColor, InactivColor: word);
Параметрами є кольори активного й неактивного пунктів.
Вивод бази на екран:
Procelure ShowBase (const base: Tbase; n: word);
Вивод інформації про моделі, що попадають у заданий діапазон цін:
Procelure ShowSelected (const base: Tbase; n: word);
У ці дві процедури передаються база і її фактична довжина.
Вивод пункту меню:
Procelure DrawItem (item, color: word);
Передаються параметри пункту меню й колір, яким його варто вивести.
|
|
Уведення критеріїв відбору:
Procelure Query (var StartPice, EndPrise: real);
Із процедури передаються уведені користувачем критерії
Формування вибірки:
Procelure Select (StartPice, EndPrise: real; const base: Tbase; n: word;
Var selectedbase: Tbase; var m: vord);
У процедуру передаються критерії відбору, база й кількість записів у ній. Вихідними параметрами є масив обраних записів і його довжина.
Висновки
У процесі виконання завдання по практиці були освоєні навички роботи зі структурою даних "запис" у мові програмування Pascal. Навчився правильно описувати тип record, ыныцыалызувати змінні типу record, виводити на екран змінні типу record; вирішувати завдання на використання записів. Вивчив роботу з текстовими файлами. Одержав навички роботи з такими процедурами уведення - висновку для файлів як Assign - присвоєння ім'я зовнішнього файлу файлової змінної, Close - закриття відкритого файлу, Read - зчитує одне або більше значень із файлу в одну лив, Rewrite- створює й відкриває новий файл.
У процесі створення програми була застосована технологія спадного програмування. Після розбивки програми на послідовність кроків легко виділити частини, які будуть оформлятися у вигляді підпрограм.