2. Основни типове данни
int main()
{
int pennies = 8; /*променлива
pennies, константа 8 */
int dimes = 4;
/*променлива dimes, константа 4 */
int quarters = 3; /*променлива
quarters, константа 3*/
double total = pennies*0.01 + dimes*0.10
+ quarters*0.25;
/* обща стойност
на монетите */
cout << "Total value = " <<
total << "\n";
return 0;
}
Total value = 1.23 |
* Цели числа (integer numbers): 8, -54, 1289
* Десетични дроби или числа с плаваща точка (floating point numbers):
0.01,
12.5, 73.0, 21.0E2, 5.34E-3, -22.0E4
* Символни имена (идентификатори):
-- редица от букви, цифри и знака _,
като първият символ е буква;
-- отличават се малки и главни букви;
-- запазени думи: main, return, int, double, ...;
-- имена на променливи.
* Характеристики на променлива: име, тип, стойност. В оператора
за дефиниране на променлива се задават задължително типа и името на променливата
и по желание началната й стойност. Например в оператора
int
dimes = 4;
типа на променливата е int,
името - dimes и стойността
4.
* Оператор за изход, обекта "екран":
cout << "Total value = ";
/* извежда низ */
cout << total;
/* извежда стойност на променлива
*/
cout << "\n";
/* специален символ за край на ред
*/
* Коментар - не се обработва от компилатора:
/* коментар
между знаците за начало и край на коментар
*/
// коментар
- до края на реда.
int main()
{ double o_price = 3E14;
double d_price = o_price - 0.05;
double discount = o_price - d_price;
cout << discount <<
"\n";
return 0;
}
0.0625 |
Програмата извежда 0.0625 вместо (математически) вярното
0.05. Проблемът е, че числата от тип double имат около
15 значещи цифри в десетичния си запис, а числото, което се записва в променливата
d_price,
съдържа 16 цифри и се налага закръгляване..
int main()
{
cout << "How many pennies
do you have? ";
int pennies;
cin >> pennies;
cout << "How many nickels
do you have? ";
int nickels;
cin >> nickels;
cout << "How many dimes do
you have? ";
int dimes;
cin >> dimes;
cout << "How many quarters
do you have? ";
int quarters;
cin >> quarters;
/* обща стойност
на монетите */
double total = pennies*0.01 + nickels*0.05
+
dimes*0.10 + quarters*0.25;
cout << "Total value = " <<
total << "\n";
return 0;
}
How many pennies do you have? 10
How many nickels do you have? 3 How many dimes do you have? 7 How many quarters do you have? 3 Total value = 1.70 |
* Четене на цели и дробни числа (десетични дроби).
* Грешки при вход - състояния на входния
поток: нормално и "грешка".
* Въвеждане на повече от 1 число с един оператор
за вход.
cin >> pennies >> nickels >> dimes >>
quarters;
|
|
int main()
{
cout << "How many pennies
do you have? ";
int count;
cin >> count;
/* дефиниция на променливата total*/
double total = count*0.01;
cout << "How many nickels
do you have? ";
cin >> count;
/* оператор за присвояване */
/* промяна на стойността на променливата
total */
total = count * 0.05 + total;
cout << "How many dimes do
you have? ";
cin >> count;
total = count * 0.10 + total;
cout << "How many quarters
do you have? ";
cin >> count;
total = count * 0.25 + total;
cout << "Total value = " <<
total << "\n";
return 0;
}
How many pennies do you have? 10
How many nickels do you have? 20 How many dimes do you have? 5 How many quarters do you have? 4 Total value = 2.60 |
* Текуща стойност на променлива.
Във всеки момент от изпълнението
на програмата променливата count има някаква стойност -
текуща стойност на променливата. В случая стойности на променливата са
въведените числа 10, 20, 5 и 4.
* Дефиниция на променлива - единствена !
-- с инициализация (със задаване на начална стойност):
double
total = count * 0.01;
-- без инициализация (без задаване на начална стойност):
int
count;
* Оператор за присвояване:
|
int main()
{
double x = 4.35;
int n = x*100;
cout << n << "\n";
return 0;
}
434 |
Отпечатва се 434, а не очакваното 435. Вътрешното представяне на числото
4.35 е 4.3499999999 (броят на деветките няма значение). Умножено по 100,
дава 434.99999999999. При инициализация на цялата променлива n
се извършва неявно преобразуване на типове, като дробната част се отрязва.
int main()
{
double bottles;
cout << "How many bottles
do you have? ";
cin >> bottles;
double cans;
cout << "How many cans do
you have? ";
cin >> cans;
double total = bottles * 2 + cans
* 0.355;
cout << "The total volume
is " << total << "\n";
return 0;
}
How many bottles do you have? 5
How many cans do you have? 4 Total volume is 11.42 |
Какво е значението на числото 0.355?
- 1 кутия съдържа 12 унции = 0.355 литра. Вместимостта на 1 бутилка и на
1 кутийка (2 и 0.335 - "магически числа") може да се зададат в програмата
като именовани константи (константи, които имат имена).
// volume2.cpp
#include <iostream>
using namespace std;
int main()
{
double bottles;
cout << "How many bottles
do you have? ";
cin >> bottles;
double cans;
cout << "How many cans do
you have? ";
cin >> cans;
const double BOTTLE_VOLUME = 2.0;
const double CAN_VOLUME = 0.355;
double total = bottles*BOTTLE_VOLUME
+ cans*CAN_VOLUME;
cout << "The total volume
is " << total << " liter.\n";
return 0;
}
Аритметични операции в С++.
Операция | символ | тип на аргументите | |
събиране | + | a+b | int, double |
изваждане | - | a-b | int, double |
умножение | * | a*b | int, double |
деление | / | a/b | int, double, b не е 0 |
остатък от деление | % | a%b | int, b не е 0 |
* Приоритети - както в математиката (най-напред се извършват действия
*, / и % и след тях + и -)
* Използване на скоби за промяна на реда на изпълнение на аритметичните
операции:
(a+b)/2 сборът на числата a и b се дели на 2;
a+b/2 числото a се събира с половинката на числото
b.
* Аргументна зависимост - действието на операцията зависи от типа на
аргументите.
- Двата аргумента на аритметичните операции трябва да са от един и
същи числов тип данни; резултатът е от същия тип.
- Разрешено е единият от аргументите да е от тип double,
а другия - от тип int; тогава аргумента от тип int
се преобразува (автоматично) на тип double и след това
се извършва аритметичната операция - с аргументи тип double.
- Примери:
|
|
|
* Аритметични функции.
За да се използват тези функции, трябва да се включи заглавния
файл cmath.h
с аритметични функции в С++. Това става като
се напише
#include <cmath>
|
|
Пример - аритметичен израз за намиране на един от корените
на квадратно уравнение с коефициенти a, b и c:
(-b+sqrt(b*b-4*a*c))/(2*a)
int k = 1;
cout << (++k); |
извежда 2, стойността на променливата става 2 |
int k = 1;
cout << (k++); |
извежда 1, стойността на променливата става 2 |