- •Введение
- •Глава 1. Основы.
- •Int main()
- •1.2. Методика создания программ в Microsoft Visual Studio.
- •Void main(){
- •1.3. Ввод-вывод.
- •1.4. Переменные и константы.
- •Int I; // объявление целочисленной переменной
- •42 // Десятичная константа
- •0X42 // шестнадцатеричная константа, начинается с 0х
- •042 // Восьмеричная константа, начинается с 0
- •1.5. Арифметические операции.
- •Void main()
- •1.6. Встроенные функции. Математические функции. Состав math.H.
- •Void main()
- •Int rand(void); // функция используется без аргумента
- •Глава 2. Операторы и выражения.
- •2.1. Логические выражения и операторы
- •2.1.1. Оператор if else
- •If (условие)
- •If (условие)
- •2.1.2. Конструкция if else if
- •Int number;
- •Int number;
- •2.1.3. Условный оператор.
- •2.1.4. Оператор switch.
- •Int dvalue;
- •2.2. Операторы цикла.
- •2.2.1. Оператор for
- •Void main()
- •Int I; // создаем переменную цикла
- •Void main()
- •Int I; // переменную цикла можно определить и вне цикла
- •2.2.2. Изменение шага цикла
- •Void main()
- •2.2.3. Цикл while.
- •2.2.4. Цикл do while
- •Void main()
- •2.3. Операторы break и continue
- •Void main()
- •Void main()
- •2.4. Типичные ошибки при использовании операторов цикла
- •Глава 3. Производные типы данных.
- •3.1. Ссылки и указатели.
- •Int test; // объявили целочисленную переменную
- •Int & s_test; // ошибка! ссылка не связана с переменной
- •Int *p1; // объявлен указатель на целое с именем p1
- •3.2. Массивы и строки.
- •Int z[10]; //массив из 10 целых чисел
- •Int ar[3]; // объявлен целочисленный массив из 3 элементов
- •Int varr[4]; // объявление массива
- •3.2.2. Многомерные массивы.
- •Int z[3][4]; //массив из 12 целых чисел
- •3.2.3. Строки
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •If(strstr(st,st2)) //если подстрока встречается, выводим
- •3.1.5. Динамическое определение одномерных массивов.
- •3.1.6. Динамические двумерные массивы.
- •3.1.7. Указатели, массивы и арифметика указателей.
- •Int tacs[3];
- •Void main()
- •3.2. Структуры
- •Int age; // элементы структуры
- •Int hours;
- •Int mins;
- •Void main()
- •Int hours;
- •Int mins;
- •Void main()
- •4. Функции, определяемые пользователем
- •4.1. Объявление и определение функции
- •Int max(int , int ); // в прототипе достаточно указать только тип и
- •Void main() {
- •Int MyRand(){
- •Int func(){ return 1;} // правильное выражение
- •Int func2(){return 0.146;} // неправильно, 0.146 преобразуется к int с
- •Void swap(int p, int q)
- •Int bigger(int a,int b)
- •4.2. Передача параметров функций
- •5. Заголовочные файлы.
- •6. Работа с файлами
- •6.1 Простой файловый ввод/вывод
- •6.2 Тонкости работы с файлами
- •7.1. Определение классов.
- •Void main()
- •7.2. Как объявлять функции класса?
- •7.3. Конструкторы и деструкторы классов.
- •8. Графика OpenGl.
- •Void callback Draw()
- •Void main()
- •8.1. Создание анимации с помощью библиотеки xgl
- •Приложения Управление выводом
- •Управление шириной вывода
42 // Десятичная константа
0X42 // шестнадцатеричная константа, начинается с 0х
042 // Восьмеричная константа, начинается с 0
1.5. Арифметические операции.
К любой комбинации основных типов переменных могут применяться арифметические операции: сложения, вычитания, умножения и деления, которые выполняются с помощью операторов: +, -, *, / (как и в других языках). Кроме того, над целыми числами и целочисленными переменными может выполняться операция % ‑ получения остатка:
k = 7%2 // результат равен 1
В языке С++ используется традиционные правила приоритета операций. Достойным отдельного упоминания являются инкремент и декремент ++ и --. Пример:
i++; //i увеличивается на 1. Равносильно i=i+1;
j--; //j уменьшается на 1. Можно написать и --j;
Между вариантами d++ и ++d есть некоторая разница. Сравните:
int d=1, e;
e=d++; //После этого оператора d=2, e=1
и
int d=1, e;
e=++d; //После этого оператора d=2, e=2
В первом случае сначала переменной e присваивается значение d, а затем d увеличивается на единицу, во втором случае наоборот, сначала увеличивается d, а затем выполняется оператор присваивания. То есть, действует правило: если оператор инкремента (декремента) расположен справа от переменной (префикс), то сначала выполняется присваивание, а затем увеличение (уменьшение) на единицу. А если оператор расположен слева (постфикс), то сначала выполняется оператор инкремента (декремента), а затем присваивание. Кроме операций инкремента и декремента в С++ используются и другие постфиксные и префиксные операции. Например, возможны такие выражения:
sum += i; // Равносильно sum=sum+i;
prod *= k; // Равносильно prod = prod*k;
Разумеется, такая форма записи возможна для всех арифметических операторов.
На начальном этапе изучения С++ рекомендую не очень “зацикливаться” на этих операциях. Писать эффективные программы можно и без их использования, впрочем, более подробно их описание приводится в Приложении 1.
Как писал Бьёрн Страуструп, при присваивании и арифметических операциях C++ выполняет все осмысленные преобразования между основными типами, чтобы их можно было сочетать без ограничений:
double d = 1;
int i = 1;
d = d + i;
i = d + i;
Очевидно, что последнее преобразование чревато ошибкой, так как длина целочисленной переменной i меньше длины вещественной переменной d !
Не слишком надеясь на неявное преобразование типов, пользуйтесь возможностью явного преобразования, которое для приведенных выше примеров может выглядеть так:
d = d + double(i);
Явное преобразование типов, выполненное к переменной типа char, позволяет получить ее номер в таблице символов ASCII. И наоборот, явно преобразуя целочисленную переменную к типу char, получаем соответствующий её номеру символ в ASCII – таблице:
#include <iostream.h>
Void main()
{
int i;
cout<<”input integer number < 128 ”; // приглашение ввести целое число,
// меньшее 128
cin>>i; // ввод числа с клавиатуры
cout<<char (i)<<endl; // явное преобразование, вывод символа
}
В приведенном примере используется потоковый ввод значения переменной со стандартного устройства ввода (клавиатуры) при помощи cin. Строка текста, которая предшествует объекту cin не обязательна, но очень полезна, т.к. поясняет пользователю программы, что от него требуется. Обратите внимание на специальное «слово» - endl. Оно предписывает после вывода символа char(i) перевести курсор на новую строку.
Контрольные вопросы. А