Universiteti
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

Funksionet PowerPoint PPT Presentation


  • 141 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Funksionet

UniversitetiShtetëror i TetovësFakulteti i Shkencave Matematike-NatyroreDepartamenti i InformatikësPROGRAMIM ILigjerata [email protected]


Funksionet

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


Funksionet1

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


Funksionet2

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


Funksione pa tip kthimi void

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


Funksionet

  • 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


Funksionet sipas references

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


Funksionet kalimi me reference

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


Funksionet kalimi me reference1

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


Funksionet kalimi me reference2

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


Funksionet

  • 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


Vlerat default te argumenteve

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


Vlerat default te argumenteve1

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


Funksionet overloaded

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


Funksionet overloaded1

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


Funksionet overloaded2

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


Rekursiviteti

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


Rekursiviteti shembull

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


Prototipi i funksioneve

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


Prototipi i funksioneve1

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


Funksionet

  • // 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.


Prototipi i funksioneve2

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


Pyetje

PYETJE?


  • Login