Программирование. Лекция 2

Содержание

Слайд 2

Обычно 1 байт = 8 бит: - 27 … 27-1

Обычно 4 байта:

Обычно 1 байт = 8 бит: - 27 … 27-1 Обычно 4
- 231 … 231-1 (0… 232 для unsigned)

Слайд 3

Значения встроенных типов в С++ задаются с помощью литералов.

Соответствует числу 97 в

Значения встроенных типов в С++ задаются с помощью литералов. Соответствует числу 97 в коде
коде

Слайд 5

=4

k=4,i=5
l=4,i=4

=3

=4 k=4,i=5 l=4,i=4 =3

Слайд 6

Операции инкремента и декремента

int a = 10; // a = 10
int b

Операции инкремента и декремента int a = 10; // a = 10
= ++a; // префиксный инкремент возвращает новое значение => b = 11 и a = 11
int c = a++; // постфиксный инкремент возвращает старое значение => с = 11 и a = 12

Слайд 7

Преобразование встроенных типов в операторах

Выражениям так же как и значениям в C++ приписывается

Преобразование встроенных типов в операторах Выражениям так же как и значениям в
некоторые типы. Например, если a и b — это переменные типа int, то выражения (a + b), (a - b), (a * b) и (a / b) тоже будут иметь тип int. 
Важно всегда понимать, какой тип у выражения, которое вы написали в программе. Давайте проиллюстрируем это на следующем примере:
int a = 20; int b = 50; double d = a / b;  // d = 0, оба аргумента целочисленные, а значит деление целочисленное
Как исправить этот код, чтобы получить вещественное значение в переменной d? 
Для этого хотя бы один из аргументов оператора деления должен иметь типа double. Этого можно добиться при помощи уже известного нам оператора приведения типов:
double d = (double)a / b;  // d = 0.4
Почему это сработало? Дело в том, что операторы для встроенных типов C++ всегда работают с одинаковыми типами аргументов. Если аргументы имеют разные типы, то происходит преобразование типов (promotion).

Слайд 8

Значение выражения зависит от порядка вычислений

// k = 11

Значение выражения зависит от порядка вычислений // k = 11

Слайд 9

Типы данных

Встроенные типы данных C++

составные типы

фундаментальные типы

Типы данных Встроенные типы данных C++ составные типы фундаментальные типы

Слайд 10

Переменные

int cost_of_trip; // или costOfTrip
Правила именования:
В именах разрешено использовать только алфавитных

Переменные int cost_of_trip; // или costOfTrip Правила именования: В именах разрешено использовать
символов, цифр и символа подчеркивания (_).
Первым символом имени не должна быть цифра.
Символы в верхнем и нижнем регистре рассматриваются как разные.
В качестве имени нельзя использовать ключевое слово C++.
Имена, которые начинаются с двух символов подчеркивания или с одного подчеркивания и следующей за ним буквы в верхнем регистре, зарезервированы для использования реализациями C++, т.е. с ними имеют дело компиляторы и ресурсы. Имена, начинающиеся с одного символа подчеркивания, зарезервированы для применения в качестве глобальных идентификаторов в реализациях.
На длину имени не накладывается никаких ограничений, и все символы в имени являются значащими. Однако некоторые платформы могут вводить свои ограничения на длину.

Слайд 11

Переменные

Переменные

Слайд 12

Целочисленные типы

Целыми являются числа без дробной части, например 2, 98, -5286 и

Целочисленные типы Целыми являются числа без дробной части, например 2, 98, -5286
0.
short, int, long и long long

sizeof - возвращает размер типа или переменной в байтах

Слайд 13

Целочисленные типы

Целочисленные типы

Слайд 14

Инициализация переменной

Инициализация переменной

Слайд 15

Типы без знаков

short: -32 768 до 32 767
беззнаковый вариант этого типа: 0

Типы без знаков short: -32 768 до 32 767 беззнаковый вариант этого
до 65 535.

Слайд 16

Типы без знаков

Типы без знаков

Слайд 17

Типичное поведение при переполнении

Целочисленное значение без знака

Целочисленное значение со знаком

Типичное поведение при переполнении Целочисленное значение без знака Целочисленное значение со знаком

Слайд 18

Целочисленные литералы

Целочисленные литералы

Слайд 19

Целочисленные литералы

Целочисленные литералы

Слайд 20

Тип char: символы и короткие целые числа

Тип char: символы и короткие целые числа

Слайд 21

Тип char: символы и короткие целые числа

Тип char: символы и короткие целые числа

Слайд 22

Литералы char

Коды управляющих последовательностей в C++

Литералы char Коды управляющих последовательностей в C++

Слайд 23

Литералы char

Следующие два оператора дают одинаковые результаты:

Литералы char Следующие два оператора дают одинаковые результаты:

Слайд 24

ТИП bool

True преобразовывается в 1, a false в 0:

Любое ненулевое значение преобразуется

ТИП bool True преобразовывается в 1, a false в 0: Любое ненулевое
в true, а нулевое значение — в false:

Слайд 25

Квалификатор const

Общая форма для создания константы:

Данный код не годится:

Квалификатор const Общая форма для создания константы: Данный код не годится:

Слайд 26

Числа с плавающей точкой

2.5, 3.14159 и 122442.32 — числа с дробными

Числа с плавающей точкой 2.5, 3.14159 и 122442.32 — числа с дробными
частями

34.1245 и 34124.5

0.341245 (базовое значение)
и 100 (масштабный коэффициент)

0.341245 (такое же базовое значение) и 100 000 (больший масштабный коэффициент)

Экспоненциальная запись:

Слайд 27

Экспоненциальная запись

Экспоненциальная запись

Слайд 28

Типы чисел с плавающей точкой

float
double
long double

Высота горы Шаста в Калифорнии 14

Типы чисел с плавающей точкой float double long double Высота горы Шаста
179 футов
14 000 футов
14.179 тысяч футов

Слайд 29

Арифметические операции в C++

Операция + выполняет сложение операндов. Например, 4 +

Арифметические операции в C++ Операция + выполняет сложение операндов. Например, 4 +
20 дает 24.
Операция - вычитает второй операнд из первого. Например, 12-3 дает 9.
Операция * умножает операнды. Например, 28*4 дает 112.
Операция / выполняет деление первого операнда на второй.
Например, 1000 / 5 дает 200. Если оба операнда являются целыми числами, то результат будет равен целой доли частного. Например, 17/3 дает 5, с отброшенной дробной частью.
Операция % находит остаток от деления первого операнда на второй. Например, 19 % б равно 1. Оба операнда при этом должны быть целочисленными; использование операции % над числами в формате с плавающей точкой приведет к ошибке времени компиляции.

Слайд 30

Примеры некоторых арифметических операций в C++

Примеры некоторых арифметических операций в C++

Слайд 31

Различные результаты, получаемые после деления

Различные результаты, получаемые после деления

Слайд 32

Беглый взгляд на перегрузку операций

Использование одного и того же символа для

Беглый взгляд на перегрузку операций Использование одного и того же символа для
обозначения нескольких операций называется перегрузкой операций.

Различные операции деления

Операция выполняет деление int

Операция выполняет деление long

Операция выполняет деление double

Операция выполняет деление float

Слайд 33

Преобразования типов

C++ преобразует значения во время присваивания значения одного арифметического типа переменной,

Преобразования типов C++ преобразует значения во время присваивания значения одного арифметического типа
относящейся к другому арифметическому типу.
C++ преобразует значения при комбинировании разных типов в выражениях.
C++ преобразует значения при передаче аргументов функциям.

Слайд 34

Резюме

Целочисленными типами являются следующие: bool, char, signed char, unsigned char, short, unsigned

Резюме Целочисленными типами являются следующие: bool, char, signed char, unsigned char, short,
short, int, unsigned int, long, unsigned long.
Типов с плавающей точкой всего три: float, double и long double.

Слайд 35

Вопросы для самоконтроля

Почему в языке C++ имеется более одного целочисленного типа?

Вопросы для самоконтроля Почему в языке C++ имеется более одного целочисленного типа?

Объявите переменные согласно перечисленным ниже описаниям.
а. Целочисленная переменная short, имеющая значение 80. .
б. Целочисленная переменная unsigned int, имеющая значение 42.110.
в. Целочисленная переменная, имеющая значение 3 000 000 000.
Вычислите следующие выражения:
а. 8 * 9 + 2
б. 6 * 3 / 4
в. 3 / 4 * 6
г. 6.0 * 3 / 4
д. 15 % 4

Слайд 38

Цикл do-while

В С++ существует вариация цикла while, которая называется do-while. В отличие

Цикл do-while В С++ существует вариация цикла while, которая называется do-while. В
от обычного while в do-while условие проверяется не до, а после итерации. Т.е. такой цикл всегда имеет хотя бы одну итерацию.
Давайте сравним обычный while:
int i = 10;
int sum = 0;
while (i < 10)
{
sum += i;
}
// sum = 0
И do-while: 
int i = 10;
int sum = 0;
do
{
sum += i;
} while(i < 10);
// sum = 10
Как видите, в случае с do-while мы добавили 10 к переменной sum, а в обычном while — нет.

Слайд 39

Управление циклами

int a = 323;
int b = 2;
while ( b

Управление циклами int a = 323; int b = 2; while (
<= a )
{
if ( a % b == 0 )         
break; // выйти из цикла     
b = b + 1;
}
После выполнения этого цикла мы найдём минимальное целочисленное b > 1 такое, что а делится на b, т.е. найдём наименьший простой делитель числа a. В данном случае b будет равен 17, т.к. 323 = 17 × 19.

Слайд 40

Управление циклами

Ещё один оператор, который можно использовать с циклами — это оператор

Управление циклами Ещё один оператор, который можно использовать с циклами — это
continue. Оператор continue прерывает текущую итерацию цикла и переходит к следующей. Например, можно посчитать сумму всех чисел от 1 до 100, которые не делятся на 17 или 19, следующим образом.
int sum = 0;
for ( int i = 1; i <= 100; ++i )
{
if ( (i % 17 == 0) || (i % 19 == 0) )        
continue; // перейти к следующей итерации     
sum += i;
}

Слайд 42

Переменные не модифицируются

Переменные не модифицируются

Слайд 43

Задача

Напишите функцию power, реализующую возведение целого числа в неотрицательную целую степень. Функция

Задача Напишите функцию power, реализующую возведение целого числа в неотрицательную целую степень.
power должна принимать на вход два целых числа и возвращать целое число (смотрите шаблон кода). При выполнении задания учтите, что функция обязательно должна называться power, функция ничего не должна читать со входа или выводить.
Требования к реализации: в этом задании вам нужно реализовать только функцию power. Вы можете определять вспомогательные функции, если они вам нужны. Реализовывать функции main не нужно. 
Ограничения: библиотеку cmath (и math.h) использовать запрещено.
// определите только функцию power, где
// x - число, которое нужно возвести в степень
// p - степень, в которую нужно возвести x
//
int power(int x, unsigned p) {
int answer;
/* считаем answer */
return answer;
}