- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •1. Среда программирования turbo pascal 7.0
- •1.1. Структура меню среды
- •1.2. Правила оформления программ
- •1.3. Команды редактора тп
- •Команды удаления и вставки
- •1.4. Компиляция и исправление синтаксических ошибок
- •2. Элементы языка pascal
- •2.1. Алфавит языка
- •2.2. Константы. Идентификаторы
- •2.3. Операторы
- •2.3.1. Оператор присваивания
- •2.3.2. Оператор безусловного перехода
- •Стандартные функции
- •2.3.3. Условный оператор if
- •2.3.4. Опеpатоp варианта case
- •2.3.5. Составной и пустой операторы
- •2.3.6. Операторы цикла
- •2.4. Процедуры прерываний
- •2.5. Типизированные константы
- •2.6. Структура программы
- •2.7. Подпрограммы
- •2.7.1. Определение процедур и функций
- •2.7.2. Вложенные подпрограммы
- •2.7.3. Вызов подпрограмм
- •2.7.4. Процедуры
- •2.7.5. Функции
- •2.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
- •2.7.7. Рекурсия
- •2.8. Типы в Турбо Паскале
- •2.8.1. Целые типы
- •Классификация целых типов
- •Встроенные процедуры и функции для целых типов
- •2.8.2. Логический тип
- •2.8.3. Символьный тип
- •Служебные символы
- •2.8.4. Строковый тип
- •Встроенные функции и процедуры для обработки строк
- •Процедуры преобразования
- •2.8.5. Перечислимый тип
- •2.8.6. Ограниченный тип (диапазон)
- •2.8.7. Вещественные типы
- •Вещественные типы
- •Встроенные функции
- •2.8.8. Структурированные типы данных. Массивы
- •2.8.9. Множества
- •2.8.10. Записи
- •2.9. Изменение типа выражения
- •2.10. Процедурные типы
- •2.11. Файлы
- •Общие процедуры и функции для работы с файлами
- •2.11.1. Текстовые файлы
- •2.11.2. Типизированные файлы
- •2.11.3. Нетипизированные файлы
- •2.12. Указатели и динамическая память
- •2.13. Модули
- •2.14. Библиотека Турбо Паскаля
- •2.14.1. Модуль crt
- •2.14.2. Модуль graph
- •Var driver, Mode: integer переменные драйвера и режима.
- •Управление графическим режимом
- •Управление экраном, окном, страницей
- •Управление цветом и палитрой
- •Работа с точками
- •Работа с линиями
- •Построение фигур из линий
- •Построение криволинейных фигур
- •Работа с текстом
- •Обмен с памятью
- •2.15. Динамические структуры данных
- •2.15.1. Связанные динамические данные. Списки
- •Чтобы сослаться на двунаправленный кольцевой список как на единый программный объект, используется указатель, значением которого является ссылка на заглавное звено списка.
- •2.15.2 Очередь
- •2.15.3. Стек
- •3. Практическое программирование Этапы подготовки и решения задач на компьютере
- •Порядок выполнения лабораторных работ
- •Лабораторная работа 1 Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
- •Лабораторная работа 3 Программирование циклических алгоритмов с заданным числом повторений
- •Лабораторная работа 4 Программирование циклических алгоритмов с предусловием
- •Лабораторная работа 5 Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Лабораторная работа 6 Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Лабораторная работа 7
- •Лабораторная работа 8 Программирование с использованием функций
- •Лабораторная работа 9 Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Лабораторная работа 11 Файлы
- •Лабораторная работа 12 Записи
- •Лабораторная работа 13 Решение нелинейных уравнений
- •Задание (программа_13)
- •Лабораторная работа 14 Вычисление приближенного значения определенного интеграла
- •Лабораторная работа 15 Модульное программирование
- •Лабораторная работа 16 Графика
- •Библиографический список
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Зарезервированные слова Turbo Pascal 7.0
- •Приложение в
- •Кодировка символов в соответствии с кодами ascii
- •Приложение г
- •Альтернативная кодировка госТа для кодов 128...255
- •Клавиши с кодами из двух частей
- •Содержание
Лабораторная работа 7
Программирование алгоритмов обработки двумерных массивов
Цель работы: научиться разрабатывать и отлаживать программы с использованием матриц.
Описание двумерного массива (матрицы):
TYPE
<имя>= ARRAY[диап1,диап2] OF <базовый_тип>;
где [диап] - диапазон для одного индекса.
Пример. Вычислить суммы элементов
в столбцах двумерного числового массива
А размером [1..3,1..4].
Текст программы для СА (рис. 9):
Program lr7_1;
CONST a: array[1..3,1..4] of integer =
((1,2,3,4),(1,2,3,4),(1,2,3,4));
VAR
s: array[1..4] of integer; {массив сумм}
i, j: integer;
BEGIN
for j:=1 to 4 do
begin
s[j]:=0;
for i:=1 to 3 do
s[j]:=s[j]+a[i,j];
write(' s[',j,']=',s[j])
end;
END.
Задание 1 (программа 7_1)
1. Даны матрицы A,B: array [1..4,1..4] of real. Вычислить матрицу С поэлементным сложением соответствующих элементов матриц А и В.
2. Дана матрица B: array [1..5,1..5] of real. Найти для нее транспонированную матрицу.
3. Даны матрица A: array [1..4,1..4] of real и константа К. Вычислить матрицу С=K*А.
4. Сформировать массив по правилу 1 0 0 ... 0
2 1 0 ... 0
3 2 1 ... 0
...
10 9 8 ... 1 .
5. Даны натуральное N и элементы квадратной вещественной матрицы А пятого порядка. Вычислить N-ю степень каждого элемента этой матрицы по схеме (аij1=аij, аij2=аij*аij, аij3= аij2*аij и т.д., где i,j=1,2,...,5).
6. Сформировать массив по правилу 0 0 0 ...0
0 1 0 ...0
0 0 2 ...0
…
0 0 0 ...9 .
7. Сформировать массив последовательностью натуральных чисел:
1 2 ... 10
11 12 ... 20
21 22 ... 30
...
91 92 ... 100 .
8. Сформировать двумерный массив:
1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1 .
9. Дана матрица A: array [1..N,1..N] of integer. Сформировать вектор В из максимальных элементов каждой строки.
10. Дана матрица A: array [1..6,1..6] of integer и переменная x. Элементы нечетных строк матрицы А заменить на значение x.
11. Дана матрица B: array [1..5,1..5]. Получить массив С удалением (либо обнулением) n-й строки и k-го столбца из матрицы В.
12. Определить, является ли заданная квадратная матрица девятого порядка магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах будут одинаковы.
13. Определить, является ли заданная целая квадратная матрица шестого порядка симметричной (относительно главной диагонали).
14. Дана вещественная матрица A: array [1..7,1..4]. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент оказался в верхнем левом углу.
15. Дана вещественная матрица размером 4х8. Упорядочить ее строки по не- убыванию сумм их элементов.
16. Для заданной целой матрицы размером 6х8 элементов напечатать индексы всех ее седловых точек. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце.
17. Дана матрица A: array [1..6,1..2] вещественных чисел. Рассматривая A [i,1] и A [i,2] как координаты точек на плоскости, определить радиус наименьшего круга (с центром в начале координат), внутрь которого попадают все эти точки.
18. Дан массив F: array [1..N,1..M] of byte, определить количество «особых» элементов в нем. Элемент считается «особым», если он больше суммы остальных элементов своего столбца.
19. Дана матрица D: array [1..5,1..6] of integer. Упорядочить элементы строк в нем по убыванию.
20. Дан массив М координат точек на плоскости. Найти наибольшее расстоя-ние между этими точками.
Задание 2 (программа 7_2)
Сформировать таблицу Пифагора.
Задание 3 (программа 7_3)
Модифицировать программу 6_3 таким образом, чтобы значения X, F1 и F2 были представлены двумерным массивом, состоящим из трех строк.