Главная страница
Навигация по странице:

  • 1. Цели и задачи курсовой работы

  • 2. Тематика курсовых работ

  • 3. Порядок выполнения курсовой работы

  • 4. Основные требования к выполнению и оформлению курсовой работы

  • 5. Оценка курсовой работы.

  • 6. Список рекомендуемой литературы

  • 1. Классы (язык C++) Важнейшие концепции объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм) отражены в новом типе данных – class

  • public, protected или private

  • const

  • Методы класса Методы класса: имеют доступ ко всем свойствам класса; представляют единственную возможность доступа к private

  • public, protected

  • Атрибуты доступа Атрибуты доступа public, private и protected

  • Атрибут доступа Значение public

  • private и protected

  • КУРСОВАЯ РАБОТА (Методичка). Методические указания к курсовому проектированию по дисциплине Методы программирования и прикладные алгоритмы для студентов специальности 075400


    Скачать 254.5 Kb.
    НазваниеМетодические указания к курсовому проектированию по дисциплине Методы программирования и прикладные алгоритмы для студентов специальности 075400
    Дата08.05.2023
    Размер254.5 Kb.
    Формат файлаdoc
    Имя файлаКУРСОВАЯ РАБОТА (Методичка).doc
    ТипМетодические указания
    #1114171
    страница1 из 4
      1   2   3   4


    Уфимский государственный авиационный технический университет

    Кафедра вычислительной техники и защиты информации

    Методические указания
    к курсовому проектированию

    по дисциплине «Методы программирования и прикладные алгоритмы»

    для студентов специальности 075400 –

    Комплексная защита объектов информатизации

    Семестр 4

    Доцент., к.т.н. Селиванова М. В.


    Зав. кафедрой ВТиЗИ,

    проф., д.т.н. Васильев В.И.

    Уфа – 2001
    Содержание

    1. Цели и задачи курсовой работы .................………………………….……

    3

    2. Тематика курсовых работ.......………..........................…………………….

    3

    3. Порядок выполнения курсовой работы…………………………………...

    5

    4. Основные требования к выполнению и оформлению курсовой

    работы…………………………………………………………………….……


    5

    5. Оценка курсовой работы…………………………………………………...

    6

    6. Список рекомендуемой литературы………………………………………

    7

    Приложение А (справочное)……………………………….…………………

    8


    1. Цели и задачи курсовой работы

    Выполнение курсовых работ направлены на формирование у обучаемых навыков самостоятельной научно-исследовательской и практической деятельности, грамотного оформления полученных результатов, умения представить результаты своей работы в виде научного доклада и защитить их в последующей дискуссии.

    Целью курсовой работы по дисциплине «Методы программирования и прикладные алгоритмы» является:

    • дальнейшее развитие и закрепление знаний, полученных на лекционных и лабораторных занятиях в области методов программирования и прикладных алгоритмов;

    • совершенствование практических навыков работы на ПЭВМ;

    • развитие профессиональных навыков работы с CASE-средствами.


    2. Тематика курсовых работ

    Для выполнения курсовых работ студенты должны самостоятельно освоить объектно-ориентированный язык программирования Visual C++ с решением на нем задачи, поставленной перед ними руково­дителем курсовой работы. В процессе решения студенты разрабатывают математическое, алгоритмическое и программное обеспечение, анализируют полученные результаты и делают соответствующие выводы.

    В качестве перспективных задач в рамках данного направления могут быть рекомендованы:

    • анализ эффективности различных алгоритмов (сортировки, поиска, на графах ...);

    • разработка универсальных программ (пакетов программ) для решения систем линейных алгебраических и дифференциальных уравнений;

    • разработка графических редакторов и программ графической обработки;

    • разработка баз данных (БД) средствами (функциями) объектно-ориентированных сред программирования;

    • специальные задания (индивидуальные и комплексные работы) выдаются преподавателем.


    Примерные темы курсовых работ:

    1) Разработка прикладного алгоритма и его реализация на языке С++:

    а) Написать программу-таймер, которая по истечении заданного промежутка времени, величина которого вводится с кла­виатуры, выдает звуковой сигнал.

    б) Разработать программу для просмотра и редактирования базы данных студентов (ФИО, оценки, полученные на занятиях и экзамене); данные хранятся во внешнем текстовом файле.

    в) Реализовать алгоритм обменной поразрядной сортировки. Сортируемые последовательности генерировать случайным образом, исходные данные и результат, полученный после сортировки, представлять в виде набора точек в декартовой системе координат.

    г) Реализовать алгоритмы последовательного и двух его улучшений. Определить функцию изменения времени вычисления от объема исходных данных для трех алгоритмов и О-сложность (динамический массив случайных целых чисел)

    д) Реализовать алгоритм точного поиска подстроки в строке Боуера-Мура. Определить функцию изменения времени вычисления от объема исходных данных и О-сложность алгоритма (файл с исходным текстом указывает пользователь).

    е) Построение графика функции по координатам точек (полином), заданных во внешнем файле, методом наименьших квадратов.
    2) Разработка программы на языке С++ для построения сложных геометрических фигур на плоскости (исходные данные, вводимые пользователем приведены на схемах, кроме построения контура, выделенного утолщенной линией, необходимо осуществлять проверку исходных данных на соответствие полученному варианту – обязательное пересечение окружностей и т.п.):


    а) б)


    в) г)



    д) е)
    3) Разработка прикладного алгоритма и его реализация на языке С++(комплексный):

    а) Расчет площади фигуры, ограниченной выбранными пользователем функциями (полиномы n-ой, задаваемые с помощью коэффициентов), методом Монте-Карло.

    б) Построение графика функций и закрашивание вычисляемой в задании (а) площади.
    3. Порядок выполнения курсовой работы

    3.1. Курсовая работа выполняется студентами индивидуально в соответст­вии с заданием, полученным от преподавателя.

    3.2. Выполнение курсовой работы фиксируется преподавателем (в процен­тах) в зависимости от выполнения временного графика (в течение 8 календар­ных недель).

    3.3. Для выполнения курсовой работы студентам предоставляется время в дисплейных классах кафедры.

    3.4. Руководитель курсового проектирования проводит консультации на кафедре в назначенное им время.

    3.5. Защита курсового проекта осуществляется на ПЭВМ после представле­ния студентами материалов, перечисленных в пункте 4.
    4. Основные требования к выполнению и оформлению курсовой работы

    4.1. Работа оформляется в принятом для научных работ виде, включает в себя текст пояснительной записки и, в качестве приложений, дискеты, содержащие программы (тексты и исполняемые файлы), данные, а также объемные приложения, включение которых в текст работы является нецелесообразным.

    4.2. В процессе работы над курсовым проектом студент обязан:

    • ознакомиться с рекомендуемой литературой;

    • cогласовать с руководителем курсового проекта информационные аспекты (математическую основу, технологию и инструментальные средства) для решения задачи;

    • разработать алгоритмическое и программное обеспечение (Windows application) на основе объектно-ориентированного подхода;

    • решить поставленную задачу;

    • оформить пояснительную записку к курсовой работе.

    4.3. Пояснительная записка к курсовой работе содержит:

    • титульный лист с указанием наименования вуза, кафедры, темы курсового проекта, Ф.И.О. студента, факультета, группы, Ф.И.О. преподавателя, принявшего курсовой проект, дату выполнения курсового проекта;

    • постановку задачи и описание исходных данных;

    • разработку математического обеспечения работы;

    • разработку алгоритма программы в виде блок-схемы по ГОСТ 19.701-90;

    • краткое описание функциональных возможностей среды программирования, в которой выполнена курсовая работа;

    • описание работы программы;

    • полученные результаты при решении поставленной задачи (графики, таблицы, экранные формы, отчеты и т.д.);

    • выводы;

    • список литературы;

    • приложение, содержащее текст разработанной про­граммы (функции).

    4.4. В процессе разработки программных средств при курсовом проектиро­вании необходимо обеспечить дружественный интерфейс для пользователя (кнопки, панели, интерактивный режим, меню, систему помощи и т.д.).

    4.5. Во время защиты курсовой работы студенты должны быть готовы продемонстрировать работоспособность разработанного ими программно­го продукта и ответить на вопросы преподавателя.
    5. Оценка курсовой работы.

    Курсовая работа оценивается руководителем курсового проектирования по четырехбалльной системе (отлично, хорошо, удовлетворительно, неудовлетворительно) по каждому из следующих параметров:

    • оценка результатов работы;

    • оценка оформления и срока представления работы;

    • оценка защиты результатов работы.

    Примечание: вместо защиты курсовой работы студент может сделать доклад на студенческой или иной научной конференции. В этом случае оценка защиты определяется руководителем курсового проектирования или заведующим кафедрой.

    Окончательная оценка работы определяется как среднее арифметическое всех оценок с округлением до ближайшего целого.

    6. Список рекомендуемой литературы

    1. Буч Г. Дж. Объектно-ориентированный анализ и проектирование. – М.: Мир, 1998. – 620с.

    2. Дунаев С.П. Доступ к базам данных. – М.: МИФИ,1999. – 490с.

    3. Ахаян Р.В., Горев А.В. Эффективная работа с СУБД. – Санкт-Петербург: Питер, 1998. – 720с.

    4. Хомоненко А.Д. Основы современных компьютерных технологий. – Санкт-Петербург: КоронаПринт, 1998. – 448с.

    5. Шилдт Г. Самоучитель С++.2–е изд. /Пер. с англ.–СПб.: БХВ –Петербург, 1997.– 512с.

    6. Шилдт Г. Справочник программиста по С/С++.: Пер. с англ.: Учебное пособие. – М.: Издательский дом «Вильямс», 2000. – 448с.

    7. Страуструп Б. Язык программирования С++ (2–ред)./Пер. с англ.–М.: Радио и связь, 1995. – 352с.

    8. Культин Н.Б. С/С++ в задачах и примерах. – СПб.: БХВ- Петербург, 2001. – 288с.

    9. Visual C++ 5.0. Руководство разработчика.: Пер. с англ./ Д. Беннет, С. Маконин, В.В. Мейфилд и др. – К.; М.; СПб.: Диалектика, 1998. – 768с.

    10. Кнут, Дональд. Эрвин. Искусство программирования, том 3. Сортировка и поиск. 2-е изд. : Пер. с англ. : Уч. пос. — М. : Издательский дом "Вильямc" 2000. — 832 с. : ил.

    11. Вирт Н. Алгоритмы + структуры данных = программы: Пер. с англ.–М.: Мир, 1985. – 406 с.

    12. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. – М.: Мир, 1989. – 360с.


    ПРИЛОЖЕНИЕ А

    (справочное)

    1. Классы (язык C++)

    Важнейшие концепции объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм) отражены в новом типе данных – class, который был разработан в С++,.

    Классы служат для того, чтобы свойства (данные-члены) и методы для обработки этих свойств (функции-члены) объединить в один тип данных. Классы могут предоставить раз­личные права доступа к отдельным своим членам, они могут со­здавать иерархии классов посредством наследования.

    Объектно-ориентированное программирование характеризуется тремя основными свойствами:

    1. Инкапсуляция – это комбинирование записей с процедурами и функциями, манипулирующими полями этих записей. Объединение в одном классе свойств и методов называется инкапсуляцией. С данным термином тесно связаны понятия сокрытия информации и хорошо разработанного интер­фейса.

    Классы должны общаться к своим свойствам преимущественно через свои методы. Эти методы образуют интерфейс между классом и про­граммой. После выполнения описания класса для программиста важно, чтобы он мог использовать класс только через его интерфейс. О корректной обработке вызова функции и коррект­ном поведении класса заботится сам класс.

    2. Наследование. Определение класса и его дальнейшее использование для построения иерархии порожденных классов с возможностью для каждого порожденного класса, относящегося к иерархии, доступа к коду и данным всех порождающих классов.

    3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии классов, причем каждый класс иерархии выполняет это действие способом, именно ему подходящим.

    Объявление класса:

    Тип_класса имя_класса [: базовые классы]

    { список_членов_класса

    } ;

    Базовые классы — список классов, разделяемых запятыми, элементы которых наследуются определяемым (про­изводным) классом.

    Свойства класса
    Классы содержат собственные поля данных. Если образуется объект класса, то в его распоряжение предоставляется память для свойств (данных-членов). Каждый объект, следовательно, имеет собственную копию свойств. Одновременно создание объекта использу­ется для того, чтобы инициализировать данные-члены. Эту задачу берет на себя конструктор класса. Классы задают свою собст­венную область определения, т.е. свойства уничтожаются вместе с объектом, эти действия выполняет деструктор класса.

    Свойства класса:

    • могут быть описаны с атрибутом доступа public, protected или private;

    • могут быть описаны как static; статические члены класса не копируются при создании объ­екта, а остаются в единственном экземпляре для всех объ­ектов класса; статические члены класса должны определяться где-либо в программе, но не в рамках описания класса, и к ним можно об­ращаться не только через объекты, но и через имена клас­сов:

    имя_класса:: static_член_класса;

    • могут быть описаны как const; члены класса, которые описываются как const, могут быть инициализированы только один раз и после этого больше не могут быть изменены (следовательно, они должны ини­циализироваться конструктором);

    • описание класса заканчивается точкой с запятой.

    Классы, описываемые в рамках определения какой-либо функ­ции, называются локальными.

    Внутри класса разрешается определять типы, следовательно, один класс может быть описан внутри другого.
    Методы класса
    Методы класса:

    • имеют доступ ко всем свойствам класса;

    • представляют единственную возможность доступа к private-свойствам своего класса;

    • могут быть описаны как public, protected или private;

    • могут быть описаны как static;

    • могут быть описаны как const; методы класса, описанные как const, не могут изменять значения свойств и могут возвращать указатель или ссылку только на свойства класса, описанные как const. Они являются единственными методами класса, кото­рые могут вызываться для свойства-константы;

    • методы могут быть определены как внутри класса, так и за его рамками.


    Атрибуты доступа

    Атрибуты доступа public, private и protected регулируют воз­можность доступа к членам класса изнутри или извне класса (табл.1). Сле­довательно, они являются важным инструментом инкапсуляции. Прежде всего, с помощью этих атрибутов доступ к отдельным членам класса может быть ограничен.

    Таблица 1

    Атрибуты доступа к членам класса

    Атрибут доступа

    Значение

    public

    Член класса может использоваться любым методом, который является членом данного или производного класса. Доступ извне осуществляется через имя объекта и оператор расширения области видимости:

    имя_о6ъекта.имя_члена_класса

    ссылка_на_объект.имя_члена_класса

    указатель_на_объект->имя_члена_класса

    private

    Член класса может использоваться только методами данного класса и функциями-«друзьями» того класса, в котором он описан

    protected

    To же, что и private. Но дополнительно член класса с данным атрибутом доступа может использоваться методами и функциями-«друзьями» классов, производных от описанного класса. Если нет производных классов, то private и protected идентичны.


    Специальные методы класса

    Конструктор выделяет память для объекта класса и инициализи­рует данные-члены класса. Он вызывается автоматически для каждого объекта. Для того чтобы каждый класс имел в своем рас­поряжении конструктор, компилятор классов, кроме явно объяв­ленного конструктора, предоставляет конструктор по умолчанию. Создание объекта регулируется путем описания одного или не­скольких собственных конструкторов.

    Для конструкторов существует несколько важных правил:

    • Имя конструктора совпадает с именем его класса;

    • Конструктор не имеет никакого возвращаемого значения (даже void);

    • Классу без конструктора предоставляется конструктор по умолчанию;

    • Если конструктор описан явно, то конструктор по умолчанию не генерируется;

    • Конструкторы могут быть перегружены;

    • Перегрузка чаще всего используется для передачи кон­структору аргументов, предназначенных для инициализа­ции данных-членов класса;

    • Конструкторы не наследуются.

    Деструкторы вызываются автоматически, если объекты классов становятся недействительными (например, при выходе за об­ласть определения или при вызове оператора delete для указа­теля на объект класса). Деструктор уничтожает объект и освобож­дает зарезервированную память.

    Для деструкторов действительны правила, аналогичные прави­лам для конструкторов:

    • Имя деструктора также совпадает с именем его класса, но предваряется символом «

    » (тильдой):

    имя_класса()

    • Деструктор не имеет никакого возвращаемого значения (даже void);

    • Деструктор не может быть описан с ключевым словом static и const;

    • Если в классе деструктор явно не описан, то компилятор ге­нерирует деструктор по умолчанию;

    • Деструктор не наследуется;

    • Указатель на деструктор не может быть определен.

    Деструкторы отличаются от конструкторов следующими особен­ностями:

    • Деструкторам не могут передаваться аргументы, следова­тельно: деструкторы могут переопределяться, но не перегружаться, деструкторы могут описываться как virtual, деструкторы классов, производных от базовых классов, имеющих виртуальные деструкторы, автоматически стано­вятся виртуальными;

    • Деструкторы могут вызываться явно;

    • Деструктор в некоторых случаях должен быть обязательно задан явно (например, если область памяти выделена с по­мощью оператора new).

      1   2   3   4


    написать администратору сайта