Паскаль: область дії, модулі, структури, Детальна інформація
Паскаль: область дії, модулі, структури
Компоненти структур можуть мати довільні типи, у тому числі структурні. Наприклад, можна означити тип "відрізок на площині", що задається парою точок – його кінців:
type Segm = record
pe1, pe2 : Point
end;
Компонент змінної-структури, тобто поле, позначається його ім'ям, яке записується після імені змінної та відокремлюється крапкою. Наприклад, якщо змінна pn має тип Point, то її компоненти позначаються pn.x і pn.y.
Вирази такого вигляду прийнято називати селекторами запису, тому що ім'я поля задає його вибір, або селекцію, серед інших полів. Такі вирази використовуються так само, як і імена змінних відповідних типів. Наприклад, якщо є означення
var p1, p2 : Point;
то ми вправі написати p1.x:=1; p1.y:=sqr(p1. x) і т.п.
Якщо поле саме є структурою, то його компоненти позначаються точно так само, через точку після імені поля. Наприклад, дійсні поля змінної sg типу Segm позначаються sg.pe1.x, sg.pe1.y тощо.
Значення змінних-структур можна присвоювати змінним, однотипним із ними. Наприклад, якщо діють означення var a, b : Segm, то можна написати:
a.pe1.x := 1; a.pe1.y := a.pe1.x+1; a.pe2 := a.pe1; b:=a.
Очевидно, що ці оператори задають присвоювання обом відрізкам того самого значення [(1; 2); (1; 2)].
У мові Турбо Паскаль змінні структурних типів можна ініціалізувати. Стала структурного типу записується в дужках і схожа на вираз, що задає тип, тільки замість імен типів указуються значення. Наприклад,
const p1 : Point = ( x : 1; y : 2 );
Як бачимо, поля відокремлюються знаком ";" незалежно від того, як вони відокремлювалися в означенні типу. Аналогічно ініціалізується структура з полями-структурами, наприклад, типу відрізка площини:
const z : Segm = (pe1 : (x : 1; y : 1); pe2 : (x : 2; y : 2));
Тут змінна z ініціалізується як відрізок [(1;1);(2;2)].
Операцій над структурами як цілісними значеннями в мові Паскаль немає. Тому обробка структур описується через обробку їх компонентів із застосуванням операцій базових типів.
Тип значень, що повертаються з функції, не може бути структурним. Проте параметри підпрограм можуть бути довільними структурами. Єдине обмеження в мові Турбо Паскаль – тип параметра в заголовку підпрограми можна задавати лише ім'ям, а не довільним виразом. Таким чином, необхідні типи треба іменувати вище в програмі, до їх використання в заголовках підпрограм.
Всі поля того самого списку означень імен полів повинні мати різні імена. Проте ім'я поля може повторюватися в інших списках або збігатися з ім'ям змінної. Наприклад, допустимі такі означення:
type rectyp = record x : real; z : point end;
var x : rectyp;
Отже, ми маємо засоби для опису множин пар, трійок тощо, складених із компонентів базових типів. Проте
означення типу (у математичному змісті) вимагає задання не тільки елементів множини, але й операцій над ними.
Операції можна реалізувати у вигляді підпрограм, описавши обробку структур через обробку їх компонентів. Означення множин елементів і підпрограми можна зібрати в модулі – утвориться реалізація нестандартного типу елементів. Приклади такої реалізації типів ми розглянемо в наступному підрозділі.
Задачі
6. Означити тип структури з мінімально можливим числом полів для подання:
а) відрізка прямої; б) відрізка площини; в) кола на площині;
г) трикутника на площині; д) прямокутника на площині; е) раціонального дробу;
ж) прямокутника на площині зі сторонами, паралельними координатним осям.
type Segm = record
pe1, pe2 : Point
end;
Компонент змінної-структури, тобто поле, позначається його ім'ям, яке записується після імені змінної та відокремлюється крапкою. Наприклад, якщо змінна pn має тип Point, то її компоненти позначаються pn.x і pn.y.
Вирази такого вигляду прийнято називати селекторами запису, тому що ім'я поля задає його вибір, або селекцію, серед інших полів. Такі вирази використовуються так само, як і імена змінних відповідних типів. Наприклад, якщо є означення
var p1, p2 : Point;
то ми вправі написати p1.x:=1; p1.y:=sqr(p1. x) і т.п.
Якщо поле саме є структурою, то його компоненти позначаються точно так само, через точку після імені поля. Наприклад, дійсні поля змінної sg типу Segm позначаються sg.pe1.x, sg.pe1.y тощо.
Значення змінних-структур можна присвоювати змінним, однотипним із ними. Наприклад, якщо діють означення var a, b : Segm, то можна написати:
a.pe1.x := 1; a.pe1.y := a.pe1.x+1; a.pe2 := a.pe1; b:=a.
Очевидно, що ці оператори задають присвоювання обом відрізкам того самого значення [(1; 2); (1; 2)].
У мові Турбо Паскаль змінні структурних типів можна ініціалізувати. Стала структурного типу записується в дужках і схожа на вираз, що задає тип, тільки замість імен типів указуються значення. Наприклад,
const p1 : Point = ( x : 1; y : 2 );
Як бачимо, поля відокремлюються знаком ";" незалежно від того, як вони відокремлювалися в означенні типу. Аналогічно ініціалізується структура з полями-структурами, наприклад, типу відрізка площини:
const z : Segm = (pe1 : (x : 1; y : 1); pe2 : (x : 2; y : 2));
Тут змінна z ініціалізується як відрізок [(1;1);(2;2)].
Операцій над структурами як цілісними значеннями в мові Паскаль немає. Тому обробка структур описується через обробку їх компонентів із застосуванням операцій базових типів.
Тип значень, що повертаються з функції, не може бути структурним. Проте параметри підпрограм можуть бути довільними структурами. Єдине обмеження в мові Турбо Паскаль – тип параметра в заголовку підпрограми можна задавати лише ім'ям, а не довільним виразом. Таким чином, необхідні типи треба іменувати вище в програмі, до їх використання в заголовках підпрограм.
Всі поля того самого списку означень імен полів повинні мати різні імена. Проте ім'я поля може повторюватися в інших списках або збігатися з ім'ям змінної. Наприклад, допустимі такі означення:
type rectyp = record x : real; z : point end;
var x : rectyp;
Отже, ми маємо засоби для опису множин пар, трійок тощо, складених із компонентів базових типів. Проте
означення типу (у математичному змісті) вимагає задання не тільки елементів множини, але й операцій над ними.
Операції можна реалізувати у вигляді підпрограм, описавши обробку структур через обробку їх компонентів. Означення множин елементів і підпрограми можна зібрати в модулі – утвориться реалізація нестандартного типу елементів. Приклади такої реалізації типів ми розглянемо в наступному підрозділі.
Задачі
6. Означити тип структури з мінімально можливим числом полів для подання:
а) відрізка прямої; б) відрізка площини; в) кола на площині;
г) трикутника на площині; д) прямокутника на площині; е) раціонального дробу;
ж) прямокутника на площині зі сторонами, паралельними координатним осям.
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021