Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемwww.intuit.ru
1 ©Павловская Т.А. Язык С++ Курс «С++. Программирование на языке высокого уровня» Павловская Т.А.
2 ©Павловская Т.А. Язык С++ Лекция 2. Простейшие программы Структура простейшей программы, переменные, операции, выражения, преобразования базовых типов, вводные замечания о средствах ввода-вывода, особенности вывода кириллицы в консольное окно.
3 ©Павловская Т.А. (СПбГУ ИТМО) [класс памяти] [const] тип имя [инициализатор]; инициализатор : = значение или ( значение ) short int a = 1; const char C = 'C'; char s, sf = 'f'; char t (54); float c = 0.22, x(3), sum; Примеры описаний: Описание идентификаторов
4 ©Павловская Т.А. (СПбГУ ИТМО) Каждый идентификатор имеет область действия (potential scope) и область видимости (scope), которые, как правило, совпадают (кроме случая описания такого же имени во вложенном блоке). Область видимости начинается в точке описания. const int i = 2; { int i[i]; } Имя, описанное внутри блока, локально по отношению к этому блоку. Имя, описанное вне любого блока, имеет глобальную область видимости. Область действия и класс памяти зависят не только от собственно описания, но и от места его размещения в тексте программы. Область видимости
5 ©Павловская Т.А. (СПбГУ ИТМО) auto автоматическая переменная. Память выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее определение. Освобождение памяти - при выходе из блока extern переменная определяется в другом месте программы. static статическая переменная. Время жизни постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. register аналогично auto, но память выделяется по возможности в регистрах процессора. Класс памяти
6 ©Павловская Т.А. (СПбГУ ИТМО) int a;// 1 main(){ int b;// 2 extern int x;// 3 static int c;// 4 a = 1;// 5 int a;// 6 a = 2;// 7 ::a = 3;// 8 } int x = 4; // 9 Область видимости. Пример 1
7 ©Павловская Т.А. (СПбГУ ИТМО) int a; // глобальная переменная int main(){ int b; // локальная переменная static int c = 1; // локальная статическая переменная } ГлобальнаяЛокальнаяСтатическая Размещениес-т данныхс-т стекас-т данных Время жизнився прогр.блоквся прогр. Область видимостифайлблок Обнулениеданетда Область видимости. Пример 2
8 ©Павловская Т.А. (СПбГУ ИТМО) блок файл функция прототип функции класс поименованная область Области действия
9 ©Павловская Т.А. (СПбГУ ИТМО) В каждой области действия различают пространства имен, в пределах которых идентификатор должен быть уникальным. В разных категориях имена могут совпадать, например: struct Node{ int Node; int i; }Node; В С++ определено четыре раздельных класса идентификаторов, в пределах которых имя должно быть уникальным: 1. имена переменных, функций, типов typedef и констант перечислений; 2. имена типов перечислений, структур, классов и объединений; 3. элементы каждой структуры, класса и объединения; 4. метки. Пространства имен
10 ©Павловская Т.А. (СПбГУ ИТМО) #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); }
11 ©Павловская Т.А. (СПбГУ ИТМО) #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 - целые форматы
12 ©Павловская Т.А. (СПбГУ ИТМО) #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 - вещественные форматы
13 ©Павловская Т.А. (СПбГУ ИТМО) #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 - форматы символов и строк
14 ©Павловская Т.А. (СПбГУ ИТМО) #include int main(){ int i; cout > i; cout
15 ©Павловская Т.А. (СПбГУ ИТМО) Унарные операции ++ – –sizeof~!–+& *newdelete(type) Бинарные операции */%+– >===!=&^|&&|| =*=/=%=+=–==&=|=^=throw, Тернарная операция ? : Операции С++ (не все!)
16 ©Павловская Т.А. (СПбГУ ИТМО) Приоритеты операций ОперацияКраткое описание Унарные операции ::доступ к области видимости.выбор ->выбор [ ]индексация ( )вызов функции ( )конструирование ++постфиксный инкремент – постфиксный декремент typeidидентификация типа dynamic_castпреобразование типа с проверкой на этапе выполнения static_castпреобразование типа с проверкой на этапе компиляции reinterpret_castпреобразование типа без проверки const_castконстантное преобразование типа
17 ©Павловская Т.А. (СПбГУ ИТМО) sizeofразмер объекта или типа – префиксный декремент ++префиксный инкремент ~поразрядное отрицание !логическое отрицание –арифметическое отрицание (унарный минус) +унарный плюс &взятие адреса *разадресация newвыделение памяти deleteосвобожение памяти ( )преобразование типа
18 ©Павловская Т.А. (СПбГУ ИТМО).*выбор ->*выбор Бинарные и тернарная операции *умножение /деление %остаток от деления +сложение –вычитание сдвиг вправо
19 ©Павловская Т.А. (СПбГУ ИТМО) =больше или равно ==равно !=не равно &поразрядная конъюнкция (И) ^поразрядное исключающее ИЛИ |поразрядная дизъюнкция (ИЛИ) &&логическое И ||логическое ИЛИ ? :условная операция (тернарная) =присваивание *=умножение с присваиванием /=деление с присваиванием
20 ©Павловская Т.А. (СПбГУ ИТМО) %=остаток отделения с присваиванием +=сложение с присваиванием –=вычитание с присваиванием =сдвиг вправо с присваиванием &=поразрядное И с присваиванием |=поразрядное ИЛИ с присваиванием ^=поразрядное исключающее ИЛИ с присваиванием throwисключение,последовательное вычисление Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записано несколько операций одинакового приоритета, унарные операции, условная операция и операции присваивания выполняются справа налево, остальные слева направо.
21 ©Павловская Т.А. (СПбГУ ИТМО) #include int main(){ int x = 3, y = 3; printf("Значение префиксного выражения: %d\n", ++x); printf("Значение постфиксного выражения: %d\n", y++); } Результат работы программы: Значение префиксного выражения: 4 Значение постфиксного выражения: 3 Операции инкремента и декремента
22 ©Павловская Т.А. (СПбГУ ИТМО) sizeof выражение sizeof ( тип ) #include int main(){ float x = 1; cout
23 ©Павловская Т.А. (СПбГУ ИТМО) #include int main(){ cout
24 ©Павловская Т.А. (СПбГУ ИТМО) #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 Операции деления и остатка от деления
25 ©Павловская Т.А. (СПбГУ ИТМО) 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 Приоритеты: Сложное присваивание:
26 ©Павловская Т.А. (СПбГУ ИТМО) изменяющие внутреннее представление величин (с потерей точности или без потери точности); изменяющие только интерпретацию внутреннего представления. Явные преобразования типа: const_cast dynamic_cast reinterpret_cast static_cast приведение в стиле С: (имя_типа)выражение Преобразования типов
27 ©Павловская Т.А. (СПбГУ ИТМО) Операнды 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. Тип результата тот же, что и тип участвующих в выражении операндов. Правила преобразования типов
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.