- •Введение
- •Выбор среды программирования
- •1. Линейные программы: арифметические операторы, стандартные функции и ввод/вывод в текстовом режиме
- •1.1. Алгоритмы
- •1.2. Переменные и их типы
- •1.3. Операторы
- •1.4. Стандартные функции
- •1.5. Структура программы
- •1.6. Ввод/вывод в текстовом режиме
- •1.7. Задачи на составление арифметических выражений
- •Контрольная работа №1
- •Задание 1: Линейные программы, арифметические операторы
- •2. Логические выражения и условный оператор
- •2.1. Переменная логического типа
- •2.2. Операторы сравнения
- •2.3. Логические операторы
- •2.4. Задачи на составление логических выражений
- •2.5. Условный оператор
- •2.6. Оформление текста программ
- •Контрольная работа №2
- •Задание 2: Составление логических выражений, условный оператор
- •3. Цикл for
- •3.1. Цикл с параметром (for)
- •4.2. Прием накопления суммы
- •4.3. Прием накопления произведения
- •4.4. Комбинация обоих приемов
- •4.5. Цикл с downto
- •4.6. Операторы break и continue
- •Контрольная работа №3
- •Задание 3. Цикл for. Приемы накопления суммы и произведения.
- •4. Вычисления с помощью рекуррентных соотношений
- •4.1. Рекуррентные соотношения: основные понятия
- •4.2. Задачи на составление рекуррентных соотношений
- •4.3. Многомерные рекуррентные соотношения
- •Контрольная работа №4
- •Контрольная работа №5
- •Задание 4. Вычисления с помощью рекуррентных соотношений
- •5. Вложенные циклы
- •5.1. Вложенные циклы: теория
- •Контрольная работа №6
- •Задание 5. Вложенные циклы
- •6. Задачи на перебор вариантов
- •6.1. Перебор вариантов: теория
- •Задание 6. Задачи на перебор вариантов
- •7. Пепременные – флаги
- •7.1. Переменные – флаги: теория
- •Задание 7. Переменные-флаги
- •8. Переменная – счетчик событий
- •8.1. Переменные – счетчики
- •Задание 8. Переменная – счетчик событий
- •9. Циклы while и repeat
- •9.1. Циклы while и repeat
- •9.2. Зацикливание
- •9.3. Цикл, управляемый меткой
- •9.4. Вычисление номера шага
- •9.5. Вычисления с заданной точностью
- •Контрольная работа №7
- •Задание 9. Циклы while и repeat
- •10. Массивы
- •10.1. Структурные типы данных
- •10.2. Массивы
- •10.3. Вычислимость индексов
- •10.4. Примеры программ, работающих с массивами
- •10.5. Сортировка массивов
- •10.6. Хороший стиль при решении задач на массивы
- •Контрольная работа №8
- •Контрольная работа №9
- •Задание 10. Массивы
- •11. Процедуры и функции
- •11.1. Простейшая процедура
- •11.2. Локальные переменные
- •11.3. Параметры процедур
- •11.4. Параметры-значения и параметры-переменные
- •11.5. Программирование сверху вниз
- •11.6. Передача массивов в качестве параметров
- •11.7. Функции
- •11.8. Опережающее описание
- •11.9. Процедурные типы
- •11.10. Пример: Интегрирование методом трапеций
- •11.11. Правильное составление заголовков процедур и функций
- •11.12. Модули
- •11.13. Хороший стиль при написании процедур и функций
- •Контрольная работа №10
- •Задание 11: Процедуры и функции
- •12. Двумерные массивы
- •12.1. Двумерные массивы: теория
- •Задание 12: Двумерные массивы
- •13. Графика в Паскале
- •13.1. Введение
- •13.2. Инициализация графического режима
12. Двумерные массивы
12.1. Двумерные массивы: теория
Если элементы одномерного массива можно мыслить себе как координаты некоторого вектора, то двумерный массив будет соответствовать матрице. Опишем для примера двумерный массив размером 10х20:
const
n = 10; m = 20;
type
TMatrix = array [0..n-1, 0..m-1] of real; var
A: TMatrix;
При обращении к элементам такого массива необходимо указывать сразу два индекса. Например, A[0,0] – левый верхний элемент матрицы и т.п. В остальном двумерные массивы ничем не отличаются от одномерных.
При желании можно вводить трех-, четырехмерные и т. д. массивы. Для этого при описании соответствующего типа следует указать не два, а еще больше диапазонов индексов.
Еще один способ описать двумерный массив, это описать массив массивов:
type
TVector = array [0..n-1] of real; TMatrix2 = array [0..m-1] of TVector;
Каждый элемент массива TMatrix2 можно мыслить как вектор-строку матрицы. Обращение к левому верхнему элементу в этом случае будет выглядеть так: A[0][0]. Здесь A[0] -первая строка, которая сама является массивом, но одномерным.
Можно пользоваться любым из приведенных способов описания двумерного массива. Второй позволяет выполнять какие-то операции со строками целиком, а не поэлементно. Это же свойство можно посчитать недостатком из-за неравноценности строк и столбцов.
Задание 12: Двумерные массивы
1.Опишите тип – двумерный массив, количество элементов по горизонтали
ивертикали пусть задается константами. Создайте процедуры: заполняющую такой массив случайными числами, и печатающую массив на экране.
2.Создайте процедуры:
(а)Обнуляющую двумерный массив.
(б) Заносящую в квадратный двумерный массив единичную матрицу (с единицами на главной диагонали и нулями во всех прочих местах).
3. Создайте процедуру, присваивающую элементам двумерного массива их порядковые номера. Элементы нумеруются следующим образом:
(а) Построчно, то есть
æ |
1 |
2 |
3 |
n ö |
|
ç |
n +1 |
n + 2 n + 3 |
|
÷ |
|
ç |
2n ÷ |
||||
ç |
2n +1 |
2n + 2 2n + 3 |
3n ÷ |
||
ç |
|
|
|
|
÷ |
ç |
÷ |
||||
ç |
|
|
n |
2 ÷ |
|
è(n -1)n +1 |
ø |
(б) По спирали. Например, для матрицы 5×5 должно получиться
æ 1 |
2 |
3 |
4 |
5ö |
|
ç |
17 |
18 |
19 |
6 |
÷ |
ç16 |
÷ |
||||
ç15 |
24 |
25 |
20 |
7 |
÷ |
ç |
23 |
22 |
21 |
8 |
÷ |
ç14 |
÷ |
||||
ç |
12 |
11 |
10 |
9 |
÷ |
è13 |
ø |
(в) По диагонали. Например:
æ 1 |
3 |
6 |
10 |
15 ö |
||
ç |
2 |
5 |
9 |
14 |
19 |
÷ |
ç |
÷ |
|||||
ç |
4 |
8 |
13 |
18 |
22 |
÷ |
ç |
7 |
12 |
17 |
21 |
24 |
÷ |
ç |
÷ |
|||||
ç |
|
16 |
20 |
23 |
25 |
÷ |
è11 |
ø |
4.Создайте процедуру, которая вычтет строку с заданным номером, помноженную на коэффициент, из всех последующих строк матрицы. Матрица, номер вычитаемой строки и коэффициент должны быть параметрами.
5.Создайте процедуру, осуществляющую транспонирование матрицы.