А.А. Богуславский, С.М. Соколов
Основы программирования
на языкеСи++
Часть 1. Введение в программирование
на языке Си++
(длястудентовфизико-математическихфакультетов
педагогических институтов)
Коломна, 2002
2
ББК 32.97я73 Рекомендовано кизданию
УДК 681.142.2(075.8) редакционно-издательскимсоветом
Б 73 Коломенскогогосударственного
педагогического института
Богуславский А.А., СоколовС.М.
Б73 ОсновыпрограммированиянаязыкеСи++: Длястудентовфизико-
математических факультетовпедагогическихинститутов. –Коломна: КГПИ,
2002. – 490 с.
Пособие предназначенодляобучениястудентов, обладающих навыкамиполь-
зовательской работынаперсональномкомпьютере, основнымпонятиямиметодам
современного практическогопрограммирования. Предметомизучениякурсаявляется
объектно-ориентированноепрограммированиенаязыкеСи++ всредесовременных
32-хразрядныхоперационныхсистемсемейства Windows. Программакурсаразбита
на 4 части: (1) ВведениевпрограммированиенаязыкеСи++; (2) Основыпрограмми-
рования трехмернойграфики; (3) Объектно-ориентированное программированиена
языке Си++ и (4) Программированиедля Microsoft Windows сиспользованием Visual
C++ ибиблиотекиклассов MFC.
После изучениякурсастудентполучаетдостаточнополноепредставлениео
содержании современногообъектно-ориентированногопрограммирования, обуст-
ройстве современныхоперационныхсистем Win32 иособытийно-управляемомпро-
граммировании. Напрактическихзанятияхвырабатываютсянавыкипрограммирова-
ния наСи++ винтегрированной средеразработки Microsoft Visual C++ 5.0.
Рецензенты:
И.П. Гиривенко–к.т.н., доцент, зав. кафедройинформатикиивычислительнойтех-
ники Рязанскогогосударственногопедагогическогоуниверситета
им. С.А. Есенина.
А.А. Шамов–к.х.н., доценткафедрытеоретическойфизикиКоломенскогогосу-
дарственного педагогическогоинститута.
3
СОДЕРЖАНИЕ
КРАТКОЕ ОПИСАНИЕ УЧЕБНОГО КУРСА "ОСНОВЫ ПРОГРАММИРОВАНИЯ
НА ЯЗЫКЕ СИ++" ..........................................................................................................................5
ЛЕКЦИЯ 1. ОСНОВЫ СИ++.........................................................................................................7
1. НЕСКОЛЬКО ЗАМЕЧАНИЙОНАЗНАЧЕНИИПРОГРАММИРОВАНИЯ................................................7
2. ПРОИСХОЖДЕНИЕ ЯЗЫКАСИ++...................................................................................................9
3. СТАНДАРТ ANSI СИ++ ................................................................................................................9
4. СРЕДА РАЗРАБОТКИMICROSOFT DEVELOPER STUDIO VISUAL С++...........................................10
5. ПРИМЕР ПРОГРАММЫНАСИ++ .................................................................................................10
6. ВЫПОЛНЕНИЕ ВВОДА/ВЫВОДА ДАННЫХИПРИСВАИВАНИЕЗНАЧЕНИЙ....................................12
7. УПРАВЛЕНИЕ ПОРЯДКОМВЫПОЛНЕНИЯКОМАНДСПОМОЩЬЮОПЕРАТОРА IF ........................13
8. ОФОРМЛЕНИЕ ИСХОДНОГОТЕКСТА...........................................................................................15
9. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................15
10. УПРАЖНЕНИЯ ...........................................................................................................................15
ЛЕКЦИЯ 2. ПЕРЕМЕННЫЕ, ТИПЫ ДАННЫХ И ВЫРАЖЕНИЯ....................................18
1. ИДЕНТИФИКАТОРЫ ....................................................................................................................18
2. ТИПЫ ДАННЫХ...........................................................................................................................18
3. ВЫВОД ВЕЩЕСТВЕННЫХЧИСЕЛНАЭКРАН................................................................................22
4. ОПИСАНИЯ, КОНСТАНТЫ ИПЕРЕЧИСЛЕНИЯ..............................................................................24
5. ПРИСВАИВАНИЕ ИВЫРАЖЕНИЯ.................................................................................................26
6. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................28
7. УПРАЖНЕНИЯ .............................................................................................................................28
8. ПРИЛОЖЕНИЯ .............................................................................................................................29
ЛЕКЦИЯ 3. ФУНКЦИИ И ПРОЦЕДУРНАЯ АБСТРАКЦИЯ .............................................31
1. НАЗНАЧЕНИЕ ПОДПРОГРАММ.....................................................................................................31
2. ОПРЕДЕЛЕНИЕ НОВЫХФУНКЦИЙ...............................................................................................31
3. СПОСОБЫ ПЕРЕДАЧИПАРАМЕТРОВВНУТРЬФУНКЦИЙ..............................................................33
4. ПОЛИМОРФИЗМ ИПЕРЕГРУЗКАФУНКЦИЙ..................................................................................35
5. ПРОЦЕДУРНАЯ АБСТРАКЦИЯИ"ХОРОШИЙ" СТИЛЬ ПРОГРАММИРОВАНИЯ...............................36
6. МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ...........................................................................................36
7. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................38
8. УПРАЖНЕНИЯ .............................................................................................................................39
ЛЕКЦИЯ 4. ТЕКСТОВЫЕ ФАЙЛЫ И ПОТОКИ ВВОДА/ВЫВОДА ................................41
1. НАЗНАЧЕНИЕ ФАЙЛОВ................................................................................................................41
2. ПОТОКИ ВВОДА/ВЫВОДА ...........................................................................................................41
3. ПРОВЕРКА ОШИБОКВЫПОЛНЕНИЯФАЙЛОВЫХОПЕРАЦИЙ.......................................................43
4. СИМВОЛЬНЫЙ ВВОД/ВЫВОД ......................................................................................................44
5. ПРОВЕРКА ДОСТИЖЕНИЯКОНЦАФАЙЛАПРИОПЕРАЦИЯХВВОДА............................................45
6. ПЕРЕДАЧА ПОТОКОВ ФУНКЦИЯМВКАЧЕСТВЕПАРАМЕТРОВ.....................................................47
7. ОПЕРАТОРЫ ВВОДА/ВЫВОДА ">>" И "<<" .................................................................................48
8. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................50
9. УПРАЖНЕНИЯ .............................................................................................................................50
ЛЕКЦИЯ 5. ОПЕРАТОРЫ ВЕТВЛЕНИЯ И ЦИКЛЫ ...........................................................52
1. ЛОГИЧЕСКИЕ ЗНАЧЕНИЯ, ВЫРАЖЕНИЯ ИФУНКЦИИ...................................................................52
2. ЦИКЛЫ "FOR", "WHILE" И "DO...WHILE" .....................................................................................53
3. МНОЖЕСТВЕННОЕ ВЕТВЛЕНИЕИОПЕРАТОР"SWITCH" ..............................................................55
4. БЛОКИ ИОБЛАСТЬВИДИМОСТИПЕРЕМЕННЫХ..........................................................................56
4
5. ЗАМЕЧАНИЕ ОВЛОЖЕННЫХЦИКЛАХ.........................................................................................59
6. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................59
7. УПРАЖНЕНИЯ .............................................................................................................................60
ЛЕКЦИЯ 6. МАССИВЫ И СИМВОЛЬНЫЕ СТРОКИ.........................................................63
1. НАЗНАЧЕНИЕ МАССИВОВ...........................................................................................................63
2. ПЕРЕДАЧА МАССИВОВВКАЧЕСТВЕПАРАМЕТРОВФУНКЦИЙ....................................................66
3. СОРТИРОВКА МАССИВОВ...........................................................................................................68
4. ДВУМЕРНЫЕ МАССИВЫ..............................................................................................................69
5. СИМВОЛЬНЫЕ СТРОКИ...............................................................................................................70
6. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................73
7. УПРАЖНЕНИЯ .............................................................................................................................73
ЛЕКЦИЯ 7. УКАЗАТЕЛИ............................................................................................................75
1. НАЗНАЧЕНИЕ УКАЗАТЕЛЕЙ........................................................................................................75
2. ПЕРЕМЕННЫЕ ТИПА"МАССИВ". АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИСУКАЗАТЕЛЯМИ....................79
3. ДИНАМИЧЕСКИЕ МАССИВЫ.......................................................................................................81
4. АВТОМАТИЧЕСКИЕ ИДИНАМИЧЕСКИЕПЕРЕМЕННЫЕ................................................................82
5. СВЯЗНЫЕ СПИСКИ......................................................................................................................82
6. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................86
7. УПРАЖНЕНИЯ .............................................................................................................................87
ЛЕКЦИЯ 8. РЕКУРСИЯ...............................................................................................................89
1. ПОНЯТИЕ РЕКУРСИИ...................................................................................................................89
2. ПРОСТОЙ ПРИМЕРРЕКУРСИИ.....................................................................................................89
3. КАК ВЫПОЛНЯЕТСЯРЕКУРСИВНЫЙВЫЗОВ................................................................................90
4. ЕЩЕ ТРИПРИМЕРАРЕКУРСИИ....................................................................................................92
5. РЕКУРСИЯ ИЦИКЛЫ....................................................................................................................93
6. РЕКУРСИЯ ВСТРУКТУРАХДАННЫХ............................................................................................94
7. РЕКУРСИВНАЯ РЕАЛИЗАЦИЯАЛГОРИТМАБЫСТРОЙСОРТИРОВКИ.............................................94
8. СВОДКА РЕЗУЛЬТАТОВ...............................................................................................................97
9. УПРАЖНЕНИЯ .............................................................................................................................97
ЛЕКЦИЯ 9. СОСТАВНЫЕ ТИПЫ ДАННЫХ.......................................................................100
1. НАЗНАЧЕНИЕ СОСТАВНЫХТИПОВДАННЫХ............................................................................100
2. ОПИСАНИЕ ИИНИЦИАЛИЗАЦИЯСТРУКТУР..............................................................................100
3. ДОСТУП ККОМПОНЕНТАМСТРУКТУРЫЧЕРЕЗУКАЗАТЕЛЬ......................................................103
4. МАССИВЫ ИСТРУКТУРЫ..........................................................................................................104
5. ПЕРЕГРУЗКА ОПЕРАТОРОВ........................................................................................................105
6. ПРИМЕНЕНИЕ СТРУКТУРДЛЯРЕАЛИЗАЦИИСТЕКА ..................................................................107
7. СВОДКА РЕЗУЛЬТАТОВ.............................................................................................................111
8. УПРАЖНЕНИЯ ...........................................................................................................................112
ПРИЛОЖЕНИЕ. КРАТКОЕ РУКОВОДСТВО ПО СРЕДЕ РАЗРАБОТКИ DEVELOPER
STUDIO VISUAL C++..................................................................................................................113
1. СОЗДАНИЕ НОВОГОПРОЕКТА...................................................................................................113
2. ДОБАВЛЕНИЕ ВПРОЕКТНОВОГОИСХОДНОГОФАЙЛА.............................................................114
3. СБОРКА ПРОЕКТА.....................................................................................................................115
4. ЗАПУСК НОВОГОПРИЛОЖЕНИЯ................................................................................................116
ЛИТЕРАТУРА.............................................................................................................................117
5
Краткое описание учебного курса "Основы программиро-
вания на языке Си++"
Развитие современныхтехнологийпрограммированияпредполагаетвладение
программистом широкимнаборомпрактическихнавыков, средикоторыходнимииз