Kompüterlər, proqramlaşdırma dilləri, əməliyyat sistemləri



Yüklə 279,45 Kb.
səhifə3/6
tarix11.10.2017
ölçüsü279,45 Kb.
#4384
1   2   3   4   5   6

Operatorlar


Əvvəlki paraqrafda biz mənimsətmə operatoru ilə tanış olduq, bu paraqrafda isə şərt(if, switch) və dövr (for, while, do while) operatorları ilə tanış olacayıq.

Şərt operatorları -- if , switch


Bildiyimiz kimi operator proqramda hansı əməliyyatın yerinə yetirilməli olduğunu bildirir. Bir çox hallarda bu və ya digər əməliyyatın yerinə yetirilməsi hansısa şərtdən asılı olur. Bu zaman if operatorundan istifadə olunur. 

if operatoru


if operatorunun sintakisisi aşağıdakı kimidir

if (şərt) {

yerinə yetirilməli əməliyatlar

}

else {



digər əməliyatlar

}

Qeyd edək ki, əgər cəmi bir əməliyyat yerinə yetirilirsə onda {} mötərizələrinə ehtiyac yoxdur. Izahı:


Əvvəlcə şərt yoxlanılır , əgər doğrudursa onda {} arasında olan əməliyatlar yerinə yetirilir əks halda else – dən sonrakı {} mötərizələri arasında olan əməliyatlar yerinə yetirilir.

Məsələn:


int x;

if (x<5)


printf("%d 5 -den kiçikdir",x);

else


printf("%d 5 -den böyükdür",x);

nümunə proqram prog3_1.c :

#include
int main(int argc, char *argv[]){

int x;
printf("zehmet olmasa x-in qiymetini daxil edin\n");

scanf("%d",&x);
if (x<5)

printf("%d 5 -den kichikdir\n",x);

else

printf("%d 5 -den boyukdur\n",x);


return 0;

}

proqramı kompilyasiya edək və hər dəfə müxtəlif qiymətlər daxil etməklə bir neçə dəfə yerinə yetirək.



user@gnu_linux:~/progs/3$ gcc prog3_1.c -o prog3_1

user@gnu_linux:~/progs/3$ ./prog3_1

zehmet olmasa x-in qiymetini daxil edin

7

7 5 -den boyukdur



user@gnu_linux:~/progs/3$ ./prog3_1

zehmet olmasa x-in qiymetini daxil edin

3

3 5 -den kichikdir



user@gnu_linux:~/progs/3$ ./prog3_1

zehmet olmasa x-in qiymetini daxil edin

45

45 5 -den boyukdur



user@gnu_linux:~/progs/3$

Dövr operatorları


for, while, do while

Dövr operatorları müəyyən əməliyyatların bir neçə dəfə təkrar yerinə yetirilməsinə imkan verir. Bu operatorlardan proqramlaşdırmada çox geniş istifadə olunur. 


for operatoru


for operatorunun sintakisisi aşagıdakı kimidir:

for (sayğacın ilkin qiyməti; dövrün başa çatma şərti; sayğacın dəyişmə qaydası){

əməliyyatlar;

} nümunə proqram:


/* prog3_2.c */
int main(int argc, char *argv[]){
int k;

for (k=0; k<10; k=k+1)

printf("salam dunya\n");

return 0;

}

programı kompilyasiya edib yerinə yetirək.



user@gnu_linux:~/progs$

user@gnu_linux:~/progs$ gcc -o prog3_2 prog3_2.c

user@gnu_linux:~/progs$

user@gnu_linux:~/progs$ ./prog3_2

salam dunya

salam dunya

salam dunya

salam dunya

salam dunya

salam dunya

salam dunya

salam dunya

salam dunya

salam dunya

user@gnu_linux:~/progs$

user@gnu_linux:~/progs$

indi isə proqramda for (k=0; k<10; k=k+1) sərtini for (k=5; k<10; k=k+1) ,for (k=0; k<3; k=k+1), for (k=0; k<10; k=k+7),
for (k=0; k<10; k=2) şərtləri ilə əvəz edib proqramı icra edək. Hər dəfə müxtəlif nəticələr alacağıq. Sonuncu halda isə ekranda Salam dunya ifadəsi sonsuz çap olunacaq(proqramın icrasını dayandırmaq üçün CTRL + Z düyməsini daxil edin).
Birinci halı təhlil edək.

for (k=0; k<10; k=k+1)

Sayğac olaraq k dəyişənindən istifadə olunur və ona başlanğıc qiymət olaraq 0 mənimsədilir. k=0; dövrün sona çatması şərti kimi k<10; göstərilib. Bu o deməkdir ki nə qədər ki k < 10 şərti ödənir dövr davam edəcək. Sayğacın qiymətinin dəyişmə qaydası kimi k=k+1 (! sonda ; simvolunun yoxluğuna diqqət yetirin) göstərilib, yəni dövr hər dəfə təkrar olunduqda sayğacın qiyməti 1 vahid artır.

Proses aşağıdakı şəkildə baş verir:

Əvvəlcə k dəyişəni 0 qiyməti alır. Sonra dərhal başa çatma şərti yoxlanılır. k<10 Şərt ödənir, belə ki, 0 < 10 ifadəsi doğru qiymət alır və avtomatik olaraq {} arasında olan əməliyatlar icra olunur. Bizim halda cəmi bir əməliyyatdan, printf("salam dunya\n"); 
istifadə etdiyimizə görə onu {} mötərəzələri arasına almadıq. Daha sonra növbə sayğacın qiymətinin dəyişməsinə gəlir. 
Baxdığımız hal üçün ( k -nın qiyməti 0 olan hal ) k-nın yeni qiyməti 1 olur. Dərhal şərt yoxlanılır. 1 < 10 . Hələki hər şey qaydasında, əməliyyatlar yerinə yetirilir, sayğacın qiyməti dəyişdirilir və hər dəfə 1 vahid artaraq 2,3, ... , 9 qiymətlərini alır. k - nın bütün bu qiymətlərində k<10 şərti ödənir və əməliyyatlar( printf("salam dunya\n");) yerinə yetirilir. Növbəti qiymət isə 10 – dur. Bu halda isə artıq 10 < 10 şərti üdənmir və for operatoru sona çatır.

while opratoru


for operatorunda biz sayğac təyin etdik, dövrün başa çatması şərtini və sayğacın dəyişmə qaydasını verdik. Bu zaman biz dövrün neçə dəfə təkrar olunacağını dəqiq bilirik. Bəzən isə elə olur ki, dövrün başa çatması şərtinin nə vaxt ödənəcəyi əvvəlcədən bilinmir. Bu zaman while operatorundan istifadə olunur. while operatorunun sisntaksisi aşağıdakı kimidr.

while(şərt){

əməliyatlar;

}

nümunə:



char x;

x='b';


while (x!='a'){

printf("salam dunya\n");

printf(" yeni simvol daxil edin\n");

scanf("%c",&x);

}

Bu koddan proq3_3.c -də istifadə edilib. Bu proqramı kompilyasiya edib yerinə yetirək. Göründüyü kimi dövr biz a simvolunu daxil edənə kimi davam edəcək.



while dövr operatorunun digər nadir hallarda istifadə olunan forması do while operatorudur. do while operatorunun sintaksisi belədir:

do{


əməliyyatlar;

} while(şərt);

bu operatorun while opratorundan yeganə fərqi odur ki, bu halda şərtin nə zaman ödənməsindən asılı olmayaraq əməliyyatlar ən azı 1 dəfə yerinə yetiriləcək.

switch operatoru


Əgər müəyyən halda proqramın icra istiqaməti bir neçə şərtdən asılıdırsa bu zaman if opratoru ilə bu şərtlərin mürəkkəb konfiqurasiyasından istifadə etmək əvəzinə switch operatorundan istifadə edirlər.

switch operatorunun sintaksisi aşağıdakı kimidir:

switch ( dəyişən ) {

case qiymət1:

yerinə yetirilməli proqram hissəsi /* əgər dəyişənin qiyməti == qiymət1 */

break;


case qiymət2:

yerinə yetirilməli proqram hissəsi /* əgər dəyişənin qiyməti == qiymət2 */

break;

...


default:

yerinə yetirilməli proqram hissəsi /* yuxarıdakı şərtlərin heç biri ödənmədikdə */

break;

}

switch opratoru dəyişənin qiymətini yuxarıdan aşağı case ifadəsinin qarşısında dayanan qiymətlə yoxlayır və bərabər olarsa onda iki nöqtə : - dən sonra gələn bütün operatorları yerinə yetirir. Növbəti case ifadəsinə qədər. break rast gəlinən yerdə switch opratoru işini dayandırır və proqramda switch -dən sonra gələn oprator yerinə yetirilir. 


switch operatoru ilə bağlı mühüm məqamlardan biri də case ifadələrində qiymət kimi ancaq tam tipli dəyişənlərdən istifadə etmək olar (int) .
default seçimindən istifadə etmək vacib deyil. Əgər qiymətlərdən heç biri dəyişənə bərabər olmasa onda default:seçimində göstərilən operatorlar yerinə yetiriləcək.
nümunə proqram: prog3_4.c

#include

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

int color = 0;

printf("Her hansi reng sechin(qirmizi=1,yashil=2,qara=3):\n");

scanf("%d",&color);

switch(color){

case 1: printf("siz qirmizi rengi seçdiniz\n");

break;

case 2:printf("siz yaşıl rengi seçdiniz\n");



break;

case 3:printf("siz qara rengi seçdiniz\n");

break;

default:printf("siz hech bir reng sechmediniz\n");



}

return 0;

}

Proqramı kompilyasiya edib yerinə yetirək.



user@gnu_linux:~/progs$

user@gnu_linux:~/progs$ gcc -o prog3_4 prog3_4.c

user@gnu_linux:~/progs$

user@gnu_linux:~/progs$ ./prog3_4

Her hansi reng sechin(qirmizi=1,yashil=2,qara=3):

2

siz yaşıl rengi seçdiniz



user@gnu_linux:~/progs$

user@gnu_linux:~/progs$




Yüklə 279,45 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6




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

    Ana səhifə