SlideShare une entreprise Scribd logo
1  sur  23
Funkcije
Definisanje funkcija
[tip_vrednosti] ime_funkcije (niz
parametara)
{
telo_funkcije
}
Primeri ispravnih funkcija
 int zbir (int n)
{ int s=0, i;
for(i=1;i<=n;i++)
s+=i;
return s;}
 int power(int base, int n)
{ int i,p;
p=1;
for(i=1;i<=n;i++)
p=p*base;
return p;}
Pozivanje funkcija
ime_funkcije (argument, argument, ...,
argument);
Primeri pozivanja funkcije:
 Pozivanje funkcije kao operand u
izrazu
z = zbir(k);
 Pozivanje funkcije kao argument
funkcije printf
printf(“nZbir = %d “, zbir(k));
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));
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);
Primeri prototipova funkcije
int zbir (int n);
int max (int x,int y);
Ako je funkcija definisana posle mesta
poziva deklaracija je obavezna.
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.
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*/
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 [ ]).
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*/
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");}
Primer 2
#include<stdio.h>
#include<stdlib.h>
void pravougaonik (float a, float b, float *pO, float *pP)
{ *pO = 2*(a+b);
*pP = a*b;}
void main()
{ float a,b,O,P;
printf("Unesite duzine stranica (a,b)? ");
scanf("%f,%f",&a,&b);
pravougaonik(a, b, &O, &P);
printf("nObim = %f ", O);
printf("nPovrsina = %f ", P);
system("PAUSE");}
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;}
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
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]);
}
Zadatak
 Proširiti prethodni primer sa
funkcijama za sortiranje, invertovanje i
rotiranje niza ulevo za jedan korak.
Dati korisniku sansu da izabere opciju.
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);
}
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.
Sopstvena biblioteka
 Napraviti biblioteku koja sadrži
funkcije iz prethodnog zadatka i
uključiti je u program
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.
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.

Contenu connexe

En vedette

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

En vedette (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

Funkcije2017.pptx

  • 2. Definisanje funkcija [tip_vrednosti] ime_funkcije (niz parametara) { telo_funkcije }
  • 3. Primeri ispravnih funkcija  int zbir (int n) { int s=0, i; for(i=1;i<=n;i++) s+=i; return s;}  int power(int base, int n) { int i,p; p=1; for(i=1;i<=n;i++) p=p*base; return p;}
  • 4. Pozivanje funkcija ime_funkcije (argument, argument, ..., argument);
  • 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");}
  • 14. Primer 2 #include<stdio.h> #include<stdlib.h> void pravougaonik (float a, float b, float *pO, float *pP) { *pO = 2*(a+b); *pP = a*b;} void main() { float a,b,O,P; printf("Unesite duzine stranica (a,b)? "); scanf("%f,%f",&a,&b); pravougaonik(a, b, &O, &P); printf("nObim = %f ", O); printf("nPovrsina = %f ", P); 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.
  • 21. Sopstvena biblioteka  Napraviti biblioteku koja sadrži funkcije iz prethodnog zadatka i uključiti je u program
  • 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.