5. Primeri pozivanja funkcije:
Pozivanje funkcije kao operand u
izrazu
z = zbir(k);
Pozivanje funkcije kao argument
funkcije printf
printf(“nZbir = %d “, zbir(k));
6. Za funkciju power koja je data
napiši poziv funkcije kao
argument funkcije print
int power(int base, int n)
{ int i,p;
p=1;
for(i=1;i<=n;i++)
p=p*base;
return p;}
Rešenje: printf("n2^%d =
%3d",i,power(2,i));
7. Prototipovi funkcija
Prototip funkcije je ustvari deklaracija
koja omogućava prevodiocu kontrolu
ispravnosti poziva funkcije. Opšti oblik
prototipa funkcije je:
[tip_vrednosti] ime_funkcije (niz
parametara);
8. Primeri prototipova funkcije
int zbir (int n);
int max (int x,int y);
Ako je funkcija definisana posle mesta
poziva deklaracija je obavezna.
9. Bočni efekti funkcija
Funkcije u jeziku C mogu istovremeno
da daju vrednost funkcije i da stvaraju
bočne efekte.
Parametar pokazivačkog tipa je samo
sredstvo za dolaženje do podatka koji se
obrađuje. Stvarni argument funkcije je taj
obrađivani podatak, čija se adresa
dostavlja preko pokazivača. Zato se
kaže da se pokazivačkim parametrima
argumenti prenose u funkcije pomoću
adrese.
10. Primer izračunavanje obima i
površine pravougaonika :
void pravougaonik (float a, float b, float *pO,
float *pP)
{ *pO = 2*(a+b);
*pP = a*b;}
pravougaonik(a,b,&O,&P); /*Pozivanje
funkcije*/
11. Funkcije i nizovi
Parametri funkcije mogu da budu i nizovi.
Opšti oblik navođenja parametra nizovnog
tipa je:
tip ime_niza[]
gde tip predstavlja tip elemenata niza,
ime_niza je identifikator parametra, a
zagrade [] označavaju da se radi o nizu.
Pri pozivu funkcije navodi se samo ime
niza
( bez [ ]).
12. Primer niz kao parametar
funkcije
int zbir (int a[],int n)
{ int s,i;
for(s=i=0;i<n;i++)
s += a[i];
return s;}
z=zbir(niz,n); /*Pozivanje funkcije*/
13. Primer 1
#include<stdio.h>
#include<stdlib.h>
void f(int x) /*Definicija funkcije f()*/
{ x += 1; /*x = x+1*/
printf("nUnutar funkcije x = %d",x);
return;}
void main()
{ int x=5;
printf("nIzvan funkcije x = %d",x);
f(x); /*poziv funkcije f()*/
printf("nNakon poziva funkcije x = %d",x);
printf("nn");
system("PAUSE");}
15. Primer 3
#include <stdio.h>
int kvadrat(int n);
int main()
{ printf("Kvadrat broja %i je %in", 5,
kvadrat(5));
printf("Kvadrat broja %i je %in", 9,
kvadrat(9));
return 0;}
int kvadrat(int n)
{return n*n;}
16. Zadatak
1. Preraditi primer za izračunavanje
povrsine (p) i obima(o) pravouglaog
trougla tako da se o i p koriste kao
parametri funkcije koji se prenose po
adresi.
2. Napisati program za računanje
površine i obima kvadrata. Koristiti
jednu funkciju za računanje obima i
površine koja ima kao jedini parametar
17. Nizovi i funkcije
#include<stdio.h>
#include<stdlib.h>
void popuni (int a[],int n)
{ int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]); }
void main()
{
int p[40],n,i;
printf("Duzina niza? ");
scanf("%d",&n);
printf("nnElementi niza? ");
popuni(p,n);
printf("nNiz: ");
for(i=0;i<n;i++)
printf("%d ",p[i]);
}
18. Zadatak
Proširiti prethodni primer sa
funkcijama za sortiranje, invertovanje i
rotiranje niza ulevo za jedan korak.
Dati korisniku sansu da izabere opciju.
19. Pokazivači i funkcije
void originalni(int x[],int n);
void inverzni(int x[],int n);
void stampa_niz(int x[], int n, int broj)
{
void (*ptr)(int x[], int n);
if(broj==1)
ptr = originalni;
else
ptr = inverzni;
(*ptr)(x,n);
}
20. Zadatak
1. Preraditi zadatak sa nizovima tako da
funkcije pozivamo preko pokazivaca na
funkciju.
2. Napisati program koji računa površinu
kvadrata, kruga ili jednakostraničnog
trougla. Za računanje koristiti zasebne
funkcije (po jednu za svako geo. telo) i
pokazivač na te funkcije. Dati korisniku
šansu da izabere telo.
22. Zadaci
1. Napisati program koji ima sledece opcije:
unos, ispis, trazenje maksimuma i
sumiranje niza. Obavezno koristiti (tri)
funkcije za navedene opcije.
2. Preraditi prethodni program tako da se
funkcije pozivaju preko pokazivaca na
funkciju.
3. Preraditi prvi zadatak tako da su funkcije u
posebnoj biblioteci sa imenom niz
4. Preraditi prvi zadatak tko da se koristi
samo jedna funkcija koja ima kao
parametar samo niz.
23. Zadaci za samostalan rad
1. Za poznate katete izracunati i ispisati
povrsinu i obim pravouglaog trougla.
Koristiti funkcije za izracunavanje.
2. Napisati program koji određuje
najveći i najmanji od tri cela broja
zadata preko tastature, pomoću
funkcija min(x,y,z) i max(x,y, z).
3. Preraditi prethodni primer uz
korišćenje prototipa.