Информационные технологии и языки программирования

Куратор курса: к.б.н. Лашин Сергей Александрович

I. Учебно-методическое обеспечение дисциплины.
    Вопросы к зачету/экзамену
    Ссылки на дополнительный материал
    Лекции (2003 — 2004)
    Видео лекции
    Задания для практических занятий

I. Учебно-методическое обеспечение дисциплины.

Вопросы к зачету/экзамену

  1. Условные переходы: конструкции if и switch.
  2. Циклы for, while, do-while. Управление циклами.
  3. Строки. Работа со строками.
  4. Массивы и указатели. Операции с указателями.
  5. Управление памятью. Динамические массивы.
  6. Многомерные массивы. Способы представления многомерных массивов.
  7. Функция main: точка входа в программу. Аргументы командной строки.
  8. Операции ввода-вывода.
  9. Работа с файлами.
  10. Процедурное программирование. Функции. Прототипы.
  11. Способы передачи параметров в функции.
  12. Области видимости и существования имен.
  13. Модель памяти.
  14. Структурное программирование. Структуры. Операции над структурами.
  15. Контейнеры данных. Способы реализации.
  16. Ссылки. Применение.
  17. Модификатор const. const в параметрах функции.
  18. Использование модификатора const со ссылками и указателями.
  19. Деревья. Способы реализации.
  20. Рекурсия. Примеры рекурсивных алгоритмов.
  21. Указатели на функции. Примеры использования.
  22. Трансляция программ. Заголовочные файлы.

[Назад]

Ссылки на дополнительный материал:

На русском языке:

  1. Язык программирования «C». Отдельные главы по всем основным особенностям языка и справочное руководство.
  2. Знакомство с языком программирования C++
  3. Программирование в системе Visual С++ 6.0: (автор Климант Юрий Викторович)
  4. Основы C++. Уроки по классическому C++ на примере консольных приложений. Основные конструкции языка, Объектно-орентированное программирование (классы, наследование, полиморфизм и т. п.), перегрузка операторов, работа с вводом-выводом и др.
  5. Первые шаги Набор уроков для начинающих по многим языкам программирования.
  6. Visual C++ для начинающих или то же самое на Hello WORD.
  7. Уроки Visual C++. С помощью представленных уроков Вы сможете быстро научиться программировать на Visual C++.
    Создание диалогового приложения и Многооконного приложения с использованием AppWizard, MFC, Исходные тексты программ, рассмотренных на уроках.
  8. MFC. Уроки по программированию под Windows с использованием библиотеки MFC.
  9. Разработка DLL-модулей расширения MFC на языке Visual C++. Пример создания DLL под visual C++ с использованием MFC.
  10. Visual C++. API. Как делается MFC-приложение ручками. 41 урок.
  11. Основы Visual C++.NET
  12. Visual C++. Примеры программ (игры, компоненты). Lines.
  13. Создание элементов ActiveX с помощью библиотеки MFC.
  14. Visual C++. Технология COM и библиотека ATL
  15. Основы программирования с помощью библиотеки Microsoft Foundation Classes. (Картузов А. В., Гончаров В. И). Основы MFC (Microsoft Foundation Classes). Обработка сообщений. Ресурсы. Меню и графика.
  16. Желтые страницы C/C++.
  17. FAQ по Visual C++.
  18. Visual C++. FAQ.
  19. Советы для программистов на С++
  20. Справочники, руководства, статьи о программировании на С/C++ (citforum)
  21. Учебники по программированию, а так же по C и C++ (Библиотека Мошкова)
  22. Исходные тексты на С++

На английском языке:

  1. C Programming Tutorials
  2. MicroSoft Visual C++ Tutorials
  3. TTT system
  4. The cplusplus.com tutorial Complete C++ language tutorial

[Назад]

Лекции (2003 — 2004)

Лекция №1. Основы программирования на С++ (скачать)

Лекция №2. Массивы (скачать)

Лекция №3. Этапы развития программирования (скачать)

Лекция №4. Этапы развития программирования. Часть2 (скачать)

Лекция №5. Операции с файлами и потоками (скачать)

Лекция №6. Деревья (скачать)

Лекция №7. Трансляция  (скачать)

Лекция №8. Этапы развития программирования. Часть3 (скачать)

Лекция №9. Операторы (скачать)

Лекция №10. Наследование (скачать)

Лекция №11. Абстрактный класс (скачать)

Лекция №12. Статистические методы и атрибуты классов (скачать)

Лекция №13. Файловые потоки вывода (скачать)

Лекция №14. Шаблоны классов (скачать)

Лекция №15. Ассоциативные массивы (скачать)

[Назад]

Видео лекций (2016)

[Назад]

Задания для практических занятий

Задание №1. (скачать пример)

1. Собрать и запустить программу
2. Модифицировать программу так, чтобы она печатала что-нибудь другое

Задание №2. (скачать пример)

1. Собрать и запустить программу
2. Добиться такого же эффекта с помощью циклов while и do while

Задание №3. (скачать пример)

1. Собрать и запустить программу без параметров и с параметрами
2. Модифицировать программу так, чтобы она выводила аргументы в обратном порядке

Задание №4. (скачать пример)

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

Задание №5. (скачать пример)

1. Собрать и запустить программу
2. Инициализировать hello массивом символов, проследить, как изменился вывод

Задание №6. (скачать пример)

1. Собрать и запустить программу

Задание №7. (скачать пример)

1. Собрать и запустить программу
2. Заменить операторы вида array[i] на *(array+i), убедиться, что функциональность программы не изменилась
3. Создать еще один динамический массив такого же размера, скопировать в него содержимое массива array в обратном порядке.

Задание №8. (скачать пример)

1. Собрать и запустить программу
2. Модифицировать программу так, чтобы она делала конкатенацию 2 слов, введенных в параметрах программы и разделяла их пробелами (если в параметрах введено «aa» и «bb», то результат должен быть «aa bb»)
3. Модифицировать программу так, чтобы она делала конкатенацию произвольного количества слов, введенных в параметрах программы

Задание №9. (скачать пример)

1. Собрать и запустить программу
2. Добавить функцию range, которая сможет посчитать расстояние между двумя элементами одного списка.
3. Добавить функцию insertBefore, которая позволит добавлять элемент списка перед указанным элементом.
4. Самостоятельно реализовать двунаправленную очередь (можно использовать структуру List, но не функции работы с ними).
5. Сформировать библиотеку из созданых ранее функций.

Задание №10. (скачать пример1 и 2)

1. Реализовать классы векторов и матриц. Для простоты можно ограничиться трехмерными векторами и матрицами 3×3. Должны быть реализованы конструкторы, конструкторы копии, деструкторы, кравнения, присваивания (+, +=, -=, *= для матриц), основные арифметические операции в виде операторов (сложение, вычитание, произведение). Также для обоих классов необходимо перегрузить operator []. Для каждого класса должен быть свой заголовочный файл и объектный модуль.

Задание №11. (скачать диаграмму)

1. Реализовать иерархию классов, представленную на диаграмме. Класс Base2 является абстрактным, остальные — нет.
(необходимые поля и методы добавить самомтоятельно)
2. Продемонстрировать порядок вызова конструкторов и деструкторов.
Конструкторы виртуальных или невиртуальных базовых классов вызываются в первую очередь?
3. Продемонстрировать различие между невиртуальными и виртуальными методами.
4. Продемонстрировать различие между невиртуальными и виртуальными базовыми классами.
5. Добиться вызова абстрактного метода.

[Назад]