Лекция 2. Фундаментальные типы данных и основные конструкции


The Presentation inside:

Slide 0

Лекция 2. Фундаментальные типы данных и основные конструкции Красс Александр [email protected] СПбГУ ИТМО, 2008


Slide 1

2 Начнём с этих типов


Slide 2

3 true и false в C++ Любое число отличное от нуля – это true. Нуль – это false.


Slide 3

4 Модификаторы типов unsigned signed long short


Slide 4

5 Модификаторы типов (1/2) unsigned signed long short


Slide 5

6 Модификаторы типов (2/2) Если явно не указано unsigned или signed, то всегда предполагается signed. Если указан модификатор типа, а тип опущен, то всегда предполагается int: unsigned i; // Обе строчки объявляют unsigned int j; // переменную типа // unsigned int


Slide 6

7 Примеры


Slide 7

8 Интегральные типы (1/2) char bool short int long long


Slide 8

9 Интегральные типы (2/2) Диапазоны многих типов платформозависимы. Можно быть уверенными только в следующем соотношении: sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)


Slide 9

10 Вещественные типы (1/2) float double long double


Slide 10

11 Вещественные типы (2/2) sizeof (float) <= sizeof(double) <= sizeof(long double) К вещественным типам нельзя применять модификаторы unsigned, signed и short. “


Slide 11

12 Подробнее о фундаментальных типах данных Читаем в интернете (например, здесь http://msdn.microsoft.com/en-us/library/cc953fe1.aspx).


Slide 12

13 Оператор ветвления (1/3) if (условие_1) { действия_1 } [else if (условие_2) { действия_2 }] […] [else { действия_n }]


Slide 13

14 Оператор ветвления (2/3) if (true) { cout << “Будет напечатано”; } if (false) { cout << “Не будет напечатано”; }


Slide 14

15 Оператор ветвления (3/3) if (25) { cout << “Будет напечатано”; } if (0) { cout << “Не будет напечатано”; }


Slide 15

16 Разберём фрагмент программы unsigned int i; cin >> i; if (i > 3) { cout << "The value is greater than 3" << endl; } else if (i == 4) { // Вместо этого выполнится случай, когда i > 3 } else { cout << "The value is lesser than 4" << endl; }


Slide 16

17 switch switch ( expression )        case constant-expression : statement     case constant-expression : statement    … [default : statement]


Slide 17

18 Эти фрагменты делают одно и то же (1/2) unsigned int i; cin >> i; if (i == 3) { // i == 3 } else if (i < 6) { // i >= 0 && i < 6 && i != 3 } else { // i >= 6 }


Slide 18

19 Эти фрагменты делают одно и то же (2/2) switch(i) { case 3: cout << "i == 3" << endl; break; case 0: case 1: case 2: case 4: case 5: cout << "i >= 0 && i < 6 && i != 3 " << endl; break; default: cout << "i >= 6" << endl; }


Slide 19

20 Ещё один момент switch(i) { case 5: cout << "i == 5" << endl; cout << "Please, enter one more number: " << endl; { int j; // Из-за этой строчки и cin >> j; // нужны “{}”. Иначе будет ошибка. cout << "j == " << j << endl; } break; default: cout << "i >= 6" << endl; }


Slide 20

21 while while ( expression )        statement


Slide 21

22 Пример использования while (1/6) void main() { unsigned int n = 0, k = 1; cin >> n; while (n > 1) { k = k * n; n = n - 1; } cout << "n! = " << k << endl; }


Slide 22

23 Пример использования while (2/6) void main() { unsigned int n = 0, k = 1; cin >> n; while (n > 1) { k *= n; n -= 1; } cout << "n! = " << k << endl; }


Slide 23

24 Пример использования while (3/6) void main() { unsigned int n = 0, k = 1; cin >> n; while (n > 1) { k *= n; n--; } cout << "n! = " << k << endl; }


Slide 24

25 Пример использования while (4/6) void main() { unsigned int n = 0, k = 1; cin >> n; while (n > 1) { k *= n; --n; // Так лучше. } cout << "n! = " << k << endl; }


Slide 25

26 Пример использования while (5/6) void main() { unsigned int n = 0, k = 1; cin >> n; while (n > 1) { k *= --n; // Ошибка! // n -= 1; } // k *= n; cout << "n! = " << k << endl; }


Slide 26

27 Пример использования while (6/6) void main() { unsigned int n = 0, k = 1; cin >> n; while (n > 1) { k *= n--; // Ok // k *= n; } // n -= 1; cout << "n! = " << k << endl; }


Slide 27

28 do-while do        statement        while ( expression ) ;


Slide 28

29 Пример использования do-while void main() { unsigned int n = 0, k = 1; cin >> n; do { k *= n--; } while (n > 1); cout << "n! = " << k << endl; }


Slide 29

30 for for ( init-expression ; cond-expression ; loop-expression ) statement


Slide 30

31 Пример использования for void main() { unsigned int n = 0, k = 1; cin >> n; for (; n > 1; --n) { k *= n; } cout << "n! = " << k << endl; }


Slide 31

32 Пример использования for void main() { unsigned int n = 0, k = 1; cin >> n; for (; n > 1; --n) // Что выведется на { // Экран, если k *= n; // пользователь } // введёт n == 0? cout << "n! = " << k << endl; }


Slide 32

33 Пример использования for void main() { unsigned int n = 0, k = 1; cin >> n; for (; n > 1; --n) // Правильно! { // "n! = 1" k *= n; } cout << "n! = " << k << endl; }


Slide 33

34 Пример использования for void main() { unsigned int n = 0, k = 1; cin >> n; for (int i = n; i > 1; --i) { k *= i; } cout << "n! = " << k << endl; }


Slide 34

35 Пример использования for for (int i = n; i > 1; --i) { k *= i; } сout << "i = " << i // Ошибка! << endl; // i уже не существует


Slide 35

36 Задание на дом Мальчику Васе задали огромное задание по арифметике из-за того, что он долго дёргал за косички дочку учительницы. Помогите ему! Задание состоит из неизвестного вам числа примеров вида: <вещественное число> <операция> <вещественное число. Например, 2 + 2.5, 7.5 * (-5), 1 / 7. Виды операций: сложение, вычитание, умножение, деление, деление с остатком (%), возведение в степень (^).


Slide 36

37 Задание на дом Замечание. Операнды и операция вводятся по одному. Замечание. Действие ^ в C++ – это не возведение в степень. Для продвинутых. Сделать контроль пользовательского ввода и дать возможность использовать результат предыдущего примера в текущем вместо первого аргумента. Для ещё более продвинутых. Вместо любого из аргументов.


Slide 37

38 Как оформлять домашнее задание Каждое задания нужно посылать в архиве с именем: <Номер группы> <Фамилия Имя> <Номер лекции> <Номер задания на лекции>. Пример: 9999 Krass Alexander 2 1. Нумерация заданий начинается с единицы. Внутри папка с таким же именем, а в ней файлы: *.vcproj, файлы с исходными кодами, во вложенной папке Debug *.exe файл с вашим приложением.


Slide 38

39 Cпасибо за внимание


×

HTML:





Ссылка: