- •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
Fayla girişin ümumi alqoritmi
Proqram fayla oxumaq, yazmaq və s. məqsədlə müraciət etdikdə bunu aşağıdakı alqoritm üzrə yerinə yetirir.
Əvvəlcə faylı açmaq lazımdır. Beləliklə, proqramda fayl və axın obyekti arasında aşağıdakı əlaqə marşrutu yaranacaq: fstream / ofstream və ya ifstream (faylın açılması ücün istifadə olunur).
Sonra proqram fayldan oxuyur və ya fayla yazır (və ya hamısı birlikdə).
Nəhayət, proqram faylı bağlayır. Proqramda fayl və axın obyekti arasında əlaqə marşrutunun saxlanması sistem resurslarını tələb edir, faylın bağlanması isə əgər bu resurslar lazım deyilsə, onları azad edir. Buna görə də əgər əvvəlki müraciət zamanı fayl bağlanmayıbsa, onda ona yenidən müraciət etmək olmaz.
9.4. Faylın açılması
9.4.1. Yazmaq üçün faylın açılması
Yazmaq üçün fayl açarkən ya ofstream, ya da fstream obyektindən istifadə etmək lazımdır. ifstream obyektini bu məqsəd üçün istifadə etmək olmaz, ona görə ki, o, yalnız fayldan oxumaq üçün istifadə olunur.
ofstream və fstream obyektləri faylı aşağıdakı iki üsuldan biri ilə aça bilərlər. Birincisi ad altında funksiya – həddin istifadəsindən ibarətdir (open). Ikincisi isə konstruktorun tətbiqindən ibarətdir.
ofstream və fstream obyektlərində open funksiya – həddi istifadə olunur, onun birinci parametri – açılan faylın adı və ona olan yoldur. Ikinci parametr ofstream və ya fstream obyektlərindən hansının open funksiya–həddini çağırmasından və susmaya görə rejimdən fərqli olan rejimdə fayla müraciət etmə istəyindən asılıdır.
Yazmaq üçün açılan faylın artıq mövcud olması vacib deyil. Əgər o, mövcud deyilsə, onda onu yazmaq üçün açmağa cəhd edəndə baxılan yolda göstərilən adla o, avtomatik olaraq açılacaq. Lakin faylın mövcud olub – olmamasından asılı olaraq açılan faylın adı və yolu hökmən göstərilməlidir. Bu məlumatı isə faylın ya nisbi yolu, ya da mütləq yolu şəklində vermək olar.
Nisbi yol – bu bizim proqramın yerləşməsinə nəzərən olan yoldur. Məsələn, aşağıdakı tələbə.dat faylı üçün açılan ifadə proqramla eyni kataloqda yerləşir:
ofstream outfile
outfile . open(“telebe. dat”);
Mütləq yol – diskin hərfi ilə başlayan yoldur və faylın özünə qədər hər bir kataloq və altkataloqu özündə saxlayır. Məsələn, əgər telebe.dat faylı C diskində yerləşən College kataloqunun Qrup altkataloqunda yerləşirsə, onda o yazmaq üçün mütləq yolun köməyilə aşağıdakı kimi açılacaq:
ofstream outfile;
outfile.open (“c:\\ college \\ qrup \\ telebe.dat”);
Hansı yoldan istifadə olunursa olunsun, open funksiyasının parametrinin sətir literal olması vacib deyil. O, sətir dəyişən də ola bilər. Məsələn,
ofstream outfile;
char filename[80];
cout << “enter name of file:”;
cin >> filename;
outfile . open (filename);
Qeyd. Əgər proqram müxtəlif kompüterlərdə istifadə olunursa, onda nisbi yol seçmək daha əlverişlidir.
Open funksiyasının istifadəsində faylın hansı rejimdə açılması da mühüm rol oynayır. Ilk növbədə faylın nə üçün açılması seçilir – oxumaq, yazmaq və s. Lakin seçimin başqa imkanları da mövcuddur, onlardan hər biri faylın açılması rejiminin “flaqı”adlanır (cədvəl 9.1).
Cədvəl 9.1.
Faylın rejimi |
Təsviri |
ios::app |
Birləşmə rejimi. Faylın məzmunu saxlanılır və bütün çıxış faylın sonuna yazılır. |
ios:: ate |
Əgər fayl artıq mövcuddursa, proqram onun sonuna ötürülür. Çıxış faylın istənilən yerində yazıla bilər. Bu flaq əsasən ikilik rejimdə istifadə olunur. |
ios:: binary |
Ikilik rejim. Məlumat fayla mətn şəklində deyil, ikilik formatda yazılır. |
ios:: in |
Daxiletmə rejimi. Məlumat fayldan oxunur. Əgər fayl mövcud deyilsə, o, yaradılmayacaq. |
ios:: out |
Çıxış rejimi. Informasiya fayla yazılır. Susmaya görə, faylın məzmunu yenidən yazılır. |
ios:: trunc |
Əgər fayl artıq mövcuddursa, onun məzmunu silinəcək və ya yenidən yazılacaq. Bu rejim susmaya görə ios:: out rejimində seçilmişdir. |
Əgər faylın açılması üçün ofstream obyekti istifadə olunursa, onda heç bir faylın açılma rejiminin flaqına ehtiyac yoxdur. Çünki ofstream obyekti yalnız yazmaq üçün faylın açılmasına xidmət edir və faylın oxumaq üçün açılmasında tətbiq oluna bilməz.
Buna baxmayaraq, əgər susmaya görə faylın ikilik rejimdə deyil, mətn rejimində açılması və verilənlərin mövcud fayla əlavə edilməyib yenidən yazılması bizi qane etmirsə, onda ofstream obyektinin open funksiyası ilə birlikdə faylın bir və ya bir neçə rejim flaqını istifadə etmək olar.
Beləliklə, faylı açarkən iki və daha çox flaqı uzlaşdırmaq olar. Məsələn, aşağıdakı operatorlar faylı ikilik rejimdə açır, sonra isə onları yenidən yazmaq əvəzinə verilənləri birləşdirirlər (bitlər üzrə “və ya “(|) operatoru);
ofstream outfile;
outfile . open (“telebe . dat”, ios::binary | ios::app);
Əgər faylın açılması üçün ofstream obyekti istifadə olunursa, onda fayl rejimi flaqlarını təsvir etmək lazım deyil, əgər faylın açılması üçün fstream obyekti tətbiq olunursa, onda hökmən bunu etmək lazımdır. Bu halda ofstream obyekti oxumaq üçün yox, yalnız yazmaq üçün istifadə oluna bilər, fstream obyekti isə hər iki məqsədin qazanılmasına xidmət edir. Ona görə də əvvəlcədən dəqiq müəyyənləşdirmək lazımdır ki, open funksiyası hansı məqsədlə tətbiq edilir: yazmaq üçün, oxumaq üçün və ya birdən hamısı üçün.
Aşağıdakı proqram fraqmentində fstream obyektinin open funksiyası faylı yalnız yazmaq üçün açır:
fstream afile;
afile . open (“telebe . dat”, ios::out);
Yazmaq üçün faylı açarkən fstream və ya ofstream konstruktorlarını da istifadə etmək olar. Konstruktor – obyektin nüsxəsini yaratmaq istəyərkən avtomatik çağrılan funksiyadır.
Obyektin nümunəsi verilənlərin int sadə tipli dəyişəninə oxşayır. Məsələn, aşağıdakı operator age adlı tam ədəd nümunəsinin yaradılması ola bilər:
int age;
Aşağıdakı operator isə afile adlı fstream nümunəsi yaradır:
fstream afile;
Obyektin konstruktorları həddən artıq yüklənə bilərlər, yəni bir obyekt üçün parametrsiz konstruktor , bir parametrli, iki parametrli konstruktor və s. yaradıla bilər. Məsələn, yuxarıdakı operatorda fstream afile – fstream obyektinin parametrsiz konstruktorudur.
Aşağıdakı operator ofstream obyektinin bir parametrli konstruktorunu çağırır:
ofstream outfile(“telebe . dat”, ios::out);
Növbəti operator fstream nümunəsi yaratmaqla və telebe. dat faylını çıxış üçün açmaqla, fstream obyektinin iki parametrli konstruktorunu çağırır.
fstream afile(“telebe . dat”, ios::out);
Öz-özlüyündə bir operatorda ofstream (və ya fstream) dəyişəninin elan olunması, sonra isə ikinci operatorda open funksiya –həddinin çağırılması sadə dəyişənin bir operatorda elan olunması və ona ikinci operatorda qiymət mənimsədilməsi ilə analojidir. Məsələn,
int age;
age=54;
Bir və ya iki parametrli ofstream (və ya fstream) konstruktorunun istifadə olunması sadə dəyişənin adlandırılmasına ekvivalentdir:
int age=54;
Misal 9.1. Faylın yaradılmasına aid proqram.
Proqram Dev-C++ da işlənilmişdir. Bunun üçün File menyusundan New->Project… altmenyusunu seçib, açılan pəncərədə şəkildəki kimi Console Application və C++Project qeyd edib OK düyməsini sıxmaq lazımdır.
Qeyd: Əgər proqram standart C–də yazılmışdırsa, onda C Poject –i aktivləşdirmək lazımdır.
Bundan sonra, layihəyə ad verilməsi tələb olunur:
Yeni ad verib Сохранить düyməsini sıxmaq lazımdır. Indi isə proqramın mətnini yığmaq lazımdır:
#include <stdlib.h>
#include <iostream.h>
#include <fstream.h>
using namespace std;
int main()
{ ofstream outtelebefile("telebe.dat",ios::out);
if(!outtelebefile){
cerr<<"fayli acmaq mumkun deyil"<<endl;
exit(1);
}
cout<<"kodu, adi ve toplanan bali daxil et"<<endl<<">>";
int account;
char name[10];
float bal;
while(cin>>account>>name>>bal){
outtelebefile<<account<<' '
<<name<<' '<<bal<<endl;
cout<<">>";
}
getch();
return 0;
}
Proqramda ofstream outtelebefile("telebe.dat",ios::out) elanı çıxış üçün açılan telebe.dat faylı ilə əlaqəli və ofstream sinfindən outtelebefile obyektini yaradır. Proqramın mətnini yığıb qurtardıqdan sonra Execute menyusundan Compile & Run altmenyusunu sıxmaqla açılmış pəncərədə verilənləri daxil etmək lazımdır. Faylın sonu üçün isə Ctrl + Z düymələrini birgə sıxmaq lazımdır. Alınmış nəticə aşağıdakı kimi olacaq:
