26. Inkrement i dekrement u C++ (++, –) — prefiksni i postfiksni operatori
U prethodnoj lekciji naučili smo kako funkcionišu operator dodele (=) i kombinovani operatori (+=, -=, *=, /=, %=). Videli smo kako možemo da povećavamo ili smanjujemo vrednosti promenljivih, sabiramo rezultate, menjamo stanje magacina i obavljamo različite matematičke operacije. Međutim, u programiranju postoji jedna operacija koja se ponavlja toliko često da je C++ za nju predvideo […]
20. октобар 2026.19 min čitanjaLekcija 26/30
Mala škola C++Lekcija 26 od 30
U prethodnoj lekciji naučili smo kako funkcionišu operator dodele (=) i kombinovani operatori (+=, -=, *=, /=, %=). Videli smo kako možemo da povećavamo ili smanjujemo vrednosti promenljivih, sabiramo rezultate, menjamo stanje magacina i obavljamo različite matematičke operacije.
Međutim, u programiranju postoji jedna operacija koja se ponavlja toliko često da je C++ za nju predvideo posebne operatore.
To je povećavanje ili smanjivanje vrednosti promenljive za jedan.
Zamislimo nekoliko svakodnevnih situacija:
Program broji koliko je korisnika posetilo internet stranicu.
Video-igra povećava broj osvojenih poena ili smanjuje broj preostalih života.
Softver za prodaju evidentira broj izdatih računa.
Program prolazi kroz elemente niza jedan po jedan.
Aplikacija odbrojava preostale sekunde.
Algoritam ponavlja određenu operaciju sve dok brojač ne dostigne zadatu vrednost.
U svim ovim situacijama često je potrebno da neku promenljivu povećamo ili smanjimo za jedan.
Umesto da svaki put pišemo:
brojac = brojac + 1;
možemo koristiti:
brojac++;
Slično tome, umesto:
brojac = brojac - 1;
možemo napisati:
brojac--;
Ove operacije nazivaju se inkrement i dekrement.
Iako na prvi pogled deluju jednostavno, postoji veoma važna razlika između zapisa ++x i x++, odnosno --x i x--. Upravo ta razlika često predstavlja problem studentima na kolokvijumima i ispitima iz programiranja.
U ovoj lekciji detaljno ćemo objasniti kako ovi operatori funkcionišu, kako utiču na vrednosti promenljivih, kada se koriste i kako da pravilno rešavate zadatke sa prefiksnim i postfiksnim operatorima.
Šta ćemo naučiti u ovoj lekciji?
Nakon završetka lekcije znaćete da:
Objasnite šta predstavljaju inkrement i dekrement.
Koristite operatore ++ i --.
Razlikujete prefiksni i postfiksni oblik.
Razumete razliku između ++x i x++.
Razumete razliku između --x i x--.
Pratite promene vrednosti promenljivih korak po korak.
Koristite inkrement i dekrement u izrazima i petljama.
Razumete zašto su neki složeni izrazi sa ovim operatorima opasni.
Izbegnete nedefinisano ponašanje.
Samostalno rešavate tipične fakultetske zadatke.
1. Šta je inkrement?
Inkrement je operacija kojom vrednost promenljive povećavamo za jedan.
U C++ jeziku koristi se operator:
++
Pogledajmo jednostavan primer:
int broj = 5;
broj++;
Nakon izvršavanja druge naredbe, promenljiva broj ima vrednost 6.
To je ekvivalentno sledećem zapisu za običnu celobrojnu promenljivu:
broj = broj + 1;
ili:
broj += 1;
Kompletan primer
#include <iostream>
using namespace std;
int main() {
int broj = 5;
cout << "Pre inkrementa: " << broj << endl;
broj++;
cout << "Posle inkrementa: " << broj << endl;
return 0;
}
Rezultat:
Pre inkrementa: 5
Posle inkrementa: 6
Operator ++ povećava vrednost promenljive za tačno jedan.
Ako je vrednost promenljive 10, posle inkrementa biće 11.
Ako je vrednost -3, posle inkrementa biće -2.
Ako je vrednost 0, posle inkrementa biće 1.
2. Šta je dekrement?
Dekrement je suprotna operacija od inkrementa.
Koristi se za smanjivanje vrednosti promenljive za jedan.
Operator dekrementa je:
--
Primer:
int broj = 10;
broj--;
Nakon izvršavanja druge naredbe, promenljiva ima vrednost 9.
Ekvivalentni zapisi za običnu celobrojnu promenljivu su:
broj = broj - 1;
i:
broj -= 1;
Kompletan primer
#include <iostream>
using namespace std;
int main() {
int broj = 10;
cout << "Pre dekrementa: " << broj << endl;
broj--;
cout << "Posle dekrementa: " << broj << endl;
return 0;
}
Rezultat:
Pre dekrementa: 10
Posle dekrementa: 9
Praktičan primer — preostali pokušaji
Zamislimo program u kojem korisnik ima tri pokušaja da unese odgovarajući odgovor.
#include <iostream>
using namespace std;
int main() {
int pokusaji = 3;
cout << "Pocetni broj pokusaja: "
<< pokusaji << endl;
pokusaji--;
cout << "Preostali pokusaji: "
<< pokusaji << endl;
return 0;
}
Rezultat:
Pocetni broj pokusaja: 3
Preostali pokusaji: 2
Operator -- posebno je koristan kod odbrojavanja, ograničavanja pokušaja i rada sa petljama.
3. Prefiksni i postfiksni oblik
Inkrement i dekrement mogu se zapisati na dva načina:
Prefiksno — operator se nalazi ispred promenljive.
Postfiksno — operator se nalazi iza promenljive.
Primeri:
Oblik
Inkrement
Dekrement
Prefiksni
++x
--x
Postfiksni
x++
x--
U oba slučaja vrednost promenljive se povećava ili smanjuje za jedan.
Međutim, postoji razlika u tome koju vrednost sam izraz vraća.
Ova razlika postaje važna kada inkrement ili dekrement koristimo unutar nekog većeg izraza.
Osnovno pravilo
Prefiksni oblik (++x) prvo menja promenljivu, a izraz predstavlja njenu novu vrednost.
Postfiksni oblik (x++) kao rezultat izraza daje prethodnu vrednost promenljive, dok se promenljiva takođe povećava za jedan.
Isto pravilo važi i za dekrement.
4. Prefiksni inkrement (++x)
Kod prefiksnog inkrementa operator ++ nalazi se ispred promenljive.
Primer:
int x = 5;
int y = ++x;
Šta se dešava?
Prvo se promenljiva x povećava za jedan.
x = 6
Zatim izraz ++x predstavlja novu vrednost promenljive, koja se dodeljuje promenljivoj y.
y = 6
Konačne vrednosti su:
x = 6
y = 6
Kompletan program
#include <iostream>
using namespace std;
int main() {
int x = 5;
int y = ++x;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
}
Rezultat:
x = 6
y = 6
Objašnjenje korak po korak
Izvršavanje izraza y = ++x
Početna vrednost promenljive x je 5.
Operator ++x povećava x na 6.
Izraz ++x daje vrednost 6.
Promenljiva y dobija vrednost 6.
Konačno x
6
Konačno y
6
5. Postfiksni inkrement (x++)
Kod postfiksnog inkrementa operator ++ nalazi se iza promenljive.
Primer:
int x = 5;
int y = x++;
Ovde se dešava nešto drugačije.
Izraz x++ daje prethodnu vrednost promenljive x, odnosno 5.
Zato promenljiva y dobija vrednost 5.
Istovremeno se promenljiva x povećava na 6.
Konačne vrednosti su:
x = 6
y = 5
Kompletan program
#include <iostream>
using namespace std;
int main() {
int x = 5;
int y = x++;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
}
Rezultat:
x = 6
y = 5
Objašnjenje korak po korak
Izvršavanje izraza y = x++
Početna vrednost promenljive x je 5.
Izraz x++ daje prethodnu vrednost 5.
Promenljiva x povećava se na 6.
Promenljiva y dobija vrednost 5.
Konačno x
6
Konačno y
5
Važno: postfiksni operator ne znači da se povećavanje nužno dešava tek nakon cele naredbe. On znači da sam izraz daje prethodnu vrednost, dok se promena promenljive izvršava u skladu sa pravilima redosleda evaluacije C++ jezika.
6. Direktno poređenje ++x i x++
Pogledajmo oba primera jedan pored drugog.
Izraz
Početno x
Konačno x
Vrednost izraza
++x
5
6
6
x++
5
6
5
--x
5
4
4
x--
5
4
5
Ako inkrement koristimo kao samostalnu naredbu:
x++;
ili:
++x;
za običnu celobrojnu promenljivu rezultat promene vrednosti je isti.
Razlika je važna kada se vrednost samog izraza koristi u daljem računanju ili dodeli.
Interaktivni simulator prefiksnog i postfiksnog operatora
Izaberite početnu vrednost i operator. Simulator će prikazati vrednost izraza i konačnu vrednost promenljive.
Primer C++ naredbe
int y = ++x;
Nova vrednost x
6
Vrednost y
6
Prefiksni operator daje novu vrednost promenljive.
Simulator prikazuje osnovnu semantiku operatora za običnu promenljivu tipa int u bezbednom numeričkom opsegu.
7. Prefiksni dekrement (--x)
Prefiksni dekrement funkcioniše slično prefiksnom inkrementu, samo što smanjuje vrednost promenljive za jedan.
Primer:
int x = 10;
int y = --x;
Prvo se x smanjuje na 9.
Zatim se nova vrednost dodeljuje promenljivoj y.
Konačno:
x = 9
y = 9
Kompletan program
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = --x;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
}
Rezultat:
x = 9
y = 9
8. Postfiksni dekrement (x--)
Postfiksni dekrement vraća prethodnu vrednost promenljive, a samu promenljivu smanjuje za jedan.
Primer:
int x = 10;
int y = x--;
Konačno:
x = 9
y = 10
Kompletan program
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = x--;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
}
Rezultat:
x = 9
y = 10
Poređenje dva oblika dekrementa
Izraz
Početno x
Konačno x
Vrednost y
y = --x;
10
9
9
y = x--;
10
9
10
Ova tabela predstavlja jedan od najvažnijih delova lekcije.
9. Inkrement i dekrement u matematičkim izrazima
Sada kada razumemo osnovnu razliku, možemo pogledati složenije primere.
Primer 1 — prefiksni inkrement u sabiranju
int a = 5;
int b = ++a + 10;
Prvo se a povećava na 6.
Zatim se računa:
6 + 10 = 16
Konačno:
a = 6
b = 16
Primer 2 — postfiksni inkrement u sabiranju
int a = 5;
int b = a++ + 10;
Izraz a++ daje prethodnu vrednost 5.
Zato je:
b = 15
A promenljiva a nakon izvršavanja naredbe ima vrednost 6.
Primer 3 — prefiksni dekrement
int a = 8;
int b = --a * 2;
Prvo se a smanjuje na 7.
Zatim se računa:
7 * 2 = 14
Konačno:
a = 7
b = 14
Primer 4 — postfiksni dekrement
int a = 8;
int b = a-- * 2;
Izraz a-- daje prethodnu vrednost 8.
Zato je:
b = 16
Promenljiva a nakon naredbe ima vrednost 7.
Tabela rezultata
Izraz
Početno a
Konačno a
b
b = ++a + 10
5
6
16
b = a++ + 10
5
6
15
b = --a * 2
8
7
14
b = a-- * 2
8
7
16
10. Više inkremenata u jednom programu
Pogledajmo sledeći program:
#include <iostream>
using namespace std;
int main() {
int x = 5;
x++;
++x;
x++;
--x;
cout << x;
return 0;
}
Hajde da pratimo vrednost promenljive.
Naredba
Vrednost x
int x = 5;
5
x++;
6
++x;
7
x++;
8
--x;
7
Konačan rezultat:
7
Ovaj način praćenja promenljive veoma je koristan pri rešavanju ispitnih zadataka.
Preporučuje se da studenti u početku prave malu tabelu i nakon svake naredbe upisuju novu vrednost promenljive.
11. Inkrement u for petlji
Jedna od najčešćih primena inkrementa jeste rad sa petljama.
Petlje omogućavaju da se određeni deo programa izvrši više puta.
Pogledajmo jednostavan primer:
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 5; i++) {
cout << i << endl;
}
return 0;
}
Rezultat:
1
2
3
4
5
U izrazu:
for (int i = 1; i <= 5; i++)
postoje tri dela:
int i = 1 — početna vrednost brojača.
i <= 5 — uslov za nastavak petlje.
i++ — povećavanje brojača nakon svakog izvršavanja tela petlje.
Petlja se izvršava dok je uslov tačan.
Nakon svake iteracije brojač se povećava za jedan.
Da li možemo koristiti ++i?
Da.
for (int i = 1; i <= 5; ++i)
Za običnu celobrojnu promenljivu koja se koristi samo kao brojač, oba zapisa imaju isto ponašanje.
Kod složenijih tipova, poput iteratora, prefiksni oblik ponekad može biti efikasniji jer ne zahteva stvaranje prethodne vrednosti kao rezultata izraza.
12. Dekrement u for petlji
Dekrement se često koristi kada želimo da odbrojavamo.
Primer:
#include <iostream>
using namespace std;
int main() {
for (int i = 5; i >= 1; i--) {
cout << i << endl;
}
return 0;
}
Rezultat:
5
4
3
2
1
Ovaj primer može se koristiti za:
Odbrojavanje.
Obrnuti redosled.
Kretanje kroz niz unazad.
Smanjivanje broja pokušaja.
Obradu podataka od poslednjeg ka prvom.
Praktičan primer — odbrojavanje do početka igre
#include <iostream>
using namespace std;
int main() {
for (int sekunde = 5; sekunde > 0; sekunde--) {
cout << sekunde << endl;
}
cout << "START!";
return 0;
}
Rezultat:
5
4
3
2
1
START!
13. Inkrement u while petlji
Operator ++ možemo koristiti i u while petlji.
Primer:
#include <iostream>
using namespace std;
int main() {
int brojac = 1;
while (brojac <= 5) {
cout << brojac << endl;
brojac++;
}
return 0;
}
Rezultat:
1
2
3
4
5
Ovde je veoma važno da brojač povećavamo.
Ako zaboravimo:
brojac++;
a nijedna druga naredba ne promeni uslov petlje, program može ostati u beskonačnoj petlji.
To je jedna od najčešćih grešaka kod početnika.
14. Da li inkrement može da se koristi sa decimalnim brojevima?
Da, operatori ++ i -- mogu se koristiti i sa promenljivama tipa float i double.
Primer:
#include <iostream>
using namespace std;
int main() {
double broj = 2.5;
broj++;
cout << broj;
return 0;
}
Rezultat:
3.5
Operator inkrementa povećava vrednost za jedan, bez obzira na to što je početna vrednost decimalna.
Primer dekrementa:
double broj = 7.8;
broj--;
Nova vrednost je približno 6.8, uz uobičajena ograničenja predstavljanja decimalnih brojeva u računaru.
Važna napomena
Inkrement i dekrement nisu isto što i povećavanje ili smanjivanje za proizvoljnu vrednost.
Ako želimo da broj povećamo za 0.5, ne možemo koristiti ++.
Potrebno je:
broj += 0.5;
15. Inkrement i bool promenljive
U savremenom C++ jeziku operator ++ nije dozvoljen za promenljive tipa bool.
Primer:
bool aktivan = false;
aktivan++;
Ovaj kod nije ispravan u C++17 i novijim standardima.
Operator -- takođe nije dozvoljen za bool.
Logičke vrednosti treba menjati odgovarajućom dodelom:
aktivan = true;
ili negacijom:
aktivan = !aktivan;
Za brojače i numeričke operacije koristimo odgovarajuće numeričke tipove.
16. Opasni izrazi — kada se promenljiva menja više puta
Sada dolazimo do jedne od najvažnijih tema ove lekcije.
Početnici često nailaze na zadatke poput:
int x = 5;
int y = x++ + ++x;
Na prvi pogled deluje da samo treba pratiti inkremente.
Međutim, ovakav izraz ima nedefinisano ponašanje u C++ jeziku.
Razlog je to što se ista promenljiva menja više puta, a između tih promena ne postoji odgovarajuće sekvenciranje.
Zbog toga ne postoji jedan garantovan rezultat.
Različiti kompajleri, optimizacije i okruženja mogu proizvesti različito ponašanje.
Još jedan problematičan primer
int x = 5;
x = x++;
Ovaj izraz je posebno nezgodan jer njegova semantika zavisi od verzije C++ standarda. U C++17 i novijim standardima ponašanje je definisano, ali zapis je i dalje nepotrebno zbunjujući.
Za početnike je najbolje da ovakve izraze izbegavaju.
Bezbedan i čitljiv pristup
Umesto:
int y = x++ + ++x;
napišimo odvojene naredbe:
int x = 5;
int a = x++;
int b = ++x;
int y = a + b;
Sada je redosled jasan.
Prvo:
a = 5
x = 6
Zatim:
x = 7
b = 7
Na kraju:
y = 12
Kompletan program
#include <iostream>
using namespace std;
int main() {
int x = 5;
int a = x++;
int b = ++x;
int y = a + b;
cout << "x = " << x << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "y = " << y << endl;
return 0;
}
Rezultat:
x = 7
a = 5
b = 7
y = 12
Najvažnije pravilo: Nemojte pokušavati da „pogodite“ rezultat izraza koji više puta menja istu promenljivu. Najpre proverite da li je izraz uopšte ispravno definisan prema pravilima C++ jezika.
17. Razlika između prioriteta operatora i redosleda izvršavanja
Ovo je tema koju studenti često pogrešno razumeju.
Prioritet operatora određuje kako se izraz grupiše.
Međutim, prioritet sam po sebi ne određuje uvek kojim redosledom će se izvršavati sve operacije.
Pogledajmo jednostavan primer:
int x = 5;
int y = ++x * 2;
Ovde je rezultat jasan.
Prvo prefiksni inkrement menja x na 6.
Zatim se vrednost množi sa 2.
x = 6
y = 12
Ali kod izraza sa više promena iste promenljive moramo uzeti u obzir pravila sekvenciranja, a ne samo prioritet operatora.
Zato je preporučljivo da složene izraze sa inkrementom i dekrementom razdvajamo u više jednostavnih naredbi.
18. Tipični fakultetski zadaci
Zadatak 1 — povećanje broja
Napisati program koji učitava ceo broj, povećava ga za jedan i prikazuje rezultat.
#include <iostream>
using namespace std;
int main() {
int broj;
cout << "Unesite broj: ";
cin >> broj;
broj++;
cout << "Novi broj: " << broj;
return 0;
}
Primer:
Unesite broj: 15
Novi broj: 16
Zadatak 2 — smanjenje broja
Napisati program koji učitava ceo broj, smanjuje ga za jedan i prikazuje rezultat.
#include <iostream>
using namespace std;
int main() {
int broj;
cout << "Unesite broj: ";
cin >> broj;
broj--;
cout << "Novi broj: " << broj;
return 0;
}
Zadatak 3 — poređenje prefiksnog i postfiksnog inkrementa
#include <iostream>
using namespace std;
int main() {
int a = 10;
int b = 10;
int x = ++a;
int y = b++;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
return 0;
}
Rezultat:
a = 11
b = 11
x = 11
y = 10
Zadatak 4 — ispis brojeva od 1 do N
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Unesite N: ";
cin >> n;
for (int i = 1; i <= n; i++) {
cout << i << " ";
}
return 0;
}
Za N = 5 rezultat je:
1 2 3 4 5
Zadatak 5 — odbrojavanje od N do 1
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Unesite N: ";
cin >> n;
for (int i = n; i >= 1; i--) {
cout << i << " ";
}
return 0;
}
Za N = 5 rezultat je:
5 4 3 2 1
Zadatak 6 — brojanje parnih brojeva
Napisati program koji broji koliko parnih brojeva postoji u intervalu od 1 do N.
#include <iostream>
using namespace std;
int main() {
int n;
int brojac = 0;
cout << "Unesite N: ";
cin >> n;
for (int i = 1; i <= n; i++) {
if (i % 2 == 0) {
brojac++;
}
}
cout << "Broj parnih brojeva: " << brojac;
return 0;
}
Primer:
Unesite N: 10
Broj parnih brojeva: 5
Parni brojevi su:
2 4 6 8 10
Ovaj zadatak povezuje modulo operator, uslovne naredbe, petlje i inkrement.
19. Praktični projekat — brojač posetilaca
Napravimo jednostavan program koji simulira evidentiranje ulazaka i izlazaka posetilaca iz objekta.
Program će:
Početi sa nulom posetilaca.
Omogućiti evidentiranje ulaska.
Omogućiti evidentiranje izlaska.
Sprečiti da broj posetilaca postane negativan.
Prikazivati trenutno stanje.
Omogućiti završetak rada.
#include <iostream>
using namespace std;
int main() {
int posetioci = 0;
int izbor;
do {
cout << "n--- BROJAC POSETILACA ---n";
cout << "1. Ulazak posetiocan";
cout << "2. Izlazak posetiocan";
cout << "3. Prikazi trenutno stanjen";
cout << "0. Izlazn";
cout << "Izaberite opciju: ";
cin >> izbor;
if (!cin) {
cout << "Neispravan unos.";
return 1;
}
if (izbor == 1) {
posetioci++;
cout << "Evidentiran ulazak.n";
}
else if (izbor == 2) {
if (posetioci > 0) {
posetioci--;
cout << "Evidentiran izlazak.n";
}
else {
cout << "Nema posetilaca u objektu.n";
}
}
else if (izbor == 3) {
cout << "Trenutno posetilaca: "
<< posetioci << endl;
}
else if (izbor != 0) {
cout << "Nepoznata opcija.n";
}
} while (izbor != 0);
cout << "Program je zavrsen.n";
return 0;
}
Primer izvršavanja
--- BROJAC POSETILACA ---
1. Ulazak posetioca
2. Izlazak posetioca
3. Prikazi trenutno stanje
0. Izlaz
Izaberite opciju: 1
Evidentiran ulazak.
Izaberite opciju: 1
Evidentiran ulazak.
Izaberite opciju: 3
Trenutno posetilaca: 2
Izaberite opciju: 2
Evidentiran izlazak.
Izaberite opciju: 3
Trenutno posetilaca: 1
Izaberite opciju: 0
Program je zavrsen.
Ovaj projekat pokazuje kako se inkrement i dekrement koriste u stvarnim aplikacijama.
Ujedno predstavlja uvod u petlje i složenije upravljanje tokom programa.
20. Najčešće greške početnika
Greška 1 — mešanje prefiksnog i postfiksnog oblika
int x = 5;
int y = x++;
Promenljiva y dobija 5, a x postaje 6.
Ako želimo da y dobije novu vrednost, koristimo:
int y = ++x;
Greška 2 — očekivanje da se x++ povećava za više od jedan
x++;
uvek povećava vrednost za jedan, uz ograničenja numeričkog tipa.
Za povećanje za pet koristimo:
x += 5;
Greška 3 — korišćenje inkrementa nad konstantom
Pogrešno:
const int x = 5;
x++;
Konstantna promenljiva ne može se menjati.
Greška 4 — korišćenje inkrementa nad izrazom
Pogrešno:
(5 + 3)++;
Rezultat sabiranja nije promenljiva koju možemo menjati inkrementom.
Greška 5 — nedefinisano ponašanje
Problematično:
int x = 5;
int y = x++ + ++x;
Ovakav izraz ne treba koristiti.
Greška 6 — zaboravljen inkrement u petlji
int i = 1;
while (i <= 5) {
cout << i;
}
Ako se i ne menja, uslov ostaje tačan i petlja se ne završava.
Ispravno:
int i = 1;
while (i <= 5) {
cout << i;
i++;
}
Greška 7 — prekoračenje opsega
int x = INT_MAX;
x++;
Za označene celobrojne tipove prekoračenje opsega ima nedefinisano ponašanje.
U ozbiljnim programima treba proveravati granice tipova, naročito kada brojači mogu dostići velike vrednosti.
21. Zaključak
U ovoj lekciji detaljno smo upoznali inkrement i dekrement.
Naučili smo da:
++ povećava vrednost promenljive za jedan.
-- smanjuje vrednost promenljive za jedan.
Prefiksni oblik menja promenljivu i kao vrednost izraza daje novu vrednost.
Postfiksni oblik kao vrednost izraza daje prethodnu vrednost, dok promenljivu takođe menja.
Inkrement i dekrement posebno su korisni u petljama i brojačima.
Složene izraze sa više promena iste promenljive treba izbegavati.
Prioritet operatora nije isto što i redosled evaluacije.
Najvažnije je zapamtiti:
Izraz
Vrednost izraza
Promena promenljive
++x
Nova vrednost
+1
x++
Prethodna vrednost
+1
--x
Nova vrednost
-1
x--
Prethodna vrednost
-1
Razumevanje razlike između prefiksnog i postfiksnog oblika predstavlja jednu od važnih osnova za pravilno čitanje i pisanje C++ programa.
Ovo znanje koristićemo u narednim lekcijama, posebno kada budemo detaljno obrađivali uslovne naredbe, petlje i algoritme.
22. Mini-test — proverite svoje znanje
Pokušajte da odgovorite bez pokretanja programa.
Pitanje 1. Šta radi operator ++?
a) Povećava vrednost za 2.
b) Povećava vrednost za 1.
c) Smanjuje vrednost za 1.
Pitanje 2. Koliko iznosi x?
int x = 5;
x++;
a) 4
b) 5
c) 6
Pitanje 3. Koliko iznosi y?
int x = 5;
int y = ++x;
a) 5
b) 6
c) 7
Pitanje 4. Koliko iznosi y?
int x = 5;
int y = x++;
a) 5
b) 6
c) 7
Pitanje 5. Šta radi operator --?
a) Smanjuje vrednost za jedan.
b) Povećava vrednost za jedan.
c) Proverava jednakost.
Pitanje 6. Koliko iznosi y?
int x = 10;
int y = --x;
a) 10
b) 9
c) 11
Pitanje 7. Koliko iznosi y?
int x = 10;
int y = x--;
a) 10
b) 9
c) 11
Pitanje 8. Da li su x++ i ++x uvek potpuno isti?
a) Da.
b) Ne, razlikuje se vrednost samog izraza.
Pitanje 9. Šta nije u redu sa izrazom?
int x = 5;
int y = x++ + ++x;
a) Nema problema.
b) Izraz ima nedefinisano ponašanje.
c) Uvek daje 12.
Pitanje 10. Šta će ispisati program?
int x = 3;
x++;
++x;
x--;
cout << x;
a) 3
b) 4
c) 5
Rešenja mini-testa
Proverite odgovore nakon što završite test.
Prikaži rešenja
23. Zadaci za samostalnu vežbu
Zadatak 1 — Jednostavan inkrement
Napisati program koji učitava broj i povećava ga za jedan.
Zadatak 2 — Jednostavan dekrement
Napisati program koji učitava broj i smanjuje ga za jedan.
Zadatak 3 — Prefiksni inkrement
Napisati program koji demonstrira razliku između početne i nove vrednosti promenljive pomoću ++x.
Zadatak 4 — Postfiksni inkrement
Napisati program koji koristi x++ u dodeli drugoj promenljivoj i prikazuje obe vrednosti.
Zadatak 5 — Prefiksni i postfiksni dekrement
Napisati program koji prikazuje razliku između --x i x--.
Zadatak 6 — Brojevi od 1 do N
Napisati program koji pomoću for petlje ispisuje sve brojeve od 1 do N.
Zadatak 7 — Obrnuto odbrojavanje
Napisati program koji ispisuje brojeve od N do 1 koristeći dekrement.
Zadatak 8 — Brojanje parnih brojeva
Napisati program koji broji koliko parnih brojeva postoji u intervalu od 1 do N.
Zadatak 9 — Brojanje neparnih brojeva
Napisati program koji broji koliko neparnih brojeva postoji u intervalu od 1 do N.
Zadatak 10 — Praćenje promenljive
Odrediti konačne vrednosti promenljivih:
int x = 5;
int a = x++;
int b = ++x;
int c = x--;
cout << x << " " << a << " " << b << " " << c;
Zadatak rešiti prvo ručno, a zatim proveriti rezultat pokretanjem programa.
24. Domaći zadatak — sistem za evidenciju ulazaka i izlazaka
Napraviti C++ program koji simulira evidenciju posetilaca u jednom objektu.
Program treba da omogući:
Evidentiranje ulaska posetioca.
Evidentiranje izlaska posetioca.
Prikaz trenutnog broja posetilaca.
Prikaz ukupnog broja evidentiranih ulazaka.
Prikaz ukupnog broja evidentiranih izlazaka.
Resetovanje statistike uz odgovarajuću potvrdu.
Završetak rada programa.
Koristiti:
++ za evidentiranje ulaska.
-- za evidentiranje izlaska.
if i else za proveru uslova.
while ili do-while za ponavljanje menija.
cout i cin za komunikaciju sa korisnikom.
Program ne sme dozvoliti da trenutni broj posetilaca postane negativan.
Dodatni izazov: omogućiti definisanje maksimalnog kapaciteta objekta. Kada je kapacitet popunjen, program ne treba da dozvoli novi ulazak.
Najava naredne lekcije
U sledećoj lekciji prelazimo na važnu oblast kontrole toka programa.
Tema 27 — Prioritet operatora i redosled izvršavanja izraza u C++
Naučićemo kako C++ grupiše složene izraze, koji operatori imaju prednost, kako se koriste zagrade i zbog čega prioritet operatora ne treba mešati sa redosledom evaluacije.
U prethodnim lekcijama našeg serijala „Mala škola programiranja — C++“ naučili smo kako program donosi odluke pomoću naredbi if, if-else i else if. Videli…
U prethodnoj lekciji naučili smo kako se koristi uslovna naredba if u programskom jeziku C++. Videli smo da ona omogućava programu da proveri određeni…
Do sada smo u našem serijalu „Mala škola programiranja — C++“ naučili kako da definišemo promenljive, unosimo i ispisujemo podatke, koristimo različite tipove podataka,…
Koristimo neophodne kolačiće da bi sajt i forme za upit ispravno radili, a uz vašu dozvolu i opcionalne kolačiće za analitiku, personalizaciju i marketing. Saznajte više.
PRIVATNOST
Podešavanja kolačića
Izaberite koje opcionalne kategorije dozvoljavate. Neophodni kolačići su uvek aktivni jer su potrebni za rad sajta, slanje upita i bezbednost.
NeophodniOmogućavaju osnovne funkcije sajta i zaštitu formi i ne mogu se isključiti.
FunkcionalniPamte vaša podešavanja, kao što su izabrani jezik prevoda i svetla ili tamna tema.
AnalitičkiPomažu nam da razumemo posećenost i način korišćenja sajta.
MarketinškiKoriste se za merenje kampanja i relevantnije oglase.