Vi fəsil. C++ dilində proqramlaşdırma



Yüklə 1,02 Mb.
səhifə47/74
tarix04.01.2023
ölçüsü1,02 Mb.
#121980
1   ...   43   44   45   46   47   48   49   50   ...   74
Alqoritmik dillər(C kitab) (10)

bayt

bayt

ch




i




h

Birləşmənin sahələri bir-birini örtə-örtə yerləşirlər. Ayrılan yaddaş sahəsinin həcmi ən böyük sahənin həcminə bərabər olur. İstənilən bir sahənin qiymətinin dəyişməsi digər sahələrin qiymətlərinin dəyişməsinə səbəb olur.

Misal 2. Aşağıdaki nəsələnin həlli üçün proqram tərtib edin:
Klaviaturadan daxil edilən simvolun 2-lik kodunu ekrana çıxarmalı.
//Simvolun 2-lik kodunun alınması
#include
using namespace std;
//bit sahələrinin strukturu
struct byte {int b1:1;

int b2:1;
int b3:1;
int b4:1;
int b5:1;
int b6:1;
int b7:1;
int b8:1;
};
//dəyişən-birləşmə
union bits
{char ch;
byte cod; } u;
//Dekodlaşdırma funksiyasının prototipi
void dekode(bits x);
//əsas proqram
int main( )
{do {cin>>u.ch; cout<<”\n: n; decode(u);}
while (u.ch!=’q’); //q-simvolu
//daxil etmə prosesinin sonu əlamətidir
}
//Dekodlaşdırma funskiyası
void decode(bits u)
{ if(u.cod.b8)cout<<”1”; else cout<<”0”;
if(u.cod.b7)cout<<”1”; else cout<<”0”;
if(u.cod.b6)cout<<”1”; else cout<<”0”;
if(u.cod.b5)cout<<”1”; else cout<<”0”;
if(u.cod.b4)cout<<”1”; else cout<<”0”;
if(u.cod.b3)cout<<”1”; else cout<<”0”;
if(u.cod.b2)cout<<”1”; else cout<<”0”;
if(u.cod.b1)cout<<”1”; else cout<<”0”;
cout<<”\n”;
}
Burada u - dəyişən-birləşmədir və onun tipi bits-dir. u – dəyişən-birləşməsinin 2 elementi var: ch-simvol sahəsi və cod-bit strukturu. Bu sahələr bir-birini örtə bilir. Hər iki sahə üçün 8-bit yer ayrılır.

8 bit

ch

cod

Beləliklə, samvolun kodunun hər bir bitinə müraciət etmək mümkündür. Proqramın işi o vaxt yekunlaşır ki, q-simvolu klaviaturadan daxil edilsin. Proqramın işləməsi nəticsində aşağıdakiları almaq olur:
s: 01110011
d: 01100100
j: 01101010
a: 01100001
b: 01100010
c: 01100011
q: 01110001.

Məsələlər.
1. D.İ.Mendeleyevin dövri cədvəlində hər bir kimyəvi element haqqında məlumatı struktur şəklində verin. Cədvəli komputerin yaddaşına daxil edən proqram yazın.
2. Üç ölçülü fəzada nöqtənin koordinatlarını struktur şəklində verin. İki nöqtənin koordinatlarını daxil edən və onlar arasındaki məsafəni hesablayan proqram yazın.
3. Kompleks ədədə iki həqiqi sahədən ibarət struktur kimi baxaraq, kompleks ədədlər üzərində aparılan dörd hesab əməlini funksiya şəklində tərtib edin.

6.34.İstinadlar (ссылки) və onların istifadə edilməsi qaydaları
C++ dilində göstəriciyə yaxın olan element istinad adlanır. İstinadlara obyektlərin digər bir adı kimi baxmaq olar. İstinadlardan üç üsulla istifadə edilir:


  1. istinadlardan funksiyaların parametrləri kimi istifadə olunması;

  2. isitinadlardan funksiyaların qiymətlərini qaytarmaq üçün istifadə olunması;

  3. asılı olmayan istinadlar yaratmaq üçün.

Əvvəlcə istinadların funksiyaların parametri kimi istifadə olunmasına baxaq. Parametr-istinadların işləmə prinsipi ilə tanış olmaq üçün aşağıdaki misala baxaq:
#include
using namespace std;
void f(int*n); //parametr-göstəricidən istifadə edilir
int main( )
{int i=0;
f(& i);
cout<<”i-nın yeni qiyməti:”<
return 0;
}
void f (int*n)
{*n=100; //n-nın göstərdiyi arqumentə 100
//ədədini mənimsətmək
}

Burada f( ) funksiyası 100-ədəddini n-göstəricisi ilə müəyyən olunan ünvana yükləyir. f( ) funksiyasına main funksiyasından müraciət edilir. Bu halda faktiki parametr i-dəyişəninin ünvanı olur. f( ) funksiyasının yerinə yetirilməsi nəticəsində i-dəyişəninin qiyməti 100 ədədi olur.


Yuxarıdaki proqramı aşağıdaki kimi dəyişərək prosesi tam avtomatlaşdırmaq olar:
#include
using namespace std;
void f(int & n); //parametr-istinadın elan olunması
int main( )
{int i=0;
f(i);
cout<<”i-nın yeni qiyməti:”<
return 0;
}
//Indi f( )-funksiyasında parametr-istinad istifadə olunur
void f(int & n)
{


//növbəti operatorda *-işarəsi yazılmır
n=100;
}
Burada funksiyaya müraciət zamanı arqumentdən əvvəl ampersand (&) işarəsi qoyulmur. Çünki f( )-funksiyası parametr-istinad parametrini alan kimi onu arqumentin ünvanına avtomatik olaraq çevirir.
İndi istinadlardan funksiyanın qiymətinin qaytarılması kimi istifadə olunmsına baxaq. İstinadların qaytarılmasından funksiyaları mənimsətmə operatorunun sol tərəfində istifadə etməyə imkan verir. Aşağıdaki misala baxaq:
#include
using namespace std;
int & f( )
int x;
int main( )
{f( )=100; //f( )-funksiyası ilə qaytarılan istinada
//100-ədədinin mənisədilməsi
cout<
return 0;
}


//Istinada tam ədədin qaytarılması
int & f( )
{return x; //x-ə istinadın verilməsi
}
Funksiyanın gösvdəsində
return x;
operatoru x-qlobal dəyişəninin qiymətini qaytarmır, onun ünvanını qaytarır. Main( )-funksiyasının daxilində
f( )=100;
-operatoru 100-qiymətini x-dəyişəninə verir. Çünki f( ) funksiyası ona olan istinadı təyin etmişdir. Asılı olmayan istinad vasitəsi ilə bir dəyişənin adı olaraq digər dəyişənin adına müraciət etmək olar. Asılı olmayan istinadı onun elan olunması zamanı inisiallaşdırmaq olar. Aşağıdaki proqrama baxaq:
#include
using namespace std;
int main( )
{int x;
int & ref=x; //Asılı olmayan istinadın-yaradılması
x=10; //Bu iki operator
ref=10; //funksional olaraq eynidir
ref=100;
//Burada 100 ədədi 2dəfə çıxışa verilir
cout<
return 0;
}
Bu proqramda asılı olmayan ref istinadı x-dəyişəninin başqa bir adıdır.
İstinadlar inisiallaşmalıdır. İstinadların inisiallaşması mənimsətmə əməlindən fərqlənir. İstinadlar üzərində əməliyyatlar aparmaq olar, lakin əməliyyat istinadın özünü dəyişdirmir.
Məsələ,
int ii=0;
int & rr=ii;
rr++
//ii bir vahid artırılır
Burada ++ əməli mümkün olan əməldir, lakin rr++ əməli rr- istinadının özünü bir vahid artırmır. İnisiallaşdırmadan sonra istinad dəyişmir və o həmişə inisiallaşdırma ilə əlaqədar olan obyekti göstərir. rr- istinadı ilə işarə olunan obyektə göstərici almaq üçün &rr yazmaq lazımdır.


Yüklə 1,02 Mb.

Dostları ilə paylaş:
1   ...   43   44   45   46   47   48   49   50   ...   74




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin