You are on page 1of 26

OBRTNIČKA I TEHNIČKA ŠKOLA OGULIN

Ogulin, J.J.Strossmayera 2

ZAVRŠNI RAD
Programski jezik C++

Ime i prezime: Luka Galović


Smjer: Tehničar za računalstvo
Razred: IV. B
Mentor: Bojan Grba

Ogulin, ljetni rok


Školska godina 2021./2022.
Programski jezik C++
Sadržaj

Uvod ........................................................................................................................................................ 1
Povijesni razvoj programa ....................................................................................................................... 2
Varijable................................................................................................................................................... 4
Što su varijable? .................................................................................................................................. 4
Imena varijabli ..................................................................................................................................... 4
Tipovi varijabli ..................................................................................................................................... 5
Deklasiranje varijabli ........................................................................................................................... 6
Operatori ................................................................................................................................................. 7
Aritmetički operatori ........................................................................................................................... 7
Logički operatori .................................................................................................................................. 8
Operatori uspoređivanja ..................................................................................................................... 9
Operatori uspoređivanja ..................................................................................................................... 9
Funkcije.................................................................................................................................................. 12
Deklaracija funkcije ........................................................................................................................... 12
Definicija funkcije .............................................................................................................................. 12
Poziv funkcije ..................................................................................................................................... 13
STRUKTURA PROGRAMA ....................................................................................................................... 14
Pravocrtna struktura ......................................................................................................................... 14
Struktura granja................................................................................................................................. 14
Struktura petlje.................................................................................................................................. 16
ZNAKOVI ................................................................................................................................................ 18
Zaključak ................................................................................................................................................ 22
Uvod

Računala, pametne telefone i sve ostale pametne uređaje napravio je, barem nekim dijelom
programer na svome računalu.
Mobilne aplikacije, Internet stranice, društvene mreže, oglasnike, Internet trgovinu i ostale
usluge na računalu i pametnim telefonima koje koristimo zasnovane su na programiranju i
izrađene su u nekom programskom jeziku.
Sam Microsoft Windows napravljen je u programskim jezicima i to u baš u onome koji je
glavna tema ovoga završnog rada, Programski jezik C++.
Programski jezik C++ je viši programski jezik koji je razvijen za objektno orijentirano
programiranje. On je jedan od najpoznatiji programskih jezika. Koristi se u mnogim srednjim
školama jer je dobar temelj za ulazak u svijet programiranja. Specifičan je po brzini izvođenja
i minimalnoj količini memorije koji kodovi napisani u tim jezicima zauzimaju.

1
Povijesni razvoj programa

Programski jezik C++ ima povijest koja seže do 1979. godine, kada je Bjarne Stroustrup radio
za svoj doktorat. Jedan od jezika s kojima je Stroustrup imao priliku raditi bio je jezik zvan
Simula, koji je kao što ime govori jezik prvenstveno namijenjen simulacijama. Jezik Simula
67 koji je bio varijanta s kojom je Stroustrup radio - smatra se prvim jezikom koji podržava
paradigmu objektno orijentiranog programiranja. Stroustrup je otkrio da je ova paradigma bila
vrlo korisna za razvoj softvera, no jezik Simula bio je previše spor za praktičnu upotrebu.

Ubrzo nakon toga, počeo je raditi na "C with Classes", koji je, kao što ime implicira, trebao
biti skup C jezika. Njegov cilj je bio dodati objektno orijentirano programiranje u jezik C, koji
je bio i još uvijek je jezik koji se dobro poštuje zbog svoje prenosivosti bez žrtvovanja brzine
ili funkcionalnosti niske razine. Njegov jezik je uključivao klase, osnovno nasljeđivanje,
umetanje, argumente zadane funkcije i jaku provjeru tipa uz sve značajke jezika C.

Prvi prevodilac C s klasama zvao se Cfront, koji je izveden iz C prevoditelja nazvanog


CPre. Bio je to program dizajniran za prevođenje C s Classes kodom u obični C. Prilično
zanimljiva točka koju vrijedi napomenuti je da je Cfront napisan uglavnom u C-u s Classes,
što ga čini kompajlerom koji se samostalno. Cfront će kasnije biti napušten 1993. godine
nakon što je postalo teško integrirati nove značajke u njega, naime C++ iznimke . Ipak, Cfront
je napravio ogroman utjecaj na implementacije budućih prevoditelja i na Unix operativni
sustav.

Godine 1983. naziv jezika je promijenjen iz C s klasama u C++. Operator ++ u jeziku C je


operator za povećanje varijable, što daje uvid u to kako je Stroustrup gledao na jezik. U to
vrijeme dodane su mnoge nove značajke, od kojih su najznačajnije virtualne funkcije,
preopterećenje funkcija, reference sa simbolom &, ključna riječ const i komentari u jednom
retku koji koriste dvije kose crte.

Godine 1985. Stroustrupova referenca na jezik pod nazivom Programski jezik C++objavljeno
je. Iste godine C++ je implementiran kao komercijalni proizvod. Jezik još nije bio službeno
standardiziran, što knjigu čini vrlo važnom referencom. Jezik je ponovno ažuriran 1989. kako
bi uključio zaštićene i statične članove, kao i naslijeđe iz nekoliko klasa.

Godine 1990. objavljen je Referentni priručnik za C++ s oznakama . Iste godine, Borlandov
Turbo C++ kompajler će biti objavljen kao komercijalni proizvod. Turbo C++ dodao je
mnoštvo dodatnih knjižnica koje bi imale značajan utjecaj na razvoj C++-a. Iako je posljednje
stabilno izdanje Turbo C++-a bilo 2006. godine, prevodilac se još uvijek široko koristi.

Godine 1998., odbor za standarde C++ objavio je prvu međunarodnu normu za C++ ISO/IEC
14882:1998, koji bi neformalno bio poznat kao C++98. Rečeno je da je Referentni priručnik
za C++ s komentarima imao veliki utjecaj na razvoj standarda. Uključena je i Standardna
knjižica predložaka, koja je svoj konceptualni razvoj započela 1979. godine. Godine 2003.
odbor je odgovorio na više problema koji su bili prijavljeni njihovim standardom iz 1998. i
prema tome ga revidirao. Promijenjeni jezik nazvan je C++03.

2
Godine 2005. odbor za standarde C++ objavio je tehničko izvješće (nazvano TR1) s
pojedinostima o raznim značajkama koje su planirali dodati najnovijem C++ standardu. Novi
standard je neformalno nazvan C++0x jer se očekivalo da će biti objavljen negdje prije kraja
prvog desetljeća. Ironično, međutim, novi standard neće biti objavljen do sredine 2011.
godine. Do tada je objavljeno nekoliko tehničkih izvješća, a neki su prevoditelji počeli
dodavati eksperimentalnu podršku za nove značajke.

Sredinom 2011. dovršen je novi C++ . Projekt knjižice Boost izvršio značajan utjecaj na novi
standard, a neki od novih modula izvedeni su izravno iz odgovarajućih Boost biblioteka. Neke
od novih značajki uključivale su podršku za regularne izraze, opsežnu biblioteku
randomizacije, novu C++ vremensku biblioteku, podršku za atomic, standardnu biblioteku
niti, nova sintaksa petlje for koja pruža funkcionalnost sličnu petlji foreach u nekim drugim
jezicima, ključnu riječ auto, nove klase spremnika, bolju podršku za unije i popise za
inicijalizaciju polja i varijable predloške.

3
Varijable
Što su varijable?
Varijable postoje u svakom programskom jeziku. U varijablama pohranjujemo neke
vrijednosti kao što su brojevi, slova i svi drugi znakovi.
Imena varijabli
Svaka varijabla ima svoje ime. Nisu sva imena dozvoljena i moguća. Za to postoje pravila;
- Ime varijable mora biti sastavljeno od slova, cifri i donjih crta
- Prvi znak mora biti slovo. Dozvoljeno je i da donja crta bude prva, ali se ne
preporučuje.
- Rezervirane riječi C sintakse također ne mogu biti varijable.
- Dozvoljeno je upotreba i kombiniranje velikih i malih slova.
- Dužina imena neka ima do 31 znaka. Ne podržava svaki kompajler duža imena
Sljedeća tablica pokazuje primjer ispravnih i neispravnih imena varijabli
Tablica 1.: Prikaz imena varijabli
Ime varijable Ispravnost
Postotak Ispravna
Postotak Ispravna
poSTOtak Ispravna
MarkovNovac Ispravna
a_b_c_d_e__f___ Ispravna
_cijena_ Ispravna, ali se ne
preporučuj
ukupan_broj_predjenih_kilometar Ispravna, ali se ne
preporučuj
M4rk Ispravna
root#komanda Neispravna, jer sadrži znak #
Neispravna, jer sadrži znak
Sličica
sa kvačicom
Neispravna, jer počinje sa
5ak
brojem
Neispravna, jer je to
int
rezervirana riječ sintakse
Neispravna, jer je to
char
rezervirana riječ sintakse

Varijable "Postotak" i "postotak" nisu iste varijable. C je jezik koji je osjetljiv na velika i mala
slova.
Preporučuje se upotreba opisnih varijabli, kao što su "MarkovNovac" i "Ukupna_vrijednost",
jer čine kod razumljivijim nego da se koriste "a", "b", "c", "d"...

4
Tipovi varijabli
U ovom radu pažnju kod varijabli biće usmjerena samo na numeričke varijable. U C-u postoji
nekoliko vrsta numeričkih varijabli. Razlikuju se u količini memorije potrebnoj za
namještanje podataka i opsegu vrijednosti
Tablica 2.: Tipovi varijabli

Rezervirana Potrebno
Tip varijable Opseg vrijednosti
riječ bajtova
Karakteri char 1 od -128 do 127
Cjelobrojni int 2 od -32.768 do 32.767
Kratki cjelobrojni short 2 od -32.768 do 32.767
od -2.147.483.648 do
Dugi cjelobrojni long 4
2.147.438.647
Neoznačeni
unsigned char 1 od 0 do 255
cjelobrojni
Neoznačeni
unsigned int 2 od 0 do 65.535
cijelobrojni
Neoznačeni kratki
unsigned short 2 od 0 do 65.535
cjelobrojni
Neoznačeni dugi
unsigned long 4 od 0 do 4.294.967.295
cjelobrojni
Decimalni sa
od 1,2*10-38 do
jednostrukom float 4
3,4*1038
točnošću
Decimalni sa
dvostrukom double 8 2,2*10-308 to 1,8*10308
točnošću

5
Deklasiranje varijabli
U c-u, varijable se moraju deklarirati prije nego što budu upotrjebljene. Deklaracija varijabli
informira kompajler o imenu varijable i tipu podataka koje ona sadrži i ima sljedeći oblik
ime_tipa ime_varijable;
Primjeri:
int Procenat; /* Procenat je cjelobrojan broj. */

long Ukupna_vrijednost; /* Ukupna_vrijednost


postaje dugi cjelobrojni broj. */

float MarkovNovac; /* Marko moze imati i nesto sitnisa,


pa je zato decimalni. */

Više varijabla se može deklarirati u istom redu, ali su imena odvojena zarezima:
int suma, zbir, razlika, kolicina, broj_clanova;
Pa su sada sve varijable cijelobrojni brojevi.
Na ovom nivou znanja, najbolje je da sve deklaracije varijabli zajedno stavite neposredno
prije početka main funkcije.

Početne vrijednosti varijabli


U toku izvršavanja aplikacije, varijabli se obično dodjeljuje određena vrijednost. To se čini sa
znakom pridruživanja (=).
/* Neki kod. */

int kolicina;

/* Neki kod, a moze da ga i ne bude. */

kolicina = 54;

/* Neki kod. */
Varijabli se može dodijeliti vrijednost pri deklaraciji.
int kolicina = 54;

Ime varijable je zamjena za vrijednost koja joj je pridružena. Ukoliko se desi da se upotrijebi
varijabla, kojoj nije pridružena neka vrijednost ili se pridruži vrijednost koja je van opsega tog
tipa podatka, izlaz aplikacije se ne može predvidjeti.

6
Operatori
Operatori su simboli koji predstavljaju određene funkcije. U C++ je definirano nekoliko sku-
pina operatora, a to su;
- aritmetički operatori
- logički operatori
- operatori uspoređivanja
- ostali operatori

Aritmetički operatori
Operator je simbol koji predstavlja specifičnu akciju. Već smo kod primjera zbrajanja koristili
operator +. Osim operatora + imamo još nekoliko aritmetičkih operatora.
Tablica za pregled operatora
Tablica 3.: Aritmetički operatori
Operator Namjena Primjer Rezultat
+ Zbrajanje 5+6 11
- Oduzimanje 7-3 4
* Množenje 4*4 16
/ Dijeljene 12/6 2
% Dijeljenje (s 5%2 1
ostatkom)

% operator se još naziva i modulus operator.


Aritmetičkih operatori jednako dobro rade sa negativnim brojevima kao i sa pozitivnim, sa
iznimkom modulus operatora, rade sa cijelim brojevima jednako dobro kao i sa brojevima sa
pomičnim zarezom.
Neki programski jezici imaju eksponent operator, što nije slučaj kod C++. Umjesto toga C++
ima ugrađenu funkciju now koja je definirana u standardnoj biblioteci cmath.
Now funkcija ima dva argumenta. Prvi argument je baza, a drugi broj je eksponent.
Primjer:
#include <iostream>
#include <cmath> // ukljucili smo biblioteku cmath
using namespace std;

int main()
{
double baza, eksponent, rezultat;
cout << "Unesite broj ";
cin >> baza;
cout << "Unesite eksponent ";
cin >> eksponent;
rezultat = pow(baza, eksponent);
cout << "Rezultat = " << rezultat;

7
char x;
cin >> xreturn 0;
}

Logički operatori
Logički operator je C++ operator za Booleovu operaciju NOT. Ima samo jedan operator s
svoje desne strane i invertira ga, proizvodeći false je ili njegov operand true, a true ako je
njegov operator false. U osnovi, vraća suprotnu Booleovu vrijednost evaluacije svog
operatora.
Primjer:
1 !(5==5)
2 !6<=4)
3 !true
4 !false

Logički operatori &&i ||koriste se pri evaluaciji dvaju izraza za dobivanje jednog relacijskog
rezultata. Operator && odgovara Booleovoj logičkoj operaciji I, koja daje true rezultat ako su
oba njegova operanda true, i false inače. Sljedeća tablica prikazuje rezultat operatora koji &&
procjenjuje izraz a&&b:

Tablica 4.: Operator I


&& Operator (i)
a b a&&b
true true true
true false false
false true false
false false false

Operator ||odgovara Booleovoj logičkoj operaciji OR, koja daje true rezultat ako je bilo koji
od njegovih operanda true, tako da je lažan samo kada su oba operanda lažna. Evo mogućih
rezultata a||b:
Tablica 5.: Operatori ILI
OPERATOR (ili)
a b a || b
true true true
true false true
false true true
false false false

8
Na primjer:
1 ( (5==5) && (3>6) )
2((5==5) ||(3>6) )

Kada koristi logičke operatore, C++ samo procjenjuje ono što je potrebno s lijeva na desno da
bi došao do kombiniranog relacijskog rezultata, zanemarujući ostalo. Stoga, u posljednjem
primjeru ( (5==5)||(3>6)), C++ prvo procjenjuje 5==5je li true, a ako jest, nikada ne
provjerava 3>6je li true ili nije. To je poznato kao procjena kratkog spoja i funkcionira ovako
za ove operatore:

Tablica 6.

Operator Kratki spoj


&& Ako je izraz s lijeve strane false, kombinirani rezultat je false(izlaz s
desne strane se nikad ne evaluira).
|| Ako je izraz s lijeve strane true, kombinirani rezultat je true(izraz s desne
strane nikad ne evaluira).

Ovo je uglavnom važno kada desni izraz ima nuspojave, kao što je promjena vrijednosti:
if( (i<10) && (++i<n) ) {/*…*/}
Ovdje bi se kombinirani uvjetni izraz povećao iza jedan, ali samo ako je uvjet s lijeve strane ,
jer &&se true inače uvjet na desnoj strani ( ++i<n) nikada ne vrednuje.
Operatori uspoređivanja
U programskom jeziku C++ kao i u mnogim drugim programskim jezicima postoje odnosni
operatori. Takvi operatori se npr. koriste ako želite napraviti program koji će iz baze podataka
odrediti osobe sa više od 30 godina i slično.
Evo tih odnosnih operatora:
Tablica 7.
Operator Značenje
> Više od …
< Maje od…
>= Više ili jednako…
<= Manje ili jednako…
== Jednako
!= Različito
Operatori uspoređivanja
Kao i aritmetički operatori, odnosni operatori su binarni tj. uspoređuju dva operanda. Naredba
sa dva operanda i odnosnim operatorom zove se odnosna naredba. Rezultat odnosne naredbe
je Boolean vrijednost odnosno istinu ili laž (true ili false). S ovom tablicom možete vidjeti
kako to funkcionira

9
Tablica 8.
Odnosna naredba Vraćena vrijednost
4 == 4 Istina
4<4 Laž
4 <= 4 Istina
4>4 Laž
4 != 4 Laž
4 == 5 Laž
4<5 Istina
4 >= 5 Laž
4 != 5 Istina

U ovoj tablici se koriste konkretne ( literal ) vrijednosti koje ne mogu biti promijenjene. 4 je
konkretna vrijednost (konstanta), i ona se ne može mijenjati (moglo bi se mijenjati da je umje-
sto konstanta koristimo varijable)

Isprobajmo sada ovaj kod koji umjesto konstanti koristi varijable


#include <iostream>
using namespace std;
int main()
{
int a = 4, b = 5;
cout << (a > b) << endl;
cout << (a >= b) << endl;
cout << (a == b) << endl;
cout << (a <= b) << endl;
cout << (a < b) << endl;

char x;
cin >> x;
return 0;
}
Ovaj program će ispisati:
0
0
0
1
1
S time da 0 predstavlja laž (false) a 1 istinu (true)

10
11
Funkcije
U većini programa postoje cjeline koje se ponavljaju više puta. Kako bi se izbjeglo opetovano
pisanje istih ili vrlo sličnih dijelova programa, može ih se izdvojiti, imenovati i spremiti na za
to predviđenu lokaciju. Izdvojeni nizovi naredbi koji čine logičke cjeline, a obavljaju točno
utvrđene zadatke nazivaju se funkcije. Moguće je:

 stvoriti vlastite funkcije pa ih potom rabiti u svom programu


 koristiti već postojeće i za uporabu pripremljene funkcije pohranjene u biblioteke.

Biblioteke se isporučuju uz program C++ pa ih svaki programer može uključiti u svoj pro-
gram i zatim rabiti njihove funkcije.

Deklaracija funkcije

Poput varijable i funkciju treba deklarirati tj. najaviti i jednoznačno odrediti. Pri deklaraciji
funkcije osim njenog naziva navodi se tip funkcije, tj. tip podatka koji funkcija vraća poziva-
telju kao rezultat svog rada (izlazni podaci) te broj i tip podataka koji se predaju funk-
ciji prilikom njezina poziva (argumenti, ulazni podaci).
Naziv funkcije se zadaje poštujući pravila tvorbe simboličkih imena (identifikatora).
Tablica 9.
Opći oblik deklaracije funkcije
tip funkcije naziv funkcije (popis argume-
nata)

Tablica 10.
Primjer deklaracije funkcije
float volumen_kvadra (float a, float b, float c) Naziv: volumen_kvadra
Tip funkcije: realni broj
Argumenti: tri realna broja

Definicija funkcije

Svaka se funkcija sastoji od skupa naredbi koje određuju što i kako funkcija radi. Taj se skup
naredbi naziva tijelo funkcije. Tijelo funkcije započinje nakon otvorene vitičaste zagrade ({),
a završava zatvorenom vitičastom zagradom (}).
Zbog preglednosti uobičajeno je tijelo funkcije pisati uvučeno u odnosu na ostali izvorni kôd.
Tijelo funkcije se sastoji od naredbi. Svaka naredba završava znakom točka-zarez (;). Više
naredbi se može zapisati u jednome retku, ali svaka od njih mora završiti znakom točka-zarez
(;). Naredba se može protezati i kroz nekoliko redaka; važno je samo da na kraju bude znak
točka-zarez (;).
Funkcija završava ključnom riječi return. Iza ključne riječi return se zapisuje podatak kojeg
funkcija vraća pozivatelju kao rezultat svog rada (u primjeru koji slijedi funkcija vraća sadržaj
varijable v).

12
Tablica 11.
Funkciju volumen_kvadra
float volumen_kvadra (float a, float b, float c)
{
float v;
v=a*b*c;
return v;
}

Poziv funkcije

Funkcija se izvršava tako da ju se „pozove“ u glavnom programu. Funkcija se poziva navođe-


njem njenog naziva i argumenata zapisanih u redoslijedu koji je zadan deklaracijom.
Tablica 12.
Poziv funkcije volumena_kvadra
vol=volumen kvadra(x,y,z);

Jedina funkcija koja se automatski pozove, prilikom startovanja aplikacije je main funkcija.
Naredbe u main se izvršavaju redom odozdo na dole i kada se završi posljednja naredba pro-
gram se završava. Ako u projektu imamo definirano još funkcija one se neće izvršiti same od
sebe. Da bi program iz main nastavio izvršenje u nekoj drugoj funkciji, jedna od naredbi u
main mora biti poziv neke druge.
U primeru na slici 3 poziva se funkcija max:

cout<<"Veći broj je "<<max(A,B);

Deklaracija poziva metode, u opštim slučaju izgleda:

naziv_funkcije(parametar1,parametar2,....);

Parametri koji se prosljeđuju funkciji, se kopiraju redom u parametre definirane u definiranoj


metodi(vidi sliku 2). U definiciji metode se ispred naziva parametra stavlja tip podatka.

int max(int a, int b)


Ovdje se zapravo rezervira nova memorija označena sa a i b koja prima kopije vrijednosti pa-
rametara iz poziva funkcije:
max(A , B);
U pozivu se ispred parametra ne stavlja tip podatka.

13
STRUKTURA PROGRAMA
Programska struktura je ustrojstvo programa, tj. način i redoslijed rješavanja pojedinih ma-
njih radnji da bi se došlo do konačnog rješenja zadatka. Nekoliko je programskih struktura
koje se ponavljaju u mnogim računalnim programima. To su:

 pravocrtna programska struktura,


 struktura grananja
 struktura petlje

Pravocrtna struktura

Samo u slučaju rješavanja najjednostavnijih zadataka, programska struktura je pravocrtna i


program se uvijek izvršava istim slijedom naredbi. Naredbe ove inačice pseudo jezika za pra-
vocrtnu programsku strukturu su:

Tablica 13.

Opis Pseudo jezik


Unos Ulaz
Ispis Izlaz
Operator pridruživanja :=

Zadatak :
Potrebno je unijeti cijenu proizvoda c i postotak sniženja p pa izračunati cijenu proizvoda na-
kon sniženja i ispisati je.
Algoritam zadatka napisati pseudo jezikom.

Primjer:
Ulaz (c, p);
s := c –(c*p)/100;
izlaz (s);

Struktura granja

Grananje je programska struktura koja omogućuje različit tijek programa, ovisan o rezultatu
postavljenog uvjeta. To je važna struktura bez koje bi mogućnost rješavanja zadataka računa-
lom bila vrlo ograničena. Rezultat postavljenog uvjeta mora biti jedno od dva stanja:
true/false, da/ne, istina/laž, 1/0. Vrijednost rezultata uvjeta bit će 1 ako je uvjet zadovoljen i 0
ako uvjet nije zadovoljen.

Dijelovi programa koji se uvjetno izvode, grupiraju se u skupine ili blokove naredbi. Svaki
se blok naredbi u ovoj inačici pseudo jezika omeđuje parom otvorena i zatvorena vitičasta za-
grada ({ }). Ako blok naredbi ima samo jednu naredbu zagrade se mogu izostaviti. Blokovi
naredbi se obično pišu uvučeno zbog preglednosti.

14
U dijagramu tijeka se za grananje koristi geometrijski lik romb:
Slika 1. Dijagram tijeka grananja

Potrebiti izrazi ove inačice pseudo jezika za strukturu grananja su:


Tablica 14.
Opis Pseudo jezik
Grananje Ako je uvjet onda
Naredba 1
Inače
Naredba 2;
Blok naredbi {
}

Zadatak :
Potrebno je unijeti prirodni broj pa provjeriti da li je taj broj istodobno djeljiv sa 7 i s 9. Ispi-
sati rezultat. Algoritam zadatka napisati pseudo jezikom i nacrtati dijagram tijeka.
ulaz (x);
s :=x MOD 7;
d :=x MOD 9;
ako je ((s = 0) I (d = 0)) onda
izlaz („Broj je djeljiv sa 7 i s 9“)
inače
izlaz („Broj nije djeljiv sa 7 i s 9“);

15
Slika 2.: Dijagram tijeka prethodnog zadatka

Struktura petlje

Često je u programu potrebno ponoviti neku radnju više puta. Da se ne bi ista naredba pisala
više puta, postoji programska struktura petlje koja omogućava ponavljanje jedne ili više na-
redbi.

Petlja može biti:

 bezuvjetna, pri čemu se izvršava unaprijed zadan broj puta


 uvjetna pri čemu broj ponavljanja petlje ovisi o postavljenom uvjetu.

Naredbe ove inačice pseudo jezika za strukturu petlje su:


Tablica 15.
Opis Pseudo jezik
Petlja s unaprijed poznatim brojem ponav- za b := p do k činiti
ljanja naredba;
Petlja kod koje nije unaprijed poznat broj dok je uvjet činiti
ponavljanja, a uvjet se provjerava na poče- naredba;
tku petlje
Petlja kod koje nije unaprijed poznat broj ponavljati
ponavljanja, a uvjet se provjerava na kraju naredba;
petlje dok je uvjet;

16
Zadatak :
Potrebno je unijeti 100 cijelih brojeva. Prije svakog unosa broja ispisati tekst “Unesi broj”.
Algoritam zadatka napisati pseudo jezikom i nacrtati dijagram tijeka.
za k := 1 do 100 činiti
{
izlaz („Unesi broj“);
ulaz (x);
}
U ovom se primjeru petlja ponavlja sto puta. To je ostvareno naredbom:

za k := 1 do 100 činiti

Pri svakom prolazu petlje vrijednost varijable k se poveća za jedan (od početne vrijednosti 1
do krajnje vrijednosti 100).
Slika 3.

17
ZNAKOVI
Ako je podatak znak, njegova oznaka tipa je char. Varijabli označenoj s char može se pridru-
žiti:

 jedan znak unutar jednostrukih navodnika


ili
 ASCII vrijednost tog znaka (dekadska protuvrijednost).

Tablica 16.

Primjer pridruživanja vrijednosti varijablama tipa char


char slovo1='A'; Pridružen je znak označen jednostrukim
navodnicima.
char slovo2=65; Pridružen je dekadski ekvivalent ASCII
znaka.

U gornjem primjeru u varijable slovo1 i slovo2 će se u oba slučaja spremiti ista vrijednost,
znak A i to u obliku broja koji predstavlja ASCII vrijednost znaka A. Programer može birati
način pridruživanja koji mu je pogodniji.

Za pohranu znaka u memoriji je predviđen 1 bajt (8 bitova). 1 bajt omogućava pohranu jed-
nog od 28 = 256 različitih znakova.

Zadatak 1
Prvi zadatak se temelji na pravocrtnoj strukturi. Da bi dobili rješenje zadatka treba unijeti
vrijeme u sekundama te će nam program izračunati koliko je to sati, minuta i sekundi.
Programski kod napisan u Dev-C++
#include<iostream>
using namespace std;
int main()
{
int s, sek, min, sat, ostatak;
cout<<"Upisi vrijeme u sekundama:";
cin>>s;
sat=s/3600;
ostatak=s%3600;
min=ostatak/60;
sek=ostatak%60;
cout<<s<<" sekundi je "<<sat<<" sati, "<<min<<" minuta i "<<sek<<" sekundi."<<endl;

18
return 0;
}
Slika 4.: Rješenje Zadatka 1

Zadatak 2
Drugi zadatak temelji se na strukturi grananja. Program radi tako da na osnovu uneseni
podataka, program izračuna opseg ili površinu trokuta ovisno o našoj želji. Za računanje
opsega moramo upisati 1, a za površinu 2 bilo koji drugi broj numerirat će se kao pogrešan
unos i program će nas vratiti na poćetak.
Programski kod napisan u Dev-C++
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout<<"Program na osnovu unesenih vrijednosti stranica trokuta racuna ";
cout<<" opseg ili povrsinu, ovisno o zelji korisnika"<<endl;
float a,b,c,o,p,p1,pov;
int i;
cout<<"Za izracun opsega upisi 1, a za povrsinu 2:";

19
cin>>i;
cout<<"a = ";
cin>>a;
cout<<"b = ";
cin>>b;
cout<<"c = ";
cin>>c;
if((a<=0)||(b<=0)||(c<=0))
{
cout<<"Vrijednost stranice trokuta ne moze biti <=0 " <<endl;
goto kraj;
}
if((a+b<=c)||(b+c<=a)||(c+a<=b))
{
cout<<" Unesene vrijednosti nisu stranice trokuta." <<endl;
goto kraj;
}
switch(i)
{
case 1:
o=a+b+c;
cout<<"Opseg trokuta je O= "<<o<<endl;
break;
case 2:
cout<<"Povrsina se racuna po Herenovoj formuli";
p=(a+b+c)/2;
p1=p*((p-a)*(p-b)*(p-c));
pov=sqrt(p1);
cout<<" Povrsina trokuta je P= "<<pov<<endl;
break;
default:

20
cout<<" Pogresan unos. Treba unesti broj 1 ili 2! " <<endl;
}
kraj:return 0;
}
Slika 5. Rješenje Zadatka 2

21
Zaključak
U svom završnom radu obradio sam programski jezik C++, koji je jedan od najpopularnijih
objektno orijentiranih programa. Za ovaj program sam se odlučio iz razloga što predstavlja
odličan temelj za ulazak u svijet programiranja, te se koristi u brojnim srednjim školama.
U završnom radu sam obradio povijesni razvoj programa, sintaksu i strukturu programa. Kroz
rad pojasnio sam i varijable, operatore i funkcije koje su temelj za rad u programu. Također
obuhvatio sam i strukturu programa C++.
Osim teorijskog dijela programa C++ obradio sam nekoliko primjera zadataka u kojima sam
koristio već navedene teorijske dijelove programa. U prvom zadatku sam napravio
jednostavni programski kod koji koristi pravocrtnu strukturu, a služi nam da uneseno vrijeme
u sekundama preračuna i prikaže rezultat u satima, minutama i sekundama.
U drugom zadatku prikazao sam kodom složeniji primjer strukture grananja, koji nam služi za
računanje površine ili opsega trokuta ovisno o našem izboru. Primjer složene strukture u
programu dolazi do izražaja kada unesemo krivu vrijednost, program nas obavještava da je
unesena kriva ili netočna vrijednost te nas vraća na početak programa.
Cijeli sadržaj rada grafički je popraćen slikama i tablicama s primjerima obuhvaćenih tema ili
polutema.
Tijekom svog školovanja u radu s programskim jezikom C++ stekao sam osnove znanja i
vještine u programiranju, te smatram C++ odličnom odskočnom daskom u svijet ozbiljnijeg
programiranja.

22
Popis literature
1. Sarić Slaven (2007) „C#“, Varaždin
2. Jakopec Ratko (2006) „C++“, Varaždin
3. W3schools - C++ Tutorial https://www.w3schools.com/cpp/default.asp
4. Cplusplus - https://www.cplusplus.com/doc/tutorial/operators/
5. Tutorijali.net - C++ Tutorial http://www.tutorijali.net/cpp/odnosni-operatori
6. Codecademy - C++ https://www.codecademy.com/
7. Guru99 - What is C++? https://www.guru99.com/cpp-tutorial.html
8. Uvod u C - Jezik https://www.znanje.org/knjige/computer/c/c_mm/jezik.htm
9. Loomen - Uvod u programiranje https://loomen.carnet.hr/course/view.php?id=2591

23

You might also like