Naredba pridruživanja
Sjedište: | CARNET - Arhiva 2021 Loomen |
E-kolegij: | III. Gimnazija Osijek - Informatika 2 |
Knjiga: | Naredba pridruživanja |
Otisnuo/la: | Gost (anonimni korisnik) |
Datum: | utorak, 28. siječnja 2025., 04:30 |
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
1.1. Zadaci
Zadaci su zapisani pseudokodom!
1. Kolika je vrijednost cjelobrojne varijable x nakon izvršavanja sljedećih naredbi?
a. x = 17 div 3
b. x = 17 mod 3
c. x = 25 div 5 + 16 mod 5 + 1
d. x = 13 div 4*12 mod 5*3
2. Kolika će biti vrijednost varijable a nakon izvođenja sljedećih naredbi?
a = 184
a = a div 10 mod 10
3. Kolika će biti vrijednost varijable b nakon sljedećeg bloka naredbi?
a = 821
b = a div 100 + a div 10 mod 10 + a mod 10
4. Dan je algoritam u pseudojeziku:
ulaz (a, b)
c = a + b
d = a - b
e = a*b
izlaz (c, d, e)
Kolike će biti vrijednosti varijabli c, d i e ako je početna vrijednost varijable a = 5, a varijable b = 6?
5. Kolika je vrijednost varijable x nakon izvođenja sljedećeg algoritma?
x = 13
y = 12
x = 2*x – 3*y
y = -2*y
x = x + y
6. Koju će vrijednost imati varijable x i y nakon izvođenja sljedećega programskog odsječka?
x = 254
x = x div 10
y = x div 10
z = y + x mod 10
7. Koju će vrijednost poprimiti varijabla p nakon izvođenja dijela programa?
p = -8
r = 5
r = r – p
p = p – r
p = p – r
Zadatke riješite u svoje bilježnice!
1.2. Rješenja zadatka
1. Kolika je vrijednost cjelobrojne varijable x nakon izvršavanja sljedećih naredbi?
a. x = 17 div 3 = 5
b. x = 17 mod 3 = 2
c. x = 25 div 5 + 16 mod 5 + 1 = 5 + 1 + 1 = 7
d. x = 13 div 4 * 12 mod 5 * 3 = 3 * 12 mod 5 * 3 = 36 mod 5 * 3 = 1 * 3 = 3
2. Kolika će biti vrijednost varijable a nakon izvođenja sljedećih naredbi?
a = 184
a = a div 10 mod 10
Rješenje: a = a div 10 mod 10 = 184 div 10 mod 10 = 18 mod 10 = 8
Nova vrijednost varijable a je 8 odnosno znamenka desetica polaznog broja.
3. Kolika će biti vrijednost varijable b nakon sljedećeg bloka naredbi?
a = 821
b = a div 100 + a div 10 mod 10 + a mod 10
Rješenje: b = a div 100 + a div 10 mod 10 + a mod 10 =
= 821 div 100 + 821 div 10 mod 10 + 821 mod 10 =
= 8 + 82 mod 10 + 1 = 8 + 2 + 1 = 11
Ovaj izraz računa sumu znamenki troznamenkastog broja.
b = a div 100 + a div 10 mod 10 + a mod 10
4. Dan je algoritam u pseudojeziku:
ulaz (a, b)
c = a + b
d = a - b
e = a*b
izlaz (c, d, e)
Kolike će biti vrijednosti varijabli c, d i e ako je početna vrijednost varijable a = 5, a varijable b = 6?
Rješenje:
a = 5
b = 6
c = a + b → c = 5 + 6 = 11
d = a – b → d = 5 – 6 = -1
e = a * b → e = 5 * 6 = 30
5. Kolika je vrijednost varijable x nakon izvođenja sljedećeg algoritma?
x = 13
y = 12
x = 2*x – 3*y
y = -2*y
x = x + y
Rješenje:
x = 13
y = 12
x = 2*x – 3*y → x = 2 * 13 – 3 * 12 = 26 – 36 = -10
y = -2*y→ y = -2 * 12 = -24
x = x + y→ x = -10 + (-24) = -34
Napomena: pripazite uvijek treba uvrstiti zadnju izračunatu vrijednost varijable jer se ona nalazi u memoriji!
6. Koju će vrijednost imati varijable x i y nakon izvođenja sljedećega programskog odsječka?
x = 254
x = x div 10
y = x div 10
z = y + x mod 10
Rješenje:
x = 254
x = x div 10→ x = 254 div 10 = 25
y = x div 10→ y = 25 div 10 = 2
z = y + x mod 10→ z = 2 + 25 mod 10 = 2 + 5 = 7
7. Koju će vrijednost poprimiti varijabla p nakon izvođenja dijela programa?
p = -8
r = 5
r = r – p
p = p – r
p = p – r
Rješenje:
p = -8
r = 5
r = r – p→ r = 5 – (-8) = 13
p = p – r→ p = -8 – 13 = -21
p = p – r→ p = -21 – 13 = -34