Naredba pridruživanja
1. Pridruživanje vrijednosti
Promotrimo sljedeći primjer.
#include <stdio.h>
int main ()
{
int a,b;
printf ("\nUpisite dva broja ");
scanf("%d %d", &a, &b);
printf ("\n%d",a+b);
printf ("\n%d",(a+b)/a);
printf ("\n%d",(a+b)*a);
printf ("\n%d",((a+b)/a)+((a+b)*a));
return 0;
}
Nedostatak gornjeg primjera je u tome što svaki put ponovno računa vrijednost zbroja varijabli a i b. To ponavljanje usporava izvođenje programa i nepotrebno opterećuje procesor računala. Izbjeći ćemo ga uporabom naredbe pridruživanja. Na taj ćemo način traženi zbroj izračunati, spremiti u memoriju i pozivati svaki put kada bude potreban.
Naredbom pridruživanja varijablama se zadaju ili mijenjaju vrijednosti.
Svaki programski jezik ima operator pridruživanja. Upotrebljavali smo ga i u zadatku s voćnjakom kad smo recimo izračunavali količinu potrebne žice (ovo je bio zapis u pseudokodu):
kolicina_zice = 2 * (m + n)
Operator pridruživanja u programskom jeziku C je =. Njegova je uloga da vrijednost izraza s desne strane pridruži varijabli na lijevoj strani. Operator pridruživanja ima najniži prioritet izvršavanja.Pazite! Naredba pridruživanja nije isto što i znak jednakosti u matematici!
Na primjer, zapišemo li a = 5 , to znači da ćemo broj 5 pohraniti u memoriju kao vrijednost varijable a. Kažemo da smo varijabli a pridružili vrijednost 5. Zapišemo li a = 3 + 5, najprije će se izračunati vrijednost s desne strane pa će se tek onda ta izračunata vrijednost pridružiti varijabli a. Dakle, vrijednost varijable a nakon te naredbe bit će 8.
Opći oblik naredbe za pridruživanje vrijednosti je
varijabla = izraz;
Sada prethodni program možemo napisati ovako:
#include <stdio.h>
int main ()
{
int a,b,c,d,e,f;
printf ("\nUpisite dva broja ");
scanf("%d %d", &a, &b);
c=a+b;
d=c/a;
e=c*a;
f=d+e;
printf ("\n%d",c);
printf ("\n%d",d);
printf ("\n%d",e);
printf ("\n%d",f);
return 0;
}
Na taj je način pisanje programa olakšano, a i njegova čitljivost. Isto tako, smanjuje mogućnost pogreške pri pisanju izraza.
Nakon ovog niza naredbi, za upisane vrijednosti 2814 i 589
main()
{
int a,b;
float d;
scanf("%2d %1d", &a,&b);
d=a+b;
printf("%d+%d=%f", a,b,d);
}
na zaslonu će se ispisati 28 + 1 = 29.000000 jer format u funkciji za učitavanje podataka ograničava broj znamenki u varijablama.
Primjer
Kolika će biti vrijednost varijable a nakon izvršavanja naredbi?
main()
{
int a;
a=5;
a=a+6;
}
Vrijednost varijable a nakon naredbe a=5; iznosi 5. Nailaskom na naredbu a=a+6; program će najprije dohvatiti vrijednost varijable a (5). Nakon toga će toj vrijednosti dodati broj 6. Tada će dobiveni zbroj (5 + 6 = 11) pridružiti varijabli a. Dakle, vrijednost varijable a nakon izvršavanja prethodnih naredbi bit će 11.
Primjer:
Nakon izvođenja naredbi:
x = 3
y = 7
x = x – 3*y
y = -y
x = x + y
varijabla x imat će vrijednost -25. Korak po korak ovako bismo to riješili:
x = 3
y = 7
x = x – 3*y → x = 3 - 3*7 = 3 - 21 = -18
y = -y → y = -7
x = x + y → x = -18 + (-7) = -25