утверждаю - Марийский государственный университет

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОУВПО «Марийский государственный университет»
Физико-математический факультет
Кафедра теоретической и прикладной физики
УТВЕРЖДАЮ
Декан физико-математического
факультета
«24» ноября 2009 г.
/Попов Н.И./
(подпись/Ф.И.О)
У Ч Е Б Н О -М Е ТОДИ Ч Е С К И Й К ОМ П Л Е К С П О Д И СЦ И ПЛ ИН Е
ЕН.В.02 Язык С++
(индекс по ГОС/наименование дисциплины)
СПЕЦИАЛЬНОСТЬ/НАПРАВЛЕНИЕ
010101 - Математика
(код и наименование специальности/направления в соответствии с лицензией)
Составитель
Попов А.А. д.ф.-м.н., профессор
(должность, Ф.И.О., ученая степень, звание автора программы)
Йошкар-Ола
2009
УТВЕРЖДЕНО
на заседании кафедры
теоретической и прикладной физики
(название кафедры)
Протокол № 4 от
«20» ноября 2009 г.
Зав. кафедрой
УТВЕРЖДЕНО
на заседании УМК
Протокол № 1 (ВЗ) от
«23» ноября 2009 г.
Председатель УМК
/Косов А.А./
(подпись/Ф.И.О)
/Косов А.А./
(подпись/Ф.И.О)
2
СОДЕРЖАНИЕ УЧЕБНО-МЕТОДИЧЕСКОГО КОМПЛЕКСА
I Рабочая программа учебной дисциплины ...........................................................................
II Методические рекомендации по изучению учебной дисциплины ..................................
III Учебно-методические материалы ......................................................................................
IV Материалы текущего контроля, промежуточной аттестации и итогового контроля
знаний ....................................................................................................................................................
V Словарь терминов и персоналий .........................................................................................
VI Программа государственного экзамена, итогового междисциплинарного экзамена...
VII Программное и методическое обеспечение практики ...................................................
3
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОУВПО «Марийский государственный университет»
Физико-математический факультет
УТВЕРЖДАЮ
Декан физико-математического
факультета
/Попов Н.И./
(подпись/Ф.И.О.)
«24» ноября 2009 г.
I РА Б О Ч А Я П РОГ РА М М А
Учебная дисциплина
Язык С++
(название дисциплины)
ЕН.В.02
(индекс по ГОС)
Специальность
010100 – Математика
(код и наименование в соответствии с лицензией)
Кафедра
теоретической и прикладной физики
(название)
Курс
3
семестр
форма обучения
5
Лекции
очная
18
(кол-во часов)
Практические занятия
0
(кол-во часов)
Лабораторные занятия
18
Самостоятельная работа
36
(кол-во часов)
(кол-во часов)
Курсовая работа (проект)
нет
(семестр)
Зачет
5
(семестр)
Экзамен
нет
(семестр)
Программа разработана
Поповым А.А., д.ф.-м.н., профессором
(должность, Ф.И.О., ученая степень, звание автора программы)
Йошкар-Ола
2009
4
Рекомендована к утверждению
решением учебно-методической
комиссии (учебно-методического
совета) физико-математического
факультета
Рассмотрена и одобрена на
заседании кафедры
теоретической и прикладной
физики
(название кафедры)
(название факультета / института, специальности)
протокол заседания № 1
от
протокол заседания № 4 от
«11» сентября 2009 г.
«20» ноября 2009 г.
Косов А.А.
Косов А.А.
(подпись, Ф.И.О. председателя)
(подпись, Ф.И.О., зав. кафедрой)
СОГЛАСОВАНО с выпускающей кафедрой математического анализа и ТФ
(название кафедры)
протокол заседания № 2
от «15» октября 2009 г.
Кокурин М.Ю.
(Ф.И.О. зав. кафедрой, подпись)
Сведения о переутверждении рабочей программы учебной дисциплины
на очередной учебный год и регистрация изменений
Учебный
год
Решение кафедры
Автор изменения
(№ протокола, дата заседания
кафедры, Ф.И.О., подпись
зав. кафедрой)
(Ф.И.О., подпись)
5
Номер
изменения
1 ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
1.1 Требования государственного образовательного стандарта к содержанию
данной дисциплины
1.2 Цели, учебные задачи дисциплины, место и роль учебной дисциплины в
подготовке специалиста
Язык программирования С/С++ является вторым изучаемым языком высокого уровня.
Основной направленностью дисциплины является изучение особенностей языка C/C++ в
сравнении с языком Pascal.
В результате изучения дисциплины «Язык программирования C++» во 3 семестре студенты
должны приобрести систематические знания об основных операторах алгоритмического
языка С/C++, уметь работать в среде Turbo C++ при составлении консольных приложений и
научиться составлять приложения средствами визуального проектирования.
1.3 Виды учебной деятельности студентов
Лекции, лабораторные работы
1.4 Контроль знаний студентов
Индивидуальный контроль знаний
лабораторных работ, зачет
в
процессе
1.5 Другие пояснения автора
2 СОДЕРЖАНИЕ ПРОГРАММЫ
Структура программы на языке C.
Базовые типы данных.
Операторы ввода и вывода.
Операции языка C/C++.
Условный оператор if.
Оператор множественного выбора switch.
Операторы цикла.
Программирование с использованием массивов.
Программирование с использованием строк.
Программирование функций.
Структуры.
Программирование с использованием внешних файлов.
Структура программы на языке C++.
Классы.
Наследование.
Перегрузка функций.
Перегрузка операторов.
6
выполнения
и
сдачи
3 ТЕМАТИЧЕСКИЙ ПЛАН ИЗУЧЕНИЯ УЧЕБНОЙ ДИСЦИПЛИНЫ
2
3
4
5
1
Структура программы на языке C.
Базовые типы данных. Операторы
ввода и вывода. Операции языка
C/C++.
Условный оператор if. Оператор
множественного выбора switch.
Операторы цикла.
Программирование
с
использованием массивов.
Программирование
с
использованием строк.
Программирование функций.
Структуры.
Программирование
с
использованием внешних файлов.
Структура программы на языке
C++. Классы.
Наследование. Перегрузка функций.
Перегрузка операторов.
ИТОГО:
4
2
10
2
4
4
8
2
2
4
8
2
2
4
10
2
6
2
4
8
2
2
2
2
4
8
2
2
4
8
2
2
4
72
18
18
36
2
3
4
5
6
7
8
8
6
Лекции
Самостоятельная
работа
1
Всего
Лабораторные
занятия
№ п/п темы
Наименование разделов и тем
Практические
(семинарские)
занятия
№ п/п раздела
Количество часов по учебному плану
В том числе
Аудиторная нагрузка
7
8
2
4 ПРОГРАММА ЛЕКЦИОННЫХ ЗАНЯТИЙ
4.1 Тематический план лекций
№№
п/п
Темы лекционных занятий
1
2
1
Структура программы на языке C. Базовые типы данных(char, int,
Кол-во
часов
3
2
float, double, void). Операторы ввода и вывода (scanf, printf).
Спецификаторы ввода и вывода(%с, %f, %e, %lf, %le, %ld, %s).
Операции языка C/C++. Приоритет операций.
2
Условный оператор if. Оператор множественного выбора switch.
Операторы цикла for, while и do ... while.
7
2
3
Объявление массивов. Формирование массива. Доступ с элементам
2
массива через указатель.
4
Объявление строк. Ввод и вывод строки (gets, getch, scanf, puts,
2
printf). Функции обработки строк(strlen, strcat, strcpy, strcmp, strchr,
strstr). Функции идентификации символов(islower, isupper, isalpha,
isdigit).
5
Функции с оператором return. Функция с типом void, составленная
2
в рамках языка C. Функция с типом void, использующая ссылочный
тип языка C++. Массивы в функциях. Глобальные параметры.
6
Объявление структуры. Инициализация составных переменных.
2
Использование структур в функциях.
7
Указатель файла. Открытие и закрытие файла. Запись чисел в файл
2
и чтение из файла. Изменение элементов во внешнем файле. Запись
и чтение символов.
8
Структура программы на языке C++: новый вид заголовка,
2
объявление класса, объявление функции класса, организация
доступа к функциям класса, функции ввода и вывода в языке C++,
тип данных bool, структуры и классы.
9
Наследование. Перегрузка функций. Перегрузка операторов.
2
Итого:
18
5 ПРОГРАММА ПРАКТИЧЕСКИХ (СЕМИНАРСКИХ),
ЛАБОРАТОРНЫХ ЗАНЯТИЙ
5.1 Тематический план практических (семинарских) занятий, лабораторных
занятий
№№
п/п
1
Темы лабораторных занятий
2
Кол-во
часов
3
1
Программы линейной структуры
2
2
Программы разветвляющейся структуры
2
3
Программы циклической структуры
2
4
Массивы
2
5
Строки
2
6
Функции
2
7
Файлы
2
8
8
Классы
2
9
Перегрузка операторов
2
Итого
18
6 ПРОГРАММА САМОСТОЯТЕЛЬНОЙ РАБОТЫ
6.1 Тематический план самостоятельной работы
№№
п/п
1
Кол-во
часов
3
Темы для самостоятельного изучения
2
2
3
Структура программы на языке C. Базовые типы данных.
Операторы ввода и вывода. Операции языка C/C++.
Условный оператор if. Оператор множественного выбора switch.
Операторы цикла.
Программирование с использованием массивов.
4
Программирование с использованием строк.
4
5
Программирование функций.
6
6
Структуры.
4
7
Программирование с использованием внешних файлов.
4
8
Структура программы на языке C++. Классы.
4
9
Наследование. Перегрузка функций. Перегрузка операторов.
4
1
2
ИТОГО:
4
4
36
7 ТЕМАТИКА
7.1 Контрольных работ
1. Программирование массивов.
2. Программирование подпрограмм.
3. Перегрузка операторов.
8 КОНТРОЛЬ ЗНАНИЙ СТУДЕНТОВ
3-семестр
Индивидуальная проверка теоретических знаний при
сдаче студентами лабораторных работ
Итоговый контроль
Зачет по дисциплине
Задания для самоконтроля
1. Составить метод main с типами void и int.
2. Организовать ввод и вывод целых чисел.
3. Организовать ввод и вывод вещественных чисел.
4. Организовать ввод и вывод символов.
5. Организовать ввод и вывод строк.
6. Организовать ввод и вывод массива.
7. Составить цикл for для вычисления суммы или произведения.
8. Составить задачу на цикл while и решить ее.
9. Составить задачу на цикл do ... while и решить ее.
10. Привести пример использования оператора множественного выбора switch.
Виды контроля
Текущий контроль
9
11. Сформировать символьный массив и преобразовать его в строку.
12. Составить функцию с оператором return.
13. Составить функцию с типом void, возвращающую вычисленное значение через
формальный параметр.
14. Составить функцию, возвращающую массив.
15. Привести пример, в котором используется составной тип данных.
16. Составить функцию, возвращающую составной тип данных.
17. Составить схему программы, использующую глобальные параметры.
18. Организовать чтение чисел из внешнего файла.
19. Организовать запись чисел, вводимых с клавиатуры, во внешний файл.
20. Составить схему программы, включающий класс.
21. Составить схему класса с перегрузкой оператора.
9 УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ
РАБОЧЕЙ ПРОГРАММЫ
Список литературы
Основная литература
1. Павловская Т.А. C/C++. Программирование на языке высокого уровня.- СПб.: Питер, 2002.
- 464с.
2. Березин Б.И., Березин С.Б. Начальный курс C и C++. - M.: Диалог-МИФИ, 2001. - 288с.
3. Шилдт Г. Полный справочник по C++. - M.: Издательский дом “Вильямс”, 2004. - 800с.
4. Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования C++. - Харьков:
“Фолио”, Ростов-на-Дону: “Феникс”, 2001. - 500с.
5. Бен-Ари М. Языки программирования. Практический сравнительный анализ. -М. : Мир,
2000. - 366с.
Дополнительная литература
6. Культин Н.Б. Основы программирования в Turbo C++. - СПб.: БХВ-Петербург, 2007. 464с.
7. Уоррен Г. Алгоритмические трюки для программистов. - М.: Издательский дом “Вильямс”,
2003. -288с.
8. Бочков С.О., Субботин Д.М. Язык программирования Си для персонального компьютера. М.: Радио и связь, 1990. - 384с.
10
II МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ УЧЕБНОЙ
ДИСЦИПЛИНЫ
1. При рассмотрении базовых типов данных следует обратить внимание на то, char в
отличие от языка Pascal является однобайтным целым типом, который при различных
спецификаторах может восприниматься, как целый или символьный тип.
2. При рассмотрении структуры программы на языке C следует обратить на то, что
программа оформлена в виде функции, но с заданным именем main.
3. Следует обратить внимание на многоступенчатый приоритет операций.
4. При рассмотрении операторов if и switch сравнить их с операторами языка Pascal if
и case.
5. Операторы цикла for, while и do ... while сравнить с операторами языка Pascal for,
while и repeat ... until.
6. При изучении массива обратить внимание на нумерацию элементов с 0 и на
возможность обращение к элементу не по индексу, а через адрес элемента с помощью
указателя.
7. При изучении строк обратить внимание о сходстве и различии строк и символьных
массивов.
8. При изучении функций обратить внимание на возможность возвращения вычисленных в функции значений переменных через формальные параметры: с помощью указателя и с помощью переменной ссылочного типа. При передаче в функцию массива обратить внимание на то, что в функцию передается только адрес элемента массива с нулевым номером.
9. При изучении структуры обратить внимание на то, что сформированная внутри
функции переменная с типом структуры, может быть возвращена в программу с помощью
оператора return.
10. При рассмотрении внешних файлов обратить внимание на то, что для чисел и для
символов используются разные функции чтения и записи.
11. При рассмотрении структуры программы на языке С++ следует обратить внимание, что все функции, рассмотренные в языке C, кроме функции main объединены внутри
одного или нескольких классов, а функция main оперирует функциями класса через
созданный в ней объект класса.
12. При изучении наследования в сравнении с языком Pascal обратить внимание на
то, что для языка C++ возможно множественное наследование.
13. При перегрузке операторов обратить внимание на то, что один и тот же оператор
может выполнять различные функции в зависимости от вида операндов.
III УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ
Вопросы для самопроверки
1. Какие существуют варианты метода main?
2. Какая существует особенность при использовании метода scanf по сравнению с методом
printf?
3. Как организовать вывод вещественного числа c 2 цифрами после точки?
4. Какие функции используются для ввода символов?
5. Какие функции используются для ввода и вывода строк?
6. Какой спецификатор используется для перевода курсора на новую строку?
7. Как отличаются заголовки цикла, в одном из которых параметр цикла возрастает, в другом
- убывает?
8. Каким образом завершается цикл while?
9. В чем состоит основное отличие цикла while от цикла do ... while?
10. Для чего необходимы операторы break в операторе множественного выбора switch?
11. Чем отличается символьный массив и от строки в языке C?
12. В каком случае для функции обязателен оператор return?
11
13. Каким образом функция в языке C может возвращать вычисленные значения через
формальные параметры?
14. В чем отличие функции, возвращающей массив, и функции, возвращающей число?
15. Для каких данных удобней использовать составной тип?
16. Каким образом можно возвратить из функции составной тип данных?
17. В каких случаях удобней использовать глобальные параметры?
18. Как организовать чтение чисел из внешнего файла?
19. Как организовать запись чисел, вводимых с клавиатуры, во внешний файл?
20. Какой спецификатор имеют члены класса по умолчанию?
21. В чем состоит смысл перегрузки операторов?
IV МАТЕРИАЛЫ ТЕКУЩЕГО КОНТРОЛЯ, ПРОМЕЖУТОЧНОЙ АТТЕСТАЦИИ
И ИТОГОВОГО КОНТРОЛЯ ЗНАНИЙ
ЗАДАЧИ ДЛЯ ЗАЧЕТА
ЗАДАЧИ ГРУППЫ А
1. Даны целые числа x, y. Найти наибольшее.
2. Дано действительное число. Принадлежит ли оно интервалам (1,1, 3] или [5, 10,3).
3. Вычислить в произвольной точке значение функции t(x), если
 1, если x  0;
t( x )   x
e , если x  0.
4. Дано натуральное число n. Вычислить:
n
1
i ;
i 1
n
5. Дано натуральное число n. Вычислить:
1
 (2i )
i 1
2
;
n
sin( x )
;
k
k 1
7. Дана вещественная матрица размером m×n. Найти сумму элементов.
8. Дана вещественная матрица размером m×n. Найти минимальный элемент.
9. Дана вещественная матрица размером m×n. Найти максимальный элемент.
10. Дана целая матрица размером m×n. Найти количество чётных элементов.
11. Дана целая матрица размером m×n. Найти количество нечётных элементов.
12. Дана вещественная матрица размером m×n. Найти количество отрицательных
элементов.
13. Дана вещественная матрица размером m×n. Найти количество нулевых элементов.
14. Дана строка символов. Найти ее длину.
15. Дана строка символов и символ x. Подсчитать, сколько раз среди символов строки
встречается символ x.
16. Дана строка символов. Подсчитать, общее число вхождений символов +, - ,*, / в
строку.
17. Дана строка символов. Подсчитать количество предложений в строке.
18. Дана строка символов. Выяснить, имеется ли в строке пара соседствующих букв но
или он.
19. Задать запись описывающую вектор. Найти сумму двух векторов.
20. Задать запись описывающую вектор. Найти разность двух векторов.
21. Задать запись описывающую вектор. Найти угол между векторами.
22. Задать запись описывающую вектор. Найти скалярное произведение векторов.
23. Задать запись описывающую комплексное число. Найти произведение двух
комплексных чисел.
24. Задать запись описывающую треугольник. Найти его периметр и площадь.
6. Дано натуральное число n, действительное x. Вычислить:
12

25. Даны действительные числа a и b. Получить f(a)+f(b), где f ( x)  x 4 (1  x) 2 .
26. Даны действительные числа a и b. Получить f(a)-f(b), где f ( x)  sin 3 x  cos 3 x .
27. Даны действительные числа a и b. Получить f(a)·f(b), где f ( x)  e x  e  x .
ЗАДАЧИ ГРУППЫ Б
( 1) k (k  1)
.

k!
k 1
n
1.
Дано натуральное число n. Вычислить:
2.
Дано натуральное число n, действительное x. Вычислить:
n

i 1
(i  3) ln( x )
.
i6

1
.
 k3
k 1
4. Дана целая матрица размером m×n. Найти номера строк, сумма элементов которых
равна 0.
5. Дана вещественная матрица размером m×n. Найти минимальные элементы столбцов.
6. Дана квадратная вещественная матрица порядка n. Найти сумму диагональных
элементов.
7. Дана вещественная матрица размером m×n. Найти сумму наибольших элементов
строк.
8. Дана вещественная матрица размером m×n. Найти сумму элементов с чётными
индексами строк и нечётными индексами столбцов.
9. Дана целая квадратная матрица порядка n. Найти количество нечетных элементов,
расположенных в заштрихованной части матрицы.
3.
Даны действительные числа x,  (x0, >0). Вычислить с точностью :
x
2
10. Дана строка символов. Подсчитать, сколько раз среди символов строки встречается
символ + и сколько раз символ -.
11. Дана строка символов. Заменить в ней все цифры знаками *.
12. Дана строка символов. Подсчитать количество букв латинского алфавита в строке.
13. Дана строка символов. Найти в строке позицию последней запятой.
14. Дана строка символов. Подсчитать количество слов в строке. (Слова разделены
пробелами.)
15. Дана строка символов. Удалить из нее все символы, кроме цифр.
16. Дана строка символов. Удалить из нее символы *.
17. Дан список из n записей о студентах. Каждая запись содержит следующие поля:
фамилия, имя, отчество, средняя успеваемость. Вывести список студентов у которых
средний балл от 4,0 до 5,0.
18. Дан список из n записей о студентах. Каждая запись содержит следующие поля:
фамилия, имя, отчество, курс. Вывести список студентов 1-го и 2-го курса.
19. Даны действительные числа a и b. Получить 1,75f(a)+4f(b), где f ( x)  (sin x  cosx) 2 .
x2
4
20. Даны действительные числа a и b. Получить 1/2 f(a) - f(b) , где f ( x) x e .
3
5
21. Даны действительные числа a, b, c. Получить sin(f(a, b))-f(b, c), где f ( x, y)  xe y .
22. Дана строка символов. Найти ее длину. (Для нахождения длины строки написать
функцию, которая в работе не использует функции заголовочного файла string.h).
23. Вычислить значение e с заданной точностью. (Для вычисления значения e с заданной
точностью написать функцию).
24. Дана вещественная квадратная матрица A порядка 3. Найти ее определитель. (Для
13
нахождения определителя матрицы написать функцию).
25. Дан массив из n элементов. Найти среднее значение элементов массива. (Для
нахождения среднего значения написать функцию).
26. Найти скалярное произведение векторов. (Для нахождения скалярного произведения
векторов написать функцию).
27. Найти произведение двух комплексных чисел. (Для нахождения произведения
комплексных чисел написать функцию).
V СЛОВАРЬ ТЕРМИНОВ И ПЕРСОНАЛИЙ
Алгоритм - последовательность действий при решении задачи.
Программа - реализация алгоритма на языке программирования.
Идентификатор - название константы, типа или переменной, используемое в программе.
Цикл - многократное выполнение одних и тех же действий при различных параметрах.
Массив - совокупность переменных, имеющих одинаковый тип и объединенных под одним
именем.
Массив символов - последовательность символов, объединенных под одним именем.
Строка - массив символов, заканчивающийся нулевым байтом и имеющий дополнительную
языковую поддержку.
Структура - составной тип данных, в рамках которого объявляются переменные простых
типов или переменные других составных типов.
Файл - совокупность данных, сохраненных на диске под определенным именем.
Указатель файла - указатель на структуру с информацией о имени файла, статусе файла,
текущем положении курсора.
Подпрограмма - сегмент программы, к которому можно обратиться из любого места внутри
программы.
Рекурсивная подпрограмма - подпрограмма, которая обращается сама к себе.
Сортировка - перестановка элементов в порядке возрастания или в порядке убывания.
Указатель - переменная, в которой хранится адрес ячейки.
Ссылочный тип - тип, определяющий указатель.
Составной указатель - составной тип данных, в котором объединяются переменные
простых типов и составные указатели.
Класс - сложная структура, включающая данные и описание методов для манипуляции с
этими данными.
Объект - экземпляр класса для его вызова методов.
Инкапсуляция - механизм, связывающий воедино код и данные, которыми он
манипулирует.
Полиморфизм - возможность передачи управления одноименным методам различных
классов.
Наследование - процесс, в ходе которого один объект может приобретать свойства другого.
Перегрузка функций - использование одного имени для нескольких функций.
Перегрузка оператора - распространение действия оператора на созданные программистом
объекты.
VI ПРОГРАММА ГОСУДАРСТВЕННОГО ЭКЗАМЕНА, ИТОГОВОГО
МЕЖДИСЦИПЛИНАРНОГО ЭКЗАМЕНА
экзамен не предусмотрен
VII ПРОГРАММНОЕ И МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ПРАКТИКИ
практика не предусмотрена
14
Download