- •Proqramlaşdırmanın əsasları
- •3. Yaddaş və verilənlərin tipləri
- •3.1. Yaddaş və onun növləri
- •3.2. Standart tip verilənlərin ölçüsü
- •3.3. Dəyişənlərin elan olunması
- •3.4. Konstantlar (Sabitlər)
- •3.5. İfadələr
- •4. Xətti və budaqlanan alqoritmlərin proqramlaşdırılması
- •4.1. Xətti alqoritmlərin proqramlaşdırılması
- •3.7. Tiplərin çevrilməsi
- •Müstəqil işləmək üçün tapşırıqlar
- •4.2. Giriş/çıxış operatorları
- •4.3. Budaqlanan alqoritmlərin proqramlaşdırılması
- •4.3.1. Şərt operatoru
- •4.3.3. Seçmə (variant) operatoru
- •4.3.4. Goto operatoru
- •4.3.5. Proqramın exit operatoru ilə dayandırılması
- •Müstəqil işləmək üçün tapşırıqlar
- •Dövri alqoritmlərin proqramlaşdırılması
- •5.1. Önşərtli dövr operatoru
- •5.2. Sonşərtli dövr operatoru
- •5.3. Parametrli dövr operatoru
- •5.4. Break operatoru
- •5.5. Continue operatoru
- •Müstəqil işləmək üçün çalışmalar
- •Funksiyalar
- •6.1. Funksiyanın sintaksisi
- •6.2. Funksiyanın təyin olunması
- •6.3. Funksiyanın çağırılması
- •6.4. Prototipin yaradılması
- •6.5. Lokal dəyişənlər
- •6.6. Qlobal dəyişənlər
- •6.7. Statik lokal dəyişənlər
- •6.8. Məlumatın funksiyaya göndərilməsi
- •6.9. Funksiyadan qiymətin qaytarılması
- •Müstəqil işləmək üçün tapşırıqlar
- •Massivlər
- •7.1. Birölçülü massivlər
- •7.2. İkiölçülü massivlər
- •İkiölçülü massivin ekrana çıxarılması:
- •Müstəqil işləmək üçün tapşırıqlar
- •Simvollar və sətirlər
- •8.1. Simvol və sətirlərin sintaksisi
- •Sətirlərlə işləyən funksiyalar
- •Müstəqil işləmək üçün tapşırıqlar
- •Fayllar: fayldan daxiletmə
- •Və fayla çıxış
- •Ikilik və mətn faylları
- •Fstream standart kitabxanası
- •Fayla girişin ümumi alqoritmi
- •9.4. Faylın açılması
- •9.4.1. Yazmaq üçün faylın açılması
- •9.4.2. Oxumaq üçün faylın açılması
- •9.4.3. Faylın oxumaq və yazmaq üçün açılması
- •9.5. Faylın bağlanması
- •9.6. Fayla yazmaq və fayldan oxumaq
- •Strukturlar və siniflər
- •Strukturlar və onların elanı
- •Int height;
- •Strukturun dəyişəninin elanı
- •Strukturun inisiallaşdırılması
- •Strukturların funksiya parametri kimi ötürülməsi
- •Siniflər
- •Operatorlar
- •Operatorların üstünlük dərəcəsi
- •Sərhəd qiymətlərinin sabitləri
- •Həqiqi tiplər üçün sabitlər – float.H faylı
- •C dilinin standart funksiyalar kitabxanası
- •Hesabi funksiyalar – math.H faylı
- •Standart fayllar üçün giriş-çıxış funksiyaları- stdio.H faylı
- •Sətirlərlə işləmək üçün funksiyalar- string.H, stdlib.H faylları
- •Mətn rejimində terminalla işləmək üçün funksiyalar- conio.H faylı
- •Xüsusi funksiyalar
- •Mündəricat
Dövri alqoritmlərin proqramlaşdırılması
Proqramlşdırmada dövr dedikdə müəyyən əməllərin (operatorların) avtomatik olaraq çoxlu sayda yerinə yetirilməsi prosesi başa düşülür.
C/C++ - da dövr – hər hansı bir şərtin yalan qiymət alana qədər kodun yerinə yetirilməsini təkrarlayan strukturdur.
C/C++ dilində 3 növ dövr operatorundan istifadə olunur: önşərtli, son şərtli və parametrli.
Dövrlərin işləmə sayını bilmədikdə önşərtli və sonşərtli dövr operatorlarından istifadə etmək məqsədəuyğundur.
5.1. Önşərtli dövr operatoru
Bu operator təkrarolunan əməlləri o vaxta qədər yerinə yetirir ki, verilmiş şərt doğru olsun. O, aşağıdakı şəkildədir:
while (ifadə) operator;
və ya
while (ifadə){
operator1;
. . .
operator n;
} // end while
Məsələn,
int num=2; //başlanğıc qiymət
while (num<=1000)
num=2*num;
Əvvəlcə, num dəyişəninə 2 qiyməti mənimsədilir, dövr daxilində bu dəyişən 2-yə vurulur və ardıcıl olaraq 4, 8, 16, 32, 64, 128, 256, 512, 1024 qiymətlərini alır. num=1024 olduqda while strukturundakı (num<=1000) şərti yalan qiymət alır və dövr sona çatır. Son nəticə num=1024 olur.
while operatorunun məntiqi strukturu Şəkil 5.1 blok-sxemində təsvir olunmuşdur.
true
false
Şəkil 5.1. while dövr operatorunun blok-sxemi
5.2. Sonşərtli dövr operatoru
Bu operatorun sintaksisi belədir:
do və ya do {
{operator;} operator 1;
. . .
while (ifadə); operator n;
} while (ifadə);
Operatorun təyin etdiyi əməl ifadə yalan və ya sıfır olanadək davam etdirilir. Onun while operatorundan əsas fərqi ondan ibarətdir ki, burada dövrün gövdəsi ən azı bir dəfə yerinə yetirilir. Çünki davam şərtinin yoxlanması dövrün gövdəsini əmələ gətirən operatorlardan sonra həyata keçirilir. Aşağıdakı proqram fraqmentində 1-dən 10-a qədər ədədlərin çap olunması təsvir olunmuşdur. Burada dövrün sonunu yoxlayan şərtdə prefiks formada inkrement istifadə olunmuşdur.
int counter=1;
do {
cout<<counter<<” “;
} while (++counter<=10);
do/ while operatorunun struktur blok-sxemi Şəkil 5.2-də göstərilmişdir.
true
false
Şəkil 5.2. do/while dövr operatorunun blok-sxemi
5.3. Parametrli dövr operatoru
for dövr operatoru – dövrün təkrarolunma sayı məlum olduqda tətbiq olunur və ümumi sintaksisi aşağıdakı kimidir:
for (ifadə1; ifadə 2; ifadə 3)
{ operator1;
operator2;
. . . . . . . . . . . .
operator n;
}
ifadə 1 –dövrün dəyişəninə başlanğıc qiymət verir, şərtin qiyməti təyin ediləndən əvvəl bir dəfə yerinə yetirilir, ifadə2 dövrün davam etməsi üçün şərtdir. Əgər şərt lap başlanğıcdan yalandırsa, onda ifadə2(son ifadə) hesablanmaya da bilər.
ifadə 3 – dövrün parametrinin dəyişmə qanununu təyin edir, ancaq onun olması vacib deyil. for operatoru C/C++ - da klassik operator deyil, yəni o tam olmayan da ola bilər. for operatorunu while operatoru ilə əvəz etdikdə aşağıdakı formada təsvir oluna bilər:
ifadə 1;
while (ifadə 2) {
operator
ifadə 3;
}
for operatoruna aid qeydlər
Qeyd 1. Elə etmək olar ki, hər hansı bir parametrin qiyməti ədədi yox, həndəsi silsilə ilə artsın, məsələn,
for ( d=1; d<15; d=d*2)
printf (“ d=%. 2f.\n” , d);
Qeyd 2. for dövründə bir və ya daha çox ifadəni yazmamaq olar (lakin bu zaman “;” işarəsini buraxmaq olmaz). Ancaq bu vaxt dövrün gövdəsində onun işini sona çatdıracaq bir neçə operatoru yazmaq zəruridir. Məsələn,
a=2;
for (n=3; a<=25;) a=a*n;
//dövrün gövdəsi
for (;;)
printf (“ biz sonsuz dövr yazdiq \n”);
sonsuz sayda yerinə yetiriləcək, çünki boş şərt həmişə doğru hesab olunur.
Qeyd 3. Əgər dövrdə hər üç komponent boşdursa, onda belə dövr açıq dövr adlanır.
Qeyd 4. for dövr operatorunda cəbri ifadələrdən də istifadə etmək olar. Məsələn, fərz edək ki, x=2 və y=10. Əgər x və y dövr daxilində dəyişmirsə, onda
for (int j=x; j<=4*x*y; j+=y / x )
operatoru
for (int j=2; j<=80; j+=5)
operatoru ilə ekvivalentdir.
for operatorunun blok-sxemi while operatorunun blok-sxemi ilə eynidir. Məsələn,
for (int counter=1; counter<=10; counter++)
cout <<counter<<endl;
operatoru üçün blok-sxem
Ş
əkil
5.3.-də verilmişdir.
counter=1
false
true
counter++
Şəkil 5.3. for dövr operatorunun blok-sxemi
Misal 5.1. Y=x sinx funksiyasının qiymətini [0, pi] parçasında pi/20 addımı ilə hesablamalı.
#include <stdio.h>
#include <math.h>
#include <conio.h>
main() {
double x, dx = M_PI/20;
printf ("y=x*sin(x)\n x y\n --------------\n");
for (x=0; x<=M_PI; x+=dx)
printf("\n%7.3f | %7.3f " ,x, x*sin(x));
getch();
return 0;
}
Programın icrasından sonra aşağıdakı nəticələr alınır:
Misal 5.2. ‘A’– dan ‘Z’-ə qədər dəyişən simvol parametrinin qiymətini çap etməli.
#include <stdio.h>
main()
{ char simvol;
printf ( "elifbani cap etmeli\n");
simvol ='A';
while(simvol <='Z')
{ printf ("%c ", simvol);
simvol ++; }
getch();
return 0;
}
Misal 5.3. Yuxarıdakı misalı sonşərtli dövr opratoru ilə yazaq:
#include <stdio.h>
main()
{ char simvol;
printf("elifba\n ");
simvol='A';
do{
simvol++; printf("%c ",simvol-1);
} while(simvol<='Z');
getch();
return 0;
}
Misal 5.4. Vurma cədvəli (iç - içə dövrlər).
#include<stdio.h>
void main()
{ int i, j;
for (i=1; i<=10; i++) {
for (j =1; j<=10; j++)
printf ("%4.0d",i*j);
printf("\n");
}
getch();
}
