C++ proqramlaşdırma dili



Yüklə 362,54 Kb.
Pdf görüntüsü
səhifə8/10
tarix23.02.2020
ölçüsü362,54 Kb.
#30520
1   2   3   4   5   6   7   8   9   10
d book proqramlashdirma 23664


private

:

        tip_1 dey_1;



        tip_2 dey_2;

        .

        .

        .

        tip_n dey_n;

   };


8.6 Yaradıcı

8.6.1 Sinif Yaradıcısı

Yaradıcı (eng. consturctor) sinfin d yiş n h ddl rin  başlanğıc qiym tl r m nims tm k 

ə

ə

ə



ə ə

ə ə


ə

ə ə


üçün istifad  olunur. Sinin tipind n d yiş n elan ed rk n yaradıcı funksiya avtomatik 

ə

ə



ə

ə

ə ə



çağırılır v  ilkin qiym tl ndirm ni yerin  yetirir. Yaradıcı elan etm k üçün sinfin daxilind  

ə

ə ə



ə

ə

ə



ə

sinfin tipinin adı il  eyni adlı funksiya elan etm k lazımdır.

ə

ə

Çalışma 5. Çalışma 1-d  elan olunmuş duzbucaqli sinfinin yaradıcısını t rtib edin.



ə

ə

H lli.



ə  Sinfin tipinin adı duzbucaqli olduğundan yaradıcı elan etm k üçün sinfin daxilind  

ə

ə



duzbucali funksiya h ddi elan etm liyik, aşağıdakı kimi:

ə

ə



 

class

 duzbucaqli {

   

public

:

       



     duzbucaqli();

     


int

 en;


     

int


 uz;

     


int

 sahe (


int

int



);

    


  };

8.6.2 Yaradıcının proqram kodu

Yaradıcının proqram kodunu sinfin dig r funksiya h ddl ri kimi t rtib ed  bil rik. Yegan  

ə

ə

ə



ə

ə

ə



ə

f rq odur ki, yaradıcını t rtib ed rk n n tic  tipi göst rilmir.

ə

ə

ə ə



ə ə

ə

Çalışma 6. Çalışma 1-d  elan olunmuş duzbucaqli sinfinin yaradıcısının proqram kodunu 

ə

t rtib edin. Yaradıcı sinfin en v  uz h ddl rin  uyğun olaraq 20 v  30 qiym tl ri 



ə

ə

ə



ə ə

ə

ə ə



m nims tm lidir.

ə

ə ə



H lli.

ə  Sinfin funksiya h ddl rinin proqram kodunun t rtibi sintaksisin  n z r salaq:

ə

ə



ə

ə ə ə


 nəticə_tipi  sinfin_adı::funksiyanın_adı (parametrlər) {

  

      proqram kodu;    



  }

sinfin_adı duzbucaqli, funksiyanın adı h mçinin duzbucaqli (bir daha yada salaq ki, 

ə

yaradıcının adı sinfin tipinin adı il  adlandırılır), n tic nin_tipi göst rilm diyind n 



ə

ə ə


ə

ə

ə



duzbucali sinfinin yaradıcısının proqram kodunu aşağıdakı kimi t rtib ed  bil rik:

ə

ə



ə

  duzbucaqli::duzbucali(){

     en = 

20

;



     uz = 

30

;



  }

Çalışma 7. Çalışma 1 -d  elan olunan duzbcaqli sinfind n istifad  ed r k proqram kodu 

ə

ə



ə

ə ə


t rtib edin.

ə

H lli. 



ə

Nümun  proqram kodu aşağıdakı kimi olar:

ə

   


#include 

    


class

 duzbucaqli {

      

public

:

        duzbucaqli();



        

int


 sahe (

int


int


);

        


int

 en;


        

int


 uz;

     };


  duzbucaqli::duzbucali(){

     en = 

20

;

     uz = 



30

;

  }



 

int


  duzbucaqli::sahe (

int


 x, 

int


 y){

    


return

 x*y;


 } 

  

int



 main(){

     duzbucaqli duzb;

     std::cout<<

"duzbucaqlinin sahesi = "



<"

\n



"

;

  }



Izahı. Proqramda  vv l duzbucaqli sinfi elan olunur, daha sonra onun yaradıcısı v  sahe 

ə ə


ə

funksiyalarının proqram kodları t rtib olunur. Proqramın  sas funksiyasında duzbucali 

ə

ə

sinfind n duzb adlı d yiş n elan olunur. Bu zaman yaradıcı funksiya avtomatik çağırılır v



ə

ə

ə



ə 

duzb obyektinin en v  uz h ddl rin  müvafiq olaraq 20 v  30 qiym tl ri m nims dir. 

ə

ə

ə ə



ə

ə ə


ə

ə

8.7 N silverm



ə

ə

N silverm  h r-hansı mövcud sinif tipind n istifad  ed r k bir q d r f rqli yeni sinif 

ə

ə ə


ə

ə

ə ə



ə ə ə

tipinin yaradılmasına deyilir. Bu zaman yeni yaradılan tip varis, başlanğıc tip is   cdad 

ə ə

sinif adlanır. Yeni sinif tipi yaradark n istifad  olunan başlanğıc tip   lav  d yiş n v  ya 



ə

ə

ə ə



ə ə

ə

ə



funksiya h ddl ri artırıla bil r, h mçinin mövcud funksiya h ddl ri d yişdiril  bil r.

ə

ə



ə

ə

ə



ə

ə

ə



ə

8.7.1 N silverm  il  yeni sinfin yaradılması

ə

ə ə

H r-hansı mövcud A sinfind n n silverm  il  yeni B sinfini yaratmaq üçün aşağıdakı 

ə

ə

ə



ə ə

sintaksisd n istifad  olunur:

ə

ə

   



class

 B : puclic 



class

 A {


    

   };


Bu zaman B sinfi öz  cdadı sayılan A sinfinin bütün funksiya v  d yiş n h ddl rin  sahib

ə

ə ə



ə

ə

ə ə



 

olur. 


Çalışma 8. N silverm  yolu il  

ə

ə



ə Çalışma 1 -d  elan olunmuş duzbucaqli sinfind n yeni 

ə

ə



paralelpiped sinfi yaradın.

H lli. N silverm  sintaksisin   sas n t l b olunan sinfi aşağıdakı kimi yarada bil rik:

ə

ə

ə



ə ə

ə ə ə


ə

  

class

 paralelpiped : 

public

 

class

 duzbucaqli {

  };


8.7.2 Varis tip  yeni h ddl rin artırılması

ə

ə

ə

N silverm  yolu il  yaradılan tip öz  cdadının bütün h ddl rin  sahib olur.  g r h r-

ə

ə

ə



ə

ə

ə ə



Ə ə ə

hansı yeni h dd artırma t l b olunsa onu sinfi elan ed rk n { v  } möt riz l ri arasında 

ə

ə ə


ə ə

ə

ə ə ə



qeyd etm k lazımdır, aşağıdakı kimi:

ə

     



class

 B : puclic 



class

 A {


       yeni həddlər

    


   };

Çalışma 9. Çalışma 8 -d  elan olunmuş paralelpiped sinfin  yeni int tipli hündürlük 

ə

ə



d yiş n h ddi v  int ( void ) tipli hecm funksiya h ddi artırın.

ə

ə



ə

ə

ə



H lli.

ə  Proqram kodu aşağıdakı kimi olar:

  

class

 paralelpiped : 

public

 

class

 duzbucaqli {

            



public

:

                



               

int


 hundurluk

               

int

 hecm(


void

);

  };



  

int


 paralelpiped::hecm(){

 

     



return

 en*uz*hundurluk;

 }

8.7.3  cdad sinfin funksiyalarının d yişdirilm si

Ə

ə

ə

cdad sinfin h r-hansı funksiya h ddini d yişdirm k üçün h min funksiyanı yenid n 

Ə

ə

ə



ə

ə

ə



ə

proqram kodunu yenid n t rtib etm liyik v  bu zaman sinif_adı yerin  varis sinfin adını 

ə ə

ə

ə



ə

yazmalıyıq .



Çalışma 10. Çalışma 8 -d  elan olunmuş paralelpiped sinfinin n silverm  il   ld  etdiyi 

ə

ə



ə ə ə ə

sah  funksiyasının proqra kodunu el  d yişin ki, n tic  olaraq paralelpipedin sah sini 

ə

ə ə


ə ə

ə

qaytarsın. Paralelpipedin sah si 2*(en*uzunluq+en*hündürlük+uzunluq*hündürlük) 



ə

düsturu il  hesablanır.

ə

H lli. 

ə

Proqram kodu aşağıdakı kimi olar.

  

int


 paralelpiped::sahe (){

     


return

 

2



*(en*uz + en*hudurluk + uz*hundurluk);

  }


Çalışma 11. Çalışma 8-d  elan olunmuş paralelpiped sinfind n parp adlı obyekt elan 

ə

ə



edin. parp -ın h cmini v  sah sini çap ed n proqram t rtib edin.

ə

ə



ə

ə

ə



H lli.

ə  Proqram kodu aşağıdakı kimi olar:

   


#include 

   


//duzbucaqli sinfi elan edirik

    


class

 duzbucaqli {

   

public

:

       



     duzbucaqli();

     


int

 sahe (


int

int



);

     


int

 en;


     

int


 uz;

    


    };

  duzbucaqli::duzbucali(){

     en = 

20

;



     uz = 

30

;



  }

 

int



  duzbucaqli::sahe (

int


 x, 

int


 y){

    


return

 x*y;


 } 

 

  



//nesilverme ile duzbucaqli sinfinden

  

//paralelpiped sinfi yaradiriq

    

class

 paralelpiped : 



public

 

class

 duzbucaqli {

            



public

:

                



               paralelpiped();

               

int

 hundurluk



               

int


 hecm(

void


);

  };

  

// paralelpiped sinfinin yaradicisini yenileyirik

  

// ki, hundurluk heddine 25 qiymeti menimsetsin

  paralelpiped::paralelpiped(){

     hundurluk = 

25

;  



     

 }

  



int

 paralelpiped::hecm(){

 

     


return

 en*uz*hundurluk;

 }

  

int



 paralelpiped::sahe (){

     


return

 

2



*(en*uz + en*hudurluk + uz*hundurluk);

  }


  

int


 main(){

     


// paralelpiped sinfinden parp adli obyekt 

     


// yaradaq

     paralelpiped parp;

     std::cout<<

"parp obyektinin sahesi = "



<

"

\n



"

              <<

"parp obyektinin hecmi  = "

<

"

\n



"

;

  }



 

$9 Göst ricil r.

ə

ə

Bu paraqrafda biz proqramlaşdırmanın  n vacib v  ç tin hiss l rind n biri sayılan 

ə

ə ə


ə ə

ə

göst ricil rl  tanış olacayıq. Göst ricil rl  iş t crüb  t l b edir v  bu paraqrafda biz 



ə

ə ə


ə

ə ə


ə

ə ə ə


ə

göst ricil rl  bağlı  n  sas m s l l ri izah etm y  çalışmışıq. 

ə

ə ə


ə ə

ə ə ə ə


ə ə

Bu paraqrafda göst ricil rl  bağlı aşağıdakı m s l l r  toxunulur : d yiş nin ünvanı, 

ə

ə ə


ə ə ə ə ə

ə

ə



göst ricil rin elanı, unvana gör  ötürülm , göst rici il  c rg l rin  laq si, göst ricil r 

ə

ə



ə

ə

ə



ə ə ə ə

ə

ə



ə

ə

üz rind  hesab  m ll ri, göst rici tipli obyektl r, dinamik yaradılma v  silinm .



ə

ə

ə ə ə



ə

ə

ə



ə

9.1 Ünvan 

9.1.1 Ünvan anlayışı

Sistem proqramlaşdırmada b lk  d   n mühüm m s l  ünvan m s l sidir. H r-hansı 

ə ə ə ə

ə ə ə


ə ə ə

ə

m lumata müraci t etm k üçün prosessor onun yaddaşdakı ünvanını mütl q bilm lidir. 



ə

ə

ə



ə

ə

Bizim proqramda d yiş nl r  verdiyimiz adlar kompilyasiya zamanı müvafiq yaddaş 



ə

ə ə ə


ünvanları il   v zl nir. 

ə ə ə ə


Ünvan m lumatın v  ya proqram kodunun yaddaşdakı yerini göst rir.

ə

ə



ə

Bütün bunlar sistem proqramlaşdırmanın mövzusu olsa da, istifad çi proqramlaşdırma da

ə

 

unvanlardan geniş istifad  olunur. 



ə

9.1.2 D yiş nin ünvanı

ə

ə

D yiş nin ünvanının örg nm k üçün ünvan operatorundan istifad  olunur. Ünvan 

ə

ə

ə



ə

ə

operatoru '&' kimi işar  olunur. H r-hansı d yiş nin unvanın  ld  etm k üçün onun 



ə

ə

ə



ə

ə ə


ə

adının  vv lin  ünvan operatoru artırılır, aşağıdakı kimi:

ə ə ə

  &dəyişən;



Çalışma 1. int tipli x adlı d yiş n elan edin. Onun ünvanın ekranda çap edin.

ə

ə



H lli.

ə  Proqram kodu aşağıdakı kimi olar:

 

#include 



 

int


 main(){

 

    



int

 x;


    std::cout<< 

"x deyisheninin unvani = "



             << &x

             << 

"

\n

"



;

 }

9.2 Göst rici



ə

S tirl rl , c rg l rl , funksiyaya ötürül n parametrl , m lumat struktları il  (növb , stek, 

ə ə ə ə ə ə ə

ə

ə



ə

ə

ə



siyahı, ağac), dinamik obyektl rl  işl y rk n ünvan  m liyyatları zamanı göst ricil rd n 

ə ə


ə ə ə

ə ə


ə

ə ə


istifad  olunur. 

ə

Göst rici



ə

 özünd  qiym t olaraq 

ə

ə

ÜNVAN yadda saxlayan d yiş ndir. 



ə

ə

Göst riciy  ist nil n d yiş nin ünvanın m nims d  bil rik, n tic d  göst rici h min 



ə

ə

ə ə



ə

ə

ə



ə ə

ə

ə ə ə



ə

ə

d yiş nin yaddaşdakı yerini bildir c k, istinad ed c k , başqa sözl  h min d yiş ni 



ə

ə

ə ə



ə ə

ə ə


ə

ə

GÖST R C K.  g r göst ricinin qim tini d yişib ona başqa ÜNVAN m nims ts k, 



Ə Ə Ə

Ə ə


ə

ə

ə



ə

ə ə


onda göst rici müvafiq ünvandakı m lumata istinad ed c k (göst r c k).

ə

ə



ə ə

ə ə ə


9.2.1 Göst ricinin elanı

ə

Göst rici elan etm k üçün aşağıdakı sintaksisd n istifad  olunur:

ə

ə

ə



ə

   tip  *göstərici_dəyişənin_adı;

Sintaksisd n göründüyü kimi göst rici elan ed rk n adi d yiş nl rin elanı qaydasından 

ə

ə



ə ə

ə

ə ə



istifad  olunur (tip ad;). F rq yalnız göst ricinin adından  vv l ulduz - '*' işar sinin 

ə

ə



ə

ə ə


ə

olmasıdır. Eyni s tird  h m adi, h m d  göst rici d yiş nl r elan ed  bil rik.

ə

ə ə


ə

ə

ə



ə

ə ə


ə

ə

Çalışma 2. int tipind n olan y adlı göst rici elan edin.

ə

ə

H lli.



ə  Göst ricil rin elanı qaydasından istifad  ed r k int tipind n olan y adlı göst ricini 

ə

ə



ə

ə ə


ə

ə

aşağıdakı kimi elan ed  bil rik:



ə

ə

     



int

 *y;


9.2.2 Göst riciy  qiym t m nims dilm si

ə

ə

ə

ə

ə

ə

Assembler proqramlaşdırma kursunda fiziki yaddaşın strukturu, prosessorun yaddaşa 

müraci t imkanları mövzuları zamanı fiziki ünvanın 0-dan böyük - b rab r  d d olduğu 

ə

ə



ə ə ə

qeyd olunur. Yüks k s viyy li dill rd  unvanların  d di qiym tl rind n el  d  geniş 

ə

ə

ə



ə ə

ə ə


ə ə

ə

ə ə



istifad  olunmur, sad c  hesab  m ll ri zamanı istifad  olunur. Bununla biz ir lid ki 

ə

ə ə



ə ə ə

ə

ə ə



mövzularda m şğul olacayıq. H l lik is  göst ricil r  qiym t m nims d rk n unvan 

ə

ə ə



ə

ə

ə ə



ə

ə

ə ə ə



operatorundan istifad  etm kl  hansısa d yiş nin ünvanın v  ya başqa bir göst ricinin 

ə

ə ə



ə

ə

ə



ə

qiym tin m nims d  bil rik.

ə

ə

ə ə



ə

Çalışa 3. int tipli adi x v  göst rici y d yiş ni elan edin. Ünvan operatorundan istifad  

ə

ə



ə

ə

ə



etm kl  x d yiş ninin ünvanını y -  m nims din.

ə ə


ə

ə

ə ə



ə

H lli

ə . Proqram kodu aşağıdakı kimi olar:

   


int

 x, *y;


   y = &x;

Çalışma 4. int tipli adi x d yiş ni, y v  z göst ricil ri elan edin. Ünvan operatorundan 

ə

ə



ə

ə

ə



istifad  etm kl  x d yiş ninin ünvanını y -  m nims din. y-in qiym tini (x -in ünvanını) z 

ə

ə ə



ə

ə

ə ə



ə

ə


-t  m nims din.

ə ə


ə

H lli.

ə  

   


int

 x, *y, *z;

   y = &x;

   z = y;



9.2.3 Göst ricinin istinad etdiyi d yiş n  müraci t

ə

ə

ə ə

ə

Göst riciy  h r-hansı ünvanı m nims tdikd n sonra h min unvanda yerl ş n m lumatı 

ə

ə ə


ə

ə

ə



ə

ə ə


ə

asanlıqla oxuyub, d yişdirm k olar. Bunun üçün göst ricinin adının  vv lin  ulduz - '*' 

ə

ə

ə



ə ə ə

simvolunu artırmaq t l b olunur.

ə ə

Çalışma 5. int tipli x d yiş ni v  y göst ricisi elan edin. x -in ünvanın y-  m nims din. 

ə

ə



ə

ə

ə ə



ə

Göst ricinin istinad etdiyi sah d ki m lumatı çap edin.

ə

ə ə


ə

H ll.

ə  int ipli x d yiş ni v  y göst ricisi elanı üçün int x, *y ; kodundan istifad  ed k. x -  

ə

ə



ə

ə

ə



ə

ə

25 qiym ti m nims d k, x = 25; . y = &x; kodu il  x -in ünvanın y -  m nims d k. y-in 



ə

ə

ə ə



ə

ə ə


ə ə

istinad etdiyi m lumatı çap etm k üçün cout<< *y ; kodundan istifad  ed  bil rik. Yekun 

ə

ə

ə



ə

ə

proqram kodu aşağıdakı kimi olar:



 

#include 

 

int


 main(){

int


 x, *y;

 x = 


25

;

  y = &x;



  std::cout<< *y ;

}

Çalışma 6. int tipli x d yiş ni v  y göst ricisi elan edin. x -in ünvanın y-  m nims din. 

ə

ə

ə



ə

ə ə


ə

Göst ricinin istinad etdiyi sah d ki m lumatı d yişdirin. D yişikliyi yoxlayın.

ə

ə ə


ə

ə

ə



H lli.

ə  Yenı Çalıma 5 -d ki kimi y -  x -in ünvanın m nims d k.  vv lc  x-  25 qiym ti 

ə

ə



ə

ə ə Ə ə ə ə

ə

m nims d k. Daha sonra * simvolundan istifad  etm kl  y-in istinad etdiyi sah y  h r-



ə

ə ə


ə

ə ə


ə ə ə

hansı qimy t yazaq, misal üçün 40, aşağıdakı kimi *y = 40;. y göst ricisi x -  istinad 

ə

ə

ə



etdiyind n bu zaman x -in 40 olar. Bunu yoxlamaq üçün *y = 40;  m liyyatından  vv l v  

ə

ə ə



ə ə ə

sonra x -in qiym tini çap ed k. Proqram kodu aşağıdakı kimi olar.

ə

ə

 



#include 

 

int



 main(){

int


 x, *y;

 x = 


25

;

 y = &x;



 std::cout<< 

" *y = 40; -dan  evvel x = "

 << x ;


 *y = 

40

;



 std::cout<< 

" *y = 40; -dan sonra x = "

 << x ;

}

9.3 Göst ricil r il  C rg l rin  laq si



ə

ə

ə ə ə ə

ə

ə

C rg l r göst ricil rin xüsusi bir formasıdır. C rg l r d  göst ricil r kimi yaddaşda 

ə ə ə

ə

ə



ə ə ə ə

ə

ə



mü yy n bir sah y  istinad edir. F rq yalnız ondadır ki, göst ricini ist nil n ünvana 

ə ə


ə ə

ə

ə



ə ə

yönl ndirm k olar, c rg l r is  proqramın icrası boyu yalnız bir unvana - elementl r 

ə

ə

ə ə ə



ə

ə

yerl şdiyi sah nin başlanğıcına (c rg nin ilk elementin ) istniad edirl r. Başqa sözl  



ə

ə

ə ə



ə

ə

ə



c rg nin adı c rg nin ilk elementin  istinad ed n v  qiym ti d yişdiril  bilm y n 

ə ə


ə ə

ə

ə



ə

ə

ə



ə

ə ə


(constant) göst ricidir. 

ə


Yüklə 362,54 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin