- •Экзамен 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
- •Форматирование данных при обменах с потоками.
- •Состояние потока.
- •Использование аргументов командной строки.
- •Ввод/вывод в с.
- •Домашнее задание
- •Определение шаблонов функций
- •Переопределение шаблонов функций
- •Шаблоны классов
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Введение
- •Обработка исключительных ситуаций
- •Практический пример
- •Программа
- •Домашнее задание
- •Экзамен
Арифметические операции с числами
Тип, как мы уже говорили, задает размер переменной, от размера зависит диапазон значений. От типа переменной зависит как мы ею будем пользоваться. С числовыми переменными можно совершать различные арифметические операции:
операция |
Так она выглядит в С++ |
Алгебраическое выражение |
Как это же выражение выглядит в С++ |
Сложение |
+ |
A+34+t |
A + 34 + t |
Вычитание |
- |
A-34-t |
A - 34 - t |
Умножение |
* |
3·t |
3 * t |
Деление |
/ |
25:y |
25 / y |
остаток от деления |
% |
d mod 2 |
d % 2 |
Операцией нахождения остатка от целочисленного деления % используется только для целых чисел.
Кроме перечисленных выше стандартных операций существуют еще и специальные. Например, в программировании часто встречаются ситуации, когда надо увеличить или уменьшить значение переменной на единицу. Чтобы не писать строку
Numb=Numb+1;
которая выполняет увеличение переменной Numb на единицу, можно использовать оператор инкремент (++):
Numb++;
Аналогично работает оператор декремент (--), который уменьшает значение переменной на единицу:
Numb--;
Однако «тонкости» математических операций на этом не исчерпываются. С++ позволяет использовать по две модификации каждой из приведенных выше операций: префиксную (++Number) и постфиксную (Number++). Префиксные операторы сперва изменяют значение переменной, а потом уже используют ее. Постфиксные — наоборот.
Рассмотрим примеры. Предположим, имеются следующие переменные:
int I=3, k=10;
Теперь посмотрим, как изменяются значения переменных в следующих выражениях (предполагается, что они выполняются не последовательно, а по отдельности):
k=++I; // I=I+1; k=I
// I=4; k=4
k=I++; // k=I; I=I+1
// I=5; k=4
Для еще большего упрощения кода используются комбинированные операторы: присваивание с умножением (*=), присваивание с делением (/=), присваивание с делением по модулю (%=), присваивание со сложением (+=) и присваивание с вычитанием (-=).
k+=I;// k=k+I;
k-=I;// k=k-I;
k*=I;// k=k*I;
k/=I;// k=k/I;
k%=I;// k=k%I;
Рассмотрим применение операций на примере. Напишем программу, которая производит простейшие арифметические операции над двумя целыми числами.
Создадим новый проект и назовем его Counter. Добавим в этот проект файл, в котором будем записывать программу.
Вот текст программы:
/* программа,
выполняющая простейшие арифметические
операции*/ #include <iostream.h> void main()
{
/*Приглашение
ввести 2 целых числа*/
cout<<"Enter 2 integer numbers\n";
/* Объявление
переменных, в которых будут хранится целые
числа*/ int first,second;
/*Приглашение ввести
первое число*/
cout<<"First: ";
/*ввод первого числа*/
cin>>first;
/*приглашение ввести
второе число*/
cout<<"Second: ";
/*ввод второго числа*/
cin>>second; /*вывод значения суммы двух чисел*/
cout<<first<<"+"<<second<<"="<<first+second<<"\n"; /*вывод значения разности двух чисел*/
cout<<first<<"-"<<second<<"="<<first-second<<"\n"; /*вывод значения произведения двух
чисел*/
cout<<first<<"*"<<second<<"="<<first*second<<"\n"; /*вывод значения частного двух чисел*/
cout<<first<<"/"<<second<<"="<<first/second; /*вывод остатка от деления двух
чисел*/
cout<<"and ostatok"<<first%second<<"\n"; /*Применение постфиксного
инкремента-сначала программа выведет значение
переменной first, а затем увеличит его на единицу*/ cout<<"first="<<first++; /*вывод нового значения переменной
first*/
cout<<"\tand now first="<<first<<"\n";
/*использование
префиксного декремента-сначала значение
переменной first уменьшится на единицу, а затем
программа выведет его на экран*/
cout<<"again first="<<--first<<"\n";
int third=first;
/*Использование
оператора +=*/
third+=second;
cout<<first<<"+"<<second<<"="<<third;
}
Откомпилируем программу и запустим ее на выполнение. Проверьте, правильно ли выполняет компьютер арифметические действия?