
на первый
заказ
Дипломная работа на тему: Вычисление определителя разложением по элементам строки
Купить за 600 руб.Введение
Данная дипломная работа посвящена наглядному изучению методов работы с указателями и динамической памятью. В практической части для конкретной задачи поэтапно описывается процесс написания программы, использующей указатели. В качестве языка программирования был выбран Pascal.Целью работы является составление учебно-методического текста по теме "Указатели". В частности, планируется:
) на нетривиальном примере продемонстрировать метод перехода от массивов к указателям, изложенный на сайте В.З. Цалюка [1];
) на основе разработанного учебно-методического текста сверстать html версию, приемлемую для использования на вышеуказанном сайте.
Теоретическая часть курсовой работы написана на основе лекций и материалов, расположенных сайте В.З. Цалюка [1]. Также использовались материалы сайта Санкт-Петербургского государственного университета телекоммуникаций [2] и свободные интернет материалы [3].
Правильное понимание и использование указателей особенно необходимо для составления хороших программ по следующим причинам:
*указатели позволяют повысить эффективность программирования (к примеру, в некоторых ситуациях с помощью указателей можно существенно повысить скорость прохода массива);
*указатели обеспечивают поддержку динамических структур данных (таких как связанные списки и динамические массивы);
*при помощи указателей выполняется динамическое распределение памяти.
Однако написание программ с использованием указателей требует значительного напряжения и предельного внимания. Указатель может вызвать ряд затруднений, например, если указатель содержит неправильное значение, программа может быть неработоспособной. Можно легко ошибиться при использовании указателей; к тому же ошибки, связанные с неправильными значениями указателей, найти очень трудно. Но преимущества программирования с использованием указателей компенсируют все сложности.
Часто возникают ситуации, когда заранее не известно, сколько объектов - чисел, элементов массива, строк текста и прочих данных будет использовать программа. В этом случае используется динамическое выделение памяти, когда память занимается и освобождается в процессе исполнения программы. Управление памятью происходит посредством указателей.
Ярким примером подобной ситуации может послужить потребность в процедуре, которая должна работать с массивами различной длины. Приведем банальный пример: ввод элементов массива. Иногда для решения такой задачи достаточно объявить тип массива с константой в определении, например:
CONST NN = 3;= ARRAY[1..NN] ОF REAL; WriteVec(v: Vec);i: WORD;i := 1 ТО NN DО(v[i]);
Этот способ работает, но имеет серьезные ограничения. Чтобы функция работала с вектором другого размера, нужно изменить константу и перекомпилировать программу. Этот метод не подходит, если программа должна работать одновременно с несколькими массивами разной длины, особенно если длина массивов не известна до компиляции.
Нередко в подобной ситуации неопытный программист поступает следующим образом. Он задает достаточно большую константу, а размер вектора передает процедуре среди параметров.
CONST NN = 15;= ARRAY[1..NN] ОF REAL; WriteVec(v: Vec; к: WORD);i: WORD;i := 1 ТО к DО(v[i]);
Несмотря на то, что этот вариант может справляться со своей задачей, он, так же как и предыдущий пример имеет ограничения (такая процедура не будет работать с массивами, длина которых больше NN). Но, что важнее, данное решение является расточительным и вредным для обучения. Для любого массива программе приходится выделять размер максимально возможного массива, расходуя ограниченные ресурсы стека. Ситуация усугубляется, если какие-либо процедуры для своих целей должны копировать массив в стек (например, если исходный массив не должен измениться после работы процедуры).
Для данной дипломной работы не случайно была выбрана задача, использующая рекурсию, а именно: вычисление определителя матрицы разложением по элементам строки. Методы, использующие рекурсивные процедуры, значительно расходуют ограниченное пространство стека, что рождает потребность в точном использовании динамической памяти. Использование ресурсоемкой рекурсии оправдывается удобством программирования. А в заявленном методе, в отличие от более эффективных с точки зрения скорости и ресурсоемкости, но менее точных методов, появляется возможность вычисления определителей целочисленных матриц без погрешности.
Помимо этого, предложенный пример является довольно простым с математической точки зрения, и достаточно сложным с точки зрения программирования, что позволяет наглядно объяснить тонкости работы с указателями и динамической памятью, продемонстрировать проблемы, которые можно решить с их помощью и рассказать о типичных ошибках, которые могут возникнуть у программиста, использующего указатели.
Оглавление
- Введение- Теоретическая часть
- Указатели
- Динамическая память
- Верстка веб страниц
- Практическая часть
- Постановка задачи
- Алгоритм перехода от индексов к указателям
- Требования к учебному тексту
- Требования к веб-странице
- Решение поставленной задачи Заключение
- Список литературы
- функция определитель матрица алгоритм
Список литературы
1. В.З. Цалюк Этюды по алгоритмизации:2. Учебные материалы Санкт-Петербургского государственного университета телекоммуникаций им. проф. М.А. Бонч-Бруевича:
Студия "Вэл Дизайн". Верстка - определения терминов <http://welldesign.ru/studio/process/markup/markup-definitions>
или зарегистрироваться
в сервисе
удобным
способом
вы получите ссылку
на скачивание
к нам за прошлый год