Lecture 1 C++
.pdf
Операции
Операция присваивания: a=b Арифметические операции:
+ - / * %(остаток) ¾ ¿ (сдвиг)
Сокращенные формы:
a+=b a=a+b a-=b a=a-b a/=b a=a/b a*=b a=a*b
Инкремент и декремент: a++
a- -
9 / 20
Условие if
i f |
( cond ) { |
|
. . . |
} |
e l s e { |
|
. . . |
} |
|
|
|
i f ( cond ) {
. . .
}
Логические операторы:
&& И ; || ИЛИ; == равно; ! НЕ
Тернарная альтернатива:
max = ( b > a ) ? b : a ;
10 / 20
Оператор switch
s w i t h ( e x p r ) {
case v a l u e 1 : . . . ; break ; case v a l u e 2 : . . . ; break ;
. . .
d e f a u l t : . . . ;
}
11 / 20
Циклы
Циклы while:
w h i l e ( cond ) {
. . .
}
do |
{ |
. . . |
|
} |
w h i l e ( cond ) ; |
|
|
Цикл for:
f o r |
( cond1 ; |
cond2 ; |
o p e r a t o r ) |
// Example : |
|
|
|
f o r |
( i n t i |
= 1 ; i < |
1 0 ; i ++) |
|
|
|
|
Оператор break используется внутри операторов цикла или switch для обеспечения перехода в точку программы, находящуюся непосредственно за оператором, внутри которого находится break.
12 / 20
Переменные
Общий вид оператора описания переменных: [класс памяти] [const] тип имя [инициализатор]; Примеры описания:
Если переменная определена внутри блока (блок ограничен фигурными скобками), она называется локальной, область ее действия от точки описания до конца блока, включая все вложенные блоки. Если переменная определена вне любого блока, она называется глобальной и областью ее действия считается файл, в котором она определена, от точки описания до его конца.
13 / 20
Классы памяти
1extern означает, что переменная определяется в другом месте программы (в другом файле или дальше по тексту).
2static статическая переменная. Время жизни постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны.
3register аналогично auto, но память выделяется по возможности в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как auto.
14 / 20
Области видимости: пример
i n t |
a ; |
|
|
i n t main ( ) |
|
||
{ |
i n t |
|
|
|
b ; |
|
|
|
e x t e r n i n t X ; |
||
|
s t a t i c i n t c ; |
||
|
a = |
1 ; |
|
|
i n t |
a ; |
|
|
a = |
2 ; |
|
|
: : a |
= |
3 ; |
} |
r e t u r n |
0 ; |
|
|
|
|
|
i n t |
X = |
4 ; |
|
|
|
|
|
15 / 20
Указатели и массивы
Указатель это переменная, хранящая адрес ячейки памяти.
Объявление указателя
int *a; double *b; char *c;
Статические массивы:
int a[5]; \\ массив из 5 целых чисел: a[0] ... a[4] double b[2][3]; \\двухмерный массив
b[0][2] = 2;
16 / 20
Массивы
Имя массива является указателем на его первый элемент.
Динамический одномерный массив:
int *dynamic_array = (int*) malloc (sizeof(int) * 5); dynamic_array[0] = 1; dynamic_array[4] = 2;
Динамический двухмерный массив из rows строк и cols столбцов:
int **a = (int **)malloc(rows*sizeof(int *)); for(int i = 0; i < rows; i++)
a[i] = (int *)malloc(cols*sizeof(int)); a[rows-1][cols-1] = 2;
17 / 20
Структуры
Объявление struct building
{
char *owner; char *city; int rooms; float price;
};
building home;
Использование home.rooms = 25; home.owner = "Mee!!"; t = home.city;
18 / 20
