Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posibnik_paskal.pdf
Скачиваний:
230
Добавлен:
11.02.2016
Размер:
2.43 Mб
Скачать

«Turbo Pascal »

Значенко О.П.

ТЕМА 11. ЗАПИСИ В МОВІ ПАСКАЛЬ

В практиці програмування приходиться мати справу з даними, які складаються з інших даних. Наприклад відомості про учнів: ім’я, прізвище, по-батькові, число, місяць та пік народження, домашню адресу та іншу інформації. Для представлення такої інформації в мові Паскаль використовується тип запис. За допомогою такого запису представляється певна структура статистичних даних, яку можна розглядати як карточку в каталозі. На кожній карточці в каталозі записана певна інформація. Ця інформація неоднорідна її окремі частини мають різний зміст, оформлюються різними способами та зберігаються на окремих полях карточки.

Тип даних RECORD надає можливість програмісту можливість об’єднати в одну пов’язану структуру різні по типу та змісту елементи (поля).

1. Запис (record) — це структурований тип даних, призначений для зберігання в оперативній пам'яті та опрацювання даних, що складаються з полів - даних різних типів. Запис описують у розділі type (можна і у розділі var) за допомогою такої конструкції:

type <ім’я запису>=record

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

<ім’я поля п> : <тип поля п>; end;

Приклад.

Type Book = record autor, title : string; year: integer;

End;

Var B:Book;

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

59

«Turbo Pascal »

Значенко О.П.

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

З іншого боку запис можна розглядати у програмі, як єдине ціле тоді присвоєння B.autor := ‘Пушкін А. С.’; визначить автора книги В , а її назву дасть оператор присвоєння B.titel:=’КАЗКИ’; а B.year:=1985;

дасть рік видання.

Звернення до запису в цілому відбудеться по його імені. Якщо два записи однакові (наприклад var А, B : Book; )то до них можна застосувати оператор присвоєння.(А:=В)

Записи можуть бути елементами масивів. Окремі поля записів також можуть бути записами. За рахунок цього в Паскалі е можливість створювати складні структури даних

Приклад.

 

Const stud=20;

 

type

 

grupa=record

{Оголошуємо запис

grupa}

 

name, surname: string[20];

{Описуємо відповідні поля}

birthday: record

 

year: 1975..1985;

 

month: 1..12;

 

day: 1..31;

 

end;

 

sball: real

 

end;

 

Var

 

Ved: array[1..stud] of grupa;

 

 

 

Тут змінна Ved– це масив записів. Кожний запис складається з п’яти полів, причому два остання поля самі е записами. Звертатися до елементів таких складних структур необхідно за складеним іменам

Приклад.

Ved [5]. name:=’Elena’; Writeln(ved[15]. birthday.year)

Так як писати складені імена – доволі складно і цей процес може супроводжуватися помилками, тому для скорочення тексту програми та

60

«Turbo Pascal » Значенко О.П.

покращення її наочності у Паскалі використовується оператор (команда) приєднання.

Команда приєднання (with)

Команда приєднання дає змогу використовувати у програми лише імена полів. Загальний вигляд команди with такий:

with <ім'я запису> do <команда>;

У цій команді після слова with зазначають ім'я змінної типу запис,

ав команді пишуть лише назви полів відповідного запису.

Приклад

with grupa do begin

name :='Шевченко'; surname:='Ігор'; with birthday do begin

year:=1980; month: = 12; day:=28;

end;

sball:=4.9

end;

В межах оператора при зверненні до запису, ім’я якого вказано після зарезервованого слова with можна опускати ім’я запису, я звертатися лише до власних імен полів. Ім’я запису в складеному імені поля транслятор добавить сам.

Оператор With корисно використовувати при звертанні до декількох полів запису або при багатократному зверненні до будь-якого поля:

For i:=1 to stud do

With ved [i] ]. birthday do

Begin

Writeln(year);

Writeln(month);

Writeln(day);

End;

61

«Turbo Pascal »

Значенко О.П.

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

program Avtoprice; uses Crt;

const n=10;

type avto=record marka:string[l5];

year, price:integer; end;

var a1:array[l..n] of avto; i:integer;

begin clrscr;

for i:=l to n do with al[i] do begin

writeln ('Введіть марку машини:'); readln(marka);

writeln('n рік випуску:'); readln(year); writeln(fTa ціну:'); readln(price);

end; writeln;

writeln('Фірма пропонує такі машини:'); for i:=l to n do

with a1[i] do

writeln (marka:15,year:10, ' $',price); writeln;

write('Роздрукуемо інформацію про машини,'); writeln('Ціна яких менша, ніж $3000:');

for i:=l to n do with a1[i] do

if price<3000 then writeln(marka:15,year:10); readln;

end.

62

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