Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програмка сессия 1.docx
Скачиваний:
9
Добавлен:
05.02.2016
Размер:
91 Кб
Скачать

Массивы и циклы в программировании

Массив (также индексный массив, иногда таблица, ряд) — именованный (упорядоченный) набор однотипных переменных (данных), расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.

Индекс же массива — это число целое, указывающее на конкретный элемент массива.

Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д.

Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.

Массив описывается так:

Чаще всего типом индекса является диапазон, например:

— выше описывается массив В, состоящий из 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]:

с:=A[1,1] A[1,1]:=A[1,1] A[1,1]:=c

Далее [2,2]:

с:=A[2,2] A[2,2]:=A[1,2] A[1,2]:=c

Далее [3,3]:

с:=A[3,3] A[3,3]:=A[1,3] A[1,3]:=c Далее [4,4]:

с:=A[4,4] A[4,4]:=A[1,4] A[1,4]:=c

И так n раз до [n,n]. Т.е. значение диагонали матрицы направления слева направо и сверху вниз. И элементы этой диагонали меняются значениями с элементами первой стоки матрицы (или k-той строки). Значит, правильный ответ — вариант 3: данный алгоритм меняет местами элементы диагонали иk-го столбца таблицы.