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

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

Тема: Файли послідовного і прямого доступу

Мета: Формування умінь створення програм для організації файлів послідовного і прямого доступу та опрацювання даних, що містяться у файлах, алгоритмічною мовою високого рівня GW-Basic

1 Теоретичні відомості

Часто виникає потреба опрацьовувати інформацію, яка зберігається на зовнішніх носіях (дисках). Така інформація зберігається у файлах.

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

    1. Створення і читання файлів даних послідовного доступу

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

  • відкрити файл за допомогою оператора

OPEN <режим>,#<номер файлу>,<специфікація файлу>,<довжина запису>

<Режим> може бути:

“О” – режим послідовного виведення (OUTPUT);

“І” – режим послідовного введення (INPUT);

“А” – позиціювання на кінець файлу (APPEND).

  • записати дані в файл з допомогою оператора

PRINT #<номер файлу>,<список змінних>

або

WRITE #<номер файлу>,<список змінних>;

  • закрити створений файл з допомогою оператора

CLOSE #<номер файлу> .

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

INPUT #<номер файлу>,<список змінних> .

    1. Оператори та функції для роботи з файлами прямого доступу

У файлах прямого доступу дані зберігаються в записах з певними номерами. Це дозволяє безпосередньо звертатись до даних з будь-якої частини файлу без читання всієї попередньої інформації. Робота з файлами прямого доступу складається з таких етапів:

  • відкривання файлу оператором

OPEN “R”,#<номер файлу>,<специфікація файлу>,<довжина запису>

“R” – прямий режим введення-виведення (RANDOM);

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

FIELD #<номер файлу>,<довжина поля>AS<символьна змінна>

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

LSET<символьна змінна>=<символьний вираз>

RSET<символьна змінна>=<символьний вираз> .

  • запис даних з буфера файлу на диск, використовуючи оператор

PUT #<номер файлу>,<номер запису>

  • закривання файлу за допомогою оператора CLOSE #<номер файлу> .

Для читання запису з файлу прямого доступу призначений оператор

GET #<номер файлу>,<номер запису> .

У файлі прямого доступу всі дані – символьні. Числові змінні конвертуються в символьні за допомогою функцій MKS$, MKI$, MKD$ .

2 Хід роботи

2.1 Постановка задачі

Сформувати файл “С”, який містить інформацію про телефонні розмови (місто, з яким велась розмова, номер телефону, вартість розмови, час розмови). Сформувати файл абонементів, з якими велась розмова протягом 10 хвилин і більше і витрати на одну розмову складають більше 30 грн. Знайти вартість всіх переговорів.

    1. Графічний алгоритм показано на рис. 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

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