[МУЗЫКА]
[МУЗЫКА] Рассмотрим
такое понятие, как матрица.
На самом деле, каждый из вас хорошо знаком с матрицей.
Аналогом матрицы является зрительный зал в кинотеатре.
У каждого места в зрительном зале есть номер ряда и номер места.
В матрице картина аналогичная: каждый элемент матрицы имеет номер строки —
это номер ряда, и номер столбца — это номер места в этом ряду.
Матрица также называется двумерным массивом,
и элемент матрицы, как я уже сказала, обязательно имеет два индекса.
Первый будет номером строки, то есть горизонтального ряда,
а второй номером столбца, то есть вертикального ряда.
И обращение к элементам матрицы происходит как раз по номеру строки и столбца, причем
первый индекс — это всегда номер строки, а второй — это обязательно номер столбца.
Например, у нас есть матрица которая состоит из десяти строк и 20 столбцов,
и тип каждого элемента — это вещественное число.
Объявим переменную соответствующего типа, и вот перед нами матрица.
Строки — горизонтальные ряды — нумеруются от единицы до десяти по возрастанию,
а столбцы — вертикальные ряды — имеют номера от единицы до 20.
Для того чтобы обратиться к элементу матрицы, мы записываем выражение A [ i,
j ], где первый индекс есть номер строки, а второй — это столбца.
Например, если я рассматриваю элемент a [1,
2] — это первая строка, то есть первая горизонталь,
и второй столбец то есть вторая вертикаль, вот он закрашен красным цветом.
И если я хочу, например, взять a [10,
1], то это будет последняя строка и первый столбец.
И таким образом мы можем обратиться к любому элементу матрицы,
зная номер строки и номер столбца,
причем на месте этих номеров может стоять либо константа,
число в диапазоне которой мы объявили, когда выделяли память для матрицы,
либо это может быть переменная соответствующего типа или выражение.
Теперь рассмотрим, как можно сделать ввод матрицы и вывод матрицы.
Удобно объявить две константы — максимальное количество строк
nmax и максимальное количество столбцов mmax.
Это удобно сделать потому, что если мы захотим в дальнейшем изменить
количество строк или столбцов, максимальное для этой матрицы,
мы должны будем внести исправления только в эти константы, а во все остальные места,
где они используются, мы никаких исправлений вносить не будем.
Теперь объявим тип для матрицы.
Матрица — это такой же массив, но только у него два индекса.
Сначала мы в квадратных скобках указываем, в каком диапазоне будут находиться номера
строк, а затем указываем, сколько будет столбцов, какова будет их нумерация.
И далее мы указываем тип элемента.
Наша матрица в данном случае состоит из вещественных чисел.
Затем мы объявляем переменные.
Нам нужна собственно матрица,
а кроме того нам нужны текущий номер строки и столбца — это переменные i и j,
и n и m — это количество строк и столбцов, которые введет пользователь.
Эти значения не могут превышать максимально возможного числа строк и,
соответственно, столбцов, и мы проверим при вводе, что данные,
которые введет пользователь, у нас правильные.
Матрицу мы будем вводить построчно.
Сначала мы должны задать значения для количества строк и столбцов.
Наш оператор вывода подсказывает пользователю,
какие максимальные значения в данном случае возможны.
Далее мы читаем: n и m — количество строк и столбцов, и проверяем, что
эти значения положительные и не превышают соответствующей максимальной величины.
Далее мы с вами должны ввести собственно элементы матрицы.
Мы подсказываем пользователю, сколько именно ему нужно ввести элементов.
То есть мы говорим, например, введите матрицу три на четыре, если n,
которое ввел пользователь, равно трем, а m — четырем.
Далее, мы должны ввести элементы.
Для того чтобы ввести элементы матрицы, у нас два вложенных цикла.
Первый цикл выбирает номер строки: он у нас от единицы до n.
И выбрав номер строки, мы запускаем второй цикл, в котором внутри
этой строки будут перебираться все возможные номера столбцов.
И на каждом шаге вложенного цикла читается один элемент матрицы.
Обращаю ваше внимание, что мы используем read, а не readln,
потому что в этом случае элементы матрицы могут размещаться либо построчно,
либо в один столбец, и вообще говоря, можно вводить их сколько угодно на строке,
ну естественно, не выходя за границы экрана.
И тогда матрица будет читаться именно в этом порядке построчно.
То есть сначала читается первый элемент первой строки,
потом второй элемент первой строки и так далее до конца строки.
А затем последовательно читается вторая строка.
Теперь мы выведем матрицу, которую мы ввели.
Удобно, чтобы матрица также выводилась построчно,
то есть каждая строка матрицы у нас с вами располагалась на одной строке экрана.
Здесь я считаю, что количество элементов матрицы таково, что у нас не выйдет
наша матрица за максимально возможную ширину экрана.
Итак, я сначала вывожу слова «введена матрица», а затем я начинаю первый цикл.
Первый цикл выбирает строку.
Внутри этого цикла мы будем выполнять два действия.
Сначала мы сделаем цикл,
который будет перебирать в этой строке все номера столбцов.
И каждый элемент я буду выводить последовательно в этой же строке,
то есть я использую оператор write и формат 10:5.
То есть всего у нас десять позиций, в которых будет выводиться наше число,
и пять из них будут располагаться после точки.
После того, как цикл закрыт, нам нужно записать пустой оператор writeln,
который просто перейдет на новую строку экрана.
То есть выведя очередную строку матрицы, мы переходим к следующей строке экрана.
Таким образом, матрица будет выведена построчно.
Далее мы завершаем наш первый цикл, в котором происходил перебор строк.
Там был begin, поэтому здесь мы записываем оператор end,
который завершает составной оператор, и наша программа заканчивается end с точкой.
Рассмотрим, как работает программа для ввода и вывода элементов
двумерного массива, то есть матрицы.
Запустим нашу программу и сначала нужно
ввести количество строк и столбцов матрицы.
Обе эти величины у нас в диапазоне от единицы до 20.
Допустим, рассмотрим матрицу три на четыре.
Здесь будет три строки, и в каждой из них будет четыре столбца.
Теперь введем элементы.
Я буду вводить матрицу построчно.
Первая строка.
Вторая.
И третья.
Итак, после того как матрица введена,
у нас происходит вывод элементов матрицы.
То есть сначала мы с вами вводили количество элементов,
проверяя, что оно правильное, затем мы вводили саму матрицу,
предварительно выведя сообщение о том, что нам нужно ввести элементы,
и затем происходил вывод матрицы построчно.
После того как выведены элементы очередной строки матрицы,
у нас происходил переход на следующую строку.
Попробуем запустить нашу программу еще раз,
при помощи этой программы можно сделать также квадратную матрицу.
Например, рассмотрю матрицу три на три.
И введу элементы, снова построчно.
[ЗВУК] Мы
видим, что наши элементы,
поскольку они принадлежат к вещественному типу, выводятся по формату 10:5,
то есть каждый из элементов в общем занимает десять позиций,
и из них пять отведено на дробную часть.
Теперь посмотрим, что будет, если ввести неправильные данные.
Ну, например, попробуем ввести отрицательное количество элементов.
В этом случае количество строк и столбцов будет вводиться повторно.
То же самое для m.
Итак, если количество элементов отрицательное, то тогда ввод повторяется.
Если я задам количество элементов, превышающее максимально возможное,
например, то программа снова переспрашивает наши данные.
Ну и наконец, введу правильные данные и снова введу матрицу.
Обратите внимание, что в этом случае я
могу вводить элементы, как в одну строку,
так и построчно, и также могу вводить элементы в столбец.
Например, запустим программу,
и также выводится на экран полученная матрица.
Ввод и вывод матрицы мы будем с вами использовать в дальнейшем при решении
многих задач.
[МУЗЫКА]
[МУЗЫКА]