Funkcije Su Cjelovite Skupine Naredbi Koje Izvršavanjem Ispunjavaju Određene Zahtjeve.docx

  • Uploaded by: Ivica Tolo
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Funkcije Su Cjelovite Skupine Naredbi Koje Izvršavanjem Ispunjavaju Određene Zahtjeve.docx as PDF for free.

More details

  • Words: 1,065
  • Pages: 7
> Funkcije su cjelovite skupine naredbi koje izvršavanjem ispunjavaju određene zahtjeve. > Omogućavaju razlaganje problema na jednostavnije manje cjeline, čime doprinose boljoj preglednost izvornog koda i jednostavnijem pronalaženju i otklanjanju pogrešaka = STRUKTURNO PROGRAMIRANJE > Top-down je općenit postupak kojim se dani problem raščlanjuje na manje zadatke tj. module. Pojedini moduli tada se rješavaju ili, ako je potrebno, ponovo dijele na nove module. > Funkcija se definira na slijedeći način: tip_funkcije ime_funkcije(najava liste_argumenata) { najava lokalnih varijabli; naredbe; return izlazna_vrijednost; } gdje: - tip_funkcije određuje tip vrijednosti koju pozvana funkcija vraća u nadređenu funkciju, a može biti bilo koji od osnovnih tipova podataka (int, char, float, double, void), - ime_funkcije je identifikator preko kojeg se funkcija poziva, dok je - lista_argumenata lista formalnih parametara sa pripadajućim tipovima preko kojih se niz podataka iz nadređene funkcije prenose u pozvanu funkciju. > Funkcija u nadređeni program vraća jednu ili niti jednu vrijednost ovisno o tipu funkcije. > Za prijenos vrijednosti u nadređeni program koristi se naredba return;. > Funkcija se poziva na slijedeći način: ime_funkcije(stvarna lista_argumenata); > Funkcije se mogu pozivati u izrazima, petljama, ili kao argumenti u pozivima drugih funkcija. > Svaka korištena funkcija se mora najaviti prije poziva. > Podaci iz nadređenih funkcija prenose se na dva načina: 1. pomoću vrijednosti (call by value) - promjena vrijednosti argumenata unutar pozvane funkcije ne utječe na promjenu vrijednosti prenesenih varijabli u nadređenoj funkciji. 2. pomoću adrese (call by reference) - promjena vrijednosti argumenta pozvane funkcije utječe na promjenu vrijednosti prenesenih varijabli nadređene funkcije (u pozvanu funkciju prenose se adrese varijabli nadređene funkcije). > STOG je dinamički dio memorije koji se upotrebljava za pohranjivanje podataka koji se privremeno koriste u određenim djelovnima programa. > Stog se puni i prazni prema principu "zadnji unutra - prvi van" (eng. LIFO " last in - first out") > Rekurzivna funkcija je funkcija koja poziva samu sebe. > Svaka rekurzija mora imati uvjet zaustavljanja koji će joj omogućiti izlaz. > Za pohranjivanje rezultata i povratak iz rekurzije upotrebljava se STOG. > Svaki poziv rekurzije mora se približavati uvjetu zaustavljanja.

Tip_funkcije ime_funkcije (najava liste argumenata) { Najava lokalnih varijabli; Naredbe; Return ; Return izlazna_vrijednost; }

Int pomnozi (int x, int y) { Int rez; Rez=x*y; Return rez; } Zadatak 1. Pokaži Učitaj dva cijela broja pa korištenjem funkcije zamijeni vrijednosti varijablama. #include <stdio.h> int a,b; /*najava globalnih varijabli*/ /*funkcija zamjene*/ void zamjena () { int t; /*lokalna varijabla*/ t=a; /*zamjena koristenjem globalnih varijabli*/ a=b; b=t;l } void main() { printf("Unesite dva cijela broja "); scanf("%d,%d",&a,&b); printf("\nUpisali ste a=%d i b=%d",a,b); zamjena(); /*poziv funkcije sa globalnim varijablama*/ printf("\nNakon funkcije a=%d, b=%d",a,b); }

Zadatak 2. Pokaži Učitaj koordinate dviju točaka u koordinatnom sustavu pa izračunaj njihovu udaljenost. #include <stdio.h> #include <math.h> /*najava funkcije za racunanje udaljenosti*/ float udaljenost(float,float,float,float) ; /*prototip funkcije*/ /*pocetak glavnog programa*/ void main() { float x1,x2,y1,y2,d1; printf("Upisite koordinate tocke T1 "); scanf("%f,%f",&x1,&y1); printf("\nUpisite koordinate tocke T2 "); scanf("%f,%f",&x2,&y2); /*racunanje udaljenosti medju tockama T1 i T2 pozivom funkcije*/ d1=udaljenost(x1,y1,x2,y2); printf("\nUdaljenost medju zadanim tockama je %.2f\n",d1); } /*kraj glavnog dijela programa*/ /*tijelo funkcije za racunanje udaljenosti*/ float udaljenost(float a,float b,float c,float d) { float dulj; dulj=sqrt(pow(c-a,2)+pow(d-b,2)); return dulj; }

#include <stdio.h> #include <math.h> /*funkcija za racunanje udaljenosti*/ float udaljenost(float a,float b,float c,float d) { float dulj; dulj=sqrt(pow(c-a,2)+pow(d-b,2)); return dulj; } /*pocetak glavnog programa*/ void main() { float x1,x2,y1,y2,d1; printf("Upisite koordinate tocke T1 "); scanf("%f,%f",&x1,&y1); printf("\nUpisite koordinate tocke T2 "); scanf("%f,%f",&x2,&y2); /*racunanje udaljenosti medju tockama T1 i T2 pozivom funkcije*/ d1=udaljenost(x1,y1,x2,y2); printf("\nUdaljenost medju zadanim tockama je %.2f\n",d1); }

Zadatak 3. Pokaži Napravite program koji će, koristeći funkciju za udaljenost dvije točke, izračunati i ispisati opseg i površinu trokuta zadanog koordinatama svojih točaka u pravokutnom koordinatnom sustavu. #include <stdio.h> #include <math.h> float o; float udaljenost(float a,float b,float c,float d) { float dulj; dulj=sqrt(pow(c-a,2)+pow(d-b,2)); return dulj; } float opseg (float d1, float d2, float d3) { o=d1+d2+d3; return o; } float povrsina (float d1, float d2, float d3) { float s,p; s=o/2; p=sqrt(s*(s-d1)*(s-d2)*(s-d3)); return p; } void main() { float x1,x2,x3,y1,y2,y3,d1,d2,d3,p; printf("Upisite koordinate tocke A "); scanf("%f,%f",&x1,&y1); printf("\nUpisite koordinate tocke B "); scanf("%f,%f",&x2,&y2); printf("\nUpisite koordinate tocke C "); scanf("%f,%f",&x3,&y3); /*racunanje duljina stranica pozivom funkcije*/ d1=udaljenost(x1,y1,x2,y2); d2=udaljenost(x2,y2,x3,y3); d3=udaljenost(x1,y1,x3,y3); o=opseg(d1,d2,d3); p=povrsina(d1,d2,d3); printf("\nDuljine stranica trokuta su %.2f, %.2f, %.2f",d1,d2,d3); printf("\nOpseg je %.2f\nPovrsina je %.2f",o,p); }

Zadatak 4. Pokaži Rotiramo li pravokutni trokut oko njegovih kateta i hipotenuze, dobit ćemo 4 stošca (po jedan rotacijom oko kateta i dva spojena rotacijom oko hipotenuze). Treba pronaći stožac sa najmanjim volumenom! #include<stdio.h> #include<math.h> #define pi 3.14 /*funkcija koja provjerava je li ucitani trokut pravokutan*/ int provjera(float x, float y, float z) { int p=0;

if (pow(x,2)+pow(y,2)==pow(z,2)) p=1; return p; } /*funkcija koja racuna obujam stozca*/ float obujam(float r, float v) { float o; o=(pow(r,2)*pi*v)/3; return o; } float pitagora(float z, float y) { float x; x=sqrt(pow(z,2)-pow(y,2)); return x; } /*manji od dva broja*/ float manji (float x, float y) { float z; if (x
Zadatak 5. Pokaži Napravite program koji omogućuje unošenje duljina stranica pravokutnika pa pomoću funkcija za računanje površine i opsega računa i ispisuje površinu i opseg. #include <stdio.h> #include <math.h> /*funkcija za racunanje povrsine*/ float povrsina(float x,float y) { float pov; /*lokalna varijabla*/

pov=x*y; return pov; } /*funkcija za opseg - skraceno pisana*/ float opseg(float x,float y) { return 2*x+2*y; } /*glavni dio programa*/ void main() { float a,b,p; printf("Unesite duljine stranica pravokutnika ==>"); scanf("%f,%f",&a,&b); if (a<=0 || b<=0) printf("\nDuljina stranice mora biti veca od 0"); else { p=povrsina(a,b); /*poziv pridruzivanjem varijabli*/ printf("Povrsina je %.2f\n",p); printf("Opseg je %.2f",opseg(a,b));/*Poziv unutar printf funkcije*/ } }

Zadatak 6. Pokaži Napravite program koji će omogućiti unošenje duljine stranice kocke. Program treba, koristeći funkcije, ovisno o želji korisnika izračunati i ispisati oplošje, volumen ili duljinu prostorne dijagonale zadane kocke #include <stdio.h> #include <math.h> float oplosje(float x) { return 6*pow(x,2); } float volumen(float x) { return pow(x,3); } float dijagonala(float x) { return x*sqrt(3);

} void main() { float a; int i; printf("Unesite duljinu stranice kocke ==>"); scanf("%f",&a); if (a<=0) printf("Stranica mora biti >=0"); else { printf("\nIzaberite:\n1.Oplosje\n2.Volumen\n3.P.dijagonala"); printf("\nUpisite broj ==>"); scanf("%d",&i); switch(i) { case 1:printf("Oplosje je %.2f",oplosje(a)); break; case 2:printf("Volumen je %.2f",volumen(a)); break; case 3:printf("Duljina pr. dijagonale je %.2f",dijagonala(a)); break; default:printf("Broj mora biti 1-3"); } } }

Related Documents


More Documents from ""

June 2020 4
Tin The Party
May 2020 17
Marte
November 2019 31