Ulaz i izlaz podataka, naredba pridruživanja

uvod u pseudojezik

3. Primjeri jednostavnih algoritama

3.3. Primjer 3 - zamjena vrijednosti varijablama

Algoritam za zamjenu vrijednosti dvije varijable

Ima li varijabla a jednu vrijednost, a varijabla b drugu, u nekoliko naredbi možemo tim varijablama zamijeniti vrijednosti!
Ne radi se o tome da varijable samo ispišemo na zaslon u obrnutom redoslijedu, već o tome da stvarno fizički zamjene vrijednosti: ona vrijednost koja je na početku programa bila upisana na adresu a, na kraju će biti upisana na adresu b i obrnuto.

Napišemo li ovakav algoritam:

ulaz (a,b);
b:=a;
a:=b;
izlaz (a,b);

što smo dobili?

Ako su na početku vrijednosti bile: a=3, b=7, uvrštavanjem u dani algoritam dobijemo: b:=a (odnosno b=3). Time smo preko prethodne vrijednost varijable b (7) "prepisali" sadašnju vrijednost varijable a (3). I staru vrijednost varijable b smo izgubili!!!
Izlaz iz našeg programa bio bi: 3, 3, a to nije ono što smo trebali!

Ovaj problem u praksi rješavamo na dva načina:

a) pomoću treće (pomoćne) varijable (kao kada želimo sadržaje dviju posuda zamijeniti, pa uzmemo treću posudu)

ulaz (a,b);
c:=a;
a:=b;
b:=c;
izlaz (a,b);

Objašnjenje:
U treću "posudu", c, privremeno smo spremili sadržaj jedne varijable (neka je to sadržaj varijable a - koristimo li vrijednosti iz uvodne diskusije, c=3). Sada slobodno možemo "prepisati" preko sadržaja varijable a novu vrijednost, jer smo "napravili kopiju" stare vrijednosti. Znači, slobodno napravimo a:=b. Sadržaj varijable a sada postaje sadržaj varijable b (a=7). I na kraju "dohvatimo" vrijednost iz pomoćne varijable c (3) i pridružimo je varijabli b (b=3). I imamo ono što smo tražili! Na početku je vrijednost varijable a bila jednaka 3, a vrijednost varijable b bila je 7, a na kraju je vrijednost varijable a jednaka 7, a vrijednost varijable b jednaka je 3!

b) bez pomoćne varijable - pomoću operacija zbrajanja i oduzimanja:

ulaz (a,b);
a:=a+b;
b:=a-b;
a:=a-b;
izlaz (a,b);

Provjerimo ovaj algoritam na konkretnom primjeru:
Neka je na početku a:=3, b:=7.
U prvom koraku zbrojimo ta dva broja i rezultat spremimo kao vrijednost varijable a (a=10).
U drugom koraku, od dobivene vrijednosti varijable a (10) oduzmemo vrijednost varijable b (7) i tako dobivenu vrijednost pridružimo varijabli b (b=3).
U trećem koraku, od vrijednosti varijable a (10) oduzmemo novo dobivenu vrijednost varijable b (3) i dobiveni broj spremimo kao vrijednost varijable a (a=10-3=7).
I tako smo, jednostavnim matematičkim operacijama, zamijenili vrijednosti varijablama, bez da smo opterećivali memoriju dodatnom varijablom!