- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 22: Структурований тип даних – записи
Розглянемо список успішності учнів:
№ п/п Прізвище , ім'я Оцінки
1 Іванов Петро 4 5 5 5
2 Петров Сергій 4 4 5 4
3 Сидоров Віктор 4 4 4 5
Він складається з даних різних типів:
№ п/п – ціле число;
прізвище й ім'я – рядок;
оцінки – масив цілих чисел.
При обробці подібних списків і документів дані різного типу поєднують в одну групу, що називається записом.
Запис – це структурований тип даних, що складається з фіксованого числа елементів одного чи декількох типів.
Запис і кожен елемент запису позначають іменами. Для списку успішності учнів можна ввести наступні позначення:
sap – ім'я запису ;
nom – порядковий номер;
fam – прізвище та ім'я;
oc – оцінки.
До елемента запису звертаються за допомогою імені запису та імені елемента, розділеними крапкою:
Sap.nom – ім'я елемента 1;
Sap.fam – ім'я елемента 2;
Sap.oc – ім'я елемента 3;
Опис запису має вид:
type ім'я типу = record
ім'я елемента 1 : тип;
. . .
ім'я елемента n: тип;
end;
var ім'я запису : ім'я типу;
Службові слова Record (запис) і End виконують роль операторних дужок, усередині яких описуються елементи запису. Елементи запису з їхнім описом називаються полями запису. Список успішності учнів буде мати наступний опис:
type spisok = record
nom : integer;
fam : string[20];
oc : array[1..4] of integer;
end;
var sap : array[1..n] of spisok;
Тут spisok – ім'я типу; sap – змінна, що представляє собою масив типу spisok. Кожен елемент запису має свій опис: nom – змінна цілого типу, fam – рядок з 20 символів, ос – масив з 4-х цілих чисел.
Записи можна описувати безпосередньо в розділі змінних:
var ім'я запису : record
ім'я елемента 1 : тип;
. . .
ім'я елемента n: тип;
end;
Список успішності учнів буде мати наступний опис :
var sap = record
nom : integer;
fam : string[20];
oc : array[1..4] of integer;
end;
Елемент запису в програмі використовується як звичайна змінна, та її можна вказувати як у лівій частині оператора присвоювання, так і у вираженнях. Над елементами запису виконують ті операції, що припустимі для типу їхніх даних. Наприклад:
-
ввести значення порядкових номерів Read(Sap.nom);
-
обчислити середній бал оцінок
Sr_bal := (Sap.oc[1] + Sap.oc[2] + Sap.oc[3] + Sap.oc[4]) / 4;
Оператор приєднання With…do
При спільній обробці декількох полів можна скористатися оператором приєднання With…do, який дозволяє спростити звертання до полів запису. Ім'я запису виноситься в заголовок оператора приєднання, а в блоці Begin-End використовуються тільки імена полів, тобто без вказівки перед ім'ям поля імені змінної, що визначає запис.
Оператор приєднання має вид:
with ім'я запису do
begin
оператори;
end;
Для нашого приклада оператор приєднання можна записати так:
with sap[i] do
begin
read(nom);
sr_bal := (oc[1] + oc[2] + oc[3] + oc[4])/4;
end;
Приклад. Інформація про успішність учнів зберігається в масиві записів, кожен з який містить прізвище учня й оцінки по чотирьох предметах. Роздрукувати прізвище відмінників.
const n = 10; {кількість учнів у класі}
type
spisok = record
fam : string[20];
oc : array[1..4] of byte;
end;
var
uch : array[1..n] of spisok; i, j, k, sum : integer;
begin
writeln(Уведіть список ‘,n,’ учнів:’);
for i :=1 to n do
begin
writeln(‘прізвище ’,i,’-го учня:’);
readln(uch[i].fam);
for j := 1 to 4 do
begin
writeln(j,’-я оцінка:’);
readln(uch[i].oc[j]);
end;
end;
for i := 1 to n do
begin
with uch[i] do
begin
for j := 1 to 4 do sum := sum + oc [j];
if sum=20 then
begin
write(‘Відмінник: ‘);
writeln(fam); k := k+1;
end;
end;
end;
if k=0 then writeln(‘Відмінників немає’);
end.
Питання для контролю.
-
Поняття запису в Pascal-і.
-
Звертання до елементів запису.
-
Оголошення запису.
-
Яка роль службових слів Record і End?
-
Що таке поле запису?
-
Як використовується елемент запису в програмі?
-
Які операції можна виконувати над елементами запису?
-
Оператор приєднання, його опис і застосування.