русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Масиви даних.


Дата додавання: 2014-11-27; переглядів: 998.


В Турбо Паскалі масив(ряд, array) – це механізм, який дозволяє дуже просто розв’язати проблему означення великої кількості однорідних об’єктів. Зникає потреба багаторазового перевизначення єдиної змінної або, навпаки, введення великої кількості різних за іменами змінних. Застосування ряду, змінної типу array ,дає змогу природним чиномпосилатися на “перше”, “друге” і т.д. її значення. Кожному елементу ряду відповідає окрема комірка пам’яті ( в разі числових елементів ), звертання до котрої відбувається так само, як і у випадку звичайної ( простої ) змінної.

Масиви, регулярні типи даних, уявляють із себе упорядковану послідовність змінних одного типу. Елементи масиву є його компонентами. Тип компонентів називається базовим. Кожний компонент має ім’я , яке є одночасно ім’ям всього масиву. Числа, що визначають місце елементів в масиві, називаються індексами, а самі елементи –індексованими змінними або змінними з індексами. Індекси заключаються в квадратні дужки, щоб відрізнити від інших синтаксичних конструкцій в дужках. Формально елемент ряду розглядається як змінна, що дає змогу уживати його в будь-якому контексті, де припустимі прості змінні. Наприклад,

Y[3]:=5;Y[4]:=Y[2]-1;q:=2*Y[1] ;

Потужною властивістю індексованих змінних є можливість мати індекс, який сам є змінною:

I:=4; Y[I]:=7;

Масиви – упорядкована структура однотипних даних , що зберігає їх послідовно. Масив обов’язково має розміри, які визначають, скільки елементів зберігається в структурі. До будь-якого елемента в масиві можна добратися за його індексом.

Тип “масив” визначається конструкцією :

TYPE

<ім’я > = ARRAY [<діапазон>] OF <тип елементів>;

<ім’я> – це ідентифікатор нового типу–масиву, що визначає службове слово ARRAY;

<діапазон> указує значення індексів першого і останнього елементів структури;

<тип елементів> визначає базовий тип масиву, а значить і кожного елемента.

Якщо в програмі використовується лише один масив, що належить до визначеного типу, то краще оголосити його в блоці VAR.

VAR

<ім’я> : ARRAY [<діапазон>] OF < тип елементів>;

Таким чином, оголошення

TYPE A= ARRAY [1..20] OF integer;

VAR Z: A;

та

VAR Z: ARRAY [1..20] OF integer;

за наслідками для програми ідентичні: оголошується масив цілого типу з ім’ям Z, що містить 20 елементів. Однак, перший варіант дозволяє використовувати в програмі без оголошення типу цілочислові масиви із 20 елементів з іншими іменами, на відміну від другого варіанта, де для інших масивів необхідні свої оголошення такого ж виду. Оголошення резервує для масиву Z 20 комірок пам’яті, хоча використовувати всі 20 елементів не обов’язково. В той же час більш ніж 20 елементів в масиві Z використати не можливо . Крім того, під час виконання програми індекси, що визначають елементи масиву Z не повинні виходити за обумовлені межі.

Загальна кількість елементів задається індексними межами – нижньою та верхньою. У випадку цілочислових меж нижня не обов’язково повинна бути рівною 1. Наприклад, якщо масив містить данні за роки з 1991 по 2000, для їх зображення можна використовувати індекси в діапазоні [1991..2000] .

Використання цілочислових індексів не є обов’язковим. В більш загальному випадку індекси масиву можуть бути перелічуваного типу, тобто будь-якого простого типу , крім дійсного. Елемент масиву може бути індексований виразом при умові, що обчислення цього виразу дає результат, що сумісний з оголошеним індексним типом. На практиці частіше за все застосовують цілочислові індекси та відповідні вирази. Прикладом масиву з індексами перелічуваного типу може служити екзаменаційна відомість. Список студентів оголошується як перелічуваний тип PRIZV, тоді достатньо оголошення:

TYPE PRIZV=(ANDREEV,IVASHKO,VOVK,SOKOL,SHULIGA);

VAR OCINKA: ARRAY [ PRIZV ] OF integer;

Перший елемент масиву OCINKA матиме індекс ANDREEV –

OCINKA[ ANDREEV ]; другий елемент: OCINKA[IVASHKO] і т.д.

Один і той же індекс може бути одночасно використаний стосовно більш ніж одного масиву. Такі масиви називаються паралельними. Наприклад, в одному масиві зберігаються прізвища студентів, а в другому їх оцінки. Паралелізм узгодженого зберігання різної за природою інформації має логічний характер і проявляється у відповідності пар елементів масиву з однаковими індексами.

Приклад. Скласти програму для друку відомості результатів іспиту.

Фрагменти програми, що відповідають завданню :

PROGRAM PARA;

CONST N=25;

VAR I: INTEGER;

PRIZV: ARRAY [1..30] OF STRING[20];

OCINKA: ARRAY [1..30] OF INTEGER;

……………………………………………………..

BEGIN

…………………………………………………

FOR I := 1 TO N DO WRITELN ( PRIZV[I], OCINKA[I] ) ;

………………………………………………………………..

END.

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

Масиви мають ту незручність, що індексні межі треба визначати точно. Це можна обійти завданням меж за допомогою констант на початку програми та змінюючи їх при потребі. Тоді оголошення масиву буде мати цю константу як верхню індексну межу. В попередньому прикладі тоді можна записати і так:

PRIZV:ARRAY [1..N] OF STRING[20];

OCINKA: ARRAY [1..N] OF INTEGER;

Масив PRIZV в обох наведених фрагментах матиме N елементів рядкового типу, кожний з яких може складатися із послідовності літер довжиною не більше 20 символів.

Приклад. Знайти найбільший та найменший елементи масиву.

PROGRAM MINMAX ;

CONST N=50 ;

VAR X : ARRAY [1..N] OF REAL;

MAX , MIN : REAL ;

I :I NTEGER;

BEGIN

WRITELN (‘ВВЕСТИ МАСИВ’);

FOR I:=1 TO N DO

BEGIN WRITE ( I ) ; READ( X[I] ) ; WRITELN END ;

MAX := X[1] ; MIN:= X[1];

FOR I:=2 TO N DO

BEGIN IF X[I] > MAX THEN MAX := X[I] ;

IF X[I] < MIN THEN MIN := X[I] END ;

WRITELN (‘ MAX = ‘ , MAX , ‘ MIN = ‘ , MIN )

END.

При обробці масивів слід використовувати в програмах оператор циклу з параметром. Можна навіть сказати, що це головне призначення оператора циклу конструкції FOR… Введення масиву в наведеній програмі організовано таким чином : на екрані з’являється чергове значення індексу I , курсор не переходить на наступний рядок і поряд з’явиться значення X[I] , яке буде набране на клавіатурі. Після цього курсор за допомогою оператора WRITELN без параметрів буде переведено на наступний рядок.


<== попередня лекція | наступна лекція ==>
Скалярні типи даних. | Двовимірні масиви.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн