Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОД_ЛАБ.doc
Скачиваний:
0
Добавлен:
28.12.2019
Размер:
1.08 Mб
Скачать

Лабораторна робота № 9. Записи з фіксованою частиною.

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

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

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

TYPE <ім'я типу>=RECORD ;

<ідентифікатор поля>:<тип компонента>;

………………………….. <ідентифікатор поля>:<тип компонеита>;

end;

VAR <ідентифікатор>:<ім'я типу>;

Обсяг пам'яті, що необхідний для запису, складається з довжини компонентів. Звертання до поля (компоненту) запису здійснюється за допомогою ідентифікатора змінної та ідентифікатора поля, розділених крапкою. Така комбінація зветься складеним ім'ям. Наприклад:

N.NUMBER:=1993; N.MARKA:=‘ГA3-24’;

Оператор приєднання WITH використовується для спрощення роботи з компонентами запису. Щоб не використовувати складене ім'я компонентів запису, застосовують оператор WITH, у якому вказується змінна типу запис. Після цього можна працювати з іменами компонентів, як із звичайними змінними. Формат оператора:

WITH <змінна типу запис> DO <оператор>;

WITH n DO begin {запис n має поля number, marka}

number:=1996; marka:= 'volvo';

end;

Pascal дозволяє вкладання записів один в одний, відповідно оператор WITH може бути вкладеним.

WITH Rl DO

WITH R2 DO

WITH R3 DO

Це еквівалентно запису WITH R1,R2,R3 DO ...

Приклад програми

program Iab_4_l;

{ Ввести масив записів, кожен з яких містить відомості про прізвище, адресу та номер телефона. Скласти програму, що сортує ці дані за алфавітом прізвищ, знаходить у масиві записів запис, що введений з клавіатури}

uses crt;

type anketa= record { Тип запису, що містить прізвище, }

FIO: string; {адресу та телефон }

adress:string;

phone:string;

end;

var

mas:array [1..10] of anketa; { Масив записів 1 }

і, j,k: integer; {параметри циклів}

s:char; {змінна для закінчення вводу даних}

rec:anketa; {запис для пошуку}

procedure wod; {————————ввід масиву записів—————}

begin

і:=0;

repeat

і:=і+1;

with mas[i] do

begin

write(‘FIO’); readln (FIO);

write ( 'adress '); readln(adress);

write ('tel '); readln (phone);

end;

writeln('continue? y/n');

s:=readkey; {ввід з клавіатури відповіді: y/n }

upcase(S)='N'; {зміна малих літер на великі}

end;

procedure vyvod; {———вивід масиву записів——}

begin

writeln(’— ——FIO——— ————— adress—————— telephone— ’);

for j:=l to і do {перегляд елементів масиву записів}

begin

with mas[j] do {для кожного запису вивести прізвище, адресу, телефон}

begin

write(' ',FIO );

write(' ',adress);

write(' ',phone);

end;

writeln;

end;

end;

procedure sort; {——.-сортування масиву за прізвищами— —}

var tmp:anketa; {тимчасова змінна для переміни елементів масиву}

begin

for j:=l to i-1 do {фіксація елемента масиву}

for k:=j+l to і do {перегляд інших елементів масиву}

begin

if mas [j].fio>mas[k].fio then {якщо елементи не впорядковані}

begin

tmp:=mas[j]; {переставлення елементів місцями} mas[j]:=mas[k];

mas[k]:=tmp;

end;

end;

end;

procedure search; {——— ввід запису для пошуку в масиві——}

var flag: boolean; {змінна для визначення факту відсутності даних}

begin

writeln ('input record for search:fio,adress,tel');

readln(rec.fio);

readln(rec.adress);

readln(rec.pnone);

for j:=l to і do {пошук запису по введеному значенню}

with mas[j] do begin if(flo=rec.fio)and(adress=rec.adress)and(phone=rec.phone)

{якщо записи співпадають}

then

begin

flag:=true; {прапорець позначення знайденого запису}

writeln ('record found: ',rec.fio,' ',rec.adress.",rec.phone);

break; (переривання циклу ,тому що знайдений запис}

end

else flag:=false; {прапорець позначення відсутності запису}

end;

if not flag then writeln('record not found');

end;

begin {————головна програма——————}

writeln('rezults of program var 30');

writeln(auther student...');

wod; {ввід масиву записів}

writeln (array of input's records');

vyvod; {вивід масиву записів}

sort; {сортування масиву}

writeln('array of records after sort');

vyvod; {вивід відсортованого масиву}

search; {пошук потрібного запису}

end.