- •Лекція №6 Структурований тип даних
- •Регулярні типи. Масив.
- •Масиви у мові Pascal.
- •Використання одновимірних масивів.
- •Var a:array [1..10] of real;
- •I,n,k:integer;
- •I,n,k,l:integer;
- •Var I,n:integer;
- •Var I, n, k: integer;
- •X, y: array[1..50]of real;
- •Var I, n, k, max, min: integer;
- •X: array[1..50] of integer;
- •Var I, j, n, s: integer;
- •X: array[1..50] of integer;
- •Var I, n, k: integer;
- •Var I, n, k: integer;
- •I: integer;
- •Var a: array [1..10] of integer;
- •Var s,I:integer;
- •Var I:integer;
- •Var I:integer;
- •Var I:word;
- •Контрольні запитання.
Лекція №6 Структурований тип даних
Поняття структурованої величини. Одновимірні масиви. Основні операції над масивами Розв’язання задач з кількісними характеристиками, створення та перетворення масивів.
Об’єм даних, які обробляються на ЕОМ, в більшості випадків дуже великий. Крім того ці дані не є окремими, вони зв’язані між собою якимсь чином. Тому в алгоритмічних мовах програмування вводиться таке поняття, як структуровані данні. Вони можуть складатися не з одного, а з декількох значень. Існують такі структур: масиви, рядки, множини, записи, файли, об’єкти.
Регулярні типи. Масив.
Масиви - сукупність значень однакового типу. Прикладами масивів можуть слугувати :
перелік прізвищ та ініціалів студентів:
Андрєєв В.Г., Бондаренко Р.К., Григор’єв О.Д., Омельченко В.К.
відповідний переліку прізвищ список років народження студентів:
1981 1983 1982 1981
перелік значень аргументів деякої функції
-2.1 -0.4 0.6 0.9 1.6 4.3
Кожне зі значень, з яких складається масив, мають назву його компоненти або елемента. Елементами першого масиву з приведеного прикладу є значення типу даних рядки, другого - цілі, третього - дійсні. Обмежень на тип елементів масиву звичайно не накладається. Це може бути будь-який з вбудованих або додатково визначений тип даних (простих чи структурованих).
Масив даних в програмі розглядається як змінна структурованого регулярного типу (така, що складається з наперед заданої кінцевої кількості елементів). Масиву присвоюється ім’я, за допомогою якого можна вказувати як на масив в цілому, так і на будь-який його елемент. Ідентифікатори масивів записують згідно загальним правилам. Приведеним у прикладі масивам можна присвоїти такі назви: prizv,r_n,X.
Щоб вказати в програмі на елемент масиву, треба крім імені масиву позначити індекс елементу, який в найпростішому випадку дорівнює порядковому номеру цього елемента в масиві. Значення індексу звичайно записується в квадратних дужках. Таким чином, елементи масивів prizv,r_n,Xвідповідають наступним позначенням:
prizv[1] prizv[2] prizv[3] prizv[4]
r_n[1] r_n[2] r_n[3] r_n[4]
X[1] X[2] X[3] X[4] X[5] X[6]
З

начення
Андрєєв В.Г. є елементомprizv[1]
масиву prizv,
рік народження Омельченко В.К - елемент
r_n[4]
з масиву r_n,
а значення 0.9 масиву X
-елементом масиву X[5].
Індекс може бути константою, змінною або виразом. В деяких алгоритмічних мовах допускається дійсний тип індексів елементів масиву, значення яких для визначення номеру відповідного елемента масиву округляються до цілих.В різних алгоритмічних мовах інтервал значень індексу починається з одиниці (BASIC), з нуля (C). В мові Pascalінтервал значень індексу визначається через обмежений тип на базі будь-якого з порядкових типів (‘a’..’h’, -4..7, 1..10).
Для розміщення масиву в пам’яті ЕОМ відводиться поле пам’яті, розмір якого визначається типом, довжиною та кількістю елементів масиву.
ділянка
пам’яті, яка відводиться
під масив
![]()

Тип та довжина елементів масиву вказуються засобами явного чи неявного подання типу. Кількість елементів задається при описуванні масиву через вказування інтервалу можливих значень індексу його елементів та не змінюється в процесі роботи програми. Наведемо приклад описування масиву xдійсних чисел та масиву зцілих чисел у різних мовах програмування:
мова програмування Pascal
var x: array [1..20] of real;
a: array [1..50] of integer;
мова програмуванняBasic
dimx(20),a%(50)
мова програмування Fortran
dimension x(20)
integer a(50)
мова програмуванняC
floatx[20];
inta[50].
Розглянуті вище приклади є прикладами одновимірних масивів, для вказівки на елемент якого використовується один індекс. Структурі одновимірного масиву в документах, які використовуються людиною в повсякденній діяльності, відповідають різні списки, переліки і т. п.
Поряд з списками при розв’язанні практичних задач часто треба мати справу з різними таблицями даних, математичним еквівалентом яких є матриці. Як відомо з математики, матрицею називають систему чисел, які утворюють прямокутну таблицю з mрядків та nстовпчиків:

Матриця є прикладом двовимірного масиву даних, для вказівки на кожний елемент якого необхідно вказати два індекси: номер рядка та номер стовпчика. В програмах при описуванні розмірності двовимірного масиву в дужках вказують межі можливої зміни кожного з двох індексів a[1..2,1..4]. Елементи двовимірного масиву позначаються ім’ям масиву, доповненим двома індексами, що вказуються в дужках та розділеними комою. Наприклад, a[1,3],a[i,j].
При виконанні інженерних та математичних розрахунків часто використовуються змінні більш ніж з двома індексами. Для розв’язання задач на ЕОМ такі змінні подаються як елементи відповідно трьох, чотирьох вимірних масивів і т.д.
Опис масиву у вигляді багатомірної структури виконується тільки з міркування зручності програмування як результат прагнення найбільш точно відтворити в програмі об’єктивно існуючі зв’язки між елементами даних задачі, що розв’язується. Як одновимірні, так і багатовимірні масиви зберігаються в пам’яті ЕОМ у вигляді лінійної послідовності своїх елементів і принципової різниці між одновимірним та багатовимірним масивами нема. Але порядок, в якому запам’ятовуються елементи багатовимірних масивів, важливо собі уявляти. Необхідність цього особливо очевидна для правильної реалізації операцій введення - виведення. В більшості алгоритмічних мов реалізується загальне правило, яке встановлює порядок зберігання в пам’яті елементів масивів: елементи багатовимірних масивів зберігаються в пам’яті ЕОМ в послідовності, відповідної більш частої зміни молодших індексів. Молодшими індексами вважають ті, які розташовані лівіше. Для двовимірного масиву це правило формулюється таким чином: елементи двовимірного масиву зберігаються «по стовпчикам» (спочатку елементи першого стовпчика -a[1,1], a[2,1], a[3,1], ..., a[1,2], a[2,2], a[3,2], ... . Але при створенні програми краще розглядати масив так, як вам зручніше. Наприклад, найчастіше працюють з масивом по рядкам.
Іноді використовується таке поняття, як перетин масиву, який дозволяє реалізувати звертання за ім’ям не тільки до масиву в цілому, чи будь - якого елементу, але і до сукупності елементів (всі елементи рядка чи всі елементи стовпчика).
До елементів масивів застосовуються будь-які операції обробки, дозволені в алгоритмічній мові, яка використовується для елементарних даних відповідного типу. При цьому обробка масивів виконується по елементам. Істотно дозволяє підвищити ефективність програмування використання дозволених в деяких мовах «масивні вирази», в яких операції арифметичні, логічні, відношення застосовуються не тільки до елементарних типів даних, але і до масивів. Якщо, наприклад, A,B,C є структурно-подібні масиви (масиви, які мають однакову розмірність, тип індексів та елементів), то можна записати вирази:
A+B
B*B-C
Результатом обчислення таких виразів є структурно-подібний масив, елементи якого дорівнюють сумі, добутку, різниці відповідних елементів масивів - операндів. Застосування таких масивних виразів підвищує ефективність програмування для задач, в яких використовуються матриці: розв’язання систем рівнянь, аналіз електричних ланцюгів і т. і. На жаль, мови Pascal та C (C++) не підтримують таких операцій.
