- •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
6.7. Statik lokal dəyişənlər
İndiyə qədər dəyişənin mövcudolma vaxtı onun görünmə oblastı ilə təyin olunurdu. Lokal dəyişənin görünmə oblastı onun təyin olunduğu funksiya ilə məhdudlanırdı, varlıq vaxtı isə funksiya sona çatdıqda sona çatırdı. Qlobal dəyişən üçün görünmə oblastı bütün proqrama genişləndirilir, dəyişənin varlıq şərti isə proqram sona çatmamış qurtarmırdı.
Statik lokal dəyişən isə belə deyil. O, lokal dəyişənin görünmə oblastına və qlobal dəyişənin varlıq vaxtına malik olur. Statik lokal dəyişən qlobal dəyişən kimi bütün funksiyalar üzərində deyil, hər bir lokal dəyişən kimi funksiya daxilində elan olunur.
Statik və statik olmayan lokal dəyişənlərin elan olunmasında fərq ondadır ki, statik lokal dəyişən static xidməti sözü ilə adətən başlanğıc qiymətlə elan olunur.
Beləliklə, yuxarıdakı proqramda
int times;
elanı əvəzinə
static int times = 0;
elanı yazılacaq.
6.8. Məlumatın funksiyaya göndərilməsi
Deyildiyi kimi, funksiyanın başlanğıcında onun adından sonra gələn mötərizədə onun parametrləri yazılır. Parametrlər – funksiyaya onun qarşısında qoyulan məsələni yerinə yetirmək üçün verilən məlumatdır.
Parametrlərin ötürülməsinin iki üsuluna baxaq: qiymətə görə və müraciətə görə.
Aşağıdakı misalda çıxarılan məlumatın məzmunu printmessage funksiyası ilə parametr kimi ötürülür:
# include < …….>
# include <string>
using namespace std;
void printmessage (string);
int main()
{
string str;
cout << ”enter a string:”;
cin >> str;
printmessage(str);
return 0;
void printmessage(string s)
{
cout << ”you inputted” << s;
}
Qeyd edək ki, yuxarıdakı kodda həm prototipin, həm də funksiyanın başlığının yalnız bir parametri – string parametri var. Lakin funksiyanın prototipinin parametrində yalnız verilən parametrin tipi (string) göstərildiyi halda, funksiyanın başlığının parametrində həm verilənlərin tipi, həm də parametrin adı (string s) göstərilmişdir.
Funksiyanın prototipində verilənlərin tipindən başqa (məcburi olan), parametrin adı da ola bilər:
void printmessage (string somearg);
Lakin bu parametr fiktiv parametr adlanır, cünki o heç bir məqsəd daşımır.
Aşağıdakı kodda printmessage funksiyası çağrılır:
printmessage(str);
str – sətir dəyişəni printmessage funksiyasının parametri kimi ötürülür. Sonra str qiyməti printmessage funksiyasının başlığında parametr adı olan s sətir dəyişəni ilə ötürülür:
void printmessage(stringe s);
Daha sonra s sətir dəyişəni printmessage funksiyasının gövdəsində
cout << “you inputted”<< s;
məlumatının çıxraılması üçün istifadə olunur.
Funksiyanın başlığındakı parametrin adı funksiyanın parametrinə ötürülən dəyişənin adı ilə eyni ola bilər:
printmessage(str);
void printmessage(string str)
Hətta bu halda da main funksiyasındakı str dəyişəni printmessage funksiyasındakı dəyişəndən fərqlənir.
Yuxarıdkı misalda funksiyanın yalnız bir parametrinə baxılırdı. Lakin funksiya iki və ya daha çox parametrə də malik ola bilər.
Aşağıdakı proqramda printmessage funksiyasında iki parametr ( biri ad və digəri soyad üçün ) istifadə olunur:
#include <…. . . >
# include <string>
using namespace std;
void printmessage (string, string);
int main()
{
string name 1, name 2;
cout <<” adı daxil et:”;
cin >> name1;
cout << ”soyadı daxil et:”;
cin >> name2;
printmessage(name1, name2);
return 0;
}
void printmessage(string firstname, string lastname)
{
cout << “ Sizin adiniz-”<< firstname <<”soyadınız-”<<lastname<<end1;
}
Funksiyaların çağırılması zamanı parametrlər sırası başlıqdakı parametrlər sırası ilə eyni olmalıdır.Yuxarıdakı misalda funksiyanın çağırılması və onun başlığı aşağıdakı kimidir:
printmessage (name1, name2);
void printmessage(string firstname, string lastname)
Funksiya çağırıldıqda name1 qiyməti funksiyanın başlığındakı firstname, name2 qiyməti isə lastname dəyişəninə təqlid olunur.
İndi isə parametrlərin müraciətə əsasən ötürülməsinə baxaq.
Parametrlərin qiymətə görə ötürülməsi o vaxt əlverişlidir ki, çağırılan funksiyada onların yerini dəyişmək lazım gəlməsin. printmessage funksiyası öz parametrlərinin qiymətlərini dəyişdirmir, sadəcə olaraq onları ekrana çıxarır.
Buna baxmayaraq bəzən funksiyaya onunla ötürülən parametrin qiymətini dəyişmək lazım gəlir.
Aşağıdakı misalda double funksiyası onun ötürdüyü qiyməti iki dəfə artırmalıdır:
# include <inter>
using namespace std;
void double (int);
int main ()
{
int num;
cout <<” enter number:”;
cin >>num;
double (num);
cout <<”the number doubled in main is”<<num<<endl;
return0;
}
void double (int x)
{
cout <<”the number to double is”<<x<<end1;
x*=2;
cout<< “the number doubled in double is”<<x<<end1;
}
Buradan görünür ki, double funksiyasında onun parametrini iki dəfə artırdıqda num qiyməti dəyişmədi. main funksiyasında num qiyməti ona görə dəyişmədi ki, double funksiyasına onun surəti ötürülür. Çağırılan funksiyanın onun ötürdüyü dəyişəni main funksiyasında dəyişməsi üçün həmin dəyişən müraciətə görə ötürülməlidir. Çağırılan funksiyadakı dəyişən müraciət tipli dəyişən adlanır. Müraciət tipli dəyişən – dəyişənin main funksiyasındakı surəti deyil, təxəllüsüdür.
Aşağıdakı funksiyada dəyişənin müraciətə əsasən ikiqat artırılmaqla ötürülməsi göstərilir:
void double (int &x)
{ cout <<”the number double is”<<x<<end1;
x*=2;
cout<<the number;
Dəyişənin müraciətə əsasən ikiqat artırılmaqla ötürülməsi üçün əvvəlki proqramda double funksiyasının prototip və başlığı
void double(int);
void double(int x)
əvəzinə
void double(int &);
void double(int &x)
kimi yazılmalıdır.
Qeyd edək ki, müraciətə və ya qiymətə görə bir neçə qiyməti də ötürmək olar. Hətta bir neçə qiyməti müraciətə , digərlərini isə qiymətə görə ötürmək olar. Müraciətə görə o qiymətlər ötürülür ki, onları dəyişmək lazım gəlmir, qiymətə görə isə dəyişilməli olan qiymətlər ötürülür.
Aşağıdakı proqramda AddNumbers funksiyasının üç parametri var: ilk iki parametr - cəmlənən ədədlərdir, onlar qiymətə görə ötürülürlər, üçüncü parametr – iki ədədin cəmidir, o, müraciətə görə ötürülür və onun qiyməti çagırılan funksiya ilə dəyişdirilir.
# include <inter>
using namespace std;
void AddNumbers (int, int ,int &);
int main()
{
int firstnum, secondnum, sum=0;
cout <<”Birinci ededi daxil et:”;
cin >>firstnum;
cout<<”Ikinci ededi daxil et:”;
cin>>secondnum;
AddNumbers(firstnum, secondnum, sum);
cout <<firstnum<<”+”<<secondnum<<”=”<<sum;
return 0;
}
void AddNumbers(int x,int y,int& z)
{
z=x+y;
}
