
- •Контрольная работа 1. Матрицы.
- •Задача 1.1.
- •Задача 1.2.
- •Var I, j, id, jd : word;
- •Var I : word;
- •I, j, n : word;
- •Задача 1.3.
- •Var I, j : word;
- •Var I, j : word;
- •I, k : word;
- •Var b : Tb; Var k : word);
- •Var hi, hj : integer; nw, I : word;
- •I, k : word;
- •Задача 1.4.
- •Var I, j, jmax: word;
- •Var j : word;
- •Var I, j : word;
- •Задания.
- •Контрольная работа 2. Одиночные классы.
- •Задача 2.1.
- •Interface
- •Implementation
- •Var bufdat : cDate;
- •Задания.
Министерство образования Российской Федерации
Московский государственный технический университет имени Н.Э. Баумана
Методические указания
к выполнению контрольных работ
по дисциплине
«Информатика»
Кафедра ИУ-10 «Защита информации»
Разработчик: к.т.н., доцент Осипов В.П.
Москва, 2008
Утверждено на заседании кафедры ИУ-10 «Защита информации» протокол №01/07 от 03.09.2007.
Контрольные работы по дисциплине “Информатика” выполняются в 1-м семестре на 10-й неделе и во 2-м семестре на 14-й неделе. В данных Указаниях они обозначаются для краткости «Контрольная работа 1» и «Контрольная работа 2».
Указания к выполнению:
Номер варианта соответствует порядковому номеру студента в журнале группы - n.
Оглавление.
Контрольная работа 1. Матрицы. 4
Задача 1.1. 6
Задача 1.2. 9
Задача 1.3. 15
Задача 1.4. 19
Задания. 21
Контрольная работа 2. Одиночные классы. 26
Задача 2.1. 27
Задания. 31
Контрольная работа 1. Матрицы.
Алгоритмы обработки двумерных массивов (матриц) в буквальном смысле объемны, так как требуют написания многих строк исходного кода. Здесь целесообразно напомнить, что единственной операцией над матрицами является присваивание однотипных матриц, а все остальное делается «поштучно» обычно в цикле «for». Таким образом, к собственно действиям над элементами надо прибавить и организацию циклов, которая тоже достаточно объемна и зачастую запутана.
Исходя из этой особенности, ключевую роль при написании учебных программ, особенно в начальный период обучения, играет принцип детальной структуризации программного кода. Необходимо уметь выделять ясные, простые, и я бы сказал, рутинные локальные задачи. Их число не так уж и велико, что позволяет разрабатывать на их основе небольшой набор стандартных алгоритмов. Имея такой собственноручно отлаженный и проверенный набор, из него, как из кирпичиков, можно выстроить более сложный алгоритм.
При разработке учебных программ, особенно если нет опыта работы с массивами, целесообразно придерживаться ряда практических рекомендаций.
Будем использовать статическое объявление массивов с предварительным определением пользовательского имени типа в разделе Type. Максимальные значения размерности задаются в разделе Const. Действительные (актуальные) размерности массива, если это возможно, будем считать равными максимальным. Если же по условиям задачи этого сделать нельзя, то их необходимо объявлять как переменные в разделе Var с последующим определением в основной программе путем ввода с клавиатуры или простым присваиванием.
Всегда будем считать, что первый индекс является индексом строки, а второй – столбца. По умолчанию размерность по строкам обозначается как m, а по столбцам - n. У квадратных матриц размерность объявляется одной переменной n.
Функции ввода и особенно вывода массива целесообразно оформить в виде отдельных процедур. Ввод элементов с клавиатуры в учебных задачах малоэффективен из-за больших затрат времени. Целесообразно использовать генератор случайных чисел или другой подходящий способ формирования значений.
Алгоритмы обработки матриц также можно условно разделить на две группы по признаку меняется ли актуальная размерность или нет.
Ниже перечислены некоторые алгоритмы без изменения актуальной размерности и приведены примеры учебных задач.
Действия над элементами. Элементы выходной матрицы представляет собой результат некоторых вычислений по определенному закону.
Дана исходная матрица m*n (m, n <=7). Сформировать другую матрицу такого же размера, у которой внутренние элементы являются средним арифметическим разности соседних элементов исходной матрицы, а наружные элементы оставлены без изменения. Найти максимальное отклонение между соответствующими элементами матриц.
Вариант предыдущей задачи - элементы матрицы есть квадрат разности между средним значением в строке и значением элемента.
Обходы. Перебрать те элементы матрицы, которые находятся на некотором пути.
Сформировать из квадратной матрицы вектор из элементов, находящихся при обходе по пути в виде буквы «Z».
Сформировать из квадратной матрицы a[i,j] с элементами типа INTEGER вектор из элементов, начиная с a[1,1], таким образом, чтобы из трех соседних элементов a[i+1,j], a[i,j+1] и a[i+1,j+1], следующим выбирался наибольший. Обход продолжать до тех пор, пока не будет достигнута нижняя или правая граница матрицы.
Поиск индекса строки (столбца), содержащей максимальный (минимальный) элемент на заданном месте. Перестановки строк и столбцов. Сортировка по строкам (столбцам) по заданному признаку с обменом строк (столбцов).
Поменять местами у квадратной матрицы строку, содержащую максимальный диагональный элемент со столбцом, содержащим минимальный элемент всей матрицы.
Отсортировать строки матрицы по возрастанию суммы квадратов элементов строки.
Алгоритмы с изменением актуальной размерности и примеры учебных задач.
Получение новой матрицы путем вычеркивания заданной строки, столбца, диагонали и т.п.
Создать процедуру формирования из исходной матрицы n*n с элементами типа REAL результирующей матрицы n-1*n-1 путем вычеркивания строки idel и столбца jdel.
С использованием этой процедуры создать процедуры вычисления определителей второго, третьего и четвертого порядка.
Решить систему из двух, трех и четырех линейных уравнений по правилу Крамера.
Выделение треугольных матриц и блоков. Обратные задачи.
Разбить исходную матрицу на три матрицы – верхнюю, нижнюю треугольную и диагональную.
В исходной матрице 9*9 выделить 9 блоков матриц 3*3.