Možda nećete povjerovati, ali baš NITKO, tko mi je prvi put došao da nauči Python, nije znao odgovoriti na jednostavno pitanje: "Zamijeni vrijednosti dvije varjable!" Zaključak donesite sami.
Neka je: a=1 i b=2, te želimo zamjeniti var. a i b. To možemo prikazati sljedećom zamjenom: a->b->a (a ide u b i b ide u a).
Trebamo napisati dio programa koji zamijenjuje vrijednosti varijabli a i b.
Prvi najnespretniji pokušaj je često:
a=2
b=1
print("a=",a)
print("b=",b)
Zašto on nije dobar iako ispisuje ispravne vrijednosti a=2 i b=1?
Zato jer se oslanja na konkretne početne vrijednosti var. a i var. b koje u nekom drugom trenutku mogu biti potpuno drukčije (npr. a=7 i b=0) i za koje program neće dobro raditi! Program uvijek mora biti što je moguće općenitiji i ne smije pretpostaviti nikakve konkretne početne vrijednosti varijabli.
Drugi, najčešći pokušaj kod učenika glasi:
a=b
b=a
koji također ne radi... Znate li zašto? ...
Zato jer se naredbom a=b GUBI STARA VRIJEDNOST var. a.
Nužno je uočiti da naredba a=b NIJE MATEMATIČKA JEDNAKOST, nego predstavlja PRIDRUŽIVANJE vrijednosti koja se dobije sa desne strane izraza varijabli navedenoj s lijeve strane.
Dakle s lijeve strane može postojati samo IME JEDNE VARIJABLE.
Zbog toga niti u jednom programskom jeziku nije moguće napisati:
a+1=1 ili a+b=c ....
No moguće je i vrlo često se koristi izraz:
a=a+1
koji znači: uzmi STARU VRIJEDNOST VARIJABLE a, zbroji je s 1 i konačan reultat upisi kao NOVU VRIJEDNOST varijable a. Drugim riječima pojednostavljeno možemo reći:
novi a = stari a + 1
Na taj način postojeću vrijednost varijable a zamjenjujemo s vrijednošću koja je za 1 veća od predhodne. Na taj način vrlo često vršimo različita PREBROJAVANJA.
Vrijednost uvećanu za 1 nazivamo inkrement, a umanjenu za 1 zovemo dekrement.
Prilikom pridruživanja nove vrijednosti varijabli navedenoj s lijeve strane se njen predhodni sadržaj nepovratno GUBI, te stoga pokušaj ZAMJENE sadržaja varijabli a i b sa naredbom a=b ne daje željeni rezultat jer smo s njom IZGUBILI PREDHODNU VRIJEDNOST var. a. Isti neuspjeh će doživiti i naredba b=a, samo što će se tada izgubiti predhodne vrijednost var. b. Znači u oba slučaja ne možemo napraviti zamjenu STARIH VRIJEDNOSTI ...
I? Što nam je činiti?
Budući da niti a=b niti b=a nije dobar put, moramo UVESTI JEDNU NOVU, POMOĆNU VARIJABLU s kojom ćemo SAČUVATI, KOPIRATI, UDUPLATI STARU VRIJEDNOST var. a.
kopija = a
Sada smo u varijablu kopija upisali STARU VRIJEDNOST var. a i sada je var. a SLOBODNA da u nju upišemo vrijednost var. b BEZ POSLJEDICE GUBLJENJA STARE VRIJEDNOSTI koja je sačuvana u pomoćnoj varijabli kopija.
Sada za NOVU VRIJEDNOST var. a upisujemo STARU VRIJEDNOST var. b:
a=b
Sada je var. b SLOBODNA da u nju upišemo bilo što, dakle BEZ POSLJEDICE GUBLJENJA STARE VRIJEDNOSTI koja je sačuvana u var. a.
I zadnji korak je da kao NOVU VRIJEDNOST var. b upišemo STARU VRIJEDNOST var. a.
b=a :)
Ipak ovo NIJE TOČNO jer je u var. a NOVA VRIJEDNOST dakle, stara vrijednost var. b.
b=kopija
je točna naredba jer je u var. kopija sačuvana STARA vrijednost var. a.
Na kraju napišimo potpuni sljed ISPRAVNIH naredbi:
kopija = a
a = b
b = kopija
print("a=",a)
print("b=",b)
Na taj način možemo izvršiti BILO KAKVU ZAMJENU i više od 2 varijable SAMO S JEDNOM POMOĆNOM VARIJABLOM.
Za vježbu i provjeru razumijevanja upravo objašnjenog pokušajte napraviti programe za sljedeće zamjene:
a->c->b->a
a->d->b->c->a
Ažurirano (Subota, 29 Siječanj 2022 19:45)
Istaknite svoj oglas i povećajte posjećenost do 6 puta
Stranica Moje Instrukcije za vrijeme školske godine bilježi preko 100 000 posjeta mjesečno, stoga nemojte propustiti priliku i popunite svoje slobodne termine s nama.
Imate objavljen oglas, istaknite ga:
|
![]() |
Pišite lekcije i povećajte posjećenost svog oglasa
Pišite kratke lekcije i pomognite djeci u njihovoj potrazi za znanjem, a vaš oglas će biti prikazan u vrhu lekcije koju ste napisali. Na taj način možete i jednostavno dogovoriti instrukcije umjesto da vas traže preko tražilice u moru ostalih instruktora.