// coins1.cpp
#include <iostream> using namespace std; int main() { int pennies = 8; int dimes = 4; /* променлива dimes, константа 4 */ int quarters = 3; double total = pennies * 0.01 + dimes * 0.10 + quarters * 0.25; /* обща стойност на монетите */ cout << "Total value = " << total << "\n"; return 0; }
* Типът "цяло число" (int) задава цели
числа без дробна част. Включва нулaта и отрицателни числа.
Използва се за съхранение на стойности на цели числа (например
брой монети): 9; 1202;
-1; 0; -32.
* Числата от тип "плаваща запетая" (double) имат десетичната
точка (в стандарта на US).
* Записване на числа с плаваща запетая: 1.2; 0.001; -0.12;
1E-2; 13.01E2; -2.9e-2; и т.н.
* Променливите са места в паметта, която могат съхраняват
стойности от даден тип.
* Правила за именуване (символични имена, идентификатори):
- Имената трябва да
започват с буква.
- Оставащи символи са
букви, цифри или долна черта (underscore, _), без интервали или
специални символи.
- Не може да се
използват запазените думи (като int, return и
др.)
- В имената на
променливите се отличават малки и главни букви (case-sensitive),
например Area и area са различни имена.
- Имената на променливите се
пишат само с малки букви (добър стил на програмиране).
* Всяка променлива има:
- Тип, напр. int
или double.
- Име, напр. dimes.
- Стойност, напр.
4.
* В оператора за дефиниране на променлива
int dimes = 4;
типът на променливата е int, името е 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; }
** Форматиране на изхода.
* Когато просто се отпечатват стойностите на променливите, не се
получава подредена таблица (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 |