- •Загальні методичні вказівки
- •Лабораторна робота № 1
- •1 Теоретичні відомості
- •2 Послідовність виконання роботи
- •3 Оформлення звіту
- •4 Контрольні запитання
- •Лабораторна робота № 2
- •1 Теоретичні відомості
- •2 Послідовність виконання роботи
- •3 Оформлення звіту
- •4 Контрольні запитання
- •Лабораторна робота № 3
- •1 Теоретичні відомості
- •2 Оформлення звіту
- •3 Контрольні запитання
- •Лабораторна робота № 4
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота № 5
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №6
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №7
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №8
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №9
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №10
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №11
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №12
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №13
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота №14
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота № 15
- •1 Теоретичні відомості
- •2 Хід роботи
- •Пояснення до програми
- •3 Контрольні запитання
- •Лабораторна робота № 16
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні питання
- •М2. Система автоматизованого проектування науково-технічних задач (пакет mathcad)
- •Лабораторна робота № 17
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота № 18
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота № 19
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота № 20
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота № 21
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
- •Лабораторна робота № 22
- •1 Теоретичні відомості
- •2 Хід роботи
- •3 Контрольні запитання
Лабораторна робота № 16
Тема: Файли послідовного і прямого доступу
Мета: Формування умінь створення програм для організації файлів послідовного і прямого доступу та опрацювання даних, що містяться у файлах, алгоритмічною мовою високого рівня GW-Basic
1 Теоретичні відомості
Часто виникає потреба опрацьовувати інформацію, яка зберігається на зовнішніх носіях (дисках). Така інформація зберігається у файлах.
Файл – це обєкт, призначений для зберігання на диску програм чи даних під деяким іменем. Файл даних складається з записів. Записи містять різну інформацію, але є однорідними. За способом доступу до записів файли поділяються на файли даних послідовного доступу та файли даних прямого доступу.
Створення і читання файлів даних послідовного доступу
Дані у файлах послідовного доступу читаються в порядку їх збереження, починаючи з першого запису в файлі. Для створення послідовного файлу необхідно виконати такі дії, використовуючи при цьому наступні оператори:
відкрити файл за допомогою оператора
OPEN <режим>,#<номер файлу>,<специфікація файлу>,<довжина запису>
<Режим> може бути:
“О” – режим послідовного виведення (OUTPUT);
“І” – режим послідовного введення (INPUT);
“А” – позиціювання на кінець файлу (APPEND).
записати дані в файл з допомогою оператора
PRINT #<номер файлу>,<список змінних>
або
WRITE #<номер файлу>,<список змінних>;
закрити створений файл з допомогою оператора
CLOSE #<номер файлу> .
Для читання даних з файлу послідовного доступу використовується оператор
INPUT #<номер файлу>,<список змінних> .
Оператори та функції для роботи з файлами прямого доступу
У файлах прямого доступу дані зберігаються в записах з певними номерами. Це дозволяє безпосередньо звертатись до даних з будь-якої частини файлу без читання всієї попередньої інформації. Робота з файлами прямого доступу складається з таких етапів:
відкривання файлу оператором
OPEN “R”,#<номер файлу>,<специфікація файлу>,<довжина запису>
“R” – прямий режим введення-виведення (RANDOM);
резервування місця в буфері файла прямого доступу для даних, які необхідно записати, оператором
FIELD #<номер файлу>,<довжина поля>AS<символьна змінна>
підготовка даних для запису в буфер файлу, вирівнюючи їх ліворуч чи праворуч. Для цьому використовують оператори:
LSET<символьна змінна>=<символьний вираз>
RSET<символьна змінна>=<символьний вираз> .
запис даних з буфера файлу на диск, використовуючи оператор
PUT #<номер файлу>,<номер запису>
закривання файлу за допомогою оператора CLOSE #<номер файлу> .
Для читання запису з файлу прямого доступу призначений оператор
GET #<номер файлу>,<номер запису> .
У файлі прямого доступу всі дані – символьні. Числові змінні конвертуються в символьні за допомогою функцій MKS$, MKI$, MKD$ .
2 Хід роботи
2.1 Постановка задачі
Сформувати файл “С”, який містить інформацію про телефонні розмови (місто, з яким велась розмова, номер телефону, вартість розмови, час розмови). Сформувати файл абонементів, з якими велась розмова протягом 10 хвилин і більше і витрати на одну розмову складають більше 30 грн. Знайти вартість всіх переговорів.
Графічний алгоритм показано на рис. 16.1
2.3 Ідентифікація змінних
-
Змінна
M
C
T
H
S
Ідентифікатор
M$
C
T
H
S
2.4 Програма мовою GW-Basic та результати обчислень
а) з використанням файлів послідовного доступу
10 REM Файл послiдовного доступу
20 OPEN "O",#1,"C"
25 INPUT "Кiлькiсть розмов";N
30 FOR I=1 TO N
40 INPUT "Мiсто";M$
50 INPUT "Вартiсть розмови";C
60 INPUT "Час розмови";T
70 INPUT "Номер телефону";H
80 PRINT M$;C;T;H
90 WRITE #1,M$,C,T,H
100 NEXT I
110 CLOSE #1
115 PRINT
120 OPEN "I",#1,"C"
130 OPEN "O",#2,"telef"
140 S=0
150 WHILE NOT(EOF(1))
160 INPUT #1,M$,C,T,H
170 IF C>30 AND T>=10 THEN 180 ELSE 190
180 WRITE #2,H
Рисунок 16.1 – Графічний алгоритм
190 S=S+C
200 WEND
210 CLOSE #1
220 CLOSE #2
230 PRINT "Вартiсть всiх переоворiв =";S;" грн"
240 PRINT
250 OPEN "I",#2,"telef"
260 WHILE NOT(EOF(2))
270 INPUT #2,H
280 PRINT H
290 WEND
300 CLOSE #2
310 END
Результат виконання
Львів 20 12 428967
Київ 40 15 5505634
Донецьк 35 18 3467895
Вартiсть всiх переоворiв = 95 грн
5505634
3467895
б) з використанням файлів прямого доступу
10 REM Файл прямого доступу
20 OPEN "R",#1,"C",23
30 FIELD #1,10 AS M1$, 3 AS C1$,3 AS T1$,7 AS H1$
40 INPUT "Кiлькiсть розмов";N
50 FOR I=1 TO N
60 INPUT "Мiсто";M$
70 LSET M1$=M$
80 INPUT "Вартiсть розмови";C$
90 LSET C1$=C$
100 INPUT "Час розмови";T$
110 LSET T1$=T$
120 INPUT "Номер телефону";H$
130 LSET H1$=H$
140 PRINT M$,C$,T$,H$
150 PUT #1
160 NEXT I
170 CLOSE #1
180 PRINT
190 OPEN "R",#1,"C",23
200 FIELD #1,10 AS M1$, 3 AS C1$,3 AS T1$,7 AS H1$
210 OPEN "R",#2,"telef",23
220 FIELD #2,10 AS M2$, 3 AS C2$,3 AS T2$,7 AS H2$
230 S=0
240 FOR I=1 TO N
250 GET #1
260 C=VAL(C1$)
270 T=VAL(T1$)
280 IF C>30 AND T>=10 THEN 290 ELSE 340
290 LSET M2$=M1$
300 LSET C2$=C1$
310 LSET T2$=T1$
320 LSET H2$=H1$
330 PUT #2
340 S=S+C
350 NEXT I
360 CLOSE #1
370 CLOSE #2
380 PRINT "Вартiсть всiх переговорiв =";S;" грн"
390 PRINT
400 OPEN "R",#2,"telef",23
410 FIELD #2,10 AS M2$, 3 AS C2$,3 AS T2$,7 AS H2$
420 WHILE NOT(EOF(2))
430 GET #2
440 PRINT M2$,C2$,T2$,H2$
450 WEND
460 CLOSE #2
470 END
Результат виконання
Чернівці 20 12 428967
Київ 401 5 5505634
Одеса 35 18 3467895
Вартiсть всiх переоворiв = 95 грн
Київ 40 1 5 5505634
Донецьк 35 18 3467895
