Лекция: Програмування з використанням типу запис

Мета роботи. Познайомитись з поняттям «запис»; виробити навички роботи зі структурою даних запис у мові програмування Pascal. Навчитися правильно описувати тип record, уміти ініціалізувати змінні типу record, виводити на екран змінні типу record; навчиться вирішувати задачі на використання записів

Під записом розуміється структура даних, що поєднує під одним ім'ям дані різних типів. Записи складаються з фіксованого числа елементів, названих полями. Поле — це змінна визначеного типу. Різні поля можуть мати (на відміну від елементів масиву) різний тип. Звертання до елемента запису виконується за допомогою складеного імені. Перша частина складеного імені — це ім'я запису, друга частина — ім'я поля. Між ім'ям запису й ім'ям поля ставиться точка: ZAP.IMP, де ZAP — ім'я запису, IMP- ім'я поля.

Перед виконанням роботи необхідно вивчити правила опису і використання записів, типізованих констант типу запис, оператора приєднання WITH.

Приклад. Дано два раціональних числа, опишіть їх, використовуючи структуру даних запис (чисельник, знаменник). Скоротити їх, знайти їх суму.
Етапи рішення програми:

1. Складемо блок-схему програми

2. Уточнимо вміст блоку «Обчислення НСД для чисельника і знаменника кожного дробу». По-перше, НСД це найбільший загальний дільник, число вкрай необхідне щоб скоротити дріб. Обчислювати НСД будемо по алгоритму Евкліда. Нехай дані два числа а і b:


Як числа a і b будуть брати участь чисельник і знаменник дробів. Деталізувати блок скорочення і складання дробів не будемо. Бажано блок «Пошук НСД» оформити у виді функції, що випереджає тему наступної лабораторної роботи.

3. Переведемо програму на мову Паскаль

Program example9; Type Tfraction = record; Chisl: Integer; Znam; Word; End; Function nod(a,b:integer):integer; Var k:integer; Begin If a>b then k:= a else k:=b; While not((a mod k=0) and (b mod k =0)) do dec(k); End; Var x,y,s: Tfraction; n,p:integer; st: string; begin writeln('Уведіть два раціональних числа'); write('x= '); readln(st); n:= post('/',st); val(copy(st,1,n-1),x.chisl,p); val(copy(st,n+1,length(st)-n),x.znam,p); write('y= '); readln(st); n:= post('/',st); val(copy(st,1,n-1),y.chisl,p); val(copy(st,n+1,length(st)-n),y.znam,p); {знаходимо НСД для кожного дробу і скорочуємо їхній} n:=nod(x.chisl,x.znam); x.chis:= x.chisl div n; x.znam:= x.znam div n; n:=nod(y.chisl,y.znam); x.chis:= y.chisl div n; x.znam:= y.znam div n; writeln('Скорочені дроби:'); writeln('X= ',x.chisl,'/',x.znam); end.

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

1. Як описуються змінні типу запис?

2. У яких випадках доцільно використовувати змінні типу запис?

3. З яких компонентів складається змінна типу запис?

4. Яке призначення оператора WITH?

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

6. У чому відмінність записів від масивів?

Задачі

Багаж пасажира характеризується кількістю речей і загальною вагою речей. Зведення про багаж кожного пасажира являють собою запис із двома полями: одне поле цілого типу (кількість речей) і одне — дійсне (вага в кг).
1. Знайти багаж, середня вага однієї речі в який відрізняється не більш, ніж на 3 кг від загальної середньої ваги однієї речі.

2. Знайти число пасажирів, що мають більш двох речей і число пасажирів, кількість речей яких перевершує середнє число речей.

3. Визначити, чи є два пасажири, багажі яких збігаються по числу речей і розрізняються по вазі не більше ніж на 0,5 кг.

4. З'ясувати, чи є пасажир, багаж якого перевищує багаж кожного з інших пасажирів і по числу речей, і по вазі.

5. З'ясувати, чи є пасажир, багаж якого складається з однієї речі вагою 3 кг.

Після вступу в ВУЗ про студентів зібрана інформація: прізвище, чи потребує гуртожиток, яку школу закінчив, яку мову вивчав.

6. Скласти програму, що визначає скільки чоловік потребують гуртожиток.

7. Скласти програму, що визначає списки учнів першої школи.

8. Скласти програму, що визначає списки мовних груп.

У бібліотеці для кожного читача, що замовляє книгу, заповнюється картка: прізвище, дата замовлення, дата видачі книги.

9. Визначити самий маленький термін, за який знайшли книгу.

10. Визначити скільки замовлень було не виконане.

11. Визначити хто найчастіше бере книги.

12. Визначити кому видали книги 15.09.06.

13. Визначити скільки чоловік замовляли книги 25.04.06.

 

еще рефераты
Еще работы по информатике