Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE \* MERGEFORMAT2
Лабораторна робота №7
ТЕМА: РОБОТА З ЗАПИСАМИ
МЕТА: Ознайомитись з поняттям запису в мові Паскаль. Вивчити особливості опису та роботи з записами. Навчитись складати та налагоджувати програми для опрацювання записів.
ОБЛАДНАННЯ: технічне забезпечення: ПЕОМ; програмне забезпечення: система програмування Turbo Pascal.
ЗАВДАННЯ ДО РОБОТИ:
Зміст звіту:
Теоретичні відомості
Розглянуті раніше структуровані типи даних мови ТР (масив, множина), складаються з компонентів лише одного типу. Але для розвязання широкого класу задач потрібно групувати дані різних типів, які логічно відносяться до одного обєкта. Наприклад, доцільно обєднати дані про власника автомобіля (номер, марка машини, пробіг, прізвище власника, адреса) в одній структурі. Для цього у мові ТР передбачений комбінований тип, його також називають записом. Записи можуть використовуватись у будь-яких випадках, де бажано групувати логічно повязані елементи даних в один блок.
Запис це структурований тип даних, якій складається з фіксованої кількості компонентів різного типу. Оголошення типу починається службовим словом Record і закінчується службовим словом End. Між ними розташовується список компонентів, які називаються полями, з вказанням імен полів і типу кожного поля.
Формат:
Type
<імя типу> = Record
<імя поля1>: <тип поля1>;
…
<імя поля n> : <тип поля n>
End;
Var
<імя змінної> : <імя типу>;
Приклад.
Type
Mash = Record
Nomer : String[8]; {номер}
Marka : String[20]; {марка автомобіля}
Probig : Integer; {пробіг у км}
PIB : String[40]; {прізвище імя по-батькові власника}
End;
Var M, V : Mash; {змінні типу запис}
Якщо кілька полів мають однаковий тип, то їх імена в описі типу просто перераховуються:
Type
PointType = Record
x, y : Integer
End;
Var
Point : PointType;
Після оголошення у програмі змінної типу запис до кожного її поля можна звернутися, вказавши спочатку імя змінної запису, а потім через крапку імя поля. Така комбінація називається складеним іменем.
M.Nomer, M.Marka, M.Probig, M.PIB, Point.x, Point.y це складені імена, що подають значення полів записів, але при цьому M комбінація чотирьох значень, Point двох.
Значення полів запису можуть використовуватися у виразах. Імена окремих полів не використовуються по аналогії з іменами змінних. Складене імя можна використовувати всюди, де дозволяється використання типу поля. Для надання полям значень використовується оператор присвоювання.
Приклад.
M.Nomer := '00035MK'; M.Marka := 'ВАЗ-2108'; M.Probig := 16000;M.PIB := 'Ткачук П.П.';
Point.x :=12; Point.y := 24;
Складені імена можна використовувати, зокрема, в операторах введення-виведення:
Read(M.Nomer, M.Marka, M.Probig, M.PIB); Write(M.Nomer:7, M.Probig:6);
Допускається застосування оператора присвоювання і до записів вцілому, якщо вони мають один і той самий тип, наприклад V :=M;. Після виконання цього оператора значення полів запису V дорівнюватимуть значенням відповідних полів запису M.
В ряді задач зручно користуватися масивами із записів. Їх можна описувати, зокрема, так:
Type
Person = Record
PIB: String[30];
Vik: 0 .. 90;
Prof : String[40]
End;
ListPerson = Array [1..50] of Person;
Var L : ListPerson;
Тоді доступ до полів запису , який у масиві розташований за номером і, здійснюватиметься за такими складеними іменами: L[i].PIB, L[i].Vik, L[i].Prof.
Звертання до полів запису має надто громіздкий вигляд, що особливо незручно при використанні довгих імен змінних-записів. Для розвязання цієї проблеми у мові ТР призначений оператор With, який має такий формат:
With <змінна типу запис> do <оператор>;
Один раз вказавши змінну типу запис в операторі With, можна працювати з іменами полів, як із звичайними змінними, тобто без вказання перед іменем поля імені змінної-запису.
Приклад. Надати значення полям запису Point за допомогою оператора With.
With Point do
begin
x :=12;
y := 24
end;
Турбо Паскаль допускає вкладення записів один в один (тобто поле запису може в свою чергу бути записом), відповідно оператор With також може бути вкладеним:
With R1 do
With R2 do …
With Rn do
що еквівалентно написанню
With R1,R2,…,Rn do…
Рівень вкладеності не повинен перевищувати 9.
Розглянуті вище записи мають строго визначену структуру. В деяких випадках це обмежує можливості їх застосування. Тому в мові ТР є можливість задати тип запису, який містить довільну кількість варіантів структури. Такі записи називаються записами з варіантами. Записи з варіантами забезпечують засоби обєднання записів, які схожі, але не ідентичні за формою. Вони складаються з необовязкової фіксованої і варіантної частин. Використання фіксованої частини не відрізняється від описаного вище. Варіантна частина формується за допомогою оператора Case. Він задає особливе поле запису поле ознаки, яке визначає, який з варіантів в даний момент буде активізований. Значенням ознаки в кожний поточний момент виконання програми має бути одна з розташованих далі констант. Константа, яка є ознакою, задає варіант запису і називається константою вибору.
Формат:
Type
Zap = Record
Case <поле ознаки> : <имя типу> of
<константа вибору1> : (поле, …: тип);
…
<константа вибору n> : (поле, …: тип)
end;
Компоненти кожного варіанту (імена полів і їх типи) беруться у круглі дужки. У частини Case немає окремого End, як цього можна було б чекати по аналогії з оператором Case. Одне слово End завершує всю конструкцію запису з варіантами.
Приклад.
Type
Zap = Record
Nomer : Byte;
Artycul: Integer;
Case Flag : Boolean of
TRUE : ( Cina1 : Integer);
FALSE : (Cina2 : Real)
End;
Var PZap: Zap;
Поля Nomer i Artycul розташовані у фіксованій частині запису, вони доступні у програмі в будь-який поточний момент незалежно від поля ознаки. Поле Cina1 може використовуватися лише в тому випадку, коли значення поля ознаки Flag дорівнює TRUE. Поле Cina2 доступне у протилежному випадку, тобто якщо значення Flag дорівнює FALSE.
При використанні записів з варіантами слід дотримуватися таких правил:
всі імена полів повинні відрізнятися одне від одного принаймні одним символом, навіть якщо вони зустрічаються у різних варіантах;
запис може мати лише одну варіантну частину, причому варіантна частина повинна бути розташована в кінці запису;
якщо поле, що відповідає певній мітці, є порожнім, то воно записується так: мітка: ( );.
Розглянемо прості приклади використання комбінованого типу даних при розвязуванні задач засобами мови ТР.
Задача 1. Описати комбінований тип, що містить відомості про людей: прізвище, місто проживання, адресу (назва вулиці, номери будинку та квартири). Вивести прізвища будь-яких двох людей зі списку, що живуть в різних містах, але за однаковими адресами.
Uses Crt;
Type Man = Record
Surname, Town: String[20];
Address: Record
Street: String[20];
House, Flat : 1..999
end
end;
List = Array [1..15] of Man;
Var Hum : List;
i, j, n : Byte;
b1, b2, b3, b4 : Boolean;
Begin
ClrScr;
Write('Введіть кількість людей у списку: ');
ReadLn(n);
WriteLn('Введіть дані про кожну людину:');
for i :=1 to n do
With Hum[i] do
begin
WriteLn(i:2);
Write('Прізвище: '); ReadLn(Surname);
Write('Місто: '); ReadLn(Town);
With Address do
begin
Write('Вулиця: '); ReadLn(Street);
Write('Будинок N '); ReadLn(House);
Write('Квартира N '); ReadLn(Flat);
end
end;
for i :=1 to n-1 do
for j := i+1 to n do
begin
b1 := Hum[i].Town <> Hum[j].Town;
b2 := Hum[i].Address.Street <> Hum[j].Address.Street;
b3 := Hum[i].Address.House <> Hum[j].Address.House;
b4 := Hum[i].Address.Flat <> Hum[j].Address.Flat
if b1 and b2 and b3 and b4 then
begin
WriteLn('За іронією долі');
WriteLn(Hum[i].Surname,' і ', Hum[j].Surname);
WriteLn('живуть в різних містах за однаковими адресами')
end
end
End.
Задача 2. Описати комбінований тип, що містить відомості про студентів деякого вузу: прізвище, імя, стать, рік народження, курс. Визначити: 1) номер курсу, на якому навчається найбільша кількість чоловіків, 2) найпоширеніше жіноче імя.
Uses Crt;
Type Stud = Record {Відомості про окремого студента}
Surname, Name: String[20];
Sex : Char;
BirthYear : 1900..2000;
Course : 1..5
end;
Inform = Array [1..200] of Stud; {Відомості про всіх студентів}
Courses = Array [1..5] of Byte; {Кількість студентів-чоловіків на кожному курсі}
Var St : Inform; C: Courses;
i, ii, j, max, n, p : Byte;
Begin
ClrScr;
Write('Введіть кількість студентів: ');
ReadLn(n);
WriteLn('Введіть дані про кожного студента:');
for i :=1 to n do
With St[i] do
begin
WriteLn(i:2);
Write('Прізвище: '); ReadLn(Surname);
Write('Імя: '); ReadLn(Name);
Write('Стать (літери m або w: '); ReadLn(Sex);
Write('Рік народження: '); ReadLn(BirthYear);
Write('Курс: '); ReadLn(Course);
end;
for i :=1 to 5 do C[i] := 0; {Ініціалізація масиву С}
for i := 1 to n do
With St[i] do
begin
if Sex = 'm' then
Case Course of
1: C[1] := C[1] +1; {Кількість чоловіків на першому курсі}
2: C[2] := C[2] +1;
3: C[3] := C[3] +1; { … }
4: C[4] := C[4] +1;
5: C[5] := C[5] +1; {Кількість чоловіків на пятому курсі}
end
end;
max := C[1]; {Найбільша кількість чоловіків на курсі }
ii :=1; {Номер відповідного курсу}
for i :=2 to 5 do
if C[i] > max then
begin
max := C[i];
ii := i
end;
WriteLn('Найбільша кількість чоловіків навчається на ', ii:2, '-му курсі '); )
ii :=1; {Номер дівчини з найпоширенішим імям}
max := 1; {Кількість дівчат з найпоширенішим імям}
for i := 1 to n - 1 do
begin
if St[i].Sex = 'w' then
begin
p :=1;
for j := i + 1 to n do
if St[i].Name = St[j].Name {Пошук тезок}
then p := p + 1;
if p > max then
begin
max := p;
ii := i
end
end
end;
WriteLn('Найпоширеніше жіноче імя: ', St[ii].Name)
End.
Варіанти завдань для самостійного виконання
Примітки та підказки:
1. В усіх завданнях термін «вказаний» («вказана», «вказано» тощо) означає «введений користувачем програми з клавіатури».
2. Термін «ініціалізовано» («ініціалізованих» тощо) означає, що такі значення можна вказувати в програмі через оператор присвоєння або обявлення типізованих констант.
3. В усіх завданнях необхідно реалізувати окрім типу запис ще й масив, який містить певну кількість записів.
4. Введення значень логічного типу неможливе, тому доцільно реалізувати його за допомогою введення іншого типу значень і наступну ініціалізацію логічних полів через розгалуження.
Варіант 1.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів, що мають вказаний розмір оперативної памяті;
б) частоту процесорів тих комп'ютерів, що мають картрідер.
2. Описати комбінований тип запис, який містить основні відомості про літаки: назва, швидкість, вантажність. Занести дані про 5 літаків. Вивести на екран загальну вантажність введених літаків.
Варіант 2.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів, які мають вказаний обєм вінчестера;
б) обєм оперативної памяті тих комп'ютерів, що не мають картрідера.
2. Описати комбінований тип запис, який містить основні відомості про оцінки з предмету студентів групи: прізвище, імя, оцінка. Занести дані про 5 студентів. Вивести на екран середній бал студентів з цього предмета.
Варіант 3.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів, які мають вказану частоту процесора;
б) обєм вінчестера тих комп'ютерів, що мають картрідер.
2. Описати комбінований тип запис, який містить основні відомості про оцінки студента з предметів: назва предмету, викладач, оцінка. Занести дані про 5 оцінок студента. Вивести на екран середній бал студента.
Варіант 4.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів, обєм оперативної памяті яких менше за вказаний;
б) модель монітора на тих комп'ютерів, що мають картрідер.
2. Описати комбінований тип запис, який містить основні відомості про автомобіль: назва, власник, пробіг. Занести дані про 5 автомобілів. Вивести на екран загальний пробіг автомобілів.
Варіант 5.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити:
а) модель материнської плати компютерів, обєм оперативної памяті яких більший за вказаний;
б) частоту процесорів тих комп'ютерів, на яких встановлено операційну систему.
2. Описати комбінований тип запис, який містить основні відомості про ціни на мобільний телефон в магазинах міста: адреса магазину, колір наявного екземпляру, ціна. Занести дані про 5 магазинів. Вивести на екран середню ціну телефону по місту.
Варіант 6.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів, обєм жорстких дисків яких менше за вказаний;
б) обєм оперативної памяті тих комп'ютерів, на яких встановлено операційну систему.
2. Описати комбінований тип запис, який містить основні відомості про кабінети інформатики: номер аудиторії, кількість компютерів, наявність мультимедійної дошки. Занести дані про 5 кабінетів. Вивести на екран загальну кількість компютерів у закладі.
Варіант 7.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів, обєм жорстких дисків яких більше за вказаний;
б) обєм жорсткого диску тих комп'ютерів, на яких встановлено операційну систему.
2. Описати комбінований тип запис, який містить основні відомості по відділу кадрів: прізвище робітника, посада, вік. Занести дані про 5 робітників. Вивести на екран середній вік робітників.
Варіант 8.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів, частота процесорів яких більша за вказану;
б) модель монітора на тих комп'ютерів, на яких встановлено операційну систему.
2. Описати комбінований тип запис, який містить основні відомості про карєру футболіста: рік (сезон), команда, кількість голів. Занести дані про 5. Вивести на екран загальну кількість забитих голів.
Варіант 9.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів, частота процесорів яких менша за вказану;
б) частоту процесорів тих комп'ютерів, що не мають картрідера.
2. Описати комбінований тип запис, який містить основні відомості про побутову техніку: назва, виробник, споживана потужність. Занести дані про 5 пристроїв. Вивести на екран загальну потужність пристроїв.
Варіант 10.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) модель материнської плати компютерів з моніторами вказаної моделі;
б) обєм жорсткого диска тих комп'ютерів, що не мають картрідера.
2. Описати комбінований тип запис, який містить основні відомості про міста України: назва міста, область, населення. Занести дані про 5 міст. Вивести на екран загальну кількість мешканців міст.
Варіант 11.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) частоту процесора компютерів, які мають вказаний розмір оперативної памяті;
б) обєм оперативної памяті тих комп'ютерів, що не мають картрідера.
2. Описати комбінований тип запис, який містить основні відомості про результати перегонів Формули 1: назва гран-прі (місце проведення), номер етапу, кількість сходів з траси. Занести дані про 5 гонок. Вивести на екран загальну кількість учасників, що не закінчили гонку.
Варіант 12.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) частоту процесора компютерів, які мають вказаний розмір жорсткого диску;
б) обєм оперативної памяті тих комп'ютерів, де не встановлена операційна система.
2. Описати комбінований тип запис, який містить основні відомості про навчальні заклади: назва навчального закладу, рівень акредитації (1-4), кількість студентів. Занести дані про 5 закладів. Вивести на екран загальну кількість студентів.
Варіант 13.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) частоту процесора компютерів, які мають вказаний розмір оперативної памяті;
б) обєм жорсткого диску тих комп'ютерів, на яких не встановлена операційна система.
2. Описати комбінований тип запис, який містить основні відомості про результати спортсменок збірної України на етапі кубку світу з біатлону: назва гонки (естафета, спринт, гонка переслідування, індивідуальна гонка, мас-старт), кількість учасниць, кількість набраних балів у залік. Занести дані про 5 гонок. Вивести на екран загальну кількість набраних на етапі балів.
Варіант 14.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити:
а) частоту процесора компютерів, в які встановлена материнська плата вказаної моделі;
б) модель материнської плати на тих комп'ютерів, на яких є картрідер.
2. Описати комбінований тип запис, який містить основні відомості про студентів технікуму: номер групи, керівник групи, кількість студентів. Занести дані про 5 груп. Вивести на екран загальну кількість студентів.
Варіант 15.
1. Описати комбінований тип, який містить основні відомості про компютер: модель материнської плати, частота процесора, обєм оперативної памяті, обєм вінчестера, наявність картрідера, модель монітора, наявність встановленої операційної системи. Визначити для 3-х ініціалізованих екземплярів запису:
а) частоту процесора компютерів з моніторами вказаної моделі;
б) модель материнської плати на тих комп'ютерів, на яких встановлено операційну систему.
2. Описати комбінований тип запис, який містить основні відомості про результати команд в першості України з футболу: назва команди, кількість проведених матчів, кількість забитих голів. Занести дані про 5 команд. Вивести на екран середню результативність команд.
Контрольні питання:
Література