Published using Google Docs
Інформатика 10 (АП) Урок 89
Updated automatically every 5 minutes

Урок  89                                                                       Інформатика (АП)              


Оператор приєднання WITH.


Мета.

Навчальна. Ознайомлення з додатковими можливостями мови Паскаль, зокрема з оператором приєднання WITH.

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

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

Тип уроку. Засвоєння нових знань, вмінь і навичок.

Матеріали для роботи з учнями:

План

1          Перевірка домашнього завдання.

2          Актуалізація опорних знань.

3          Викладення нового матеріалу.

4          Розв’язування вправ.

5          Підсумки уроку.

6          Домашнє завдання.

                                                          Пам’ятка для учня!

1          Пригадайте правила техніки безпеки при роботі з ПК.

2          Через кожні 15 хв виконуйте вправи для очей та для зняття м’язової втоми.


     

 Хід уроку


1. Перевірка домашнього завдання.

       1. Наявність.

       2. Питання.


2. Актуалізація опорних знань.

  1. Дайте означення запису як комбінованого типу даних.
  2. Що є ідентифікатором змінної типу запис і що є ідентифікатором поля запису? Поясніть на прикладі.
  3. У чому подібність і в чому розходження між масивом і записом?
  4. Опишіть поняття у вигляді масиву або у вигляді запису:

а) позначення поля шахівниці а5, е8...

б) комплексне число а+ bі.

  1. Як здійснюється доступ до полів запису?
  2. Чи правильно, що всі поля запису повинні бути різних типів?
  3. Які операції можна проводити з записом і полями запису?
  4. Перелічіть якості, що характеризують програміста, і запропо­нуйте міру цих якостей. Опишіть запис, призначений для збере­ження характеристики програміста.
  5. Наведіть приклад масиву записів. Поясніть конструкцію доступу до полів елементів такого масиву.
  6. Опишіть масив записів, що містять прізвище абонента і номер йо­го телефона. Заповніть кілька елементів цього масиву прізви­щами і телефонами своїх знайомих.
  7. Наведіть приклад запису, полем якого є масив. Поясніть конструк­цію доступу до елементів такого масиву.
  8. Опишіть змінну Tovar для збереження інформації про товар іграш­кового магазину. Запишіть оператори, які здійснюють задания значень полів запису Tovar.

3. Мотивація.

Оператор With - для тих, хто не любить багато писати.

Він до­зволяє скоротити звертання до полів запису.


4. Вивчення нового матеріалу.

Оператор приєднання With

Синтаксис оператора:

With <ім’я запису» Do Begin

<оператори опрацювання полів запису>

End;

Оператор приєднання With указує загальне для всіх полів ім'я змінної типу запис, що дозволяє опускати це ім'я запису при звер­танні до поля, транслятор додасть його сам.

Приклад 7. Змінну D описано таким чином:

var D: Record

Year, Day: Integer;

Month: String[20];

End;

Begin

with D Do Begin

Year:=1998; Month:='Dec'; Day:=15;

End;

Приклад 8. Якщо поле запису теж є записом, в операторі With можна указати імена записів в порядку їх вкладення:

Type Pupil = Record

Name : String[20];

Rik : 1980..1990;

Ball : Record Alg, Fiz, Inf : 1..12 End;

    End;

var Class : Array [1..B] of Pupil; і : Integer;

Begin

For i:=l To 3 Do

With Cl ass[i], Ball Do Begin

Write ('=>'); Readln (Name);

Readln (Rik, Alg, Fiz, Inf);

End

End.

Послідовний пошук у масиві записів

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

Приклад 9. Інформація про оцінки 5 учнів зберігається в ма­сиві записів:

Type Pupil = Record

  Nomer: Byte;

  Name: String[20];

  Ball: Array [1..6] of Byte;

End;

var Page : Array [1..5] of Pupil;

і, N, K : Byte; P : Pupil;

Нехай у масиві Page потрібно знайти запис, значення поля Name якого дорівнює 'Петренко', і вивести на друк середнє арифме­тичне оцінок цього учня.

For і:=1 То 5 D

  With Page [і] Do Begin

Sr:=0;

if Name='neTpeHKo' Then Begin

For j:=l To б Do Sr:=Sr+Ball[j];

Sr:=Sr/6;

WriteLn (Name, Sr:5:1)

End; {Then}

End; { With j

Може виникнути ситуація, коли у масиві не знайдено запису, який має дану ознаку. Тому бажано передбачити можливість повід­омлення після завершення циклу, знайдено запис чи ні.

Приклад 10. Введемо змінну Prap: Boolean, яка отримує значення True, якщо запис знайдено.

Prap:=False;

For і:=1 То 5 Do

   With Page[і] Do Begin Sr:=0;

if Name=‘Петренко' Then Begin Prap:= True;

For j:=l To 6 Do sr:=Sr+Ball[j];

Sr:=Sr/6;

WriteLn (Name, Sr:5:1)

End;

      End; { With I

If Not Prap Then WriteLn ('Запис не знайдено');


5. Створення та реалізація програми

Задача. Значення часу Т1 і T2 задані у форматі Год:Хв:Сек. Скласти програму, яка визначає:

а) чи передує час Т1 часу Т2 (у межах доби);

б) який проміжок часу відокремлює моменти Т1 і Т2;

в) час (Т1 + 1 секунда), враховуючи зміну доби.

  1. Опишемо тип запису Time, який відповідає структурі даних за­дачі, і змінні Т1, Т2 типу Time:

Tуре Time= Record

Hour:0..23;

Min, Sec:0..59

          End;

var Т1, T2: Time;

Запишемо оператори введення значень полів записів Т1 і Т2:

Begin

Write ('T1=>');

with T1 Do

ReadLn (Hour, Min, Sec);

Write ('T2=>');

With T2 do

ReadLn (Hour, Min, Sec);

  1. Складемо програму для перевірки, чи передує час Т1 часу T2 (у межах доби). Найпростішим способом розв'язування завдання є переведення часу, заданого у форматі Год:Хв:Сек в секунди, і порівняння отриманих значень.

Опишемо змінні

Timel, Тіme2: Integer.

With Т1 Do Timel:= Hour*3600+Min*60+Sec;

With Т2 Do Time2:= Hour*3600+Min*60+Sec;

If Timel<Time2 Then writeLn (’так1)

     Else writeLn C’Hi1);

  1. Обчислимо час D, що відокремлює моменти Т1 і T2: D=|T2-T1|.

D:=Abs(Timel-Time2);

  1. Переведемо час D, отриманий в секундах, у формат Год:Хв:Сек. Для цього опишемо змінні Hd, Md, Sd: integer.

Hd:= D Div 3600;

D:= D Mod 3600;

Md:= D Div 60;

Sd:= D Mod 60;

WriteLn (Hd, ‘: ‘, Md, ‘ : ', Sd);

  1. Складіть програму для обчислення часу ( Т1 + 1 секунда), вра­ховуючи зміну доби. Блок-схема алгоритму:

6.       Складемо програму обчислення часу (Т1+1 сек) за блок-схемою.

Begin

Write ('T1=>');

with ті DO

ReadLn (Hour, Min, sec);

With Tl Do

If Sec<59 Then Sec:=Sec+l Else Begin Sec:=0;

If Min<59 Then Min:=Min+l Else Begin Min:=0;

Hour:=(Hour+l)Mod 24

        End

End;

with Tl Do

writeLn ('Tl=',Hour, Min, Sec)

End.


6. Підсумки уроку.

   

  1.  Type Complex = Record

Re, Im: Real

    End;

Point = Record

X, Y: Real

     End;

Var Z, W: Complex;

P: Point; Re: Real;

Визначте, які значення будуть мати змінні Z, W, Р, Re після вико­нання нааведених операторів (заповніть таблицю):

  1. Var Krug: Record

R: Real;

C: Record

X,Y: Real

End;

End;

Потрібно змінній Krug присвоїти значення, що відповідає колу радіуса 2.5 з центром у точці (0, 1.8). У яких з наведених операто­рів приєднання ця задача розв'язується правильно?

а) with Krug Do Begin R:=2.5;

X:=0;

Y:=1.8 End;

б) with Krug Do Begin R:=2.5;

C.X:=0;

C.Y:=1.8 End;

c)  with Krug Do Begin R:=2.5;

with C Do Begin X:=0;

Y:=1.8 End;

d)  with Krug,C Do Begin R:=2.5;

X:=0;

Y:=1.8 End;

є) with C,Krug Do Bkgin R:=2.5;

X:=0;

Y:=1.8 End;

  1. Знайдіть помилки в програмі:

Program Errors;

Type Zap=Record A:lnteger;

B:Char

End;

Var X,Y,F: Zap; C:Char;

Begin Readln (C);

With X Do Begin A:=Ord(C);

B:=C End;

Zap:=X;

If X=Y Then Y:=F.P;

With Y Do Writeln (A,X)

  End.

  1. Опишіть змінну для збереження списку товарів іграшкового мага­зину як масив записів Маgazin:

        

  1. Запишіть фрагмент програми, призначении для надання значень елементам масиву Magazin.
  2. Знайдіть загальну вартість товарів в масиві Magazin.
  3. Запишіть фрагмент програми, призначений для виведення на ек­ран списку товарів, подібного до наведеного в питанні 4 (значень полів записів, які є елементами масиву Magazin).
  4. Запишіть фрагмент програми для пошуку в масиві записів, значен­ня поля Назва яких дорівнює 'Машина', і виведення всіх полів цих записів на екран.
  5. Запишіть фрагмент програми для пошуку в масиві записів, значен­ня поля Ціна яких не більше 5 грн., і виведення всіх полів цих записів на екран.
  6. Опишіть масив записів для збереження списку з 4 учнів у формі: Ім'я, вага, зріст. Запишіть оператори для введення значень еле­ментів масиву з клавіатури.
  7. Знайдіть середнє арифметичне значень зросту учнів.
  8. Визначте ім'я найлегшого учня.


7. Домашнє завдання.

  1. Опрацювати конспект.
  2. Виконати вправу “Учні”.

1. Задача. Скласти список навчальної групи з 5 учнів. Для кожно­го учня вказати рік народження та оцінки з фізики, алгебри, інформатики. Інформацію про кожного учня оформити у ви­гляді запису. Сукупність записів об'єднати в масив.

2. Проаналізуйте програму, яка забезпечує введення інформа­ції про 5 учнів. Результатом роботи програми є список відмінників.

Type PUPIL = Record

Name : Stri ng[20];

God : 1980..1990;

Ball : Record Alg,Fiz,lnf:l..12 End;

    End;

Var Class: Array [1..5] of Pupil; і : integer;

Begin

For і:=1 To 5 Do

With Class[i], Ball Do Begin

write ('=>'); Readln (Name);

Readln (God, Alg, Fiz, inf)

                    End;

writeln ('Список відмінників');

For і:=1 То 5 Do

with cl ass[і], Ball Do

If (Alg+Fiz+lnf) >= 30 Then Writeln (Name);

End.

3. Надрукуйте список учнів, прізвища яких починаються з лі­тери А, та їх оцінки.

4. Надрукуйте список учнів, які мають оцінки не нижче 8, та прізвища яких починаються з літер В і Г.

5. Обчисліть середній бал класу і виведіть список учнів, які мають середній бал, вищий за середній бал класу.

6. Надрукуйте список учнів, упорядкований за убуванням серед­нього балу. Для розв'язування завдання найпростіше використати такий прийом: для кожної можливої суми балів К від максимального значення (3x12=36) до мінімального (3x1=3) переглянути весь масив записів, і, якщо сума елементів поля за­пису Ball дорівнює К, вивести на друк значення поля Name.

For К:=36 DownTo 3 Do

For i:=l To 5 Do

with Cl ass[i], Ball Do

If (Alg+Fiz+lnf) = К Then writeln (Name);

Таким чином ми отримаємо на екрані рейтинг учнів, але сам масив записів в пам'яті комп'ютера залишається не- упорядкованим.


8. Опрацювати завдання.

 Комбіновані типи. Записи”

  1. Назвіть компоненти запису та їх типи:

Type Book = Record

Nazv : String[45];

God : 1000..2000;

Price : Real;

End;

  1. Опишіть запис, який містить таку інформацію:
  1. Існує опис:

Type Fam = Record

Glava: String[15];

Age : 18..100;

Child : Array[1..2] of Record

Name: Stri ng[15];

Godr:1900..2000

End

End

var A, в: Fam;

Занесіть вихідну інформацію до змінної А та продублюйте її до змінної В.

  1. Відомо, що

Type Time = Record

Hour:0..23;

Min, Sec:0..59 End;

var T1,T2:Time;

Напишіть програму, яка вводить значення полів запису Т1 і Т2 та друкує True, якщо Т1 передує Т2, і друкує False у протилеж­ному випадку.

  1. Дано опис типу запису, який містить відомості про книгу:

Type Kniga = Record

Nazva : String [50];

Avtor : String [20];

Rik, Kilk : Integer; vart : Real;

End;

Опишіть масив Katalog записів типу Kniga, призначений для збереження каталога книжкового магазину (5 найменувань).

  1. Запишіть фрагмент програмного коду для введення з клавіатури значень елементів масиву Katalog.
  2. Запишіть фрагмент для пошуку в масиві Katalog книги автора 'М.Рильський'. Якщо є, виведіть на друк всі відомості про кни­гу, якщо немає - виведіть повідомлення 'Такої книги немає'.
  3. Запишіть фрагмент для виведення на друк списку всіх книг, ви­даних не раніше 2000 року.
  4. Запишіть фрагмент для виведення на друк списку всіх книг, ва­ртість яких не менше 10 грн.
  5. Запишіть фрагмент для виведення на друк списку всіх книг з ука­заниям вартості кожної книги і кількості її наявних примірників.
  6. Запишіть фрагмент для виведення на друк списку всіх книг з указаниям загальної вартості всіх екземплярів кожної книги.
  7. Практичне завдання. Дані назви 5 моделей персональних комп'ютерів. Для кожного ПК відомі обсяг пам'яті, вартість і швидкодія. Складіть програму, яка вводить дані про всі ПК, визначає, який ПК має мінімальне співвідношення вар­тість/швидкодія, і друкує назву ПК та його характеристики.