Министерство образования Российской Федерации Государственное образовательное учреждение высшего профессионального образования СЕВЕРО-ЗАПАДНЫЙ ГОСУДАРСТВЕННЫЙ ЗАОЧНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра компьютерных технологий и программного обеспечения
ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ
Рабочая программа Методические указания к изучению дисциплины Задания на лабораторные работы, контрольную работу и курсовой проект
Факультет информационных технологий и систем управления Направление и специальность подготовки дипломированного специалиста: 654600 - информатика и вычислительная техника 220100 - вычислительные машины, комплексы, системы и сети Направление подготовки бакалавра: 552800 - информатика и вычислительная техника
Санкт-Петербург 2004
Утверждено редакционно-издательским советом университета УДК 681.3.06 Технологии программирования: Рабочая программа, методические указания к изучению дисциплины, задания на лабораторные работы, контрольную работу и курсовой проект. – СПб.: СЗТУ, 2004.-22 с. Методические указания составлены в соответствии с требованиями государственного образовательного стандарта высшего профессионального образования по направлению подготовки дипломированного специалиста 654600 ( специальность 220100 – «Вычислительные машины, комплексы, системы и сети») и направлению подготовки бакалавра 552800 для дисциплины цикла СД «Технологии программирования». Рабочая программа содержит перечень тем, подлежащих изучению, задания по вариантам и требования для выполнения и оформления лабораторных работ, контрольной работы и курсового проекта. Рассмотрено на заседании кафедры компьютерных технологий и программного обеспечения (КТ и ПО) 11.12.2003 г., одобрено методической комиссией факультета информатики и систем управления (ФИТСУ) 24.05.2004 г.
Рецензенты: кафедра компьютерных технологий и программного обеспечения (Г.И. Анкудинов, д-р техн. наук, проф.); кафедра прикладной и компьютерной оптики СПбГИТМО ( О.В. Багдасарова, канд. техн. наук, доц. ). Составители: Н.В. Рачева, доц.; Е.О. Шумова, доц.
© Северо-Западный государственный заочный технический университет, 2004
2
ВВЕДЕНИЕ В развитии современных технологий программирования с 90-х годов прошлого века утверждается основная методология - объектноориентированное программирование (ООП). «Фиксируем поведение реального мира при скрытых деталях разработки» – такова основная идея ООП. Авторы программных проектов думают больше о логике поведения объектов, чем о технике программирования. Если потенциальный пользователь делает заказ на программный продукт (ПП), то прежде всего он несет ответственность за полноту и корректность формулировок требований к ПП. Проектировщик ПП, в данном случае, отвечает за качество описания предъявленных требований к ПП, т.е. реализуемость исполнительных функций и форму представления информации для пользователя. Предложенная программа составлена, исходя из запроса на проектирование ПП по автоматизации документооборота в самых различных областях деятельности человека. Для практической демонстрации метода и стиля ООП был выбран С++, поскольку он является языком самого широкого назначения и располагает всеми свойствами ООП. Изучение данной дисциплины требует знаний основ программирования языка Borland С++, полученных ранее на младших курсах. 1. Содержание дисциплины 1.1. Содержание дисциплины по ГОС Задача проектирования программных систем. Организация процесса проектирования программного обеспечения (ПО). Использование декомпозиции и абстракции при проектировании ПО. Специфики процедур и данных. Декомпозиция системы. Методы проектирования структуры ПО. Методология объектно-ориентированного программирования. Технологические средства разработки программного обеспечения: инструментальная среда разработки, средства поддержки проекта, отладчики. Методы отладки и тестирования программ. Документирование и оценка качества программных продуктов. Методы защиты программ и данных. Проектирование интерфейса с пользователем. Структуры диалога. Поддержка пользователя. Многооконные интерфейсы. Примеры реализации интерфейсов с пользователем и использованием графических пакетов.
3
1.2. Рабочая программа
(объем курса 170 часов) 1.2.1. Проектирование программных систем [3], с.102-127 ; [5], с.382-394 Программа. Программное обеспечение (ПО). Программный продукт (ПП). Программная система (ПС). Жизненный цикл ПП. Задача проектирования ПП. Организация процесса проектирования ПП (ПС). Использование декомпозиции и абстракции при проектировании ПО. 1.2.2. Методы проектирования ПС и ПП [1], c. 18-34; [2], c. 162-168 Разработка требований к ПП. Определение спецификаций для ПП. Составление технического задания на ПП. Декомпозиция и абстракция данных при проектировании ПП. Оформление документов на техническое задание (ТЗ). 1.2.3. Методология объектно-ориентированного программирования [1], c. 96-99; [3], с.231-248 Базовые понятия объектно-ориентированного программирования (ООП). Специфика функций (процедур) и данных. Инкапсуляция. Полиморфизм. Наследование. Технология ОПП. Инструментальная среда ООП для разработки ПО. Визуальное проектирование. Свойства. События. 1.2.4. Объектно-ориентированные языки и визуальное программирование
[4], c.185 –199, c.200 –206 Классификация языков программирования. Языки структурного программирования. Объект. Класс. Метод. Доступ к данным. Область видимости. Абстрактный тип данных (АТД). Конструкторы и деструкторы. Шаблоны. Контейнерные классы. 1.2.5. Системы поддержки файлов данных [4], c.275 –324, c.317 –367 Определение файловой системы. Связь файлов с программными проектами. Особенности взаимодействия с операционным окружением, в том числе, со средой Window’s. 4
1.2.6. Пользовательский интерфейс [1], c.110 –131, c.132 –162 Организация диалоговых режимов работы ПО. Основные принципы проектирования дружественного пользовательского интерфейса. Организация поддержки пользователя. Разработка справочной информации для пользователя. Структуры построения диалоговых режимов «пользователь – ПО». Многооконные интерфейсы. Использование графических пакетов. 1.2.7. Методы отладки и тестирования ПП [1], c.90 –95 Организация процесса проверки работоспособности ПП. Отладка. Верификация. Тестирование. Разработка тестов. Оценка качества тестов. 1.2.8.Критерии и показатели качества ПП [2], c.90 –124, c.317 –367 Оценка качества программных продуктов. Критерии качества программы. Внешние и внутренние показатели качества ПП. Методы защиты прав на распространение информационных и программных файлов. Документирование ПП. 1.3. Тематический план лекций для студентов очно-заочной формы обучения (24 часа)
1. Технологии проектирования программного продукта……….. 2 часа 2. Показатели качества программного продукта ……………….. -“-“ 3. Архитектура ПП. Модульное построение. …………………… -“-“ 4. Стиль структурного программирования………………………. -“-“ 5. Базовые концепции ООП……………………….………………. -“-“ 6. Методология ООП……………………………….……………... -“-“ 7. Объект. Метод. Класс. Конструкторы и деструкторы ……….. -“-“ 8. Сложные структуры данных. Связь с базами данных………… -“-“ 9. Построение диалогового режима………………………………. -“-“ 10. Проектирование пользовательского интерфейса…………….. -“-“ 11. Отладка. Тестирование. Разработка тестов…………………… -“-“ 12. Сопровождение ПП. Документирование ПП…………………. -“-“
5
1.4. Перечень практических занятий
(4 часа) 1. Разработка проектов на изготовление ПП в среде RAD (4 часа). (RAD – rapid application development – среда быстрой разработки) 1.5. Перечень лабораторных работ
(24 часа) 1. Знакомство с инструментальной средой программирования RAD (2 часа). 2. Создание и отладка программ-приложений в среде RAD (4 часа). 3. Проектирование интерфейсных приложений (6 часов). 4. Создание информационных таблиц для разнотипных данных (4 часа). 5. Проектирование программ-приложений для работы с базами данных (4 часа). 6. Организация тестирования программ-приложений (4 часа). 2. Библиографический список Основной: 1. Бобровский С. Самоучитель программирования на языке С++ в системе Borland C++ Builder 5.0. – М.:2001. 2. Павловская Т.А. С/С++. Программирование на языке высокого уровня: Структурное программирование. – СПб.,2003. 3. Павловская Т.А. С/С++. Программирование на языке высокого уровня: Структурное программирование. – СПб.,2002. 4. Архангельский А.Я. С++ Builder 6. – М.:2002. 5. Подбельский В.В., С.С.Фомин. Программирование на языке Си: Учеб. пособие. – М.: Финансы и статистика, 2002. Дополнительный: 6. Тимофеев В.В. Язык С и С++. Программирование в среде С++Builder 5. - М.: ЗАО «Издательтво БИНОМ», 2000. 7. Подбельский В.В., Фомин С.С. Программирование на языке Си. М.: Финансы и статистика, 1999. 8. Подбельский В.В. Язык Си++. - М.: Финансы и статистика, 1999. 9. Березин Б.И., Березин С.Б. Начальный курс С и С++. – М.: Диалог МИФИ, 1996. 3. Задание на выполнение лабораторных работ Предложенные задания на лабораторные работы могут выполняться в любой среде RAD, построенной на принципах объектноориентированного программирования. Преподаватель, ведущий занятия с 6
группой, может расширить или дополнить варианты заданий исполнительными функциями по своему усмотрению, либо предложить собственный вариант задания. Работа считается выполненной после демонстрации практических навыков, либо исполняемого кода программы-приложения и внятных объяснений выполненных установок. Работа №1 Знакомство с инструментальной средой RAD 1. Цель работы Ознакомиться с основами визуального программирования в среде RAD. 2. Задание 1. Запустить выбранную программную среду RAD, например, BС++ Builder (возможно использование любой другой RAD по согласованию с преподавателем). 2. Ознакомиться с командами главного меню, назначением инспектора объектов: редактором форм и редактором кодов, а также палитрой компонент с помощью подсказок. 3. Установить закладку Standard и последовательно на редактор форм перетаскивать визуальные компоненты, научиться менять свойства объектов, используя возможности инспектора объектов. Работа №2 Создание и отладка программ-приложений в RAD 1. Цель работы Изучить команды среды RAD для проектирования программ-приложений. 2. Задание Создать прокрутку списка следующих дисциплин: Высшая математика, Физика, Технологии программирования, Сети и средства телекоммуникаций, Операционные системы, Экономика предприятий, Системное программное обеспечение, используя следующие компоненты: ListBox, EditBox и Button. С помощью инспектора объектов определите начальные значения свойств предложенных компонент: Caption форм ~ «Перечень дисциплин»; Caption кнопки ~ «Результат»; Text редактируемого поля ~ «семь 7
дисциплин». Предусмотреть на каждое нажатие кнопки Button поочередное появление перечисленных дисциплин в окне EditBox. Инспектор объектов перевести в режим Events. Вызвать редактор кодов для обработки события нажатия кнопки Button. Используя свойство Items объекта ListBox, написать исходный текст на С++ для функции Button1Click. Выполнить компиляцию и сборку приложения через команду RUN. Примечание.
~ символ означает установить подсказку или смысловое значение.
Работа №3 Проектирование интерфейсных приложений 1. Цель работы Получить практические навыки в проектировании пользовательского интерфейса в среде RAD. 2. Задание Спроектировать простейший текстовой редактор со следующими исполнительными функциями: открыть, сохранить, выполнять поиск и замену текста, менять шрифт, размер и цвет текста (см. рис. 1).
Рис. 1. Проект экранной формы для работы №3.
8
Работа №4 Создание информационных таблиц для разнотипных данных 1. Цель работы Изучить принципы построения таблиц данных в среде RAD. 2. Задание Создать две связанные по ключ-полю таблицы данных, содержащих следующие сведения: Наименование объекта 1
Характеристика объекта (атрибут )
Характеристика Характеристика Объекта (атрибут2) объекта (атрибут3)
Наименование объекта 2
Характеристика Характеристика объекта (атрибут1) объекта (атрибут2)
Характеристика объекта (атрибут3)
Объекты и его характеристики могут быть выбраны по своему усмотрению, но согласованы с преподавателем, ведущим лабораторные работы, либо взять в качестве исходных данных ниже приведенные таблицы с заданными значениями. Код издания
Код издания
Наименование издания Дата подписки
Тип издания
Тираж
Отпускная цена
Количество экземпляров
Для данного примера установить в качестве ключ-поля - код издания. Работа №5 Проектирование программ-приложений для работы с базами данных 1. Цель работы Научиться писать программы-приложения по созданию и обработке информационных файлов. 2. Задание Написать код функций, обрабатывающих корректировки сведений в таблицах, предложенных в работе № 4. Назначение исполняемой функции выбрать самостоятельно, либо к предложенному примеру работы № 4 написать код функции на выполнение расчета итоговой суммы по подписке.
9
Работа №6 Организация тестирования программ-приложений 1. Цель работы Получить навыки в разработке тестов для готового ПО. 2. Задание Составить набор тестов для проверки исполнительных функций программ-приложений, написанных для выполнения работы № 5, выполнить тестовые прогоны и проанализировать полученные результаты. Степень сложности и количество тестов определяется, исходя из написанных функций в работе № 5. Например, для проверки примера в работе № 4 набрать 7-11 изданий и произвести расчет, сверив результат с вычислением на калькуляторе. 4. Задание и методические указания к выполнению контрольной работы 4.1. Основные требования к контрольной работе и варианты задания
Написать программу, удовлетворяющую ниже перечисленным требованиям: 1. Построить класс, включив в явном виде обязательно функцию конструктора и деструктора. В качестве задания - выполнить расчет выделенной - заштрихованной площади (см. табл. 1), где фигуру следует выбрать по номеру варианта (последняя цифра шифра). 2. Программную реализацию задачи можно выполнить в интегрированной среде Вorland С++, либо в инструментальной оболочке ВC++ Builder 5.
10
Таблица 1 1
2
3
4
5
6
7
8
9
10
11
4.2. Пример программы на построение класса пользователя /* 1. Запустить программу на выполнение. 2. Разобраться с алгоритмом задачи по исходному тексту. 3. Добавить функцию, написанную по своему варианту. 4. Описание класса и функции, входящие в этот класс перенести в *.h файл. 5. Протокол выполнения программы представить как текстовой файл. */ # include <stud.h> void main (void) // главный модуль { z.vvod(); z.vivod(); getch(); }
В любом заданном каталоге размещается пользовательский файл с внешним именем stud.h, содержание которого определено ниже. # include
# include # include <math.h> // const double ang_r=0.0175; // 0.0175 - коэффициент перевода значения угла из град. в рад. ofstream t ("class_lh.txt"); // протокол выполнения // class ang { double d_value; public: void s_v(void); void print(void); double g_sinus(void); double g_rad(void); } degree; // void ang::s_v(void) { cout<<"Введите угол в градусах:"; cin>>d_value; t<<"Введите угол в градусах:"<
// void ang::print(void) { cout<<"Угол в градусах - "; cout<
4.3. Протокол результата выполнения программы Подобный результат может быть получен для любого варианта (см. табл. 1). Контрольная работа считается выполненной и правильно оформленной при наличии титульного листа, текста задания, выбранного по своему шифру, исходной программы на языке ВС++ версии 3.0 (программная среда ООП может быть изменена по согласованию с преподавателем) и протокола, подтверждающего работоспособность представленной программы, подобно приведенному ниже. Введите угол в градусах: 45 Угол в градусах - 45 Угол в радианах - 0.7875 Синус угла равен=0.708591
13
5. Задание на курсовой проект 5.1. Основные требования к курсовому проекту Курсовой проект выполняется во втором семестре изучения дисциплины после знакомства с методологией объектно-ориентированного программирования и средствами визуального проектирования. Задача может быть определена студентом самостоятельно и согласована с преподавателем, либо выбрана по последней цифре шифра из перечня, приведенного ниже. Задача должна быть ограничена предложенной предметной областью, где выделены объекты информации и ключи-связи между ними. Техническое задание (ТЗ) на задачу студент составляет самостоятельно по указанным разделам. Пояснительная записка курсового проекта должна отражать каждый раздел ТЗ. В каждом задании предлагается классический вариант работы с информацией: два объекта информации, где количество полей каждого объекта не более шести и не меньше трех, и одна связь между двумя объектами. В общем виде объект информации и таблица связи имеют следующую структуру: Наименование объекта 1
Характеристика Характеристика объекта (атрибут1) объекта (атрибут2)
Характеристика объекта (атрибут3)
Наименование связи 1
Характеристика Связи (атрибут 1)
Характеристика связи (атрибут 3)
Характеристика связи (атрибут 2)
5.2. Варианты заданий на курсовой проект 1. Предметная область «Гараж» «Транспорт» Наименование единицы
Гос. номер Марка Год выпуска
«Обслуживающая бригада» № бригады ФИО бригадира «График работы» Наименование единицы
№ бригады
Количество людей
Дата
14
Первоначальная стоимость
Статус бригады
Время Затратное время
2. Предметная область «Выставка» «Зал» № зала
Площадь в кв.м
«Экспонат» Наименование экспоната
ФИО ответственного смотрителя
Код экспоната Данные владельца
«Схема размещения» № зала Код экспоната
Этаж
Статус помещения
Стоимость экспоната
Дата размещения
Срок размещения
3. Предметная область «Спорт» «Тренер» ФИО тренера
Специализация
«Группа» № группы Вид занятий «Закрепление групп» ФИО тренера № группы
Квалификация
Возраст
Гонорар
Статус
№ договора
Дата закрепления Длительность занятий
4. Предметная область «Кинопрокат» «Фильм» Наименование фильма
Наименование киностудии
«Кинозал» № зала Площадь в кв.м
Жанр фильма
Категория зала
15
Год выпуска
Стоимость проката
Количество посадочных мест
«Кино-показ» № зала Наименование фильма
Дата показа
Время показа
5. Предметная область «Учебная точка» «Аудитория» № аудитории
Площадь в кв. м
«Учебная группа» № группы Специальность «Расписание» № аудитории
Категория аудитории
Курс
№ группы
Количество мест
Год последнего ремонта
Факультет
Дата
Время
Наименование дисциплины
6. Предметная область «Командировки» «Преподаватель» ФИО Дом. телефон преподавателя «Дисциплина» Наименование дисциплины
Должность Штатный/ внештатный сотрудник
Время в днях
«Командировки» ФИО преподавателя
Специальность
Наименование дисциплины
Особые условия
Дата приезда
Дата отъезда
7. Предметная область «Библиотека» «Книга» Наименование книги
ФИО автора
Первоначальная цена
16
Тип жанра
Год приобретения
«Читатель» № читательского билета «Выдача книг» Наименование книги
ФИО читателя
№ читательского билета
Дом. телефон
Дата выдачи книги
№ паспорта
Срок пользования книгой
ФИО дежурного библиотекаря
8. Предметная область «Закрепление дисциплин» «Кафедра» Наименование кафедры «Дисциплина» Наименование дисциплины
Код Аббревиатура кафедры наименования
Дата образования
№ аудитории
Специальность
Направление
Факультет
«Закрепление» Код Наименование кафедры дисциплины
Курс
№ приказа
ФИО проректора
9. Предметная область «Склад» «Товар» Наименование товара «Предприятие» Наименование предприятия
Код товара
Единицы измерения
Год выпуска
Телефон предприятия
«Расход/приход» Код товара Наименование предприятия
Адрес
Дата
17
Первоначальная стоимость
Статус предприятия
Количество товара
№ документа
10. Предметная область «Туристская путевка» «Тур. агент» ФИО тур. агента № страхового свидетельства «Тур. группа» № группы Количество людей «График поездок» ФИО тур. агента
№ ИНН № паспорта
Срок визы
Возрастная категория
№ группы Дата
№ договора
Срок поездки
5.3.Разделы технического задания (ТЗ) на разработку программного обеспечения (ПО) 1. Назначение ПО. ( Образец: «Автоматизированная обработка документов по проведению подписки на периодическую печать: газеты, журналы») 2. Определение исполнительных функций ПО. ( Следует привести перечень исполняемых функций ПО с конкретными пояснениями. Образец: - первоначальное занесение исходной информации (например: ФИО подписчика, адрес, код подписного издания, название, цена и т.п.); - выбор информации по заданной характеристике, например: перечень абонентов на «Санкт-Петербургские ведомости» ); - расчет итоговой суммы на подписные издания по каждому абоненту; - далее перечень может быть продолжен в зависимости от конкретной задачи). 3. Определение последовательности (этапов) разработки ПО. (Изучение предметной области конкретной задачи. Согласование с заказчиком (в учебном варианте, это преподаватель – руководитель дипломного проекта) исполнительных функций ПО, этапов и возможных сроков выполнения ПО). 4. Анализ входной/выходной информации (количественные и качественные характеристики данных, формы хранения и представления результатов обработки информации, документов для пользователя) по каждой исполнительной функции ПО. 5. Определение спецификаций на отдельные программные модули и на входную/выходную информацию (спецификация = требование + средство реализации требования). 18
6. Разработка информационного обеспечения (ИО). Выбор системы поддержки файловой системы (базы данных). 7. Проектирование пользовательского интерфейса (схема управления процессом ввода/вывода информации, перечень запросов, корректирующие вычислительный процесс сообщения пользователя, а также формы, размеры представления информации для пользователя). 8. Разработка тестов (тестовая база, тестовое покрытие, отдельно выделив «пограничные» или «узкие места»). 9. Требования к справочной информации по сопровождению ПО (проектирование help-справочника, наличие сопроводительного документа readme.doc, исходных текстов, форм представления документации на готовое ПО). ТЗ разработал: ФИО студента.
В зависимости от конкретной задачи приведенные пункты в ТЗ могут быть расширены или свернуты, добавлены или убраны, сделаны ссылки на ГОСы, а также при выполнении ПО по профилю профессиональной деятельности студента, могут быть введены требования, принятые для данной организации (предприятия). 6. Пример тестового задания Тестовое задание приведено для самостоятельной подготовки к экзамену. 1. Определите значение К как результат выполнения фрагмента программы, если задан массив следующего вида: а= {1 0 2 0 3 0 4 0 5} for (i=0, k=0; i
3
2.
6
3.
5
4.
4
2. Определите значения массива а как результат выполнения программы: # include # define n 5 int &max(int x[]) { int j = 0; for( int i=1; i x[i]) ? j : i; return x[j]; } void main() { int a[n] = {1,22,3,4,5}; cout << "\n max(a) = "<< max(a); 19
max(a) = 0; for( int i=0; i
3. Укажите ключевое слово, реализующее доступ к члену класса:
а описанного
class pr { int a; public: pr (int x) { a=x; cout <<”\n Объект класса pr - ”<
2. private 3.
public
4.
friend
4. Укажите правильный результат выполнения приведенной программы: # include class pr { int d; public: void set(); void print(); }; void pr::set() { cout << "\n Введите целое число:"; cin >> d; } void pr::print() { cout << "Задано целое число = "<< -d; cout << "\n Измененное число = "<< d*2; } void main() { pr p; 20
p.set(); p.print(); } 2. 1. Введите целое число:7 Введите целое число:7 Задано целое число = -7 Задано целое число = 7 Измененное число =14 Измененное число =14 3. Введите целое число:7 Задано целое число = 7 Измененное число =14 4. Введите целое число:7 Задано целое число =-7 Измененное число =14
5. Укажите правильный результат выполнения приведенной программы: # include struct base { void function (int i) { cout<<"\n base::i = "<
Recommend Documents
No documents