- •Алещенко а.С.
- •2 Раздел
- •Раздел 1
- •1.1. Алгоритмы и формы описания алгоритмов. Блок-схемы линейных алгоритмов
- •1.2. Типовая структура алгоритмического языка
- •Программные единицы
- •1.3. Операторы ввода и вывода данных. Оболочка Турбо-Паскаля
- •Операторы ввода и вывода.
- •1.4. Циклические алгоритмы и организация циклов
- •Использование псевдографики для оформления результатов
- •1.5. Разветвляющиеся алгоритмы и их реализация
- •1.6. Обработка массивов. Индексированные переменные
- •Правила использования вложенных циклов
- •1.7. Вспомогательные алгоритмы. Нестандартные функции
- •Раздел 2
- •2.1. Типы циклических алгоритмов
- •2.2. Структуры разветвляющихся алгоритмов
- •Практическая часть.
- •2.3. Обработка индексированных переменных
- •Псевдографика в Турбо-Паскале
- •Масштабирование графиков
- •2.4. Обработка символьной информации на Турбо-Паскале
- •2.5. Вспомогательные алгоритмы: процедуры
1.6. Обработка массивов. Индексированные переменные
Часто в задачах возникает необходимость обработки нерегулярных наборов значений переменных. Например, в цикле переменная x = {1,2; -3; 0; 0,55}. Был рассмотрен алгоритм с динамическим вводом данных. Но если требуется сохранить значение переменной после ввода следующего значения, то используются индексированные переменные, называемые массивами.
Массив – это набор элементов, имеющих одно имя и упорядоченный одним или несколькими отрезками натурального ряда, называемыми индексами. Количество индексов, используемых для указания элемента, называется размерностью массива. Индексы записываются в Паскале в квадратных скобках после имени и разделяются запятыми (если их несколько).
Например, элементы массива X будут задаваться в программе операторами:
X[1] := 1,2; X[2] := -3; X[3] := 0; X[4] := 0,55;
Такой массив называется одномерным, т.к. имеет один индекс, и в разделе деклараций должен быть описан с указанием предельных значений индексов (и их количества) и типа переменной декларацией
X: ARRAY [1..4] OF Real;
где начальное и конечное значения индекса разделяются двумя точками.
Для двумерного массива (матрицы) S(3,4) декларация может иметь вид
S: ARRAY [1..3, 1..4] OF integer;
Такая матрица может принимать значения:
, т.е. первый индекс обозначает номер строки, а второй – столбца.
Например, S[2,3] = -6.
В операторах программы индексированная переменная должна всегда содержать указание индекса, которое может быть выражением целого типа.
Рассмотрим пример: требуется найти в массиве X(4), рассмотренном ранее, и вывести на экран положительные элементы, т.е. удовлетворяющие условию X[i] > 0, где i = 1,2,3,4.
Обычно ввод и вывод значений элементов массива выполняются отдельными циклами. Блок-схема и фрагмент программы вывода приведены на рис.1.6
k от 1 до 4 for k := 1 to 4 do
Вывод x, Y write (x[i]:10:2);
Writeln;
Рис.1.6
Здесь в цикле выполняется вывод элементов массива в строку, поэтому необходимо форматирования при выводе, чтобы между числами были пробелы. После цикла помещается «пустой» оператор Writeln; для перехода на новую строку.
Вся программа будет состоять из трех циклов (блок- схема очевидна):
Program Vibor;
Uses CRT;
Var x: Array [1..4] of real; i: integer;
begin CLRSCR; {очистка экрана}
Write (‘Vvedite znacheniya x[i]: ’);
for i:=1 to 4 do read (x[i]);
Writeln (‘V massive X’);
for i:=1 to 4 do write (x[i]); writeln;
Writeln (‘Polojitelnie elementy: ’);
for i:=1 to 4 do if x[i] > 0 then writeln (‘ x =’, x[i]:5:2);
end.
Напомним, что после запуска программы необходимо ввести числовые значения, разделенные пробелами или клавишей Enter.
Рассмотрим обработку двумерных массивов.
Для ввода и вывода двумерных массивов используются вложенные циклы, которые должны соответствовать определенным правилам
Главное:
вложенные циклы управляются разными параметрами цикла;
внутренний цикл начинается позже внешнего цикла и заканчивается раньше.