Название Программирование (С)
Скачать 345.64 Kb.
|
Программа курса Код PRC1028 Название Программирование (С++) Кредиты ECTS 8 Академический год 2018-2019 Семестр 2 Информация о профессоре-преподавателе Преподаватель Халиков Хазратбек Мамуржанович Лаборатория Халиков Х.М., Абдуллаева З., Усманова С.Ю. Кафедра Основы информатики Контактный номер +998 (90) 931-26-10 Адрес Здание Б, 2-этаж, кабинет №10 xazratbek@gmail.com Краткая информация о курсе Этот курс охватывает знания и концепцию ООП для разработки приложений с помощью языка программирования С++. Он включает в себя все необходимые структуры данных, элементы и подходы программирования, в том числе файлы, структуры данных и объединения, работа с классами и стандартными алгоритмами. Данный курс состоит из 3 разделов: 1. Структуры данных 2. Объектно-ориентированное программирование (ООП) 3. Дополнительные возможности С++ Предварительные требования курса PRC1018 - Программирование (С++) (1) Результаты обучения По окончании этого курса студенты смогут: - Разрабатывать сложные структуры данных для решения разнообразных задач с использованием сложных многоуровневых структур - Выбирать наиболее подходящую структуру (файл, структура данных, объединения) для решения конкретной задачи, учитывая работу с памятью - Обеспечивать целостность данных в разрабатываемых приложениях - Разграничивать доступ к данным, используемым в создаваемых программах - Создавать многофункциональные элементы, которые могут быть внедрены в другие программы - Реализовывать алгоритмы выполнения задач и алгоритмы сортировки данных - Работать с контейнерными классами - Применять шаблоны в проектируемом ПО - Обрабатывать расширенные символы (не помещающиеся в стандартный набор ASCII) Содержание курса Лекции: 1.Структуры данных. В данной тематике раскрываются основные принципы работы с файлами, структурами данных и объединениями, а также перечислениями и использование оператора typedef. Тематики блока Часы 1.Работа с файлами. 2 2. Структуры данных. Объединения. Перечисления. Оператор typedef 2 2.Объектно-ориентированное программирование (ООП). Данный раздел охватывает основную часть программирования, т.е. применение концепции ООП для разработки приложений. Дается понятие инкапсуляции, наследования и полиморфизма. Приводятся понятия и принципы работы с классами, абстрактными классами, виртуальными функциями, шаблонами и перегрузкой операторов. Тематики блока Часы 1. Классы и объекты. Создание членов класса. Создание конструкторов. Создание деструктора. Доступ к членам и фукциям класса. Вложенные классы. Локальные классы. 4 2. Массивы объектов. Указатели на объекты. Указатель this. Указатели на производные типы. Указатели на члены класса. 2 3. Перегрузка функций. Перегрузка конструкторов. Конструкторы копирования. Аргументы по умолчанию. 2 4. Перегрузка операторов. 2 5. Наследование. Наследование и защищѐнные члены. Множественное наследование. Предоставление доступа. 2 6. Шаблоны. Обобщенные функции. Применение обобщенных функций. Обобщенные классы. 2 7. Виртуальные функции и полиморфизм. Абстрактные классы. Обработка исключительных ситуаций. Функцииterminate () иunexpected (). Классыexceptionиbad_exception. 2 3. Дополнительные возможности С++. В этом пункте раскрываются основы работы с вводом-выводом и перегрузка операторов ввода-вывода, а также дается понятие буферизованного ввода-вывода. Приводятся описания и принципы работы с контейнерными классами, векторами, а также применение алгоритмов. Также описываются функции обработки расширенных символов. Тематики блока Часы 1. Основы системы ввода-вывода. Потоки. Классы потоков. Форматированный ввод-вывод. Перегрузка операторов “>>” и “<<”. 2 2. Пространства имен. Создание функций преобразования. Применение ключевого слова asm. Буферизованный ввод-вывод. 2 3. Введение в стандартную библиотеку шаблонов. Контейнерные классы. Векторы. Списки. Ассоциативные контейнеры. Алгоритмы. Применение функторов. Класс string. 2 4. Функции обработки расширенных символов. 2 5. Стандартные контейнерные классы. Стандартные алгоритмы. 2 Лабораторные: 1.Структуры данных. В данной тематике раскрываются основные принципы работы с файлами, структурами данных и объединениями, а также перечислениями и использование оператора typedef. Тематики блока Часы 1. Работа с файлами 6 2. Структуры данных. Объединения 4 3. Перечисления. Оператор typedef 2 2. Объектно-ориентированноепрограммирование. Данный раздел охватывает основную часть программирования, т.е. применение концепции ООП для разработки приложений. Дается понятие инкапсуляции, наследования и полиморфизма. Приводятся понятия и принципы работы с классами, абстрактными классами, виртуальными функциями, шаблонами и перегрузкой операторов. Тематики блока Часы 1. Классы и объекты. Создание членов класса. 4 2. Создание конструкторов. Создание деструктора. 4 3. Доступ к членам и функциям класса. 2 4. Вложенные классы. Локальные классы. 2 5. Массивы объектов. Указатели на объекты. 2 6. Указатель this. Указатели на производные типы. 2 7. Указатели на члены класса 2 8. Перегрузка функций. 2 9. Перегрузка конструкторов. 2 10. Конструкторы копирования. Аргументы по умолчанию. 2 11. Перегрузка операторов. 6 12. Наследование. Наследование и защищѐнные члены. Множественное наследование. Предоставление доступа. 2 13. Наследование и защищенные члены. 2 14. Множественное наследование. Предоставление доступа. 2 15. Шаблоны. 2 16. Обобщенные функции. Применение обобщенных функций. 2 17. Обобщенные классы. 2 18. Виртуальные функции и полиморфизм. 2 19. Абстрактные классы. Обработка исключительных ситуаций. 2 20. Функции terminate () иunexpected (). Классы exception и bad_exception. 2 3. Дополнительные возможности С++. В этом пункте раскрываются основы работы с вводом-выводом и перегрузка операторов ввода-вывода, а также дается понятие буферизованного ввода-вывода. Приводятся описания и принципы работы с контейнерными классами, векторами, а также применение алгоритмов. Также описываются функции обработки расширенных символов. Тематики блока Часы 1. Основы системы ввода-вывода. 2 2. Потоки. Классы потоков. Форматированный ввод-вывод. 2 3.Перегрузка операторов “>>” и “<<”. 2 4. Пространства имен. Создание функций преобразования. 2 5.Применение ключевого слова asm. 2 6. Буферизованный ввод-вывод. 2 7. Введение в стандартную библиотеку шаблонов. Контейнерные классы. 2 8. Векторы. Списки. Ассоциативные контейнеры. 2 9. Алгоритмы. Применение функторов. Класс string. 2 10. Функции обработки расширенных символов. 6 11. Стандартные контейнерные классы. 4 12. Стандартные алгоритмы. 2 Нагрузка Деятельность Часы Лекция 30 Лаборатория 90 Практика - Самостоятельная работа 120 Общее 240 Стратегия обучения Развитие курса происходит следующим образом: во время лекций, студент получает необходимые теоретические знания по курсу. Два раза в течение семестра проводится промежуточный контроль в виде закрытого теста. Во время лабораторных занятий, преподаватель демонстрирует практическое применение теоретических знаний, полученных во время лекционных занятий. В конце каждого лабораторного занятия студент получает индивидуальное задание для выполнения самостоятельных работ в целях дальнейшего укрепления тематики. В течение семестра студент должен выполнить 3 практических задания, охватывающие все полученные знания в течение курса. Практические задания. 1. Разработка приложения, работающего с файлами и структурами данных 2. Разработка приложения, включающего в себя все три составляющие ООП: инкапсуляцию, наследование и полиморфизм 3. Разработка программы, которая может поддерживать расширенные символы, и включает в себя применение нескольких алгоритмов Оценивание Теоретическая часть курса состоит из двух промежуточных контролей (закрытых тестов). Практическая часть состоит из 3 практических заданий, основанных на каждом блоке: Тесты: 10% (5% за каждый) Практические задания: 30% (10% за каждый) Самостоятельная: 10% Итоговый контроль: 50% Оценивание будет осуществляться на основе следующих критериев: 1) Тест 1. Тест 1 состоит из трех заданий: две задачи, одно теоретическое. Задания будут оцениваться следующим образом: a. Задание 1 (задача). За правильное выполнение задания дается 1.2%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 0.6%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.5%. b. Задание 2 (задача). За правильное выполнение задания дается 1.2%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 0.6%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.5%. c. Задание 3 (теоретический вопрос). За правильный ответ дается 0.6%. Итого по Тесту 1: 5%. 2) Тест 2. Тест 2 состоит из трех заданий: две задачи, одно теоретическое. Задания будут оцениваться следующим образом: a. Задание 1 (задача). За правильное выполнение задания дается 1.2%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 0.6%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.5%. b. Задание 2 (задача). За правильное выполнение задания дается 1.2%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 0.6%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.5%. c. Задание 3 (теоретический вопрос). За правильный ответ дается 0.6%. Итого по Тесту 2: 5%. 3) Практическое задание 1. Практическое задание 1 состоит из трех заданий: две задачи, одно теоретическое. Задания будут оцениваться следующим образом: a. Задание 1 (задача). За правильное выполнение задания дается 2.5%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 1.2%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.8%. b. Задание 2 (задача). За правильное выполнение задания дается 2.5%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 1.2%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.8%. c. Задание 3 (теоретический вопрос). За правильный ответ дается 1%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.4%. Итого по практическому заданию 1: 10%. 4) Практическое задание 2. Практическое задание 2 состоит из трех заданий: две задачи, одно теоретическое. Задания будут оцениваться следующим образом: a. Задание 1 (задача). За правильное выполнение задания дается 2.5%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 1.2%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.8%. b. Задание 2 (задача). За правильное выполнение задания дается 2.5%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 1.2%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.8%. c. Задание 3 (теоретический вопрос). За правильный ответ дается 1%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.4%. Итого по практическому заданию 2: 10%. 5) Практическое задание 3. Практическое задание 3 состоит из трех заданий: две задачи, одно теоретическое. Задания будут оцениваться следующим образом: a. Задание 1 (задача). За правильное выполнение задания дается 2.5%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 1.2%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.8%. b. Задание 2 (задача). За правильное выполнение задания дается 2.5%. За его невыполнение, но правильную логическую последовательность (алгоритм) дается 1.2%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.8%. c. Задание 3 (теоретический вопрос). За правильный ответ дается 1%. По данному заданию задаются два вопроса: за каждый правильный ответ – по 0.4%. Итого по практическому заданию 3: 10%. 6) Самостоятельная работа. Самостоятельная работа состоит из 5 заданий: 5 задач. Все задания будут оцениваться следующим образом: a. За правильное выполнение каждого задания дается 1.4%. За невыполнение, но правильную логическую последовательность (алгоритм) дается 0.7%. По каждой задаче будет задаваться по одному вопросу: за правильный ответ – 0.6%. Итого по самостоятельной работе: 10%. Литература Основная: 1. Ulla Kirch-Prinz Peter Prinz, A Complete Guide to Programming in C++, Jones and Bartlett Publishers, 2002 2. Nazirov Sh.A., Qobulov R.V., Bobojanov M.R., Raxmanov Q.S. S va C++ tili. “Voris- nashriyot” MCHJ, Toshkent 2013, 488 b. 3. Herbert Schildt. C++: The complete reference. Fourth edition. McGraw-Hill/Osborne, 2006 Дополнительная: 1. Horstmann, Cay S. C++ for everyone/Cay S. Horstmann. Printed in the United Statesof America - 2nd ed. 2010. – P. 562. 2. Horton I.-Beginning Visual C++ 2012/ I.Horton. Published simultaneously in Canada.– 2012. –P. 988. 3. Ziborov V.V. MS Visual C++ 2010 в среде .NET (2012) Питер. 4. Борис Пахомов. C/C++ и VisualC++ 2010 для начинающих. - СБП: БХВ- Петербург. 2011. 5. BjarneStroustrup. Programming: Principles and Practice Using C++ (2nd Edition). PersonEducation, Inc. 2014. secondprinting, January 2015. 6. BjarneStroustrup. The C++ Programming Language, 4th Edition. Person Education, Inc. 2013. Third printing, April 2014. 7. J.Axmadaliev, R.Xoldorboev C++ dasturlash tilini o„rganish bo„yicha uslubiy qo„llanma(2015). 8. Макки A. Введение в .NET 4.0 и VisualStudio 2010 для профессионалов(2010). 9. Макурин Ю.Д, Сивохин A.В. Проектирование и реализация баз данных и клиентских приложений в среде MS Visual Studio.NET (2010) 10. Прохоренок Н.A. Программирование на С++ в VisualStudio 2010 Express(2010). 11. Fedorov A.A. Microsoft Visual Studio 2008. Краткие обзор ключевых новинок(2008). |