C++ proqramlaşdırma dili


 Göst ricinin c rg y  m nims dilm si



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


9.3.1 Göst ricinin c rg y  m nims dilm si

ə

ə ə ə ə

ə

ə

C rg  elan ed n zaman biz aşağıdakı sintaksisd n istifad  edirik:

ə ə

ə

ə



ə

   tip  cərgənin_adı [elementərin_sayı];

Qeyd etdik ki, burada c rg nin_adı c rg d ki ilk element  istinad ed n göst ricidir. Buna

ə ə


ə ə ə

ə

ə



ə

 

gör  başqa göst rici elan edib bu c rg y  m nims d  bil rik. Misal üçün aşağıdakı kimi:



ə

ə

ə ə ə ə



ə ə

ə

    tip  cərgənin_adı [elementərin_sayı], *göstərici;



     göstərici = cərgənin_adı;

Bu zaman göst rici c rg nin ilk elementin  istinad etmiş olacaq. Bu biz  * operatorundan

ə

ə ə


ə

ə

 



istifad  etm kl  h min elementin qiym tini örg nm y  v  d yişm y  imkan verir. Misal 

ə

ə ə ə



ə

ə

ə ə ə ə



ə ə

üçün *göst rici = 45;  m liyyatı c rg nin ilk elementin  ()c rg nin_adı[0] ) 45 qiym tni 

ə

ə ə


ə ə

ə

ə ə



ə

m nims tmiş olacaq.

ə

ə

Çalışma 7. int tipli 5 elementd n ibar t x c rg si v  y göst ricisi elan edin. y 



ə

ə

ə ə



ə

ə

göst ricisind n istifad  etm kl  x-in ilk elementin  120 qiym tini m nims din.



ə

ə

ə



ə ə

ə

ə



ə

ə

H lli. 



ə

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

 

int


 main(){

  

int



 x[

5

], *y;



  y = &x;

  *y = 


120

;

}



9.3.2 Göst rici üz rind  hesab  m ll ri

ə

ə

ə

ə ə ə

Göst rici qiym t olaraq özünd  yaddaş ünvanı saxlayır. Qeyd etdik ki, fiziki yaddaş 

ə

ə

ə



ünvanları 0-dan böyük - b rab r tam  d dl rl  ifad  olunur. Bu is  ünvan üz rind  

ə

ə



ə ə ə ə

ə

ə



ə

ə

hesab  m ll ri aparmağa imkan verir. İstifad çi proqramlaşdırmada ünvanlarla bağlı 



ə ə ə

ə

sas n toplama v  çıxma  m liyyatları aparılır. 



ə

ə

ə



ə ə

Göst ricinin qiym tini artırıb-azaltdıqda o yaddaş sah si boyu müvafiq olaraq "yuxarı" v  

ə

ə



ə

ə

"aşağı" sürüşür. Bundan istifad  edib göst ricinin qiym tini artırıb-azaltmaqla onu c rg  



ə

ə

ə



ə ə

boyu yuxarı v  aşağı sürüşdür r k c rg nin ist nil n elementi üz rin  yerl şdirm k olar.

ə

ə ə


ə ə

ə ə


ə ə

ə

ə



Tutaq ki, aşağıdakı kimi c rg  v  göst rici elan etmişik:

ə ə ə


ə

    tip  cərgənin_adı [elementərin_sayı], *göstərici;

göst ricini c rg y  m nims d k, 

ə

ə ə ə ə



ə ə

    göstərici = cərgənin_adı;

Hal-hazırda göst rici c rg nin ilk elementi üz rind dir (c rg nin_adı[0]).  g r 

ə

ə ə



ə

ə

ə ə



Ə ə

göst ricinin qiym tini 1 vahid artırsaq o növb ti elementin üz rin  sürüş r, 

ə

ə

ə



ə ə

ə

    göstərici = göstərici + 



1

;

Hal-hazırda göst rici c rg nin ikinci elementi üz rind dir (c rg nin_adı[1]). 



ə

ə ə


ə

ə

ə ə



Eyni qayda il   g r göst ricinin qiym tini 1 vahid azaltsaq onda o c rg nin  vv lki 

ə ə ə


ə

ə

ə ə



ə ə

elementi üz rin  sürüş r.

ə ə

ə

    göstərici = göstərici - 



1

;

Bu zaman göst rici c rg nin ilk elementi (c rg nin_adı[0]) üz rin  sürüş r. 



ə

ə ə


ə ə

ə ə


ə

Çalışma 8. int tipli 10 elementd n ibar t x c rg si v  y göst ricisi elan edin. Dövr 

ə

ə



ə ə

ə

ə



operatorundan v  y göst ricind n istifad  etm kl  x -in elementl rin  50-d n 59 -a kimi 

ə

ə



ə

ə

ə ə



ə ə

ə

qiym tl r m nims din. 



ə ə

ə

ə



H lli.

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

   


#include 

   


int

 main (){

  

    


int

 x[


10

], *y;


    

int


 i;

    


// y-e x -i menimsedek

    y = x;

  

    


// y hal-hazirda x -in ilk elementine (x[0]) 

    


// muraciet edir

 

    



for

 (i=


0

; i<


10

; ++i){


      

// y -in istinad etdiyi elemente qiymet menimsedek

      *y = 

50

 + i;


       

// y -i cergenin novbeti elementi uzerin surushdurek

       y = y + 

1

;

    }



 }

9.3.3 Göst ricil rl  s tirl rin  laq si

ə

ə ə ə

ə

ə

ə

S tirl r c rg l rin xüsusi - elementl rinin tipi char olan halıdır. Ona gör  göst ricil r v  

ə ə ə ə ə

ə

ə



ə

ə ə


c rg l rl  bağlı bütün qaydalar analoji olaraq s tirl r  t tbiq olunur. 

ə ə ə ə


ə ə ə ə

Çalışma 9. Tutaq ki, 16 elementi olan s s trin  "abcdefghijklmnop" qiym ti 

ə

ə



ə

m nims tmişik.  g r char tipi g göst ricisi elan ets k v  ona s qiym ti m nims ts k o 

ə

ə

Ə ə



ə

ə

ə



ə

ə

ə ə



hansı simvola istinda ed r?

ə

H lli.



ə  g göst ricisini s s trin  m nims tdikd  ( g = s; ) g göst ricisi s s trinin (c rg sinin)

ə

ə



ə ə

ə

ə



ə

ə

ə ə



 

ilk elementin  istinad ed r, başqa sözl  'a' simvoluna.

ə

ə

ə



Çalışma 10. Tutaq ki, 16 elementi olan s s trin  "abcdefghijklmnop" qiym ti 

ə

ə



ə

m nims tmişik.  g r char tipi g göst ricisi elan ets k v  ona s qiym ti m nims tdikd n 

ə

ə

Ə ə



ə

ə

ə



ə

ə

ə



ə

sonra göst ricinin qiym tini 1 vahid artırsaq o hansı simvola istinda ed r?

ə

ə

ə



H lli.

ə  g göst ricisini s s trin  m nims tdikd  ( g = s; ) g göst ricisi s s trinin (c rg sinin)

ə

ə



ə ə

ə

ə



ə

ə

ə ə



 

ilk elementin  istinad ed r, y ni 'a' simvoluna. Daha sonra g -nin qiym tini 1 vahid 

ə

ə

ə



ə

artırsaq (g = g + 1; ) onda o növb ti elementin üz rin  sürüş r, başqa sözl  'b' 

ə

ə ə


ə

ə

simvolunun.



Çalışma 11. Tutaq ki, 16 elementi olan s s trin  "abcdefghijklmnop" qiym ti 

ə

ə



ə

m nims tmişik.  g r char tipi g göst ricisi elan ets k v  ona s qiym ti m nims tdikd n 

ə

ə

Ə ə



ə

ə

ə



ə

ə

ə



ə

sonra göst ricinin qiym tini 5 vahid artırsaq o hansı simvola istinda ed r?

ə

ə

ə



H lli.

ə  g göst ricisini s s trin  m nims tdikd  ( g = s; ) g göst ricisi s s trinin (c rg sinin)

ə

ə



ə ə

ə

ə



ə

ə

ə ə



 

ilk elementin  istinad ed r, y ni 'a' simvoluna. Daha sonra g -nin qiym tini 5 vahid 

ə

ə

ə



ə

artırsaq (g = g + 5; ) onda o 5 vahid sonrakı elementin , başqa sözl  'f' simvolunun 

ə

üz rin  sürüş r.



ə ə

ə

Çalışma 12. Tutaq ki, 20 elementli char tipli s s tri v  10 elementli q s tri elan edilib v  s 

ə

ə

ə



ə

s trin  "abcdefghijklmnop" qiym ti m nims dilib. Göst ricil rd n v  strncpy 

ə

ə

ə



ə

ə

ə



ə ə

ə

funksiyasından istifad  etm kl  s s trinin 3-cü simvolu il  10 -cu simvolu arasında qalan 



ə

ə ə


ə

ə

hiss sini q s trin  köçürün . 



ə

ə

ə



H lli. 

ə

vv lc  g göst ricisi elan ed k v  onu s s trinin 3 -cü elementi üz rin  

Ə ə ə

ə

ə



ə

ə

ə ə



sürüşdür k. Bunun üçün  vv lc  g -ni s -  m nims d k, daha sonra onun qiym tini 2 

ə

ə ə ə



ə ə

ə ə


ə

vahid artıraq, aşağıdakı kimi:

      g = s; 

      g = g + 

2

;

Bu zaman g göst ricisi s s trinin 3-cü elementi üz rin  sürüşmüş olar. Daha sonra 



ə

ə

ə ə



növb ti 7 simvolu (10 -cu simvola q d r) q -y  köçürm k üçün strncpy funksiyasından 

ə

ə ə



ə

ə

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



ə

ə

ə



    strncpy(q,g,

7

);



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

  

#include 



  

int


 main(){

 

    



char

 s[


20

], q[


10

], *g;


    

// s setrine  "abcdefghijklmnop" qiymeti yerleshdirek

    strcpy(s, 

"abcdefghijklmnop"

);


    

// g -ni s -in 3-cu simvolu uzerine surushdurek    

    g = s;

    g = g + 

2

;



    

// birbasha g = s + 2; ve ya g = &s[2]; yaza da  bilerdik

    


// s -in 3 -cu simvolu ile 10 -cu simvolu arasinda 

    


// qalan hissesini q -ye menimsedek    

    strncpy(q,g,

7

);

    



  }

9.4 Dinamik Yaradılma v  Silinm

ə

ə

Proqramın icrası zamanı yaddaş sah sinin ayrılmasına v  silinm sin  dinamik yaradılma 

ə

ə

ə



ə

v  silinm  deyilir. Gös tricil r  proqramın icrası boyu yaddaşda yer ayrıla bil r v  h min 

ə

ə

ə



ə ə

ə ə ə


yer  ehtiyac qalmadıqda h min yer azad oluna bil r.

ə

ə



ə

9.4.1 Dinamik yaradılma

Göst riciy  yaddaşda yer ayırmaq üçün new operatorundan istifad  olunur. new 

ə

ə

ə



operatorundan istifad  etm kl  göst riciy  yer ayırmaq üçün aşağıdakı sintaksisd n 

ə

ə ə



ə

ə

ə



istifad  edilir:

ə

    göstərici = 



new

 tip;


Çalışma 13. int tipli x göst ricisi elan edin v  ona dinamik yer ayırın.

ə

ə



H lli.

ə  Kod aşağıdakı kimi olar:

    


int

 *x;


    

    x = 


new

 

int



;

9.4.2 Dinamik ayrılan yaddaşdan istifad

ə

! Tipik proqramlaşdırma s hvi: Göst riciy  yer ayırmada ona muraci t etm k.

ə

ə

ə



ə

ə

Göst riciy  new operatoru il  yer ayırdıqdan sonra ulduz * operatorundan istifad  



ə

ə

ə



ə

etm kl  h min yerd  olan m lumata müraci t etm k olar. Ulduz operatoru il  göst ricinin

ə ə ə

ə

ə



ə

ə

ə



ə

 

istinad etdiyi sah y  müraci t qaydası il  biz artıq tanışıq.



ə ə

ə

ə



Çalışma 14. int tipli x göst ricisi elan edin, new operatoru il  x -  yer ayırın v  h min 

ə

ə



ə

ə ə


yer  5 qiym tini yazın.

ə

ə



H lli. 

ə

Kod aşağıdakı kimi olacaq:

    

int


 *x;

    x = 


new

 

int



;

    *x = 

5

;

9.4.3 Dinamik silinm



ə

new operatoru il  ayrılan yeri silm k üçün delete operatorundan istifad  olunur. delete 

ə

ə

ə



operatorunun sintaksisi aşağıdakı kimidir:

   


delete

 göstərici;



Çalışma 15. int tipli x göst ricisi elan edin, new operatoru il  x -  yer ayırın v  h min 

ə

ə



ə

ə ə


yer  5 qiym tini yazın. x -  ayrılmış yeri yaddaşda silin.

ə

ə



ə

H lli.

ə  Kod aşağıdakı kimi olacaq:

    


int

 *x;


    x = 

new

 

int



;

    *x = 

5

;

    



    

delete

 x;


9.4.4 Dinamik obyektl r

ə

Strukt v  ya sinif tipind n olan d yiş nl  obyekt adlanır. Göst rici obyektl rin elanı v  

ə

ə

ə



ə ə

ə

ə



ə

onlara dinamik yer ayrılma v  silinm  adi d yiş nl rd  olduğu kimidir. H ddl rin  

ə

ə

ə



ə ə ə

ə

ə ə



müraci t is  bir q d r f rqlidir. Adi halda obyektin h ddin  müraci t etm k üçün nöqt  - 

ə

ə



ə ə ə

ə

ə



ə

ə

ə



'.' -d n istifad  edirdik. Dinamik obyektl rin h ddl rin  müraci t etm k üçün is  '->' 

ə

ə



ə

ə

ə ə



ə

ə

ə



işar l m sind n istifad  olunur, aşağıdakı kimi:

ə ə ə


ə

ə

    obyekt->hədd



Çalışma 16. int tipli x v  char tipli c h ddl rind n ibar t s adlı struct tipi elan edin. s 

ə

ə



ə

ə

ə



tipind  g adlı göst rici obyekt elan edin. g göst ricisin  dinamik yer ayırın. g -nin x 

ə

ə



ə

ə

h ddin  5, c h ddin  'B' qiym ti m nims din.



ə

ə

ə



ə

ə

ə



ə

H lli. 

ə

Kod aşağıdakı kimi olar:

 

// evvelce   int tipli x və char tipli c həddlərindən ibarət

 

// s adlı struct tipi elan edek

  

struct

 s{


     

int


  x;

     


char

 c;


  };

 

// s tipinden g gostericisi elan edek

 s *g;

 

// g -ye yer ayıraq



 g = 

new

 s;


 

// g -nin heddlerine qiymetler menimsedek

 g->x = 


5

;

 g->c = 



'B'

;

Çalışma 17. int tipli en v  uz d yiş n h ddl rind n, int sahe() funksiya h ddind n ibar t 

ə

ə

ə



ə

ə

ə



ə

ə

ə



kvadrat sinfi elan edin. kavadrat sinfind n kv göst ricisi elan edin. kv -y  dinamik yer 

ə

ə



ə

ayırın v  sah sini çap edin.

ə

ə

H lli.



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

 

#include 



 

class

 kvadrat{

   

    


public

:

     kvadrat();



     

int


 sahe();

    


private

:


     

int


 en;

     


int

 uz;


 };

 

int



 main(){

    kvadrat *kv;

    kv = 

new

 kvadrat;

    std::cout<< kv->sahe();

    


delete

 kv;


 }

$10 Makroslar v  başlıq fayllar.

ə

Biz indiy  kimi proqramlarada

ə

#include, #include

kimi s tirl rd n istifad  etdik v  qeyd etdik ki proqramın m tnin  bu s tirl rin  lav  

ə ə ə

ə

ə



ə

ə

ə ə



ə

ə

olunması biz  



ə

std::cout, std::cin, new , delete, strcpy ...

 kimi funksiyalardan istifad  etm y  

ə

ə ə


imkan verir. H r-hansı bir funksiyadan proqramda istifad  ed  bilm k üçün proqrama bu 

ə

ə



ə

ə

funksiyanın elanı (adı v  parametrl rinin qeyd edildiyi s tir) v  m tni (funksiyanın kod 



ə

ə

ə



ə ə

hiss si) verilm lidir. Biz öz funksiyalarımızı t rtib ed rk n h m elanı, h m d  m tni eyni 

ə

ə



ə

ə ə


ə

ə

ə ə



faylda yerl şdirirdik. Kompilyator imkan veriri ki, biz ayrı-ayrı fayllarda elan olunmuş 

ə

funksiya v  d yiş nl r  öz proqramımızdan müraci t ed  bil k.



ə ə

ə ə ə


ə

ə

ə



Bunun üçün 

#include

 direktivind n istifad  edirl r.

ə

ə

ə



#include

 v  ya 


ə

#include"fayl.h"

 kimi.


Bir qayda olaraq proqrama 

#include

 vast sil   lav  olunan faylların sonu .h il  bitir. Sad  

ə ə ə

ə

ə



ə

proqram nümun sin  baxmağımız kifay tdir. İndiy  kimi baxdığımız nümun l rd  bütün 

ə

ə

ə



ə

ə ə ə


proqram kodunu bir fayla yerl şdirirdik.

ə

İndi is  biz  iki v  daha çox fayl lazım olacaq:



ə

ə

ə



D yiş nl rin, funksiyaların elan olunduğu başlıq fayllar v  bu d yiş n v  funksiyalara 

ə

ə ə



ə

ə

ə



ə

müraci t ed n proqram kodu faylları.

ə

ə

Proqram 1.



menim_faylim.h faylının m tni

ə

// prg_11_1.cpp



/*bashliq fayli menim_faylim.h */

#ifndef MENIM_FAYLIM_H

#define MENIM_FAYLIM_H

int


 yeni_deyishen;

#endif


proqram kodu prog2.cpp faylının mətni 

#include 

#include "menim_faylim.h"

int


 main()

{

yeni_deyishen = 



5

;

std::cout<<



" yeni deyishen "

<

"

\n



"

;

}



menim_faylim.h

 faylındakı



#ifndef

#define

#endif

makrosları 



menim_faylim.h

 faylının bizim proqramam sonsuz  lav  olunmasının qarşısını 

ə

ə

alır. 



menim_faylim.h

 başlıq faylında biz 



int

 tipli 


yeni_deyishen

 d yiş ni elan edirik. Daha 

ə

ə

sonra 



prog2.cpp

 faylında 



yeni_deyishen

 d yiş nin  müraci t edirik.

ə

ə

ə



ə

g r diqq t yetirdinizs  biz iostream faylını 

Ə ə

ə

ə



<

 v  


ə

>

 vast sil , 

ə ə

menim_faylim.h

 faylını is  " v

ə

ə 

" simvolları vast sil  proqrama  lav  etdik. Bu kompilyatora 



ə ə

ə

ə



menim_faylim.h

 başlıq faylının 

standart deyil,bizim t r fimizd n yaradıldığını bildirir v  kompilyator bu faylı bizim 

ə ə


ə

ə

proqram yerl ş n qovluqda axtarır.



ə ə

MAKROSLAR

C++ dilind  istifad  olunan dig r  h miyy tli vasit l rd n biri d  makroslardır. Makroslar 

ə

ə

ə ə ə



ə

ə ə ə


ə

2 cür olur: 

ş rt

ə

 makrosları v  

ə

t yin

ə

 makrosları.



T yin makrosalrı

ə

T yin makrosalrı 

ə

#define

 direktivind n istifad  olunaraq yaradılır. T yin makrosları h r 

ə

ə

ə



ə

hansı bir ifad nin başqa ifad  il   v z edilm sin  xidm t edir. Misal üçün  g r biz 

ə

ə ə ə ə


ə

ə

ə



ə ə

proqramın h r-hansı yerind  

ə

ə

#define MAX_QIYMET 1024 



s trini yerl şdiririks  onda 

ə

ə



ə

kompilyator proqramda 



MAX_QIYMET 

ifad sin  rast g ldiyi bütün yerl rd  onu 

ə

ə

ə



ə ə

1024

 il  


ə

v z ed c k.

ə ə

ə ə


Sad  proqrama baxaq:

ə

#define MAX 8

int

 main()


{

int


 i,x[MAX];

for

 (i=


0

, i

x[i]=i;

return

 

0



;

}

Bu proqram 8 elementli tam tipli x c rg si elan edir v  onun elementl rin  0-dan 7-y  



ə ə

ə

ə ə



ə

kimi qiym tl r m nims dir.

ə ə

ə

ə



Ş rt makrosları

ə

Ş rt makrosları 

ə

#

ifdef , #ifndef , #endif

 direktivl d n istifad  olunaraq yaradılır.Ş rt 

ə ə

ə

ə



makrosları biz  imkan verir ki, mü yy n ş rtd n asılı olaraq proqramın h r-hansı 

ə

ə ə



ə ə

ə

hiss sinin kompilyator t r find n n z r  alınmamasını t min ed k.



ə

ə ə


ə

ə ə ə


ə

ə

Sintaksis bel dir:



ə


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 ©www.azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin