МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное бюджетное образовательное учреждение

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ
ФЕДЕРАЦИИ
федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Алтайский государственный университет»
Рубцовский институт (филиал)
УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС ДИСЦИПЛИНЫ
ПРОГРАММИРОВАНИЕ НА C++
Специальность – 230101.65 Вычислительные машины, комплексы,
системы и сети
Форма обучения – очная
Кафедра – математики и прикладной информатики
Рубцовск - 2011
При разработке учебно-методического комплекса в основу положены:
1) ГОС ВПО по специальности 230101.65 Вычислительные машины,
комплексы, системы и сети, утвержденный Министерством образования
РФ «27» марта 2000 г., 224 ТЕХ/ДС
2) Учебный план по специальности 230101.65 Вычислительные машины,
комплексы, системы и сети, утвержденный решением Ученого совета РИ
(филиала) АлтГУ от «23» мая 2011г., протокол № 12
Учебно-методический
комплекс
одобрен
на
заседании
кафедры
математики и прикладной информатики от «27» июня 2011 г., протокол
№15
СОДЕРЖАНИЕ
1. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА .....................................................................4
2. ТЕМАТИЧЕСКИЙ ПЛАН ................................................................................6
3. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ ..................................................................8
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ОСВОЕНИЮ УЧЕБНОЙ
ДИСЦИПЛИНЫ .............................................................................................13
5. МАТЕРИАЛЫ К ПРОМЕЖУТОЧНОМУ И
ИТОГОВОМУ КОНТРОЛЮ.........................................................................17
5.1 Примерный перечень тестовых заданий..................................................17
5.2 Примерный перечень вопросов к экзамену.............................................32
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИЕЫ 37
7. СПИСОК ОСНОВНОЙ И ДОПОЛНИТЕЛЬНОЙ ЛИТЕРАТУРЫ,
ДРУГИЕ ИНФОРМАЦИОННЫЕ ИСТОЧНИКИ ......................................38
1. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Дисциплина «Программирование на C++» относится к циклу
специальных дисциплин и направлена на формирование у студента навыков
программирования и практического решения разнообразных по содержанию
задач.
Цели освоения дисциплины:
Целями освоения дисциплины «Программирование на C++» являются
овладение основами алгоритмизации, императивного и объектноориентированного программирования на языке С++, приобретение навыков
разработки программного кода с использованием современных
инструментальных средств.
Задачи дисциплины:
– Овладение методологией анализа и проектирования типовых
алгоритмов (линейных, условных, циклических, рекурсивных).
– Освоение подходов к построению алгоритма решения задачи на
основе её содержательной постановки. Получение практических представлений
о быстродействии алгоритмов;
– Овладение методологией разработки программ на основе
императивного и объектно-ориентированного подхода. Приобретение навыков
разработки
программного
кода
с
использованием
современных
инструментальных средств;
– Овладение основами организационных навыков разработчика, в том
числе приобретение навыков структурирования программного кода,
документирования программного кода, реализации принципа модульности,
получение общего представления об организации пользовательского
интерфейса.
В результате изучения дисциплины студент должен
иметь представление:
 о роли и месте знаний по дисциплине при освоении смежных дисциплин
по выбранной специальности и в сфере профессиональной деятельности;
 о направлениях развития программного обеспечения вычислительной
техники;
знать:
 принципы построения алгоритмов;
 типы данных и базовые конструкции языка программирования С++;
4
 основные приемы программирования;
 основы объектно-ориентированного программирования на С++;
уметь:
 разрабатывать приложения используя объектно-ориентированную
библиотеку классов MFC.
 разрабатывать в интегрированной среде разработки программного
обеспечения: Microsoft Visual Studio 2008/2010 как консольные
приложения, так и приложения с графическим интерфейсом;
Дисциплина «Программирование на C++» относится к циклу
«Общепрофессиональных дисциплин» (ОПД), к категории дисциплины по
выбору студента.
Перечень дисциплин, усвоение которых студентами необходимо для
изучения данного курса:
«Информатика и программирование», «Высокоуровневые методы
информатики и программирования», «Проектирование информационных
систем».
Основными видами занятий являются лекции и практические занятия.
Основной вид текущего контроля – тестирование. Основной вид рубежного
контроля – экзамен по дисциплине.
5
2. ТЕМАТИЧЕСКИЙ ПЛАН
(распределение часов курса по разделам и видам работ)
ДЕ 2
Ветвления
и циклы
(12 балл.)
ДЕ 3
Структуры
данных
(25 баллов)
ДЕ 4
Введение в
библиотеку
классов MFC
(28 баллов)
6
Семинары
Лабораторные
работы
Самостоятельная работа
студентов, час.
2
1. Основные типы данных,
операции и выражения.
2. Структура программы,
модульность, функции.
3. Консольный ввод и вывод
Промежуточный контроль
4. Принятие решений в
программах. Условный
оператор и оператор выбора.
5. Повторение выполнения.
Операторы циклов.
Промежуточный контроль
6. Массивы.
7. Строки.
8. Указатели.
9. Функции для работы со
строками.
Промежуточный контроль
10. Особенности
программирования под ОС
Windows.
11. Введение в библиотеку
MFC
12. Реализация строк в MFC.
Класс CString.
Количество
аудиторных часов
при очной форме
обучения
5
6
7
2
2
4
2
4
4
Лекции
Наименование тем
ДЕ 1
Введение
в C++
(13 балл.)
1
Максимальная нагрузка
студентов, час.
Дидактические единицы
(ДЕ)
Очная форма обучения
3
4
8
10
4
4
Контрольная работа
10
2
4
4
10
2
4
4
10
10
12
Тестирование
2
4
2
4
2
4
4
4
6
10
4
6
Тестирование
6
2
10
2
6
4
4
4
2
4
ДЕ 5
Некоторые классы
библиотеки MFC
(22 балла)
13. Элементы управления
Windows.
14. Диалоговые панели.
Промежуточный контроль
15. Работа с датой и
временем.
16. Работа с файлами
17. Реализация массивов,
списков, словарей в MFC.
18. Обработка
исключительных
ситуаций в MFC.
Итоговый контроль
Итого часов
7
12
14
2
4
6
2
6
Тестирование
6
12
2
4
6
14
2
6
6
6
6
170
6
2
Экзамен- 40 баллов
26
58
4
86
3. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ
(дидактические единицы)
ДЕ 1 «Введение в C++»
Тема 1. Основные типы данных, операции и выражения.
Аудиторное изучение: Имена переменных. Типы данных (целые,
вещественные,
символьные).
Описание
переменных,
комментарии,
арифметические операции, инструкции инкремента и декремента, перечисление.
Самостоятельное изучение: Выполнить операцию и присвоить, операция
запятая (последовательность).
Тема 2. Структура программы, модульность, функции.
Аудиторное изучение: Части программы, понятие подпрограммы,
процедуры и функции. Главная функция и её параметры. Инструкция вызова
функции. Инструкция выхода из функции. Модульность.
Самостоятельное изучение: Цикл разработки программ, ошибки,
обнаруживаемые во время компиляции.
Тема 3. Консольный ввод и вывод.
Самостоятельное изучение: Понятие консольных приложений, понятие
потока ввода-вывода. 3 предопределённых потока. Библиотека потокового
ввода-вывода iostream. Команда препроцессора include. Поток вывода cout и
операция <<. Поток ввода cin и операция >>. Изменение кодировки потоков
ввода и вывода. Форматированный вывод.
ДЕ 2 «Ветвления и циклы»
Тема 4. Принятие решений в программах. Условный оператор и
оператор выбора.
Аудиторное изучение: Использование целого типа данных в качестве
логического. Правила вычисления истинности или ложности любых выражений
языка C++. Логические операции. Условный оператор if (если). Оператор
выбора (switch). Понятие составного оператора.
Самостоятельное изучение: Использование условного оператора для
обработки ошибок. Восстановление после ошибки. Обработка исключений.
Тема 5. Повторение выполнения. Операторы циклов.
8
Аудиторное изучение: Понятие цикла в языках программирования. Цикл
for, цикл while, повторение 0 или более раз. Цикл do…while, повторение хотя бы
1 раз. Вложенные циклы. Инструкция досрочного выхода из цикла.
Самостоятельное изучение: Размещение инструкций try и catch внутри
цикла.
ДЕ 3 «Структуры данных»
Тема 6. Массивы
Аудиторное изучение: Понятие одномерного массива в языке C++.
Обращение к элементам массива. Понятие многомерного массива как массива
массивов. Функция sizeof. Использование цикла for для обработки данных
массива.
Самостоятельное изучение: Запись и чтение после конца массива.
Тема 7. Строки
Аудиторное изучение: Строка в С++ как массив символов. Максимальная
и реальная длина строки, нулевой байт. Константные строки и инициализация
при описании. Массив строк.
Самостоятельное изучение: Запись и чтение после конца строки.
Тема 8. Указатели.
Аудиторное изучение: Преобразование типов данных. Понятие
указателя. Типизированные и нетипизированные указатели. Операция *
применительно к указателям, операция получения адреса. Динамическое
распределение памяти. Указатели и функции, Адресная арифметика. Массивы и
указатели, строки и указатели.
Самостоятельное изучение: Передача параметров функции по адресу.
Тема 9. Функции для работы со строками.
Самостоятельное изучение: Модуль String. Функции копирования строк,
функции объединения строк, поиск подстроки в строке, сравнение строк,
преобразование из числа в строку и наоборот.
ДЕ 4 «Введение в библиотеку классов MFC»
Тема 10. Особенности программирования под ОС Windows.
Аудиторное изучение: Взаимодействие программ и Windows, функция
окна, цикл сообщений. Преимущества использования MFC, Типы данных
используемые в WinAPI и MFC. Архитектура приложения, каркас приложения.
Понятие ресурсов Windows. Типы ресурсов, идентификаторы ресурсов.
9
Самостоятельное изучение: Многозадачность в Windows, понятие
процесса и потока. Проект приложения, типы мастеров проектов, преимущества
мастеров проектов.
Тема 11. Введение в библиотеку MFC.
Аудиторное изучение: Базовый класс библиотеки MFC (класс CObject),
класс приложение – CWinApp, основа структуры приложения (класс
CCmdTarget), главное окно приложения, класс CFrameWnd.
Самостоятельное изучение: Контекст отображения (класс CDC, объекты
графического интерфейса (класс CGdiObject), классы не имеющие базового
класса.
Тема 12. Реализация строк в MFC. Класс CString.
Самостоятельное изучение: Символьный тип данных TCHAR. Класс
СString. Операции допустимые над объектом CString.
Тема 13. Элементы управления Windows.
Аудиторное изучение: Приложения с главным окном. Классы CStatic,
CEdit, CButton, CStatusBar, CMenu, CList, СListCtrl,
обработка окном
сообщений. Обработка сообщений элементами управления.
Самостоятельное изучение: объекты графического интерфейса (класс
CGdiObject), классы, не имеющие базового класса.
Тема 14. Диалоговые панели.
Аудиторное изучение: Модальная диалоговая панель. Диалоговая панель
- главное окно приложения. Немодальная диалоговая панель. Обмен данными с
диалоговым
окном
(технология
DDX),
Проверка
корректности
пользовательского ввода (технология DDV).
Самостоятельное изучение: Автоматическое обновление состояния
элементов интерфейса с помощью класса CCmdUI.
ДЕ 5 «Некоторые классы библиотеки MFC»
Раздел 15. Работа с датой и временем.
Аудиторное изучение: Понятие абсолютного времени и часовых поясов.
Класс СTime, CTimeSpan. Операции допустимые над датой и временем,
конвертирование даты и времени в строку.
Самостоятельное изучение: функции GetSystemTime, SetSystemTime,
GetLocalTime, SetLocalTime.
Раздел 16. Работа с файлами.
10
Аудиторное изучение: Класс CFile, CStdioFile, CMemFile, CFileDialog.
CPrintDialog, CFindReplaceDialog. Операции над файлами. Файлы размещённые
в оперативной памяти.
Самостоятельное изучение: работа с файлами с помощью библиотеки
стандартных функций потока ввода-вывода.
Раздел 17. Реализация массивов, списков, словарей в MFC.
Самостоятельное изучение: Понятие массива в MFC, классы
CStringArray, CWordArray, CUIntArray, CDWordArray, CByteArray. Понятие
справочника в MFC, классы CMapStringToOb, CMapStringToString. Понятие
списка в MFC, классы CStringList.
Раздел 18. Обработка исключительных ситуаций в MFC.
Самостоятельное изучение: Понятие исключительной ситуации.
Конструкции языка try … catch. Класс CException, CFileException,
CResourceException, CUserException.
11
Содержание лабораторных занятий
Лабораторная работа №1. Программирование линейных алгоритмов.
Лабораторная работа №2. Программирование разветвляющихся
алгоритмов.
Лабораторная работа №3. Программирование циклических алгоритмов.
Лабораторная работа №4 Программирование с использованием
одномерных массивов.
Лабораторная работа №5 Указатели. Программирование с
использованием динамических двумерных массивов.
Лабораторная работа №6 Программирование с использованием строк.
Лабораторная работа №7 Минимальный проект с использованием
библиотеки классов MFC.
Лабораторная работа №8 Вставка элемента управления в окно (Панель
состояния, кнопка, текстовое поле, поле ввода).
Лабораторная работа №9 События рамки окна, события элемента
управления.
Лабораторная работа №10 Создание меню с помощью редактора
ресурсов. Обработка пунктов меню. Использование нескольких меню в
приложении
Лабораторная работа №11 Создание диалоговой панели. Модальная и
немодальная диалоговая панель. Обмен данными с диалоговой панелью без
использования технологии DDX.
Лабораторная работа №12. Автоматизация реакции на события с
ClassWizard.
Лабораторная работа №13. Обмен данными с диалоговой панелью с
помощью технологии DDX.
Лабораторная работа №14. Массивы в библиотеке классов MFC.
Лабораторная работа №15. Коллекции в библиотеке классов MFC.
Лабораторная работа №16. Класс CTime.
Лабораторная работа №17. Многозадачность.
Лабораторная работа №18. Сохранение и восстановление данных.
Лабораторная работа №19-29. Обработка исключений.
12
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ОСВОЕНИЮ УЧЕБНОЙ
ДИСЦИПЛИНЫ
Образовательная технология
В преподавании дисциплины используются преимущественно
традиционные образовательные технологии:
 лекции сопровождающиеся демонстрацией презентации с помощью
мультимедийного проектора;
 использование выдач (печатного варианта слайдов) в качестве раздаточных
материалов;
 лабораторный практикум в компьютерном классе;
 самостоятельная работа студентов.
Цель лекции – сообщение новых знаний, систематизация и обобщение
накопленных, развитие познавательных и профессиональных интересов.
Лабораторный практикум – как обязательный элемент образовательного
процесса по данной дисциплине, призван закрепить полученные теоретические
знания и обеспечить формирование основных навыков и умений практической
работы в области разработки приложений на языке C++. Они проводятся по
мере изучения теоретического материала и выполняются как индивидуально
каждым студентом, так и аудиторией в целом. Лабораторный практикум
является интерактивной формой проведения занятий, поскольку во время таких
занятий происходит постоянное взаимодействие по каналам педагогических
коммуникаций преподаватель <=> студент и студент <=> студент.
Самостоятельная работа студентов
Самостоятельная работа является обязательной для каждого студента и
определяется учебным планом. Цель самостоятельной работы студентов –
овладение фундаментальными знаниями, профессиональными умениями и
навыками,
опытом
творческой,
исследовательской
деятельности.
Самостоятельная
работа
студентов
обеспечивает
формирование
профессиональной компетенции, воспитывает потребность в самообразовании,
способствует развитию активности, ответственности и организованности,
творческого подхода к решению проблем учебного и профессионального
уровня.
Лекции и практические занятия способны лишь более конкретно
ориентировать студента, познакомить с основными конструкциями языка
программирования С++, освоить только базовые приёмы программирования в
среде программирования Microsoft Visual Studio.
13
В образовательном процессе по дисциплине выделяется два вида
самостоятельной работы:
 аудиторная;
 внеаудиторная.
Аудиторная самостоятельная работа по дисциплине выполняется на
учебных занятиях под непосредственным руководством преподавателя и по его
заданию. Формами аудиторной самостоятельной работы являются:
 работа в малых группах при проведении лабораторных занятий – мозговой
штурм для выполнения задания;
 поиск информации в системе документации для выполнения задания.
Внеаудиторная самостоятельная работа выполняется студентом по
заданию преподавателя, но без его непосредственного участия, но под его
контролем и с последующей оценкой.
Целью внеаудиторной самостоятельной работы является овладение
профессиональными знаниями, умениями и навыками по профилю изучаемой
дисциплины, закрепление и систематизация знаний, формирование умений и
навыков и овладение опытом творческой, исследовательской деятельности. Этот
вид самостоятельной работы способствует развитию самостоятельности,
ответственности и организованности, творческого подхода к решению проблем
учебного и профессионального уровней.
Формами внеаудиторной самостоятельной работы является: чтение текста
(учебника, первоисточника, дополнительной литературы); конспектирование
текста; выписки из текста; работа с конспектом лекции; самостоятельное
выполнение заданий на лабораторных и практических занятиях; выполнение
домашних заданий;
Оценочные средства для текущего контроля успеваемости, промежуточной
аттестации по итогам освоения дисциплины.
Виды контроля самостоятельной работы: самоконтроль, проведение блицопроса в начале лекции, проверка правильности выполнения домашних заданий.
Внутрисеместровый контроль знаний проводится в форме проверки
выполнения практических и самостоятельных заданий, тестирования, итоговый
контроль в форме экзамена. Промежуточный контроль осуществляется в
письменной форме. Видом промежуточного контроля являются тестирование,
проводимое по окончании работы над дидактической единицей на занятиях.

К экзамену допускаются студенты, которые:
прослушали лекции; в случае пропуска лекции предоставили конспект;
14


посетили лабораторные занятия и выполнили на них все практические
задания;
при необходимости – «отработали» пропуски.
Экзамен является итоговой формой контроля по дисциплине. На экзамене
студенты должны показать умение использовать знания, полученные на
аудиторных
занятиях
и
в
ходе
самостоятельной
подготовки,
продемонстрировать навыки решения практических задач.
Студентам предложены примерные вопросы для подготовки к экзамену.
Подготовка студентов к экзамену основывается на знаниях, умениях и навыках,
полученных ими на лекциях, и лабораторно-практических занятиях, а также
внимательного изучения предложенной литературы.
Итоговая оценка за дисциплину выставляется по результатам сдачи
студентом экзамена.


Экзамен проводится по следующему плану.
Студенты:
отвечают на два теоретических вопроса из списка вопросов к экзамену;
выполняют практическое задание, аналогичное аудиторным заданиям.
Студенту необходимо знать и учитывать критерии оценки ответа при
самоанализе собственного ответа. Учебную деятельность студентов преподавать
оценивает по следующим критериям:
Критерии оценки
Оценка "Отлично" выставляется студентам, успешно сдавшим экзамен и
показавшим глубокое знание теоретической части курса, умение
проиллюстрировать изложение практическими примерами кода на С++,
проявившим творческие способности в понимании, изложении и использовании
учебно-программного материала, полностью выполнившие практическое
задание и подробно ответившим на оба теоретических вопроса билета и
вопросы экзаменатора.
Оценка "Хорошо" выставляется студентам, сдавшим экзамен с
незначительными замечаниями, показавшим глубокое знание теоретических
вопросов, умение проиллюстрировать изложение практическими примерами
кода на С++, освоившим основную литературу, рекомендованную программой
курса, обнаружившим стабильных характер знаний и способность к их
самостоятельному восполнению и обновлению в ходе практической
деятельности, полностью выполнившие практическое задание и ответившим на
оба теоретических вопроса билета и вопросы экзаменатора, но допустившим
15
при ответах незначительные ошибки, указывающие на наличие
несистематичности и пробелов в знаниях.
Оценка "Удовлетворительно" выставляется студентам, сдавшим экзамен
со значительными замечаниями, показавшим знание основных положений
теории при наличии существенных пробелов в деталях, испытывающим
затруднения при сопровождении положений теории практическими примерами
кода на С++, не полностью выполнившие практическое задание или
допустившим существенные ошибки при ответах на теоретические вопросы
билетов и вопросы экзаменатора, но показавшим знания основного учебнопрограммного материала в объеме, необходимом для предстоящей работы.
Оценка "Неудовлетворительно" выставляется, если студент показал
существенные пробелы в знаниях основных положений теории, не умеет
применять теоретические знания на практике, не выполнил практическое
задание билета.
16
5. МАТЕРИАЛЫ К ПРОМЕЖУТОЧНОМУ И ИТОГОВОМУ
КОНТРОЛЮ.
5.1 Примерный перечень тестовых заданий
1. Какое значение будет присвоено переменной?
int var = (0xFE & 3) << 1;
 0x01
 0x06
 0xFC
 0x04
2. Идентификатор в С++ может начинаться с:
 латинской буквы
 заглавной латинской буквы
 цифры
 знака подчёркивания
 со знака #
3. Какой значение будет присвоено переменной x?
int a = 0, b = 0;
int x = ++a + b++;
 0
 1
 2
 3
4. Значение R после выполнения операции логического присваивания
R = ! (A || B || (X > 2) && (Y < 0)); при A = 0, B = 0, X = 3, Y = 2 будет равно
 0
 1
 выражение синтаксически неверно
5. Значения целых переменных a и b после выполнения следующих действий
a = 15 / (16 % 7);
b = 34 % a * 5 – 29 % 5 * 2;
будут равны
17






a = 1, b = 160
a = 1, b = 4
a = 7, b = 25
a = 7, b = 22
a = 7, b = 28
нет правильных ответов
6. Какой значение будет присвоено переменной?
int var = (2 | 3) << 1;
 0x01
 0x06
 0xFC
 0x04
7. include является
 функцией языка С++
 командой препроцессора
 зарезервированным словом языка С++
 не используется в C++
8. Какой значение будет присвоено переменной x?
int a = 1, b = 0;
int x = a++ + b++;
 0
 1
 2
 3
9. Значение R после выполнения операции логического присваивания
R = ! (A || B || (X != 2) && (Y < 3));
при A = -1, B = 0, X = 3, Y = 2 будет равно
 -1
 0
 1
 Выражение синтаксически неверно
10. Значения целых переменных a и b после выполнения следующих действий
a = 3.8 / 2 * 2;
b = 4 / 3 * 3;
будут равны
18







a = 3, b = 3
a = 2, b = 3
a = 3, b = 4
a = 2, b = 4
a = 4, b = 3
a = 4, b = 4
Нет правильных ответов
11. Какое значение будет присвоено переменной
int var = (0 | 3) << 2;
 0x01
 0x06
 0x12
 0xFC
12. void является
 функцией языка С++
 командой препроцессора
 зарезервированным словом языка С++
13. Какой значение будет присвоено переменной x?
int a = 1, b = 1;
int x = a++ + ++b;
 1
 2
 3
 4
14. Значение R после выполнения операции логического присваивания
R = ! (A || B || (X <= 2) && (Y < 3));
при A = 0, B = 0, X = 3, Y = 2 будет равно
 -1
 0
 1
 2
 Нет правильных ответов
15. Значения целых переменных a и b после выполнения следующих действий
a = 100 / (5 % 3);
b = 34 % a * 5 – 29 % 5 * 2;
19
будут равны
 a = 50, b = 162
 a = 2, b = -8
 a = 6, b = 12
 a = 50, b = 25
 a = 2, b = 162
16. Для любых целых a и b справедливо ли равенство
a % b == a – (a / b) * b
 справедливо
 несправедливо
 В выражении допущена синтаксическая ошибка
17. Чему равно значение выражения?
int a = 0, b = 0;
c = a++ + ++b;
 0
 1
 2
 3
18. Каков смысл операции x > 0 ? x : -х ?
 Операция возвращает инвертированное значение х
 Если х положительный, то результат отрицательный и наоборот
 Операция возвращает модуль х
 В операции допущена ошибка
19. Чему будет равна переменная х?
int x=7;
do {
x--;
} while (x-- <= 5);
 7
 6
 5
 4
 Будет бесконечный цикл
20. Тело цикла do .. while
 Может быть не выполнено ни разу
20



Обязательно выполняется хотя бы 1 раз
Обязательно выполняется хотя n раз
Ни одно из утверждений не является верным
21. Чему будет равна переменная a?
int a = 9, b = 20;
while (b > ++a) ;
a += 100;
 109
 110
 111
 120
 Будет бесконечный цикл
22. Чему будет равна переменная x?
int ind = 5, x = 100;
if (ind >= 10) if (ind <= 20) x = 0; else x = 1;
 0
 1
 100
 В выражении допущена ошибка
23. Ветвь default может применяться
 В условном операторе
 В операторе выбора
 В цикле while
 В цикле do..while
 В цикле for
24. Чему равно значение выражения?
int a = 4;
a <<= 2;
 2
 4
 8
 12
 16
25. Что даст в результате операция x > y ? x : y
 Операция возвращает наименьшее значение среди x и y
21



Операция возвращает наибольшее значение среди x и y
Результат равен x
Результат равен y
26. Тело цикла while
 Может быть не выполнено ни разу
 Обязательно выполняется хотя бы 1 раз
 Обязательно выполняется хотя бы n раз
 Ни одно из утверждений не является верным
27. Чему будет равна переменная a?
int a = 10, b = 20;
while (b > a++) ;
a += 100;
 110
 111
 120
 121
 Будет бесконечный цикл
28. Чему будет равна переменная х после цикла?
int x=7;
do {
x--;
} while (x--<=5);
 7
 6
 5
 4
 Будет бесконечный цикл
29. Чему будет равна переменная z?
int x = -4, z = 3;
if (x > 0)
x = -x;
z = x;
 4
 -4
 3
 0
22
30. Чему равно значение выражения?
int a = 1;
a <<= 3;
 2
 4
 8
 12
 16
31. Оператор break используется
 Для выхода из цикла
 Для выхода из оператора выбора
 Для выхода из функции
 Для завершения работы программы
32. Чему будет равна переменная n после цикла?
int n = 10;
do {
n--;
} while (n > 0);
 0
 1
 10
 9
33. Тело цикла for
 Может быть не выполнено ни разу
 Обязательно выполняется хотя бы 1 раз
 Обязательно выполняется хотя n раз
 Ни одно из утверждений не является верным
34. Чему будет равна переменная a?
int a = 10, b = 20;
while (b > a) ;
a += 100;
 109
 110
 111
 120
23

Будет бесконечный цикл
35. Чему будет равна переменная z?
int x = -4, z = 3;
if (x < 0) {
x = -x;
z = x;
} else
x = y;
z += z;
 3
 4
 8
 16
 -4
36. Что получится в результате операции?
x>y?y:x
 Операция возвращает наименьшее значение среди x и y
 Операция возвращает наибольшее значение среди x и y
 Результат равен x
 Результат равен y
37. В чём отличие строк от массивов?
 Длиной строки считается не общее кол-во элементов массива а кол-во
элементов расположенных до элемента 0
 Строки ограничены по длине 255 элементами
 Массивы могут быть динамическими, а строки нет
38. Какая операция обозначается символом & ?
 Косвенная адресация
 Операция получения адреса
 Логическое И. Возвращает истину, если оба операнда истины.
 Битовое И. Возвращает 1, если оба бита равны 1.
39. Какие утверждения относительно структур являются верными?
 Структуры позволяют группировать связанную информацию различных
типов
 Структуры содержат поля одного и того же типа данных
 Структуры кроме полей могут содержать и методы
24


Операция . (точка) используется для обращения к элементам структуры
Операция -> используется для обращения к элементам структуры
40. Объект cout является
 Стандартным потоком вывода
 Стандартным потоком ввода
 Стандартным потоком сообщений об ошибках
 Такого объекта нет
41. Если p указатель, то (p + i) == p[i] ?
 Да, это истина
 Нет, это ложь
 [] (квадратные скобки) применяются только с массивами, а не с
указателями
42. Объединения в C++ ?
 Хранит значение только одного элемента в каждый момент времени
 Это переменная, которая может иметь любой тип из множества типов,
указанных при определении элементов объединения
 Это структура, все элементы которой имеют один и тот же тип данных
 Это структура, состоящая из одного элемента
43. Какие операции применяют к переменным-указателям ?
 =
 ==
 !=
 >
 <
 >=
 <=
 ++
 - +
  *
 /
 ->
44. Какие утверждения относительно массивов и указателей являются
верными?
25





Для массивов память выделяется автоматически при описании
переменной
Для указателей нужно выделять память, либо присвоить адрес
переменной или массива
Имя массива является указателем на первый элемент массива
К массиву можно применять операцию []
К указателю можно применять операцию []
45. Перечисления в С++
 Нужны для того, чтобы вместо чисел использовать их буквенные
идентификаторы
 Это совокупность однотипных данных, которые имеют понятные
человеку имена
 Всегда начинаются с 0
 Всегда начинаются с 1
46. Объект cin является
 Стандартным потоком вывода
 Стандартным потоком ввода
 Стандартным потоком сообщений об ошибках
 Такого объекта нет
47. Различаются ли строчные и прописные буквы в именах?
 Да, различаются
 Нет, не различаются
 Это зависит от настроек компилятора
48. Какими символами обозначается комментарий?
 {}
 //
 (* *)
 - /* */
49. Как называется самостоятельная единица программы С++, созданная для
решения конкретной задачи?
 Функция
 Оператор
 Процедура
 Алфавит
26
50. Какой из перечисленных операторов является условным оператором?
 if
 switch
 break
 goto
51. Какой из перечисленных операторов прерывает работу цикла?
 if
 switch
 goto
 break
52. Какой из перечисленных операторов является оператором немедленной
передачи управления в начало следующей итерации цикла?
 if
 switch
 break
 continue
53. Какой из перечисленных типов данных является числом с плавающей
запятой?
 сhar
 int
 void
 float
54. Какое из перечисленных зарезервированных слов-модификаторов типов
является обозначением беззнакового типа?
 signed
 unsigned
 long
 short
55. Укажите номер строки с ошибкой в программе.
#include <iostream.h>
main(void) {
char ch;
ch := 'c';
cout<<ch;
27
}





1
2
3
4
5
56. Какой из ниже перечисленых идентификаторов в языке С++ не
употребляются как служебное слово?
 else
 char
 break
 begin
57. какие из ниже перечисленных идентификаторов в языке С++ являются
обозначениями типов данных
 char
 int
 float
 double
 boolean
 long
58. Если оператор continue встретится в операторе цикла, то:
 он передает управление на начало следующей итерации цикл
 он передает управление на конец предыдущей итерации цикла
 он передает управление итерации цикла находящейся после метки
 ничего не произойдет
59. Укажите номер строки с ошибкой в программе.
main()
{
int x,y;
cin>>x;
cin>>y;
if (x = y)
cout<<"равны";
else
cout << "не равны";
}
28








1
2
3
4
5
6
7
8
60. Какой из перечисленных ниже циклов является бесконечным?
for (i = 1; i > 23; i++) cout << "цикл ";
for (i = 0; i >= 1; i++) cout << "цикл ";
for (i = 10; i > 6; i++) cout << "цикл ";
for (i = 5; i > 15; i++) cout << "цикл ";
61. Какой тип данных определяет беззнаковое целое число?
 int
 char
 float
 unsigned int
62. Укажите порядок присваивания переменными числового значения, в
выражении вида: a = b = c = 10;
 a, b, c
 c, b, a
 b, c, a
 c, a, b
63. По Вашему мнению, с точки зрения С++ верен ли приведеный код:
double A;
void main () {
int A;
A=5;
}
 код содержит синтаксическую ошибку
 код верный
 это код не на С/С++
 код неверный
29
64. Когда был создан язык программирования "С"?
 В конце 60-х начале 70-х
 В конце 70-х начале 80-х
 В начале 50-х
 В середине 70-х
65. Какой из перечисленных типов данных является пустым?
 сhar
 int
 void
 double
66. Какое из перечисленных зарезервированных слов-модификаторов типов
является обозначением беззнакового типа?
 signed
 unsigned
 long
 short
67. Управляющий символ \t осуществляет:
 новая строка, перевод строки
 знак вопроса
 новая страница, перевод страницы
 табуляция
 пробел
68. Что служит для обозначения имён переменных, функций и меток,
применяемых в программе?
 Константа
 Идентификатор
 Процедура
 Ключевое слово
69. Как называется фиксированная величина, которая не может быть изменена в
программе?
 Переменная
 Константа
 Функция
 Субпрограмма
30
70. Существует ли разница для компилятора, в каком регистре написано
служебное слово?
 Да
 Нет
 Только в ислючительных случаях
 Не знаю
71. Управляющий символ \n осуществляет:
 новая строка, перевод строки
 знак вопроса
 новая страница, перевод страницы
 пробел
72. Какой из нижеперечисленых операторов не является оператором цикла?
 for
 while
 switch
 все перечисленные операторы - операторы цикла
73. Управляющий символ \\ осуществляет:
 новая строка, перевод строки
 знак вопроса
 обратный слэш (наклонная черта)
 новая страница, перевод страницы
 пробел
74. Какое значение будет присвоено переменной:
char hello[] = "moto";
int var = sizeof(hello);
 4
 5
 1
75. Какое значение будет присвоено переменной:
char hello[] = "moto";
int var = strlen(hello);
 4
 5
 1
31
76. Какое значение будет присвоено ptr после инкремента:
int *ptr = (int *)0x01
ptr++;
 0x01
 0x01 + 1
 0x01 + sizeof(int)
77. Содержит ли следующий участок кода ошибки:
if ( sin(3.14) = 0 ) cout<<"Да"; else cout<<"нет";
 Да, содержит
 Нет, не содержит
 Этот код написан не на C++
78. Сколько аргументов имеет функция объявленная следующая образом
int foo_a();
 0
 1
 любое количество
79. Какое значение будет напечатано:
int foo(int b) {
return b--;
}
main() {
int a=0;
cout << foo(++a);
}
 0
 1
 -1
5.2 Примерный перечень вопросов к экзамену
Теоретическая часть
1. Типы данных в языке С++. Описание переменных простых типов
данных, инициализация при описании. Понятие массива Описание
массивов. Доступ к элементам массива. Тип данных указатель.
Описание типизированных и не типизированных указателей.
2. Условный оператор. Структура оператора, логические операции и тип
их результата. Описание работы условного оператора по шагам.
32
Примеры условного оператора с использованием нескольких
логических операций. Вложенные условные операторы, примеры.
3. Оператор выбора. Структура и описание работы оператора по шагам.
Примеры использования оператора выбора. Досрочный выход из
оператора выбора.
4. Цикл Do..while. Структура цикла, описание работы цикла по шагам.
Примеры использования цикла. Понятие зацикливания. Пример
бесконечного цикла Do..while. Оператор досрочного выхода из цикла.
Пример досрочного выхода. Отличие от других видов цикла.
5. Цикл While. Структура цикла, описание работы цикла по шагам.
Примеры использования цикла. Понятие зацикливания. Пример
бесконечного цикла While. Оператор досрочного выхода из цикла.
Пример досрочного выхода. Пример и описание работы конструкции
цикл в цикле.
6. Цикл For. Структура цикла, описание работы цикла по шагам. Примеры
использования цикла. Понятие зацикливания. Пример бесконечного
цикла for. Оператор досрочного выхода из цикла. Пример досрочного
выхода.
7. Операции допустимые над целыми числами (в том числе остаток от
деления). Операции инкремента и декремента (++, --). Отличие
постинкремента (декремента) от преинкремента (декремента). Как
получить целую часть от деления? Как получить вещественный
результат деления целого числа на целое.
8. Понятие указателя. Указатели и массивы. Операция [] применительно к
указателям. Адресная арифметика.
9. Понятие указателя. Указатели и строки. Операция [] применительно к
указателям. Адресная арифметика.
10. Понятие указателя. Операция *. Причина использования указателей в
качестве параметров у функции. (Можно на примере функции обмена 2х целых чисел).
11. Понятие указателя. Операция *, +, -, ++, -- применительно к указателям.
Динамическое распределение памяти.
12. Понятие строки и строкового типа данных. Отличие строк от массивов.
Максимальный и текущий размер строки.
13. Типы данных. Неявное преобразование типов данных. Примеры. Явное
преобразование типов данных. Примеры.
33
14. Структура
программы
на
С++.
Понятие
процедурного
программирования и понятие подпрограммы. Функция main – отличие
от других функций. Ключевое слово void. Инструкция return.
Инструкция вызова функции. Модульность. Понятие модуля и
заголовочного файла
15. Понятие
консольных
приложений.
Понятие
потока
(3
предопределённых потока). Потоковый ввод и вывод. Изменение
кодировки потока ввода и вывода. Форматированный вывод. Примеры.
16. Особенности программирования под Windows. Отличия в структуре
консольных приложений и приложений GUI.
17. Понятие ресурсов Windows. Типы ресурсов. Идентификаторы ресурсов.
Типы данных используемые в WinAPI и MFC.
18. Библиотека MFC. Её преимущества и недостатки. Классы CObject,
CWinAppp, CFrameWnd, CString.
19. Основные элементы управления Windows и соответствующие им классы
MFC (CStatic, CEdit, CButton, CStatusBar, CMenu, CList, СListCtrl).
20. Диалоговые панели и соответствующие им классы MFC. Примеры
использования. Технологии DDX и DDV.
21. Работа с датой и временем. Классы CTime и CTimeSpan. Примеры
использования.
22. Работа с файлами с помощью классов MFC. Примеры.
23. Понятие массивов, списков, словарей и их реализация в MFC. Примеры.
24. Обработка ошибок в библиотеке MFC. Понятие исключения, классы
исключений, примеры.
Практическая часть
1. Написать программу, которая вычисляет, сколько раз введённое с
клавиатуры число встречается в массиве.
2. Написать программу, которая определяет максимальное число из
введённой с клавиатуры последовательности положительных чисел
Длина последовательности неограничена. Программа запрашивает ввод
чисел пока пользователь не введёт число 0.
34
3. Как известно число делится на 3 тогда и только тогда, когда сумма его
цифр делится на 3. Для введённого с клавиатуры целого числа вывести
сумму его цифр и проверить действительно ли сумма цифр делится на 3
только в случае если число делится на 3.
4. Написать программу, которая считает во сколько раз и на сколько
процентов возрастут цены за определённый период времени.
Исходные данные: процент месячной инфляции и период времени
выраженный в месяцах. (Программа не должна использовать функцию
возведения в степень)
5. Коммерсант, имея стартовый капитал k рублей, занялся торговлей,
которая ежемесячно увеличивала капитал на p%. Программа должна
посчитать, через сколько лет он накопит сумму s, достаточную для
покупки собственного магазина.
Исходные данные: стартовый капитал k, ежемесячный процент
увеличения капитала p, стоимость магазина s. Исходные данные вводит
пользователь с клавиатуры.
6. Написать программу, которая во введённом пользователем массиве из
10 вещественных чисел меняет местами максимальный и минимальный
элементы. После замены элементы массива выводятся через пробел
7. Предприниматель, начав дело, взял кредит размером k рублей под p%
годовых и вложил его в своё дело. По прогнозам, его дело должно
давать прибыль r рублей в год. Программа должна определить, сможет
ли он накопить сумму для погашения кредита, и если да, то через
сколько
лет.
Исходными данными являются размер кредита k (в рублях), процент
годовых p, предполагаемая годовая сумма прибыли r (в рублях).
Исходные данные вводятся с клавиатуры.
8. Написать программу пересчёта валюты. Исходными данными являются
курс доллара, евро, фунта по отношению к рублю, размер суммы,
исходная
валюта
и
целевая
валюта
суммы.
Исходные данные вводит пользователь с клавиатуры. Ввод валюты
осуществляется путем нажатия одного из 3-х символов (d – доллар, e –
евро, r – рубли). Программа осуществляет пересчёт суммы из исходной
валюты
в
целевую
и
выводит
результат
в
виде:
5 USD составляют 3.90 EUR
9. Написать программу, которая рассчитывает какими банкнотами и в
каком количестве должен выдать банкомат сумму, с учетом того, что их
количество банкнот должно быть минимально возможное. Программа
35
должна запрашивать у пользователя сумму, которую банкомат должен
выдать и выводить результат - количество банкнот достоинством. 100р.,
500р., 1000р, 5000р или сообщение о том, что банкомат не может выдать
запрошенную сумму.
Замечание: считать, что в банкомате банкнот всех достоинств
неограниченное количество.
10. У гусей и кроликов вместе x лап (x - чётное). Сколько может быть гусей
и кроликов? Программа должна вывести все возможные сочетания
количества гусей и количества кроликов.
Исходными данными являются общее количество лап. При вводе
исходных данных программа должна осуществлять проверку на
четность, и в случае ошибки допускать повторный ввод.
11. Животновод, в начале каждой зимы повышает отпускную цену на
молоко на p%, а каждым летом, снижает на то же число процентов. На
сколько изменится цена на молоко через n лет.
Исходные данные: процент ежегодного повышения и снижения цен p,
количество лет n.
12. Написать программу, которая вводит с клавиатуры одномерный массив
из 5 целых чисел, после чего выводит наименьшее общее кратное всех
его элементов. Перед вводом каждого элемента должна выводиться
подсказка с номером элемента.
13. Написать программу, которая вводит с клавиатуры одномерный массив
из 5 целых чисел, после чего выводит наибольший общий делитель всех
элементов в нём. Перед вводом каждого элемента должна выводиться
подсказка с номером элемента.
14. Написать программу, которая вводит с клавиатуры одномерный массив
из 5 целых чисел, после чего выводит среднее арифметическое
элементов в нём и элементы массива большие среднего
арифметического. Перед вводом каждого элемента должна выводиться
подсказка с номером элемента.
36
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ
ДИСЦИПЛИЕЫ
Для обеспечения лекционных занятий по данной дисциплине требуется
аудитория (желательно компьютерный класс) оборудованный современным
мультимедийным оборудованием: видеопроектором (или интерактивной
доской) подключенной к персональному компьютеру с установленным
программным обеспечением представленным в таблице 1.
Для обеспечения лабораторно-практических занятий по данной дисциплине
необходимы компьютерный класс с выходом в Интернет и установленным
программным обеспечением представленным в таблице 1.
Таблица 1. Необходимое программное обеспечение
Программное обеспечение
Описание
Системное программное обеспечение
Windows XP Professional
Операционная система семейства Windows NT
либо более поздней версии
корпорации Microsoft
(32-х битная)
Лицензионное прикладное программное обеспечение
Microsoft Office 2003 либо
Офисный пакет приложений для операционных
более поздней версии
систем Microsoft Windows. Обязательно наличие
в составе пакета Microsoft Word, Microsoft Excel,
Microsoft PowerPoint и Microsoft Visio.
Microsoft Visual C++ 2008
Интегрированная среда разработки
либо более поздней версии.
программного обеспечения для Microsoft
Windows на языках С++, С# и Visual Basic.
Свободно распространяемое прикладное программное обеспечение
Qt версии 4.5 либо более
Кросс-платформенный инструментарий
поздней
разработки программного обеспечения на языке
программирования C++ распространяемый по
лицензии GPL (http://qt-project.org/ ).
Notepad++
Свободный текстовый редактор для Windows с
подсветкой синтаксиса большого количества
языков программирования и разметки
(http://notepad-plus-plus.org/ )
37
7. СПИСОК ОСНОВНОЙ И ДОПОЛНИТЕЛЬНОЙ ЛИТЕРАТУРЫ,
ДРУГИЕ ИНФОРМАЦИОННЫЕ ИСТОЧНИКИ
Основная литература
1. Андрианова А.А, Исмагилов Л.Н., Мухтарова Т.М.
Объектно-ориентированное программирование на C++: Учебное пособие
/А.А. Адрианова, Л.Н. Исмагилов, Т.М. Мухтарова. – Казань: Казанский
(Приволжского) федерального университет, 2010. – 230 c.
2. Бланшет Ж., Саммерфилд М. Qt 4: программирование GUI на C++. – пер.
с англ. 2-е изд., доп. – М.: КУДИЦ-ПРЕСС, 2008. – 736 c.
3. Медведев В.И. Особенности объектно-ориентированного
программирования на C++/CLI, C# и Java. – 2-е изд., испр. и доп. –
Казань: РИЦ «Школа», 2010. – 444 с. : ил.
4. Назарр К., Рихтер Дж. Windows via C/C++. Программирование на языке
Visual C++. – СПб: Питер, 2009. – 896 c.
5. Шлее М. Профессиональное программирование на C++. – СПб.: БХВПетербург, 2010. – 896 c. : ил.
Дополнительная литература
6. Бэкон, Дж. Операционные системы : Параллельные и распределенные
системы / Дж. Бэкон, Т.А. Харрис. - СПб: Питер, 2004. - 800c.
7. Дейтел, Х. Как программировать на С++ / Х. Дейтел, П. Дейтел. – М.:
Наука, 2006. – 1007 c.
8. Дерк, Л. С и С ++ : Справочник / Л. Дерк. – М.: БИНОМ, 1997. – 592 c.
9. Иванов В.Б. Прикладное программирование на С/С++. С нуля до
мультимедийных и сетевых приложений – М.: Солон-Пресс, 2008. – 240
с. : ил.
10. Культин, Н. С/С++ в задачах и примерах / Н. Культин. – СПб.: БХВ Петербург, 2002. – 288 c.
11. Либерти, Д. Освой самостоятельно С++ : 10 минут на урок / Д. Либерти. –
Киев; М.; СПб.: Вильямс, 2004 – 352 c.
12. Мешков, А. VISUAL C++ и MFC. Программирование для WINDOWS NT
и WINDOWS 95. Т1 : учеб. пособие / А. Мешков, Ю. Тихомиров. – М.:
Наука, 1999. – 448 c.
13. Мешков, А. VISUAL C++ и MFC. Программирование для Windows NT и
Windows95. Т2 : учеб. пособие / А. Мешков, Ю. Тихомиров. – М.: Наука,
1999. – 441 c.
14. Павловская Т. А. C/C++. Программирование на языке высокого уровня:
учебник для вузов./ Т.А. Павловская –СПб.: Питер, 2003. – 461 с. : ил.
38
15. Паппас, К. Visual C++:Руководство для профессионалов / К. Паппас, У.
Мюррей. – СПб: BHV-Санкт-Петербург, 1996. – 912 c.
16. Саттер, Г. Решение сложных задач на С ++ : 87 головоломных примеров с
решениями / Г. Саттер. – Киев; М.; СПб.: Вильямс, 2002. – 400 c.
17. Фленов М. Программирование на C++ глазами хакера. – СПб.: БХВПетербург, – 2004. –336 с.
18. Шмидский Я.К. Программирование на C++: Самоучитель. –.М.:
Издательский дом «Вильямс», 2004. – 386 c. : ил.
19. Чиртик А. Программирование на C++. Трюки и эффекты. – СПб: Питер,
2010. – 352 c.
20. Шмидт Д., Хьюстон С. Программирование сетевых приложений на C++:
Том 1 / пер. с анг. под ред. А.П. Караваева – М.: Бином-Пресс – 2009. –
302 с.
21. Элджер, Дж. Библиотека программиста. С++ / Дж. Элджер. – М.: Наука,
1998. – 257c.
22. Stroustrup, Bjrne. The C++ Programming Language : third edition / Bjrne
Stroustrup. - New Jarsey: Addison-Wesley Publishing, 1997.1040 – c.
Базы данных, интернет-ресурсы,
информационно-справочные и поисковые системы
23. Википедия. Свободная энциклопедия. [Электронный ресурс]: C++ –
Режим доступа: http://ru.wikipedia.org/wiki/C++, свободный.
24. C++ в каталоге ссылок Open Directory Project [Электронный ресурс] –
Режим доступа:
http://www.dmoz.org/World/Russian/Компьютеры/Программирование/Язык
и/C++, свободный.
25. Бьёрн Страуструп. Краткий обзор C++0x [Электронный ресурс] – Режим
доступа: http://www.artima.com/cppsource/cpp0x.html, свободный.
39
Download