Ulaz i izlaz podataka, naredba pridruživanja
Sjedište: | CARNET Loomen LMS |
E-kolegij: | Pripreme za ispit iz informatike na DM 2022 |
Knjiga: | Ulaz i izlaz podataka, naredba pridruživanja |
Otisnuo/la: | Invitado |
Datum: | srijeda, 22. listopada 2025., 19:04 |
1. Ulaz i izlaz podataka
Svaki se program sastoji od tri odvojena dijela: unosa podataka, obrade i prikaza rezultata.
Želimo li napraviti takav program moramo se upoznati sa naredbom koja će omogućiti korisniku da unese potrebne podatke (npr. preko tipkovnice) i naredbom za prikaz rezultata obrade (npr. na zaslonu monitora). Naredbe koje omogućuju korisniku unos podataka nazivamo ulazne, a naredbe koje omogućuju prikaz rezultata su naredbe za ispis.
1.1. Unos podataka
Funkcija za unos podataka u Pythonu je input(), a u C-u scanf();
Sintaksa:
Python | C |
---|---|
varijabla = input()
|
scanf("format", &varijabla)
|
Primjeri:
Python | C |
---|---|
a = int(input()) | scanf("%d", &a); |
Što se događa kada program dođe do funkcije input, odnosno scanf?
Kada program dođe do ovih funkcija, omogućuje se unos podatka (ili više podataka) s tipkovnice. Uneseni se podatak ili podatci tada spreme u memoriju. Da bi program znao koji podatak čemu služi, osim samog podatka program pamti i naziv (adresu) pod kojim se taj podatak sprema.
1.2. Prikaz rezultata obrade - funkcija za ispis
Kada korisnik upiše potrebne podatke i program napravi obradu te izračuna rezultat, taj je rezultat potrebno prikazati na nekom od vanjskih uređaja za prikaz podataka (npr. na zaslonu monitora). Bez prikaza rezultata nema koristi ni od obrade.
Funkcije koje omogućuju prikaz rezultata nazivamo funkcije za ispis.
Funkcija za ispis u Pythonu je print(), a u C-u printf();
Primjer:
Python | C |
---|---|
print(a)
| printf("%d", a);
|
2. Operator pridruživanja
Svaki programski jezik ima oprator pridruživanja. On varijabli s lijeve strane pridružuje vrijednost izraza s desne strane.
U Pythonu i C-u operator pridruživanja označava se znakom =.
Napomena: U sljedećim lekcijama pojavit će se naredbe u kojima ćemo ispitivati jednakost izraza s lijeve i desne strane (primjerice, je li a+b jednako c+d). Za ispitivanje jednakosti koristit ćemo relacijski operator == i pisati a+b==c+d.
Da bi program mogao razlikovati pridruživanje od ispitivanja jednakosti, oni moraju biti drugačijeg oblika. Zbog toga za naredbu pridruživanja koristimo znak =, a za ispitivanje jednakosti znak ==.
Primjer 1:
Naredbom a = 5, broj pet "pridružujemo" varijabli a. U stvari, u memorijsku lokaciju koju smo nazvali a upisujemo broj 5.
Primjer 2:
Naredba x = a + 2, najprije će iz memorijske lokacije imena a "dohvatiti" njezinu vrijednost (neka je to vrijednost iz prethodnog primjera, a = 5). Zatim će tu vrijednost (broj 5) zbrojiti brojem 2 i na kraju će dobiveni rezultat spremiti u memoriju, na mjesto imena x.
Primjer 3:
Naredba x = x + 4 najprije će iz memorije dohvatiti vrijednost varijable x (neka je to 7), zatim tom broju dodati broj 4. Dobiveni rezultat (11) spremiti će kao vrijednost varijable x (preko stare vrijednosti 7).
Primjer 4:
Pogledajmo koju će vrijednost imati varijabla x nakon izvođenja sljedećega dijela programa?
x = 3;
y = 2;
x = x – 3 * y;
y = -y;
x = x + y;
U početku je vrijednost varijable x jednaka 3, a vrijednost varijable y je 2.
U sljedećem koraku (x = x – 3 * y;) izračuna se izraz x-3*y (3-3*2=3-6=-3) i dobivena vrijednost "spremi se" u varijablu x (x=-3).
Sljedeća naredba (y = -y;) vrijednost varijable y koja je bila 2 zamjenjuje sa -2.
I na kraju, (x = x + y;) izračuna se vrijednost x+y (-3-2=-5) i rezultat se sprema u varijablu x. Tako je odgovor na pitanje postavljeno na početku primjera: Varijabla x nakon izvođenja sljedećeg dijela programa imat će vrijednost -5.
3. Primjeri jednostavnih algoritama
Proučimo sada nekoliko osnovnih algoritama koji se često pojavljuju u programiranju
3.1. Primjer 1 - opseg i površina pravokutnika
Sljedeći algoritam za zadane duljine stranica pravokutnika (a i b) računa i ispisuje njegov opseg i površinu.
Python |
C |
a = int(input())
|
int a, b, o, P; |
Provjerimo!
Neka je a=5, a b=6.
Nakon naredbe O = 2 * (a+b), vrijednost varijable o jednaka je 2 * (5 + 6) = 2 * 11 = 22, a nakon naredbe P = a * b,
vrijednost varijable P jednaka je 5 * 6 = 30.
Uvrštavanjem brojeva 5 i 6 (vrijednosti varijabli a i b) u formule za površinu i opseg pravokutnika lako možemo provjeriti da su rezultati jednaki!
Napomena za programski jezik C!
Ako gore naveden program prepišete u editor za programski jezik C i kompajlirate ga dobit ćete puno pogreški. To je zato što nismo poštovali strukturu programa pisanog C-om nego smo samo istaknuli algoritam. Za ispravno funkcionirana programa moramo dodati predprocesorsku naredbu za poziv biblioteka funkcija #include<> i glavnu funkciju main(). Potpuni program izgledao bi ovako:
#include<stdio.h>int main()
{
int a, b, o, P;
scanf("%d %d", &a, &b);
o = 2*(a+b);
P = a * b;
printf("%d, %d", o, P);
return 0;
}
3.2. Primjer 2 - rastavljanje dvoznamenkastog broja na znamenke
Algoritam koji dvoznamenkasti broj rastavlja na znamenke
Python | C |
---|---|
a = int(input())
desetica = a // 10 jedinica = a % 10 print(desetica, jedinica) |
scanf("%d"; &a);
desetica = a / 10; jedinica = a % 10; printf("%d, %d", desetica, jedinica) |
Objašnjenje:
Ako dvoznamenkasti broj (npr. 25) podijelimo cjelobrojno s deset, rezultat će biti znamenka desetice (25 div 10=2).
Pogledamo li ostatak dijeljenja zadanog broja s 10, vidjet ćemo da je to upravo znamenka jedinice (25 mod 10 = 5). I to je upravo gornji algoritam!
Zadatak za vježbu:
Primjenjujući analogiju iz prethodnog primjera napišite algoritam koji troznamenkasti broj rastavlja na znamenke.
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.
Napomena: Algoritam je objašnjen u pseudojeziku, kako bi ga razumjeli neovisno o programskom jeziku u kojem radite.
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!
Pogledajmo kod u programskim jezicima Python i C:
Python | C |
---|---|
a = int(input()) b = int(input()) c = a a = b b = c print(a, b) |
int a, b; scanf("%d, %d", &a, &b); c = a; a = b; b = c; printf("%d, %d", a, b); |
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!
Zadatak: Zapišite algoritam u programskom jeziku Python ili C.
4. Zadatci s provedenih ispita
SVI ZADATCI SU PRILAGOĐENI PROGRAMSKIM JEZICIMA PYTHON I C/C++-
(2010, ljetni rok, zadatak 21)
Koju će vrijednost imati varijabla x nakon izvođenja sljedećega dijela programa?
Python C/C++ x = 20
y = -5
x = x + y
y = x + y
x = x + y
x = 20;
y = -5;
x = x + y;
y = x + y;
x = x + y;
A. 10
B. 15
C. 20
D. 25
- (2010, ljetni rok, zadatak 25) Koja će biti vrijednost varijable t nakon izvođenja sljedećega dijela programa?
Python C/C++ a = 1
b = 2
c = 3
t = not(a < b) and (a < c) or not(b < c)
a = 1;
b = 2;
c = 3;
t = !(a < b) && (a < c) || !(b < c);
- (2010, jesenski rok, zadatak 21) Ako varijable x,y i z imaju početnu vrijednost 3, koja će varijabla i dalje imati vrijednost 3 nakon izvođenja sljedećega dijela programa?
Python C/C++ x = x + y
y = y + x - z
z = z – y + x
x = x + y;
y = y + x - z;
z = z – y + x;
A. x
B. y
C. z
D. niti jedna
-
(2011, ljetni rok, zadatak 22) Koju će vrijednost imati varijabla x nakon izvođenja sljedećega dijela programa?
Python C/C++ x = 17
y = x % 4
x = x + y
y = x % 4
x = x + y
y = x % 4
x = 17;
y = x % 4;
x = x + y;
y = x % 4;
x = x + y;
y = x % 4;
A. 0
B. 17
C. 18
D. 20
- (2011, ljetni rok, zadatak 25) Koja će biti vrijednost varijable t nakon izvođenja sljedeće naredbe?
Python C/C++ a = 7
b = 9
c = 3
t = not (not (a < b) and (a < c) or not ((c < b) or not (c < a)))
a = 7;
b = 9;
c = 3;
t = !( ! (a < b) && (a < c) || ! ((c < b) || ! (c < a)))
-
(2011, jesenski rok, zadatak 22) Koju će vrijednost imati varijabla y nakon izvođenja sljedećega dijela programa?
Python C/C++ x = 17;
y = x % 4
x = x + y
y = x % 4
x = x + y
y = x % 4
x = 17;
y = x % 4;
x = x + y;
y = x % 4;
x = x + y;
y = x % 4;
A. 0
B. 17
C. 18
D. 20
- (2011, jesenski rok, zadatak 25) Koja će biti vrijednost varijable t nakon izvođenja sljedeće naredbe?
Python C/C++ a = 7
b = 9
c = 3
t = not(not(a > b) and not(a < c) or not(c < b))
a = 7;
b = 9;
c = 3;
t = !(!(a > b) && !(a < c) || !(c < b))
- (2012, ljetni rok, zadatak 17) Koje će vrijednosti imati varijable a i b nakon izvođenja sljedećeg dijela programa?
Python C/C++ a = -32;
b = 8;
b = abs(a) / b + b % 5;
a = -32;
b = 8;
b = abs(a) / b + b % 5;
A. a = 32, b = 2
B. a = –32, b = 7
C. a = –32, b = 5
D. a = 32, b = 7
- (2012, ljetni rok, zadatak 20) Iznos od n kuna potrebno je isplatiti novčanicama u apoenima od 1, 10 i 100 kuna. Koji će od sljedećih algoritama ispisati minimalni broj novčanica kojima je moguće isplatiti navedeni iznos pod pretpostavkom da imamo dovoljan broj novčanica u svim apoenima?
Python C/C++ A.
a = n % 1
b = n % 10
c = n % 100
print (a + b + c)
B.
a = n // 100
b = n // 10
c = n // 1
print (a + b + c)
C.
a = n // 100
b = n % 10 // 10
c = n % 10
print (a + b + c)
D.
a = n %10
b = n // 10 % 10
c = n // 100
print (a + b + c)
A.
a = n % 1;
b = n % 10;
c = n % 100;
printf ("%d", a + b + c);
B.
a = n / 100;
b = n / 10;
c = n / 1;
printf ("%d", a + b + c);
C.
a = n / 100;
b = n % 10 / 10;
c = n % 10;
printf ("%d", a + b + c);
D.
a = n %10;
b = n / 10 % 10;
c = n / 100;
printf ("%d", a + b + c);
- (2012, ljetni rok, zadatak 30) Koja će biti vrijednost varijable b nakon izvođenja sljedećih naredbi?
Python C/C++ a = 2
b = 3
a = a * b
b = 3 * a
a = 2;
b = 3;
a = a * b;
b = 3 * a;
- (2012, jesenski rok, zadatak 17) Koja će biti vrijednost varijable b nakon izvođenja sljedećeg dijela programa?
Python C/C++ a = 4
b = 5
b = (b**2 - 4 * a)**0.5
a = 4;
b = 5;
b = sqrt(pow(b, 2) - 4 * a);
A. 5
B. 4
C. 3
D. 2
- (2012, jesenski rok, zadatak 20) Koji od sljedećih algoritama pretvara sekunde (s) u oblik sati (sati), minute (min) i sekunde (nove_sekunde)?
Python C/C++ A. sati = s % 3600 // 3600
min = s % 3600 // 60
nove_sekunde = s % 3600 % 60
B. sati = s % 3600
min = s % 3600 // 60
nove_sekunde = s % 3600 % 60
C. sati = s // 3600
min = s % 3600 // 60
nove_sekunde = s % 3600 % 60
D. sati = s // 3600
min = s % 3600 % 60
nove_sekunde = s // 3600 % 60
A. sati = s % 3600 / 3600;
min = s % 3600 / 60;
nove_sekunde = s % 3600 % 60;
B. sati = s % 3600;
min = s % 3600 / 60;
nove_sekunde = s % 3600 % 60;
C. sati = s / 3600;
min = s % 3600 / 60;
nove_sekunde = s % 3600 % 60;
D. sati = s / 3600;
min = s % 3600 % 60;
nove_sekunde = s / 3600 % 60;
- (2012, jesenski rok, zadatak 30) Koja će biti vrijednost varijable a nakon izvođenja sljedeće naredbe?
Python C/C++ a = 7 * 5 % 12 // 2
a = 7 * 5 % 12 / 2;
- (2013, ljetni rok, zadatak 17) Zadane su naredbe:
Python C/C++ x = a / b
y = x - int(x)
x = (float)a / b;
y = x - trunc(x);
Koja ih od navedenih naredbi može zamijeniti?
Python C/C++ A. y = (a % b) / b
B. y = (a // b) / b;
C. y = (a // b) % b;
D. y = (a % b) // b;
A. y = (float)(a % b) / b;
B. y = (float)(a / b) / b;
C. y = (a / b) % b;
D. y = (a % b) / b;
- (2013, ljetni rok, zadatak 29) Koja će biti vrijednost varijable x nakon izvođenja sljedećega dijela programa?
Python C/C++ a = 1
b = a - 1
c = a + b
x = (a > b) or (b > c) and (c > a)
a = 1;
b = a - 1;
c = a + b;
x = (a > b) || (b > c) && (c > a);
- (2013, ljetni rok, zadatak 30) Koja će biti vrijednost varijable t nakon izvođenja sljedeće naredbe?
Python C/C++ t = 3**2 % 5 + 3**2 // 5
t = pow(3, 2) % 5 + pow(3, 2) / 5;
- (2013, jesenski rok, zadatak 17) Koja će vrijednost biti pohranjena u varijabli z nakon izvođenja sljedećega dijela programa?
Python C/C++ x = 12
y = 3
x = x + y
y = x // y
z = x - y
x = 12;
y = 3;
x = x + y;
y = x / y;
z = x - y;
A. 7
B. 9
C. 10
D. 15
- (2013, jesenski rok, zadatak 30) Koja će biti vrijednost varijable t nakon izvođenja sljedeće naredbe?
Python C/C++ t = 9**2 % 3 * (10 // 3)**2
t = pow(9, 2) % 3 * pow(10 / 3, 2);
- (2014, ljetni rok, zadatak 30) Koja će biti vrijednost varijable x nakon izvođenja sljedeće naredbe?
Python C/C++ x = 4 + 3 * 7 % 2
x = 4 + 3 * 7 % 2;
- (2014, jesenski rok, zadatak 30) Koja će biti vrijednost varijable x nakon izvođenja sljedeće naredbe?
Python C/C++ x = 4 - 3 * 3 // 7
x = 4 - 3 * 3 / 7;
- (2015, ljetni rok, zadatak 17) Koja će vrijednost biti pohranjena u varijabli c nakon izvođenja sljedećega dijela
programa?
Python C/C++ a = 1
b = -2
a = a + b
b = b - a
c = a * b
a = 1;
b = -2;
a = a + b;
b = b - a;
c = a * b;
A. –2
B. –1
C. 1
D. 3
- (2015, ljetni rok, zadatak 29) Koja će biti vrijednost varijable x nakon izvođenja sljedećega dijela programa?
Python C/C++ a = 3
b = 3
c = 1
x = (a > b) and (a > c) and (b > c)
a = 3;
b = 3;
c = 1;
x = (a > b) && (a > c) &&(b > c);
- (2015, ljetni rok, zadatak 30) Koja će biti vrijednost varijable t nakon izvođenja sljedeće naredbe?
Python C/C++ t = 10**2 // 3**2 % 3**2
t = pow(10, 2) / pow(3, 2) % pow(3, 2);
- (2015, jesenski rok, zadatak 29)
Koja će biti vrijednost varijable x nakon izvođenja sljedećega dijela programa?
Python C/C++ a = 2
b = 3
c = 1
x = (a > b) or (a > c) or (b > c)
a = 2;
b = 3;
c = 1;
x = (a > b) || (a > c) || (b > c);
- (2015, jesenski rok, zadatak 30) Koja će biti vrijednost varijable t nakon izvođenja sljedeće naredbe?
Python C/C++ t = round(10**0.5) % 2 + 10**2 // 2
t = round(sqrt(10)) % 2 + pow(10, 2) / 2;
- (2016., ljetni rok, zadatak 30) Koja će biti vrijednost varijable x nakon izvođenja sljedeće naredbe?
-
(2016., jesenski rok, zadatak 30) Koja će biti vrijednost varijable x nakon izvođenja sljedeće naredbe?
-
(2017., ljetni rok, zadatak 26) Koje će biti vrijednosti varijabla x i y nakon izvođenja navedenoga dijela programa?
-
(2017., jesenski rok, zadatak 26) Koje će biti vrijednosti varijabla x i y nakon izvođenja navedenoga dijela programa?
-
(2018., ljetni rok, zadatak 26) Zadan je dio programa.
-
(2018., jesenski rok, zadatak 26) Zadan je dio programa.
-
(2019., ljetni rok, zadatak 25) Kolika je vrijednost varijable x na kraju izvođenja zadanoga dijela programa?
-
(2019., jesenski rok, zadatak 25) Koja će biti vrijednost varijable x nakon izvođenja zadanoga dijela programa ako je
a = 123?
-
(2021., ljetni rok, zadatak 24) Kolika je vrijednost varijable x na kraju izvođenja zadanoga dijela programa?
-
(2021., jesenski rok, zadatak 24) Kolika će biti vrijednost varijable x nakon izvođenja zadanoga dijela programa ako je a = 123?
Python | C/C++ |
---|---|
x = 7 * 6 // 5 % 4
|
x = 7 * 6 / 5 % 4;
|
Python | C/C++ |
---|---|
x = (15 // 7 % 3)**2 + 15 % 7 // 3
|
x = pow(15 / 7 % 3, 2) + 15 % 7 / 3;
|
Python | C/C++ |
---|---|
a = 25
b = (a // 10)**2 + (a %10)**2 c = (b // 10)**2 + (b % 10)**2 x = (a + b > c) and (b + c > a) y = (a + b > c) or (b + c > a) |
a = 25;
b = pow(a / 10, 2) + pow(a % 10, 2); c = pow(b / 10, 2) + pow(b % 10, 2); x = (a + b > c) && (b + c > a); y = (a + b > c) ||(b + c > a); |
Python | C/C++ |
---|---|
a = 6
b = 7 c = a * a – b * b x = (c < 0) and (a – b > 0) y = (c < 0) or (a – b > 0) |
a = 6;
b = 7; c = a * a – b * b; x = (c < 0) && (a – b > 0); y = (c < 0) || (a – b > 0); |
Python | C/C++ |
---|---|
a = -1 b = -2 a = -3 * a - b b = 4 * b + 2 * a a = a + b |
a = -1; b = -2; a = -3 * a - b; b = 4 * b + 2 * a; a = a + b; |
A. Kolika je vrijednost varijable a na kraju izvođenja zadanoga dijela programa?
B. Kolika je vrijednost varijable b na kraju izvođenja zadanoga dijela programa?
Python | C/C++ |
---|---|
a = 3 b = -2 a = 3 * a - b b = 2 * b + 3 * a a = a - b |
a = 3; b = -2; a = 3 * a - b; b = 2 * b + 3 * a; a = a - b; |
A. Kolika je vrijednost varijable a na kraju izvođenja zadanoga dijela programa?
B. Kolika je vrijednost varijable b na kraju izvođenja zadanoga dijela programa?
Python | C/C++ |
---|---|
a = 19 b = 25 p = a % b > b % a q = a // b > b // a x = p and q |
a = 19; b = 25; p = a % b > b % a; q = a / b > b / a; x = p && q; |
Python | C/C++ |
---|---|
s = a // 100 d = a // 10 % 10 j = a % 10 x = s + d + j |
s = a / 100; d = a / 10 % 10; j = a % 10; x = s + d + j; |
Python | C/C++ |
---|---|
a = 19 b = 25 p = a % b > b % a q = a // b > b // a x = p and q |
a = 19; b = 25; p = a % b > b % a; q = a / b > b / a; x = p && q; |
Python | C/C++ |
---|---|
s = a // 100 d = a // 10 % 10 j = a % 10 x = s + d + j |
s = a / 100; d = a / 10 % 10; j = a % 10; x = s + d + j; |
4.1. Rješenja
- D
- 0
- C
- D
- 1
- A
- 0
- B
- D
- 18
- C
- C
- 5
- A
- 1
- 5
- C
- 0
- 5
- 3
- C
- 0
- 2
- 1
- 51
- 0
- 4
- x = Netočno
y = Točno - x = Netočno
y = Točno - A. 7
B. 2 - A. -18
B . 29 - Netočno
- 6
- Netočno
- 6