201.37K
Категория: ПрограммированиеПрограммирование

Типи даних

1.

Розглянемо речення на мові С
cout << x/y;
х – фактично пов’язано з якоюсь ділянкою
пам’яті, з її початковою адресою.
Там нулі та одинички.
Що має з’явитися на екрані?

2.

Типи даних
Будь-які дані в пам'яті комп'ютера
зберігаються як послідовності
нулів та одиниць.
Але для того, щоб визначити,
що означає така послідовність,
необхідно знати,
до якого типу вона відноситься.

3.

Типи даних
Наприклад,
нехай в пам'яті комп'ютера записана послідовність
нулів та одиниць (4 байти)
0100 0010 0100 0011 0100 0100 0000 0000.
Якщо розглядати її як дані типу int,
то це буде ціле число 1111704576,
а якщо припустити, що це рядок сималів,
то отримаємо “BCD”.

4.

А якщо float?

5.

Типи даних
Тип даних визначає:
• спосіб кодування інформації;
• обсяг пам'яті, який займає змінна цього типу,
(а відповідно і діапазон значень);
• перелік допустимих операцій для даних цього
типу;
• правила виконання операцій над даними.

6.

Типи даних
Основні типи
char – тип для символів;
int – тип для цілих чисел;
float – тип для дійсних чисел;
double – дійсні числа подвійної точності;
void – змінна, що не має значень.

7.

Модифікатори типів
signed – із знаком (для char, int);
unsigned – без знаку (для char, int);
long – довгий (для int, double);
short – короткий (для int);
Наприклад: unsigned long long int;
Довжина в байтах:
sizeof(<ім'я типу, змінної або константа>)

8.

Деякі нові типи даних (С++)
bool – тип змінної, що може приймати
значення true або false;
bool ok=true;
Але можна і так:
int ans = false;
bool promise = -100;

9.

Деякі нові типи даних (С++)
string – тип для рядків символів
string name=“Тарас ”;
string fam=“Шевченко”;
string fullName=name + fam;

10.

Оголошення змінних
int j, k, n;
short int m = -10, p=20;
unsigned long long int fact;
Окрім того, у С++ оголошувати змінні можна де
завгодно, але до першого використання.

11.

Константи з модифікаторами
25LL 10000U
123.12F 2.37E-10F
1234.567L

12.

Операції та вирази

13.

Операція присвоєння
<змінна> = <вираз>;
int x = 10;
x = x + 1;

14.

Операція присвоювання
У Сі присвоєння - є операцією!
(= не плутати з операцією порівняння ==)
Пріоритет операції = низький.
Операція має результат,
отже, можна написати
a = b = c + (d = x * y)

15.

Математичні операції
Знак
Операція
*
Множення
/
Ділення (у тому числі ділення націло )
%
Остача від ділення (для цілих)
+
Додавання
-
Віднімання

16.

Операції із знаком присвоєння
m +=20, те саме, що m=m+20;
m -=20, те саме, що m=m-20;
m *=20, те саме, що m=m*20;
m /=10, те саме, що m=m/10;
m%=10, те саме, що m=m%10;

17.

Операції порівняння
Операція
==
>
<
>=
<=
!=
Опис
Дорівнює
Більше
Менше
Більше або дорівнює
Менше або дорівнює
Не дорівнює

18.

Логічні операції (усі типи)
Операція
Опис
||
&&
!
Або
(a||b) && !(a&&b)
b>=4 && b<5
і
Ні
Виключно або (xor)
Дужки не потрібні

19.

Результати логічних операцій
Операції
Перший
операнд
Другий
операнд
&&, &
(і)
||,
|
(або)
^
розбіж-ність)
(
1
1
1
1
0
1
0
0
1
1
0
1
0
1
1
0
0
0
0
0

20.

Побітові операції (для цілих)
Операція
Опис
|
&
~
>>
<<
^
Або
i
Ні
Зсув праворуч
Зсув ліворуч
Виключно або (xor)

21.

Побітові операції
10 & 5
1010
0101
0000
0xd | 5
1101
0101
1101
Операції зсувів >> <<
11 >> 2
5 << 2
1011 -> 10 (2)
101 -> 10100 (20)

22.

Операції інкременту (для всіх)
Операто
р
Приклад
Опис
Еквівалентний
вираз
++
i ++;
Постфіксна
i =i+1; або i+=1;
++
++ i;
Префіксна
i =i+1; або i+=1;
--
i - -;
Постфіксна
i =i-1; або i-=1;
--
- - i;
Префіксна
i =i-1; або i-=1;

23.

Операції інкременту
Префіксні операції мають найвищий пріоритет.
Виконуються до будь якої іншої операції.
Наприклад:
int d=1;
int a = ++d*3 + d;
Результат a=8 d=2.

24.

Операції інкременту
Постфіксні операції мають найменший пріоритет
і виконуються останніми.
b=2, c=1;
a = b + c++;
Результат a=3 c=2.
Що це означає? // Для допитливих
int x=10; while(x-->0) {…}
int c=-10; while(c++) {…}

25.

Тернарний оператор
(від слова три)
? :
Вираз_1 ? Вираз_2 : Вираз_3;
Наприклад:
stip = ball<4.0 ? 0 : ball<5 ? 40 : 50;

26.

Операція послідовного обчислення
Символ операції
,
Вираз_1 , Вираз_2
Обчислюється Вираз_1 , потім Вираз_2.
Повертається результат Виразу_2
Наприклад
x = (y = 3, y += 1, y++); х = 4, y = 5;

27.

Перетворення типів
в операції присвоювання
Результат отриманий у правій частині
приводиться до типу лівої частини
int x; char ch; float f; unsigned int u;
x = 0xFC41;
// x = 64577
ch = x;
// ch = ‘A’
x = f = -25.7 - ch; // f=-90,7 // x = -90
u = f;
// u = 4294967206
f = u;
// f = 4.29497e+009
x = f;
// -2147483648

28.

Вирази
Вираз - це послідовність операндів,
об’єднаних знаками операцій та
круглими дужками.
Операнди – це змінні, константи
та звертання до функцій

29.

Вирази
У мовах високого рівня
вираз мало відрізняється від формули.
Основна відмінність полягає в тому,
що вираз записується в один рядок.

30.

Приклади запису виразів
Формула
a b
( a b) x
Вираз
(a+b)/(a-b)/x
2
sin x b
sqrt(sin(x)*sin(x) + b)
2.5 x
exp(2.5*x)
1 .5 b
pow(a, 1.5+b)
e
a

31.

Перетворення типів у виразах
По-перше,
char, short int (integral promotion)
Далі використовується принцип ”найбільшого
операнду ”,відповідно до ряду:
long double, double, float,
usigned long long, long long,
unsigned int, int

32.

Явне приведення типів
(тип) вираз
Наприклад:
int x=5; float y;
y=(float)(x / 2.0)

33.

Операції з вказівниками
& - операція отримання адреси змінної,
наприклад:
int *p, count = 10, c;
p = &count;
* - операція отримання значення за вказаною
адресою,
наприклад: int c = *p;

34.

Операції
++ -- () [] . ->
! ~ +a -a (type) sizeof *a &a
* / %
+ << >>
< > <= >=
= = !=
& ^ | && ||
?:
= += -= *= /= %= &= ^= |= >>=
++ -- ,
Пріоритет
1
2
3
4
5
6
7
8,9,10,11,12
13
14
15

35.

Деякі функції бібліотеки cmath.

36.

Приклад звернення
Що обчислює
fabs(вираз)
Модуль числа
sqrt(вираз)
Квадратний корінь
pow(вираз, ступінь)
Піднесення до ступеню
exp(вираз для степеню числа e)
Експонента
log(вираз)
Натуральний логарифм
log10(вираз)
Логарифм за основою 10
sin(вираз)
Синус
cos(вираз)
Косинус
tan(вираз)
Тангенс

37.

Приклад звернення
Що обчислює
asin(вираз)
Арксинус
acos(вираз)
Арккосинус
atan(вираз)
Арктангенс
sinh(вираз)
Гіперболічний синус
cosh(вираз)
Гіперболічний косинус
tanh(вираз)
Гіперболічний тангенс
celi(вираз)
Округлення до найближчого більшого
floor(вираз)
Округлення до найближчого меншого
fmod(вираз ділене, вираз дільник)
Залишок від ділення з плаваючою точкою

38.

Функція printf()
//Прототип
int printf(const char *format, arg-list);
//Приклад
printf("Сума чисел %d та %d дорівнює %d\n",
10, 5, 10 + 5);

39.


%d
%lld

%f
%g
%Lg

%s
%u
%llu

%llх

%*
%%
Символ типу char
Десяткове число цілого типу зі знаком
Десяткове число цілого типу long long зі знаком
Наукова нотація (е нижнього регістру)
Десяткове число з плаваючою точкою
Використовує код% е або% f - той з них, який коротше
Для типу long double (або %Le, або %Lf)
Вісімкове ціле число без знаку
Рядок символів
Десяткове число цілого типу без знаку
Десяткове число цілого типу long long без знаку
Шістнадцяткове ціле число (літера х нижнього регістру)
Те саме для типу long long
Вказівник на якийсь елемент
Вказівник на значення, яке буде підставлено у формат
Вивести знак %

40.

Чи є тут помилки?
int x = 2, a1 =3, u =4; // cos(x/3);
cout << log10(x+a1*(0,5*x+1,8)) << endl;
float f2 = log10(x+a1/((1/2)*x+(18/10)));
cout<<pow(sqrt(3),(u+tan(u*x*x))/(log(2*x)-u*u*u) );
double f4 = pow(u+ pow(x,2) - pow(u,3), 1/3);

41.

Ще раз про двійкові числа
0 –> 0
1 -> 1
2 -> 10
3 -> 11
4 -> 100
5 -> 101
6 -> 110
7 -> 111
8 -> 1000
9 -> 1001
10 -> 1010
11 -> 1011
12 -> 1100
13 -> 1101
14 -> 1110
15 -> 1111
A
B
C
D
E
F

42.

Переведення цілого 10 у 2
113/2 –> 1
56/2 -> 0
28/2 -> 0
14/2 -> 0
7/2 -> 1
3/2 -> 1
1/2 -> 1
1
( 2)
( 4)
( 8)
16
32
64
113 -> 1110001

43.

10 -> 16 -> 2
Частка
Залишок
16
2
46 : 16
2
14
Е
1110
2 : 16
0
2
2
10
46 => 0x2E

44.

0.10 -> 0.2
0.46 * 2
0.92*2
0.84*2
0.68*2
0.36*2
0.64*2
Дробова частина
Ціла частина
0.92
0.84
0.68
0.36
0.64
0.28
0
1
1
1
0
1

45.

Побітові операції
10 & 5
1010
0101
10 | 5
1010
0101
0000
1111
Операції зсувів
>> <<
11 >> 2
1011 -> 10 (2)
5 << 2
101 -> 10100 (20)
English     Русский Правила