- •Экзамен 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
- •Форматирование данных при обменах с потоками.
- •Состояние потока.
- •Использование аргументов командной строки.
- •Ввод/вывод в с.
- •Домашнее задание
- •Определение шаблонов функций
- •Переопределение шаблонов функций
- •Шаблоны классов
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Введение
- •Обработка исключительных ситуаций
- •Практический пример
- •Программа
- •Домашнее задание
- •Экзамен
Начнем!
Во многих восточных сказках рассказывается о могущественных джинах, способных творить чудеса. Джин покорно служит каждому, кто знает соответствующие заклинания и умеет правильно их произносить. Но если человек забыл или спутал заклинание, то джин отказывался служить ему.
Современные компьютеры ведут себя в некотором смысле подобно джинам. «Заклинаниями» для компьютера служат программы, составленные людьми, а именно ПРОГРАММИСТАМИ. Те, для кого пишут программы, называются ПОЛЬЗОВАТЕЛЯМИ.
Сами программы записываются в строгом соответствии с определенными правилами.
Подобно тому, как джины с одинаковой готовностью исполняли «добрую» и «злую» волю своего повелителя, так и компьютер педантично следует указаниям любой программы, в которой нет нарушений правил.
Уверен, что многие знают, что С++ - это язык программирования (хотя бы из первого раздела). Язык, который дает нам возможность вразумительно объяснить компьютеру, что мы от него хотим. Хотя, если быть до конца откровенным, компьютер понимает только один язык – язык машинных кодов. Для примера, программа, которая выводит на экран фразу «Hello, world!», выглядит приблизительно так на "родном" для компьютера языке:
MZР __ + @ А ¦ ¦ -!+ L-!T
$ PE L ¦-7 р ¤!
` Р oK Р ў+ 0
e+
t + Г· t3+ZГс¤Н$М_тUЛьЬ¤+M +tUў- tVА+
¤+¦Ф№+¤-;-wGГ=xФ№+
t‑Ас°-щЗ-Л_Ф№+f;s §lФ№+Л +u"бАФ№+¤+MАс°ЎD Аt Э+- 3+
ыўы·ы°ыЎыЇЛD$П$._4Ч№++ ._ dЛ4 Ў- ubSЛ dг4 +__є --fУЙf-+
-+ЙA+@У№+Л-[Xf +tRPRVh·ў+ш_S Z+єfО-fЛцf-d¤+§ RfRfh ш4
Л+Zы¦SшC¤д-ы¦¤+ьМ-¤++¤_e fМ+fО_fО¦f¤бЛЁdЎ t‑3+ОшАс°Л§АФ№+-
dб4 ЙdЙ§4 f_f _t dЛ4 Ў- uSSЛ dг4 +__є --fУЙf-+-+ЙA+@У№+Л-[
+єЙ]№fМ+fО-fЛц+ыf-d¤+§ RfRfh шз Л+Zы+Sш¦
¤д-ы+fО_fО¦¤+эm№¤+
_>]‑ Л¦Л+ЛMЛm _сбшЬ№+Л 9ШФ№+t§Л§pФ№+ш№) fd¦‑ __+RPбшЬ
№+Л 9ШФ№+tЛ§pФ№+шС) + +Э
_YН¦ў+ ._5lЧ№+f-Н¦ў+ +f+
u ._5lЧ№+f-&ЛZ¶QW&бфЬ№+&Л &ЛJf&ОB_Ф№
+f;sЛlФ№+Л< _t=ИФ№+_G¶u_O¶WfМ+-чfЛ№3+М-Ас°
Ну, как скажите в таком коде писать? Невозможно! Вы правы – так мы писать и не будем. Для этого и нужен язык программирования, чтобы облегчить составление программ. А для перевода команд с языка С++ на машинный язык есть специальная программа – «КОМПИЛЯТОР». В нашем случае, при работе с оболочкой Microsoft Visual C++ 6.0 вызов компилятора осуществляется автоматически и позволяет переводить команды языка С++ в машинный код.
Проба пера
Один из основателей языка С, Брайэн Керниган, сказал: "Единственный способ изучать новый язык программирования - писать на нем программы." . Чем мы с Вами и начнем, сейчас, заниматься.
Так уж повелось у программистов, что первая программа должна обязательно поприветствовать мир. В буквальном смысле и желательно на английском языке. Фактически, задача нашей программы просто вывести на экран фразу "Hello, world!".
Для начала запустим программную оболочку ( Правда, звучит непонятно?) Для этого нужно нажать кнопку «Пуск», выбрать пункт «Программы», затем пункт «Microsoft Visual Studio 6.0» и, наконец, «Visual C++ 6.0». После запуска приложения вы увидите нечто подобное:
При первом запуске Visual C++ перед Вами появляется диалоговое окно "Совет дня". Если Вы хотите чтобы оно не появлялось при каждом запуске Visual C++, то снимите галочку с пункта Show tips at startup и нажмите кнопку Close.
После того, как Вы загрузили VC++ (Visual C++), выберите пункт меню File->New... Перед Вами появиться следующее диалоговое окно:
Сейчас, попробуем создать проект, который и будет, в конечном итоге, представлять нашу программу. Детальней, что такое проект, мы разберемся попозже, когда будем писать большие программы. Пока будем представлять себе проект как объединение нескольких файлов.
А теперь давайте по шагам:
В открывшемся диалоговом окне New (новый) выберем вкладку Project (проект)
В поле Location укажем на каком диске и в какой папке будет находится наш проект. Для этого введите в этом поле C:\Projects (или удобное Вам имя папки, где будут храниться все Ваши домашние проекты)
Дадим имя нашему ПРОЕКТУ – для этого введите в поле Project name имя проекта Hello(то бишь ПРИВЕТ).
Выберем тип проекта. Для первой нашей программы выберем Win32 Console Application ( консольное приложение ). Пока мы будем работать с таким видом приложений.
Теперь можно нажать кнопку мышкой OK.
Вы увидите следующее окно:
В появившемся окне, выберите вариант An empty project и нажмите кнопку Finish (про другие варианты содания проектов Вы узнаете позднее).
Перед Вами появиться "финальное" окно, в котором Вам приведут отчет о том, что проект консольного приложения создается:
+ пустым
+ никакие файлы не были созданы и добавлены в проект.
Проект будет хранится по адресу: C:\Projects\Hello
Щелкните мышкой по кнопке ОК.
Итак, мы подготовили место (Workspace) для размещения нашей программы.
Не останавливаясь на достигнутом, добавим в проект чистый файл. В нем будем набирать текст нашей программы. Снова выбираем меню File, затем в нем New...(новый) Обратите внимание, что диалоговое окно открывается на вкладке Files(файлы). И правильно мы же добавляем в проект файл. (Похоже нас понимают.) Опять у вас огромный выбор. Рекомендую сейчас выбрать строчку C++ Source File (файл, содержащий программу на языке С++).
В текстовом поле File name (имя файла) введите имя файла Hello. Заметьте, что отмечена опция Add to project (добавить в проект). Это значит, что создаваемый нами файл будет включен в разрабатывемый проект. Нажмите кнопку ОК.
В появившемся текстовом окне наберем следующий код:
// Это комментарии к программе
// Они выделяются зеленым цветом
// Начинаются комментарии двумя черточками //
#include <iostream.h>
void main() // Начало программы
{ //Это фигурная скобка
// Следующая строка выводит на экран приветствие Hello, World!
cout<<"Hello, World!\n";
}
Как вы уже знаете, компьютер понимает только язык машинных кодов. И прежде чем программа будет выполняться компьютером, нужно ее перевести на язык машинных кодов. Вы помните, что это будем делать не мы, а КОМПИЛЯТОР. Проекты, написанные на C/C++, включают в себя много файлов. Прокомпилируем сразу все файлы, включенные в проект. Для этого в строке меню выберете Build (построить), затем Rebuild All (перестроить все)
Надеюсь, вы набрали текст без ошибок. Наша программа успешно переведена на язык машинных кодов и ее можно запустить на выполнение. Запустить программу на выполнение просто. Все в том же Build выбрать строчку Execute FirstApp.exe
Программа отработает и вы увидите такое вот окно:
Поздравляю! Было довольно легко. Не правда ли? Для того, чтобы закончить работу программы нажмите любую клавишу на клавиатуре (Press any key to continue).