Єдина Країна!

Головне меню

Наша кнопка

Українські уроки про ІТ

Друзі

Підтримка української армії


Головна Програмування - C++ Базовий курс програмування на С++. Урок 4. Арифметичні операції та перетворення типів.

Базовий курс програмування на С++. Урок 4. Арифметичні операції та перетворення типів.
Написав Joker   
Четвер, 25 вересня 2014 08:28
Переглядів: 14638

Грамотний програміст – хороша зарплата,

Грамотний програміст – хороше майбутнє.

 

Сьогодні ми вивчимо:

  1. Арифметичні операції з числами
  2. Інкремент / декремент
  3. Скорочення арифметичних записів.
  4. Перетворення типів
  5. Домашнє завдання (відсутнє)

Арифметичні операції з числами

Арифметичні операції – це операції, які дозволяють виконувати арифметичні дії з даними. Більшість з них ви вже знаєте з школи.

Назва

Символ у С++

Приклад

Додавання

+

5+3 =8

Віднімання

-

5-5 =0

Ділення

/

12/3 = 4

Множення

*

3*4 = 12

Ділення з остачею

%

11/3 = 3 цілих 2 остача

11%3 = 2

 

При роботі з операцією ділення по модулю потрібно пам’ятати про деякі особливості:

  1. Ділення з остачею можна застосовувати тільки при роботі з цілими числами.
  2. При діленні меншого числа на більше, результатом буде менше число. 5%23 = 5
  3. Заборонено ділити по модулю на 0. Це призведе до некоректної роботи програми на етапі виконання.

 

Інкремент / декремент

Всі вище описані операції – бінарні. Крім них існують ще унарні арифметичні операції. Ці операції не вивчаються у школах, але це легка тема.

Інкремент створюється конструкцією ++. Цей оператор збільшує значення змінної на 1.


int a = 8;
cout << a << endl; // На екрані 8
a++;
cout << a ; // На екрані 9

Спосіб 2:


int a = 8;
cout << a << endl;
++a;
cout << a << endl;

 

Декремент – протилежність інкременту. Якщо перший збільшував значення змінної на 1, то декремент зменшує значення змінної на 1.

Конструкція запису схожа, щоб записати декремент потрібно використовувати -- (два мінуси).

Все інше аналогічне. Інкременти та декременти найчастіше використовуються при роботі з циклами.

 

Cкорочення арифметичних записів

На минулих уроках ми навчилися скорочувати x=x+1 , на x++. Таким чином змінна x збільшується на 1. Проте нам може знадобитися збільшити змінну не на 1, а на деяке інше число. Це можна зробити! Запис x = x + 12 можна замінити на х += 12 (звісно ж число 12 можна замінити на будь-яке інше). Так можна замінити і інші записи.

Стандартний запис

Комбінація для скорочення

Скорочений запис

A = A + 5

+=

A += 5

A = A * 5

*=

A *= 5

A = A / 5

/=

A /= 5

A = A - 5

-=

A -= 5

A = A % 5

%=

A %= 5

Я рекомендую використовувати скорочену форму запису, оскільки цим ви вчитеся хорошого і красивого стилю програмування. Це покращить читабельність вашої програми. Ще один плюс - деякі підручники твердять про те, що такі записи опрацьовуються комп’ютером швидше ніж стандартні аналоги.

 

Перетворення типів

Під час програмування ми повинні знати яким буде наш результат. Також очевидним буде факт, що з речовин потрібних для борщу, зробити макарони буде дещо важко. Відповідно результат буде залежати від частин, які використовувалися при обчисленні. Цей закон працює і для змінних. Не важко здогадатись, що якщо додати дві змінні типу int, результатом буде також тип int. Але яким буде результат, коли змінні різних типів? Про це зараз і піде мова.

Перш за все, потрібно розібратися, які типи можуть взаємодіяти між собою. Для цього у С++ створена ієрархія типів, де всі типи розміщенні по старшинству.

bool -> char -> short-int-unsigned int-long-unsigned long-float-double-long double

Не дивлячись на те, що деякі типи мають однаковий розмір, вони мають різний діапазон значень. Так unsigned int в порівнянні з int може помістити в себе в 2 рази більше додатних значень і тому він старший у ієрархії. Також варто відмітити, що при участі таких типів як: bool, short, char. Вони автоматично перетворюються у int.

Далі піде мова про перетворення типів у виразі (коді програми).

Ось ми і підійшли до того як визначити якого типу буде результат обчислення. Давайте спробуємо це зробити за допомогою уже відомих знань. Припустимо, що ми працюємо з такими змінними.

int I=27;
short S=2;
float F = 22.3;
bool B = false;

Користуючись цими змінними ми хочемо обчислити I-F+S*B

А ось і питання – У змінну якого типу потрібно записати результат? Відповідь досить проста, але спершу потрібно їх записати у вигляді їхніх типів. int-float+short*bool. Тепер згадаємо, що short та bool автоматично перетворяться у int .

Вираз зміниться на int-float+int*int. Тепер float буде = 0. При множенні двох типів int, результат також буде цього типу. А от int-float буде рівне float. Тут з’явилося нове правило:

 

Якщо у будь-якому виразі використовуються різні типи даних, то результат буде дорівнювати більшому з типів.

 

Таким чином результат виразу буде мати тип float.


float rez = I-F+S*B; // 27-22.3+*0
cout << rez << endl; // результат  = 4,7

Тепер це все не настільки важливо, щоб визначити тип достатньо знайти найбільший тип який використовується при обчисленні виразу.

Але це не знімає з програміста всієї обережності при роботі з типами змінних.

 

При діленні цілого числа на ціле, результатом буде також ціле число.


int i=3;
int j=2;
cout << i / j; // = 1. Дробова частина втрачена оскільки обидва типи int

Потрібно вказати, що результат повинен бути типу float. Це робиться так:

int i=3;
int j=2;
cout << (float) i / j ; // На екрані 1.5

 

Домашнє завдання

Сьогодні ви вивчили дуже важливу тему. Але щоб повноцінно її застосовувати вам потрібно вивчити теми з наступного уроку. Сьогодні не буде д/з. Ви отримаєте його на наступному уроці, де ви будете використовувати знання з обох уроків.

 

Наступний урок уже готується, очікуйте.

Дякую за увагу.


( 19 Проголосувало )

Схожі статті:
Новіші матеріали:
Старіші матеріали:

Коментарі
Добавити новий
Залишити коментар
Ім`я:
e-mail:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Введіть цей настирливий код
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Підписка

Хто онлайн?

Немає
На даний момент 16 гостей на сайті

Український рейтинг
TOP.TOPUA.NET