- •Экзамен 374 Предварительные рассуждения Вступительное слово
- •Исторические факты
- •Начнем!
- •Проба пера
- •Открытие сохраненного проекта
- •Вывод данных
- •Типы данных
- •Хороший стиль программирования
- •Переменные и константы
- •Практический пример
- •Ввод данных
- •Например:
- •Пример:
- •Арифметические операции с числами
- •Литералы
- •Некоторые примеры
- •Домашнее задание
- •Напишите программу, которая вводит число из трех цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга с тремя пробелами между ними. Преобразование типов
- •Перечисляемые типы
- •Типичная ошибка
- •Хороший стиль программирования
- •Типичная ошибка
- •Выражения
- •Оператор if
- •Структура программы
- •Логические операции
- •Структура множественного выбора switch
- •Практический пример
- •Цикл for
- •Практический пример
- •Цикл do-while
- •Домашнее задание
- •Вызов функции
- •Прототипы функций
- •Разбор программы
- •Область видимости
- •Аргументы по умолчанию
- •Встраивание
- •Перегрузка функций
- •Учебный пример перегруженных функций. Иллюстрация перегрузки
- •Результат работы программы
- •Практические примеры
- •Домашнее задание
- •Примеры домашней работы урока 1 Пример №1
- •Как работает программа
- •Пример №2
- •Как работает программа
- •Примеры домашних работ на создание функций Пример №1
- •Как работает программа
- •Пример №2
- •Как работает программа
- •Массивы
- •Объявление массивов
- •Примеры использования массивов
- •Программа 1
- •Программа 2
- •Обратите внимание!
- •Типичная ошибка программирования
- •Типичная ошибка программирования
- •Программа 3
- •Типичная ошибка программирования
- •Замечание по технике программирования
- •Программа 4
- •Программа 5
- •Программа нахождения минимального и максимального элементов массива
- •Сортировка массивов
- •Домашнее задание
- •Что такое указатели?
- •За кулисами...
- •Как работать с указателями?..
- •Зачем нужны указатели?
- •Указатели и Массивы.
- •Примеры задач
- •Пример 1
- •Пример 2
- •Пример 3
- •Указатели - аргументы функций.
- •Ссылочные параметры
- •Примеры решения задач
- •Домашнее задание
- •Операторы свободной памяти new и delete
- •Функции работы со строками из библиотеки обработки строк
- •Пример 1.
- •Пример2
- •Пример 3
- •Пример задачи на новый материал
- •Домашнее задание
- •Двухмерные массивы, как частный случай многомерных массивов
- •Программа.
- •Результаты работы программы.
- •Многомерные динамические массивы
- •Пример на многомерные динамические массивы
- •Домашнее задание
- •Рекурсия
- •Рекурсии или итерации
- •Указатели на функции
- •Пример №1
- •Результат выполнения программы:
- •Пример №2
- •Результат выполнения программы
- •Пример №3
- •Результаты выполнения программы
- •Определения структур
- •Пример #1 на использование структур
- •Пример #2 на использование структур
- •Оператор указателя на структуру
- •Домашнее задание
- •Тест по c Группа ___________________ф. И. О. ______________________
- •Объектно-ориентированное программирование.
- •Наследование (Inheritance).
- •Инкапсуляция (Encapsulation).
- •Определение класса
- •Конструкторы и деструкторы Инициализация объектов класса: конструкторы
- •Основное назначение конструкторов - инициализация объектов.
- •Использование конструкторов с аргументами по умолчанию
- •Если параметры не передаются конструктору, в определении объекта не нужно включать пустые круглые скобки.
- •Использование деструкторов
- •Когда вызываются конструкторы и деструкторы.
- •Домашнее задание
- •Конструктор копирования
- •Синтаксис конструктора копирования
- •Памятка
- •Пример использования конструктора копирования.
- •Перегруженные конструкторы
- •Экскурс в историю
- •Послесловие к примеру
- •Маленькое замечание
- •Домашнее задание
- •Создание класса ''строка''
- •Перегрузка операций.
- •Общие принципы перегрузки операторов.
- •Преобразования, определяемые классом
- •Пример строкового класса с перегруженными операторами
- •Домашнее задание
- •Дружественные функции (Friend Functions)
- •Пример строкового класса с перегруженными операторами и дружественными функциями
- •Перегрузка операторов new и delete
- •Перегрузка оператора индексирования
- •Класс вектор. Часть1.
- •Класс вектор. Часть 2.
- •Класс вектор. Часть 3.
- •Домашнее задание
- •Наследование (Inheritance). Часть 1.
- •Наследование (Inheritance). Часть 2.
- •Множественное наследование (multiple inheritance)
- •Пример множественного наследования
- •Домашнее задание
- •Статические члены данных
- •Раннее и позднее связывание
- •Виртуальные функции
- •Пример.
- •Абстрактные классы
- •Виртуальный базовый класс
- •Практический пример
- •Домашнее задание
- •Потоки ввода-вывода.
- •Iostream.H: stream - поток, "I" - сокр. Input - ввод, "o" - сокр. Output - вывод.
- •Предопределенные потоки.
- •Операции помещения в поток и извлечения из потока.
- •Файловый ввод-вывод с применением потоков.
- •Конструкторы файловых потоков.
- •Функции для открытия и закрытия файлов.
- •Функции для обмена с потоками.
- •Часто применяемые функции потока.
- •Ввод/вывод массива в/из файл(-а).
- •Практический пример: перекодировка файла.
- •Домашнее задание
- •Немного о файлах...
- •И снова файлы...
- •Пример "Телефонная книга"
- •Файл abonent.H
- •Форматирование данных при обменах с потоками.
- •Состояние потока.
- •Использование аргументов командной строки.
- •Ввод/вывод в с.
- •Домашнее задание
- •Определение шаблонов функций
- •Переопределение шаблонов функций
- •Шаблоны классов
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Введение
- •Обработка исключительных ситуаций
- •Практический пример
- •Программа
- •Домашнее задание
- •Экзамен
Оглавление:
Предварительные рассуждения 5
Инсталляция Visual C++ 6.0 7
Начнем! 10
Вывод данных 17
И запустим ее (Build ->Execute Resume.exe). 20
Типы данных 20
Хороший стиль программирования 21
Переменные и константы 24
Ввод данных 27
Например: 27
Пример: 27
Арифметические операции с числами 29
Литералы 32
Некоторые примеры 32
Домашнее задание 33
Преобразование типов 33
Перечисляемые типы 35
Типичная ошибка 36
Хороший стиль программирования 36
Типичная ошибка 36
Выражения 37
Оператор if 39
Структура программы 42
Логические операции 43
Структура множественного выбора switch 47
Пример 50
Домашнее задание 51
Задача 1 51
Задача 2 51
Задача 3 52
Задача 4 52
Цикл while 52
Практический пример 55
Цикл for 56
Практический пример 60
Цикл do-while 61
break и continue 62
Домашнее задание 63
Дано произвольное целое число n. Написать программу, которая разбивает число n на цифры и выводит их на экран; подсчитывает сколько цифр в числе n; находит сумму цифр числа n; меняет порядок цифр числа n на обратный 64
Введение в мир функций 64
Вызов функции 66
return 67
Прототипы функций 71
Область видимости 74
Аргументы по умолчанию 79
Встраивание 80
Перегрузка функций 82
Учебный пример перегруженных функций. Иллюстрация перегрузки 83
Результат работы программы 84
Практические примеры 85
Домашнее задание 90
Примеры домашней работы урока 1 90
Пример №1 90
Как работает программа 91
Пример №2 91
Как работает программа 91
Примеры домашних работ на создание функций 92
Пример №1 92
Как работает программа 93
Пример №2 93
Как работает программа 94
Массивы 95
Объявление массивов 96
Примеры использования массивов 96
Программа 1 96
Программа 2 97
Обратите внимание! 97
Типичная ошибка программирования 98
Типичная ошибка программирования 98
Программа 3 98
Типичная ошибка программирования 99
Замечание по технике программирования 99
Программа 4 99
Программа 5 100
Программа нахождения минимального и максимального элементов массива 101
Сортировка массивов 102
Поиск 105
Домашнее задание 110
Что такое указатели? 111
За кулисами... 111
Как работать с указателями?.. 112
Зачем нужны указатели? 113
Указатели и Массивы. 113
Примеры задач 116
Указатели - аргументы функций. 119
Ссылки 122
Ссылочные параметры 124
Примеры решения задач 128
Домашнее задание 132
Операторы свободной памяти new и delete 133
Работа со строками в С++ 135
Функции работы со строками из библиотеки обработки строк 139
Работа со строками в С++. Примеры 142
Пример 1. 142
Пример2 143
Пример 3 145
Пример задачи на новый материал 146
Домашнее задание 150
двухмерные массивы, как частный случай многомерных массивов 150
Пример 154
Многомерные динамические массивы 158
Пример на многомерные динамические массивы 161
Домашнее задание 169
Рекурсия 169
Рекурсии или итерации 172
Указатели на функции 173
Пример №1 174
Результат выполнения программы: 175
Пример №2 175
Результат выполнения программы 177
Пример №3 177
Результаты выполнения программы 179
Определения структур 179
Пример #1 на использование структур 185
Пример #2 на использование структур 187
Оператор указателя на структуру 191
Домашнее задание 193
Группа ___________________Ф. И. О. ______________________ 194
Объектно-ориентированное программирование. 197
Наследование (Inheritance). 200
Инкапсуляция (Encapsulation). 201
Определение класса 203
Конструкторы и деструкторы 208
Домашнее задание 216
Конструктор копирования 216
Пример 217
Синтаксис конструктора копирования 220
Памятка 220
Пример использования конструктора копирования. 220
Указатели на объекты 222
Пример 222
Новая информация 223
Пример 223
Важно 224
Пример 224
Перегруженные конструкторы 226
Экскурс в историю 226
Пример 226
Маленькое замечание 227
Пример 227
Вывод 230
this 230
Домашнее задание 232
Создание класса ''СТРОКА'' 233
Перегрузка операций. 236
Общие принципы перегрузки операторов. 241
Преобразования, определяемые классом 242
Пример строкового класса с перегруженными операторами 243
Домашнее задание 246
Дружественные функции (Friend Functions) 247
Пример строкового класса с перегруженными операторами и дружественными функциями 253
Перегрузка инкремента (++) и декремента (--) 259
Перегрузка операторов new и delete 263
Перегрузка оператора индексирования 264
Класс вектор. Часть1. 265
Класс вектор. Часть 2. 267
Класс вектор. Часть 3. 275
Домашнее задание 276
Наследование (Inheritance). Часть 1. 276
Наследование (Inheritance). Часть 2. 281
Множественное наследование (multiple inheritance) 285
Пример множественного наследования 293
Домашнее задание 295
Статические члены данных 296
Раннее и позднее связывание 300
Виртуальные функции 301
Пример. 302
Абстрактные классы 306
Виртуальный базовый класс 306
Практический пример 312
Домашнее задание 316
Ввод-вывод в языке С++. 316
Файловый ввод-вывод с применением потоков. 318
Ввод/вывод массива в/из файл(-а). 323
Практический пример: перекодировка файла. 326
Домашнее задание 328
Немного о файлах... 328
И снова файлы... 332
Пример "Телефонная книга" 334
Ввод-вывод в языке С++. 342
Использование аргументов командной строки. 345
Ввод/вывод в С. 346
Домашнее задание 348
Определение шаблонов функций 348
Переопределение шаблонов функций 351
Шаблоны классов 352
Шаблонный класс вектор 354
Шаблонный класс вектор 356
Шаблонный класс вектор 366
Введение 366
Обработка исключительных ситуаций 367
Практический пример 371
Домашнее задание 374
Экзамен 374 Предварительные рассуждения Вступительное слово
Добро пожаловать, в мир программирования! Что такое программирование? Наверное, каждый из Вас когда-то слышал это слово. Перефразировав известную цитату, можно сказать так: "Программист - это звучит гордо!". И это действительно так. Если Вы, бороздя просторы Internet, наталкивались на сайты с предложением о работе, то обращали внимание на размер заработной платы, которая предлагается программистам. Естественно, тут же возникает вопрос: почему такой высокий уровень оплаты труда программиста? Все согласно законам рынка: есть спрос на программистов, но, на данный момент, их количество слишком мало. Конечно, если бы программистом можно было стать за короткий срок, заучив ряд слов, профессия вряд ли была такой популярной. Но не расстраивайтесь! Мы, Ваши преподаватели, постараемся сделать все от нас зависящее для того, чтобы нетолько рассказать Вам как программировать, а научить Вас жить программируя. Однако, наша с Вами совместная работа должна быть с взаимной. Преподаватель, как бы он не старался, не сможет обучить студента, если тот этого не захочет. Работа, только постоянная работа над собой сможет провести Вас к вершине мастерства.
Искренне надеемся на то, что Вы увлечетесь волшебным миром программирования на С++!!!
Исторические факты
Рассмотрим несколько исторических фактов развития науки, которая называется computer-science...
Английский математик XIX века Шенкс потратил более 20 лет своей жизни на вычисление числа Пи с точностью 707 значащих цифр после запятой. Этот результат получил славу рекорда вычислений XIX века. Однако впоследствии было обнаружено, что Шенкс ошибся в 520-м знаке, и поэтому все последующие значащие цифры были вычислены неверно.
В 1804 году французский изобретатель Жозеф Мари Жаккар создал "программно-управляемый" ткацкий станок. Для управления станком использовались перфокарты, соединенные друг с другом в виде ленты. Деревянные шпильки "читающего устройства" станка по расположению отверстий в перфокарте определяли, какие нити следует поднять, а какие опустить для получения нужного узора.
В 1890 году в США изобретателем Германом Холлеритом разработана электромеханическая счетная машина - табулятор, управляемая перфокартами, была использована для составления таблиц с результатами переписи населения США. Основанная Холлеритом фирма по производству табуляторов впоследствии превратилась в корпорацию International Business Machines (IBM).
В 1936 году двадцатипятилетний студент Кембриджского университета англичанин Алан Тьюринг опубликовал статью "О вычислимых числах", в которой рассматривалось гипотетическое устройство ("машина Тьюринга"), пригодное для решения любой разрешимой математической или логической задачи, - прообраз программируемого компьютера.
В 1941 году немецкий инженер Конрад Цузе построил действующий компьютер Z3, в котором использовалась двоичная система счисления. Программы записывались на перфоленте.
В 1945 году в высшем техническом училище Пенсильванского университета (США) физик Джон Мочли и инженер Проспер Экерт построили полностью электронную машину "Эниак". Для задания программы было необходимо вручную установить тысячи переключателей и воткнуть сотни штекеров в гнезда контактной панели.
1 июня 1945 года был разослан отчет американского математика венгерского происхождения Джона фон Неймана "Предварительный отчет о машине Эдвак", содержащий концепцию хранения команд компьютера в его собственной внутренней памяти.
21 июня 1948 года в Манчестерском университете (Великобритания) на машине "Марк-1" выполнена первая в мире хранимая в памяти машины программа - поиск наибольшего сомножителя заданного числа.
В 1949 году под руководством Мориса Уилкса создан компьютер "Эдсак". Проектировщики "Эдсака" ввели систему мнемонических обозначений, где каждая машинная команда представлялась одной заглавной буквой, и автоматизировали настройку подпрограмм на определенное место в памяти. Морис Уилкс назвал мнемоническую схему и библиотеку подпрограмм собирающей системой (assembly system) - отсюда слово "ассемблер".
В 1949 году в Филадельфии (США) под руководством Джона Мочли создан "Краткий код" - первый примитивный интерпретатор языка программирования.
В 1951 году в фирме Remington Rand американская программистка Грейс Хоппер разработала первую транслирующую программу. Хоппер назвала ее компилятором (compiler - компоновщик).
В 1957 году на 20-м этаже штаб-квартиры фирмы IBM на Мэдисон-авеню в Нью-Йорке родился язык Фортран (FORmula TRANslation - трансляция формул). Группой разработчиков руководил 30-летний математик Джон Бэкус. Фортран - первый из "настоящих" языков высокого уровня.
В 1972 году 31-летний специалист по системному программированию из фирмы Bell Labs Деннис Ритчи разработал язык программирования Си.
Первое описание языка было дано в книге Б. Кернигана и Д. Ритчи, которая была переведена на русский язык. Долгое время это описание являлось стандартом, однако ряд моментов допускали неоднозначное толкование, которое породило множество трактовок языка С. Для исправления этой ситуации при Американском национальном институте стандартов (АNSI) был образован комитет по стандартизации языка С
1983 году был утвержден стандарт языка С, получивший название ANSI С.
В начале 80-х годов в той же Веll Lаbоratory Бьерном Страуструпом в результате дополнения и расширения языка С был создан новый по сути язык, получивший название "С с классами".
В 1983 году это название было заменено на С++.
Наши занятия будут посвящены изучению языка программирования С++.
Инсталляция Visual C++ 6.0
Итак, для изучения С++ нам будет необходимо установить Microsoft Visual C++ версии 6.0. Для этого - установите компакт-диск в CD-привод, запустите проводник, найдите на диске файл Setup.exe и запустите его.
Если Вы удачно справились с запуском инсталяции, то перед Вами должно появиться диалоговое окно, преведенное ниже на рисунке. В даном диалоговом окне выбираем пункт Workstation Tools and Components и нажимаем кнопку Next.
Перед Вами появиться окно, в котором будут убедительно просить чуть-чуть подождать пока подготавливается установка Microsoft Visual Studio 6.0 .
Так, выясним откуда появилось словосочетание Microsoft Visual Studio 6.0, если мы хотим установить Microsoft Visual С++ 6.0 . Все очень просто. Microsoft Visual С++ 6.0 входит в группу программных продуктов объединенных одним именем Microsoft Visual Studio 6.0.
Далее следуйте подсказкам программы установки. На вопрос: "Какой тип инсталяции Вы хотите произвести?" выберите вариант Custom. В появившемся диалоговом окне установите "галочки" напротив следующих пунктов: Microsoft Visual C++ 6.0, ActiveX, Data Access, Enterprise Tools, Tools. В конечном итоге, окно выбора будет выглядить примерно следующим образом:
Нажимаете кнопку Continue и, пока ожидаете завершение процесса инсталяции, можете спокойно перейти к следующему разделу нашего занятия!..