With T1 Do
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
|