Dəyişənlər
Əvvəlki paraqrafda biz C dilində necə proqram yerinə yetirməyi örgəndik. Bu paraqrafda biz C dilində yazılmış proqramın ən vacib elementlərindən biri – dəyişənlərlə tanış olacağıq. Hər bir proqram yerinə yetirilərkən müxtəlif məlumatları yadda saxlamalı (yaddaşa yerləşdirməli) olur. Tutaq ki iki ədədin cəmini hesablayan proqram yazmaq istəyirik. Bu zaman biz yaddaşda 3 məlumat üçün yer ayırmalıyıq. İki toplanan və cəm. Proqramlaşdırmada hər hansı məlumatı qəbul etmək, yadda saxlamaq və bu məlumatın qiymətinə müraciət etmək üçün dəyişənlərdən istifadə olunur. Konkret olaraq dəyişən adı olan müəyyən bir yaddaş sahəsidir. Bu yaddaşın sahəsini və adı dəyişəni elan edərkən biz özümüz(proqramçılar) müəyyən edirik.
Yadda saxladığı məlumatın növünə və həcminə görə dəyişənlər tiplərə ayrılır. Misal üçün tam ədədlər tipi - int, kəsr ədədlər tipi - float, simvol tipi - char, sətir tipi - char [], char *v.s. Bu tiplərə standart tiplər deyilir. Bundan əlavə C dilində ünvan dəyişənləri tip, struktur tiplər və siyahılardan da çox geniş istifadə olunur ki, bunlarla da uyğun olaraq 4, 8 və 9-cu paraqraflarda məşğul olacayıq.
Əgər biz proqramda tam tipdən(int) olan və adı x olan dəyişən elan etmək istəyiriksə bu zaman
int x;
sətrini proqrama yerləşdiririk.
Dəyişənlərə istədiyimiz kimi ad verə bilərik yalnız və yalnız həriflərdən(ingilis əlifbasının) , '_' simvolundan və rəqəmlərdən istifadə etməklə. Dəyişənin adı mütləq hərflə başlamalıdır, və operator, tip v.s. adlardan da dəyişən adı kimi istifadə etmək olmaz. Operatorlarla gələn mövzularda tanış olacayıq.
Beləliklə cəm proqrmında hər iki toplananı və onların cəmini yerləşdirmək üçün biz tam tipli 3 dəyişən təyin etməliyik. Gəlin bu dəyişənləri uyğun olaraq top1, top2 və cem kimi adlandıraq. Bu dəyişənləri təyin etmək üçün proqram kodu aşağıdakı kimi olacaq.
int top1;
int top2;
int cem;
Qeyd edək ki eyni tipdən olan dəyişənləri vergüllə ayırmaqla bir sətirdə də elan edə bilərik. Aşağıdakı kimi
int top1,top2,cem;
Burada ; simvoluna diqqət yetirməyinizi istəyirəm. Bu işarə kompilyatora hər hansısa bir əməliyyatın (indiki halda dəyişənlərin elanının) bitməsini göstərir.
Gəlin proqramımızı tərtib edək. Hələlik 3 dəyişən elan etmişik(dəyişən elan etmək və ya təyin etmək eyni məna bildirir). Proqramımız belə olacaq.
#include
int main(){
int top1, top2, cem;
}
Proqramı cem.c faylında yadda saxlayaq və kompilyasiya edək və yerinə yetirək.
user@gnu_linux:~/prg
user@gnu_linux:~/prg gcc cem.c -o cem
user@gnu_linux:~/prg
user@gnu_linux:~/prg ./cem
user@gnu_linux:~/prg
user@gnu_linux:~/prg
Göründüyü kimi proqram heç bir iş görmür, sadəcə tam tipli 3 dəyişən elan edir və icrasını bitirir.
İndi gəlin bu elan etdiyimiz dəyişənlərdə hər hansı məlumat (ədədlər) yerləşdirək(daha doğrusu dəyişənə aid olan yaddaş sahəsinə). Proqramlaşdırmada hər hansı əməliyyatı yerinə yetirmək üçün istifadə olunan əmrə operator deyilir. Yaddaşa məlumat yazma əməliyyatı üçün mənimsətmə operatorundan istifadə olunur. Mənimsətmə operatoru = kimi işarə olunur. Qətiyyən riyaziyyatda olan bərabərlik simvolu ilə qarışdırmaq olmaz. Proqramda bu operatordan solda dəyişənin adı , sağda isə ona mənimsədiləcək qiymət dayanır(və əlbəttdə bütün operatorların sonunda olduğu kimi sonda ; işarəsi). məsələn
x = 5 ;
Bu operator x dəyişəninə 5 qiymətini mənimsədir. Bu zaman yaddaşda nəyin baş verdiyinə gəlin nəzər salaq. Əvvəlcə 5ədədi onluq say sistemindən ikilik say sisteminə çevrilir. Say sistemləri əsasən assembler proqramlaşdırma dilinin mövzusu olduğundan və bu işlərlə məşğul olmaq böyük proqramlaşdırma təcrübəsi tələb etdiyindən bu haqda çox dərinə getməyəcəyik.
5 ədədi ikilik say sistemində aşağıdakı kimi göstərilir.
00000000000000000000000000000101
x tam tipli olduğundan yaddaşda onun üçün 4 bayt yer ayrılır. Bir bayt 8 bit – dən ibarət yaddaş sahəsidir. Bir bit ən kiçik yaddaş sahəsidir və bu sahəyə ancaq 1 və ya 0 yazmaq olar. Komputerin yaddaşı baytlar ardıcıllığından və o da öz növbəsində bitlərdən ibarət olduğundan, bitlərdə isə ancaq 0 və ya 1 yerləşdirmək mümkün olduğundan belə çıxır ki kompüterin yaddaşına yerləşdirilən bütün məlumat orada 0 və 1 -lər ardıcıllığı şəklində saxlanılır. Yəni bütün bizim mp3 , wav, jpg , doc v.s. fayllarımız və ümumiyyətlə bütün fayllar yalnız və yalnız 0 və 1 - lər ardıcıllığıdır. Məişətdə istifadə etdiyimiz bir çox texnikanın (komputer , fotoaparat, ... ) adının rəqəmsal (digital, digit ingilis dilində rəqəm deməkdir)olması da buradan qaynaqlanır və burada söhbət ancaq 0 və 1 rəqəmlərindən gedir.
Tutaq ki baxdığımız anda proqramın yaddaşı aşağıdakı şəkildədir.
Shekil1.
x=5;
Indi isə yaddaşın vəziyyəti aşağıdakı kimi olar.
şəkil 2.
Aşağıdakı operatora baxaq.
x=y;
Bu halda y -in qiyməti yaddaşdan x-in ünvanına köçürülür.
Sekil3. Shekil4.
Aşağıdakı hala baxaq.
x=x+1;
Bu halda əvvəlcə x-in qiyməti yaddaşdan götürülür, onun üzərinə 1 əlavə olunur və alınmış nəticə yenidən x-ə yazılır. Tutaq ki x – ə 3 qiyməti mənimsədilib.
x=3;
Shekil5. x=x+1; 3+1 --- 4 --- 00000000000000000000000000000100 Shekil6.
Proqramda Şərhlər
C dilində yazılmış hər – hansı proqramı şərhsiz təsəvvür etmək olmaz. Şərh (comment, statement ... ) proqramın bu və ya digər hissəsinin hansı iş gördüyünü bildirmək üçün proqramın mətn koduna əlavə olunur .Şərhlər ancaq proqramın işini başa düşmək istəyənlər üçündür. Proqramın real yerinə yetirilən koduna şəhrlərin heç bir aidiyyəti yoxdur. Belə ki, kompilyator proqramı kompilyasiya edərkən birinci gordüyü iş şərhləri proqram kodundan silməkdir. Proqramda şərh elan etmək üçün /* və */ - dən istifadə olunur.
Bu zaman kompilyator bu işarələr arasında yerləşdirilən mətni şərh kimi üəbul edəcək. Lakin səhvən proqram kodlarını şərh kimi verməyin. Bu zaman kompilyator onları nəzərə almayacaq. Onu da deyim ki, çox vaxt bu qaydadan proqramdakı səhvləri tapmada istifadə olunur (proqramın müəyyən hissəsini şərh kimi verib nəticəni yoxlamaqla).
Dəyişənlərin müqayisəsi və qiymətlərinin dəyişdirilməsi.
Dəyişənlərin qiymələrinin dəyişdirilmə və müqaisə imkanının olması proqramçıya çox geniş imkanlar verir. Dəyişənərlə aşağıdakı əməliyyatları aparmaq olar.
*, -, +, /, =, ==, >, < * hasil, - çıxma, + cəm. Bizim üçün lazım olan ən vacib əməliyyat , dəyişənin qiymətinin dəyişdirilməsi əməlidir. Bunun üçün '=' operatorundan istifadə olunur. Bu operatora 'mənimsətmə' operatoru deyirlər. Bu opratoru bərabərlik opratoru kimi qəbul etmək olmaz. C++ dilində bərabərlik opratoru olaraq == istifadə olunur. Aşağıdakı nümunələrə baxaq.
a = 4*6; /* proqramda bu sətir yerinə yetirildikdən sonra */
/* əvvəlki qiymətindən asılı olmayaraq a-nın qiyməti yeni qiyməti 24 olacaq. */
a = a + 5; /* a -nın yeni qiyməti əvvəlki qiyməti ilə 5 -in cəminə bərabər olur. */
a == 3; /* a -ya heç bir yeni qiymət mənimsədilmir(a-nin qiymeti deyishmir) , sadəcə onun 3 - */
/*ə bərabər olub olmaması yoxlanılır */
Yəqin ki, siz < və > operatorlarının necə işlədiyini düşünürsünüz. Onlar uyğun olaraq böyükdür və kiçikdir operatorlarıdır. Məsəslən.
a < 5 /* a -nın 5 -dən kiçik olmasını yoxlayır */
a > 5 /* a -nın 5 -dən böyük olmasını yoxlayır */
a == 5 /* a -nın 5 -ə bərabər olmasını yoxlayır */
proqramlaşdırmanı örgənməyin yeganə yolu proqram yazmaqdır.
Aşağıda verilən tapşırıqları yerinə yetirən proqramlar yazın.
Həlli olanlar. (həllərə yalnız öz cəhdləriniz nəticə vermədikdə müraciət etmək məsləhət görülür.)
1.3 ədədin cəmini hesablayan proqram tərtib edin.
2. Hər – hansı ədədi və onun kvadratını hesablayan proqram tərtib edin.
3. Aşağıdakı kod hissəsinin gördüyü işi yoxlamaq üçün proqram tərtib edin.
int x,y;
x=5;
y=9;
printf("x=%d y=%d",x,y);
Dostları ilə paylaş: |