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

А.П.Бондарев, В.П.Бєляєв, А.Я.Бенч, В.М.Гой, Н.І.Нестор, Р.В.Шиприкевич

Лабораторний практикум

З ДИСЦИПЛІНИ

ОБЧИСЛЮВАЛЬНА ТЕХНІКА ТА ПРОГРАМУВАННЯ”

Лабораторний практикум з дисципліни “Обчислювальна техніка та програмування” для студентів радіотехнічного факультету./Укл. А.П.Бондарев, В.П.Бєляєв, А.Я.Бенч, В.М.Гой, Н.І.Нестор, Р.В.Шиприкевич.Львів: ДУ”ЛП”,1996,  86с.

Відповідальний за випуск: Б.Ю.Волочій Рецензенти: кандидат технічних наук, доцент Р.Д.Грицьків, кандидат технічних наук, доцент Ю.В.Саноцький, кандидат технічних наук Л.Д.Шевченко.

Редактор:

Лабораторна робота № 2

Введення  виведення даних

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

0.1Теоретична частина.

0.1.1Введення даних.

Оператори введення даних заносять в комірки пам’яті значення, отримані від зовнішнього пристрою (клавіатура, файл, мишка тощо). Введення даних в Турбо-Паскалі, орієнтоване на файли, будемо називати “введення раніше підготованих даних”. У Турбо-Паскалі передбачена робота із трьома типами файлів: типізованими, не типізованими та текстовими. Для роботи із файлами необхідно оголосити змінні файлового типу. Наприклад:

var f1:file; {змінна для не типізованих файлів}

var f2: file of byte; {змінна для типізованих файлів – в даному випадку у файлі }

{зберігатимуться тільки змінні з типом byte}

var f3: text; {змінна для текстових файлів}

Для введення інформації використовуються дві процедури вигляду

Read(f, a1,a2,..,ak); Readln(f, a1,a2,..,ak);

де f-ім’я файлової зміної, а1,..ak- імена елементарних змінних.

Загальні правила застосування вище згаданих процедур до текстових файлів такі:

  • зчитуватись (вводитись) можуть тільки дані цілих, дійсних типів та типу char;

  • перед числами допустиме використання знаків “+”,”“;

  • символьні значення подаються без апострофів;

  • значення відділяються одне від одного пропусками (одним чи більше);

Перед читанням значень необхідно під’єднати файлову змінну до певного файлу на зовнішньому носії та відкрити файл для читання (тобто встановити вказівник на початок файлу) :

Assign(f, ‘dani.dat’); Reset(f);

Після цього процедура Read(f, a1,a2,..,ak); читатиме дані з файлу, до якого під’єднана вказана в процедурі файлова змінна, і заноситиме значення в комірки з іменами а1,a2,..ak. Як тільки перелік змінних вичерпається, дія процедури Read закінчується. Після кожного зчитування вказівник в файлі пересувається до наступного значення. Спроба зчитати значення після закінчення файлу викличе помилку. Повторне зчитування записаних в файл значень можливо лише після виконання процедури Reset(f), яка переведе вказівник на початок файлу (нульовий елемент), або Seek(f,n), яка переведе вказівник на n-й елемент файлу. Остання поцедура може застосовуватись тільки до типізованих файлів створених користувачем, а не до текстових файлів. Після завершення операцій із файлом, його необхідно обов’язково закрити за допомогою процедури Close(f). Розглянемо приклад зчитування даних з файлу ‘dani.dat’:

Program Vvid;

var f:text; {текстовий файл }

a,b,c:byte;

Begin

Assing(f, ‘dani.dat’); {нехай файл dani.dat містить:1 2 3 4 5 6}

Reset(f); {відкриваємо файл для читання}

Read(f,a,b,c); {результат читання: a=1,b=2,c=3}

Read(f,a,b,c); {а тепер: a=4,b=5,c=6}

Reset(f); {перевести на початок}

Read(f,a,c); {результат читання: a=1,c=2}

Read(f,a,b,c); {тепер a=3,b=4,c=5}

Read(f,a,b); {a=6, читання b спричиняє помилку, адже ми досягнули}

{кінця файлу}

Close(f); {не забуваємо закрити файл !!!}

ЕND.

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

Процедура Readln відрізняється від процедури Read тим, що після закінчення вводу значень у вказані змінні вказівник пересувається до відмітки “кінець рядка” (для текстових файлів), тобто значення між останім зчитаним і кінцем рядка ігноруються.

Введення раніше підготованих даних доцільно застосовувати для зчитування порівняно великих обсягів даних, які рідко змінюються при повторних виконаннях програми. Для занесення порівняно невеликої кількості часто змінюваних даних, а також для забезпечення діалогового режиму роботи ЕОМ використовується введення даних з клавіатури, а також константи (рідко змінювані дані). Для реалізації такого введення достатньо вказати ім’я зовнішнього файлу ‘con’ (консоль) в операторі під’єднання: Assign(f,’con’), або взагалі не вказувати ім’я файлової зміної в операторі вводу: Read(a,b,c). При виконанні такого оператора комп’ютер чекає, доки користувач набере відповідні значення (числового або символьного типів) або розділені пропусками декілька значень і тільки після натискання клавіши [Ввід] ([Enter]) ці значення будуть занесені у відповідні комірки пам’яті і робота програми відновиться.

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

Ще оперативнішим методом введення є введення одного символу, який не вимагає натиснення клавіши [Enter] після кожного значення, але дозволяє надавати значень тільки зміним типу char. Здійснюється ввід за допомогою функції Readkey (читай клавішу). Функція ReadKey розташована у модулі Crt, тому перед її використанням необхідно приєднати згаданий модуль до програми. Наприклад:

Program Keyread;

uses crt; {приєднуємо модуль Crt}

var a,b,c: char;

Begin

a:=Readkey;

b:=Readkey;

c:=Readkey;

END.

Ця програма не закінчится, доки користувач не натисне трьох клавіш. Якщо це були клавіші E, o, n- то змінні набудуть значень: a - ‘E’, b - ‘o’,c - ‘n’.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]