©ρŧą Базовые конструкции языка
©ρŧą #include int main(){ int i; printf("Введите целое число\n"); scanf("%d", &i); printf("Вы ввели число %d, спасибо!", i); } Пример 1 - простейшая программа #include using namespace std; int main(){ int i; printf("Введите целое число\n"); scanf("%d", &i); printf("Вы ввели число %d, спасибо!", i); }
©ρŧą #include int main(){ int int1 = 45, int2 = 13; printf("int1 = %d| int2 = %3d| int2 = %-4d|\n", int1, int2, int2); printf("int1 = %X| int2 = %3x| int2 = %4o|\n", int1, int2, int2); } int1 = 45| int2 = 13| int2 = 13 | int1 = 2D| int2 = d| int2 = 15| Пример 2 - целые форматы
©ρŧą #include int main(){ float f = 3.621; double dbl = 2.23; printf("f = %f| f = %4.2f| f = %6.1f|\n", f, f, f); printf("f = %g| f = %e| f = %+E|\n", f, f, f); printf("dbl = %5.2lf| dbl = %e| dbl = %4.1G|\n", dbl, dbl, dbl); } f = | f = 3.62| f = 3.6| f = 3.621| f = e+000| f = E+000| dbl = 2.23| dbl = e+000| dbl = 2| Пример 3 - вещественные форматы
©ρŧą #include int main(){ char ch = 'z', *str = "ramambahari"; printf("ch = %c| ch = %3c|\n", ch, ch); printf("str = %14s|\nstr = %-14s|\nstr = %s|\n", str, str, str); } ch = z| str = ramambahari| Пример 4 - форматы символов и строк
©ρŧą #include int main(){ int i; cout > i; cout
©ρŧą Унарные операции ++ – –sizeof~!–+& *newdelete(type) Бинарные операции */%+– >===!=&^|&&|| =*=/=%=+=–==&=|=^=throw, Тернарная операция ? : Операции С++ (не все!)
©ρŧą Приоритеты операций ОперацияКраткое описание Унарные операции ::доступ к области видимости.выбор ->выбор [ ]индексация ( )вызов функции ( )конструирование ++постфиксный инкремент – постфиксный декремент typeidидентификация типа dynamic_castпреобразование типа с проверкой на этапе выполнения static_castпреобразование типа с проверкой на этапе компиляции reinterpret_castпреобразование типа без проверки const_castконстантное преобразование типа
©ρŧą sizeofразмер объекта или типа – префиксный декремент ++префиксный инкремент ~поразрядное отрицание !логическое отрицание –арифметическое отрицание (унарный минус) +унарный плюс &взятие адреса *разадресация newвыделение памяти deleteосвобожение памяти ( )преобразование типа
©ρŧą.*выбор ->*выбор Бинарные и тернарная операции *умножение /деление %остаток от деления +сложение –вычитание сдвиг вправо
©ρŧą =больше или равно ==равно !=не равно &поразрядная конъюнкция (И) ^поразрядное исключающее ИЛИ |поразрядная дизъюнкция (ИЛИ) &&логическое И ||логическое ИЛИ ? :условная операция (тернарная) =присваивание *=умножение с присваиванием /=деление с присваиванием
©ρŧą %=остаток отделения с присваиванием +=сложение с присваиванием –=вычитание с присваиванием =сдвиг вправо с присваиванием &=поразрядное И с присваиванием |=поразрядное ИЛИ с присваиванием ^=поразрядное исключающее ИЛИ с присваиванием throwисключение,последовательное вычисление Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записано несколько операций одинакового приоритета, унарные операции, условная операция и операции присваивания выполняются справа налево, остальные слева направо.
©ρŧą #include int main(){ int x = 3, y = 3; printf("Значение префиксного выражения: %d\n", ++x); printf("Значение постфиксного выражения: %d\n", y++); } Результат работы программы: Значение префиксного выражения: 4 Значение постфиксного выражения: 3 Операции инкремента и декремента
©ρŧą sizeof выражение sizeof ( тип ) #include int main(){ float x = 1; cout
©ρŧą #include int main(){ cout
©ρŧą #include int main(){ int x = 11, y = 4; float z = 4; printf(" %d %f\n", x/y, x/z); printf("Остаток: %d\n", x%y); } Остаток: 3 Операции деления и остатка от деления
©ρŧą a = b = c означает a = (b = c) a + b + c означает (a + b) + c (sin(x + 2) + cos(y + 1)) i = (i < n) ? i + 1: 1 (a )/6 x && y || !z (t * sin(x)-1.05e4)/((2 * k + 2) * (2 * k + 3)) Тернарная операция: Примеры выражений: a += b Приоритеты: Сложное присваивание:
©ρŧą изменяющие внутреннее представление величин (с потерей точности или без потери точности); изменяющие только интерпретацию внутреннего представления. Явные преобразования типа: const_cast dynamic_cast reinterpret_cast static_cast приведение в стиле С: (имя_типа)выражение Преобразования типов
©ρŧą Операнды char, unsigned char или short преобразуются к int по правилам: char расширяется нулем или знаком в зависимости от умолчания для char ; unsigned char расширяется нулем; signed char расширяется знаком; short, unsigned short и enum при преобразовании не изменяются. Затем любые два операнда становятся int, или float, double или long double. Если один из операндов имеет тип long double, то другой преобразуется к типу long double. Если один из операндов double, другой преобразуется к double. Если один из операндов float, другой преобразуется к float. Иначе, если один из операндов unsigned long, другой преобразуется к unsigned long. Иначе, если один из операндов long, то другой преобразуется к long. Иначе, если один из операндов unsigned, другой преобразуется к unsigned. Иначе оба операнда должны иметь тип int. Тип результата тот же, что и тип участвующих в выражении операндов. Правила преобразования типов
©ρŧą Оператор «выражение» ; i++; fun(i, k); a *= b + c;
©ρŧą Базовые конструкции структурного программирования
©ρŧą if ( выражение ) оператор_1; [else оператор_2;] if (a
©ρŧą switch ( выражение ){ case константное_выражение_1: [список_операторов_1] case константное_выражение_2: [список_операторов_2]... case константное_выражение_n: [список_операторов_n] [default: операторы ] } Оператор switch
©ρŧą #include int main(){ int a, b, res;char op;bool f = true; cout > a; cout > op; cout > b; switch (op){ case '+': res = a + b; break; case '-': res = a - b; break; case '*': res = a * b; break; case '/': res = a / b; break; default : cout
©ρŧą #include int main(){ float Xn, Xk, Dx; printf("Введите диапазон и шаг изм-я аргумента: "); scanf("%f%f%f", &Xn, &Xk, &Dx); printf("| X | Y |\n"); float X = Xn; while (X
©ρŧą #include int main(){ char answer; do{ cout > answer; }while (answer != 'y'); } do оператор while выражение; Оператор цикла do while
©ρŧą #include int main(){ double X, Eps; double Yp, Y = 1; printf("Введите аргумент и точность: "); scanf("%lf%lf", &X, &Eps); do{ Yp = Y; Y = (Yp + X/Yp)/2; }while (fabs(Y – Yp) >= Eps); printf("\n %lf %lf", X, Y); } y n = ½ (y n-1 + x/y n-1 ) Пример 6 - вычисление квадратного корня
©ρŧą #include int main(){ int num; cout > num; for (int half = num / 2, div = 2; div
©ρŧą оператор безусловного перехода goto; оператор выхода из цикла break; оператор перехода к следующей итерации цикла continue; оператор возврата из функции return. Операторы передачи управления
©ρŧą #include int main(){ const int MaxIter = 500; double x, eps; cout > x >> eps; bool ok = true; double y = x, ch = x; for (int n = 0; fabs(ch) > eps; n++){ ch *= x * x /(2 * n + 2)/(2 * n + 3); y += ch; if (n > MaxIter){ok = false; break;} } if (ok) cout