Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Hekuri
  • Programimi në Delphi. Përdorimi i procedurave dhe funksioneve në Delphi

Programimi në Delphi. Përdorimi i procedurave dhe funksioneve në Delphi


Në këtë artikull do flasim në lidhje me procedurat dhe funksionet. Ai u drejtohet kryesisht programuesve fillestarë që duan të kuptojnë më mirë të gjitha aftësitë e tyre dhe të mësojnë se si t'i përdorin ato në mënyrë më efektive. Megjithatë, të gjithë të tjerët mund ta shohin këtë artikull të dobishëm. Le të fillojmë.

Në këtë artikull do të shqyrtojmë pyetjet e mëposhtme:
Kllapa

Shtimi i kllapave gjatë thirrjes së procedurave dhe funksioneve pa parametra nuk është më i ri në Delphi, megjithatë, kjo veçori është pak e njohur. Kjo veçori do të vlerësohet nga ata programues që duhet të punojnë në dy gjuhë (C++ dhe Delphi), pasi nuk do të kenë nevojë të mbajnë mend vazhdimisht ndryshimin në sintaksë kur thërrasin procedurat dhe funksionet në gjuhë të ndryshme. Në Delphi, të dyja opsionet e mëposhtme konsiderohen të vlefshme.

Kur thirret procedura e Testit, vetë Delphi do të vendosë se cila nga tre procedurat duhet të ekzekutohet, në varësi të parametrit që i kalohet. Por duhet theksuar se kjo nuk është tipari më i sigurt i gjuhës. Përdorimi i procedurave dhe funksioneve të mbingarkuara mund të bëhet një burim i pashtershëm i gabimeve delikate në program. Prandaj, shfrytëzojeni këtë mundësi me kujdes.

Pascal ju lejon të kaloni parametrat në funksione dhe procedura ose me vlerë ose me referencë. Parametri i kaluar mund të ketë ndonjë të integruar ose lloji i personalizuar ose të jetë një grup i hapur. Një parametër mund të jetë gjithashtu një konstante nëse vlera e tij nuk ndryshon në një procedurë ose funksion.

Ky modalitet i transferimit të parametrave përdoret si parazgjedhje. Nëse një parametër kalohet nga vlera, krijohet një kopje lokale e kësaj ndryshoreje, e cila ofrohet për përpunim në një procedurë ose funksion. Shikoni shembullin e mëposhtëm:

procedura Test(et: varg);

Gjatë thirrjes së procedurës së specifikuar, do të krijohet një kopje e vargut s që i kalon si parametër, me të cilin do të funksionojë procedura e Testit. Në këtë rast, të gjitha ndryshimet e bëra në rresht nuk do të ndikojnë në ndryshoren origjinale s në asnjë mënyrë.

Megjithatë, kjo nuk vlen për objektet. Për shembull, nëse një ndryshore (ose më mirë një shembull objekti) TStringList i kalohet një funksioni, atëherë në këtë rast kalimi me referencë do të ndodhë (edhe nëse kjo nuk është e specifikuar në mënyrë eksplicite).

Pascal gjithashtu ju lejon t'i kaloni parametrat funksioneve ose procedurave me referencë - këta parametra quhen parametra të ndryshueshëm. Kalimi i një parametri me referencë do të thotë që funksioni ose procedura mund të ndryshojë vlerat e parametrave të marra. Për të kaluar parametrat me referencë, përdorni fjalën kyçe var, vendosur në listën e parametrave të procedurës ose funksionit të thirrur.

Kalimi i vargjeve të hapura

Një grup i hapur parametrash ju lejon të kaloni një numër të ndryshëm parametrash në një funksion ose procedurë. Si parametra, mund të kaloni ose një grup të hapur elementësh të të njëjtit lloj, ose vargje konstantesh të llojeve të ndryshme. Shembulli i mëposhtëm deklaron një funksion që duhet t'i kalohet një grupi të hapur numrash të plotë si parametër.

Për të marrë informacion në lidhje me grupin e parametrave të kaluar në të vërtetë në një funksion ose procedurë, ato mund të përdoren Funksione të larta, Low dhe SizeOf. Për të ilustruar përdorimin e tyre, më poshtë është teksti i funksionit AddEmUp, i cili kthen shumën e të gjithë elementëve të grupit A të kaluar në të.

Ju mund të telefononi funksionin e deklaruar më sipër, për shembull, duke përdorur operatorin e mëposhtëm:

procedura WhatHaveIGot(["Tekst", 10, 5.5, @WhatHaveIGot, 3.14, true, "c"]);

Kur kalon një funksion ose procedurë një grup konstantesh, përpiluesi konverton në mënyrë implicite të gjithë parametrat e kaluar në llojin TVarRec. Lloji i të dhënave TVarRec deklarohet në modulin e Sistemit si më poshtë:

Sepse një grup konstant është i aftë të kalojë të dhëna tipe te ndryshme, kjo mund të shkaktojë vështirësi të caktuara kur krijoni një funksion ose procedurë që përpunon parametrat e marrë. Si shembull i punës me një grup të tillë, merrni parasysh zbatimin e procedurës WhatHaveIGot, e cila shikon përmes elementeve të grupit të parametrave që rezulton dhe shfaq llojin e tyre.

procedura WhatHaveIGot(A: varg konst); var i: numër i plotë; TypeStr: varg; filloni për i:= Low(A) në Lartë(A) filloni rastin A[i].VLloji i vtInteger: TypeStr:= "Numër i plotë"; vtBoolean: TypeStr:= "Boolean"; vtChar: TypeStr:= "Char"; vtExtended: TypeStr:= "Extended"; vtString: TypeStr:= "String"; vtPointer: TypeStr:= "Pointer"; vtPChar: TypeStr:= "PChar"; vtObject: TypeStr:= "Object"; vtClass: TypeStr:= "Klasa"; vtWideChar: TypeStr:= "WideChar"; vtPWideChar: TypeStr:= "PWideChar"; vtAnsiString: TypeStr:= "AnsiString"; vtCurrency: TypeStr:= "Currency"; vtVariant: TypeStr:= "Variant"; vtInterface: TypeStr:= "Interface"; vtWideString: TypeStr:= "WideString"; vtInt64: TypeStr:= "Int64"; fundi; ShowMessage(Format("Artikulli i grupit %d është %s", )); fundi; fundi;

Vlerat e parazgjedhura të parametrave

Delphi ka një shumë mundësi e dobishme- përdorni vlerat e paracaktuara të parametrave. Kjo ju lejon të vendosni vlerën e paracaktuar për një procedurë ose parametër funksioni. Kjo vlerë do të përdoret në rastet kur një procedurë ose funksion thirret pa specifikuar një vlerë këtë parametër. Në deklaratën e procedurës ose funksionit, vlera e paracaktuar e një parametri shfaqet pas shenjës së barazimit pas emrit të tij. Le ta shpjegojmë këtë në shembullin e mëposhtëm:

Në rastin e dytë, mund të vendosni vetëm vlerën e parametrit s dhe të përdorni vlerën e paracaktuar për parametrin i:

procedura HasDefVal ("Përshëndetje");

Kur përdorni cilësimet e paracaktuara, ka disa rregulla që duhen mbajtur parasysh:
  • Parametrat që kanë vlera të paracaktuara duhet të vendosen në fund të listës së parametrave. Një parametër pa një vlerë të paracaktuar nuk duhet të shfaqet në listë pas një parametri që ka një vlerë të paracaktuar.
  • Vlerat e parazgjedhura mund t'u caktohen vetëm parametrave lloje të rregullta, tregues ose grupe.
  • Vlera e paracaktuar mund të kalohet vetëm me vlerë ose me një modifikues konst. Nuk mund të jetë një referencë ose një parametër i pashtypur.
Nje nga avantazhe të rëndësishme Zbatimi i vlerave të paracaktuara të parametrave është i lehtë për t'u zgjeruar funksionalitetin procedurat dhe funksionet ekzistuese në përputhje përputhshmëria e prapambetur. Le t'i themi tregut produkte softuerike U lëshua një program, elementi kryesor i të cilit është funksioni i shtimit të dy numrave të plotë:

Direktiva ($X-)

Direktiva ($X-) ndalon thirrjen e funksioneve si procedura (duke injoruar rezultatin e kthimit). Si parazgjedhje kjo mënyrë është e aktivizuar (($X+)). Pra, mbani mend, përdorimi i ndryshores Result nuk lejohet kur opsioni i Sintaksës së Zgjeruar, i vendosur në skedën e Përpiluesit të kutisë së dialogut Opsionet e projektit, pastrohet, ose kur specifikohet një direktivë përpiluesi ($X-).

Çdo funksion Objecl Pascal ka një variabël lokale të quajtur Result për të mbajtur vlerën e kthyer. Përveç kësaj, ju gjithashtu mund të ktheni një vlerë nga një funksion duke i caktuar një vlerë një ndryshoreje që ka të njëjtin emër si këtë funksion. Kjo është sintaksa standarde Gjuha e paskalit, i ruajtur nga versionet e tij të mëparshme. Kur përdorni një ndryshore me emrin e saj në trupin e një funksioni, mos harroni se ka dallime të mëdha në përpunimin e këtij emri - gjithçka varet nga vendi ku ndodhet - në anën e majtë të operatorit të caktimit ose kudo tjetër në tekstin e funksionit. Nëse një emër funksioni specifikohet në anën e majtë të një deklarate caktimi, vlera e kthyer e funksionit supozohet të jetë caktuar. Në të gjitha rastet e tjera, supozohet se ky funksion thirret në mënyrë rekursive.

Kjo është gjithçka që doja t'ju them sot. Procedura dhe funksioni janë koncepte kyçe në çdo gjuhë programimi, pa të cilat asnjë program serioz nuk mund të bëjë. Dhe për këtë arsye është shumë e rëndësishme të keni një kuptim të plotë të mekanizmit të punës së tyre, ky është një hap tjetër drejt profesionalizmit. Shpresoj që këtë artikull ta keni gjetur të paktën pak të dobishëm. Argëtohuni me programimin tuaj.

Herët a vonë, çdo programues duhet të përdorë procedura dhe funksione. Të gjithë kujtojmë nga Pascal se nuk ka asgjë të komplikuar atje, por disa gjëra zakonisht nuk përshkruhen në libra, megjithëse duhet t'i dini ato për të përpiluar saktë një program.

Kllapa

Shtimi i kllapave gjatë thirrjes së procedurave dhe funksioneve pa parametra nuk është më i ri në Delphi, megjithatë, kjo veçori është pak e njohur. Kjo veçori do të vlerësohet nga ata programues që duhet të punojnë në dy gjuhë (C++ dhe Delphi), pasi nuk do të kenë nevojë të mbajnë mend vazhdimisht ndryshimin në sintaksë kur thërrasin procedura dhe funksione në gjuhë të ndryshme. Në Delphi, të dyja opsionet e mëposhtme konsiderohen të vlefshme.

Forma1.Tregoni;
Forma1.Tregoni();

Mundësia e mbingarkesës

Koncepti i mbingarkesës së procedurës dhe funksionit u zbatua për herë të parë në Delphi 4. Ju lejon të keni shumëfish procedura të ndryshme dhe funksionon me emra të njëjtë, hundë lista të ndryshme parametrave. Procedura dhe funksione të tilla duhet të përshkruhen duke përdorur direktivën e mbingarkesës.

Testi i procedurës (I: numër i plotë); mbingarkesë;
procedura Test(S: varg); mbingarkesë;
Procedura Test (D: dyfish); mbingarkesë;

Kur thirret procedura e Testit, vetë Delphi do të vendosë se cila nga tre procedurat duhet të ekzekutohet, në varësi të parametrit që i kalohet. Por duhet theksuar se kjo nuk është tipari më i sigurt i gjuhës. Përdorimi i procedurave dhe funksioneve të mbingarkuara mund të bëhet një burim i pashtershëm i gabimeve delikate në program. Prandaj, shfrytëzojeni këtë mundësi me kujdes.

Kalimi i parametrave

Pascal ju lejon të kaloni parametrat në funksione dhe procedura ose me vlerë ose me referencë. Parametri i kaluar mund të jetë i çdo lloji të integruar ose të përcaktuar nga përdoruesi, ose të jetë një grup i hapur. Një parametër mund të jetë gjithashtu një konstante nëse vlera e tij nuk ndryshon në një procedurë ose funksion.
Kalimi i parametrave sipas vlerës
Ky modalitet i transferimit të parametrave përdoret si parazgjedhje. Nëse një parametër kalohet nga vlera, krijohet një kopje lokale e kësaj ndryshoreje, e cila ofrohet për përpunim në një procedurë ose funksion. Shikoni shembullin e mëposhtëm:

Testi i procedurës(et: varg);

Gjatë thirrjes së procedurës së specifikuar, do të krijohet një kopje e vargut s që i kalon si parametër, me të cilin do të funksionojë procedura e Testit. Në këtë rast, të gjitha ndryshimet e bëra në rresht nuk do të ndikojnë në ndryshoren origjinale s në asnjë mënyrë.

Megjithatë, kjo nuk vlen për objektet. Për shembull, nëse një ndryshore (ose më mirë një shembull i një objekti) TStringList i kalohet një funksioni, atëherë në këtë rast kalimi me referencë do të ndodhë (edhe nëse kjo nuk është e specifikuar në mënyrë eksplicite). Kjo metodë e transmetimit është më e preferuara në mesin e shumicës, por në të njëjtën kohë është edhe më jopraktike, sepse alokuar për të ekzekutuar metodën memorie shtesë për krijimin një kopje të saktë variabli i transmetuar. Për të zgjidhur këtë problem, duhet të përdorni një nga metodat e përshkruara më poshtë.

Kalimi i parametrave me referencë
Pascal gjithashtu ju lejon t'i kaloni parametrat funksioneve ose procedurave me referencë - këta parametra quhen parametra të ndryshueshëm. Kalimi i një parametri me referencë do të thotë që funksioni ose procedura mund të ndryshojë vlerat e parametrave të marra. Për të kaluar parametrat me referencë, përdoret fjala kyçe var, e vendosur në listën e parametrave të procedurës ose funksionit të thirrur.

Procedura ChangeMe(var x: longint);
fillojnë
x: = 2; // Parametri x ndryshohet nga procedura e thirrur
fundi;

Në vend që të bëjë një kopje të x, fjala kyçe var kërkon të kalojë vetë adresën e x, duke lejuar procedurën të ndryshojë drejtpërdrejt vlerën e saj.

Kalimi i parametrave konstante
Nëse nuk ka nevojë të ndryshoni të dhënat e kaluara në një funksion ose procedurë, mund ta përshkruani parametrin si një konstante. Fjalë kyçe const jo vetëm që mbron parametrin nga ndryshimi, por gjithashtu lejon përpiluesin të gjenerojë varg më optimal dhe të regjistrojë kodin e kalimit. Këtu është një shembull i një deklarimi të një parametri konstant:

Testi i procedurës (konst s: varg);

Kalimi i vargjeve të hapura
Një grup i hapur parametrash ju lejon të kaloni një numër të ndryshëm parametrash në një funksion ose procedurë. Si parametra, mund të kaloni ose një grup të hapur elementësh të të njëjtit lloj, ose vargje konstantesh të llojeve të ndryshme. Shembulli i mëposhtëm deklaron një funksion që duhet t'i kalohet një grupi të hapur numrash të plotë si parametër.

Funksioni AddEmUp(A: grup i numrave të plotë): numër i plotë;

Në një grup të hapur, ju mund të kaloni variabla, konstante ose shprehje nga konstante.

Funksionet High, Low dhe SizeOf mund të përdoren për të marrë informacion në lidhje me grupin e parametrave të kaluar në të vërtetë në një funksion ose procedurë.

Object Pascal gjithashtu mbështet grupin e tipit const, i cili ju lejon të transferoni të dhëna në një grup lloje të ndryshme. Sintaksa për deklarimin e funksioneve ose procedurave që përdorin një grup të tillë për të marrë parametra është si më poshtë:

Ju mund të telefononi funksionin e deklaruar më sipër, për shembull, duke përdorur operatorin e mëposhtëm:

Procedura WhatHaveIGot(["Tekst", 10, 5.5, @WhatHaveIGot, 3.14, true, "c"]);

Kur kalon një funksion ose procedurë një grup konstantesh, përpiluesi konverton në mënyrë implicite të gjithë parametrat e kaluar në llojin TVarRec. Lloji i të dhënave TVarRec deklarohet në modulin e Sistemit si më poshtë:

PVarRec = ^TVarRec;
TVarRec = rekord
rasti Byte i
vtInteger: (VInteger: Integer; VType: Byte);
vtBoolean: (VBoolean: Boolean);
vtChar: (VChar: Char);
vtExtended: (VExtended: PExtended);
vtString: (VString: PSShortString);
vtPointer: (VPointer: Pointer);
vtPChar: (VPChar: PChar);
vtObject: (VObject: TObject);
vtClass: (VClass: TClass);
vtWideChar: (VWideChar: WideChar);
vtPWideChar: (VPWideChar: PWideChar);
vtAnsiString: (VAnsiString: Pointer);
vtCurrency: (VCurrency: PCcurrency);
vtVariant: (VVariant: PVariant);
vtInterface: (VInterface: Pointer);
vtWideString: (VWideString: Pointer);
vtInt64: (VInt64: Pint64);
fundi;

Fusha VType përcakton llojin e të dhënave që përmban ky shembull i regjistrimit TVarRec dhe mund të marrë një nga vlerat e dhëna.

Meqenëse një grup konstantesh mund të kalojë të dhëna të llojeve të ndryshme, kjo mund të shkaktojë disa vështirësi kur krijoni një funksion ose procedurë që përpunon parametrat e marrë. Si shembull i punës me një grup të tillë, merrni parasysh zbatimin e procedurës WhatHaveIGot, e cila shikon përmes elementeve të grupit të parametrave që rezulton dhe shfaq llojin e tyre.

Procedura WhatHaveIGot(A: varg konst);
var
i: numër i plotë;
TypeStr: varg;
fillojnë
për i:= E ulët (A) në Lartë (A) bëj
fillojnë
rasti A[i].VLloji i
vtInteger: TypeStr:= "Integer";
vtBoolean: TypeStr:= "Boolean";
vtChar: TypeStr:= "Char";
vtExtended: TypeStr:= "Extended";
vtString: TypeStr:= "String";
vtPointer: TypeStr:= "Pointer";
vtPChar: TypeStr:= "PChar";
vtObject: TypeStr:= "Object";
vtClass: TypeStr:= "Klasa";
vtWideChar: TypeStr:= "WideChar";
vtPWideChar: TypeStr:= "PWideChar";
vtAnsiString: TypeStr:= "AnsiString";
vtCurrency: TypeStr:= "Currency";
vtVariant: TypeStr:= "Variant";
vtInterface: TypeStr:= "Interface";
vtWideString: TypeStr:= "WideString";
vtInt64: TypeStr:= "Int64";
fundi;
ShowMessage(Format("Artikulli i grupit %d është %s", ));
fundi;
fundi;

Vlerat e parazgjedhura të parametrave

Delphi ka një veçori shumë të dobishme - duke përdorur vlerat e paracaktuara të parametrave. Kjo ju lejon të vendosni vlerën e paracaktuar për një procedurë ose parametër funksioni. Kjo vlerë do të përdoret në rastet kur një procedurë ose funksion thirret pa specifikuar vlerën e këtij parametri. Në deklaratën e një procedure ose funksioni, vlera e paracaktuar e një parametri specifikohet pas shenjës së barazimit pas emrit të tij. Le ta ilustrojmë këtë me shembullin e mëposhtëm:

Procedura HasDefVal(s: string; i: integer = 0);

Reklama e ngjashme do të thotë se procedura HasDefVal mund të thirret në dy mënyra. Në rastin e parë, si zakonisht, duke specifikuar të dy parametrat:

Procedura HasDefVal("Përshëndetje", 26);

Në rastin e dytë, mund të vendosni vetëm vlerën e parametrit s dhe të përdorni vlerën e paracaktuar për parametrin i:

Procedura HasDefVal("Përshëndetje");

Kur përdorni cilësimet e paracaktuara, ka disa rregulla që duhen mbajtur parasysh:

  • Parametrat që kanë vlera të paracaktuara duhet të vendosen në fund të listës së parametrave. Një parametër pa një vlerë të paracaktuar nuk duhet të shfaqet në listë pas një parametri që ka një vlerë të paracaktuar.
  • Vlerat e parazgjedhura mund t'u caktohen vetëm parametrave të llojeve, treguesve ose grupeve të rregullta.
  • Vlera e paracaktuar mund të kalohet vetëm nga vlera ose me modifikuesin konst. Nuk mund të jetë një referencë ose një parametër i pashtypur.
Një nga avantazhet e rëndësishme të përdorimit të vlerave të parametrave të paracaktuar është lehtësia e zgjerimit të funksionalitetit të procedurave dhe funksioneve ekzistuese duke ruajtur përputhshmërinë e prapambetur. Supozoni se një program u lëshua në tregun e softuerit, elementi kryesor i të cilit është funksioni i shtimit të dy numrave të plotë:

Funksioni Add(I1, I2: integer): integer;
fillojnë
Rezultati:= I1 + I2;
fundi;

Le të supozojmë gjithashtu se hulumtimi ka treguar mundësinë e shtimit të aftësisë për të shtuar tre numra në program. Sidoqoftë, zëvendësimi i një funksioni ekzistues me një funksion për shtimin e tre numrave do të çojë në faktin se do t'ju duhet të përcillni shumë tekst, i cili nuk do të përpilohet më për shkak të shtimit të një parametri më shumë në funksion. Sidoqoftë, përdorimi i vlerave të parametrave të paracaktuar e zgjidh problemin lehtësisht dhe thjesht. Mjafton të ndryshoni deklaratën e funksionit siç tregohet më poshtë.

Funksioni Add(I1, I2: numër i plotë; I3: numër i plotë = 0): numër i plotë;
fillojnë
Rezultati:= I1 + I2 + I3;
fundi;

Direktiva ($X-)

Direktiva ($X-) ndalon thirrjen e funksioneve si procedura (duke injoruar rezultatin e kthimit). Si parazgjedhje kjo mënyrë është e aktivizuar (($X+)). Pra, mbani mend, përdorimi i ndryshores Result nuk lejohet kur opsioni i Sintaksës së Zgjeruar, i vendosur në skedën e Përpiluesit të kutisë së dialogut Opsionet e projektit, pastrohet, ose kur specifikohet një direktivë përpiluesi ($X-).

Çdo funksion Objecl Pascal ka një variabël lokale të quajtur Result për të mbajtur vlerën e kthyer. Ju gjithashtu mund të ktheni një vlerë nga një funksion duke i caktuar një vlerë një ndryshoreje që ka të njëjtin emër si funksioni. Kjo është sintaksa standarde e gjuhës Pascal, e ruajtur nga ajo versionet e mëparshme. Kur përdorni një ndryshore me emrin e saj në trupin e një funksioni, mos harroni se ka dallime të mëdha në përpunimin e këtij emri - gjithçka varet nga vendi ku ndodhet - në anën e majtë të operatorit të caktimit ose kudo tjetër në tekstin e funksionit. Nëse një emër funksioni specifikohet në anën e majtë të një deklarate caktimi, vlera e kthyer e funksionit supozohet të jetë caktuar. Në të gjitha rastet e tjera, supozohet se ky funksion thirret në mënyrë rekursive.

Procedura dhe funksioni janë konceptet kryesore në çdo gjuhë programimi, pa të cilën asnjë program serioz nuk mund të bëjë. Dhe për këtë arsye është shumë e rëndësishme të keni një kuptim të plotë të mekanizmit të punës së tyre.

Siç e dini tashmë, C++ ju lejon të kaloni informacion tek funksionet duke përdorur parametra. Në mësimin 13, mësuat se C++ gjithashtu ofron mbingarkesë funksioni duke ofruar përkufizime që përmbajnë sasi të ndryshme parametra apo edhe parametra të llojeve të ndryshme. Përveç kësaj, në C++ mund të hiqni parametrat kur thirrni funksione. Në raste të tilla, vlerat e paracaktuara do të përdoren për parametrat e lënë pas dore. Ky mësim përshkruan se si të vendosni vlerat e paracaktuara për parametrat e funksionit. Deri në fund këtë mësim Ju do të zotëroni konceptet kryesore të mëposhtme:

C++ lejon programet të specifikojnë vlerat e paracaktuara për parametrat.

Vlerat e parazgjedhura për parametrat specifikohen në kokën e funksionit kur ai përcaktohet.

Nëse një thirrje funksioni i lë vlerat e një ose më shumë parametrave, C++ do të përdorë vlerat e paracaktuara.

Nëse një thirrje funksioni e lë vlerën e një parametri të caktuar, atëherë vlerat e të gjithë parametrave të mëvonshëm duhet të hiqen.

Sigurimi i vlerave të paracaktuara për parametrat e bën më të lehtë ripërdorim funksionet (përdorimi i tyre nga disa programe).

PËRKUFIZIMI I VLERAVE TË PARAKTUARA

Sigurimi i vlerave të paracaktuara për parametrat e funksionit është shumë i lehtë. Ju thjesht i caktoni vlerën parametrit duke përdorur operatorin e caktimit C++ pikërisht kur deklaroni funksionin, siç tregohet më poshtë:

void some_function(int size=12, float cost=19.95) //—->Vlerat e parazgjedhur

{
// Operatorët e funksionit
}

Programi tjetër është DEFAULTS. CPP cakton vlerat e paracaktuara për parametrat a, b dhe c brenda funksionit show_parameters. Më pas programi e thërret këtë funksion katër herë, fillimisht pa parametra fare, pastaj me një vlerë vetëm për a, pastaj me vlera për a dhe b dhe në fund me vlera për të tre parametrat:

#përfshi

void show__parameters (int a=1, int b=2, int c=3)

{
cout<< «a» << a << » b » << b << » с » << с << endl;
}

{
shfaqje_parametrat();
shfaqje_parametrat (1001);
shfaqje_parametrat (1001, 2002);
shfaqje_parametrat (1001, 2002, 3003);
}

Kur përpiloni dhe ekzekutoni këtë program, dalja e mëposhtme do të shfaqet në ekranin tuaj:

C:\> PARALAKTUARA

a 1001 b 2 c 3

a 1001 b 2002 c 3

a 1001 b 2002 c 3003

Siç mund ta shihni, nëse është e nevojshme, funksioni përdor vlerat e paracaktuara të parametrave.

Rregullat për kapërcimin e vlerave të parametrave

Nëse një program heq një parametër të caktuar për një funksion që ofron vlerat e paracaktuara, atëherë të gjithë parametrat pasues duhet të hiqen. Me fjalë të tjera, nuk mund të hiqni parametrin e mesëm. Në rastin e programit të mëparshëm, nëse ishte e nevojshme të hiqej vlera e parametrit b në parametrat e shfaqjes, programi duhej të hiqte edhe vlerën e parametrit c. Ju nuk mund të specifikoni një vlerë për a dhe c duke hequr vlerën e b.

Vendosja e vlerave të paracaktuara

Kur përcaktoni një funksion, C++ ju lejon të specifikoni vlerat e paracaktuara për një ose më shumë parametra. Nëse programi heq një ose më shumë parametra në thirrjet pasuese të këtij funksioni, funksioni do të përdorë vlerat e paracaktuara për ta. Për t'i caktuar një vlerë të paracaktuar një parametri, thjesht përdorni operatorin e caktimit brenda përkufizimit të funksionit.
Për shembull, funksioni i mëposhtëm i listës së pagave specifikon vlerat e paracaktuara për parametrat e orëve dhe normës:

listën e pagave të ndryshueshme (int employ_id, orët e notimit = 40, norma e ndryshueshme = 5,50)

// operatorët
}

Kur një program heq një parametër, ai duhet të heqë të gjithë parametrat pasues.

ÇFARË DUHET TË DINI

Në këtë mësim, mësuat se C++ ju lejon të specifikoni vlerat e paracaktuara për parametrat e funksionit. Nëse programi heq një ose më shumë parametra, funksioni përdor vlerat e paracaktuara. Në mësimet e mëposhtme, ndërsa programet tuaja fillojnë të përdorin programim të orientuar nga objekti në C++, ju do të përdorni parametrat e paracaktuar për të inicializuar variabla të ndryshme të klasës. Siç e dini tashmë, një variabël ju lejon të ruani një vlerë të një lloji specifik (int, float, etj.). Në mësimin 16, do të mësoni se si të ruani vlera të shumta të të njëjtit lloj brenda një grupi. Për shembull, programi juaj mund të ruajë rezultatet e testimit për 100 studentë ose vlerën e 50 aksioneve. Vargjet e bëjnë shumë të lehtë ruajtjen dhe përdorimin e vlerave të tilla. Përpara se të studioni Mësimin 16, sigurohuni që të keni zotëruar konceptet bazë të mëposhtme:

  1. Për të caktuar vlerat e paracaktuara në parametrat e funksionit, përdorni operatorin e caktimit C++ drejtpërdrejt në përkufizimin e funksionit.
  2. Nëse një program nuk i jep vlerat e parametrave kur thërret një funksion, funksioni përdor vlerat e paracaktuara.
  3. Nëse një program heq vlerën e një parametri, ai duhet të heqë vlerat për të gjithë parametrat pasues; Programi nuk mund të heqë parametrin e mesëm.
  4. Duke specifikuar parametrat e paracaktuar, ju i bëni funksionet tuaja më të lehta për t'u përdorur, duke përfshirë edhe programet e tjera.

Artikujt më të mirë mbi këtë temë