MyWackoSite: СпецкурсCxx/Программа ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  
Это старая версия СпецкурсCxx/Программа за 2007-04-29 13:43:02..
cheap fioricet funny ringtones free mp3 ringtones cheap ultracet cheap ativan verizon ringtones cheap diazepam ericsson ringtones rivotril online free ringtone cheap carisoprodol xanax online free ringtones free tracfone ringtones buy vicodin free wwe ringtones buy phentermine cyclobenzaprine online free verizon ringtones hydrocodone online buy xenical cheap levitra cheap hydrocodone meridia online nokia ringtones cheap ultram cheap soma order propecia buy ativan cheap adipex lorazepam online samsung ringtones free mono ringtones free sprint ringtones soma online cheap celexa buy vicodin cialis online free sonyericsson ringtones canadian casino online cyclobenzaprine online qwest ringtones polyphonic ringtones ultram online order xanax free tracfone ringtones free qwest ringtones lipitor online cheap ultram nexium online free sony ericsson ringtones cheap ativan cheap xenical generic cialis carisoprodol online sagem ringtones meridia online free nextel ringtones tramadol buy carisoprodol mixing valium and xanax cheap norco valium online cyclobenzaprine online clonazepam online kyocera ringtones adipex online free sonyericsson ringtones carisoprodol online cheap hydrocodone free sony ericsson ringtone cheap meridia zanaflex online cingular ringtones cheap viagra wwe ringtones free nokia ringtone free mtv ringtones cheap vicodin meridia online free sony ericsson ringtones sagem ringtones free qwest ringtones sony ringtones cheap tramadol free qwest ringtones free polyphonic ringtones cheap xanax sagem ringtones free funny ringtones sony ericsson ringtones cheap viagra free ringtones free samsung ringtones ambien online valium half life ultram online sony ericsson ringtones cheap phentermine valium side effects cheap valium cheap diazepam free samsung ringtone cheap hoodia diazepam online free mp3 ringtones viagra online xanax soma online but adipex cialis online cheap pharmacy online soma online order hydrocodone didrex online cheap lorazepam funny ringtones sildenafil online levitra online free tracfone ringtones casino craps online free ringtones didrex online cialis online free mp3 ringtone nextel ringtones jazz ringtones free motorola ringtones punk ringtones wellbutrin online cool ringtones free alltel ringtones free alltel ringtones buy tramadol free nokia ringtones but viagra adipex online norco online wellbutrin online cheap lorazepam cheap propecia sprint ringtones online ultracet cheap zoloft cool ringtones free tracfone ringtones free motorola ringtones cheap cialis generic levitra buy norco order phentermine cheap carisoprodol cheap cialis injecting valium free music ringtones motorola ringtones clonazepam online free polyphonic ringtones viagra online sagem ringtones alltel ringtones cheap diazepam adipex online buy xanax diazepam online cheap meridia verizon ringtones viagra online carisoprodol online generic vicodin cheap viagra fioricet online cheap flexeril adipex online soma online mono ringtones free sony ericsson ringtones buy meridia verizon ringtones cingular ringtones valium online nextel ringtones free polyphonic ringtone nextel ringtones norco online midi ringtones meridia online free real ringtones diazepam online but ultram mp3 ringtones cheap alprazolam free samsung ringtones sprint ringtones xenical free samsung ringtones alprazolam online cheap nexium buy xanax motorola ringtones ==Факультативный спецкурс «Программирование на C »==
Антон Дедов
Дмитрий Иртегов
Никита Каменский
отдельно благодарим за участие в обсуждении преподавателя ФИТ В. Рылова

Цели и задачи


Цели курса:
  1. Ознакомление с культурой и принятыми практиками программирования в сообществе C, знакомство с современным состоянием языка.
  2. Получение знаний, необходимых для создания более качественного и безопасного кода.
  3. Формирование сознательного отношения к использованию тех или иных средств языка, а не изучение «крутых» трюков.

Основные темы курса:
* проектирование классов;
* использование стандартной библиотеки и ее признанных расширений;
* безопасность исключений и требования, которые это налагает на дизайн.

Содержание курса

Курс условно разбит на несколько модулей. Каждый модуль логически объединяет смежные темы.

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

Список модулей:
  1. Введение в язык
  2. Объектно-ориентированное программирование на C
  3. Исключения
  4. Шаблоны
  5. Введение в стандартную библиотеку C 

Модули естественным образом разбиваются на части, минимальная единица – лекция. Лекции разных модулей могут перемежаться для облегчения понимания смежных тем из других модулей.

Введение в язык

Лекция 1

Длительность: 2часа

  1. Назначение языка, краткая история, основные возможности.
  2. Объявления и определения.
  3. Встроенные типы данных. Переменные; квалификаторы const.
  4. Выражения, операторы и управляющие структуры.
  5. Указатели. Массивы. Строковые литералы. Ссылки.
  6. Области видимости переменных.
  7. Структуры как средство группирования данных.
  8. Функции.
    Объявление и определение. Аргументы и возвращаемые значения. Аргументы по умолчанию. Указатели на функцию. Inline.
  9. Перегрузка функций и операторов. Разрешение имен функций при перегрузке.
  10. Структура программы. Понятие единицы трансляции. Понятие о правиле одного определения.

Лекция 2

Длительность: 2часа

  1. Классы.
  2. Члены класса.
    Ограничения доступа как средство для поддержки инкапсуляции. Дружба.
  3. Объекты. Определение переменных-объектов.
  4. Конструкторы и деструкторы классов. Порядок инициализации и уничтожения членов.
  5. Способы размещения объектов в памяти: автоматический, динамический, статический.
  6. Динамическая память. Операторы new, delete, delete[].
  7. Генерируемые компилятором определения членов классов.
  8. Использование объектов: вызов методов, передача объекта в качестве параметра функции. Понятие временного объекта.
  9. Передача объектов по значению и по ссылке.

Лекция 3

Длительность: 1час, как и все последующие лекции.

  1. Пространства имен.
    Пространства имен как область видимости. Открытость пространств имен. Безымянные пространства имен. Квалификаторы using. Fully specified name.
  2. Поиск и разрешение имен. Поиск Кёнига.
  3. Иерархии классов.
    Уровни доступа наследования. Иерархии is-a, и реализован посредством. Агрегирование как альтернатива наследованию.
  4. Конструкторы и деструкторы.
    Порядок инициализации классов предков. Порядок вызовов деструкторов. Виртуальные деструкторы.
  5. Виртуальные функции. Абстрактные классы.
  6. Различие между перегрузкой, замещением и сокрытием функций.
  7. Введение в множественное наследование.

Исключения (часть I)

Лекция 1

  1. Назначение механизма исключений.
  2. Группировка исключений.
  3. Поимка исключений, порядок. Поимка по константной ссылке. Re-throw.
  4. Ресурсы и исключения.
    Исключения в конструкторах. Использование std::auto_ptr и boost::shared_ptr. Идиома RAII.
  5. Исключения и деструкторы.

Объектно-ориентированное программирование

Лекция 1

  1. Основные принципы ООП.
  2. Проектирование классов для разного назначения: объекты-значения, базовые классы, классы исключений, шаблоны классов и т.п.
  3. Open-Close Principle как одна из целей объектно-ориентированной архитектуры.
  4. Принцип подстановки Лисковой.

Лекция 2

  1. Принцип интерфейса.
    Какие функции составляют интерфейс класса. Какие функции должны быть членами класса, какие нет.
  2. Использование абстрактных классов.
    Делайте нетерминальные классы абстрактными. Dependency Inversion Principle. Interface Segregation Principle.
  3. Инкапсуляция и проектирование интерфейса.
    Классы обладающие поведением должны скрывать данные. Смешивание открытых и закрытых членов вредно.
  4. Паттерн невиртуального интерфейса (NVI pattern).

Лекция 3

  1. Вопросы перегрузки операторов:
    • Перегрузка new, delete.
    • Перегрузка операторов, ->, [] и т.п.
    • Перегрузка операторов, >>, <<.
    • Какие операторы не рекомендуется перегружать.
  2. Вложенные классы.
  3. Идиома Pimpl.
  4. Паттерн Proxy.

Шаблоны (часть I)

Лекция 1

  1. Понятие шаблона. Инстанцирование.
  2. Шаблонные функции. Перегрузка.
  3. Шаблоны классов.
  4. Шаблоны членов классов.

Стандартная библиотека (часть I)

Лекция 1

  1. Обзор и организация стандартной библиотеки.
  2. Использование строк.
  3. Контейнеры. Типы контейнеров.
    Последовательности, ассоциативные контейнеры, адаптеры контейнеров. Требования к стандартным контейнерам.

Шаблоны (часть II)

Лекция 1

  1. Специализация шаблонов классов.
  2. Частичная специализация шаблонов классов и шаблонов функций.
  3. Примеры использования шаблонов: классы свойств; паттерн стратегия.

Стандартная библиотека (часть II)

Лекция 1

  1. Алгоритмы.
    Описание наиболее популярных алгоритмов STL: find, for_each, copy, transform. Что делает алгоритм remove. Идиома erase(remove).
  2. Итераторы.
    Что такое стандартный итератор STL. Типы итераторов. Как создавать итераторы совместимые со стандартными.

Лекция 2

  1. Введение в потоки STL.
  2. Потоковые итераторы.

Исключения (часть II)

Лекция 1

  1. Разработка кода безопасного с точки зрения исключений.
  2. Гарантии безопасности исключений (гарантии Абрамса).
  3. Стратегии обработки ошибок и исключительных ситуаций.

Литература

Список литературы составлен в алфавитном порядке.

  1. Андрей Александреску. Современное проектирование на С. Обобщенное программирование и прикладные шаблоны проектирования. // 2002
  2. Гради Буч. Объектно-ориентированный анализ и проектирование. С примерами приложений на C . // 2000; В библиотеке НГУ
  3. Дэвид Вандевурд, Николаи М. Джосаттис. Шаблоны C. Справочник разработчика. // 2003; В библиотеке НГУ
  4. Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. // 2001; В библиотеке НГУ
  5. Скотт Мейерс. Эффективное использование C . 50 рекомендаций по улучшению ваших программ и проектов. // 2000 В библиотеке НГУ
  6. Скотт Мейерс. Наиболее эффективное использование C . 35 новых рекомендаций по улучшению ваших программ и проектов. // 2000 В библиотеке НГУ
  7. Скотт Майерс. Эффективное использование STL. // 2002
  8. Герб Саттер. Решение сложных задач на C . // 2002
  9. Герб Саттер. Новые сложные задачи на C : 40 новых головоломных примеров с решениями. // 2005; В библиотеке НГУ
  10. Герб Саттер и Андрей Александреску. Стандарты программирования на C : 101 правило и рекомендация. // 2005; В библиотеке НГУ
  11. Бьерн Страуструп. Язык программирования C . // 2001; В библиотеке НГУ
  12. Бьерн Страуструп. Дизайн и эволюция языка C . // 2000
  13. ISO/IEC 14882:1998(E), Programming Languages??? C (ISO and ANSI C standard).
  14. Robert C. Martin. Design Principles and Design Patterns. // objectmentor.com 2000

Полезные ссылки


 
Файлов нет. [Показать файлы/форму]
Много комментариев (2). [Показать комментарии/форму]