Potprogrami

(Funkcije)

Potprogram je deo nekog programa pomoću kojeg se rešava deo zadatka tog programa (neki potproblem).

 

Uloga potprograma je u tome da omogući razlaganje nekog većeg, složenog problema na više manjih, jednostavnijih zadataka.

 

Koji su to potprogrami sa kojima ste se do sada susreli u rešavanju zadataka?

printf – za ispis podataka na ekran
scanf – za unos podatka sa tastature
getch – za unos karaktera preko tastature
system(“cls“) – za brisanje ekrana 

Korisnički potptrogrami su oni koje kreira programer.

Ovo su bibliotečke funkcije.

Osobina nekog programskog jezika da programi napisan u njemu mogu da se napišu uz pomoć više potprograma naziva se MODULARNOST (module znači celina,deo, u našem slučaju potprogram

Razlozi zašto je važno da se neki složeniji program razloži na manje potprograme su sledeći:

 

- Jednostavnost – Lakše je neki problem prvo razložiti na manje probleme i tako ih rešavati jedan po jedan nego rešiti odjednom jedan veliki problem. 

 

- Lakšeg uočavanja i otklanjanja grešaka – ako program iz nekog razloga ne radi i ukoliko je napisan pomoću potprograma znaćemo koji to potprogram ne radi  Pisanjem programa pomoću potprograma se povećava čitljivost koda.

 

- Ponova upotrebljivost programa (reusability) – jednom napisan potprogram ponovo da se upotrebi onoliko puta koliko je to potrebno 

DEFINICIJA FUNKCIJE

//Konkretan primer izgleda funkcije Zbir
int Zbir(int a, int b)
{
	int c;
	c=a+b;
	return c;
} 

//Opšti oblik definicije funkcije:

tip_vrednosti naziv_funkcije(niz_argumenata)

{

       telo_funkcije

}  

Tip vrednosti funkcije

Koji su osnovni tipovi promenljivih u programskom jeziku C?

int Zbir(int a, int b)

{

    int c;

    c=a+b;

    return c;

Za funkcije koje nemaju povratnu vrednost koristi se generički tip podataka void!!!

 

Vrednost funkcije može da bude samo jedan podatak a ne može da bude niz podataka.

 

Ako se izostavi tip vrednosti funkcije pri definisanju funkcije podrazumevani tip vrednosti funkcije je celobrojni tip!!!
Zbir(int a, int b)  - tip vrednosti je celobrojni tip.

 

Povratna vrednost predstavlja rezultat rada funkcije i preko nje funckija vraća rezultat svog rada spoljašnjem kodu.

 

Argumenti funkcije

Predstavljaju početne podatke na osnovu kojih se izračunava vrednost funkcije. Nalaze se u okviru poluokruglih zagrada.

 

Argumenti i povratna vrednost funkcije predstavljaju njen interfejs.

 

Za razliku od naredbi za definiciju (deklaraciju) podataka, ovde se za svaki argument mora navesti oznaka tipa.

Vrste argumenata


Postoje dve vrste argumenata:

 

//1)	Formalni argumenti 
int Zbir(int a, int b)
{
	int c;
	c=a+b;
	return c;
} 

//2)	Stvarni argumenti 
Primer:
void main()
{
      int y,d,f,b;
      d = 5;
      f = 4;
      l = 3;
      y = l + Zbir(d,f);		 
} 

Deklarativne naredbe služe za definisanje podataka koji se koriste u funkciji. Ti podaci su lokalni za funkciju.

//PRIMER:
if(USLOV1)
{
     return IZRAZ;
}
if else(USLOV2)
{
     return izraz2;
} 
else
{
   return izraz3;
}

INTERFEJS FUNKCIJE

Interfejs funkcije čine oni podaci preko kojih funkcija komunicira (razmenjuje podatke) sa spoljnim svetom.

 

Interfejs funkcije čine:

1) Ulazni podaci – to su podaci koji se prenose funkciji po vrednosti 

2) Izlani podatak – to je rezultat rada funkcije koji funkcija vraća spoljnjem svetu preko naredbe return.

3) Ulazno-izlazni podaci -  to su podaci koji se prenose funkciji po adresi 

4) Lokalne promenljive koje su definisane unutar funkcije predstavljaju pomoćne promenljive 

FUNKCIJE I PROCEDURE


Postoje dve vrste potprogama: funkcije i procedure.

 

Funkcije su potprogrami koji na osnovu izvesnog broja argumenata (ne menjaju vrednost argumenata) daju jedan rezultat koji se naziva vrednost funkcije.

//Primer funkcije kvadrat broja:
int Kvadrat(int x)
{
    return x * x;  // Vraća kvadrat broja
}
//Primer: 
odg=getch();
switch(OsnMeni())
c= a+ Zbir(a,b);

Procedure su programi koji na osnovu svojih argumenata daju jedan ili više rezultata menjajući vrednost nekih od svojih argumenata ili jednostavno obavljaju neki zadatak. Procedure ne vraćaju vrednost.

 

Primer: scanf(“%d“,&a) – ovo je funkcija koja se može uzeti kao primer  procedure, sadrži dva argumenta i menja vrednost drugog argumenta, dodeljuje mu vrednost unesenu sa tastature.

void PrikaziPoruku()
{
    printf("Pozdrav!");  // Ne vraća vrednost, samo prikazuje poruku
}

PROTOTIPOVI FUNKCIJA (DEKLARACIJE FUNKCIJA – daje joj se naziv i tip ali ne i memorija)

//Prototip funkcije zbir je:
int Zbir(int a, int b);
//Umesto tela funkcije koristi se ;

Uloga prototipova funkcija (deklaracije ) je u tome da funkcija ne mora da bude definisana pre funkcije main da bi se koristila unutar funkcije main.

Jednostani zadaci:

Uradite sledeće zadatke koristeći funkcije:

1) Napisati program za sabiranje dva cela broja. Napisati funkciju za sabiranje dva cela broja na tri načina:a) funkcija nema argumente i povratnu vrednost, b)funckija ima argumente ali nema povratnu vrednost i c) funkcija ima i argumente i povratnu vrednost.

 

2) Napisati program za računanje površine pravougaonika. Napisati funkciju za računanje površine pravougaonika na tri načina: a) funkcija nema argumente i povratnu vrednost, b)funckija ima argumente ali nema povratnu vrednost i c) funkcija ima i argumente i povratnu vrednost.

 

3) Napisati program za računanje obima pravougaonika. Napisati funkciju za računanje obima pravougaonika tri načina: a) funkcija nema argumente i povratnu vrednost, b)funckija ima argumente ali nema povratnu vrednost i c) funkcija ima i argumente i povratnu vrednost.

4) Napisati program za računanje površine kruga. Napisati funkciju za računanje površine kruga na tri načina: 1) funkcija nema argumente i povratnu vrednost, 2)funckija ima argumente ali nema povratnu vrednost i 3) funkcija ima i argumente i povratnu vrednost.

 

5) Napisati program za računanje obima kruga. Napisati funkciju za računanje obima kruga na tri načina: a) funkcija nema argumente i povratnu vrednost, b)funckija ima argumente ali nema povratnu vrednost i c) funkcija ima i argumente i povratnu vrednost.

 

6) Napisati program za deljenje dva cela pozitivna broja. Napisati funkciju za deljenje dva cela pozitivna broja na tri načina:a) funkcija nema argumente i povratnu vrednost, b)funckija ima argumente ali nema povratnu vrednost i c) funkcija ima i argumente i povratnu vrednost. U sva tri slučaja napraviti zaštitu da ukoliko je delilac jednak nuli ispiše greška umesto količnika. U slučaju da funkcija vraća vrednost vratiti negativnu vrednost!!!

7) Napisati program za računanje površine trougla. Napisati funkciju za računanje površine trougla na tri načina: a) funkcija nema argumente i povratnu vrednost, b)funckija ima argumente ali nema povratnu vrednost i c) funkcija ima i argumente i povratnu vrednost. U sva tri slučaja napraviti zaštitu da ukoliko zbir bilo koje dve stranice nije veći od treće da se ispiše greška umesto površine. U slučaju da funkcija vraća vrednost vratiti negativnu vrednost za površinu!!!

8) Napisati program za računanje obima trougla. Napisati funkciju za računanje obima trougla na tri načina: a) funkcija nema argumente i povratnu vrednost, b)funckija ima argumente ali nema povratnu vrednost i c) funkcija ima i argumente i povratnu vrednost. U sva tri slučaja napraviti zaštitu da ukoliko zbir bilo koje dve stranice nije veći od treće da se ispiše greška umesto obima. U slučaju da funkcija vraća vrednost vratiti negativnu vrednost za obim!!!

Složenijij zadaci:

1) Napisati program  u kojem funkcija vraća vrednost sume cifara unetog celog broja  i ispisuje rezultat na ekran.

2) Napisati program  u kojem funkcija proverava da li je uneti ceo broj prost  i ispisuje rezultat na ekran. Ako je broj nije prost funkcija treba da vrati vrednost 0 a ako jeste onda treba da vrati vrednost različitu od nula.

3) Napisati funkciju za ispis n elemenata niza. Prilikom definicije niza inicijalizovati njegove vrednosti. Broj elemenata niza nije veći od 100.

4) Napisati funkciju za određivanje najvećeg elementa niza. Prilikom definicije niza inicijalizovati njegove vrednosti. Broj elemenata niza nije veći od 100.

5) Napisati funkciju za određivanje sume elementa niza. Prilikom definicije niza inicijalizovati njegove vrednosti. Broj elemenata niza nije veći od 100.

6) Napisati funkciju za određivanje prosečne vrednosti elementa niza. Prilikom definicije niza inicijalizovati njegove vrednosti. Broj elemenata niza nije veći od 100.

7) Napisati funkciju za određivanje broja parnih elementa niza. Prilikom definicije niza inicijalizovati njegove vrednosti. Broj elemenata niza nije veći od 100.

8) Napisa  funkciju za određivanje da li se  element nalazi u nizu. Ukoliko je nalazi potrebno je ispisati njegovu poziciju ukoliko se ne nalazi potrebno je da se ispiše poruka da se ne nalazi u nizu. Prilikom definicije niza inicijalizovati njegove vrednosti. Broj elemenata niza nije veći od 100.

9) Napisa  funkciju za određivanje koliko se puta određeni element nalazi u nizu. Ukoliko je nalazi potrebno je ispisati koliko se puta nalazi, a ukoliko se ne nalazi potrebno je da se ispiše poruka da se ne nalazi u nizu. Prilikom definicije niza inicijalizovati njegove vrednosti. Broj elemenata niza nije veći od 100.

Made with Slides.com