Struktura programa C Osnovna struktura programa Razlaganjem glavnog

  • Slides: 44
Download presentation
Struktura programa C++

Struktura programa C++

Osnovna struktura programa �Razlaganjem glavnog zadatka na manje cjeline olakšava se izrada programa. �Zasebnim

Osnovna struktura programa �Razlaganjem glavnog zadatka na manje cjeline olakšava se izrada programa. �Zasebnim rješavanjem pojedinih cjelina nastaju funkcije. �Struktura programa - način na koji se funkcije slažu i povezuju u cjelovit i smislen program. STRUKTURA PROGRAMA, C++ 2

Funkcije �Funkcije su nizovi naredbi koji čine logičke cjeline, a obavljaju određene zadatke. �Mogu

Funkcije �Funkcije su nizovi naredbi koji čine logičke cjeline, a obavljaju određene zadatke. �Mogu biti: načinjene i za upotrebu pripremljene funkcije (one su pohranjene u bibliotekama), vlastite funkcije. STRUKTURA PROGRAMA, C++ 3

Funkcije �Za upotrebu funkcija treba znati: kako ih deklarisati, kako ih definisati, kako ih

Funkcije �Za upotrebu funkcija treba znati: kako ih deklarisati, kako ih definisati, kako ih pozvati. STRUKTURA PROGRAMA, C++ 4

Deklaracija funkcije tip_funkcije naziv_funkcije (popis argumenata) tip podatka kojeg funkcija vraća pozivatelju STRUKTURA PROGRAMA,

Deklaracija funkcije tip_funkcije naziv_funkcije (popis argumenata) tip podatka kojeg funkcija vraća pozivatelju STRUKTURA PROGRAMA, C++ broj i tip podataka koji se predaju funkciji prilikom njenog poziva (argumenti) 5

Definicija funkcije �Funkcija - sačinjena od skupa naredbi , koji se naziva tijelo funkcije.

Definicija funkcije �Funkcija - sačinjena od skupa naredbi , koji se naziva tijelo funkcije. �Svaka naredba završava znakom tačka-zarez (; ). �Tijelo funkcije zapisuje se unutar vitičastih zagrada, a zbog preglednosti, se obično piše uvučeno u odnosu na ostali izvorni kod. 6

Naredbe �Više se naredbi može zapisati u jednome retku, ali svaka od njih mora

Naredbe �Više se naredbi može zapisati u jednome retku, ali svaka od njih mora završiti znakom tačka-zarez (; ). �Naredba se može protezati i kroz nekoliko redaka: STRUKTURA PROGRAMA, C++ 7

Tijelo funkcije �Tijelo funkcije završava naredbom return, a uz return se zapisuje podatak kojeg

Tijelo funkcije �Tijelo funkcije završava naredbom return, a uz return se zapisuje podatak kojeg funkcija (kao svoj rezultat) vraća pozivatelju. tijelo funkcije STRUKTURA PROGRAMA, C++ 8

Poziv funkcije �Ako se funkcija želi koristiti u programu treba je pozvati. �Poziva se

Poziv funkcije �Ako se funkcija želi koristiti u programu treba je pozvati. �Poziva se navođenjem njenog naziva i argumenata navedenih u redoslijedu koji je zadan deklaracijom. �Na sljedećem slajdu je primjer u kome se u glavnom programu poziva funkcija volumen_kvadra STRUKTURA PROGRAMA, C++ 9

#include<iostream> using namespace std; float volumen_kvadra (float a, float b, float c) { float

#include<iostream> using namespace std; float volumen_kvadra (float a, float b, float c) { float V; V= a*b*c; return V; } int main() { float x, y, z, vol; cout<<"Unesi vrijednosti bridova funkcija kvadra: "<<endl; cin>>x>>y>>z; vol=volumen_kvadra(x, y, z); cout<<"Volumen kvadra iznosi”<<vol<<endl; return 0; } poziv funkcije STRUKTURA PROGRAMA, C++ 10

Funkcija main �Programi mogu sadržavati mnogo funkcija. �Kako bi se “znalo” na kojem mjestu

Funkcija main �Programi mogu sadržavati mnogo funkcija. �Kako bi se “znalo” na kojem mjestu započinje glavni program, uvodi se funkcija main (“ulazna točka”). Ako program ne sadrži funkciju main kompajler javlja grešku. STRUKTURA PROGRAMA, C++ 11

Deklaracija funkcije main � Postoji više oblika funkcije main. U ovim će se vježbama

Deklaracija funkcije main � Postoji više oblika funkcije main. U ovim će se vježbama koristiti oblik: int main ( ) � Funkcija main završava naredbom return 0. STRUKTURA PROGRAMA, C++ 12

Main () – return 0 �Ako neka od naredbi funkcije main izazove prekid programa,

Main () – return 0 �Ako neka od naredbi funkcije main izazove prekid programa, pri izvršenju se neće stići do naredbe return 0 i ona se neće izvršiti. �Dakle, 0 je poruka pozivatelju (a to je obično operativni sistem) da su sve naredbe funkcije main izvršene ispravno. STRUKTURA PROGRAMA, C++ 13

Funkcija main int main() { return 0; } STRUKTURA PROGRAMA, C++ 15

Funkcija main int main() { return 0; } STRUKTURA PROGRAMA, C++ 15

Prvi program �Ako se pokrene prevođenje i povezivanje, sve će proći bez pogreške. Kada

Prvi program �Ako se pokrene prevođenje i povezivanje, sve će proći bez pogreške. Kada se taj program izvrši, neće se dogoditi ništa jer u tijelu funkcije između vitičastih zagrada nema naredbi osim return 0. STRUKTURA PROGRAMA, C++ 16

Pretprocesorske naredbe �Navode se prije main funkcije, a izvršavaju prije početka prevođenja izvornog koda.

Pretprocesorske naredbe �Navode se prije main funkcije, a izvršavaju prije početka prevođenja izvornog koda. �Program pretprocesor dopunjuje izvorni kôd te se zatim takav dopunjeni (modificirani) kôd prevodi. �Opći oblik pretprocesorskih naredbi je: #naredba parametri Ne završavaju znakom tačka-zarez (; )! STRUKTURA PROGRAMA, C++ 17

include �Jedna od pretprocesorskih naredbi: #include <naziv_biblioteke> �Naredbom include se u izvorni kod programa

include �Jedna od pretprocesorskih naredbi: #include <naziv_biblioteke> �Naredbom include se u izvorni kod programa uključuje sadržaj biblioteke koja je navedena unutar znakova < >. (Isto kao da je zapisan cjelokupni sadržaj odabrane biblioteke. ) STRUKTURA PROGRAMA, C++ 18

include �Kada se naredbom include uključi željena biblioteka, korisniku su na raspolaganju sve funkcije

include �Kada se naredbom include uključi željena biblioteka, korisniku su na raspolaganju sve funkcije te biblioteke. �U programu se može koristiti proizvoljan broj naredbi include. STRUKTURA PROGRAMA, C++ 19

Ulazni i izlazni tokovi �Da bi program mogao primati podatke i prikazivati rezultate mora

Ulazni i izlazni tokovi �Da bi program mogao primati podatke i prikazivati rezultate mora komunicirati s ulazno/izlaznim uređajima (tastaturom, monitorom, diskom i sl. ). �Ta se komunikacija u C++ ostvaruje pomoću ulaznih i izlaznih tokova (engl. input and output streams). STRUKTURA PROGRAMA, C++ 20

Ulazni i izlazni tokovi �Ulazni tok prima podatke od ulaznog uređaja (s konzole) i

Ulazni i izlazni tokovi �Ulazni tok prima podatke od ulaznog uređaja (s konzole) i predaje ih programu. �Izlazni tok prima podatke od programa i prosljeđuje ih izlaznom uređaju (konzoli). �Ulazno-izlaznim tokovima se rukuje funkcijama biblioteke iostream. STRUKTURA PROGRAMA, C++ 21

#include <iostream> �iostream je biblioteka koja sadrži niz ulazno- izlaznih funkcija za rukovanje ulaznoizlaznim

#include <iostream> �iostream je biblioteka koja sadrži niz ulazno- izlaznih funkcija za rukovanje ulaznoizlaznim tokovima. �Dvije najčešće korištene funkcije su cout i cin. �Programer ih poziva prema potrebi u svoj program. STRUKTURA PROGRAMA, C++ 23

cout � Funkcija cout zajedno s operatorom ispisa << omogućava ispis podataka na konzolu

cout � Funkcija cout zajedno s operatorom ispisa << omogućava ispis podataka na konzolu koja je u većini slučajeva zaslon monitora. Npr. : cout<<13; Posljedica: na zaslonu monitora ispisat će se 13. STRUKTURA PROGRAMA, C++ 24

cout �S desne strane operatora ispisa može biti varijabla, brojevna vrijednost ili znakovni niz.

cout �S desne strane operatora ispisa može biti varijabla, brojevna vrijednost ili znakovni niz. brojevna konstanta vrijednost varijabla znakovni niz STRUKTURA PROGRAMA, C++ 25

cout �Moguće je ulančavanje operatora ispisa koje se izvodi s lijeva na desno. STRUKTURA

cout �Moguće je ulančavanje operatora ispisa koje se izvodi s lijeva na desno. STRUKTURA PROGRAMA, C++ 26

endl �Da svi podaci ne bi bili ispisani u istome retku, treba koristiti komandu

endl �Da svi podaci ne bi bili ispisani u istome retku, treba koristiti komandu endl. �Zadatak joj je pokazivač ispisa pomaknuti na početak sljedećeg retka na zaslonu. �Komanda endl je pohranjena u biblioteci iostream. STRUKTURA PROGRAMA, C++ 27

endl �Ako se u prethodni primjer doda endl, ispis će izgledati ovako: STRUKTURA PROGRAMA,

endl �Ako se u prethodni primjer doda endl, ispis će izgledati ovako: STRUKTURA PROGRAMA, C++ 28

endl �endl je moguće dodati i u slučaju ulančavanja operatora ispisa. Rezultat je isti:

endl �endl je moguće dodati i u slučaju ulančavanja operatora ispisa. Rezultat je isti: STRUKTURA PROGRAMA, C++ 29

Ulančavanje operatora << �Ako se pri ulančavanju operatora ispisa predugi redak želi prelomiti, to

Ulančavanje operatora << �Ako se pri ulančavanju operatora ispisa predugi redak želi prelomiti, to je potrebno učiniti ispred operatora ispisa. Npr: cout<<34<<a<<" Moguc je i ispis niza znakova"; može se prelomiti i zapisati ovako: cout<<34<<a <<" Moguc je i ispis niza znakova"; STRUKTURA PROGRAMA, C++ 30

cin � Funkcija cin zajedno s operatorom unosa >> omogućava unos podataka s konzole

cin � Funkcija cin zajedno s operatorom unosa >> omogućava unos podataka s konzole što je u većini slučajeva tastatura. Npr. : cin>>a; Posljedica: očekuje se unos podatka s tastature, podatak će biti pohranjen u varijablu a. STRUKTURA PROGRAMA, C++ 31

cin Enter Nastavak izvršavanja programa se prekida sve dok se ne unese podatak i

cin Enter Nastavak izvršavanja programa se prekida sve dok se ne unese podatak i pritisne tipka Enter! STRUKTURA PROGRAMA, C++ 32

Ulančavanje operatora >> � Moguće je ulančavanje operatora unosa koje se izvodi s lijeva

Ulančavanje operatora >> � Moguće je ulančavanje operatora unosa koje se izvodi s lijeva na desno. Ulazni se podaci tada upisuju: jedan ispod drugog, a nakon svakog unosa Enter, u istome retku, odvojeni prazninama, a nakon posljednjeg unosa Enter. STRUKTURA PROGRAMA, C++ 33

namespace �Korisnik može u istom programu koristiti više biblioteka. �Autori tih biblioteka mogu biti

namespace �Korisnik može u istom programu koristiti više biblioteka. �Autori tih biblioteka mogu biti različiti i može se dogoditi da npr. koriste ista imena za funkcije koje imaju različitu namjenu. STRUKTURA PROGRAMA, C++ 38

namespace �Šta će se dogoditi ako korisnik u istom programu koristi obje biblioteke iz

namespace �Šta će se dogoditi ako korisnik u istom programu koristi obje biblioteke iz primjera, a pozove funkciju alfa? �Koja će funkcija alfa biti izvršena? Ona iz biblioteke 1? Ona iz biblioteke 2? STRUKTURA PROGRAMA, C++ 39

namespace �Da bi se izbjegla zabuna, funkcije pojedine biblioteke dodatno se označavaju ključnom riječju

namespace �Da bi se izbjegla zabuna, funkcije pojedine biblioteke dodatno se označavaju ključnom riječju namespace uz zadavanje dodatnog imena. Oblik: namespace dodatno_ime �Zadatak označavanja je jednoznačno odrediti funkcije neke biblioteke. STRUKTURA PROGRAMA, C++ 40

namespace �U primjeru se funkcije biblioteke 1 označavaju dodatnim imenom prva, a funkcije biblioteke

namespace �U primjeru se funkcije biblioteke 1 označavaju dodatnim imenom prva, a funkcije biblioteke 2 dodatnim imenom druga. STRUKTURA PROGRAMA, C++ 41

namespace �Da bi se funkcije označene dodatnim imenom učinile aktivnima koristi se: operator dodjele

namespace �Da bi se funkcije označene dodatnim imenom učinile aktivnima koristi se: operator dodjele područja (dvije dvotočke : : ) ili naredba using. STRUKTURA PROGRAMA, C++ 42

Operator dodjele područja �Pri pozivanju funkcije se uz željeno ime funkcije navodi i njeno

Operator dodjele područja �Pri pozivanju funkcije se uz željeno ime funkcije navodi i njeno dodatno ime. Npr. : STRUKTURA PROGRAMA, C++ 43

Operator dodjele područja �Kada se u program želi uključiti više funkcija, a koristi se

Operator dodjele područja �Kada se u program želi uključiti više funkcija, a koristi se aktivacija operatorom dodjele područja, pri pozivu svake od funkcija uz njeno ime treba navesti i njeno dodatno ime. STRUKTURA PROGRAMA, C++ 44

Ključna riječ using �Ako želimo sve funkcije označene dodatnim imenom odjednom učiniti aktivnima koristi

Ključna riječ using �Ako želimo sve funkcije označene dodatnim imenom odjednom učiniti aktivnima koristi se naredba: using namespace dodatno_ime STRUKTURA PROGRAMA, C++ 45

Ključna riječ using �Ako se koristi naredba using namespace prva, funkcije biblioteke označene dodatnim

Ključna riječ using �Ako se koristi naredba using namespace prva, funkcije biblioteke označene dodatnim imenom prva pozivaju se samo njihovim imenom. STRUKTURA PROGRAMA, C++ 46

Standardne funkcije - std �U programu C++ postoji skupina standardnih funkcija koje se redovno

Standardne funkcije - std �U programu C++ postoji skupina standardnih funkcija koje se redovno isporučuju uz program. �Nazivaju se zajedničkim imenom: standardna biblioteka (engl. standard library). �Funkcije standardne biblioteke pohranjene su u različitim bibliotekama ali su sve po dogovoru označene istim dodatnim imenom std. STRUKTURA PROGRAMA, C++ 47

standard library STRUKTURA PROGRAMA, C++ 48

standard library STRUKTURA PROGRAMA, C++ 48

Standardne funkcije - std �Ako korisnik želi korstiti neku od standardnih funkcija mora pri

Standardne funkcije - std �Ako korisnik želi korstiti neku od standardnih funkcija mora pri pozivu te funkcije pisati: std: : ime_funkcije � ili će na početku svog programa napisati: using namespace std; STRUKTURA PROGRAMA, C++ 49

Osnovna struktura rograma #include <iostream> using namespace std; int main() { return 0; }

Osnovna struktura rograma #include <iostream> using namespace std; int main() { return 0; } STRUKTURA PROGRAMA, C++ 50