
- •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
- •3.7. Tiplərin çevrilməsi
- •Müstəqil işləmək üçün tapşırıqlar
- •4. Xətti və budaqlanan alqoritmlərin proqramlaşdırılması
- •4.1. Xətti alqoritmlərin proqramlaşdırılması
- •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
Int height;
};
kod fraqmentində adı və boyu ilə xarakterizə olunan struktur elan olunub. Burada struct – xidməti sözdür və elan onunla başlayır. Telebe – sttrukturun adıdır (ixtiyari seçilir). Açılan və bağlanan sistem mötərizələri strukturun gövdəsini təyin edir. Lakin burada funksiyadan fərqli olaraq bağlanan mötərizədən sonra “ ; “ işarəsi qoyulur.
Bir-biri ilə əlaqəli dəyişənlər stukturun gövdəsində elan olunurlar və hər bir belə dəyişən nümunə dəyişəni adlanır. Strukturda nümunənin çoxlu sayda dəyişənləri ola bilər. Həmçinin bir strukturun dəyişəni digər struktur nümunəsinin dəyişəni ola bilər.
Strukturu kodun istənilən yerində elan etmək olar. Lakin şərtləşməyə əsasən, o adətən preprosessorun direktivindən sonra aşagıdakı kimi elan olunur:
Misal 10.1.
#include <iostream>
#include <string>
using namespace std;
struct Telebe {
string name;
int height;
};
int main()
{
// kod
return 0;
}
Qeyd. Strukturu elan edərkən biz dəyişən elan etmirik, biz verilənin tipini elan edirik. Verilənin tipini qlobal elan edərək, biz bu tipi proqramın istənilən yerində istifadə edə bilərik. Dəyişənləri qlobal etməyə lazım olmayan səbəblər verilənlərin tipinin elan olunmasına uyğun gəlmir. Məsələn, Telebe strukturuna qiymət mənimsətmək olmaz, lakin int tipli dəyişənə qiymət mənimsətmək olar. Bunun əvəzinə strukturun dəyişənlərini elan etmək lazımdır.
Strukturun dəyişəninin elanı
“Adam” ümumiyyətlə - Person strukturudur. Hər bir ayrıca götürülmüş adam Person strukturunun nümunəsidir, ona görə də hər bir belə nümunə Person struktur tipinin dəyişəni kimi elan olunmalıdır.
Struktur tipinin dəyişəni standart tiplər kimi elan olunur. Məsələn, Person P1;
Hətta Person tip bir neçə dəyişəni də elan etmək olar;
Person P1, P2, P3;
Bunun üçün Person tip dəyişənlər massivi də elan etmək olar:
Person[50];
Struktur tip dəyişəni proqramın istənilən yerində elan etmək olar, onun görünmə oblastı və varlıq zamanı qaydası tamqiymətli və kəsr dəyişənlərə və ya başqa dəyişənlərə olan təsirlə eynidir.
Struktur tip dəyişənin elanı onun qiymətini nümunənin dəyişəninə mənimsətmir. Nümunənin dəyişəninə struktur dəyişəninin adına görə müraciət etmək olar.
Aşağıdakı kod “Akademiya” qiymətini P1 strukturunun name nümunəsinin dəyişəninə mənimsədir:
P1.name=”Akademiya”;
Bu qayda ilə nümunənin dəyişəninin qiymətini ekrana çıxarmaq olar:
cout<<”The name of P1 is”<<P1.name;
Strukturun dəyişəninin adının əvəzinə strukturun adının istifadə olunması yolverilməzdir:
Person.name=Akademiya;//bu işləməyəcək!
Strukturun inisiallaşdırılması
Strukturu iki üsulla inisiallaşdırmaq olar: 1) inisiallaşdırma siyahısından istifadə etməklə; 2) konstruktorla.
Aşağıdakı kod fraqmentində inisiallaşdırma siyahısından istifadə etməklə strukturun necə inisiallaşdırılması verilir:
Person P1={“Telebe”, 111};
Bu tamamilə massivin inisiallaşdırılmasına analojidir. Lakin burada mühüm fərq ondan ibarətdir ki, massivin bütün elementləri eyni tip olduqları halda, struktur nümunəsinin dəyişənləri müxtəlif tip ola bilərlər. Ona görə də inisiallaşdırmada ardıcıllıq mühüm rol oynayır. Məsələn,
Person P1={111, “Telebe”}
kodu səhvdir, çünki, struktur nümunəsinin birinci dəyişəni c – sətirdir, ona görə də ona tam qiymət mənimsətmək olmaz.
Konstruktor – obyektə istinad edərkən avtomatik çağrılan funksiyadır.
Konstruktorlar üç növ olurlar:
Susmaya görə konstruktorlar,
Parametrsiz konstruktorlar,
Parametrli konstruktorlar.
Aşağıdakı proqramda susmaya görə konstruktorun istifadə olunması göstərilir:
Misal 10.2.
#include <iostream>
#include <string>
using namespace std;
struct Person {
string name;
int height;
};
int main()
{
Person P1;
cout<<"The person's name is "<<P1.name<<" and height is "<<P1.height<<endl;
return 0;
}
Burada susmaya görə konstruktor Person nümunəsinin yaratdığı
Person P1;
operatoru vasitəsilə çağrılır. Nəticədə alınır ki, Person nümunəsi susmaya görə konstruktorla yaradılmışdır. Bununla belə, nümunənin dəyişənlərinə qiymət mənimsədilməyib. Ona görə də nümunənin name dəyişəninin adı boş sətir, nümunənin dəyişəninin qiyməti isə “zibil” qiymətdir.
Parametrsiz konstruktorlar – susmaya görə konstruktordan fərqli olaraq nümunənin dəyişənlərinə susmaya görə qiymət mənimsədirlər. Aşağıdakı kodda Person strukturunun gövdəsinə parametrsiz konstruktor əlavə olunması göstərilmişdir:
Misal 10.3.
struct Person {
string name;
int height;
P
erson
()
{
name=”no name assigned”; konstruktor
height= - 1;
}
};
Konstruktorun adı strukturun özünün adı kimi olur. Bundan başqa, konstruktorda qaytarılan qiymətlər yoxdur. Bu parametrsiz konstruktor da susmaya görə konstruktor kimi Person P1; operatoru ilə çağrılır. Parametrsiz konstruktor çağrılmasına baxmayaraq, P1 – dən sonra boş mötərizə yoxdur, ona görə ki, bu funksiyanın çağrılması deyil, yalnız dəyişənin elanıdır.
Parametrli konstruktorlar. Susmaya görə konstruktorlardan parametrsiz konstruktorların elanı daha yaxşıdır, ona görə ki, nümunənin dəyişənlərinə indi susmaya görə qiymət mənimsədilirlər. Lakin əgər proqramın işləməsi zamanı inisiallaşdırsaq vəziyyəti daha da yaxşılaşdırmaq olar. Bu isə o halda mümkün olur ki, konstruktora nümunənin dəyişənlərini inisiallaşdırmaq üçün istifadə olunan parametrlər əlavə olunsun. Məsələn,
Person(string s, int h)
{
name=s;
height=h;
}
Iki parametrli konstruktor aşağıdakı Person nümunəsinin elan olunması ilə çağrılır:
Person P1(strName, centimeters);
Burada mötərizələr lazımdır, çünki parametrlər var. Parametrlər konstruktorun onları gözlədiyi ardıcıllıqda dayanmalıdırlar. Məsələn, əgər konstruktor birinci parametrin sətir, ikincinin isə tam ədəd olduğunu gözləyirsə, onda birinci parametri tam ədəd, ikincisi isə sətir olan Person nümunəsi elan olunarsa nəticə səhv olacaq.