Pages

Tuesday, February 22, 2022

Аритметички изрази

 C++ подржува 5 бинарни аритметички оператори: оператор за собирање (+), оператор за одземање (-), оператор за множење (*), оператор за делење (/) и оператор за пресметка на остаток од делење (%). Следнава табела ги содржи основните информации за гореспоменатите аритметичките оператори:

операцијаоператорформа
собирање+a+b
одземање-a-b
множење*a*b
делење/a/b
остаток (модул)%a%b

Операциите собирање, одземање и множење го имаат стандардното математичко значење. Доколку операциите (важи за сите аритметички операции) се извршуваат врз операнди од ист тип, резултатот е операнд од истиот тој тип (доколку, во изразот "a+b", а и b се променливи од тип int, и резултатот ќе биде од тип int). Доколку, барем една од променливите е од тип на податок кој овозможува чување на вредности кои се децимални (реални) броеви, тогаш и резултатот ќе биде од тип кој овозможува чување на децимални броеви (доколку, во изразот "a+b", а е променлива од тип int, а b е променлива од тип double, тогаш резултатот ќе биде од тип double). Ова не важи за операторот '%' - тој може да се извршува само врз податоци кои се цели броеви.

Доколку двата податока се цели броеви, тогаш резултатот од извршување на операцијата делење (a/b) ќе биде цел број. На пример, 5/2 ќе врати вредност 2 (иако 5/2 e 2.5). Доколку барем еден од податоците е реален (децимален) број, резултатот од извршувањето на операцијата делење ќе биде реален (децимален) број. На пример, 5.8/2 ќе врати вредност 2.9 (бидејќи операндот 5.8 е реален број). Делење со 0 (или 0.0) не е дозволено.

Операторот '%' може да се примени само врз целобројни податоци. Резултатот од извршувањето на операцијата a%b е остатокот од делењето на бројот a со b. На пример, 10%3 е еднакво на 1 (10/3 e 3, со остатокот 1 - бидејќи 10=3*3 + 1), 25%7 е еднакво на 4 (25/7 е 3, со остаток 4 - бидејќи 25=7*3+4). Операторот '%' најчесто се користи при проверка на тоа дали еден цел број е делив со друг - во тој случај изразот a%b треба да е еднаков на 0 (бидејќи доколку b го дели а, нема да се појави остаток при нивното делење).

Следната програма го демонстрира ефектот на секој од аритметичките оператори споменати погоре:

Програма 8.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
int main()
{
int a=1, b=2, c=3; //a=1 b=2 c=3
a=b+c; //a=5 b=2 c=3
a=c-b; //a=1 b=2 c=3
a=b*c; //a=6 b=2 c=3
b=10; //a=6 b=10 c=3
c=5; //a=6 b=10 c=5
a = b/c; //a=2 b=10 c=5
a = b%c; //a=0 b=10 c=5
b=8; //a=0 b=8 c=5
a = b/c; //a=1 b=8 c=5
a = b%c; //a=3 b=8 c=5
cout << a << endl; //pechati '3'
return 0;
}

Променливи и константи

 Во претходните две предавања разгледавме многу едноставна програма за печатење текст на екранот. Но, каква е користа од таа програма? Сигурно, целта на пишувањето на програми не е компјутерот да отпечати "Hello world!" на екранот или да запише "Hello world!" во некоја датотека - побрзо ќе биде самите да отвориме датотека и да го запишеме потребниот текст. Целта на програмирањето е да пишуваме програми кои ќе ни помогнат во решавањето на вистински проблеми - да работиме со вистински податоци.

Пред да можеме да напишеме програма која работи со податоци, потребно е да воведеме еден нов концепт - концептот на променлива. Променлива е локација од меморијата која се користи за чување на податок (вредност).Променливите ќе ги објасниме преку следниот едноставен пример: замислете дека имате тетратка и некој од вас побара, со молив, да ги запишете броевите 1, 2 и 3 (секој на своја страна). На првата страна треба да запишете 1, на втората страна 2 и на третата страна 3. Сега, некој побара од вас бројот кој е запишан на првата страна да го промените во 4 - нормално, тоа ќе го направите така што, со гума, ќе го избришете бројот 1 (тоа е бројот запишан на првата страна) и потоа ќе запишете 4. Сега, на првата страна е бројот 4, на втората 2, а на третата 3. Понатаму, некој бара од вас да ги соберете броевите кои се наоѓаат на првата и третата страна од тетратката (4 + 3), и да го запишете резултатот на 3-тата страна - вие ќе го избришете, со гума, бројот кој се наоѓа на 3-тата страна (3) и ќе запишете 7 (4+3). Во C++, процесот кој го објаснивме може да се запише со следниве неколку наредби (x ја означува првата страна, у ја означува втората страна, додека z ја означува третата страна)

int x = 1; //deklariraj deka kje zapishuvame celi broevi vo x i zapishi 1
int y = 2; //deklariraj deka kje zapishuvame celi broevi vo y i zapishi 2
int z = 3; //deklariraj deka kje zapishuvame celi broevi vo z i zapishi 3
x = 4; //zapishi 4 vo x (se prebrishuva starata vrednost)
z = x + z; //zapishi 7 vo z (se prebrishuva starata vrednost)

Секоја променлива има свое име (кое ја разликува од останатите променливи) и тип на податок (кој кажува какви вредности се чуваат на мемориската локација кон која променливата покажува). Компјутерот ги користи имињата на променливите за да одреди од која локација во меморијата да прочита вредност или на која локација да запише вредност.

Програмерот не го интересира мемориската локација - тој врши операции единствено врз променливата; идентификувајќи ја преку нејзиното име. Првиот пример можеме да го промениме така што наместо x користиме име prva, или prvaStrana, итн.

Именување на променливи

Од примерот даден погоре јасно се гледа дека за да декларираме една променлива, потребно е да се одлучиме за име. Во C++, валидно име за една променлива е секое име кое се состои од една или повеќе букви, цифри или знаци '_'. Имињата не смеат да содржат никакви други видови на симболи (празно место, точки, запирки, извичници, итн.). Покрај тоа што смеат да содржат само букви, знаци и '_', постојат и две додатни ограничувања во именувањето на променливите:

  • имињата не смеат да почнуваат со цифра ('1va', '5bukva', '0ime', '200simboli', итн. се примери за погрешно именувани променливи).
  • имињата не смеат да се поклопуваат (да се еднакви) со некој од резервираните (клучни) зборови* во C++. Доколку внесете некој од овие зборови во едиторот во Code::Blocks, тие ќе бидат задебелени (означени со bold).

*Клучни зборови (зборови кои веќе имаат своја дефиниција) во C++ се (немојте да сте пробале да ги запаметите овие имиња - доволно е што Code::Blocks ги знае)

Иако не е задолжително и компајлерот не го бара тоа од вас, обидувајте се да се придржувате до следниве правила на именување:

  • променливите треба да имаат имињата кои означуваат што тие прават ('vkupno' е многу подобро име од 'y')
  • имињата на променливите започнуваат со мала буква ('rezultat' наместо 'Rezultat' или 'REZULTAT')
  • доколку името треба да содржи повеќе зборови, почетната буква на секој следен збор (по првиот) треба да е голема ('prvaBukva', 'rezultatOdSobiranjeto', 'imeNaCovekot', 'ushteEdnoImeNaPromenlivaSoPovekjeZborovi', итн.
  • Константи

    Константи претставуваат вредности кои не може да се променат за време на извршување на програмата. C++ овозможува креирање на константи на два начина: со користење на #define наредба или со специфицирање на терминот const пред типот и името на константата.