1 / 23

Funksionet

Universiteti Shtet ëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM I Ligjerata 6 fisnik.dalipi @ unite.edu.mk fisnikd.wordpress.com. Funksionet.

hieu
Télécharger la présentation

Funksionet

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UniversitetiShtetëror i TetovësFakulteti i Shkencave Matematike-NatyroreDepartamenti i InformatikësPROGRAMIM ILigjerata 6fisnik.dalipi@unite.edu.mkfisnikd.wordpress.com

  2. Funksionet • Duke perdorur funksionet programi ndahet ne module te vogla dhe eshte me e thjeshte te programosh me to. Nje funksion eshte nje bllok instruksionesh qe ekzekutohet kur theritet nga nje pike e programit. Ka kete sintakse deklarimi i nje funksioni • tipi emri ( arg1, argt2, ...) bllok instruksionesh • ku:· tipi eshte tipi i te dhenave qe kthen funksioni.· emri eshte emri i funksionit qe perdoret edhe per ta theritur funksionin .· arg cdo argument perbehet nga tipe te dhenash shoqeruar nga identifikuesit. Keto bejne te mundur qe funksionit ti kalohen parametra ne momentin kur thirren per ekzekutim. Parametrat ndahen me presje.· bllok instruksionesh eshte trupi i funksionit qe kufizohet nga { }. Mr. Fisnik Dalipi

  3. Funksionet • // funksion shembull • #include <iostream > • int shuma (int a, int b) • { • int r; • r=a+b; • return (r); • } • int main () • { • int z; • z = shuma (5,3); • cout << " Rezultati eshte" << z; • return 0; • } • Output: Rezultatieshte8 • Prafuksionithirretsipastenjejtesmenyresieshtedeklaruar:   • intshuma(inta,intb) • || | | • z = shuma(5, 3); Mr. Fisnik Dalipi

  4. Funksionet • Ne momentin qe funksioni thirret prej main, kontrolli humbet nga main dhe kalon te funksioni shuma. Vlerat e te dy parametrave (5 dhe 3) kopjohen ne variablat lokale int a dhe int b brenda funksionit. • Funksioni shuma deklaron nje variabel (int r;), qe mer vleren e a+b. Meqe vlerat e parametrave a dhe b jane 5 dhe 3 perkatesisht, rezultati eshte 8 • Kodi: return (r); • Finalizon funksionin shuma, dhe kthen kontrollin mbrapsht te funksioni qe e thirri (main) qe vazhdon egzekutimin ne te njejtin pike ku ishte shkeputur prej funksionit shuma, gjithashtu kthen vleren 8, vlere qe i jepet variablit z. Mr. Fisnik Dalipi

  5. Funksione pa tip_kthimi (void) • Tipi qe paraprin ne deklarimin e variablit duhet te jete i njejte me tipin e kthimit te instruksioni return. Nese nuk duam qe funksioni te kthej nje vlere atehere perdoret fjala kyce void. Kjo perdoret edhe kur funksioni nuk mer parametra. Ne C++ mund edhe te mos e perdoresh void ne rastin kur nuk mer parametra. Por sa here te thirret funksioni perdoret emri bashke me kllapat qe jane te detyrueshme te shkruhen, sepse tregon qe eshte thirje funksioni dhe jo variabel. Mr. Fisnik Dalipi

  6. Per funksionet qe afishojne mesazhe normalisht ska nevoje per tip kthimi. Per shembull: • #include <iostream.h>  • void hello (void) • { • cout << “Tung nga Interneti!"; • } •  int main () • { • hello (); • return 0; • } Mr. Fisnik Dalipi

  7. Funksionet – sipas references • Deri tani, parametrat i kalohen fuksionit me vlere. Kjo dmth se kur therasim nje funksion me parametra I kemi kaluar funksionit vetem vlerat e variablave dhe jo vete variablat. Per shembull: • int x=5, y=3, z;z = shuma ( x , y ); • Ne kete rast thiret funksioni duke i kaluar vlerat x dhe y, dmth 5 dhe 3 dhe jo vete variablat. • Ne kete menyre kur funksioni shuma thirret vlerat e variablave te tij a dhe b behen 5 dhe 3 por cdo modifikim i a apo b brenda funksionit shuma nuk do te kene efekt te x dhe y jashte tij, sepse variablat x dhe y kaluan thjesht vlerat e tyre perkatese Mr. Fisnik Dalipi

  8. Funksionet - kalimi me reference • Por mund te lind nevoja te manipulojme brenda funksionit vlera te variablave external (jashtem). Per keto raste perdoren argumentet qe kalojne me reference, si vijon: • // kalimi me reference • #include <iostream > • void dubliko (int& a, int& b, int& c) • { • a*=2; b*=2; c*=2; • } • int main () • { • int x=1, y=3, z=7; • dubliko (x, y, z); • cout << "x=" << x << ", y=" << y << ", z=" << z; • return 0; • } Mr. Fisnik Dalipi Dalja: x=2, y=6, z=14

  9. Funksionet - kalimi me reference • Nese verejme deklarimin e funksionit dubliko tipi i cdo argumenti ndiqet nga nje ampersand (&), qe tregon se variabli do te kalohet me reference dhe jo me vlere si zakonisht. • Kur i kalon parametrat me reference, po kalojme vete variablin dhe cdo modifikim qe bejme brenda funksionit per parametrat, do te kene efekt jashte tij. Mr. Fisnik Dalipi

  10. Funksionet - kalimi me reference • Nese e deklaronim funksionin si: • void dubliko (int a, int b, int c) • do te kalonin vetem vlerat dhe variablat nuk do te ishin te modifikuar ne main • Ky tip deklarimi "me reference" duke perdorur (&) perdoret vetem te C++. Ne C perdoren pointerat per te bere dicka ekuvalente Mr. Fisnik Dalipi

  11. Shembull: • // me shume se njevlerekthimi • #include <iostream.h>  • void prevnext (int x, int& prev, int& next) • { • prev = x-1; next = x+1; • } • int main () • { • int x=100, y, z; • prevnext(x, y, z); • cout << "Previous=" << y << ", Next=" << z; • return 0; • } Dalja :Previous=99, Next=101 Mr. Fisnik Dalipi

  12. Vlerat default te argumenteve • Kur deklarojme nje funksion mund tu japim vlera default (paradefinuar) argumentave te tij. Kjo vlere do te perdoret nese parameteri eshte bosh ne te majte kur thiret funksioni. Per te bere kete thjesht i jep nje vlere argumentave te deklarimi i funksioneve. Nese vlera per nje parameter nuk kalohet kur funksioni thiret perdoret vlera defoult, por nese vlera specifikohet atehere vlera default nuk meret parasysh: • // vlera default (e paradefinuar) • #include <iostream.h>  • int divide (int a, int b=2) • { • int r; r=a/b; • return (r); • } •  int main () • { • cout << divide (12); • cout << endl; • cout << divide (20,4); • return 0; • } Rezultati: 6 5 Mr. Fisnik Dalipi

  13. Vlerat default te argumenteve • Si shihet ka dy thirje te funksionit divide. E para: • divide (12) • kemi specifikuar vetem nje argument , por funksioni kerkon dy. Keshtu divide mer si vlere 2 per parametrin e dyte . Rezultati i kesaj thirrje te funksionit eshte 6 nga (12/2). • Ne thirrjen e dyte: • divide (20,4) • dhe rezultati eshte 5 nga (20/4). Mr. Fisnik Dalipi

  14. Funksionet Overloaded • Dy funksone te ndryshem mund te kene te njejtin emer nese prototipet e argumentave te tyre jane te ndryshem, kjo dmth qe mund tu japim te njejtin emer disa funksioneve nese ata kane ose numer te ndryshem argumentash ose tipe te ndryshem argumentash. Per shembull: Mr. Fisnik Dalipi

  15. Funksionet overloaded • // funksione overloaded • #include <iostream.h>  • int divide (int a, int b) • { • return (a/b); • } •  float divide (float a, float b) • { • return (a/b); • } • int main () • { • int x=5,y=2; • float n=5.0,m=2.0; • cout << divide (x,y); • cout << "\n"; • cout << divide (n,m); • cout << "\n"; • return 0; • } Rezultati: 2 2.5 Mr. Fisnik Dalipi

  16. Funksionet overloaded • Ne kete rast ne kemi percaktuar dy funksione me me te njejtin emer, por njeri pret argumenta te tipit int dhe tjetri te tipit float. Kompilatori e di cilin te theras ne cdo rast duke ekzaminuar tipet, kur funksioni thirret. Nese thirret me dy ints si argument therret funksionin qe ka dy int ne prototip , nese thirret me dy float therret funksionin tjeter. • Per thjeshtesi, kemi shkruar te njejtin kod ne trupin e funksioneve. Mund te ndertojme dy funksione me te njejtin emer por me sjellje komplet te ndryshme. Mr. Fisnik Dalipi

  17. Rekursiviteti • Rekursiviti eshte procesi, kur nje funksion therret vetveten . Per shembull: • n! = n * (n-1) * (n-2) * (n-3) ... * 1 • E ilustrojme rekursivitetin me nje shembull si vijon: Mr. Fisnik Dalipi

  18. Rekursiviteti - shembull • // factorial calculator • #include <iostream.h> •  long faktoriel(long a) • { • if (a > 1) • return (a * faktoriel(a-1)); else • return (1); • } • int main () • { • long i; • cout << “Jepnjenumer: "; • cin >> i; • cout<< i<< "!" << " = " << faktoriel (i); • return 0; • } Jepnje numer:9 9!=362880 Mr. Fisnik Dalipi

  19. Prototipi i funksioneve • Deri tani, keni percaktuar funksionet perpara shfaqjes se pare te thirjes per to, qe zakonisht ishte ne main, duke lene funksionin main ne fund. Nese perserisim shembujt duke vendosur funksionin main para funksioneve te tjera, do te shihnim nje gabim. Arsyeja eshte se per te qene e mundur thirrja e nje funksioni, duhet te deklarohet paraprakisht ky si funksion • Por ka nje alternative per te shmangur shkrimin e te gjithe funksioneve para main. Kjo realizohet me ane te prototipit. Qe dmth te besh nje deklarim paraprak per funksionin. Kompilatori duhet te dije argumentat dhe tipin e kthimit. Mr. Fisnik Dalipi

  20. Prototipi i funksioneve • Sintaksa eshte: • type name ( argument_type1, argument_type2, ...); • Eshte identik me rrjeshtin e pare te deklarimit te funksionit pervec : • Nuk permban {} • Nuk ka ne fund (;). • Te argumentat eshte e mjaftueshme te shtypen tipet e tyre. • Per shembull: Mr. Fisnik Dalipi

  21. // prototipet • #include <iostream.h> • void tek (int a); • void cift (int a); •  int main () • { • int i; • do { • cout << “Jepe numrin(0 per dalje):"; • cin >> i; • tek (i); • } • while (i!=0); • return 0; • } • void tek (int a) • { • if ((a%2)!=0) • cout << “Numri eshte tek.\n"; • else cift (a); • }  • void cift (int a) • { • if ((a%2)==0) • cout << “Numri eshte cift.\n"; • else tek (a); • } Jepenjenumer(0 per dalje):9 Numrieshtetek. Jepenjenumer(0 per dalje):112 Numrieshtecift.

  22. Prototipi i funksioneve • Ky shembull eshte ndertuar ne menyren me te gjate per te shpjeguar prototipet. • Prototipet e funksioneve jane: • void tek (int a);void cift (int a); • qe mundeson qe funksionet te perdoren para se te deklarohen plotesisht, per shembull ne main. • Shume programues rekomandojne qe per cdo funksion duhet te shkruajme prototipin. Egzistenca e tyre ne te njejtin vend lehteson pune gjate programimit dhe gjithashtu lehteson procesin e krijimit te ‘header file’. Mr. Fisnik Dalipi

  23. PYETJE?

More Related