АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Массивы

Читайте также:
  1. Воздействия на горные породы и их массивы
  2. ДВУМЕРНЫЕ МАССИВЫ
  3. Двумерные массивы
  4. Динамические массивы
  5. Дисковые массивы RAID
  6. Задания на «Одномерные массивы»
  7. Криминалистические информационные массивы международных организаций
  8. Линейные массивы
  9. Массивы как члены классов. Массивы объектов. Строки как члены классов. Массивы строк.
  10. Массивы элементов
  11. Многомерные массивы

В языках программирования существует сложный тип переменной - переменная с индексом, являющая собой отдельный элемент сложного типа данных под названием массив.

Массив –это конечная упорядоченная совокупность переменных одного типа.

Упорядоченная - это значит, что каждый элемент массива находится на своём месте, т.е. если 2 элемента массива поменять местами, то это будет уже другой массив. Величина, определяющая местоположение переменной в массиве, называется индексом.Иначе говоря, индекс это номер элемента (переменной) в массиве.

Массив считается данным сложного типа и требует обязательного описания.В Basic описание массива выполняется с помощью оператора DIM (dimension), который относится к т.н. описательным или невыполняемым операторам. Формат записи такого оператора:

DIM <имя массива > (< максимальные размеры индексов> )

При выполнении оператора DIM в памяти компьютера выделяется место для хранения элементов массива в указанном объёме. На выделение объёма памяти для массивов существуют ограничения, заданные системой программирования.

Например: DIM A(10), DIM Z(5,3,7)

Массивы могут иметь несколько индексов и бывают одномерные (или вектора), двумерные (или матрицы), трёхмерные и т.д. – многомерные.

В Basic, если массив одномерный, то в нем максимальное значение индекса равно кол-ву элементов в массиве. В двумерном массиве кол-во элементов равно произведению максимальных значений индексов. Например, в матрице DIM B(4,5) кол-во элементов равно 4*5 = 20 элементов. В памяти компьютера все элементы всех массивов расположены линейно. Это значит, что элементы матрицы будут расположены в порядке 5, 0, 2, 1, 6, 3, то есть по строчкам. Говорят, что элементы многомерных массивов расположены в порядке наибыстрейшего изменения последнего индекса. Индекс может изменяться от начального значения до максимального значения, указанного в операторе DIM. В качестве индекса может выступать переменная, например, А(i) или даже выражение - A(k+1). Использование переменных в качестве индексов обеспечило максимальную эффективность в обработке массивов.

5. Двумерные массивы

Двумерный массив – это совокупность однотипных элементов, каждый из которых имеет две координаты: номер строки и номер столбца. Как правило, двумерные массивы называют матрицами.

Обработка матриц проходит в двух вложенных циклах FOR…NEXT. Внешний задает номер текущей строки, вложенный – текущий столбец.

Матрицу наиболее удобно рассматривать по строкам слева направо, хотя можно спрограммировать анализ и по другой схеме.

Ввод и формирование матрицы

В общем виде матрица А имеет вид: А= , где - общий элемент матрицы, где i – номер строки, j – номер столбца. Если m≠n, матрица называется прямоугольной. Если m=n, матрица называется квадратной. В главную диагональ квадратной матрицы войдут ее элементы, у которых равны индексы, т.е. i=j. Если i<j, то элементы матрицы находится выше главной диагонали, и наоборот, если i>j – ниже. Если i+j=n+1, то элементы образуют побочную диагональ.

Ввод матрицы подразумевает ввод каждого элемента с клавиатуры, а формирование – автоматическое присвоение значений элементам самой программой.

Пример. Ввести матрицу М(3, 4)

DIM M(1 TO 3, 1 TO 4)

FOR i=1 TO 3

FOR j=1TO 4

INPUT M(i, j)

NEXT j

NEXT i

Работа программы:

Внешний цикл со счетчиком i перебирает номера строк, внутренний – номера столбцов в каждой строке. Циклы работают по очереди. Внешний цикл переходит к следующему значению i только после того, как внутренний переберет все значения j.

Важно четко представлять себе, что счетчики циклов i и j обозначают только номера строк и столбцов, а не значение элементов. Именно на использовании счетчиков основано применение циклов в обработке матриц. Счетчики задают позицию в матрице, а действия с элементами в этой позиции выполняют уже другие операторы.

Для большей наглядности ввода и иллюстрации работы счетчиков программу можно немного усовершенствовать.

DIM M(1 TO 3, 1 TO 4)

FOR i=1 TO 3

FOR j=1 TO 4

PRINT ²M(²; i; j; ²)²

INPUT M(i, j)

NEXT j

NEXT i

После запуска такого алгоритма на экран перед вводом очередного элемента будет выводиться его номер и знак вопроса – М(1,1)?, М(1,2)?, М(1,3)?.... После каждого запроса нужно вводить значения элемента и нажимать Enter.

 

Вывод матрицы на экран

Выводить матрицу на экран нужно в виде строк и столбцов. Для этой задачи подходят вложенные циклы FOR…NEXT.

Пример. Двумерный массив М(3,4) вывести на экран в виде матрицы

FOR i=1 TO 3

FOR j=1 TO 4

PRINT M(i, j);

NEXT j

PRINT

NEXT i

Работа программы:

Вложенный цикл со счетчиком j выводит элементы строки. Точка с запятой (;) в операторе PRINT дает команду на вывод элементов в одну строку через пробел. Внешний цикл задает номер выводимой строки.

Для перевода курсора в очередную строку матрицы после завершения работы внутреннего цикла использую «пустой» PRINT между операторами NEXT i и NEXT j.


1 | 2 | 3 | 4 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.)