Mühazirə X-XI şərti keçid əmrləri




Yüklə 76.64 Kb.
tarix14.04.2016
ölçüsü76.64 Kb.
Mühazirə X-XI

Şərti keçid əmrləri: Budaqlanma strukturdan, şərtdən asılı olaraq ya bu ya da o biri əməliyyatın yerinə yetirilməsi tələb olunan hallarda istifadə olunur. Şərti operatoru müəyyən şərtlərə əməl edilməsindən asılı olaraq bəzi operatorların icra edilib və ya edilməməsini təmin edir.

Bu əmrlər proqramın icrasının istiqamətini verilən şərtlərə görə dəyişdirmək üçün istifadə olunur. Əmrlər program içərisində verilmiş şərtə görə müxtəlif cür yazıla bilər. Ümumi halda şərt operatoru proqramın budaqlarının iki istiqamətdə təşkili üçün təyin olunmuşdur və aşağıdakı formatda istifadə etmək olar.

Pascalda müqayisələri aparmaq üçün IF-THEN-ELSE ve CASE-OF şərti keçid əmrləri işlədilir.

If şərt operatoru. Ümumi şəkildə IF şərt operatorunu aşağıdakı kimi yazmaq olar:

If Şərt Then

Operator1

Operator2

. . . . . . . .

OperatorN

[ Else If Şərt Then

Operator1

Operator2

. . . . . . . .

OperatorN]

[ Else

Operator1

Operator2

. . . . . . . .

OperatorN]

Buradan görünür ki, Else If hissəsi istənilən qədər ola bilər və ya heç olmaya bilər. Şərtlər məntiqi tipli ifadəni təsvir edirlər. Əgər şərt doğrudursa (True qiyməti alırsa), onda operator1, əks halda operator2 icra olunur. Hər iki operator tərkibli ola bilər. Nəzərə alın ki, If şərt operatorunu bir sətirdə yazmaq lazımdır. Həmçinin Then, Else If və digər sözləri qanuni yerlərindən keçirmək olmaz. else sözü və ondan sonra operator olmazsa şərt operatorunu qısaldılmış formada yazmaq olar. Bu halda idarə şərtdən sonrakı operatora ötürülür.


Yazılışı:

ıf “Şərt” then “əmr və ya əmrlər” elşe “əmr və ya əmrlər”

Və ya:


if (şərt ya da şərtlər) then Şərt sart dogrudursa yerinə yetirilməli əmrlər
else

Şərt yanlışdırsa yerinə yetirilməli əmrlər şəklində olur.

Buradakı şərt cümləsi, birbirlərinə məntiqi operatorlar ile bağlanmış bir ve ya bir neçə əməliyyat ya da bir tək boolean ifade ola bilər. Aşağıdakı Örnəkləri araşdıraq:

 IF A=B THEN ...



IF (A=B) AND (A=C) THEN ...

IF (A+1) < (B-1) THEN ...

IF (Cev In ['E' , 'e']) THEN ...

Burada IF əmrindən sonra verilən şərt doğru olarsa THEN-dən sonrakı əmr və ya əmrlər yerinə yetirilir. əgər verilmiş şərt yanlış olarsa ELSE dən sonrakı əmrilər əmrlər yerinə yetirələcəkdir. ELSE əmrinin yazılması proqramçıdan asılıdır. Bu zaman ELSE əmrindən öncəki əmrin sonunda ";" işarəsi istifadə olunmur. Bu əmrdə qoyulmuş şərtləri yoxlamaq üçün bir çox riyazi işarələrdən istifadə olunur. Bu işarələrin yazılış qaydası aşağıdakı cədvəldə göstərilmişdir.



İşarələr

İzahı

=

Bərabərlik. Sağındakı ve solundakı qimətlər birbirine bərabərdirsə şərt dogru, degilsə yanlıs olur.

<>

Bərabər deyil. Sağındakı ve solundakı qimətlər bərabər deyilsə şərt dogru, bərabərdirsə şərt yanlis olur. Bu ədəd olmayan ifadələr də istifadə etmək olar.

>

Böyükdür. Solundaki deger Sagindaki degerden büyükse sonuç dogru, degilse yanlis olur.

<

Küçüktür. Solundaki deger Sagindaki degerden küçükse sonuç dogru, degilse yanlis olur.

>=

Büyük esit. Solundaki deger sagindaki degerden büyükse ya da esit ise dogru, degilse yanlis olur.

<=

Küçük esit. Solundaki deger sagindaki degerden küçük ya da esit ise dogru, degilse yanlis olur.

in

Içerisinde. Solundaki deger sagindaki kümenin içerisinde mevcut ise degeri dogru, degilse yanlis olur.


If A>B Then A:=A-1 Else B:=B-1;

Bu proqram sətrində A-nın qiyməti B-dən böyük isə A:=A-1 hesablayır, yəni A-nın qiymətini bir vahid azaldır. Əks halda yəni qoyulan şərt yerinə yetmirsə B: =B -1 ifadəsi yerinə yetirilir. Əgər bir neçə şərt verilirsə ifadələr ardıcıl olaraq mötərizə daxilində yazılır və aşağıdakı cədvəldə göstərilən ifadələrdən istifadə olunur.




İfadə

İzahı

AND

Ve demektir. Arasina konuldugu iki (ya da daha fazla) sartin hepsinin dogru oldugu durumlarda sonuç dogru, aksi halde yanlis olur.

OR

Veya anlamindadir. Arasina konuldugu iki (ya da daha fazla) sartin en az birisinin dogru oldugu durumlarda sonuç dogru, aksi halde, yani hepsi yanlis ise sonuç yanlis olur.

NOT

Degil manasindadir. Bir ya da daha fazla sartin soluna konuldugunda sartlarin sonucunun tersini yapar. Yani sonuç true ise false, false ise true olur.


Yazılışı:

If (A>B) AND (A>C) Then Writeln('A BÖYÜK');

AND” vasitəsilə bu proqram sətrində hər iki şərtin ödənilməsi tələb olunur. Əgər qoyulmuş şərtdən heç olmasa birinin yerinə yetirilməsi tələb olunarsa onda, “AND” əvəzinə “ OR” yazmaq lazımdır.



Yazılışı:

If (A>B) Or (A>C) Then Writeln('A BÖYÜK');

Örnək: Verilən ədədlərin mənfi, müsbət və ya sıfır olduğunu təyin edən proqram tərtib edin.

Program mənfi, müsbət və ya sıfır;

üses Crt;

Var

Şayi : Integer;



Begin

Clrscr;


Write('Ədədi daxil edin: ') ;

Readln (Eded) ;



If Eded>0 Then writeln('Müsbət');

If Eded=0 Then writeln('Sıfır');

If Eded<0 Then writeln('Negatif');

Readln;



End.

Yuxarıda yazılan proqramı IF-THEN-ELSE əmrlərindən istifadə etməklə yazaq:



Program mənfi, müsbət və ya sıfır;

Uses Crt;

Var

Şayi : Integer;



Begin

Clrscr;


Write('Ədədi daxil edin: ') ;

Readln (Eded) ;



If Eded>0 Then writeln('müsbət')

Else

If Eded=0 Then writeln('Sıfır')

Else

Writeln('Mənfi` ) ;

Readln;

End.

Göründüyü kimi üç If əmrinin yerinə sadəcə iki If əmri yazılmışdır.



Örnək: Bir tələbənin bir fəndən 3 dəfə aldığı qiymətinin orta qiymətini hesablamalı. Əgər orta qiymət 3 ədədindən böyükdürsə 'Məqbul' əks halda 'qeyri-məqbul' şəklində xəbər veren program.

Program orta qiymət;

Uses Crt;

Var

N1,N2,N3 : Byte;

Ort : Byte;

Begin

Clrscr;


Write('1-ci aldığı qiymət: ') ;

Readln(Nl) ;

Write('2-ci aldığı qiymət:');

Readln(N2) ;

Write('3-cü aldığı qiymət:');

Readln(N3);

Ört:=Round((N1+N2+N3)/3);

Writeln ('Ortalaması =',Ort);



If (Ort>=3) and (Ort=<5) Then Writeln('Məqbul')

Else Writeln('Qeyri-məqbul');

Readln;


End.

Burada 'Round' funksiyası rəqəmi yaxın tam ədədə qədər yuvarlaqlaşdırır.

Pascalda müqayisələri aparmaq üçün bəzi verilənlər görə daha mürəkkəb şərtləri yoxlamaq üçün əlavə olaraq İn ehtiyat sözdən istifadə olunur. Məsələn verilmiş çoxluqdan dəyişən üçün qiymətinin seçilməsində:

X: = [ 2, 4, 6, 8, 10 ] ;

Burada 2 in X üçün True (doğru) 5 in X False (doğru deyil) uyğun gəlir. Bu cür üsul yoxlamanı daha əyani aparmağa imkan verir.

Məsələn:


If (İ>=1) AND (I<=10) Then Writeln(‘Doğru’);

sətrinin əvəzinə



If İ in [1..10] Then Writeln(‘Doğru’);

yazılsa daha yaxşı olar.



Örnək: Bir mağaza müştərilərinə elədikləri alışverişin dəyərinə görə aşağıdakı qimətlərə görə endirim edir:

  • 200 manata qədər olan alışverişlər için 10%

  • 200 manatdan 400 manata qədər olan alışverişlər için 15%

  • 400 manatdan çox olan alışverişler için 20%

bir müştərinin aldığı malın alışveriş dəyəri verilən bu qiymətlərə görə ödəyəcəyi pulun miqdarını hesaplayan program.

Program endirim;

Uses Crt;

Var

Dəyər : Longlnt;

endirim,Ödenecek : Real;

Begin

Clrscr;


Writeln('Alışveriş Dəyərını daxil edin:');

Readln(Dəyər);



If Deyer<=200 Then endirim:=Deyer*0.10;

If Deyer in [200..400] Then endirim:=Deyer*0.15;

If Deyer>400 Then endirim:=Deyer*0.20;

Ödenecek:=Deyer-Endirim;

Writeln('endirim Miqdarı....:',endirim:10:2);

Writeln('Ödənəcək Miqdar....:',Ödenecek:10:2);

Readln;

End.

Təbii bütün əmrlər bir sətirdə yazıla bilər. Şərtin doğru və ya yanlış olması zamanı işlədilən əmrlərin sayı birdən çox olarsa onda, əmrlər BEGIN-END blokları arasına yazılırlar. İç içə birdən çox blok yazıla bilər. Birdən çox əmrlər begin ile end arasina bu şəkildə yazılır:



if (şərt ya da şərtlər) then

begin Şərt sart dogrudursa yerinə yetirilməli əmrlər
end else

begin
Şərt yanlışdırsa yerinə yetirilməli əmrlər
end;

Sadə bir proqram nümunəsinə baxaq:



Örnək: Bir adama aid cinsinə, boy və çəkisinə görə onun ideal çəkidə olmadığını, neçə kilo azalmalı və ya artmasını təyin edən proqram.

İdeal kilo; qadınlarda : Boy-110

kişilərdə : Boy-108

Program ideal çəki;

Uses Crt;

Var

Kilo,Boy,Ferq,ideal: Integer;

Cinsi: Char;

Begin

Repeat

Clrscr;


Write ('Cinsi:');

Readln (Cinsi) ;



üntil Cinsi in ['Q','q','K','k'];

Write( 'Kilo : ') ;Readln(Kilo) ,-

Write( 'Boy : ') ,-Readln(Boy) ;

If (Cinsi='Q') or (Cinsi='q') Then ideal:=Boy-110

Else ideal:=Boy-108;

If IdealThen Writeln(Kilo-Ideal,' Kilo Vermelisiniz ')

Else

If Ideal>Kilo Then Writeln(Ideal-Kilo,' Kilo Almalısınız ')

Else Writeln(' Bravo... İdeal Kilodasınız ');

Readln;


End.

Bu programda ilk olarak daxil olunacaq şəxsin cinsi soruşulur. Bunun üçün Q, q (Qadın), K, k (Kişi) hərflərindən biri ola bilər. Başqa hərf qəbul olumayacaq. Bunun üçün aşağıdakı blokdan istifadə olunmuşdur.



Repeat

Clrscr;


Write('Cinsi...:');

Readln(Cinsi);



Until Cinsi in ['X','x','K','k'];

Proqramda əgər cinsi 'Q' və ya 'q' (Qadın) olarak verilərsə ideal: =Boy-110, diğer halda yəni kişi olması halinde ideal: =Boy-108 hesabı ile ideal kilo hesaplanır.



Örnək:Verilmiş üç ədədin (A,B,C) böyükdən kiçiyə doğru sıralayan proqram.

Program Sıralama;

Uses Crt;

var

A,B,C,D : Longint;



Begin

Clrscr;


Write(‘1-ci ədəd :'); Readln(A); .

Write('2-ci ədəd :'); Readln(B);

Write(‘3-cü ədəd :'); Readln(C);

If AThen Begin D:=A; A:=B; B:=D; End;

If AThen Begin D:=A; A:=C; C:=D; End;

If BThen Begin C:=B; B:=C; C:=I; End;

Vriteln(A, ' ` ,B, ' ',C);

Readln;

End.

Örnək: Verilmiş on ədəd içərisindən:

a) Müsbət ədədlərin ədədi ortasını,

b) Mənfi ədədlərin sayını,

c) 100-200 arasındaki ədədlərin cəmini

tapan proqram.

Program ədədlər;

Uses Crt;

Var

S, Pt, Yt : Longint;

I, Ps, Ns :Byte;

Po : real



Begin

Clrscr;


Ps : =0 ; Pt: =0 ;,Ns : =0 ; Yt: =0 ;

For I:=l To 10 Do

Begin '

Write(I, ədədi daxil edin:');Readln(S)



If S>0 Then

Begin

PS:=PS + 1; Pt:=Pt+S;

End;

If S<0 Then Ns:=Ns+l;

If (S>100) And (S<200) Then Yt: =Yt+S ;

End;

Clrscr;


İf Ps<> Then Po:=Pt/Ps Else Po:=0;

Writeln ('Müsbət ədədlərin ədədi ortası =', Po:0:2);



Writeln('Mənfi ədədləri sayı =',Ns);

Writeln('100 və 200 arasındakı ədədlərin sayı=`,Yt);

Readln;

End.

Örnək: Ümumi şəkildə verilmiş kvadrat tənliyin həllini tapan proqram.

program kvad.tenlik;

{$APPTYPE CONSOLE}



uses

SysUtils;



var

d,a,b,c:real;

x1,x2:real;

begin

write('a=');readln(a);

write('b=');readln(b);

write('c=');readln(c);

d:=b*b-4*a*c;

if d>=0 then

begin x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

writeln('x1=',x1:2:2);

writeln('x2=',x2:2:2);



end

else

writeln('helli yoxdur ');

readln;

{ TODO -oUser -cConsole Main : Insert code here }



end.

Indi and, or not ifadələrindən istifadə etməklə Örnək proqramları araşdıraq. Əvvəlcə sadə bir proqrama baxaq. Bu proqramda and ifadəsindən istifadə edilmişdir.



Program and_ornegi;
Uses Crt;
Var
sayi1, sayi2 : integer;
Begin Clrscr;
writeln('Asagiya 1 ile 10 arasi 2 sayi giriniz');
write('Birinci Sayi:');Readln(sayi1);
write('Ikinci Sayi:');Readln(sayi2);
clrscr;
if (sayi1 in[1..10]) and (sayi2 in[1..10]) then writeln('Sayilari dogru girdiniz')
else writeln('Sayilari Yanlis Girdiniz...');
readln;
end.

Bu proqramda dəyişən 1 və dəyişən 2 [1..10] intervalında olarsa onda, şərt doğru olur və Then ifadəsindən sonrakı əmr yerinə yetirilir. Əks halda şərt yanlış olması hesab olunur. Əgər dəyişənlərdən heç olmasa birinin [1..10] intervalında yerləşməsi tələb olunursa onda, or ifadəsindən istifadə olunur və proqram aşağıdakı şəkildə yazılır. 



Program and_ornegi;
Uses Crt;
Var
sayi1, sayi2 : integer;
Begin Clrscr;
writeln('Asagiya 1 ile 10 arasi 2 sayi giriniz');
write('Birinci Sayi:');Readln(sayi1);
write('Ikinci Sayi:');Readln(sayi2);
clrscr;
if (sayi1 in[1..10]) or (sayi2 in[1..10]) then writeln('Sayilari dogru girdiniz')
else writeln('Sayilari Yanlis Girdiniz...');
readln;
end.

Bu programı digər şəkildə də yazmaq olar. Bu zaman dəyişənin 1-in [1..5] intervalında və ya 11 olması və eyni zamanda dəyişən 2-nin [1..10]) intervalında və ya 11-ə bərabər olması şərt kimi tələb olunur.


 Program and_ornegi;
Uses Crt;
Var
sayi1, sayi2 : integer;
Begin Clrscr;
writeln('Asagiya 1,2,3,4,5,11 sayilarindan birisi olmak sartiyla 2 sayi giriniz');
write('Birinci Sayi:');Readln(sayi1);
write('Ikinci Sayi:');Readln(sayi2);
clrscr;
if ((sayi1 in[1..5]) or (sayi1=11)) and ((sayi2 in[1..10]) or (sayi2=11))

then writeln('Sayilari dogru girdiniz')
else writeln('Sayilari Yanlis Girdiniz...');
readln;
end.

İndi elə sadə proqram tərtib edək ki, orada toplama əməli olsun və nəticə doğrudursa "Tebrikler, bildiniz" yazsin əks halda doğru nəticəni ekrana yazsın. 



Program Toplama_Programi;
Uses Crt;
var
s1,s2:integer;
toplam:integer;

Begin Clrscr;
{Rastgele iki sayi seciliyor...}
randomize;
s1:=random(100);
s2:=random(100);
{...0 ile 99 arasinda rastgele 2 sayi secildi}
writeln('Asagidaki toplama isleminin sonucunu yaziniz...');
writeln;
write(s1,' + ',s2,' = ');readln(toplam);
if (toplam=s1+s2) then writeln('Tebrikler, bildiniz...')
else writeln('Yanlis Sonuc! Cevap ',s1+s2,' olmaliydi.');
readln;
end.

Göründüyü kimi if deyimində şərt olaraq iki ədədin cəmini də vermək olar. Bundan başqa digər şərtlərdə işlətmək olar. Məsələn şərt olaraq (toplam=(s1*21)/(s2+4)*11+9-s2*s1) kim uzun bir hesabi ifadə də yazmaq olar.

Not əmri isə nəticənin doğru və ya yanlış olması haqqında şərt qoyar və nəticə doğru isə yanlış, yanlış isə şərti doğru hesab edər. 

Program deneme;
uses crt;
var
sayi:integer;
begin clrscr;
write('1 ile 5 arasi bir sayi giriniz: ');readln(sayi);
if not (sayi in [1..5]) then writeln('Yanlis!') else writeln('Dogru.');
readln;
end.

Qeyd: Budaqlanmanın üç və daha çoxistiqamətdə təşkili üçün bir-birinə daxil edilən bir neçə şərti operatorlardan istifadə etmək olar. Bu zaman hər else-yə then uyğundur. Səhvlərin olmaması üçün çox sayda şərti operatorların bir-birinin daxilində olmasından uzaqlaşmaq lazımdır.

Seçim əmri: CASE Seçim operatoru şərt operatorunun ümumiləşdirilməsidir və ixtiyari sayda mövcud variantlardan seçməyə, yəni budaqlanmanın ixtiyari sayda istiqamətini təşkil etməyə imkan verir. CASE əmri də IF əmri kimi şərtin doğru ve ya yanlış olmasına bağlı olarak programın bir parçasının çalıştırılmaq için istifadə olunur. Case variant operatoru analoji olaraq IF operatoruna oxşayır, lakin burada iki deyil, bir neçə imkandan bir variantın seçilməsi nəzərdə tutulub. Bu operator selektor adlanan ifadədən, variantlar siyahısından və şərti operator­dakı mənanı daşıyan, vacib sayılmayan else budağından ibarətdir. Verilən ifadənin aldığı qiymətə proqramın icrasını uyğun istiqamətə aparmaq üçün CASE-OF əmrindən istifadə olunur. Yəni verilmiş ifadənin qiymətinə görə siyahıdan istənilən əmr seçilə bilər.
Case operatorunun yazılış forması aşağıdakı kimidir:

Yazılışı:

CASE ifade OF

Sabit1: əmr və ya əmrlər;

Sabit2: əmr və ya əmrlər;

:

:



SabitN: əmr və ya əmrlər;

[ ELSE əmr və ya əmrlər]



END;

Case yoxlanılan ifadə OF

Case value1

Operator1

Operator2

. . . . . . . .

Case value2

Operator1

Operator2

. . . . . . . . .

Case Else

Operator1

Operator2

. . . . . . . . . .

End Select

Burada operator yoxlanılan ifadəni dəyişənin qiyməti ilə qiymətləndirir və onun qiymətindən asılı olaraq uyğun Case bölməsinə keçid baş verir. Əğər heç bir şərt yerinə yetirilmirsə, onda Case Else bölməsinə keçid baş verir.

Seçim operatoru aşağıdakı şəkildə yerinə yetirilir:


  • selektorun ifadəsinin qiyməti hesablanır;

  • selektorun qiymətinin uyğun siyahilər diapazonundakı kon­stant­lar və qiymətlərlə uyğunlaşma obyektinə variantların ardıcıl baxışı yerinə yetirilir;

  • əgər növbəti variant üçün axtarış müvəffəqiyyətlidirsə, onda bu variantın operatoru icra olunur və Seçim operatorunun icrası sona çatır;

  • əgər bütün yoxlamalar müvəffəqiyyətsizdirsə, onda else sözündən sonra yazılan operator icra olunur.

Case əmrindən sonra yazılan ifadənin tipi tamədəd, char və ya boolean ola bilər. Verilən ifadə, sabit ədəd qimətlərindən ilk olaraq hansı qiyməti alırsa, sabit qarşısındakı əmr və ya əmrlər yerinə yetirilir. Əgər heç bir sabit ədəd verilmiş ifadəyə uyğun gəlməzsə onda, ELSEdən sonrakı əmr və ya əmrlər işləyəcəkdir. Her CASE əmri bir END əmri ile sona bitir.

case DayOfWeek of
  1..5: writeln('İş günü);
  6,7: writeln(`İstirahət günü`);
end;

Seçim siyahısı bir-biri ilə kəsişməməlidir. Məsələn növbəti proqram fraqmentində olduğu kimi:



case i of
  2,5: write(1);
  4..6: write(2);
end;

Seçim siyahısı bir-biri ilə kəsişsə kompilyasiya vaxtı səhv haqqında məlumat veriləcək. Seçim operatoruna Örnək:


Örnək:

CASE Y OF { y integer) }

1 : Writeln('Bakı');



2 : Writeln('Gəncə');

3 : Writeln('Sumqayıt');

4 : Writeln('Mingəçevir') ;

END;

Bu proqram parçası ile Y dəyişənin qiymətinə uyğun olaraq aşağıdakı sözlər yazılır. Əgər Y=1 olarsa ekrana Bakı, Y=2 Gəncə, Y=3 Sumqayıt Y=4 Mingəçevir adları yazılır. Y dəyişənin qiyməti 1,2,3 ve 4-dən fərqli rəqəm olarsa onda, END əmrindən sonrak əmr icra olunacaqdır.



Program FS;
Uses Crt;
var
sayi:longint;
begin clrscr;
write('Bir ededi daxil edin: ');readln(sayi);
case sayi of
0..9: writeln('Bu eded tek reqemlidir`);
10..99: writeln('Bu eded iki reqemlidir`);
100..999: writeln('Bu eded üç reqemlidir`);
else writeln('Bu eded üçden böyük reqemlidir`);
end;{Case'in sonu}
end.

Örnək: Basılan bir klavişin hansı olduğunu tapan proqram.

Program klavisa

uses crt;

var ch:char;

begin  clrscr;  

repeat

wrıteln('bir tuşa basınız...'); ch:=readkey;

if ch=#0 then begin  ch:=readkey;

wrıteln('bastığınız tuşun kodu: ',ord(ch));



case ch of

#59:wrıteln('f1 tuşu');

#60:wrıteln('f2 tuşu');

#72:wrıteln('yukarı ok');

#80,#75,#77:writeln('yön tuşu');

end;

end.
Örnək: Birdən dördə qədər rəqəmləri daxil etdikdə həmin rəqəmi sözlə yazan proqram.

program Say;

{$APPTYPE CONSOLE}



uses

SysUtils;



var

i:integer;



begin

write(' 1-dən 4-ə qədər ədəd daxil edin: '); readln(i);



case i of

1: writeln('bir');

2: writeln('iki');

3: writeln('üç');

4: writeln('dörd');

else writeln('olmaz');

end;

readln


end.



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

    Ana səhifə