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

Содержание

Слайд 2

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

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

Обычно 4

байта: - 231 … 231-1 (0… 232 для unsigned)
Слайд 3

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

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

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

в коде
Слайд 4

Слайд 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 =

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

int a = 10; // a = 10
int

b = ++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,

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

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

и 0.
short, int, long и long long

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

Слайд 13

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

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

Слайд 14

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

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

Слайд 15

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

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

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

0 до 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 Высота горы

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

float
double
long double

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

14 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,

Резюме

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

unsigned 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
Слайд 36

Слайд 37

Слайд 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

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

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

b <= 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;
}
Слайд 41

Слайд 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;
}