* Тип "цели числа" (int) се използва за
съхранение на цели числа. Напр. 9; 1202; -1; 0; -32.
* Тип "плаваща запетая" (double) са числа с десетичната точка (в
стандарта на US), напр. 1.2; 0.0013; -0.52; 12E-2; 13.01E2;
-2.9e-2.
* Променливите са места в паметта, които съхраняват стойности от
даден тип.
* Правила за имена на променливи (символични имена,
идентификатори):
- Имената започват с
буква.
- Оставащи символи са
букви, цифри или долна черта (underscore, _), не съдържат
интервали или специални символи.
- Не се използват
запазените думи от езика (като int, return и
др.).
- В имената на
променливите се отличават малки и главни букви (case-sensitive),
напр. Area и area са различни имена.
- Имената на
променливите се пишат само с малки букви (добър стил на
програмиране).
* Всяка променлива има:
- Тип, напр. int
или double.
- Име, напр. dimes.
- Стойност, напр.
4.
* Неопределена стойност на променлива, когато променливата се
дефинира без начална стойност (инициализация).
* Оператор за изход, обекта "екран" (cout):
cout << "Total value =
"; /*
извежда низ */
cout <<
total; /* извежда стойност на променлива */
cout <<
"\n"; /* специален символ за край на ред */
// coins2.cpp
#include <iostream> using namespace std; 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; /* total value of the coins */ cout << "Total value = " << total << "\n"; return 0; }
* Четене на цели и дробни числа (десетични
дроби).
* Грешки при вход - състояния на
входния поток: нормално и "грешка".
* Въвеждане на повече от 1 число с един
оператор за вход.
cin >> pennies >> nickels
>> dimes >> quarters;
(един оператор за печат, състоящ се от 4 операции за изходен
поток)
|
|
// coins3.cpp* Операторът присвоява стойността на израза отдясно на променливата от лявата страна:
#include <iostream>
using namespace std;
int main()
{ cout << "How many pennies do you have? ";
int count;
cin >> count;
double total = count * 0.01; // дефиниция на променливата total
cout << "How many nickels do you have? ";
cin >> count;
total = count * 0.05 + total; // оператор за присвояване
// промяна на стойността на променливата 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; }
total = count * 0.05 + total;
double total = count * 0.01; // оператор за дефиниране на променлива- без инициализация (без задаване на начална стойност):
int count; // оператор за дефиниране на променлива* Операция присвояване - отбелязва се със знака за равенство.
Операция | символ | тип на аргументите | математика |
|
събиране | + | a+b | int, double | a + b |
изваждане | - | a-b | int, double | a - b |
умножение | * | a*b | int, double | ab |
деление | / | a/b | int, double, b не е 0 | a/b |
остатък от деление | % | a%b | int, b не е 0 | a mod b |
* Приоритети - както в математиката (най-напред се извършват
действия *, / и % и след тях + и -)
* Използване на скоби за промяна на реда на изпълнение на
аритметичните операции
Пример:
(a+b)/2 сборът на числата a и b
се дели на 2;
a+b/2 числото a се събира с
половинката на числото b.
* Аргументна зависимост - действието на операцията зависи от типа
на аргументите.
- Двата аргумента на аритметичните операции трябва да са от един и
същи числов тип данни; резултатът е от същия тип.
- Разрешено е единият от аргументите да е от тип double,
а другият - от тип int; тогава аргументът от тип
int се преобразува (автоматично) на тип double
и след това се извършва аритметичната операция - с аргументи тип double.
- Примери:
|
|
|
// coins4.cpp* Аритметични функции.
#include <iostream> using namespace std; 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; int value = pennies + 5 * nickels + 10 * dimes + 25 * quarters; int dollar = value / 100; // целочислено деление int cents = value % 100; // остатък от целочислено деление cout << "Total value = " << dollar << " dollar and " << cents << " cents\n"; return 0; }
Функция ОписаниеПример
Стойност
sqrt(x) корен квадратен от xsqrt(64) 8.0
pow(x, y) xypow(3, 2) 9.0
sin(x) синус от x (в радиани)sin(0) 0.0
cos(x) косинус от x (в радиани)cos(0) 1.0
tan(x) тангес от x (в радиани)tan(0) 0.0
exp(x) exexp(0) 1.0
log(x) (натурален логаритъм) ln(x), x > 0log(1) 0.0
log10(x) (десетичен логаритъм) lg(x), x > 0log10(100) 2.0
ceil(x) най-малкото цяло число >= xceil(10.1) 11.0
floor(x) най-голямото цяло число <= xfloor(10.8) 10.0
fabs(x) абсолютна стойност (модул) |x|fabs(-3.5) 3.5
// volume1.cppКакво е значението на числото 0.355? - 1 кутия съдържа 12 унции = 0.355 литра.
#include <iostream> using namespace std;
int main() { double bottles; cout << "How many 2-liter 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 << " liter.\n"; return 0;
}
// volume2.cpp
#include <iostream>
using namespace std;
int main()
{ const double BOTTLE_VOLUME = 2.0;
const double CAN_VOLUME = 0.355;
double bottles;
cout << "How many" << BOTTLE_VOLUME << "-liter bottles do you have? "; cin >> bottles; double cans; cout << "How many cans do you have? "; cin >> cans; double total = bottles * BOTTLE_VOLUME + cans * CAN_VOLUME; cout << "The total volume is " << total << " liter.\n"; return 0; }
Низ е редица от символи | "Hello" |
Дефиниция на променлива от тип string |
string name = "John"; |
Заглавен файл | #include <string> |
Оператор за присвояване | name = "Carl"; |
Извеждане на низове | cout << name; |
Вход на низ |
cin >> name; |
Вход на цял ред | getline(cin, name); |
Дължина на низ | int n = name.length(); |
Празен низ | "" |
Автоматична инициализация | string response; |
* Функция за вход - getline(cin,
name) - подобна на аритметичната функция pow(x, y).
* Член-функция е функция, свързана с определен тип данни. Тя се
извиква с операция точка (.)
Пример:
name.length() - връща дължината на
низа (цяло число!).
* За променливи от тип string
е дефинирана и член-функция substr
- подниз (substring)
string greeting = "Hello World!\n"
string sub = greeting.substr(0, 4);
greeting.substr(0,4)- връща
подниз
от позиция 0 до позиция 3 (4 символа).
Позициите в низа се броят от 0.
H
|
e
|
l
|
l
|
o
|
,
|
|
W
|
o
|
r
|
l
|
d
|
!
|
\n
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
greeting.substr(7,5)- връща
подниз от позиция 7 до позиция 11 (5 символа).
H
|
e
|
l
|
l
|
o
|
,
|
|
W
|
o
|
r
|
l
|
d
|
!
|
\n
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
* Сливане на низове
(конкатенация).
string fname = "Nikolay";
string lname = "Kirov";
string name = fname + lname;
NikolayKirov
string name = fname + " " + lname;
Nikolay Kirov
* Поне един от аргументите на сливането трябва да е променлива!
// initials.cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{ cout << "Please enter your full name (first middle last): ";
string first;
string middle;
string last;
cin >> first >> middle >> last;
string initials = first.substr(0, 1) + middle.substr(0, 1)
+ last.substr(0, 1);
cout << "Your initials are " << initials << "\n";
return 0;
}
** Форматиране на изхода.
* Когато просто се отпечатват стойностите на променливите, не се
получава подредена таблица (form1.cpp).
cout << pennies << " "
<< pennies * 0.01 << "\n";
cout << nickels <<
" " << nickels * 0.05 << "\n";
cout << dimes << " "
<< dimes * 0.10 << "\n";
cout << quarters << " "
<< quarters * 0.25 << "\n";
1 0.01 12 0.6 4 0.4 120 30 |
*
Използване на манипулатори:
- setw задава
ширината на следващото изходно поле;
cout << setw(8);
- setprecision задава
(максимален) брой на цифрите след десетичната точка;
cout << setprecision(2);
- fixed фиксира
броя на цифрите след десетичната точка.
cout << fixed;
* Манипулаторите са дефинирани в заглавния файл iomanip.h, т.е. за
да ги използваме, трябва да имаме #include
<iomanip>.
Така изглежда частта от програмата, която отпечатва подредена
таблица (form2.cpp):
cout << fixed <<
setprecision(2);
cout <<setw(8)<< pennies
<<" "<< pennies*0.01 << "\n";
cout <<setw(8)<< nickels
<<" "<< nickels*0.05 << "\n";
cout <<setw(8)<< dimes
<<" "<< dimes*0.10 << "\n";
cout <<setw(8)<< quarters
<<" "<< quarters*0.25 << "\n";
1 0.01 12 0.60 4 0.40 120 30.00 |