- •Тема 1. Основи алгоритмізації процесів оброблення інформації
- •Алгоритм і його властивості
- •Схеми алгоритмів
- •Графічне зображення різних видів обчислювальних процесів
- •Тема 2. Інстрментальні мови та системи програмування
- •Покоління та класифікація мов програмування
- •Компоненти інструментальних систем
- •Історія розвитку мови програмування Паскаль
- •Інтегрована інструментальна оболонка Турбо Паскаль 7.0
- •Етапи створення програми
- •Тема 3. Мова програмування Турбо Паскаль 7.0
- •Алфавіт мови Турбо Паскаль 7.0
- •Структура Паскаль-програми
- •Система типів даних мови програмування Паскаль
- •Тема 4. Лінійні програми в мові Паскаль
- •Оператор присвоєння
- •Оператор введення
- •Оператор виведення
- •Операції та вирази в мові паскаль
- •Стандартні функції мови Паскаль
- •Тема 5. Умовний оператор в мові паскаль
- •Умовний оператор
- •Оператор варіанту
- •Тема 6. Оператори Циклу в мові паскаль
- •Оператор безумовного переходу
- •Оператор_циклу «з передумовою»
- •Оператори циклу « з післяумовою»
- •Оператор циклу «з параметром»
- •Тема 7. Обробка масивів у Турбо Паскалі
- •Одновимірні масиви
- •Багатовимірні масиви
- •Тема 8. Підпрограми в мові Турбо Паскаль
- •Процедури
- •Функції
- •Тема 8. Стандартні засоби обробки файлів
- •Обробка типізованих файлів
- •Послідовний та прямий доступ до файлу
- •Робота з текстовими файлами
- •Обробка безтипових файлів
- •Тема 9. Робота з рядковими типами даних в середовищі Турбо Паскаль
- •Тема 10. Множини в мові паскаль
- •Тема 11. Записи в мові Паскаль
- •Тема 12. Комп'ютерна графіка
- •ЛАБОРАТОРНИЙ ПРАКТИКУМ
- •Лабораторна робота №1
- •Лабораторна робота №9
- •ДОВІДНИК
- •Типові помилки компіляції та виконання програми
- •Процедури модуля Graph
- •функції модуля Graph
- •Кольори модуля Graph
«Turbo Pascal » |
Значенко О.П. |
ТЕМА 11. ЗАПИСИ В МОВІ ПАСКАЛЬ
В практиці програмування приходиться мати справу з даними, які складаються з інших даних. Наприклад відомості про учнів: ім’я, прізвище, по-батькові, число, місяць та пік народження, домашню адресу та іншу інформації. Для представлення такої інформації в мові Паскаль використовується тип запис. За допомогою такого запису представляється певна структура статистичних даних, яку можна розглядати як карточку в каталозі. На кожній карточці в каталозі записана певна інформація. Ця інформація неоднорідна її окремі частини мають різний зміст, оформлюються різними способами та зберігаються на окремих полях карточки.
Тип даних RECORD надає можливість програмісту можливість об’єднати в одну пов’язану структуру різні по типу та змісту елементи (поля).
1. Запис (record) — це структурований тип даних, призначений для зберігання в оперативній пам'яті та опрацювання даних, що складаються з полів - даних різних типів. Запис описують у розділі type (можна і у розділі var) за допомогою такої конструкції:
type <ім’я запису>=record
<ім’я поля 1> : <тип поля 1>;
<ім’я поля п> : <тип поля п>; end;
Приклад.
Type Book = record autor, title : string; year: integer;
End;
Var B:Book;
Кожне поле в запису можна вважати звичайною змінною, якій можна присвоїти ім’я, вести чи вивести її значення. Звертатися до поля необхідно по складеному імені:
59
«Turbo Pascal » |
Значенко О.П. |
<Ім’я _запису> . <ім’я _поля>
З іншого боку запис можна розглядати у програмі, як єдине ціле тоді присвоєння B.autor := ‘Пушкін А. С.’; визначить автора книги В , а її назву дасть оператор присвоєння B.titel:=’КАЗКИ’; а B.year:=1985;
дасть рік видання.
Звернення до запису в цілому відбудеться по його імені. Якщо два записи однакові (наприклад var А, B : Book; )то до них можна застосувати оператор присвоєння.(А:=В)
Записи можуть бути елементами масивів. Окремі поля записів також можуть бути записами. За рахунок цього в Паскалі е можливість створювати складні структури даних
Приклад. |
|
Const stud=20; |
|
type |
|
grupa=record |
{Оголошуємо запис |
grupa} |
|
name, surname: string[20]; |
{Описуємо відповідні поля} |
birthday: record |
|
year: 1975..1985; |
|
month: 1..12; |
|
day: 1..31; |
|
end; |
|
sball: real |
|
end; |
|
Var |
|
Ved: array[1..stud] of grupa; |
|
|
|
Тут змінна Ved– це масив записів. Кожний запис складається з п’яти полів, причому два остання поля самі е записами. Звертатися до елементів таких складних структур необхідно за складеним іменам
Приклад.
Ved [5]. name:=’Elena’; Writeln(ved[15]. birthday.year)
Так як писати складені імена – доволі складно і цей процес може супроводжуватися помилками, тому для скорочення тексту програми та
60
«Turbo Pascal » Значенко О.П.
покращення її наочності у Паскалі використовується оператор (команда) приєднання.
Команда приєднання (with)
Команда приєднання дає змогу використовувати у програми лише імена полів. Загальний вигляд команди with такий:
with <ім'я запису> do <команда>;
У цій команді після слова with зазначають ім'я змінної типу запис,
ав команді пишуть лише назви полів відповідного запису.
Приклад
with grupa do begin
name :='Шевченко'; surname:='Ігор'; with birthday do begin
year:=1980; month: = 12; day:=28;
end;
sball:=4.9
end;
В межах оператора при зверненні до запису, ім’я якого вказано після зарезервованого слова with можна опускати ім’я запису, я звертатися лише до власних імен полів. Ім’я запису в складеному імені поля транслятор добавить сам.
Оператор With корисно використовувати при звертанні до декількох полів запису або при багатократному зверненні до будь-якого поля:
For i:=1 to stud do
With ved [i] ]. birthday do
Begin
Writeln(year);
Writeln(month);
Writeln(day);
End;
61
«Turbo Pascal » |
Значенко О.П. |
Приклад. Використовуючи тип даних масив записів, скласти програму, за допомогою якої можна ввести у пам'ять комп'ютера дані про наявність на складі автомашин і отримати інформацію про марки та рік випуску машин, ціна яких менша, ніж 3000. Нехай запис містить такі поля: марка, рік випуску та ціна машини. Вивести на екран інформацію про всі машини і додатково про ті, ціна яких менша, ніж 3000.
program Avtoprice; uses Crt;
const n=10;
type avto=record marka:string[l5];
year, price:integer; end;
var a1:array[l..n] of avto; i:integer;
begin clrscr;
for i:=l to n do with al[i] do begin
writeln ('Введіть марку машини:'); readln(marka);
writeln('n рік випуску:'); readln(year); writeln(fTa ціну:'); readln(price);
end; writeln;
writeln('Фірма пропонує такі машини:'); for i:=l to n do
with a1[i] do
writeln (marka:15,year:10, ' $',price); writeln;
write('Роздрукуемо інформацію про машини,'); writeln('Ціна яких менша, ніж $3000:');
for i:=l to n do with a1[i] do
if price<3000 then writeln(marka:15,year:10); readln;
end.
62