
- •Лабораторний практикум
- •Лабораторна робота № 2
- •0.1Теоретична частина.
- •0.1.1Введення даних.
- •Виведення даних.
- •Завдання.
- •Методичні вказівки до лабораторної роботи. Постановка задачі.
- •Розробка структури даних.
- •Розробка алгоритму.
- •Розробка програми.
- •Методичні вказівки до роботи.
- •Методи переведення в двійкову систему числення. Метод ділення.
- •Метод віднімання.
- •Метод маскування або логічного множення.
- •Лабораторна робота №4.
- •Теоретичні відомості. Відомості з математики.
- •Відомості з програмування.
- •Завдання.
- •Лабораторна робота №5
- •Перелік питань, які необхідно вивчити:
- •Завдання.
- •Приклад виконання завдання.
- •Постановка задачі.
- •Розробка структури даних.
- •Розробка алгоритму.
- •Запис тексту програми.
- •Результати тестування і налагодження.
А.П.Бондарев, В.П.Бєляєв, А.Я.Бенч, В.М.Гой, Н.І.Нестор, Р.В.Шиприкевич
Лабораторний практикум
З ДИСЦИПЛІНИ
“ОБЧИСЛЮВАЛЬНА ТЕХНІКА ТА ПРОГРАМУВАННЯ”
Лабораторний практикум з дисципліни “Обчислювальна техніка та програмування” для студентів радіотехнічного факультету./Укл. А.П.Бондарев, В.П.Бєляєв, А.Я.Бенч, В.М.Гой, Н.І.Нестор, Р.В.Шиприкевич.Львів: ДУ”ЛП”,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’.