Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книга_мат_3_1

.pdf
Скачиваний:
29
Добавлен:
17.02.2016
Размер:
1.38 Mб
Скачать

Лабораторна робота № 14 “Записи”

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

Питання для вивчення

1.Записи. Організація доступу до полів запису.

2.Створення масивів записів.

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

Записи. Організація доступу до полів запису

Записи - це складений тип даних, який поєднує в собі різнотипні

елементи (поля запису). Цей тип описує така конструкція:

Ім’я типу = RECORD iм’я поля: тип поля; iм’я поля: тип поля;

iм’я поля: тип поля; END;

Приклад. Опис запису, який містить дані про книгу.

Type

Book =record

Tittle: string [80];

{назва}

Author: string [20];

{ім’я автора}

Year: integer;

{рік видання}

End;

 

Над записами допустимі операції присвоєння, перевірки на рівність

іне рівність, вводу та виводу.

Зполем запису в програмі можна працювати, як зі змінною того ж

типу, що і поле. Звертаються до поля по складеному імені:

Ім’я запису. ім’я поля

Приклад

Var

X,Y: Book ; {опис типу вище} Z: array [1..100] Of Book ;

Begin

X.Tittle:=’Три мушкетера’; X.Autor: =’А.Дюма’; X.Year:=’1980’;

Y: =X;

Writeln (Y.Autor);

End.

Тип поля може бути будь-яким, в тому числі і записом .

71

Приклад.

 

Type

 

Name_A= record

 

Name: string [15];

 

Surname: string [20];

 

End;

 

Book = record

 

Tittle: string [80];

{назва}

Author: Name_A ;

{ім’я автора}

Year: integer;

{рік видання}

End;

 

Якщо поле є записом, то звертання до його елементів (полів) відб у- вається по імені, яке складається, наприклад, з трьох частин: X.Autor.Surname. Глибина таких вкладень не обмежена.

Для того, щоб скоротити звертання до полів запису можна використовувати оператор WITH. Його схема:

WITH ім’я запису DO оператор.

Всередині оператора можна опускати ім‟я запису в складеному імені поля, транслятор додає його сам.

Приклад.

Var X: Book ;

with X do begin

readln(Tittle,Autor,Year);

write(Tittle,Autor,Year);

end

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

Приклад.

Type

Book = record Tittle: string [40];

Author: string [12]; Year: integer;

End;

Catalog = array [1..1000] Of Book ;

Створення масивів записів

72

Приклад 15. Створити масив записів з полями: прізвище учня і три оцінки. Вивести прізвища учнів, які мають хоч одну двійку .

program pr1;

 

 

uses crt;

 

 

const n=3;

 

 

туре

 

 

zap=record

 

 

fio:string[40];

 

 

oz1,oz2,oz3:integer;

 

 

end;

 

 

mas=array[1..n] of zap;

 

 

var

 

 

a:mas;

 

 

i,c:integer;

 

 

procedure st_zap (var s:zap); {Створення запису}

 

begin

 

 

with s do

 

 

begin

 

 

write('Введіть прізвище учня:');readln(fio);

 

write('Введіть оцінку 1:');readln(oz1);

 

write('Введіть оцінку 2:');readln(oz2);

 

write('Введіть оцінку 3:');readln(oz3);

 

end;

 

 

end;

 

 

procedure druk_zap(var s:zap); {Друк запису}

 

begin

 

 

with s do

 

 

writeln(fio:40,oz1:2,oz2:2,oz3:2);

 

end;

 

 

procedure st_mas;

{Створення масиву}

 

var i:integer;

 

 

begin

 

 

for i:=1 to n do

 

 

begin

 

 

st_zap(a[i]);

 

 

end;

 

 

end;

 

 

procedure poisk(c:integer);{Обробка масиву}

 

var i,d:integer;

 

 

begin

 

 

d:=0;

 

 

for i:=1 to n do

 

 

begin

 

 

with a[i] do

 

 

begin

 

 

if (oz1=2) or (oz2=2) or (oz3=2) then

writeln('Двійки

має:',fio)

 

 

73

else d:=d+1; end;

end;

if (d=3) then writeln('Учнів з двійками немає'); end;

Begin clrscr;

writeln('Кількість учнів - 3'); st_mas;

writeln;

poisk(c);

readln;

end.

Завдання

1.Створити масив записів, який містить про учнів: прізвище, клас, номер школи і додатково оцінки за останню четверть (середній бал). Вияснити скільки учнів мають оцінку не нижчу за 4.

2.Створити масив записів, який містить дані про книги. Дані про кожну книгу-це прізвище автора, назва книги та рік видання. Вивести на екран всі книги вказаного автора та їх роки видання.

3.Створити масив записів, який містить дані про автомобілі, що складаються з його марки, номера та прізвища господаря. Знайти прізвища господарів та номер автомобіля певної марки.

4.Створити масив записів з полями: прізвище учня, число та місяць народження. Надрукувати список учнів, які народилися влітку.

5.Створити масив записів, який містить різні дати. Кожна з цих дат складається з числа, місяця та року. Знайти дату з найменшим ном е- ром року.

6.Створити масив записів, який містить дані про книги. Дані про кожну книгу – це прізвище автора, назва книги та рік видання. Визначити чи є книга з назвою”Інформатика”, якщо є, то повідомити прізвище автора та рік видання.

7.Створити масив записів, який містить дані про куби: розмір кожного куба (довжину ребра), його колір та матеріал. Знайти кількість деревяних кубів.

8.Створити масив записів, який містить дані про учнів школи. Поля запису: прізвище, ім‟я, клас та номер школи. Надрукувати дані про учня, прізвище якого найкоротше.

9.Створити масив записів з полями: прізвище учня, число та місяць народження. Надрукувати список учнів, упорядкований по місяцю нар о- дження.

74

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

11.Створити масив записів, який містить дані про куби: розмір кожного куба (довжину ребра), його колір та матеріал. Знайти кількість кубів з ребром рівним 5.

12.Створити масив записів з полями: назва книги, автор та рік видання. Надрукувати дані про книги, які видані з 1960 року.

13.На Олімпійських Іграх в Сіднеї приймали участь гімнасти з різних країн. Відомості про кожного складаються з імені, прізвища, країни та кількості балів. Створити масив записів, який містить відомості про спортсменів. Вивести на екран дані про представників України.

14.В змаганнях зі спортивної гімнастики приймають участь декілька спортсменів. Вони виконують вправи на 4 снарядах. Створити масив записів, що містить відомості про кожного спортсмена: прізвище та оцінки на кожному снаряді. Вивести прізвища тих спортсменів, які в сумі отримали найбільще балів.

15.Створити масив записів, що зберігає координати точки xi, yi . Знайти всі точки, які найменше віддалені від даної точки М.

Контрольні запитання

1.Для представлення якої інформації можна використовувати записи?

2.Який тип даних називається записами? Наведіть приклад.

3.Які операції допустимі над записами?

4.Як звернутися до поля запису?

5.Яким може бути тип поля запису?

6.Який оператор дозволяє скоротити звертання до полів запису? Наведіть його схему

Лабораторна робота № 15 “Робота з текстовими файлами ”

Мета: сформувати уміння працювати з текстовими файлами: створювати та переглядати файли у текстовому редакторі, опанувати стандартні пр о- цедури роботи з текстовими файлами.

Питання для вивчення

1.Файлові змінні та операції з ними.

2.Особливості роботи з текстовими файлами.

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

Файлові змінні та операції з ними

75

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

В розділі Type. Наприклад :

Type T_file=text;

Var

F:t_file;

В розділі Var. Наприклад :

Var F:text;

Елементами текстового файлу є символи, організовані в рядки в загальному випадку різної довжини. В кінці кожного рядку стоїть ознака “кінець рядку”, а в кінці файлу – “кінець файлу”.

Ознакою кінця рядку при введенні є натискання клавіші Enter. Ця ознака розпізнається функцією Eoln( файлова змінна ) (від слів End Of Line). Вона виробляє значення TRUE, якщо досягнуто ознаки кінця рядку. Ознакою кінця файлу є одночасне натискання клавіш CTRL/Z. Ця ознака розпізнається функцією Eof ( файлова змінна ) (від слів End Of File). Вона виробляє значення TRUE, якщо досягнуто ознаки кінця файлу.

Файлова змінна текстового типу зв‟язується з конкретним файлом на диску процедурою Assign ( файлова змінна, ім’я фізичного файлу ).

Щоб писати інформацію в текстовий файл, його треба відкрити пр о-

цедурою Rewrite (файлова змінна), а процедура Reset(файлова змінна)

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

Для запису символів в файл використовують процедури Write

(файлова змінна, базовий елемент) або Writeln ( файлова змінна, базо-

вий елемент), при цьому оператор Write записує дані до файлу без переходу на наступний рядок, а оператор Writeln – з переходом.

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

Read (файлова змінна, базовий елемент) або Readln (файлова змінна,

базовий елемент), при цьому оператор Read читає дані з файлу без переходу на наступний рядок, а оператор Readln забезпечує такий перехід.

Текстовий файл можна створювати декількома способами: Посимвольно Порядково

В будь-якому текстовому редакторі При посимвольному створенні формування файлу здійснюється за

допомогою вкладених циклів. Зовнішній цикл забезпечує формування рядків. Замість циклу For в цьому випадку можна застосувати While або Repeat зі своїми логічними умовами завершення циклів.

76

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

(Ознака кінця рядку ).Саме її код (#13) може входити до умови виконання циклу Repeat.

При порядковому створенні використовують готові рядки (дані String) . В циклі вводиться рядок, натискується Enter та будь-яка клавіша,

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

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

При необхідності переходу в кінець рядка текстового файла викор и- стовують логічну функцію SeekEoln ( файлова змінна ), а перехід в кінець файла забезпечується функцією SeekEof ( файлова змінна ).

Особливості роботи з файлами Приклад 15. Створити текстовий файл, вивести його на екран і підрахувати кількість ком в тексті.

program demo;

 

 

uses crt;

 

 

type

t_file=text;

 

 

var

 

 

 

name:string;

 

 

f:t_file;

 

 

k:integer;

 

 

procedure Init_file(var f:t_file);

{процедура створення файлу}

var

x:char;

 

 

begin

 

 

checkeof:=true;

 

 

rewrite(f);

{відкриття файлу для запису}

writeln('введіть файл(кінець-^z)');

while not eof do

 

 

 

begin

 

 

 

read(x);

{“зчитування ” елементів з екрану}

 

write(f,x);

{запис елементів до файлу}

 

end;

 

 

close(f);

{закриття файлу}

 

reset(input);

 

 

end;

 

 

procedure druk_file(var f:t_file);

{процедура друкування файлу}

var

y:char;

 

 

begin

 

 

reset(f);

{відкриття файлу для читання}

while not eof(f) do

 

 

begin

 

 

77

read(f,y);

{“зчитування” елементів файлу}

write(y,' ');

{друкування їх на екрані}

end;

 

close(f);

{закриття файлу}

end;

procedure obrobka_file( var ff:t_file ; var kol:integer); {процедура обробки

файлу }

 

var a:char;

 

begin

 

reset(ff);

{ відкриття файлу для читання}

kol:=0;

 

while not eof(ff) do

 

begin

 

read(ff,a);

{“зчитування” елементів файлу}

if a=',' then

{перевірка виконання умови}

kol:=kol+1;

 

end;

 

end;

 

BEGIN

 

clrscr;

 

writeln('name file:');

 

readln(name);

 

assign(f,name);

{“зв‟язка ” файлу з фізичним файлом з ім‟ям name}

Init_file(f);

writeln('ви ввели файл:'); Druk_file(f); obrobka_file(f,k); writeln('kol=',k);

repeat until keypressed END.

Завдання

1.Створити текстовий файл. Надрукувати із нього перші 10 символів першого рядка.

2.Створити текстовий файл, в кожному рядку якого перші два символу є буквами. Отримати слово, яке утворено першими буквами кожного рядка.

3.Створити текстовий файл, в кожному рядку якого перші два символа є буквами. Отримати слово, що утворено другими буквами кожного рядка.

4.Створити текстовий файл. Підрахувати, скільки разів зустрічається в ньому слово “мама”.

5.Створити текстовий файл. Переписати в інший файл ті його рядки, в яких більше 30 символів.

6.Створити текстовий файл, який містить символьні рядки. Знайти кількість рядків, що починаються та закінчуються однаковими символами.

78

7.Створити текстовий файл. Вставити на початок кожного рядка його номер та записати перетворенні рядки в новий файл.

8.Створити два текстові файли. Записати в третій файл тільки ті рядки, які є і в першому, і в другому файлах.

9.Створити текстовий файл. Знайти в ньому слова, в яких є входження слова “про”, і записати їх у новий файл.

10.Створити текстовий файл. Відсортувати символи першого рядка за алфавітом.

11.Створити текстовий файл. Знайти в ньому слова, що зустрічаються більше одного разу.

12.Створити текстовий файл. Обчислити кількість порожніх рядків і записати всі непорожні рядки в новий файл.

13.Створити текстовий файл. З‟ясувати чи є в ньому рядок, що починається з букви “т”. Якщо так, то визначити номер першого з таких рядків.

14.Створити текстовий файл. Знайти довжину самого довгого рядка. Я к- що таких рядків декілька, то знайти номер першого.

15.Створити текстовий файл. Надрукувати найкоротший рядок. Якщо таких рядків декілька, то надрукувати перший з них.

Контрольні запитання

1.Що таке файл? У чому полягає різниця між логічним та фізичним файлом?

2.Які стандартні пристрої виступають у ролі логічних файлів?

3.Які дані можуть бути елементами текстового файлу?

4.Як зв‟язати файлову змінну з іменем файлу на диску?

5.В чому полягає різниця між операторами Reset та Rewrite?

6.Куди показує “вказівник” файлу?

7.Як добавити новий елемент в кінець текстового файлу?

8.Чи однаково “працюють” оператори Read та Readln при використанні текстового файлу?

9.Які операції дозволяється виконувати над файлом?

10.Які дії необхідно виконати для відкриття файлу?

11.Для чого призначено процедуру Close?

12.Які особливості текстових файлів?

13.Чим відрізняються користувацькі текстові файли від файлів Input та

OuTurbo Pascal ut?

14.Значення яких типів можуть бути прочитані процедурами Read та

Readln?

15.Значення яких типів можуть бути виведені процедурами Write та

Writeln?

79

Лабораторна робота № 16 “Робота з типізованими файлами”

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

Питання для вивчення

1.Файлові змінні та операції з ними.

2.Особливості роботи з типізовами файлами.

Теоретичні відомості Файлові змінні та операції з ними

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

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

Під словом файл розуміють з одного боку конкретну сукупність даних на диску під яким-небудь ім'ям, а з іншого боку – файлову змінну у програмі. Така «дуальність» дає можливість вживати одну і туж змінну для обробки різних файлів на дисках. Файл на диску ніяк не описується, він має тільки ім‟я. Файлова змінна обов‟язково описується в програмі так чи інакше в залежності від виду файлу.

Типовані файли описуються, наприклад, так:

Var F1:file of integer;

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

Типізовані файли допускають як прямий так і послідовний доступ. Працюючи з прямим доступом, слід пам‟ятати, що елементи типізованих файлів завжди нумеруються, починаючи від нуля.

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

Eof(f):Boolean – повертає значення true, якщо досягнуто кінець файла f або false, якщо файл пустий.

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

Read (f,a) - При зчитуванні в кожну змінну із списка процедури, показчик поточної позиції в файлі переміщується на наступний елемент.

80

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