Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
самост1_1new_druk!!!.doc
Скачиваний:
22
Добавлен:
13.11.2019
Размер:
1.61 Mб
Скачать

Тема: Табличні величини. Масиви даних.

Багатовимірні масиви.

Масив (array) – це скінчений набір елементів одного (базового) типу, які зберігаються в послідовно розташованих комірках оперативної пам’яті і мають спільну назву.

Базовим називається масив, що є сукупністю зв’язаних даних, які складаються з фіксованої кількості елементів одного типу. Для означення масиву досить вказати його базовий тип , а також кількість елементів масиву і метод їх нумерації. Можливим є доступ до окремих елементів масиву – для цього достатньо вказати ім’я масиву і номер (індекс) потрібного елемента. В Turbo Pascal елементи масиву можуть представляти собою значення не тільки простих, але і структурованих типів. Допускається, наприклад, існування масивів елементами яких є також масиви.

Опис подібного масиву виглядає так:

al=array [1..5] of array [1..4] of integer;

Цей масив можна представити в вигляді двовимірної матриці з 20 елементами [4 на 5].

Багатовимірні масиви широко використовують в математиці та статистиці.

У математиці поняттю одновимірного масиву відповідає поняття вектор, двовимірного – матриці. Розрізняють одно- та багатовимірні масиви.

Загальний вигляд конструкції опису типу масиву такий:

аrray [<розмір>] of < назва базового типу >;

Розмір (кількість елементів) масиву найчастіше задають у вигляді діапазону або назви деякого перерахованого типу даних.

Описати масив можна у вигляді опису типів type, у розділі констант const, або у розділі оголошення змінних var. Назви типів масивів і змінних масивів придумує користувач.

Двовимірний масив даних – це таблиця, що складається з декількох рядків. Елементи двовимірного масиву (дані у вигляді таблиці) визначаються іменем масиву та двома індексами: перший індекс визначає номер рядка , а другий – номер стовпця, на перетині яких стоїть елемент, наприклад р[1,2]. Так як елементи масиву розміщені в пам’яті впорядковано в відповідності з номерами-індексами, програмісту потрібно уважно віднестись до позначення і зміни індексів (в циклах). Обробка таких дво-, або багатовимірних масивів ведеться, як правило, з використанням вкладених циклів FOR…TO…DO.

Питання для самоконтролю:

  1. Що таке масив?

  2. Який масив називається базовим?

  3. Яким чином можна одержати доступ до елементів масиву?

  4. Як поділяються масиви даних?

  5. Де застосовуються багатовимірні масиви?

  6. Який загальний вигляд конструкції опису масивів?

  7. В яких розділах описують масиви?

  8. Які команди циклу використовують для опрацювання елементів масиву?

Тема: Рядкові типи.

Рядкові і символьні типи.

Всі рядкові типи і порядковий тип char сумісні між собою. Це означає, що у всіх тих місцях, де допустимо використання рядкового виразу, допустимо звертання до типу char, і навпаки. Необхідно тільки, щоб при присвоюванні рядкового виразу змінній типу char довжина послідовності символів була 1.

Доступ до окремих символів рядкової змінної можна одержати за допомогою індексування. За визначення індексування можна прийняти еквівалентність

S[i] = Copy(S, і, 1)

Наприклад, S[1] означає перший символ рядка S, S[2] - другий і так далі. Таке звертання коректне лише за умови, що 1<= і <= Length(S). Якщо індекс і приймає значення поза зазначеним діапазоном, то це спричинить доступ до сусідніх байтів оперативної пам'яті, у яких зберігаються зовсім інші даю.

Відкриті рядкові параметри.

Щоб передавати у підпрограму рядкові параметри різних розмірів, в описах цих процедур або функцій використовують відкриті рядкові параметри. Відкриті рядкові параметри можна описувати за допомогою ідентифікатора OpenString. Ідентифікатор OpenString описується в модулі System. Він означає спеціальний рядковий тип, що може використовуватися тільки в описі рядкових параметрів заголовка процедури чи функції. Для відкритого рядкового параметра фактичний параметр може бути змінною будь-якого рядкового типу. У процедурі чи функції атрибут розміру (максимальна довжина) формального параметра буде таким самим, що й у фактичного параметра. Відкриті рядкові параметри трактуються як параметри-змінні рядкового типу, з тією відмінністю, що їх не можна передавати, як звичайні змінні, іншим процедурам чи функціям. Однак, їх можна знову передати як відкриті рядкові параметри.

До відкритих рядкових параметрів також можна використовувати стандартні функції Low, High і SizeOf. При цьому функція Low повертає значеня 0, функція Нigh повертає максимальну довжину фактичного параметра, а функція SizeOf повертає розмір фактичного рядкового параметра в байтах.

Приклад. Процедура AssignStr присвоює рядковій змінній значення ‘0123456789АВСDЕF’. Якщо довжина аргументу менша за довжину змінної, то присвоюється тільки частина цього значення. В описі процедури AssignStr параметр 8 - це відкритий рядковий параметр.

procedure AssignStr(var S: OpenString);

begin

S:= '0123456789ABCDEF';

end;

Через те, що S - це відкритий рядковий параметр, процедура AssignStr може передавати у викликаючу програму змінні будь-якого рядкового типу:

var S1: string[10];

S2: string[l5];

begin

AssignStr(S1); { Результат: S1 := '0123456789' }

AssignStr(S2); { Результат: S2 := '0123456789АВСDЕ' }

end;

Питання для самоконтролю:

  1. Що означає суміжні типи?

  2. За допомогою чого можна одержати доступ до окремих символів рядкової змінної?

  3. Для чого використовують відкриті рядкові параметри?

  4. Як описують відкриті рядкові параметри?

  5. В якому модулі описаний ідентифікатор ОpenString?

  6. Які стандартні функції можна використовувати до відкритих рядкових парметрів?