Više o Roster Softu
Sve usluge
Sva gotova rešenja
Svi članci

25. Operator dodele i kombinovani operatori u C++ (=, +=, -=, *=, /=, %=)

U prethodnim lekcijama naučili smo kako da koristimo aritmetičke operatore, upoređujemo vrednosti i kombinujemo više logičkih uslova. Sada prelazimo na još jednu važnu oblast C++ programiranja — operatore dodele. Svaki program mora da čuva podatke, ali i da ih menja tokom izvršavanja. Zamislimo nekoliko svakodnevnih situacija: U bankarskoj aplikaciji stanje računa povećava se nakon uplate. […]

Mala škola C++Lekcija 25 od 30
U prethodnim lekcijama naučili smo kako da koristimo aritmetičke operatore, upoređujemo vrednosti i kombinujemo više logičkih uslova. Sada prelazimo na još jednu važnu oblast C++ programiranja — operatore dodele. Svaki program mora da čuva podatke, ali i da ih menja tokom izvršavanja. Zamislimo nekoliko svakodnevnih situacija:
  • U bankarskoj aplikaciji stanje računa povećava se nakon uplate.
  • U internet prodavnici stanje magacina smanjuje se nakon prodaje proizvoda.
  • U video-igri igrač dobija dodatne poene.
  • U školskom informacionom sistemu sabiraju se poeni sa različitih testova.
  • U poslovnoj aplikaciji obračunava se popust ili povećanje cene.
  • U programu za statistiku prikupljaju se i sabiraju rezultati merenja.
U svim ovim primerima vrednost neke promenljive menja se tokom rada programa. Za takve operacije koristimo operator dodele = i njegove kombinovane oblike:
+=
-=
*=
/=
%=
Na prvi pogled deluju kao jednostavne skraćenice, ali njihovo pravilno razumevanje izuzetno je važno za kasnije učenje petlji, nizova, funkcija i algoritama. U ovoj lekciji naučićemo kako funkcionišu operatori dodele, kako se razlikuju od operatora poređenja, kako se koriste u praktičnim zadacima i koje greške početnici najčešće prave.

Šta ćemo naučiti u ovoj lekciji?

Nakon završetka lekcije znaćete da:
  • Objasnite šta je dodela vrednosti u C++ jeziku.
  • Razlikujete inicijalizaciju od naknadne dodele vrednosti.
  • Razlikujete operatore = i ==.
  • Koristite kombinovane operatore +=, -=, *=, /= i %=.
  • Razumete kako se menjaju vrednosti promenljivih u memoriji.
  • Pravilno koristite operatore dodele sa celim i decimalnim brojevima.
  • Objasnite redosled izvršavanja i složene izraze dodele.
  • Prepoznate implicitne konverzije i moguće gubitke podataka.
  • Samostalno rešavate tipične fakultetske zadatke.

1. Šta je operator dodele?

Operator dodele omogućava da promenljivoj dodelimo određenu vrednost. Osnovni operator dodele je:
=
Primer:
int broj = 10;
Ovom naredbom kreiramo promenljivu broj i inicijalizujemo je vrednošću 10. Kasnije možemo promeniti njenu vrednost:
broj = 25;
Sada promenljiva više ne sadrži 10, već 25. Pogledajmo kompletan primer:
#include <iostream>
using namespace std;

int main() {
    int broj = 10;

    cout << "Pocetna vrednost: " << broj << endl;

    broj = 25;

    cout << "Nova vrednost: " << broj << endl;

    return 0;
}
Rezultat:
Pocetna vrednost: 10
Nova vrednost: 25
Važno je razumeti da operator dodele ne predstavlja matematičku jednakost. U matematici izraz:
[ x = 10 ]
predstavlja tvrdnju da je x jednako 10. U C++ jeziku:
x = 10;
predstavlja naredbu kojom promenljivoj x dodeljujemo vrednost 10.
Operator dodele u C++

2. Kako dodela vrednosti funkcioniše u memoriji?

Kada napišemo:
int broj = 5;
program kreira promenljivu tipa int i čuva vrednost 5 u odgovarajućem memorijskom prostoru. Ako zatim napišemo:
broj = 12;
vrednost promenljive postaje 12. Možemo to zamisliti ovako:
VIZUELNI PRIMER PROMENE VREDNOSTI
Pre dodele

5

broj
Posle dodele

12

broj
broj = 12; menja vrednost postojeće promenljive.
Dodela ne kreira novu promenljivu. Ona menja vrednost već postojeće promenljive.

Razlika između deklaracije, inicijalizacije i dodele

Ove pojmove studenti često mešaju. Deklaracija:
int broj;
U ovom primeru deklarisana je promenljiva tipa int, bez eksplicitne početne vrednosti. Inicijalizacija:
int broj = 10;
Promenljiva se kreira i dobija početnu vrednost. Naknadna dodela:
broj = 20;
Menjamo vrednost već postojeće promenljive. Ako lokalnu promenljivu tipa int deklarišemo bez inicijalizacije, ne smemo pretpostaviti da je njena vrednost nula. Njeno čitanje pre dodeljivanja validne vrednosti nije bezbedno i može dovesti do nedefinisanog ili drugog nepoželjnog ponašanja, zavisno od standarda i konteksta.

3. Razlika između operatora = i ==

U prethodnoj lekciji već smo upoznali operator jednakosti ==. Sada je važno da jasno razlikujemo ova dva operatora.
Operator Značenje Primer
= Dodela vrednosti x = 10;
== Provera jednakosti x == 10
Primer:
int x = 5;

x = 10;
Druga naredba menja vrednost promenljive. Ali:
bool rezultat = (x == 10);
proverava da li promenljiva ima vrednost 10.

Česta početnička greška

int x = 5;

if (x = 10) {
    cout << "Uslov je ispunjen.";
}
Ovaj kod može uspešno da se kompajlira, ali ne radi ono što je programer verovatno želeo. Izraz:
x = 10
dodeljuje vrednost 10 promenljivoj x. Zatim se rezultat dodele koristi kao logički uslov. Pošto je 10 različito od nule, uslov se smatra tačnim. Ispravno poređenje je:
if (x == 10) {
    cout << "Uslov je ispunjen.";
}
Razlika između operatora dodele i poređenja u C++

4. Šta su kombinovani operatori dodele?

Kombinovani operatori dodele omogućavaju da neku aritmetičku operaciju i dodelu rezultata napišemo kraće. Pogledajmo primer:
int broj = 10;

broj = broj + 5;
Ovim povećavamo vrednost promenljive broj za 5. Rezultat je 15. Istu operaciju možemo zapisati jednostavnije:
broj += 5;
Oba primera u ovom slučaju daju isti rezultat. Kombinovani operatori dodele posebno su korisni kada često menjamo vrednost iste promenljive.

Pregled osnovnih kombinovanih operatora

Operator Primer Ekvivalentan zapis
+= x += 5; x = x + 5;
-= x -= 3; x = x - 3;
*= x *= 2; x = x * 2;
/= x /= 4; x = x / 4;
%= x %= 3; x = x % 3;
Ovi zapisi su veoma česti u C++ programima. Važno je da navedena ekvivalentnost predstavlja pojednostavljenje za obične promenljive. U opštem slučaju složena dodela izračunava levi operand samo jednom, što može biti značajno kod složenijih izraza.

5. Operator sabiranja i dodele (+=)

Operator += povećava vrednost promenljive za zadati iznos. Primer:
int poeni = 10;

poeni += 5;
Rezultat:
15
Isto bismo mogli napisati:
poeni = poeni + 5;

Praktičan primer — skupljanje poena u igri

#include <iostream>
using namespace std;

int main() {
    int poeni = 0;

    poeni += 10;
    poeni += 20;
    poeni += 5;

    cout << "Ukupno poena: " << poeni;

    return 0;
}
Rezultat:
Ukupno poena: 35
Program počinje sa nulom, a zatim postepeno povećava broj poena. Ovakav način rada naziva se akumulacija vrednosti. Akumulacija se veoma često koristi u petljama, prilikom sabiranja elemenata nizova, računanja ukupnih iznosa i obrade podataka.

Operator += sa stringovima

Operator += ne koristi se samo sa brojevima. Možemo ga koristiti i za nadovezivanje teksta kod tipa std::string.
#include <iostream>
#include <string>
using namespace std;

int main() {
    string poruka = "Dobro";

    poruka += " dosli";
    poruka += " u C++!";

    cout << poruka;

    return 0;
}
Rezultat:
Dobro dosli u C++!
Ovo je primer konkatenacije, odnosno spajanja tekstualnih vrednosti.
Operator sabiranja i dodele u C++

6. Operator oduzimanja i dodele (-=)

Operator -= smanjuje vrednost promenljive za zadati iznos. Primer:
int stanje = 100;

stanje -= 30;
Rezultat:
70
Isto kao:
stanje = stanje - 30;

Praktičan primer — stanje magacina

Zamislimo da internet prodavnica ima 50 komada nekog proizvoda. Kupac naručuje 8 komada.
#include <iostream>
using namespace std;

int main() {
    int stanje = 50;
    int prodato = 8;

    stanje -= prodato;

    cout << "Preostalo proizvoda: " << stanje;

    return 0;
}
Rezultat:
Preostalo proizvoda: 42
U stvarnoj aplikaciji prethodno bismo proverili da li na stanju postoji dovoljno proizvoda. Operator -= često se koristi za:
  • Smanjenje stanja zaliha.
  • Oduzimanje poena.
  • Praćenje preostalog vremena.
  • Smanjenje broja pokušaja.
  • Evidentiranje potrošnje resursa.

7. Operator množenja i dodele (*=)

Operator *= množi postojeću vrednost promenljive zadatim brojem i rezultat vraća u istu promenljivu. Primer:
int broj = 6;

broj *= 3;
Rezultat:
18
Ekvivalentno:
broj = broj * 3;

Praktičan primer — povećanje proizvodnje

Pretpostavimo da proizvodnja iznosi 120 jedinica, a zatim se udvostručuje.
#include <iostream>
using namespace std;

int main() {
    int proizvodnja = 120;

    proizvodnja *= 2;

    cout << "Nova proizvodnja: " << proizvodnja;

    return 0;
}
Rezultat:
Nova proizvodnja: 240

Primer — povećanje cene za 10%

Ako želimo da povećamo cenu za 10%, možemo koristiti faktor 1.10.
#include <iostream>
using namespace std;

int main() {
    double cena = 2000.0;

    cena *= 1.10;

    cout << "Nova cena: " << cena;

    return 0;
}
Rezultat:
Nova cena: 2200
Ovo je korisno u kalkulacijama, obračunu procentualnih promena i matematičkim algoritmima.

8. Operator deljenja i dodele (/=)

Operator /= deli postojeću vrednost promenljive zadatim brojem. Primer:
int broj = 20;

broj /= 4;
Rezultat:
5
Isto kao:
broj = broj / 4;

Važna razlika između int i double

Pogledajmo:
int broj = 7;

broj /= 2;
Rezultat:
3
Zašto nije 3.5? Zato što su oba operanda celobrojna, pa se izvršava celobrojno deljenje. Sada pogledajmo:
double broj = 7;

broj /= 2;
Rezultat:
3.5
Pošto je promenljiva tipa double, deljenje se obavlja u decimalnoj aritmetici.

Primer — podela ukupnog iznosa

#include <iostream>
using namespace std;

int main() {
    double ukupno = 1500.0;
    int brojOsoba = 4;

    ukupno /= brojOsoba;

    cout << "Iznos po osobi: " << ukupno;

    return 0;
}
Rezultat:
Iznos po osobi: 375
Važno: Delilac ne sme biti nula. Celobrojno deljenje nulom ima nedefinisano ponašanje, a rezultat decimalnog deljenja nulom zavisi od podržane aritmetike i okruženja. U pouzdanim programima delilac treba proveriti pre operacije.

9. Operator ostatka i dodele (%=)

Operator %= računa ostatak pri celobrojnom deljenju i dodeljuje ga istoj promenljivoj. Primer:
int broj = 17;

broj %= 5;
Rezultat:
2
Jer:
17 % 5 = 2
Ekvivalentno:
broj = broj % 5;

Praktičan primer — ciklični brojač

Zamislimo brojač koji treba da se kreće kroz vrednosti od 0 do 6.
#include <iostream>
using namespace std;

int main() {
    int dan = 6;

    dan += 1;
    dan %= 7;

    cout << "Novi indeks dana: " << dan;

    return 0;
}
Rezultat:
Novi indeks dana: 0
Pošto je:
7 % 7 = 0
brojač se vraća na početak. Ovo je veoma korisno za kružne sisteme, rad sa indeksima i ponavljajuće obrasce. Operator %= koristi se samo sa celobrojnim operandima.
Operator ostatka i dodele u C++

10. Interaktivni primer — kako operatori menjaju vrednost?

Pomoću sledećeg primera možete proveriti kako različiti operatori menjaju početnu vrednost promenljive.
C++ simulator kombinovanih operatora
C++ izraz

x += 5;

Nova vrednost promenljive x

25

Simulator prikazuje numeričku računicu. Za decimalne vrednosti pretpostavlja se tip double; kod int promenljivih deljenje i konverzije mogu dati drugačiji rezultat.

11. Razlika između obične i kombinovane dodele

Pogledajmo sledeći program:
#include <iostream>
using namespace std;

int main() {
    int a = 10;
    int b = 10;

    a = a + 5;
    b += 5;

    cout << "a = " << a << endl;
    cout << "b = " << b << endl;

    return 0;
}
Rezultat:
a = 15
b = 15
Za obične promenljive i jednostavne izraze, oba pristupa daju isti rezultat. Međutim, kombinovana dodela ima nekoliko prednosti:
  • Kod je kraći.
  • Jasno pokazuje da menjamo postojeću vrednost.
  • Pogodna je za akumulaciju i brojače.
  • Levi operand se izračunava samo jednom.
Posebno je korisna u petljama:
int zbir = 0;

for (int i = 1; i <= 5; i++) {
    zbir += i;
}
Na kraju promenljiva zbir ima vrednost 15. Petlje ćemo detaljnije obrađivati u kasnijim lekcijama, ali već sada možemo razumeti ulogu operatora +=.

12. Redosled izvršavanja operatora dodele

Operatori dodele imaju nizak prioritet u odnosu na većinu aritmetičkih operatora. Primer:
int x;

x = 5 + 3 * 2;
Prvo se izvršava množenje:
3 * 2 = 6
Zatim sabiranje:
5 + 6 = 11
Na kraju se vrednost 11 dodeljuje promenljivoj x.

Dodela zdesna nalevo

Operatori dodele imaju desnu asocijativnost. Pogledajmo:
int a, b, c;

a = b = c = 10;
Ovaj izraz se grupiše kao:
a = (b = (c = 10));
Na kraju sve tri promenljive imaju vrednost 10. Kompletan primer:
#include <iostream>
using namespace std;

int main() {
    int a, b, c;

    a = b = c = 10;

    cout << a << endl;
    cout << b << endl;
    cout << c << endl;

    return 0;
}
Rezultat:
10
10
10
Ovo se naziva lančana dodela.

Dodela kao izraz

U C++ jeziku dodela je izraz koji ima rezultat. Zato je moguće napisati:
int a = 0;
int b = 0;

a = (b = 5);
Na kraju obe promenljive imaju vrednost 5. Iako je ovakav zapis dozvoljen, početnicima je često preglednije da složenije dodele razdvoje u više naredbi.

13. Kombinovana dodela i konverzija tipova

Ovo je veoma važna tema jer kombinovani operatori mogu dovesti do gubitka podataka. Pogledajmo primer:
int broj = 10;

broj += 2.5;
Šta će biti rezultat? Rezultat je 12, a ne 12.5. Zašto? Prilikom računanja koristi se decimalna vrednost, ali se rezultat zatim dodeljuje promenljivoj tipa int. Decimalni deo se odbacuje.

Kompletan primer

#include <iostream>
using namespace std;

int main() {
    int broj = 10;

    broj += 2.5;

    cout << broj;

    return 0;
}
Rezultat:
12
Ako želimo da sačuvamo decimalni deo, promenljiva treba da bude odgovarajućeg tipa.
double broj = 10;

broj += 2.5;
Rezultat:
12.5

Posebna zamka sa operatorom *=

int broj = 7;

broj *= 1.5;
Matematički:
7 * 1.5 = 10.5
Ali pošto je broj tipa int, rezultat dodele je 10. Ovakve greške mogu biti posebno problematične u finansijskim obračunima, statistici i programima za obradu merenja.
Konverzija tipova kod kombinovanih operatora u C++

14. Operatori dodele i const promenljive

U prethodnim lekcijama upoznali smo promenljive i njihov životni vek. Sada je važno da znamo da nije svakoj promenljivoj dozvoljeno naknadno menjanje vrednosti. Ako promenljivu definišemo pomoću const, njena vrednost ne može se menjati kroz tu promenljivu nakon inicijalizacije. Primer:
const int maksimalniPoeni = 100;
Sledeći pokušaj nije dozvoljen:
maksimalniPoeni = 120;
Kompajler će prijaviti grešku. Isto važi i za kombinovanu dodelu:
maksimalniPoeni += 10;
Ovo takođe nije dozvoljeno. Konstante su korisne za vrednosti koje ne želimo slučajno da promenimo tokom izvršavanja programa.

15. Tipični fakultetski zadaci

Zadatak 1 — Povećanje broja za zadatu vrednost

Napisati program koji učitava dva cela broja i prvi povećava za vrednost drugog.
#include <iostream>
using namespace std;

int main() {
    int a, b;

    cout << "Unesite dva broja: ";
    cin >> a >> b;

    a += b;

    cout << "Nova vrednost prvog broja: " << a;

    return 0;
}
Primer:
Unesite dva broja: 12 8
Nova vrednost prvog broja: 20

Zadatak 2 — Smanjenje stanja računa

Napisati program koji učitava stanje računa i iznos isplate, proverava da li je isplata moguća i zatim smanjuje stanje. Radi jednostavnosti, iznosi su predstavljeni celim dinarima.
#include <iostream>
using namespace std;

int main() {
    long long stanje;
    long long isplata;

    cout << "Stanje racuna: ";
    cin >> stanje;

    cout << "Iznos isplate: ";
    cin >> isplata;

    if (!cin || stanje < 0 || isplata <= 0) {
        cout << "Neispravan unos.";
        return 1;
    }

    if (isplata <= stanje) {
        stanje -= isplata;
        cout << "Novo stanje: " << stanje;
    }
    else {
        cout << "Nedovoljno sredstava.";
    }

    return 0;
}

Zadatak 3 — Udvostručavanje broja

Napisati program koji učitava broj i množi ga sa 2 koristeći kombinovani operator dodele.
#include <iostream>
using namespace std;

int main() {
    int broj;

    cout << "Unesite broj: ";
    cin >> broj;

    broj *= 2;

    cout << "Rezultat: " << broj;

    return 0;
}
Za dovoljno velike ulazne vrednosti može doći do prekoračenja opsega tipa int, pa u ozbiljnim programima treba proveriti dozvoljeni opseg pre množenja.

Zadatak 4 — Ostatak pri deljenju

Napisati program koji učitava dva cela broja i pomoću operatora %= računa ostatak pri deljenju prvog drugim.
#include <iostream>
using namespace std;

int main() {
    int a, b;

    cout << "Unesite dva broja: ";
    cin >> a >> b;

    if (!cin || b == 0) {
        cout << "Neispravan unos ili deljenje nulom.";
        return 1;
    }

    a %= b;

    cout << "Ostatak: " << a;

    return 0;
}

Zadatak 5 — Ukupan zbir pet brojeva

Napisati program koji učitava pet celih brojeva i sabira ih pomoću operatora +=.
#include <iostream>
using namespace std;

int main() {
    int broj;
    int zbir = 0;

    for (int i = 1; i <= 5; i++) {
        cout << "Unesite broj " << i << ": ";
        cin >> broj;

        if (!cin) {
            cout << "Neispravan unos.";
            return 1;
        }

        zbir += broj;
    }

    cout << "Ukupan zbir: " << zbir;

    return 0;
}
Ovaj zadatak povezuje operatore dodele i petlje. Koristimo for petlju kako bismo izbegli ponavljanje iste naredbe pet puta.
Evidencija magacina pomoću kombinovanih operatora u C++

16. Najčešće greške početnika

Greška 1 — Korišćenje promenljive pre inicijalizacije

Pogrešno:
int zbir;

zbir += 5;
Lokalna promenljiva zbir nema definisanu početnu vrednost. Ispravno:
int zbir = 0;

zbir += 5;
Kod akumulacije je posebno važno da promenljiva ima odgovarajuću početnu vrednost.

Greška 2 — Mešanje dodele i poređenja

Pogrešno:
if (broj = 10)
Ispravno:
if (broj == 10)

Greška 3 — Pogrešno očekivanje kod celobrojnog deljenja

int broj = 9;

broj /= 2;
Rezultat je 4, a ne 4.5.

Greška 4 — Deljenje nulom

int broj = 10;

broj /= 0;
Ovakav kod nije ispravan za bezbedno izvršavanje. Pre deljenja proverite delilac.

Greška 5 — Korišćenje %= sa decimalnim brojevima

Pogrešno:
double broj = 10.5;

broj %= 3;
Operator %= nije definisan za decimalne tipove.

Greška 6 — Gubitak decimalnog dela

int cena = 100;

cena *= 1.15;
Rezultat dodele je 114, jer proizvod 100 * 1.15 u binarnoj aritmetici može biti predstavljen neznatno ispod 115, a konverzija u int odbacuje decimalni deo. Za ovakve obračune treba koristiti odgovarajuće tipove i eksplicitna pravila zaokruživanja.

Greška 7 — Prekoračenje opsega tipa

int broj = 2000000000;

broj *= 2;
Na uobičajenom 32-bitnom tipu int, rezultat ne može da stane u dozvoljeni opseg. Prekoračenje opsega označenog celobrojnog tipa ima nedefinisano ponašanje.

17. Praktični projekat — jednostavna evidencija magacina

Za kraj praktičnog dela napravićemo program koji simulira osnovne promene stanja proizvoda u magacinu. Program će:
  1. Učitati naziv proizvoda.
  2. Učitati početno stanje.
  3. Učitati količinu primljene robe.
  4. Povećati stanje pomoću +=.
  5. Učitati količinu prodate robe.
  6. Proveriti da li postoji dovoljno robe.
  7. Smanjiti stanje pomoću -=.
  8. Prikazati završno stanje.
#include <iostream>
#include <string>
using namespace std;

int main() {
    string proizvod;
    int stanje;
    int primljeno;
    int prodato;

    cout << "Naziv proizvoda: ";
    getline(cin, proizvod);

    cout << "Pocetno stanje: ";
    cin >> stanje;

    cout << "Primljena kolicina: ";
    cin >> primljeno;

    if (!cin || stanje < 0 || primljeno < 0) {
        cout << "Neispravan unos.";
        return 1;
    }

    stanje += primljeno;

    cout << "Kolicina za prodaju: ";
    cin >> prodato;

    if (!cin || prodato < 0) {
        cout << "Neispravna kolicina.";
        return 1;
    }

    if (prodato <= stanje) {
        stanje -= prodato;
    }
    else {
        cout << "Nema dovoljno robe na stanju." << endl;
    }

    cout << "n--- IZVESTAJ MAGACINA ---n";
    cout << "Proizvod: " << proizvod << endl;
    cout << "Zavrsno stanje: " << stanje << endl;

    return 0;
}
Primer izvršavanja:
Naziv proizvoda: Monitor
Pocetno stanje: 20
Primljena kolicina: 15
Kolicina za prodaju: 8

--- IZVESTAJ MAGACINA ---
Proizvod: Monitor
Zavrsno stanje: 27
Program prvo povećava stanje sa 20 na 35, a zatim ga smanjuje za 8. Ovaj jednostavan primer pokazuje kako se kombinovani operatori koriste u stvarnim poslovnim aplikacijama. U ozbiljnom magacinskom softveru bilo bi potrebno dodati dodatne provere, rad sa bazom podataka, evidenciju dokumenata i zaštitu od istovremenih izmena stanja.

18. Gde se operatori dodele koriste u stvarnim aplikacijama?

Operatori dodele prisutni su praktično u svim oblastima razvoja softvera. Bankarski sistemi
stanje += uplata;
stanje -= isplata;
Internet prodavnice
stanjeMagacina -= prodataKolicina;
Video-igre
poeni += 100;
zivoti -= 1;
Statistika
ukupanZbir += vrednost;
Obračun procentualnih promena
cena *= 1.10;
Obrada podataka
brojac += 1;
Kružni brojači
indeks += 1;
indeks %= velicina;
U poslednjem primeru pretpostavlja se da je velicina pozitivan ceo broj. Ovi primeri pokazuju da kombinovani operatori nisu samo kraći način pisanja koda, već veoma važan alat za upravljanje promenljivim podacima.

19. Zaključak

U ovoj lekciji naučili smo kako se vrednosti promenljivih menjaju pomoću operatora dodele. Upoznali smo osnovni operator:
=
i kombinovane operatore:
+=
-=
*=
/=
%=
Najvažnije je zapamtiti sledeće:
  • Operator = dodeljuje vrednost promenljivoj.
  • Operator == proverava jednakost dve vrednosti.
  • Kombinovani operatori omogućavaju kraći zapis aritmetičkih operacija sa dodelom.
  • Kod celobrojnih tipova može doći do odbacivanja decimalnog dela.
  • Deljenje i računanje ostatka zahtevaju proveru da delilac nije nula.
  • Promenljive koje koristimo za akumulaciju moraju biti pravilno inicijalizovane.
  • Promenljive deklarisane kao const ne mogu se naknadno menjati.
Dobro razumevanje operatora dodele omogućava nam da pravilno upravljamo podacima tokom izvršavanja programa. Ovo znanje biće posebno važno kada počnemo da radimo sa petljama, brojačima, nizovima i složenijim algoritmima.

20. Mini-test — proverite svoje znanje

Pokušajte da odgovorite na sledeća pitanja bez pokretanja programa. Pitanje 1. Koji operator služi za dodelu vrednosti? a) == b) = c) != Pitanje 2. Šta će ispisati sledeći kod?
int x = 10;
x += 5;

cout << x;
a) 10 b) 15 c) 5 Pitanje 3. Šta znači operator -=? a) Povećava vrednost. b) Smanjuje vrednost za zadati iznos. c) Proverava jednakost. Pitanje 4. Koliko iznosi x nakon izvršavanja?
int x = 6;
x *= 3;
a) 9 b) 18 c) 3 Pitanje 5. Šta će biti rezultat?
int x = 9;
x /= 2;

cout << x;
a) 4 b) 4.5 c) 5 Pitanje 6. Šta radi operator %=? a) Računa procenat. b) Računa ostatak pri celobrojnom deljenju i dodeljuje rezultat. c) Množi vrednost. Pitanje 7. Koliko iznosi x?
int x = 17;
x %= 5;
a) 3 b) 2 c) 5 Pitanje 8. Šta je problem u sledećem kodu?
int zbir;
zbir += 10;
a) Nema problema. b) Promenljiva nije inicijalizovana. c) Operator += ne postoji. Pitanje 9. Koja tvrdnja je tačna? a) x += 5 uvek znači da se kreira nova promenljiva. b) x += 5 menja vrednost postojeće promenljive. c) x += 5 poredi dve vrednosti. Pitanje 10. Šta će biti rezultat?
int a, b, c;
a = b = c = 7;

cout << a + b + c;
a) 7 b) 14 c) 21

Rešenja mini-testa

Proverite odgovore nakon što završite test.
Pitanje Tačan odgovor
1 b — Operator dodele je =.
2 b — 10 + 5 = 15.
3 b — Operator -= oduzima i dodeljuje.
4 b — 6 × 3 = 18.
5 a — Celobrojno deljenje daje 4.
6 b — Računa se ostatak pri deljenju.
7 b — 17 % 5 = 2.
8 b — Promenljiva nema početnu vrednost.
9 b — Menja se postojeća promenljiva.
10 c — 7 + 7 + 7 = 21.

21. Zadaci za samostalnu vežbu

Zadatak 1 — Povećanje vrednosti Napisati program koji učitava ceo broj i povećava ga za 15 koristeći +=. Zadatak 2 — Smanjenje vrednosti Napisati program koji učitava ceo broj i smanjuje ga za 7 koristeći -=. Zadatak 3 — Množenje Napisati program koji učitava broj i množi ga sa 4 koristeći *=. Zadatak 4 — Deljenje Napisati program koji učitava decimalni broj i deli ga sa 3 koristeći /=. Zadatak 5 — Ostatak pri deljenju Napisati program koji učitava dva cela broja i računa ostatak pomoću %=. Zadatak 6 — Sabiranje pet brojeva Napisati program koji učitava pet brojeva i sabira ih pomoću operatora +=. Zadatak 7 — Poeni u igri Igrač počinje sa 100 poena. Zatim dobija 50 poena, gubi 20 i na kraju mu se rezultat udvostručuje. Koristiti kombinovane operatore dodele. Zadatak 8 — Magacinsko stanje Napisati program koji evidentira prijem i prodaju robe i prikazuje završno stanje. Zadatak 9 — Procentualno povećanje Napisati program koji učitava cenu proizvoda i povećava je za 12%. Zadatak 10 — Lančana dodela Napisati program koji pomoću jedne naredbe dodeljuje istu vrednost trima promenljivama i zatim ih ispisuje.

22. Domaći zadatak — kalkulator poslovnih promena

Napraviti C++ program koji simulira jednostavnu evidenciju poslovnih promena. Program treba da omogući unos:
  • Naziva poslovne jedinice.
  • Početnog stanja sredstava.
  • Iznosa prve uplate.
  • Iznosa druge uplate.
  • Iznosa prve isplate.
  • Iznosa druge isplate.
  • Procenta povećanja sredstava.
Zatim treba izvršiti sledeće operacije:
  1. Povećati stanje za prvu uplatu koristeći +=.
  2. Povećati stanje za drugu uplatu koristeći +=.
  3. Smanjiti stanje za prvu isplatu koristeći -=.
  4. Smanjiti stanje za drugu isplatu koristeći -=.
  5. Primeniti procentualno povećanje koristeći *=.
  6. Prikazati konačno stanje.
Program mora proveriti da su svi iznosi nenegativni i da isplate ne premašuju raspoloživo stanje. Procenat povećanja takođe treba da bude nenegativan. Za potrebe vežbe koristiti double, uz napomenu da u stvarnim finansijskim sistemima treba koristiti precizno definisan način predstavljanja i zaokruživanja novčanih iznosa. Dodatni izazov: omogućite korisniku da bira vrstu operacije i da više puta menja stanje dok ne odluči da završi rad programa.

Najava naredne lekcije

U sledećoj lekciji nastavljamo sa operatorima koji menjaju vrednost promenljive, ali na još jednostavniji način. Tema 26 — Inkrement i dekrement (++, --) Naučićemo razliku između prefiksnog i postfiksnog inkrementa, kako funkcionišu izrazi ++x i x++, šta se dešava sa vrednostima promenljivih i kako da izbegnemo česte greške u zadacima sa inkrementom i dekrementom.
Vaša privatnost nam je važna

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.