Масиви і цикли в програмуванні
Масив (такжеіндексний масив, іногдатабліца, ряд) - іменований (упорядкований) набір однотипних змінних (даних), розташованих в пам'яті безпосередньо один за одним, доступ до яких здійснюється за індексом. У найпростішому випадку масив має постійну довжину і зберігає одиниці даних одного і того ж типу.
Індекс же масиву - це число ціле. вказує на конкретний елемент масиву.
Кількість використовуваних індексів масиву може бути різним. Масиви з одним індексом називають одновимірними. з двома - двовимірними і т. д.
Одновимірна масив нестрого відповідає вектору в математиці, двовимірний - матриці. Найчастіше застосовуються масиви з одним або двома індексами, рідше - з трьома, ще більшу кількість індексів зустрічається вкрай рідко.
Масив описується так:
Найчастіше типом індексу є діапазон, наприклад:
- вище описується масив В. складається з 5 елементів і символьний масив R. що складається з 34 елементів. Для масиву У буде виділено 5 * 6 = 30 байт пам'яті (тому що під змінні типу Real виділяється 6 байт пам'яті), для масиву R - 1 * 34 = 34 байта пам'яті (під змінні типу Char - 1 байт). Базовий тип елементів масиву може бути будь-яким, як простим, так і структурованим, за винятком файлового! Масив можна оголосити з використанням власного типу:
Циклом може називатися будь-яка багаторазово виконується послідовність інструкцій, організована будь-яким способом (наприклад, за допомогою умовного переходу).
Одиничне виконання тіла циклу називається итерацией. Вираз. визначальне, буде в черговий раз виконуватися ітерація. або цикл закінчитися - це умова виходу або умова закінчення циклу (але, може бути і умовою продовження). Змінна, що зберігає поточний номер ітерації, називається лічильником ітерацій циклу або просто лічильником циклу. Цикл не обов'язково містить лічильник.
- Ціклcо лічильником. в якому деяка змінна змінює своє значення від заданногоначального значення до кінцевого значення з деяким кроком. і для кожного значення цієї змінної тіло циклу виконується один раз. Реалізується оператором for
Приклад. Заповнити масив:
А так можна заповнити двовимірний масив:
- Ціклс передумовою. який виконується поки істинно деяка умова, вказане перед його початком. Реалізується оператором while.
- Ціклс постусловіем. в якому умова перевіряється після виконання тіла циклу, а, значить, тіло завжди виконується хоча б один раз. У мові Паскаль цей цикл реалізує оператор repeat. until
Існує операція пропуску ітерації. коли в поточній ітерації циклу необхідно пропустити все команди до кінця тіла виконуваного циклу. При цьому сам цикл перериватися не повинен, умови продовження або виходу повинні обчислюватися звичайним чином. Реалізується оператором continue.
Також в циклах нерідко використовується команда дострокового виходу з циклу. наприклад, коли при виконанні тіла циклу знаходять помилку, після якої подальша робота циклу не має сенсу. Реалізується оператором EXIT або break.
Повернемося до початку, а точніше до в началепрімеру. Нам потрібно визначити, що робить даний шматочок програми:

Виходячи з вищесказаного, який використовується двовимірний масив А - це матриця розміром n x n. Цикл використовується з лічильником від одиниці до n. мабуть визначеної раніше.
Всередині циклу: змінна з отримує значення двовимірного масиву з індексом [i, i] (c: = A [i, i]), спочатку це [1,1]. Потім на місце цього елемента масиву заноситься значення елемента того ж масиву, але з індексом [k, i] (A [i, i]: = A [k, i]), або при k: = 1 (A [i, i ]: = A [1, i]). Тобто заносяться елементи першого рядка, тому що перше число в індексі відповідає за номер рядка в матриці - [i, j], а друге за номер стовпця - [i, j]. І в кінці, на місце елемента з індексом [k, i]. заноситься первісне значення елемента масиву А з індексом [i, i]. яке ми занесли в змінну з (A [k, i]: = c).
І з кожною итерацией нашого циклу значення i збільшується на одиницю. Простежимо по кроках. Спочатку це [1,1]:
І так n раз до [n, n]. Тобто значення діагоналі матриці напрямки зліва направо і зверху вниз. І елементи цієї діагоналі змінюються значеннями з елементаміпервойстокі матриці (або k-тої рядки). Значить, правильна відповідь - варіант 3. даний алгоритм міняє місцями елементи діагоналі іk-го стовпчика таблиці.