GjuheProgramuese Ushtrimet C++

download GjuheProgramuese Ushtrimet C++

of 140

Transcript of GjuheProgramuese Ushtrimet C++

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    1/140

    Avni Rexhepi

    Prishtin, 2008

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    2/140

    Avni Rexhepi Ushtrime n C++

    2

    Hyrje n programim

    -N kompjuter, t dhnat ruhen dhe prpunohen si vargje t sh ifrave binare: 1 dhe 0, tkoduara n nj kod binar(ang. binary code).

    - Programet dhe ProgramimiProgrami paraqet nj list t urdhrave (instruksioneve, komandave) t cilat i tregojn

    kompjuterit q t kryej veprime t ndryshme.

    - Gjuht Programuese:- Gjuht e ulta programuse (kodi i makins)0, 1- Asemblerimnemonic (ADD, SUB, MOV...)

    - Gjuht e larta programuese- Fortran, Basic, Pascal, C++, etj.

    - Idea --> prshkrimi --> programi --> testimi --> prdorimi

    Interpretert dhe kompajlert.

    Interpreteriinterpreton me radh urdhrat e programit, sa her q ekzekutohetprogrami.

    Kompajler(ang. compiler)verifikon tr programin (sintaksn e gjuhs) dhe eprkthen kodin burimor n kod objektiv.

    Program burimor(ang. source program, source code) - fajll burimor(ang. source file).

    Program objekti v(ang. object program, object code) -fajll objektiv (ang. objekt file).Linker--> i lidh pjeset (fajllat) e programit dhe krijon programin ekzekutiv (ang.executable program, exe file) -fajll ekzekutiv (ang. exe file).

    Termat themelore q i hasim:

    IdentifikatortVariablatDeklarimi

    InicializimiKonstantetLiteralet

    OperatortKomentet

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    3/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    4/140

    Avni Rexhepi Ushtrime n C++

    4

    cinoperatori pr lexim.coutoperatori pr shtypje.return (kthe, kthimi)kthimi i rezultatit t funksionit.}kllapa e madhe e mbullur tregon fundin e programitdo urdhr i programit prfundon me simbolin ; (pikpresje).

    Shikimi i rezultatit n dalje (n ekran)

    Ka disa ambiente programuese, si p.sh., consola dalse nn Microsoft Windows, n t cilat dritarjae rezultateve n dalje do t zhduket menjher pas prfundimit t programit, duke pamundsuar shikimine rezultateve dalse. Pr t evituar kt problem, n fund t programit mund t shtoni nj urdhr, si

    cin.get();ose n disa raste duhet dy rreshtat vijues:

    cin.ignore(1000,n);cin.get();

    Kjo bn q dalja e programit t jet e dukshme deri sa t shtypet ndonj tast ose tasti Enter ntastier.

    Funksioni main() sht pika startuese e ekzekutimit t do programi n C++. Por, kjo nuk sht

    trsisht e vrtet n t gjitha rastet. Nse shkruhet programi q do t ekzekutohet n ambient tpavarur, nuk duhet patjetr funksioni main(). Me prjashtim t ktij rasti, programi patjetr duhet ta ketfunksionin main(). Standardi ISO tregon dy mnyrat vijuese t cilat duhet t pranohen nga cilidokompajler i C++:

    int main()int main(int argc, char *argv[])

    Definicioni i par sht standard. Definicioni i dyt i merr dy parametra t funksionit. I pariprmban numrin e argumenteve t linjs komanduese q i prcillen programit nga procesi thirrs (ai qe thrret programin pr ekzekutim), i dyt sht nj varg i parametrave t linjs komanduese.

    Standardi i C++ lejon kompajlerin q t pranoj definicionet e main() me parametra shtes, por kjosht e varur prej implementimit specifik dhe nuk sht portabile n prgjithsi.

    Kthimi nga funksioni main()

    Urdhri return pr kthim t rezultatit nga funksioni main( ) sht opcional (zakonisht mirret: return0;). Mirpo kompajlert e vjetr dhe disa kompajler aktual nuk pranojn programet main() q nuk kanurdhrin return, prandaj n shumicn e rasteve ai shkruhet.

    Gjja e par q vrehet, sht se main() kthen nj integer (deklarimi: int main()). Vlera e tipitinteger reprezenton statusin e kthyer pr procesin thirrs (sistemin operativ).

    Mund t kthehet fardo vlere, por vlerat e vetme portabile jan 0 dhe EXIT_SUCCESS, t cilatprfaqsojn ndrprerjen (prfundimin) normal dhe EXIT_FAILURE, q prfaqson prfundimin jonormal.

    EXIT_SUCCESS dhe EXIT_FAILURE jan t definuara n header-in . Cilado vler tjetr ekthyer, ia kthen procesit thirrs nj vler statusi t definuar prej implementimit.

    Gjithashtu, disa kompajler do t pranojn edhe definimin e main(), si: void main(). Megjithat, kjosht thjesht jokorrekte dhe nuk duhet t prdoret.

    ka ndodh nse nuk prdoret urdhri return? Nse kllapa mbyllse } e funksionit main() n fundt programit sht e mbyllur pa urdhrin return, efekti sht sikur t jet dhn urdhri return 0, q do tthot se return 0; sht e nnkuptuar, duke treguar ndrprerjen (prfundimin) normal. Kshtu , edheprogrami vijues sht valid, n C++:

    #include using namespace std;int main(){cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    5/140

    Avni Rexhepi Ushtrime n C++

    5

    Komentet

    Komentet, jan tekste pr shfrytzuesit, por q nuk kan ndikim n program. Ato shkruhen sapr t dhn ndonj shpjegim ose prshkrim. Kompajlleri i injoron trsisht.

    // Komenti n nj rresht

    /*Komenti n disa rreshta, apokomenti n bllok */

    //Programi i par#include using namespace std;int main(){

    /* Permes operatorit pr shtypje, cout,do t shtypet teksti n ekran */cout a; /leximi prej tastiere

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    6/140

    Avni Rexhepi Ushtrime n C++

    6

    cout > n2 >> n3;

    nm=(n1+n2+n3)/3;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    7/140

    Avni Rexhepi Ushtrime n C++

    7

    Edhe n versionin e Visual Studio 6.0 (Visual C++ 6.0), programi mund t shkruhet nformn e dyt, duke thirrur namespace-in standard (std).

    Namespace std

    Si u tha edhe m hert, kur i prfshijm fajlat e kreut (header files) prej libraris standarde t C++,prmbajtjet ndodhen n namespace std. Ekzistojn tri mnyra pr t kualifikuar prdorimin e tyre ashtuq t mund t prdoren n programe:

    (a) Duke prdorur direktivn: using namespace std; - Kjo sht metoda m e thjesht, mirpo i bn tgjith identifikatort e namespace std globalisht t disponueshm.

    (b) Duke prdorur deklarimin: using std::cout; - Kjo sht metod m e kufizuar dhe duhet tprssritet pr gjithka q dshirojm t kualifikojm pr prdorim n program, kshtu q programi do tduhet t shkruhet si n vijim:

    #include using std::cout;using std::endl;using std::cin;int main(){

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    8/140

    Avni Rexhepi Ushtrime n C++

    8

    Konfuzion shkakton edhe shtja e prdorimit t t header-it pr string. Ekzistojn tre header-a prstring: , t cilt jan t stilit t C-s (vargjet e karaktereve t prfunduara me null null-terminated character arrays) dhe prmbajn funksionet pr string si:strcpy(), strcat() and strlen() sidhe i cili prdoret pr std::string class -at n C++.

    Ajo ka sht me rndsi, sht se duhet t jeni n gjendje t shkruani kode t cila t e respektojnC++ standardin, gj q do t thot se mund ti kompajloni n cilindo kompajler modern t C++ -it.

    Variablat, tipet e tyre

    - T dhnat (ang. Data)

    Tipi Rangu i vleravemadhsia n

    bajta

    unsigned short int 0..65535 2short int -32768..32767 2

    unsigned longint 0..4294967295 4longint -2147483648..2147483647 4

    int - 16 bit -32768..32767 2int - 32 bit -2147483648..2147483647 4

    unsigned int - 16bit

    0..65535 2

    unsigned int - 32bit

    0..4294967295 4

    float 1.2E-38..3.4E38 4double 2.2E-308..1.8E308 8

    char 256 simbole 1

    Deklarimi

    Variabla deklarohet, duke deklaruar tipin dhe emrin:

    tipiVariabls emriVariabls, si p.sh.:

    int a;double x;float z;short int koha;char g;char Emri[20];/* Ne C++ nuk ka variabel tekstuale String, keshtu qe Stringukrijohet si varg i karaktereve te veanta*/

    int x,y;longint dita,e,f3; //Deklarimi i perbashket

    double x,h; int g; float a,p; //Deklarimet ne nje rresht

    int A[8]; //Vektori

    double Z[3][5]; //Matrica

    Indekset fillojnme vlern zero

    int A[6]; //6 antar - A[0], D[1], ..., D[5].

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    9/140

    Avni Rexhepi Ushtrime n C++

    9

    Deklarimi dhe inicializimi

    Nse gjat deklarimit, variabls i ndahet edhe vlera fillestare (inicializuese), atherthuhet se kemi br deklarimin dhe inicializimin njkohsisht.

    int i=5;double a=5.3;

    int A[5]={7,2,4,1,3};

    char Z[7]={'d','4','*','a','G','$'}; //Vektori me karaktere

    constdouble PI=3.1415926;

    constint m=5;int A[m]={7,2,4,1,3};

    constint m=4,n=3;int K[m][n]={{7,4,1},

    {2,5,8},{3,6,2},{8,1,3}};

    Tipet, identifikatort dhe fjalt e rezervuara

    Tipi

    Kur dshironi t ruani t dhna n nj program n C++, si numri i plot ose ndonjkarakter, duhet ti tregojm kompajlerit se cilin tip t t dhnave dshirojm ta ruajm. Tipi dot ket karakteristikat, si rangu i vlerave t cilat mund t ruhen dhe operacionet t cilat mund tkryhen n variablat e atij tipi.

    Tipet themelore

    C++ ofron tipet themelore t brendshme (built -in): Boolean, character, integer dhefloating-point (pik e lvizshme). Gjithashtu mundson krjijimin e tipeve t shfrytzuesit duke

    prdorur enumeration (grupimin) dhe class (klasa).Pr secilin prej tipeve themelore rangu i vlerave dhe operacioneve q mund t kryhen n

    to sht i prcaktuar prej kompajlerit. Secili kompajler duhet t ofroj operacionet e njjta prtipin e veant por rangu i vlerave mund t ndryshoj ndrmjet kompajlerve t ndryshm.

    Bool

    Vlera e tipit Bool-ean (t Bulit) mund t ken vlern true (e sakt) ose false (e pasakt).P.sh.,bool tek = false;bool VlerauGjet = true;

    Nse vlera buleane konvertohet n numr t plot, ather true bhet 1 kurse false bhet 0. Nse nj vler numerike e plot konvertohet n vler Bool -eane, ather vlera 0 bhet false

    kurse fardo vlere jo-zero bhet true(e sakt).

    Character

    Tipi karakter prdoret pr t ruajtur shkronjat, shifrat dhe simbolet (zakonisht ASCIIkarakteret, por jo gjithmon). P.sh.,

    char menyja = 'q';

    char vleraHyrese = '3';char SimboliPerqind = '%';

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    10/140

    Avni Rexhepi Ushtrime n C++

    10

    Vreni se si karakteri futet n thonjza t njfishta (apostrofe). Variablave t tipit karaktermund t ju ndahen edhe vlerat numerike:

    char chNumri = 26;

    Mund t deklarohen karakteret me shenj (signed) ose pa shenj (unsigned), ku karakteretme shenj mund t ken vler pozitive, negative ose zero, kurse karakteret pa shenj mund tken vetm vler pozitive ose zero.

    signed char VleraIme = 100;signed char VleraeRe = -43;unsigned char Karakteri2 = 200;

    Nse prdoret tipi char i thjesht, as me shenj, as pa shenj: char Vlera = 27;

    ajo mund t ndryshoj ndrmjet kompajlerve, ashtu q mund t ket sjellje si tkarakterit me shenj ose pa shenj. N disa kompajler ai mund t pranoj vler pozitive,negative ose zero kurse n disa mund t pranoj vetm vlera pozitive dhe zero. Madhsia e tipitchar sht gjithmon nj bajt, q sht e garantuar t jet s paku 8 bita. C++ gjithashtu ofronedhe tipin wchar_t, tip i zgjeruar karakter, zakonisht i prdorur pr bashksi t zgjeruara (t

    mdha) t karaktereve.Nj varg i karaktereve mund t prdoret q t prmbaj string t stilit t C-s n C++,p.sh.:

    char aString[] = "Ky eshte string i C-stilit";

    C++ gjithashtu ofron edhe klasn string q ka prparsi ndaj vargjeve t karaktereve.

    Integer

    Tipi integer prdoret pr ruajtjen e numrave t plot. Mund t prdoren tipet signed (meshenj), unsigned (pa shenj) ose i thjesht:

    signed int indeksi = 4198;signed int temperatura = -32;unsigned int numri = 0;int lartesia = 100;int vlera = -67;

    Sikur n rastin e karaktereve, numrat me shenj mund t prmbajn vlera negative,pozitive ose zero kurse ata pa shenj vetm vlera pozitive ose zero. Sidoqoft, numrat e thjeshtmund t prmbajn cilat do vlera, pasi q gjithmon e kan shenjn. Numrat integer mund tdeklarohen n form t shkurtr, pa fjaln e rezervuar int:

    signed indeksi = 4198;unsigned numri = 0;

    Vlerat Integer paraqiten n tri madhsi: plain int (int i thjesht), short int (int i shkurtr)dhe long int (int i gjat).

    int normal = 1000;short int vleraeVogel = 100;

    long int vleraeMadhe = 10000;

    Rangu i vlerave t ktyr tipeve sht i definuar prej kompajlerit. Zakonisht, tipi i thjeshtint ka rang m t gjer se short int, kurse long int m t gjat se ai i thjesht, edhe pse nukndodh kshtu gjithmon.

    Ajo q sht e sigurt, sht se tipi i thjesht do t jet s paku i madh sa short int ose mi madh dhe long int do t jet s paku i madh sa i thjeshti ose m i madh. Tipi short int sht s

    paku 16 bita, kurse long int s paku 32 bita. Vlerat short int dhe long int mund t definohen edhe n form t shkurtr, pa fjaln e

    rezervuar int:short vleraeVogel = 100;long vleraeMadhe = 10000;

    Mund t kemi vlera long int dhe short int me shenj ose pa shenj: unsigned long vleraPozitive = 12345;signed short = -7;

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    11/140

    Avni Rexhepi Ushtrime n C++

    11

    Floating-Point

    Tipet e numrave me pik t lvizshme mund t prmbajn numra decimal, si p.sh: 1.23, -.087. Ekzistojn tri madhsi: float (single -precisionme precizitet t njfisht), double (doubleprecision me precizitet t dyfisht) dhe long double (extended -precisionprecizitet izgjeruar). P.sh.:

    float celsius = 37.623;double fahrenheit = 98.415;long double xhirollogaria = 1897.23;

    Rangu i vlerave q mund t ruhen n seciln prej tyr sht i definuar prej kompajlerit.Zakonisht tipet double do t ruajn vlera m t mdha se ragnu i float dhe long double do t ruajvlera m t mdha se double (edhe pse kjo nuk sht gjithmon e vrtet). Sidoqoft, sht esigurt se double do t jet s paku i madh sa float por mund t jet m i madh, dhe long doubledo t jet i madh s paku sa long por mund t jet edhe m imadh.

    Enumeration (numeracioni - grupi)

    Nj numeracion (grup) sht tip i definuar prej shfrytzuesit q i mundson shfrytzuesit

    q t definoj rangun e vlerave pr tipin e dshiruar. Konstantet e emruara (antart e grupit)prdoren pr t paraqitur vlerat e nj numeracioni (grupi), si p.sh.: enum ditaeJaves {eHene,eMarte,eMerkure,eEnjte, ePremte, eShtune, eDiele};

    ditaeJaves ditaeSotme = eMerkure;if(ditaeSotme == eMarte){// urdherat}

    Vlerat e nnkuptuara t prcaktuara pr konstantet e numeracionit jan zero -based (mebaz zero), kshtu q, pr shembullin paraprak:

    eHene == 0, eMarte == 1, etj.

    Shfrytezuesi mund t prcaktoj vlera t tjera pr ndonjrin antar t grupit, dhe vleratvijuese do t ken vler pr nj m t madhe. P.sh.

    enum frutet {molla=3, bananja=7, portokalli, dardha, kiwi};

    keshtu, q portokalli do t ket vlern 8, dardha 9, kiwi 10, etj.

    Class - Klasat

    Klasa i mundson shrytzuesit krijimin e tipeve m t sofistikuara t t dhnave, pr tmodeluar objektet dhe veprimet nga jeta e prditshme . Pra, klasa sht nj konstruksionsoftverik q mund t prdoret pr simuluar ndonj objekt t jets reale. P.sh., modeli softverik inj veture, klasa vetura, mund t prmbaj t dhna pr tipin e veturs, si: tipi, ngjyra,harxhimi etj., dhe aftsit (aftsi vepruese, operative) si prshpejtimi, ngadalsimi,frenimi, etj. Klasa sht tip i definuar i shfrytzuesit q i ka t dhnat, antart (members) dhe

    aftsit (metodat). Objekti sht nj instanc (shembull, rast) e klass. P.sh., pr t krijuarklasn katrori e cila ka t dhnat (vlerat) pr madhsi dhe ofron operacionet vizato dhendryshomadhsin:

    class katrori {public:katrori();~katrori();void vizato();bool ndryshoMadhesine(int madhesiaeRe);private:int madhesia;};

    Diskutimi pr klasat, i tejkalon kufinjt e asaj ka msohet n kt semestrdhe nuk shtprfshir n kt tekst.

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    12/140

    Avni Rexhepi Ushtrime n C++

    12

    Identifikatort dhe fjalt e rezervuara t C++

    N C++ ne i krijojm emrat pr entitetet q i krijojm: variablat, funksionet dhe tipet edeklaruara. Kta emra ose si quhen Identifikator, duhet ti rispektojn disa rregulla. Nj

    identifikator duhet t filloj me shkronj dhe t prbhet nga nj varg i pandrprer ishkronjave dhe numrave. Megjithat, lejohet prdorimi i nnvizs (underscore) _ si lidhse,e cila n kt kontekst konsiderohet si shkronj. Nuk ka kufizime sa i prket gjatsis sidentifikatorit.

    Identifikatort q fillojn me nnviz t pasuar me shkronj t madhe jant rezervuarnga implementimi, ashtu si jan edhe ata me dy nnviza, kshtu q pr t evituar problemetduhet t evitoni prdorimin e tyre. Gjithashtu, nuk mund t prdoren si identifikator fjalt erezervuara n C++, t cilat jan:

    and, and_eq, asm, auto, bitand, bitor, bool, break, case, catch, char,class, compl, const, const_cast, continue, default, delete, do, double,dynamic_cast, else, enum, explicit, export, extern, false, float, for,friend, goto, if, inline, int, long, mutable, namespace, new, not, not_eq,operator, or, or_eq, private, protected, public, register, einterpret_cast,return, short, signed, sizeof, static, static_cast, struct, switch,template, this, throw, true, try, typedef, typeid, typename, union,unsigned, using, virtual, void, volatile, wchar_t, while, xor, xor_eq.

    Gjithashtu duhet t provoni t evitoni emrat nga librarit e C++ -it, si: abs, swap, max etj.C++ sht case sensitive ( i ndjeshm n madhsi t shkronjave, pra bn dallim mes

    shkronjs s madhe dhe asaj t vogl) kshtu q shkronja e vogl dallon prej asaj t madhe. Kjodo t thot, q emrat:

    Numri dhe numri ose ditaejaves dhe ditaeJaves dallojne mes veti dhe do ttrajtohen si dy identifikator t ndryshm.

    Shembuj t identifikatorve t pranueshm jan :llogaria, numri_i_pare, lexoVleren, kanali25, po

    Shembuj t identifikatorve t papranueshm: numri i pare, delete, 2shkronja, _TUNG_

    Kshilla dhe udhzime pr Identifikatort

    - Prdorni emra me kuptim dhe prshkrues pr ta br kodin leht t kuptueshm, si p.sh.: int lartsia nvend t int l, char menya e jo, char m, int mosha_ePacientit e

    jo int nr.

    - Evitoni emrat q dallojn vetm pr nga madhsia e shkronjave lartesia, Lartesia

    - Evitoni prdorimin e fjalve t rezervuara, duke i ndryshuar vetm n shkronjn e par

    t madheReturn, Continue.

    - Mundohuni t ruani stilin, si p.sh.:- Shkronja e madhe pr secilenpjes, prveq asaj t pars: lexoEmrin(),

    merrVlerenMaksimale ().

    - Prdorni nnvizn pr t ndare fjalt : lexo_Emrin(), mer_Vleren_Maksimale().- Prdorni prefiksin per identifikim t tipit: int nNumeriPlote, char stEmri[].

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    13/140

    Avni Rexhepi Ushtrime n C++

    13

    Leximi dhe Shtypja

    - cout - Pr shtypje t teksteve n ekran, prdoret operatori cout, i cili sht i definuar nheader fajllin (c out (lexohet si aut), si simbolik q nga C++ shtypet jasht).- cin - Pr marrjen (leximin) e vlerave prej tastiers, prdoret operatori cin , gjithashtu i

    definuar n header fajllin (c in (lexohet si in), si simbolik, q C++ merrebrenda).

    Pr manipulim me tekstin, C++ prdor buffer-in (baferin, regjistrin pr tekst), i cili zbrazetme urdhrin flush (pastrim, zbrazje), q menjher e drgon prmbajtjen e baferit n dalje .

    Kursori kalon n rreshtin e ri me njrn nga format: cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    14/140

    Avni Rexhepi Ushtrime n C++

    14

    ...setw(8);cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    15/140

    Avni Rexhepi Ushtrime n C++

    15

    Escape-sequence characters (karakteret speciale)

    \a Alarm\b Backspace\f Form Feed (pr printer)\n New line (CR+LF) (rreshti i ri)\r CR\t Tab\v Vertical Tab\\ \\? ?\ \ \000 Numr oktal\xhh Numr heksadecimal\0 Null zero (zero binare)

    \xhh, mund t prdoret pr t shtypur n ekran karakteret t cilat nuk i kemi n tastier, si

    p.sh. shkronja dhe , t gjuhs shqipe. ASCII kodi prkats i karakterit, duhet t shkruhetn formn heksadecimale. P.sh. pr , kodi sht: 137 (Si e shtypim zakonisht n tastier,ALT+137). Ather, 137 n bazn 16 (numr heksadecimal), sht: 89 (8*161+9*160=137).Prandaj, pr ta shtypur n dalje shkronjn , duhet tshkruhet: \x89. P.sh., pwr tw shtypurnw dalje:

    Sot sht dit e mir n C++ duhet t shkruhet - Sot \x89sht\x89 dit\x89 e mir\x89

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    16/140

    Avni Rexhepi Ushtrime n C++

    16

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    17/140

    Avni Rexhepi Ushtrime n C++

    17

    Sistemi numerik

    Rezultatet mund t shtypen n sistemet numerike me baz t ndryshme, si decimal (baza10), heksadecimal (baza 16), octal (baza 8), etj, duke prdorur para shtypjes s vlers, urdhrin

    pr prcaktimin e formatit prkats: dec, hex apo oct .

    // modifikimi i bazs s numrave#include using namespace std;

    int main (){int n;n=100; //vlera decimale 100cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    18/140

    Avni Rexhepi Ushtrime n C++

    18

    Leximi i fjalve dhe fjalive

    // Programi Fjala1#include

    using namespace std;int main(){

    char Emri[20], Mbiemri[20];

    cout Mbiemri;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    19/140

    Avni Rexhepi Ushtrime n C++

    19

    Leximi i tekstit me gjatsi t caktuar, bhet me urdhrin cin.get (ang. Get marr, merr)

    cin.get(a,n) // n numri i karaktereve q lexohen (pranohen)

    // Programi lexo6#include using namespace std;int main(){

    const m=20;char A[m];cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    20/140

    Avni Rexhepi Ushtrime n C++

    20

    Rreshtimi i tekstit

    Gjat shtypjes, rezultati mund t rreshtohet djathtas, majtas apo n mes. Pr t brrreshtimin e tekstit prdoren manipulatort: left (majtas), right (djathtas) dhe internal (pr

    brenda).

    // Rreshtimi#include using namespace std;

    int main (){int n;n=-25;cout.width(10); cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    21/140

    Avni Rexhepi Ushtrime n C++

    21

    Stringu

    C++ ka dy metoda pr paraqitjen e t dhnave tekstuale - stringjeve (variabla string),vargu i karaktereve n stil t C-s dhe klasa string. Vargu i karaktereve sht nivel i ult i

    prfaqsimit t t dhnave string, mirpo akoma haset np r kode t ndryshme. Klasa string, ecila sht pjes e libraris standarde t C++ -it, ofron metoda pr manipulim t leht me tdhnat tekstuale (string).

    Vargu i karaktereve

    Si tregon edhe vet emri, vargu i karaktereve n stil t C -s sht paraqitje e t dhnavestring q prdoret n gjuhn C. N C, kjo sht teknika e vetme pr ruajtjen dhe manipulimin et dhnave string. Stringjet ruhen si vargje t karaktereve t prfunduara me null - \0. Kjo

    paraqitje ka disa dobsi, t cilat duhet t evitohen n C++ duke prdorur klasn string. Vargu i karaktereve me madhsi t mjaftueshme duhet t definohet ose alokohet pr t

    mbajtur s paku gjatsin e stringut plus nj, pasi q nj bajt nevojitet pr tashtuquajturin null terminator (prfunduesin null (zero)). sht prgjegjsi e

    programerit q t jet i sigurt pr gjatsin e mjaftueshme t vargut. Kompajlimi nuk dot lajmroj ndonj gabim apo vrejtje nse gjatsia sht m e vogl se sa q duhet.Gabimet n madhsin e vargut t karaktereve do t paraqiten gjat ekzekutimit.Programi mund t bllokohet, t ket sjellje t gabuar ose t paparashikuar.

    Ndojnher, sht e nevojshme q null terminatori t shtohet n mnyr eksplicite. Zakonisht nevojiten ose prdoren pointert pr t ju qasur dhe pr t manipuluar me t

    dhnat string. Kur t kopjohen stringjet, programeri duhet t verifikoj vargun cak pr gjatsi t

    nevojshme. Kur shtohen stringjet, prsri gjatsia e stringut duhet t mirret nkonsiderim.Mirpo, ka disa arsye t rndsishme, pr studimin dhe msimin e stringjeve t stilit t C -

    s. S pari, mirmbajtja e ndonj kodi t trashguar, sepse disa programer i prdorin akoma. Sdyti, klasa string nuk ishte pjes e versioneve fillestare t C++ -it. Programert i prdorin t dymnyrat. N secilin rast, nevojitet njohja e C-stringjeve. Arsyeja e fundit sht se akoma

    prdoren n C++ pr t manipuluar me argumentet e linjs komanduese. Argumentet e linjs

    komanduese jan t dhna ose urdhra t cilt i prcillen programit kur ai fillon ekzekutimi n.Kto argumente i prcillen programit t C++ -it n stilin e C-stringjeve.

    Klasa String

    Libraria standarde e C++-it ofron klasn string. Prdorimi i ksaj klase duhet t prfshihetn program me direktivn: #include . Pr dallim prej C-stringjeve, prfaqsimi i brendshm i t dhnave string sht i fshehur

    prmes klass string. T dhnat jan nj bashksi, e qasur dhe e manipuluar prmes prdorimitt metodave t klass string. Programeri nuk sht i preokupuar si dhe ku ruhet stringu. Kjosht nj shembull i enkapsulimit. Le t shohim krijimin dhe inicializimin e objekteve string

    prmes nj shembull:

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    22/140

    Avni Rexhepi Ushtrime n C++

    22

    #include #include using namespace std;

    int main(){

    string S1;// Konstruktori i zakonshem, pa inicializim

    string S2("Tung");// Inicializimi me C-Style string

    string S3("Tung nga Kosova");// Inicializimi me C-Style string

    string S4(S3);// Inicializimi me nje string objekt tjetr

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    23/140

    Avni Rexhepi Ushtrime n C++

    23

    string ka gjithasthu edhe metodat (funksionet pr veprim), empty (zbraze) pr t testuar stringune zbrazt dhe size (madhsia) pr t llogaritur madhsin (gjatsin) e stringut.

    Shembull:

    #include #include using namespace std;

    int main(){

    string S1;string S2(" nga ");string S3("Kosova");string S4;

    if (S1.empty()){

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    24/140

    Avni Rexhepi Ushtrime n C++

    24

    Rezultati:

    Metodat e klass string

    Klasa string ka shum metoda pr manipulim t stringjeve, si: shtimi, insertimi, fshirja,krkimi dhe zvendsimi. Disa nda to jan prshkruar n tabe ln vijuese:

    Metoda Prdorimi

    append(char *pt);append(char *pt, size_t count);append(string &str, size_toffset,size_t count);append(string &str);append(size_t count, char ch);append(InputIterator Start,InputIterator End);

    Shton karkteret prej C-stringut, char ose objekteve tjera string.

    at(size_t offset);Kthen referencn n karakterin n pozitn e specifikuar. Dallon prejoperatorit t indeksimit [ ], pasi q verifikohen kufinjt.

    begin(); Kthen nj iterator n fillim t stringut.

    *c_str(); Kthen pointerin n versionin e C -stringut t prmbajtjs s stringut.clear(); Fshtin tr stringun

    copy(char *cstring, size_tcount, size_t offset);

    Kopjin numrin-count e karaktereve nga C-stringu duke filluar ngazhvendosja-offset.

    empty(); Teston a sht stringu i zbrazt.

    end(); Kthen iteratorin n pozitn pas fundit t stringut (nj pozit m pas).

    erase(iterator first, iteratorlast);erase(iterator it);erase(size_t pos, size_t count);

    Fshin karakteret nga pozita e specifikuar.

    find(char ch,size_t offset = 0);

    find(char *pt,size_t offset = 0);find(string &str,size_t offset =0);

    Kthen indeksin e karakterit t par t substringut kur ai gjendet.Prndryshe, kthehet vlera speciale npos.

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    25/140

    Avni Rexhepi Ushtrime n C++

    25

    find_first_not_of();Seti i njjt i argumenteve sikur find. Gjen indeksin e karakterit tpar q nuk sht n stringun krkues.

    find_first_of();Seti i njjt i argumenteve sikur find. Gjen indeksin e karakterit tpar q sht n stringun krkues.

    find_last_not_of();Seti i njjt i argumenteve sikur find. Gjen indeksin e karakterit t

    fundit q nuk sht n stringun krkues.

    find_last_of();Seti i njjt i argumenteve sikur find. Gjen indeksin e karakterit tfundit q sht n stringun krkues.

    insert(size_t pos, char *ptr);insert(size_t pos, string &str);insert(size_t pos, size_t count,char ch);insert(iterator it, InputIteratorstart, InputIterator end);

    Inserton karakteret n pozitn e specifikuar.

    push_back(char ch); Inserton karakteret n fund t strignut.

    replace(size_t pos, size_tcount, char *pt);replace(size_t pos, size_tcount, string &str);replace(iterator first, iteratorlast, char *pt);replace(iterator first, iteratorlast, string &str);

    Zvendson elementet n string me karakteret e specifikuara. Rangumund t specifikohet prmes pozits startuese dhe numrit t elementevepr zvendsim ose duke prdorur iteratort.

    size(); Kthen numrin e elementeve n string.

    swap(string &str); Shkmben dy stringje.

    Kushtet (Degzimet)

    Gjat shkruarjes s programeve pr raste t ndryshme, paraqitet nevoja e kushtzimit t

    ekzekutimit t urdhrave n baz t ndonj kushti t caktuar. N C++ kemi disa forma tparaqitjes s kushteve: Rasti m i thjesht sht kur pr ndonj kusht t caktuar ekzekutoheturdhri (ose urdhrat), kurse nse nuk plotsohet kushti, nuk ndodh asgj por programivazhdon me urdhrin e ardhshm (vijues), si n vazhdim:

    if (kushti) urdhri ;ku:

    kushti - kushti pr degzimurdhri urdhri q ekzekutohet nse plotsohet kushti k

    Zakonisht, n program kushti shkruhet n rresht t veant:

    if (kushti)

    urdhri ;

    // Programi if1a#include using namespace std;int main(){

    int x;cout > x;if (x > 0) cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    26/140

    Avni Rexhepi Ushtrime n C++

    26

    Gjat shkruarjes s programeve, prdoren operatort aritmetik dhe operatort relacional:

    Operatori n C++ Operacioni Shembull Rezultati

    + Mbledhja 3+2 5- Zbritja 3-2 1* Shumzimi 3*2 6/ Pjestimi 3/2 1.5% Moduli 3%2 1

    *Moduli, sht mbetja nga pjestimi i plot (5%2=1; 8%3=2).

    Operatori n C++ Domethnia Shembull Rezultati< M i vogl se 2 < 3 true 2 true>= M i madh se,

    ose barazi me2 >= 3 false

    != Jobarazi me 2 != 3 true

    // Programi if1b#include using namespace std;int main(){

    int x;

    cout > x;

    if (x > 0)cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    27/140

    Avni Rexhepi Ushtrime n C++

    27

    // Programi if2#include using namespace std;int main(){

    int x;cout > x;

    if ((x%2) == 0)cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    28/140

    Avni Rexhepi Ushtrime n C++

    28

    // Programi if2a#include using namespace std;int main(){

    int x;

    cout > x;

    if (x > 0)cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    29/140

    Avni Rexhepi Ushtrime n C++

    29

    // Programi if3#include using namespace std;int main(){

    int x,y,z;

    cout > x;

    if (x > 0){y=2*x;z=x*x;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    30/140

    Avni Rexhepi Ushtrime n C++

    30

    if (kushti1)if (kushti2)

    urdhri1;elseurdhri2;

    else

    urdhri3;

    Pra, urdhri1 ekzekutohet vetem kur plotsohen edhe kushti1 edhe kushti2. urdhri2ekzekutohet kur plotsohet kushti1por nuk plotsohet kushti2. urdhri3 ekzekutohet kur nuk

    plotsohet fare kushti1 (n kt rast, kushti2 nuk vjen n pyetje fare). P.sh, n rastin vijues, edhe pse duket se llogaritja do t behet n rregull duke prdorur

    kombinim e kushteve prmes operatorit DHE, mund t shihet se pr numrat pozitiv por m tvegjl se 10, rezultati del i gabuar.

    // Programi if4-llogaritja e gabuar#include

    using namespace std;int main(){

    int x,y,z;cout > x;if ((x > 0) && (x>10)){cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    31/140

    Avni Rexhepi Ushtrime n C++

    31

    x > 0

    x>0

    x>10

    Fillimi

    x

    Fundi

    Po Jo

    x sht

    negativ

    x > 10

    x>0

    x x;

    if (x > 0)if (x>10)

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    32/140

    Avni Rexhepi Ushtrime n C++

    32

    // Programi - operatori i kushtezimit#include using namespace std;int main(){

    int a=2, b=8;int y;y=(a>b) ? a : b;cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    33/140

    Avni Rexhepi Ushtrime n C++

    33

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    34/140

    Avni Rexhepi Ushtrime n C++

    34

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    35/140

    Avni Rexhepi Ushtrime n C++

    35

    Kaprcimi pa kusht: goto

    Go to Dalja

    Mesi

    Fillimi

    Fundi

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    36/140

    Avni Rexhepi Ushtrime n C++

    36

    Fillimi

    i=10

    Po

    Jo

    ii;

    if (i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    37/140

    Avni Rexhepi Ushtrime n C++

    37

    Pr ti mundsuar shfrytzuesit q pas ekzekutimit t programit, t zgjedh nse dshiront bj prsri riekzekutimin e programit prej fillimit pa e ndrprer at (pa dal prej tij), mundt prdoret forma si vijon, prmes urdhrit goto.

    // Programi goto3#include using namespace std;int main(){int i;char zgjedhja;

    Perseritje: //Labela(etiketa-adresa) per kapercim pa kusht

    cout > i;cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    38/140

    Avni Rexhepi Ushtrime n C++

    38

    Unazat (Loops - laqet)

    Loop (angl Loop-laku, rrethi i mbyllur, apo ndryshe si term m i prshtatshm n gjuhnshqipe, unaza)paraqet pjesn e programit, ku bhet prsritja e ekzekutimit t nj apom

    shum urdhrave t programit. Unaza ka variabln e unazs, e cila prdoret si tregues se sa herdo t prsriten urdhrat brenda unazs. Ajo fillon me vlern fillestare dhe pr do her tekzekutimit t urdhrave t unazs, e ndryshon vlern pr nj hap t caktuar, q njihet si hapi iunazs. N fund t pjess s unazs, testohet se a sht plotsuar kushti pr dalje prej unazs.Kjo rritje e variabls s unazs, pr hapin e caktuar, vazhdon deri sa t plotsohet kushti prdalje prej unazs. N C++ prkrahen disa forma t unazave:

    Unaza while (gjersa)

    Unaza While (gjersa), bn prsritjen e urdhrave t unazs, gjersa vlen kushti i caktuar. Pra,gjersa pr kushtin e unazs While kemi rezultatin TRUE (E SAKT, PO), ekzekutohen urdhrat eunazs dhe variabla e unazs rritet, pr hapin e caktuar.

    Unaza While, s pari e vlerson kushtin dhe pastaj, nse plotsohet kushti, ekzekuton urdhratn unaz. Nse kushti nuk plotsohet hern e par q testohet kushti(pr hapin e par t variabls sunazs),pra pr vlern fillestare t variabls s unazs, ather urdhrat n unaz nukdo tekzekutohen asnjher.

    i=f;while(kushti){

    urdhri/at;i=i+h;

    }

    ku jan:i - variabla e unazs.f - vlera fillestare e variabls s unazs. kushti - kushti i ekzekutimit t urdhrave q

    prfshihen n trupin e unazs.

    h - hapi me t cilin ndryshohen vlerat e variabls i.urdhri/at urdhrat q ekzekutohen brenda unazs.

    Fillimi

    n

    S=0

    S=S+i

    S

    Fundi

    i=1

    i nPo

    Jo

    i=i+1

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    39/140

    Avni Rexhepi Ushtrime n C++

    39

    // Program while1#include using namespace std;int main(){

    double S;int i;S=0;i=1; //vlera fillestarewhile (i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    40/140

    Avni Rexhepi Ushtrime n C++

    40

    i=f;do{

    urdhri/at;i=i+h;

    }

    while(kushti);

    ku jan:i - variabla e unazs.f - vlera fillestare e variabls s unazs. kushti - kushti i ekzekutimit t urdhrave q prfshihen

    n trupin e unazs.

    h - hapi me t cilin ndryshohen vlerat e variabls i.urdhri/at urhdri/at e prfshira brenda unazs.

    Po

    Jo

    Fillimi

    n

    S=0

    i=1

    S=S+i

    i=i+1

    i n

    S

    Fundi

    // Programi do-while1#include using namespace std;int main(){constint m=3;int i;double s;

    s=0;i=1; //vlera fillestaredo //(do -bj, vepro, kryej)

    {s=s+i; //urdhrii++; //rritja e hapit t unazs

    }while (i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    41/140

    Avni Rexhepi Ushtrime n C++

    41

    Unaza for

    Unaza for (pr), gjithashtu bnprsritjen e urdhrave brenda unazs, duke prshkruar nfillim vlern fillestare, kushtin dhe hapin e unazs. Ka formm kompakte dhe prdoret n tshumtn e rasteve. Zakonisht, kur vlerat kufitare (vlera fillestare dhe vlera prfundimtare) tvariabls s unazs jan t njohura paraprakisht, prdoret unaza for.

    for (i=f; kushti; i=i+h)

    { urdhri/at;}

    ku:

    i - variabla e unazs.kushti - kushti i mbetjes brenda unazs.h - hapi me t cilin ndryshohen vlerat e variabls i.urdhri/at urdhri/at q ekzekutohen brenda unazs.

    // Programi for1#include

    using namespace std;int main(){

    int i,n;double s=0;cout > n;for (i=1;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    42/140

    Avni Rexhepi Ushtrime n C++

    42

    Po

    Jo

    Fillimi

    n

    S=0

    i=1

    S=S+i

    i=i+1

    i n

    S

    Fundi

    Fillimi

    n

    S=0

    S=S+i

    S

    Fundi

    i=1; i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    43/140

    Avni Rexhepi Ushtrime n C++

    43

    for(i=10;i>0;i--){cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    44/140

    Avni Rexhepi Ushtrime n C++

    44

    for ( n=0; n Emri;

    }

    me rast do t krijohej unaz e pafundme, si n rastin e unazs while me kushtin true.

    Pr t mundsuar ndrprerjen e unazave t pafundme (ose edhe unazave t zakonshme prndonj kusht t caktuar)prdoret urdhri break (angl break- ndrpreje, ndale).

    Ndrprerja e unazs (break)

    Prmes urdhrit break (ndrpreje, ndale) mund t bhet dalja e parakohshme prej unazs,gjegjsisht ndrprerja e saj. Kjo mund t bhet, prmes testimit n ndonj kushti shtes, brendatrupit t unazs. P.sh., kemi unazn pr shtypjen e numrave rendor, prej 1 deri n 10. Mirpor,brenda unazs, vendosim kushtin, q nse vlera e variabls s unazs sht m e madhe se 5, tndrpritet unaza.

    Jo

    Po

    Jo

    Fillimi

    n

    S=0

    i=1

    S=S+i

    i=i+1

    in

    S

    Fundi

    i > 5 Po

    Fillimi

    n

    S=0

    S=S+i

    S

    Fundi

    i=1; i 5Po

    // Programi Break - ndrprerja e unazs, dalja prej unaze#include using namespace std;int main(){

    int i;for (i=1;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    45/140

    Avni Rexhepi Ushtrime n C++

    45

    {if (i>5)break; //ndrprerja, dalja prej unazecout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    46/140

    Avni Rexhepi Ushtrime n C++

    46

    for (i=1;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    47/140

    Avni Rexhepi Ushtrime n C++

    47

    Vargjet

    Vargjet e numrave ose fushat numerike nj-dimensionale (vektort) dhe dy-dimensionale(matricat) n C++ definohen si vijon:

    int A[8]; /Vektoridouble Z[3][5]; /Matrica

    Indekset fillojn me vlern 0 (zero )

    int A[6]; /6 antar - A[0], A[1], ..., A[5].

    Deklarimi dhe inicializimi i vargjeve

    Vargjet mund ti deklarojm dhe aty pr aty ti inicializojm me vlera, si n vijim:

    int A[5]={7,2,4,1,3};

    char Z[7]={'d','4','*','a','G','$'}; /Vektori me karaktere

    constint m=5;int A[m]={7,2,4,1,3};

    constint m=4,n=3;int K[m][n]={ {7,4,1},

    {2,5,8},{3,6,2},{8,1,3} };

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    48/140

    Avni Rexhepi Ushtrime n C++

    48

    Vektort

    // Programi vektor1

    #include using namespace std;int main(){

    constint m=5;int i;

    //Deklarimi dhe inicializimi i vektroritint A[m]={2,5,-1,6,3};cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    49/140

    Avni Rexhepi Ushtrime n C++

    49

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    50/140

    Avni Rexhepi Ushtrime n C++

    50

    //Formimi i vektorit prej vektori#include using namespace std;int main()

    {const n=4;int i,A[n]={1,2,3,4},B[n];for (i=0;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    51/140

    Avni Rexhepi Ushtrime n C++

    51

    Pasi q prfundon vendosja e vektorit t par (gjersa i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    52/140

    Avni Rexhepi Ushtrime n C++

    52

    Matricat

    // Programi matrica1#include using namespace std;

    int main(){

    constint m=3, n=3;int i,j;int A[m][n]={{1,2,3},

    {4,5,6},{7,8,9}};

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    53/140

    Avni Rexhepi Ushtrime n C++

    53

    }}

    //Shtypja e matricscout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    54/140

    Avni Rexhepi Ushtrime n C++

    54

    Veprimet me vektor/matrica dhe gjetja e antarve t caktuar tvektorit/matrics

    Shuma e antarve t matrics:

    //Shuma e anetareve te matrices#include using namespace std;int main(){

    const m=3,n=4;int A[m][n]={ {1,2,3,4},

    {5,6,7,8},{-5,-6,-7,-8}

    };

    int i,j,s;s=0;for (i=0;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    55/140

    Avni Rexhepi Ushtrime n C++

    55

    Jo

    Po

    Po

    Jo

    Fillimi

    n=0

    i=1

    n=n+1

    i=i+1

    i m

    n

    Fundi

    ai< 0

    m,(ai,i=1,m)

    //Numri i antareve negativ te vektorit#include using namespace std;int main(){

    const m=5;

    int A[m]={3,-2,7,-4,5},i,n;n=0; //numratori fillimisht vlera zerofor (i=0;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    56/140

    Avni Rexhepi Ushtrime n C++

    56

    //Numri i antareve negativ//dhe pozitiv te vektorit#include using namespace std;#include int main(){

    const m=5;int A[m]={2,-3,-7,4,1},i,p,n;p=0;n=0;for (i=0;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    57/140

    Avni Rexhepi Ushtrime n C++

    57

    Antari m i madh (m i vogl)

    Gjetja e antarit minimal/maksimal bhet, duke e deklaruar fillimisht antarin e par t

    vargut, si antari minimal/maksimal: p.sh., Amax=A[0];dhe pastaj prmes unazs q iprshkon t gjith antart tjer t vargut, e krahasojm vlern momentale t Amaxme t gjithantart tjer t vargut. Nse gjindet ndonj q sht m i madh (pr rastin minimal m i vogl)se antari momental maksimal, ather Amax, e merr vlern e tij dhe krahasimi vazhdon meantart vijues t vargut.

    Jo

    Jo

    Po

    Fillimi

    amax=ai

    amax

    Fundi

    Po

    i=i+1

    i m

    amax=a1

    i=2

    amaxai

    m,(ai,i=1,m)

    //Anetari me i madh i vektorit#include using namespace std;int main(){

    const m=4;int A[m]={3,7,5,9},i, Amax;Amax=A[0];for (i=1;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    58/140

    Avni Rexhepi Ushtrime n C++

    58

    Sortimiradhitja sipas madhsis

    Nj prej mnyrave t sortimit t antarve t vargut realizohet kshtu: fillohet me antarinn pozitn e par dhe bhet krahasimi i antar nga pozita e par, me t gjith antart e vargut.Pra: i pari-i dyti, i pari-i treti, ... i pari-i fundit. Sa her q vlerat q krahasohen nuk jan t

    renditura si duhet, ua ndrrojm vendet. Kshtu, pasi t gjindet antari m i vogl (ose prrenditjen e kundrt, antari m i madh) ai vendoset definitivisht n pozitn e par dheprcaktohet antari m i vogl. Pastaj, vazhdon procedura e njjt, pr t gjetur antarin eardhshm m t vogl, pr pozitn e dyt. Pra, bhet krahasimi i antarit n pozitn e dyt, met gjith antart e ardhshem: i dyti -i treti, i dyti-i katrti, ... i dyti i fundit, dhe njsoj, sa herka nevoj, dy antarve q krahasohen u ndrrohen vendet. Kur, prfundon gjetja e antarit prpozitn e dyt, procedura e njjt prsritet pr antart vijues. Nse vargu ka n antar, atherduhet t bhn n-1 kalime t tilla (sepse krahasimi nuk bhet me vet-vehten dhe n fundkrahasohet antari i parafundit me at t fundit) .

    Pr krahasim, marrim dy numrator: i dhe j, dheprdorn dy unaza (unaz brendaunazs), ku unaza pri fillon prej pozits s par dhe shkon deri tek pozita e parafundit, kursej fillon prej pozits s dyt (i+1) dhe shkon deri tek pozita e fundit. Pr secilin hap t unazss jashtme, i, unaza e brendshme, j, fillon prej pozitsprnj m t madhe: (j=i+1). Nsecilin hap, krahasohen A[i]>A[j]. Nse ka nevoj qtu ndrrohen vendet, ather ndrrimii vendevebhet duke prdorur nj variabl ndihmse, (si n figur) e cila s pari e merr vlern eantarit t par (q t mos humbet ajoB=A[i]), pastaj antari i par e merr vlern e antarit tdyt(A[i]=A[j]), dhe n fund, antari i dyt, e merr vlern e antarit t par prej variablsndihmse, e cila e ka ruajtur at prkohsisht (A[j]=B). Kjo sht e ngjashme me procedurne ndrrimit t prmbajtjes s dy enve. Nuk mund t ndrrohen ent e tyre, pa e pasur s pari njen t tret ndihmse, n t ciln e bartim prmbajtjen e ens s par, pastaj at prej s dyts ekalojm n enn e par, kurse n fund, prej ens ndihmse, e kthejm prbrjen e par n enn edyt.

    A[i] A[j]

    B

    1 3

    2

    //Sortimi i anetareve te vektorit#include using namespace std;int main(){

    const n=4;int A[n]={7,2,8,3},i,j,b;for (i=0;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    59/140

    Avni Rexhepi Ushtrime n C++

    59

    A[i]=A[j];A[j]=b;

    }}

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    60/140

    Avni Rexhepi Ushtrime n C++

    60

    for (j=0;j

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    61/140

    Avni Rexhepi Ushtrime n C++

    61

    =

    Jo

    Po

    >>n;

    Prodhimi=ProdVarg(m,n,2,4); //Funks. per prod. e vargut

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    86/140

    Avni Rexhepi Ushtrime n C++

    86

    T llogaritet:

    Y =3

    n

    i

    i

    1

    )23( +

    2

    2

    )1*2(n

    i

    i + 4

    n

    i

    i

    1

    )3(

    Fillimi

    m,n

    Y

    Fundi

    Y=Shuma(1,n,3,2)+Shuma(2,n+2,2,1)+Prodhimi(1,n,1,3)

    Shuma(a,b,c,d)

    return S

    Po

    S=0

    i=a

    S=S+(c*i+d)

    i=i+1

    i b

    Prodhimi(a,b,c,d)

    return P

    Po

    P=1

    i=a

    P=P*(c*i+d)

    i=i+1

    i b

    // Programi Funksion5#include using namespace std;

    double Shuma(int a, int b, int c, int d);double Prodhimi(int a, int b, int c, int d);int main(){

    int n;double Y;coutn;

    Y=3*Shuma(1,n,3,2)+Shuma(2,n+2,2,1)+Prodhimi(1,n,1,3);

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    87/140

    Avni Rexhepi Ushtrime n C++

    87

    int i;double S;S=0;for (i=a;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    88/140

    Avni Rexhepi Ushtrime n C++

    88

    Llogaritja e faktorelit

    Fillimi

    n

    Fakt

    Fundi

    Fakt=Faktoriel(n)

    Faktoriel(m)

    return F

    Po

    F=1

    i=1

    F=F*i

    i=i+1

    i m

    // Programi Funksion4#include using namespace std;

    double Faktoriel(int m);int main(){

    int n;double Fakt;n=5;

    Fakt=Faktoriel(n); //Funks. per Faktoriel

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    89/140

    Avni Rexhepi Ushtrime n C++

    89

    Shembull:

    T llogaritet: Fakt = n! + (2n)! (2n-1)!

    Fillimi

    n

    Fakt

    Fundi

    Fakt=Faktoriel(n)+Faktoriel(2*n)-Faktoriel(2*n-1)

    Faktoriel(m)

    return F

    Po

    F=1

    i=1

    F=F*i

    i=i+1

    i m

    // Programi Funksion4// Fakt = n! + (2n)! (2n-1)!#include using namespace std;

    double Faktoriel(int m);int main(){

    int n;

    double Fakt;n=2;

    Fakt=Faktoriel(n)+Faktoriel(2*n)-Faktoriel(2*n-1);

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    90/140

    Avni Rexhepi Ushtrime n C++

    90

    Rekurzioni

    Rekurzioni, paraqet thirrjen e vet funksionit brenda funksionit, pra thirrjen e vet -vehtes...

    // Programi Faktoriel-Rekurzioni

    #include using namespace std;

    double Faktoriel(int m);int main(){

    int n;double Fakt;n=5;

    Fakt=Faktoriel(n); //Funks. per Faktoriel

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    91/140

    Avni Rexhepi Ushtrime n C++

    91

    /* Funksioni per llogaritje te faktorielit - rekurzioni */int Faktoriel (int n){//(funksioni pa variabla te brendshme plotesuese, si F, i, etj.)

    if (n > 1) { //kontrollojme vleren hyrese nreturn n * Faktoriel (n - 1);

    }else {

    return 1;}

    }

    Funksionet dhe Vektort

    // Programi FunksioniVektori1

    #include using namespace std;int FormoVektorin(int X[],int n);int main(){

    constint m=5;int i,A[m];FormoVektorin(A,m);cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    92/140

    Avni Rexhepi Ushtrime n C++

    92

    }int ShumaAntVektorit(int X[],int n){

    int i,s;s=0;for (i=0;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    93/140

    Avni Rexhepi Ushtrime n C++

    93

    Pra, funksioni void ShtypeVektorin(int X[],int n), nuk kthen rezultat,sepse veprimet i kryen ne brendi te funksionit, keshtu qe ska nevoje te ktheje rezultat fare. Programi kryesor, i cili e e ka thirrur funksionin per ta kryer punen e caktuar, ne kete rast skanevoje per rezultat kthyes prej funksionit, por vetem kerkon qe funksioni ta kryej nje pune tecaktuar (ne kete rast shtypjen e rezultatit (vektorit) ne dalje).

    // Programi FunksionVektor4 Minimumi dhe Maximumi me funksion#include using namespace std;void ShtypeVektorin(int X[],int n);int AntMaxVektorit(int X[],int n);int AntMinVektorit(int X[],int n);

    int main(){

    constint m=5;

    int Amin, Amax;

    int A[m]={3,2,1,4,5};

    ShtypeVektorin(A,m);

    Amin=AntMinVektorit(A,m);Amax=AntMaxVektorit(A,m);

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    94/140

    Avni Rexhepi Ushtrime n C++

    94

    int AntMinVektorit(int X[],int n){

    int i,j,Xmin;

    Xmin=X[0];for (i=1;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    95/140

    Avni Rexhepi Ushtrime n C++

    95

    {constint m=2, n=3;double Shuma;int A[m][n]={ {1,2,3},

    {4,5,6},};

    Shuma=ShumaAntMatrices(A,m);cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    96/140

    Avni Rexhepi Ushtrime n C++

    96

    {int i,j;double s;s=0;for (i=0;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    97/140

    Avni Rexhepi Ushtrime n C++

    97

    Prfshirja e fajllave me direktivn #include

    Zakonisht direktivn #include, e kemi prdorur pr ti thirrur librarit e gatshme tC++-it. Kllapat e drejta me simbolet < dhe > q prdoret tek : #include usingnamespace std;,i tregojn C++-it se n program prfshihet edhe ndonj header file nga

    folderi i zakonshm i C++, aty ku ruhen header fajllat. Nse dshirojm, q n program taprfshijm nj fajll tjetr, q sht i ruajtur brenda folderit t njjt, ku sht i ruajtur edheprogrami aktual, ather prdoret forma:

    #includeEmri_i_fajllit.h. Pra, emri shkruhet brenda thojzave t zakonshme. Header fajlli, krijohet duke shkuar prmes menys: FileNew, dhe zgjedhet C/C++ HeaderFile. Emertohet me emrin me prapashtese .h dhe pastaj shkruhet dhe ruhet si fajllat e zakonshemburimor t C++.

    P.sh., shpesh here kemi nevoj q t shtypim adresn ton pr kontakt:

    Avni RexhepiFakulteti Elektroteknik

    PrishtinTel: 044 174 374

    Tr kt tekst mund ta shtypim me urdhrat vijues, t ruajturn nj Header File (Hederfajll) t C++, Adresa.h, si:

    //Fajlli Adresa.hcout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    98/140

    Avni Rexhepi Ushtrime n C++

    98

    Thirrja e funksionit, nga fajlli tjetr

    Edhe funksionet mund t shkruhen dhe t ruhen si fajlla tveant, e pastaj t prdoren nshum programe t ndryshme, sipas nevojs. N rast t till, prfshirja e funksionit brendaprogramit, bhet me direktivn preprocesorike #include.

    P.sh., n folderin: C:\Shembuj kemi fajllat: FunksioniMeInclude.cpp dheFormoVektorin.h. Ather n programin kryesor shkruajm:

    // Program-Funksioni i thirrur me #include#include using namespace std;#include "FormoVektorin.h" //prfshije fajllin FormoVektorin.h.

    int main(){

    const int m=5;int i,A[m];FormoVektorin(A,m);cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    99/140

    Avni Rexhepi Ushtrime n C++

    99

    Shembull:

    Fajlli: Include2.cpp programi kryesor

    //Llogaritja e faktorielit, permes rekurzionit#include using namespace std;#include "Faktorieli.h"int main(){

    int n;int fakt;

    cout > n;

    fakt = Faktoriel (n);

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    100/140

    Avni Rexhepi Ushtrime n C++

    100

    Mund tprfshihen edhe nga disa heder fajlla n nj program. Thirrja e heder fajllitmund t behet edhe n rrjedh e sipr t programit.

    Shembull:

    //Fajlli: Shtypja.cpp programi kryesor//Llogaritja e faktorielit, permes rekurzionit#include using namespace std;#include "Shtype1.h" // Prfshirja e fajllit Shtype1.h

    int main(){

    Shtype(); //Funksioni prej Shtype1.h#include "Shtype2.h" //thirrja e Shtype2.hreturn 0;

    }

    //Fajlli: Shtype1.h

    int i,j;void Shtype(){

    for (i=0;i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    101/140

    Avni Rexhepi Ushtrime n C++

    101

    Direktiva #define

    Direktiva #define mund t prdoret pr definime t ndryshme n programe dhefunksionon si urdhri pr zvendsim t fjals me nj fjal tjetr n editort e teksteve (si. p.sh.Word-i). Formati i saj sht:

    #define ARGUMENTI1 argumenti2

    Fjala ARGUMENTI1sht nj fjal e vetme, pa hapsira. Pr emrtim prdoren rregullat enjjta si pr variablat. Mes emrave t dy argumenteve, duhet t ket s paku nj hapsir. Kudon program q t shkruhet ARGUMENTI1sht njsoj, sikur t ishte shkruarargumenti2.

    Shembull:

    #include using namespace std;#define Emri "Avni Rexhepi"

    int main(){

    coutX2;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    102/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    103/140

    Avni Rexhepi Ushtrime n C++

    103

    Shtojca A - Probleme praktike

    Numrat e rastit n C++

    Funksionet srand() and rand() - Libraria standarde e C++ ofron nj veglprgjenerimin e numrave t rastit duke prdorur funksionin rand( ) (angl. randomi rastit) .

    Natyrisht, kta numra nuk jan me t vrtet t rastit , por jan pseudo -numra t rastit. Atagjenerohen n nj varg i cili jep iluzionin e t qenit i rastit, sepse, megjithat, ky varg i numravedo t prsritet. Versioni i rand()q vije me kompajlerin e C++-it sht mjaft i thjesht dhenuk sht prej m t mirve (nuk prdoret pr ndonj qllim shkencor) mirpo mund t prdoret

    pr programe t thjeshta dhe pr lojra.

    Si gjenerohet numri i rastit n C++?

    Pr t prdorur funksionin rand() duhet t prfshijm n program heder fajllin prkats. Funksioni rand() thjesht e kthen pseudo-numrin e plot t rastit n rangun prej 0deri ne RAND_MAX dhe prdoret si vijon:

    #include #include

    using namespace std;

    int main(){

    int NumriiRastit = rand();

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    104/140

    Avni Rexhepi Ushtrime n C++

    104

    Vlera RAND_MAX nuk sht e specifikuar me standardin e C++, por mund t supozojmse RAND_MAX sht s paku: 32767. Pr t gjetur vlern e sakt pr RAND_MAX nkompjuterin tuaj, ekzekutoni kodin vijues:

    #include #include

    using namespace std;

    int main(){

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    105/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    106/140

    Avni Rexhepi Ushtrime n C++

    106

    Pra, kemi thirrur edhe header-in pr funksionin time(). Vlera e kthyer ngafunksioni time() llogaritet prej numrit pa shenj unsigned duke prdorur operatorinstatic_cast.

    Si gjenerohen numrat n nj brez (rang) t caktuar

    Ka disa mnyra pr gjenerimin e numrave n nj rang t caktuar. Nj mnyr ezakonshme, q haset shpesh sht:

    NumriiRastit = (rand()%10);

    Kjo do t gjeneroj numra n rangun 0 deri n 9 (% - Pjestimi me modul, ku si rezultateshte mbetja nga pjestimi i plote me nje numer, ne kete rast pjestimi i plote me 10). Pr tfilluar prej ndonj baze tjetr t ndryshme prej 0 (zeros), veprohet si vijon:

    NumriiRastit = 20+(rand()%10);

    Kjo do te mundsoj gjenerimin e numrave prej 20 gjer n 29.Mirpo metoda e msiprme e krijimit t pseudo numrave t rastit sht mjaft e varfr

    sepse i prdor vetm shifrat e fundit (me vler t vogl, njshet dhe dhjetshet) t numrit tkthyer nga rand() dhe kto mund t jen m pak t rastit pr disa zbatime t gjeneratorit t

    pseudo numrave t rastit.Si mnyr m e mir preferohet:

    NumriiRastit = 20 + int(10.0 * rand()/(RAND_MAX+1.0));

    Nse kto i zbatojmn programin e msiprm, do t kemi:

    #include #include #include

    using namespace std;

    int main(){

    srand(static_cast(time(0)));int NumriiRastit;for(int i=0; i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    107/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    108/140

    Avni Rexhepi Ushtrime n C++

    108

    int numri_i_rastit;cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    109/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    110/140

    Avni Rexhepi Ushtrime n C++

    110

    Funksioni time( ) mund t prdoret edhe vetm sa pr t treguar kohn aktuale tkompjuterit.

    Shembull:

    /* Shembull - time */#include #include using namespace std;

    int main (){

    time_t koha; //tipi time_t, sht i definuar ne

    time ( &koha );cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    111/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    112/140

    Avni Rexhepi Ushtrime n C++

    112

    //minuta prej Fillimi deri te Fundi

    if(SekondaTeKaluar < 1)cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    113/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    114/140

    Avni Rexhepi Ushtrime n C++

    114

    #include #include #include #include #include

    using namespace std;

    void ngjyra(unsigned short color); //funksioni ngjyrn e tekstit

    int main(){

    int numri_i_rastit, i;int hamendja, numri, tentime;time_t fillimi,fundi; //variablat pr matjen e kohsdouble diferenca; //variabla pr diferencn kohore

    //inicializimi i gjeneratorit t rastit

    srand(static_cast(time(0)));

    time (&fillimi); //koha e fillimit t lojs

    for (i=1; i

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    115/140

    Avni Rexhepi Ushtrime n C++

    115

    time (&fundi); //koha e prfundimit t lojs

    ngjyra(10); //ngjyra e gjelbrcout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    116/140

    Avni Rexhepi Ushtrime n C++

    116

    Shto jca B -Pointert

    Pointert jan variabla t cilat mbajn adresat n C dhe n C++. Ata ofrojn fuqi dhepajisje pr programerin q t ju qaset dhe t manipulojn t dhnat n nj mnyr t ndryshmeq nuk ofrohet n disa gjuh tjera programuese. Ata jan t dobishm pr prcjelljen e

    parametrave n funksione, n mnyr q t lejojn funksionin q t ndryshoj dhe t kthejvlerat n programin thirrs. Kur prdoren n mnyr t gabuar, ata shpesh jan burim igabimeve n program dhe frustrimeve pr programert.

    Kur programi ekzekutohet, t gjitha variablat ruhen n memorie, secila n ndonj lokacionapo adres t veant. N mnyr tipike, variabla dhe adresa e saj e memories prmbajn vlerate t dhnave. P.sh., kur deklarohet:

    int numri = 5;

    vlera 5 ruhet n memorje dhe mund ti qasemi prmes variabls numri. Pointeri sht llojspecial i variabls, q e ruan adresn e memories e jo vlern e t dhnave. Njsoj si ndryshohetvlera kur proret variabla normale, vlera e adress s ruajtur n pointer ndryshohet kur

    manipulohet me variabln pointer.Zakonisht, adresa e ruajtur n pointer sht adresa e ndonj variable tjetr.

    int *ptr;ptr = &numri // Ruan adresn e varibals numri n ptr.

    // Operatori unar & (address of adresa e)// kthen adresn e variabls.

    Pr t marr vlern e cila sht e ruajtur n lokacionin e memories t pointerit duhet tbhet dereferencimi i pointerit. Dereferencimi bhet prme operatorit unar * (pointer to treguesi n, aty ku tregon pointeri).

    int totali;totali = *ptr;

    // Vlera n adresn e ruajtur n ptr i ndahet variabls totali.

    Variablat q i deklaroni n program, ekzistojn n memorie gjat kohs s ekzekutimit tprogramit. Secila variabl, vendoset n nj adres t caktuar t memories.

    P.sh., nvse ne deklarojm nj variabl t tipit integer, si n vijim:

    int numriIm = 25;

    kjo do t z nj sasi t mjaftueshme t memories pr nj vler integer dhe do tinicializoj at memorie pr t mbajtur vlern q e prezenton numrin 25 n formatin integer. Nenuk e dijm se cila sht adresa aktuale ku sht vendosur vlera e jon, por kjo sht nj shtje

    pr t ciln kujdeset programi (C++) dhe ai e di ku ta gjej at. Normalisht, nse nuk do ta dinteku e ka vendosur dhe ruajtur, nuk do t kishte mundsi ti qasej prsri asaj vlere. N fakt,adresa aktuale ku ruhet variabla numriIm mund t ndryshoj seciln her q ekzekutohet

    programi, por programi e di se si t merret me kt problem. Kryesorja, ai e di do her se ku ika ruajtur vlerat, pra n ciln adres n memorie.

    Si u tha m par, C++ ofron nj mnyr q ti referohemi adress s variabls, duke eprdorur operatorin addres of (adresa e), q sht simboli & (ampersand) i lidhur me emrine variabls. Pra, adresvs s memories s variabls numriIm mund ti referohemi prmes:

    &numriIm.

    Pasi paska mundsi ti referohemi adress, ather ne mund ta paraqesim at n dalje (tashtypim n ekran), si n vijim:

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    117/140

    Avni Rexhepi Ushtrime n C++

    117

    #include using namespace std;int main(){int numriIm = 25;cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    118/140

    Avni Rexhepi Ushtrime n C++

    118

    Ruajtja e adress n pointer (tregues)

    Tani q u pa se si mund ti referohemi adress s memories, le t shohim se si mund taruajm kt adres t memories. Pr kt qllim, na hyjn n pun pointert (angl. Pointer tregues, shenjues).

    Pointeri sht variabl q ruan nj adres. Pra, pointeri sht nj tip i variabls n C++. Njsoj si C++ i ka tipet integer pr ti

    ruajtur numrat e plot, double pr numrat real, bool pr variablat buleane etj., C++ e ka tipinpointer pr ti ruaj tur adresat .

    M hert patm variabln integer numriIm

    int numriIm = 25;

    e gjithashtu e paraqitm adresn e tij me:

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    119/140

    Avni Rexhepi Ushtrime n C++

    119

    (Vrejtje: mos u brengosni nse vlera q ju e fitoni sht tjetr, pasi q kjo mund t jet endryshme, sa her q t ekzekutohet programi ose mund t jet e njjta vler, pas disaekzekutimeve. Kjo gj sht e varur prej platforms (kompjuterit) dhe cilado mnyr e

    paraqitjes sht normale).

    Pr t qen edhe m bindse, le t shohim programin vijues:

    #include using namespace std;int main()

    {int numriIm = 25;int *PointeriIm = & numriIm;cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    120/140

    Avni Rexhepi Ushtrime n C++

    120

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    121/140

    Avni Rexhepi Ushtrime n C++

    121

    Pra, si shihet, me rastin e ekzekutimit shtypet vlera 25. Kemi deklaruar pointerin n variabln e tipit int (Integer) dhe e kemi quajtur PointeriIm.

    E inicializojm vlern e PointeriIm pr ta mbajtur adresn e variabls s tipit Integer numriIm(gj q e pam edhe m par) dhe pastaj, me:

    *PointeriImn fakt i qasemi vlers s numrit integer n t cilin tregon pointeri, e cila n kt rast

    sht 25.Pra, ky urdhr bn q t shtypet vlera n t ciln tregon pointeri. Ky ishte operatori i

    dereferencimit t vlers nga pointeri.

    Ja edhe nj shembull, q prdor pointerin n variabln e tipit double, q e pam m par:

    #include using namespace std;int main(){

    double numriReal = 1.234;double *Pointeri2 = &numriReal;cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    122/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    123/140

    Avni Rexhepi Ushtrime n C++

    123

    #include using namespace std;int main(){

    double numriReal = 1.234;double *Pointeri2 = &numriReal;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    124/140

    Avni Rexhepi Ushtrime n C++

    124

    Tani pointeri tregon n variabln numri2, kshtu q kur ta shtypim prsri vlern n tciln tregon ai, do t shtypet velra 88.

    Prdorimi i pointerve si parametra t funksioneve

    Kur funksionit ia prcjellim ndonj variabl, krijohet nj kopje e variabls dhe prdoret

    prbrenda funksionit . Vlera origjinale nuk ndikohet nga ndryshimet q i bhen kopjes prbrendafunksionit. P.sh., le t marrim rastin vijues:

    #include using namespace std;void shtypeDyfishin(int vleraLokale){vleraLokale = vleraLokale * 2;cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    125/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    126/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    127/140

    Avni Rexhepi Ushtrime n C++

    127

    Shtojca C - Shkruarja dhe leximi i fajllave

    C++ mundson shkruarje dhe leximin e t dhnave (manipulimin e tyre) nga dhe n fajlla.Kjo sht nj prej shtjeve shum t rndsishme t do gjuhe programuese. Cilido aplikacion

    nga jeta reale sht e pritshme q t prpunoj sasi t mdha t informacionit. Nj prejteknikave t thjeshta t transerfimit dhe regjistrimit t t dhnave sht prmes fajllave.Teknikat m t avancuara pr ruajtjen dhe manipulimin e t dhnave prdorin bazat relacionalet t dhnave ose ndonj format special si XML. Pr fillim, le t shohim si prdoren fajllattekstual.

    Nj prej shtjeve t rndsishme me rastin e shkruarjes dhe leximit nga fajllat shtformati i t dhnave. Pa marr parasysh se shfrytzuasi fundor i programit do t jet ndonjkopjuter tjetr ose ndonj person, formati i dhn n dalje mund t jet po aq i rndsishm saedhe vet prmbajtja. Nse dalja konsumohet nga ndonj program tjetr, ather formati n dalj eme gjas do t jet i paraprcaktuar dhe specifik, n mnyr q programi konsumuse t jet ngjendje t lexoj dhe t ju qaset t dhnave. Nse fajlli n dalje sht pr tu lexuar nga njerzit,formati i t dhnave mund t ndikoj n kuptueshmri dhe dobi. Manipulatort iostream ofrojnnj mnyr pr t kontrulluar formatin dals.

    Hyrja dhe dalja nga fajlli

    Teknikat pr hyrje dhe dalje, i/o, n C++ jan virtualisht identike me ato t prezentuaram par pr leximin dhe shtypjen n dhe nga pajisjet standarde, ekrani dhe tastiera. Pr trealizuar hyrje dhe dalje n fajlla duhet t prdoret direktiva: #include .

    Fstream prmban definicionet e klasave pr klasat e prdorura n hyrje/dalje t fajllave.Prbrenda programit q ka nevoj pr hyrje dalje t fajllave, pr secilin fajll t krkuar n dalje,inicializohet nj objekt i klasss ofstream. Objekti ofstream prdoret njsoj si objekti cout

    pr dalje standarde. Objekti ifstream prdoret njsoj si objekti standard cin.

    Shembull:

    #include #include using namespace std;

    int main(){

    ofstream FajlliIm("c:/out.txt");// Krijon ofstream objektin me emrin FajlliIm

    if (! FajlliIm) // Gjithnmon testo hapjen e fajllit{

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    128/140

    Avni Rexhepi Ushtrime n C++

    128

    Pra, s pari krijohet objekti ofstream, me emrin FajlliIm. Konstruktori pr klasn ofsteram i merr dy argumente. I pari tregon emrin e fajllit, si C-string,kurse i dyti modin e fajllit. Ekzistojn dy mode t zakonshme t hapjse s fajllit: truncate(prerja) dhe append (shtimi). E nnkuptuar, nse nuk specifikohet modi dhe fajlli ve ekziston,ai prehet (do t thot, fajlli ekzistues fshihet dhe krijohet i riu, me t njjtin emr). Modispecifikohet prmes prdorimit t definimit t enumeratorit n klasn ios. Klasa ios prmbanantrt t cilt i prshkruajn modet dhe gjendjet pr klasat input (hyrja) d he output (dalja).Enumeracioni (grupimi) sht nj mnyr e definimit t vargut t konstanteve. Megjithat, ktoi mrrni t gjitha si t gatshme.

    - Nnkuptohet , q nse fajlli nuk ekziston, ai krijohet - Nnkuptohet , q fajl li do t jet tekst fajl l, e jo fajll binar- Nnkuptohet , q fajl li ekzistues do t cungohet (prehet) - Pr t kombinuar modet, bashkoni me or duke prdorur |.

    Modi Kuptimi

    Out Hapje fajllin ose rrjedhn pr shkruarje/insertim (output -dalja)

    In Hapje fajllin ose rrjedhn pr lexim/ekstraktim (input-hyrje)

    App Bashkangjit/shto n fajllin ekzistues. Secili insertim (dalje) do t shkruhet n fund t fajllit. Trunc Preje (fshije) fajllin ekzistues (sjellja e zakonshme, e nnkuptuar).

    ate E hap fajllin pa e fshir, por lejon q t dhnat t shkruhen kudo brenda tij.

    binaryTrajto fajllin si fajll binar. Fajlli binar i ruan t dhnat n format intern (ninar, 1 dhe 0), e jo nfajll t lexueshm tekstual. P.sh., fload do t ruhet si prezentimi i tij prej katr bajtash, e jo sistring.

    Pr t hapur fajllin, duke fshir/prer prmbajtjen ekzistuese, mund t prdoret cilido prejurdhrave vijues:

    ofstream FajlliIm("EmriiFajllit");ofstream FajlliIm("EmriiFajllit", ios::out);ofstream FajlliIm("EmriiFajllit", ios::out | ios::trunc);

    Pr t hapur fajllin, pr t shtuar n prmbajtjen e mparshme:

    ofstream myFile("EmriiFajllit",ios::app);

    Pr t hapur fajllin pr dalje binare: ofstream myFile("EmriiFajllit ",ios::binary);

    Pr t hapur fajllin pr hyrje (lexom prej tij), prdoret objekti i klass ifstream: ifstream inFile("EmriiFajllit ");

    Shembull:

    Shkruarja e programit q krkon prej shfrytzuesit emrin e fajllit dhe pastaj shkruan nat fajll. Pastaj, hapet fajlli n modin e shtimit ashtu q prmbajtja ekzistuese t mos humbetnse shfrytzuesi specifikon ndonj fajll ekzistues.

    #include #include #include using namespace std;

    int main()

    {

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    129/140

    Avni Rexhepi Ushtrime n C++

    129

    string EmriiFajllit;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    130/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    131/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    132/140

    Avni Rexhepi Ushtrime n C++

    132

    ofstream oFajlli(outputFajlli.c_str());ifstream iFajlli(inputFajlli.c_str());//Verifikimi i gabimit gjate hapjes se fajllit//eshte anashkaluar per shkurtesi.

    while (iFajlli.get(ch)){

    oFajlli.put(ch);}

    return 0;}

    I/O Manipulatort

    Deri tani, kemi pranuar formatizimin e nnkuptuar t daljes. C++ definon edhe njbashksi manipulatorsh t cilt mund t prdoren pr t ndryshuar gjendjen objekteve t

    iostram. Kto kontrollojn mnyrn e formatizimit t t dhnave. Ato jan t definuara n fajllin q duhet t prfshihet prmes direktivs include. Zakonisht, nuk sht e nevojshme tprfshihet n mryr eksplicite, pasi q n mnyr indirekte sht i prfshir prmes librarivetjera, si .

    Manipulatort dhe mnyr e veprimit t tyre:

    Manipulatori Prdorimi

    boolalpha Bn, q variablat booleane t paraqiten si true ose false (tekstualisht).

    noboolalhpa (default) Bn, q variablat booleane t paraqiten si 0 ose 1.

    dec (default) Specifikon se numrat (integer) paraqiten n bazn 10.

    Hex Specifikon se numrat (integer) paraqiten si heksadecimal (n bazn 16).

    Oct Specifikon se numrat (integer) paraqiten si oktal (n bazn 8).

    Left Teksti n fushn dalse rreshtohet maj tas .

    Right Teksti n fushn dalse rreshtohet djathtas.

    Internal Bn q shenja e numrit t rreshtohet majtas kurse vlera djathtas.

    noshobase (default) kyq paraqitjen e prefiksit q tregon bazn e numrit.

    showbase Kyq paraqitjen e prefiksit q tregon bazn e numrit.

    noshowpoint (default) Paraqet pikn decimale vetm nse ekziston pjesa dec imale.

    showpoint Paraqet pikn decimale gjithmon.

    noshowpos (default) Nuk paraqet shenjn "+" si prefiks para numrave pozitiv.

    showpos Paraqet shenjn "+" si prefiks t numrave pozitiv.

    skipes (default)Kaprcen hapsirat e bardha (zbraztirat, tab, rreshti i ri) nga ana e operatorit thyrjes >>.

    noskipes Hapsirat e bardha nuk kaprcehen nga operatori i nxjerres, >>.

    fixed (default) Bn q numrat me presje dhjetore t paraqiten n notacion fiks (fixed).

    scientific Bn q numrat me presje dhjetore t paraqiten n notacion shkencor (scientific).

    nouppercase (default) 0x paraqitet pr numrat heksadecimal, e pr notacionin shkencor.

    uppercase 0x paraqitet pr numrat heksadecimal, E prnotacionin shkencor.

    Manipulatort e tabels s msiprme modifikojn gjendjen e objektit iostream. Kjo do tthot se, kur t prdoren njher n nj objekt n iostream, ata do t ken efekt n t gjitha

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    133/140

    Avni Rexhepi Ushtrime n C++

    133

    hyrjet dhe daljet vijuese t atij objekti. Ka disa manipulator q prdoren pr t modifikuarndonj dalje t veant, por nuk modifikojn gjendjen e objektit.

    Caktimi i gjersis s daljes (Output Width)setw(w)vendos gjersin pr dalje (output) ose hyrje (input) n ; krkon q t prfshihetme include.

    idth(w)funksion i klass iostream (member function).

    Mbushja e hapsirave t bardhasetfill(ch)mbush hapsirat e bardha t daljes m karakterin ch; krkon q t prfshihet. fill(ch)funksion i klass iostream (memeber function).

    Caktimi i precizitetit

    setprecision(n)vendos paraqitjen e numrave me presje dhjetore me precizitet n. Kjonuk ndikon mnyrn e trajtimit t numrave me presje dhjetore gjat llogaritjeve n program.

    Shembull:

    #include #include #include using namespace std;

    int main(){

    int intNumri = 15;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    134/140

    Avni Rexhepi Ushtrime n C++

    134

    string EmriIm = "Artan";

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    135/140

    Avni Rexhepi Ushtrime n C++

    135

    Referencat

    N C++ referenca sht nj pseudonim (nofk) pr nj variabl. Dobia e prdorimit t

    referencave sht gjat prdorimit t prcjelljes s vlerave n funksione. Ato ofrojn njmundsi pr t kthyer vlerat prej funksioneve.

    int vlera; // Declaron nj integerint &rVlera = vlera; // Deklaron njreferencpr ninteger-in val

    Para emrit t referencs prdoret simboli &. N kt kontekst, & thirret si operatori ireferencs. Kjo tregon se rVlera sth referenc, e jo objekt i zakonshm. Ndryshe, shenja&prdoret pr t marr adresn e objektit (tek pointert). N at kontekst, & quhet operatorii adress. Adresa e operatorit prdoret pr t marr adresn, zakonisht, pr t inicializuarpointerin:

    int vlera; // Deklaron nje in tegerint *pvlera = &vlera; //Deklaron pointerin dhe e inicial izon at me adresn e variables vlera.

    Referenca nuk sht objekt unik. Ajo sht thjesht nj pseudonim ose nj sinonim pr njobjekt tjetr. Identifikatori i referencs (emri) mund t prdoret kudo ku mund t prdoretidentifikatori i referuar. do ndryshim i br n referenc do t aplikohet edhe n objektinorigjinal. Gjithashtu, do ndryshim i br n objektin origjinal do t shihet edhe prmesreferencs.

    #include using namespace std;

    int main(){

    int vlera = 1;int &rVlera = vlera;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    136/140

    Avni Rexhepi Ushtrime n C++

    136

    Referenca duhet t inicializohet kur t krijohet. Nse nuk veprohet kshtu, do t paraqitetgabim nprogram.

    Referenca nuk mund t ricaktohet. Nse tentoni t ricaktoni referencn, rezultati do t jetnj caktim i vlers s objektit origjinal t referuar.

    Shembull:

    #include using namespace std;

    int main(){

    int Vlera1 = 10;int Vlera2 = 20;

    int &rVlera = Vlera1;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    137/140

    Avni Rexhepi Ushtrime n C++

    137

    Ndarja e vlers rVlera = Vlera2; ia ndan vlern e Vlera2 rVlera -s. Pasi q gjithka q veprohetn referenc aplikohet edhe n objektin e referuar, ather variabls Vlera1 i sht ndar vlera eVlera2, 20. nse referenca do t ri-caktohet pr ju referuar variabls Vlera2, ather Vlera1nuk do t ndryshohej. Pastaj, vlera e Vlera2 sht ndryshuar n 30. Me kt rast sht ndryshuarvetm Vlera2.

    Referencat mund t bhen edhe n objektet e definuara t shfrytzuesit, njsoj si edhe nvariablat e brendshme t C++.

    #include using namespace std;

    class Katrori{

    public:Katrori(int brinja): _brinja(brinja) {};int MerreBrinjen() {return _brinja;}void CaktoBrinjen(int brinja) {_brinja = brinja;}int Syprina() {return _brinja * _brinja;}

    private:int _brinja;

    };

    int main(){Katrori Katror(15);

    Katrori &refKatror = Katror;

    cout

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    138/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    139/140

  • 7/30/2019 GjuheProgramuese Ushtrimet C++

    140/140

    Avni Rexhepi Ushtrime n C++

    Shtojca A - Probleme praktike .......................................................................................... 103Numrat e rastit n C++ ................................................................................................. 103Llogaritjet kohore ......................................................................................................... 109Ngjyra e tekstit ............................................................................................................. 112

    Shtojca B - Pointert ........................................................................................................ 116Dukshmria e variablave .............................................................................................. 126

    Shtojca C - Shkruarja dhe leximi i fajllave ......................................................................... 127Referencat ................................................................................................................... 135