13
Програмування мовою Паскаль «Записи, множини, покажчики»

програмування мовою паскаль записи

Embed Size (px)

Citation preview

Page 1: програмування мовою паскаль записи

Програмування мовою Паскаль

«Записи, множини, покажчики»

Page 2: програмування мовою паскаль записи

Ми вже вивчили масиви і визначили, масиви це – однотипні занумеровані дані,що мають спільне ім’я. Але різноманіття інформації неможна звести тільки до якогось одного типу даних.

Приклад1, описати положення точки в просторі, можна скориставшись одним і тим же типом для опису її

координат, але, описати людину, нам потрібно вказати її ім’я, ріст, колір очей і волосся, вік, адресу, дату народження , тобто в одному описі об’єднуємо

інформацію різних типів.

Page 3: програмування мовою паскаль записи

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

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

Дані такого типу, які описують важливі сторони того чи іншого об’єкту шляхом включення в описання декількох,

часто різнотипних, елементів, називають записом (record).

Page 4: програмування мовою паскаль записи

В мові Паскаль запис описується шляхом вказівки службового слова record і перерахуванням елементів, що входять в запис, а також опис типів цих елементів.

Наприклад, анкетні дані про студента вузу можуть бути представлені у виді інформаційної структури

Анкета учня

П.І.Б.

Стать

Дата народження

Адрес

Школала

Клас

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

Така структура називається дворівневим деревом. В Паскалі ця інформація може зберігатисяся в одній змінній типу record (запис).

1Анкета учня

П.І.Б.

Стать Дата народження Адрес Школала

Клас

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

Page 5: програмування мовою паскаль записи

Задати тип можна таким чином:

де record – службове слово,

а <ім’я_типу> і <ім’я_поля> - компоненти запису та їх тип.

type < имя _ типа >=record

<имя_поля1>: тип;

<имя_поля2>: тип;

………………….

<имя_поля K >: тип

end ;

Page 6: програмування мовою паскаль записи

Приклад фрагмента програми - опис даних типу запис мовою Паскаль

Type anketa=record

fio: string[45];

pol: char;

dat_r: string[8];

adres: string[50];

school: 1..35;

class: string[4];

end;

Page 7: програмування мовою паскаль записи

Поля запису в Паскалі можуть мати будь-який тип, в частково самі можуть бути записами. Така можливість використовується в том випадку, коли потрібно представити багаторівневе дерево (більше 2 рівнів). Наприклад, ті же відомості про учня можна показати трьох рівневим деревом.

1Анкета учня

П.І.Б.

Стать Дата народження Адрес Школала

Клас

рік місяць день Місто вулиця Буд. КВ.

Page 8: програмування мовою паскаль записи

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

опис даного запису в Паскалі буде виглядати так:

Type anketa1=recordfio: string[45]; pol: char; dat_r: record;god: integer; mes: string[10]; den: 1..31;

end; adres: record

gorod: string[25]; ulica: string [20]; dom, kv: integer;

end; school: 1..35;

ckass: string[3]; end;

Page 9: програмування мовою паскаль записи

Поля• Після того, як визначений тип запису , можна

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

var

children: anketa;

children_ 1: anketa 1;

Page 10: програмування мовою паскаль записи

Елементи запису називаються полями, а звернення до них відбувається через використання їх імені –ідентифікаторів полів. Практично, поля запису опрацьовуються точно так же, як і будь-які другі змінні. Але на відміну від звичайної змінної імена полів повинні мати складний запис ідентифікатор імені поля та ім’я запису і відділятися від нього точкою. Такий запис називається уточнюючий ідентифікатор: <имя_записи>.<имя_поля>Наприклад, щоб звернутися до поля gorod змінної adres , необхідно вказати таке складне ім’я: adres.gorod :=’ Kramatorsk‘;

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

Page 11: програмування мовою паскаль записи

Операції над записами Паскаля (це важливо!)

Єдина операція, яку можна виконати над однотипними записами Паскаля – це присвоювання. Всі другі операції виконуються над окремими полями запису.

Приклад розв’язування задачі з використанням типу даних запис.

Нехай нам необхідно заповнити відомості про учня (П.І.Б., дата народження, адреса, клас і група), а за

тим вивести ці відомості на екран.

Page 12: програмування мовою паскаль записи

Приклад 1program pr1;

type anketa=recordfio: string[45]; dat: string[8]; adres: string[50]; class: 1..5;

end; var uchen: anketa; begin

writeln (‘ввести дані про учня’);

{зверніть увагу, що введення кожного поля здійснюється окремо}

writeln (‘ввести прізвище, імяі по батькові’);

readln (uchen.fio); writeln (‘введіть дату

народження’); readln (uchen t.dat);

writeln (‘введіть адресу’); readln(uchen.adres); writeln (‘введіть клас’); readln(uchen.class); writeln (‘введення

закінчено’); writeln ; {Зверніть увагу, що,

виведення запису здійснюється по полях}

writeln (‘прізвище імя по батькові: ’, uchen. fio );

writeln(‘ дата народження : ’, student.dat);

writeln(‘ адреса : ’, uchen.adres);

writeln(‘ клас : ’, uchen.class); end.

Page 13: програмування мовою паскаль записи

А тепер трохи ускладнимо задачу. Нехай нам необхідно мати відомості про багатьох учнів. А для цього необхідно, організувати масив типу запис . А

потім із великого списку вивести прізвища учнів 8-го класу.

program primer 2 ; type anketa=record

fio: string[45]; dat_r: string[8]; adres: string[50];

class: 1..5; end; var uchen: array [1..100] of anketa;

I: integer; begin

{послідово вводимо кожний запис} for I:=1 to 5 dobegin

writeln (‘введіті дані про’, I , ‘- гоучня’);

writeln (‘введіть П.І.Б’); readln (uchen[I].fio); writeln (‘введіть дату

народження’);

readln (uchen[I].dat_r); writeln (‘введіть адресу’); readln(uchen t[I].adres); writeln (‘введіть курс’); readln(uchen[I]. class);

end; writeln (‘введення закінчене’); writeln ; {переглядаємо масив записів і

вибираємо тільки учнів 8-го класу}

for I:=1 to 100 doif uchen[I]. class =8 then

writeln(‘ Прізвище учня 8-го класу : ’, uchen[I].fio); end.