Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
57
Добавлен:
07.02.2016
Размер:
116.22 Кб
Скачать

Лекція №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++) не підтримують таких операцій.

Соседние файлы в папке конспект лекцій 1 паск