Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка(Паскаль)(А4).doc
Скачиваний:
7
Добавлен:
27.08.2019
Размер:
1.25 Mб
Скачать

Завдання

Скласти програму до задачі вашого варіанту.

  1. Задано масив записів з інформатики про успішність групи студентів з деякого предмету: прізвище, ім'я, по батькові, оцінка. Знайти середній бал групи з цього предмету. Вивести на друк прізвища студентів, які мають незадовільні оцінки.

  2. Відомості про автомобіль складаються із його марки, номера, кольору, прізвища власника. Підрахувати кількість автомобілів заданої марки.

  3. Відомості про автомобіль складаються із його марки, номера, кольору, прізвища власника. Підрахувати кількість автомобілів кожної марки.

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

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

  6. Заданий масив записів з інформацією про продукцію підприємства: назва виробу, код виробу, кількість, ціна. Сформувати новий масив, вибравши в нього записи з ціною, меншою заданої.

  7. Сформувати масив записів з інформацією про успішність студентів з 5-ти предметів. Знайти середній бал кожного студента.

  8. Сформувати масив записів з інформацією про успішність студентів з 5-ти предметів. Вивести на друк прізвища студентів із середнім балом більшим або рівним 4.

  9. У масиві записів приведена інформація про студентів відділення: прізвище, ім'я, по батькові, стать, вік, курс, група, оцінки з 5-ти предметів. Написати програму, яка виводить найбільш розповсюджені чоловічі та жіночі імена.

  10. У масиві записів приведена інформація про студентів відділення: прізвище, ім'я, по батькові, стать, вік, курс, група, оцінки з 5-ти предметів. Написати програму, яка виводить номери груп у порядку спадання середньої успішності студентів першого курсу.

  11. У масиві записів задана інформація про книги бібліотеки: автор, назва, рік видання, код тематики, ціна. Вивести на екран інформацію про книги, видані після 1991 року для заданого автора.

  12. У масиві записів задана інформація про книги бібліотеки: автор, назва, рік видання, код тематики, ціна. Вивести на екран інформацію про книги, видані після 1995 року для заданого коду тематики.

Лабораторна робота № 9 Файлові типи даних

Мета: навчитися користуватися засобами мови програ­мування для збереження даних у файлі

Теоретичний матеріал

У Паскалі існують три класи файлів:

  • текстові;

  • типизовані;

  • нетипизовані.

Текстовий файл можна розглядати як послідовність символів, розділену на рядки. Кожний рядок завершується маркером кінця рядка, що складається з двох символів: кінець рядка chr(13) та повернення каретки chr(10).

До типизованих файлів відносяться файли визначеного типу.

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

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

Файлова система у Паскалі найбільш повно використовує можливості передачі даних операційної системи . Кожному файлу в мові ставиться у відповідність файлова змінна визначеного типу, тому перед початком роботи з файлом необхідно встановити дану відповідність. Для цього використовується процедура:

Assign(f, Name:string);

де f – змінна будь-якого файлового типу, а рядковий вираз Name містить повне ім'я файлу, що задовольняє вимогам операційної системи. Узагальнений вид імені файлу виглядає так:

Диск:\Ім'я підкаталога\...\Ім'я файлу

Ідентифікатор <диск> задається літерою логічного пристрою від A до Z, і якщо він відсутній, то мається на увазі логічний пристрій, прийнятий за умовчанням. Якщо немає ідентифікатору <ім'я підкаталога>, то вважається, що файл знаходиться в поточному підкаталозі. Максимальна довжина повного імені файлу не повинна перевищувати 79 символів.

Для роботи з файлом його насамперед необхідно відкрити. Для цього передбачені дві процедури:

Reset(f) – відкриває існуючий файл;

Rewrite(f) – створює і відкриває новий файл.

Спроба відкрити файл за допомогою процедури Reset при його відсутності на диску може привести до помилки виконання програми.

Є деякі особливості у використанні процедури Reset при відкритті різних типів файлів. Наприклад, стосовно текстових файлів (тип text) дія процедури означає відкриття файлу тільки для читання.

Процедура Rewrite створює і відкриває новий файл. При спробі створити і відкрити новий файл з вже існуючим на диску ім’ям дія процедури Rewrite призведе до вилучення цього файлу і створення нового порожнього файлу з тим же ім'ям. На практиці це приводить до втрати інформації. В такий файл інформацію можна тільки записувати.

Операція закриття файлу є логічним закінченням роботи з будь-яким відкритим файлом. Для цього служить процедура

Close(f);

Використання процедури Close дозволяє усунути зв'язок файлової змінної з зовнішнім файлом, установлену за допомогою процедури Assign.

Крім перерахованих до засобів обслуговування наборів даних відносяться також процедури:

  • перейменування невідкритого файлу f будь-якого типу в ім'я NewName:

Rename(f:file;NewName:string);

  • вилучення невідкритого файлу будь-якого типу, що задається змінною f:

Erase(f:file).

Для того, щоб файлові операції виконувалися чітко і без помилок, необхідно використовувати спеціальну функцію Ioresult. Функція працює без параметрів і повертає значення цілого типу, що представляє статус останньої виконаної операції введення-виведення. Використання цієї функції в програмах можливо тільки у випадку, якщо на час виконання файлових операцій відключена стандартна перевірка операцій введення-виведення. З цією метою використовується спеціальна директива, що задається усередині тексту програми, {$I}. Після коректного виконання операції введення-виведення функція IOResult повертає порожнє слово, в інших випадках функціях повертає відповідний код помилки.

Для організації текстового файла необхідно насамперед оголосити відповідну файлову змінну текстового типу

Var

f:text;

Відкриття текстового файла здійснюється так:

  • ставиться у відповідність файловій змінній ім'я файлу (процедура Assign) і відкривається новий текстовий файл (процедура Rewrite),

  • ставиться у відповідність файловій змінній ім'я файлу (процедура Assign) і відкривається вже існуючий файл (процедура Reset).

Якщо треба дописати в існуючий текстовий файл інформацію, є також процедура відкриття файлу:

Append(Var f:text);

Вона відкриває вже існуючий файл і встановлює покажчик обробки на кінець файлу. Після такого відкриття текстовий файл можна доповнювати інформацією, починаючи з кінця рядка. Обмеження, що накладаються на процедуру Append такі ж, як у процедур Reset та Rewrite.

Для обробки текстових файлів використовуються процедури Read і Write, що забезпечують відповідно читання і запис однієї і більше величин у текстовий файл.

Виклик Read(f,ww),

де ww – змінна типу word, здійснює читання з файлу f послідовності цифр, що потім інтерпретується в число, значення котрого і буде привласнено змінній ww. У випадку, якщо замість послідовності цифр йде будь-яка інша послідовність символів, використання такого оператора приводить до помилки виконання програми.

Використання спеціальних роздільників рядків файлу дозволило ввести до складу мовних засобів процедури

  • Readln, що забезпечує тієї ж дії, що і Read, і додатково – читання до маркера кінця рядка і перехід до нового рядка;

  • Writeln, що забезпечує запис усіх величин з обов'язковою установкою маркера кінця рядка у файл. Формат цих процедур такий:

Readln(Var f:text; V1[,V2,...Vn]);

Writeln(Var f:text; V1[,V2,...Vn]);

де V1...Vn змінні різних типів.

Для організації операцій введення-виведення використовуються наступні мовні засоби:

  • функція Eoln(f:text) повертає булівське значення True, якщо поточна файлова позиція знаходиться на маркері кінця рядка або виклик Eof(f) повернув значення True. В всіх інших випадках значення функції буде False;

  • функція Eof(f:text) повертає булівське значення True, якщо покажчик кінця файлу знаходиться відразу за останнім компонентом, і False у противному випадку.