Масиви
Об'єкти дозволяють зберігати дані з рядковими ключами. Це чудово.
Але досить часто ми розуміємо, що нам потрібна впорядкована колекція даних, у яких присутні 1-й, 2-й, 3-й елементи і т.д. Наприклад, вона знадобиться нам для зберігання списку чогось: користувачів, товарів, елементів HTML тощо.
І тут використовувати об'єкт незручно, оскільки він надає методів управління порядком елементів. Ми не можемо вставити нову властивість «між» вже існуючими. Об'єкти просто не призначені для цього.
Для зберігання впорядкованих колекцій існує особлива структура даних, яка називається масив Array .
Оголошення
Існує два варіанти синтаксису для створення порожнього масиву:
let arr = новий Array(); let arr = [];
Практично завжди використовується другий варіант синтаксису. У дужках ми можемо вказати початкові значення елементів:
let fruits = ["Яблуко", "Апельсин", "Слива"];
Елементи масиву нумеруються, починаючи з нуля.
Ми можемо отримати елемент, вказавши його номер у квадратних дужках:
let fruits = ["Яблуко", "Апельсин", "Слива"]; alert( fruits[0] ); // Яблуко alert( fruits[1] ); // Апельсин alert( fruits[2] ); // Слива
Ми можемо замінити елемент:
fruits[2] = 'Груша'; // тепер ["Яблуко", "Апельсин", "Груша"]
…Або додати новий до існуючого масиву:
fruits[3] = 'Лимон'; // тепер ["Яблуко", "Апельсин", "Груша", "Лимон"]
Загальна кількість елементів масиву міститься у його властивості length :
let fruits = ["Яблуко", "Апельсин", "Слива"]; alert( fruits.length ); // 3
Вивести масив цілком можна за допомогою alert.
let fruits = ["Яблуко", "Апельсин", "Слива"]; alert (fruts); // Яблуко, Апельсин, Слива
У масиві можуть зберігатися елементи будь-якого типу.
// різні типи значень let arr = [ 'Яблуко', < name: 'Джон' >, true, function() < alert('привіт'); >]; // Отримати елемент з індексом 1 (об'єкт) і потім показати його властивість alert(arr[1].name); // Джон // одержати елемент із індексом 3 (функція) і здійснити її arr[3](); // привіт
Список елементів масиву, як і список властивостей об'єкта, може закінчуватися комою:
let fruits = ["Яблуко", "Апельсин", "Слива",];
«Висяча кома» спрощує процес додавання/видалення елементів, оскільки всі рядки стають ідентичними.
Отримання останніх елементів за допомогою at
Ця можливість була додана в мову нещодавно. У старих браузерах може знадобитися поліфіл.Припустимо, нам потрібний останній елемент масиву.
Деякі мови програмування дозволяють використовувати негативні індекси для тієї ж мети якось так: fruits[-1] .
Однак у JavaScript такий запис не спрацює. Її результатом буде undefined, оскільки індекс у квадратних дужках розуміється буквально.
Ми можемо явно обчислити індекс останнього елемента, а потім отримати доступ до нього ось так: fruits[fruits.length - 1] .
let fruits = ["Apple", "Orange", "Plum"]; alert (fruits [fruits.length-1]); // Plum
Трохи громіздко, чи не так? Нам треба двічі написати ім'я змінної.
На щастя, є коротший синтаксис: fruits.at(-1) :
let fruits = ["Apple", "Orange", "Plum"]; // те саме, як і fruits[fruits.length-1] alert( fruits.at(-1) ); // Plum
Іншими словами, arr.at(i) :
- це рівно те саме, що й arr[i] , якщо i >= 0 .
- для негативних значень i він відступає від кінця масиву.
Методи pop/push, shift/unshift
Черга – один із найпоширеніших варіантів застосування масиву.У галузі комп'ютерних наук так називається впорядкована колекція елементів, що підтримує два види операцій:
- push додає елемент до кінця.
- shift видаляє елемент спочатку, зрушуючи чергу, так що другий елемент стає першим.
Масиви підтримують обидві операції.
Насправді необхідність у цьому виникає дуже часто. Наприклад, черга повідомлень, які потрібно показати на екрані.
Існує й інший варіант застосування масивів – структура даних, звана стек.
Вона підтримує два види операцій:
Таким чином, нові елементи завжди додаються або видаляються з кінця.
Прикладом стека зазвичай служить колода карт: нові карти кладуться нагору і теж беруться зверху:
Масиви JavaScript можуть працювати і як черга, і як стек. Ми можемо додавати/видаляти елементи як на початок, так і в кінець масиву.
У комп'ютерних науках структура даних, що робить це можливим, називається двостороння черга.
Методи, що працюють з кінцем масиву:
Видаляє останній елемент з масиву та повертає його:
let fruits = ["Яблуко", "Апельсин", "Груша"]; alert( fruits.pop() ); // видаляємо " Груша " і виводимо його alert( fruits ); // Яблуко, Апельсин
І fruits.pop() і fruits.at(-1) повертають останній елемент масиву, але fruits.pop() також змінює масив, видаляючи його.
Додає елемент до кінця масиву:
let fruits = ["Яблуко", "Апельсин"]; fruits.push("Груша"); alert (fruts); // Яблуко, Апельсин, Груша
Виклик fruits.push(. ) рівнозначний fruits[fruits.length] = . .
Методи, що працюють із початком масиву:
Видаляє з масиву перший елемент і повертає його:
let fruits = ["Яблуко", "Апельсин", "Груша"]; alert( fruits.shift() ); // Видаляємо яблуко і виводимо його alert (fruits); // Апельсин, Груша
Додає елемент на початок масиву:
let fruits = ["Апельсин", "Груша"]; fruits.unshift('Яблуко'); alert (fruts); // Яблуко, Апельсин, Груша
Методи push і unshift можуть додавати відразу кілька елементів:
let fruits = ["Яблуко"]; fruits.push("Апельсин", "Груша"); fruits.unshift("Ананас", "Лимон"); // [ " Ананас " , " Лимон " , " Яблуко " , " Апельсин " , " Груша " ] alert( fruits );
Внутрішній пристрій масиву
Масив – це особливий підвид об'єктів. Квадратні дужки, що використовуються для того, щоб отримати доступ до властивості arr[0] - це по суті звичайний синтаксис доступу по ключу, як obj[key], де в ролі obj у нас arr, а як ключ - числовий індекс.
Масиви розширюють об'єкти, оскільки передбачають спеціальні методи роботи з упорядкованими колекціями даних, і навіть властивість length . Але в основі все одно лежить об'єкт.
Слід пам'ятати, що JavaScript існує 8 основних типів даних. Масив є об'єктом і, отже, поводиться як об'єкт.
Наприклад, копіюється за посиланням:
let fruits = ["Банан"] let arr = fruits; // копіюється за посиланням (дві змінні посилаються однією і той самий масив) alert( arr === fruits ); // true arr.push("Груша"); // масив змінюється на засланні alert( fruits ); // Банан, Груша – тепер два елементи
…Але те, що справді робить масиви особливими – це їхня внутрішня вистава. Двигун JavaScript намагається зберігати елементи масиву в безперервній області пам'яті, один за одним, так як це показано на ілюстраціях до цього розділу. Існують інші способи оптимізації, завдяки яким масиви працюють дуже швидко.
Але вони втратить ефективність, якщо ми перестанемо працювати з масивом як із «упорядкованою колекцією даних» і почнемо використовувати його як звичайний об'єкт.
Наприклад, технічно ми можемо зробити таке:
let fruits = []; // Створюємо масив fruits[99999] = 5; // Створюємо властивість з індексом, набагато перевищує довжину масиву fruits.age = 25; // створюємо властивість із довільним ім'ям
Це можливо тому, що в основі масиву лежить об'єкт. Ми можемо привласнити йому будь-які властивості.
Але двигун зрозуміє, що ми працюємо з масивом, як зі звичайним об'єктом. Способи оптимізації, які використовуються для масивів, у цьому випадку не підходять, тому вони будуть відключені і ніякої вигоди не принесуть.
Варіанти неправильного застосування масиву:
- Додавання нечислової якості, наприклад: arr.test = 5 .
- Створення "дір", наприклад: додавання arr[0], потім arr[1000] (між ними нічого немає).
- Заповнення масиву у зворотному порядку, наприклад: arr[1000], arr[999] і т.д.
Масив слід вважати особливою структурою, що дозволяє працювати з упорядкованими даними. І тому масиви надають спеціальні методи. Масиви ретельно налаштовані в двигунах JavaScript для роботи з однотипними впорядкованими даними, тому, будь ласка, використовуйте їх саме в таких випадках. Якщо вам потрібні довільні ключі, можливо, краще підійде звичайний об'єкт <> .
Ефективність
Методи push/pop виконуються швидко, а методи shift/unshift – повільно.
Чому працювати з кінцем масиву швидше, ніж із його початком? Давайте подивимося, що відбувається під час виконання:
fruits.shift(); // видаляємо перший елемент із початку
Просто взяти та видалити елемент із номером 0 недостатньо. Потрібно також знову пронумерувати інші елементи.
Операція shift має виконати 3 дії:
- Видалити елемент із індексом 0 .
- Зрушити всі елементи вліво, заново пронумерувати їх, замінивши 1 на 0 2 на 1 і т.д.
- Обновити властивість length.
Чим більше елементів містить масив, тим більше часу знадобиться для того, щоб їх перемістити, більше операцій із пам'яттю.
Те ж саме відбувається з unshift: щоб додати елемент на початок масиву, нам потрібно спочатку зрушити існуючі елементи вправо, збільшуючи їх індекси.
А що ж з push/pop? Їм нічого не потрібно переміщати. Щоб видалити елемент наприкінці масиву, метод pop очищає індекс та зменшує значення length .
Дії під час операції pop :
fruits.pop(); // Видаляємо один елемент з кінця
Метод pop не вимагає переміщення, тому що інші елементи залишаються з тими самими індексами. Саме тому він виконується дуже швидко.
Аналогічно працює метод push.
Перебір елементів
Одним із найстаріших способів перебору елементів масиву є цикл for за цифровими індексами:
let arr = ["Яблуко", "Апельсин", "Груша"]; for (let i = 0; i
Але для масивів можливий інший варіант циклу, for..of :
let fruits = ["Яблуко", "Апельсин", "Слива"]; // проходить за значеннями for (let fruit of fruits)
Цикл for..of не надає доступу до номера поточного елемента, лише до його значення, але в більшості випадків цього достатньо. І це коротше.
Технічно, оскільки масив є об'єктом, можна використовувати варіант for..in :
let arr = ["Яблуко", "Апельсин", "Груша"]; for (let key in arr) <alert(arr[key]); // Яблуко, Апельсин, Груша>
Але насправді це погана ідея. Існують приховані недоліки цього способу:
- Цикл for..in виконує перебір всіх властивостей об'єкта, а не лише цифрових.У браузері та інших програмних середовищах також існують так звані «псевдомасиви» – об'єкти, які виглядають, як масив. Тобто, у них є властивість length та індекси, але вони також можуть мати додаткові нечислові властивості та методи, які нам зазвичай не потрібні. Проте, цикл for..in виведе їх. Тому якщо нам доводиться мати справу з об'єктами, схожими на масив, такі «зайві» властивості можуть стати проблемою.
- Цикл for..in оптимізований під довільні об'єкти, не масиви, і тому в 10-100 разів повільніше. Збільшення швидкості виконання може мати значення лише у разі виникнення вузьких місць. Але ми все ж таки повинні представляти різницю.
Загалом не слід використовувати цикл for..in для масивів.
Небагато про «length»
Властивість length автоматично оновлюється при зміні масиву. Якщо бути точними, це не кількість елементів масиву, а максимальний цифровий індекс плюс один.
Наприклад, єдиний елемент, що має великий індекс, дає більшу довжину:
let fruits = []; fruits[123] = "Яблуко"; alert( fruits.length ); // 124
Зверніть увагу, що зазвичай ми не використовуємо масиви таким чином.
Ще один цікавий факт про якість length – його можна перезаписати.
Якщо ми вручну збільшимо його, нічого цікавого не станеться. Проте, якщо ми зменшимо його, масив стане коротшим. Цей процес необоротний, як ми можемо зрозуміти з прикладу:
let arr = [1, 2, 3, 4, 5]; arr.length = 2; // укорочуємо до двох елементів alert(arr); // [1, 2] arr.length = 5; // Повертаємо length як було alert (arr [3]); // undefined: значення не відновилися
Таким чином, найпростіший спосіб очистити масив – це arr.length = 0; .
new Array()
Існує ще один варіант синтаксису для створення масиву:
let arr = new Array("Яблуко", "Груша", "і тд");
Він рідко застосовується, оскільки квадратні дужки [] коротші. Крім того, він має хитру особливість.
Якщо new Array викликається з одним аргументом, який є числом, він створює масив без елементів, але із заданою довжиною.
Давайте подивимося, як можна надати собі ведмежу послугу:
let arr = новий Array(2); // Чи створиться масив [2]? alert(arr[0]); // undefined! немає елементів. alert(arr.length); // Length 2
Як бачимо, у коді, представленому вище, в new Array(number) все елементи рівні undefined .
Щоб уникнути появи таких несподіваних ситуацій, ми зазвичай використовуємо квадратні дужки, якщо, звичайно, не знаємо точно, що з якоїсь причини потрібен саме Array.
Багатовимірні масиви
Масиви можуть містити елементи, які також є масивами. Це можна використовувати для створення багатовимірних масивів, наприклад, для зберігання матриць:
let matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; alert (matrix [1] [1]); // 5, центральний елемент
toString
Масиви по-своєму реалізують метод toString, який повертає список елементів, розділених комами.
let arr = [1, 2, 3]; alert (arr); // 1,2,3 alert(String(arr) === '1,2,3'); // true
Давайте тепер спробуємо наступне:
Масиви. Основні алгоритми обробки масивів з прикладу мови програмування Pascal
Тема даного реферату «Масиви. Основні алгоритми обробки масивів з прикладу мови програмування Pascal». Актуальність обраної теми зумовлена тим, що масиви дуже широко використовуються при розробці різноманітних додатків. Масиви є поширеним та корисним способом збереження багатьох різних частин пов'язаних даних.Масиви корисні при створенні відсортованих та невідсортованих списків даних, при збереженні таблиць даних та для виконання багатьох інших завдань. З поняттям «масив» доводиться працювати при вирішенні науково-технічних та економічних завдань, що з обробкою сукупностей великої кількості значень.
Масив є зручним способом зберігання кількох пов'язаних елементів даних в єдиному контейнері для більшої зручності та ефективності програмування. Масив дозволяє зберігати та маніпулювати багатьма елементами даних за допомогою єдиної змінної. Крім зменшення загальної кількості різних імен змінних, які необхідно відстежувати, іншою основною перевагою використання масивів є те, що можна використовувати цикли для легкої обробки різних елементів масивів. Поєднуючи масиви та цикли можна написати невелику кількість операторів, які обробляють великий обсяг даних. Виконання тих самих завдань із використанням окремих змінних може вимагати написання сотень операторів.
У зв'язку з усім викладеним вище мета цієї роботи – розглянути основні алгоритми обробки масивів максимально близько до практичного застосування.
1. Визначення та типи масивів
Масив - це безліч однотипних елементів, об'єднаних спільним ім'ям і які займають у комп'ютері певну область пам'яті. Кількість елементів у масиві завжди звісно. У загальному випадку масив - це структурований тип даних, що складається з фіксованого числа елементів, що мають один і той самий тип.
Інакше кажучи можна сказати, що масив є фіксоване кількість упорядкованих однотипних компонент, забезпечених індексами, тобто. є сукупністю кінцевого числа даних одного типу.Як елементи масиву можна використовувати будь-який тип даних, тому цілком правомірне існування масивів записів, масивів покажчиків, масивів рядків, масивів і т.д.
- одновимірними (один рядок – кілька стовпців);
- багатовимірними (кілька рядків – кілька стовпців).
- визначити максимальну розмірність масиву (як правило, цілком достатньо 100 осередків);
- дати можливість користувачеві вказати кількість необхідних осередків (writeln(“Введіть розмірність масиву”);
| i = | Writeln | Readln | Дія | |
| Крок 1 | 1 | Введіть 1 елемент масиву | Mas[1] | Зчитуємо число в 1 осередок |
| Крок 2 | 2 | Введіть 1 елемент масиву | Mas[2] | Зчитуємо число в 2 осередок |
| Крок 3 | 3 | Введіть 1 елемент масиву | Mas[3] | Зчитуємо число в 3 осередок |
| … | … | … | … | … |
| Крок n | n | Введіть n елемент масиву | Mas[n] | Зчитуємо число в останній осередок |
| i = | Random | Mas[i] | Дія | |
| Крок 1 | 1 | Будь-яке число до 100 | Будь-яке число до 100 | Зчитуємо обране число в масив |
| Крок 2 | 2 | Будь-яке число до 100 | Будь-яке число до 100 | Зчитуємо число в 2 осередок |
| Крок 3 | 3 | Будь-яке число до 100 | Будь-яке число до 100 | Зчитуємо число в 3 осередок |
| … | … | … | ||
| Крок n | n | Будь-яке число до 100 | Будь-яке число до 100 | Зчитуємо число в останній осередок |
Примітка: якщо розмірність масиву відома заздалегідь, то чикл for виконується від 1 до певного числа. Наприклад, for i: = 1 to 5 do - перебір 5 осередків масиву. 2.2 Виведення масиву на екран Для виведення масиву необхідно послідовно перебрати всі комірки (компоненти) масиву і вивести значення, що там лежать на екран за допомогою оператора write / writeln . Оператор write виведе значення масиву в рядок Для перебору осередків масиву використовується цикл for , в якому за допомогою лічильника перебираються індекси осередків.Спосіб 1 . Виведення одновимірного масиву розмірністю 3 за допомогою оператора writeln Writeln ( 'Масив'); For i:=1 to 3 do W Масив 1 2 3 riteln(mas[i]); Спосіб 2. Виведення одномірного масиву розмірністю 3 за допомогою оператора write Writeln('Масив:'); For i:=1 to 3 do W Масив 1 2 3 rite(mas[i],’ ‘); Екранне уявлення 2.3 Пошук необхідного елемента в масиві Загальний алгоритм пошуку в масиві певного елемента можна так:
Рисунок 1. Блок-схема пошуку необхідного елемента в масиві Наприклад, Даний одновимірний масив із 7 осередків. Визначити, скільки в ньому кратних чисел 7. Var mas:array[1..7] of integer; i:integer; kol:integer; begin for i:=1 to 7 do begin write('Введіть' ,i, 'елемент'); readln(mas[i]); if (mas[i] mod 7 =0) and (mas[i]<>0) then kol:=kol+1 end; writeln("Кількість чисел кратних 7 -", kol) end. Хід виконання:
| i = | Readln(mas[i]) | Перевірка (mas[i] mod 7 =0) and (mas[i]<>0) | Дія | |
| Крок 1 | 1 | Mas[1]=9 | брехня | Kol=0 |
| Крок 2 | 2 | Mas[2]=-7 | істина | Kol=0+1 |
| Крок 3 | 3 | Mas[3]=0 | брехня | Kol=1 |
| Крок 4 | 4 | Mas[4]=14 | істина | Kol=1+1 |
| Крок 5 | 5 | Mas[5]=5 | брехня | Kol=2 |
| Крок 6 | 6 | Mas[6]=21 | істина | Kol=2+1 |
| Крок 7 | 7 | Mas[7]=-5 | брехня | Kol=3 |
| Виведення результату на екран | ||||
- визначаються змінні (max і min), у яких в результаті виконання алгоритму розмістяться відповідно максимальне та мінімальне значення;
- починається перебір масиву з одночасною перевіркою «чи є проглядається елемент більше максимального або менше мінімального»; якщо умова істинно – значення елемента масиву присвоюється відповідної змінної;
| i = | Дані | Умова | Відповідь | Дія | |
| Крок 1 | 1 | Max = -32000 Min = 32000 Mas [1] = 9 | 9 > -32000 9 < 32000 | істина істина | Max = 9 Min = 9 |
| Крок 2 | 2 | Max = 9 Min = 9 Mas [2] = - 7 | -7 > 9 -7 < 0 | брехня істина | Max = 9 Min = - 7 |
| Крок 3 | 3 | Max = 9 Min = - 7 Mas [3] = 0 | 0 > 9 0 < -7 | брехня брехня | Max = 9 Min = - 7 |
| Крок 4 | 4 | Max = 9 Min = - 7 Mas [4] = - 10 | -10 > 9 - 10 < -7 | брехня істина | Max = 9 Min = - 10 |
2.5 Сортування елементів масиву Існує багато алгоритмів сортування масиву, але найпростішим і зрозумілішим є сортування методом «бульбашка», за якої найлегший елемент «спливає», а найважчий «тоне». Наприклад,
Даний масив Потрібно розмістити ці елементи у порядку зростання, тобто. в результаті роботи програми необхідно отримати масив
При сортуванні методом «бульбашка» порівнюються два сусідні елементи (mas[i] та mas[i+1]). Якщо mas[i] > mas[i+1], відбувається перестановка елементів. Візуально процес сортування можна представити у вигляді: Найважчий елемент «упав»
Рисунок 2. Сортування методом «бульбашка» Таким чином, для організації сортування знадобляться два цикли, які вибудовуються в наступному порядку: (n-розмірність масиву) For j: mas[i] > mas[i+1] then begin t:=mas[i]; mas[i]:=mas[i+1]; mas[i+1]:=t; end; Як видно з прикладу для перестановки елементів масиву потрібна додаткова змінна, яка служить тимчасовим сховищем значення комірки масиву.
Крок 3. 3. Особливості обробки двовимірних масивів Двовимірний масив – структура даних, що у собі прямокутну матрицю. У матриці кожен елемент визначається номером рядка та номером стовпця, на перетині яких він розташований. Для опису двовимірних масивів використовуються ті ж способи, що і для одномірних масивів, але як розмірність масиву задається подвійне значення (Наприклад, [1..10,1..10]).Таким чином, для створення двовимірного цілого масиву розмірністю 5×7 (5 рядків, 7 стовпців) необхідно записати: Спосіб 1 Type mas=array[1..5,1..7] of integer; Спосіб 2 Var mas:array[1..5,1..7] of integer; Для послідовного перебору всіх елементів двовимірного масиву потрібно використовувати т.зв. вкладений цикл: For i:=1 to 5 do <перебор строк="" матрицы="">For j:=1 to 7 do <перебор столбцов="" (ячеек)="" в="" строке="">Тобто. значення індексу рядка (i) збільшиться лише в тому випадку, якщо індекс стовпця (j) дійде до кінцевого значення (у прикладі j = 7). При такій організації перебору елементів масиву процес перебору проходитиме за такою схемою:перебор>
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 31 | 32 | 33 | 34 | 35 | 36 | 37 |
| 41 | 42 | 43 | 44 | 45 | 46 | 47 |
| 51 | 52 | 53 | 54 | 55 | 56 | 57 |
| i = | j = | Умова переходу на наступний рядок j = 7 | Оброблюваний елемент | |
| Крок 1 | 1 | 1 | ні | Mas[1,1] |
| Крок 2 | 1 | 2 | ні | Mas[1,2] |
| Крок 3 | 1 | 3 | ні | Mas[1,3] |
| Крок 4 | 1 | 4 | ні | Mas[1,4] |
| Крок 5 | 1 | 5 | ні | Mas[1,5] |
| Крок 6 | 1 | 6 | ні | Mas[1,6] |
| Крок 7 | 1 | 7 | так | Mas[1,7] |
| Крок 8 | 2 | 1 | ні | Mas[2,1] |
| Крок 9 | 2 | 2 | ні | Mas[2,2] |
| Крок 10 | 2 | 3 | ні | Mas[2,3] |
| … | … | … | … | … |
- діагоналі (головна, побічна);
- елементи, розташовані над та під діагоналями;
- чверті матриці.
| 11 | 12 | 13 | 14 | 15 |
| 21 | 22 | 23 | 24 | 25 |
| 31 | 32 | 33 | 34 | 35 |
| 41 | 42 | 43 | 44 | 45 |
| 51 | 52 | 53 | 54 | 55 |
Тут перша цифра номера елемента позначає номер рядка матриці (i), друга цифра – номер стовпця (j) Для визначення елементів, що входять до будь-якого з перерахованих розділів, існує формула, основними складовими якої є i – номер рядка, j – номер стовпця та N - Розмірність масиву. Наприклад, для визначення елемента з номером 43, розташованого під побічною діагоналлю можна використовувати формулу i+j>N+1 де i=4, j=3, N=5, таким чином, отримуємо 4+3>5+1. 4 .1 Визначення діагоналей масиву Рисунок 4. Діагоналі двовимірного масиву Таким чином, у матриці, представленій у п. 4, елементи з номерами 11, 22, 33, 44 та 55 є елементами головної діагоналі. Елементи із номерами 15, 24, 33, 42, 51 – елементи побічної діагоналі.Розташування елементів, що знаходяться над або під діагоналлю визначається по відношенню до однієї з діагоналей.
i < j i+ji > j i+j>N+1
Малюнок 5. Розташування елементів по відношенню до діагоналів Елементи 12, 13, 14, 15, 23, 24, 25, 34, 35 і 45 розташовані над головною діагоналлю, 21, 31, 32, 41, 42, 43 53, 54 розташовані під головною діагоналлю. Елементи 11, 12, 13, 14, 21, 22, 23, 31, 32 і 41 розташовані над побічною діагоналлю, 25, 34, 35, 43, 44, 45, 54, 53, 54, 55 розташовані під поб. 4.2 Визначення чвертей матриці Щодо обох діагоналей, елемент масиву може бути в одній з чвертей. 12, 13, 14, 23 – елементи першої чверті 25, 34, 35, 45 – елементи другої чверті 43, 52, 53, 54 – елементи третьої чверті 21, 31, 32, 41 – елементи четвертої чверті
Рисунок 6. Визначення чвертей матриці Використовуючи правила, представлені малюнку 6, дуже легко можна програмним шляхом формувати матриці необхідного виду. Наприклад, сформувати матрицю N × N виду:
| 4 | 0 | 0 | 0 | 5 |
| 1 на головній діагоналі – 5; на побічній діагоналі – 4; у І чверті – 0; у II чверті – 2; у III чверті – 3; у IV чверті – 1. | 4 | 0 | 5 | 2 |
| 1 | 1 | 4 | 2 | 2 |
| 1 | 5 | 3 | 4 | 2 |
| 5 | 3 | 3 | 3 | 4 |
- А. Єпанешников, В. Єпанешников Програмування серед Turbo Pascal 7.0 - М.: «Діалог-Міфі», 1998
- Інформатика: Навч. посібник для студ. пед. вузів/А.В. Могильов, Н.І. Пак, Є.К. Хеннер - М.: Изд. Центр "Академія", 2001
- Мизрохи. Turbo Pascal та об'єктно-орієнтоване програмування. - М.: Фінанси та статистика, 1992
- Програмування в Delphi - М: ЗАТ «Видавництво БІНОМ», 2000
- Турбо Паскаль 7.0. Початковий курс Навчальний посібник - М.: «Нолідж», 1998
Схожі сторінки:
Мова програмування Delphi (Object Pascal)
. Мова програмування Delphi (Object Pascal) Основним інструментом Delphi, його ядром, є мова Object Pascal . Рядки Для обробки текстів у Object Pascal використовуються. прикладами використання циклу while є пошук в масиві або у файлі. Алгоритм .
Розв'язання задач на мовою програмування Pascal (2)
. Pascal для платформи Microsoft .NET, який містить усі основні елементи сучасних мов програмування . обробки одновимірних масивів різних розмірів. Слід зазначити, що багато недоліків мови . на мітку всередині неї неможлива. 2.4 Приклади .
Циклічні конструкції в мовами програмування високого рівня
. на машинних мовами. Це і є основний їхній недолік. Мови програмування . алгоритму більш доступно розумінню, ніж його широке опис [2]. приклад програми на мовою З: /* Програма обробки . успішного продукту Turbo Pascal, витончена реалізація .
Удосконалення управління персоналом на основі автоматизації робочого місця економіста (на прикладі УО "ПГВБК")
. що дозволяють створювати програми на різних мовами програмування (Pascal, З, З ++ . збережених у БД масивів даних і т.д. три основних механізму обробки інформації. . (застосовується, на приклад, у сільському . відповідно до алгоритмом, Реалізованому в .
Мови програмування. Курс лекцій
I. Програма курсу «Мови програмування» 1. Вступ Основні поняття мов програмування: дані, операції та зв'язування . східчастого масиву є посилання на відповідні об'єкти (масиви). приклад ініціалізації подібного масиву: a.
перебор>