0% found this document useful (0 votes)
4 views26 pages

CPPL11 Files

Uploaded by

engineeringengtr
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views26 pages

CPPL11 Files

Uploaded by

engineeringengtr
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

BİL-142 Bilgisayar Programlama II

(C/C++)

Hazırlayan: [Link] Akcayol


Gazi Üniversitesi
Bilgisayar Mühendisliği Bölümü

Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

1
Giriş
 Değişkenler ve diziler hafızada geçici olarak saklanır.
 Dosyalar verilerin sürekli saklanması için kullanılır.
 Bilgisayarlar verileri ikincil depolama cihazları olarak
bilinen manyetik disklerde, optik disklerde veya flash
memory gibi kalıcı hafıza birimlerinde saklar.

Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

2
Data Hiyerarşisi
 Bilgisayarın işlediği tüm veriler en sonunda 1 ve
0’lara dönüşür.
 Bilgisayarın desteklediği en küçük veri parçasına bit
(binary digit) denir.
 8 bit bir byte oluşturur.
 Karakterler bit gruplarıyla gösterilir.
 Alanlar (fields) karakter gruplarıyla gösterilir.
 Bilgisayardaki veriler arasında hiyerarşik bir yapı
vardır.
 Bir kayıt (record) birden fazla alandan oluşabilir.
 Bir dosya (file) ise birden fazla kayıttan oluşabilir.
5

Data Hiyerarşisi
 Örnek veri hiyerarşisi

3
Data Hiyerarşisi
 İstenen bir kaydı dosyadan almak için record key
kullanılır.
 Record key bir kaydı diğer tüm kayıtlardan ayıran
alandır.
 Dosya içinde kayıtları organize etmenin farklı yolları
vardır. Bunların arasında yaygın kullanılanlardan
birisi sıralı dosya (sequential file) yapısıdır.
 Veritabanı (Database) birden fazla dosyadan
oluşur.
 Veritabanını oluşturan ve yöneten programlara
Veritabanı Yönetim Sistemi (DBMS-Database
Management Systems) denir.
7

Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

4
Files (Dosyalar) ve Streams (Kaynaklar)
 C++ her dosyayı byte serileri olarak görür.
 Her dosya, bir dosya sonu işaretçisi (end-of-file
marker) ile sonlanır.
 Bir dosya açıldığında bir nesne oluşturulur ve kaynak
bu nesneyle ilişkilendirilir.
 Bu nesneyle ilişkilendirilen kaynak (stream) program
ile dosya veya cihaz arasında bir iletişim kanalı
oluşturur.
 Örneğin cin nesnesi klavyeden girişleri okur, cout
nesnesi ekrana veri gönderir.

Files (Dosyalar) ve Streams (Kaynaklar)


 C++ ile dosya işlemleri yapmak için <iostream>
ve <fstream> dosyalarını include etmek gerekir.
 <fstream> başlık dosyası dosya giriş ve çıkış
işlemleri için gerekli tanımlamaları içerir.

10

5
Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

Sıralı Dosya Oluşturma


 C++ dosya yapısıyla ilgili kısıtlamaya sahip değildir.
 Programcı dosya yapısını kendi istediği gibi
oluşturabilir.
 Kayıt (record) yaklaşımı C++ dosyalarında tanımlı
değildir.
 Programcının kayıt yapısını ve ona uygun yazma ve
okuma işlemlerini oluşturması gerekir.

12

6
Sıralı Dosya Oluşturma

13

Sıralı Dosya Oluşturma

14

7
Sıralı Dosya Oluşturma
 Veri girişi ve Notepad ile görüntülenen dosya içeriği

15

Sıralı Dosya Oluşturma


 Dosyalar ifstream, ofstream, fstream ile açılır.
 ofstream dosya sadece yazmak için açılmıştır.
 ofstream constructor’ına iki parametre
gönderilmiştir. Dosya adı ve dosya açma modu.
 ios::out ile dosya varsa truncate edilerek
boşaltılır, yoksa yeniden açılır.

16

8
Sıralı Dosya Oluşturma
 Satır 19’da outClientFile nesnesi “[Link]”
dosyasıyla ilişkilendirilmiştir.
 ofstream outClientFile(“[Link]”);
ile default olarak yazmak için açılır.
 ofstream outClientFile; ile belirli bir dosya
açılmaz dosya daha sonra belirlenir.
 Dosya açma işlemi başarılı olursa outClientFile
true, değilse false döndürür.

17

Sıralı Dosya Oluşturma


 Satır 22-26 dosya açma işleminin başarılı olup
olmadığına bakar.
 Satır 36’da aralarında boşlukla girilen değerler
sırasıyla değişkenlere aktarılır.
 While döngüsünden Windows’ta ctrl+z, Unix’te ctrl-d
ile çıkılır.
 Programdan çıkınca outClientFile nesnesinin
destructor’ı çağrılır ve açılan “[Link]” dosyası
kapatılır.
 İstenirse [Link](); ile dosya
doğrudan kapatılabilir.
 Dosya kullanımı bitmişse kapatılması gerekir.
18

9
Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

Sıralı Dosyadan Data Okuma


 Bir dosya ifstream nesnesiyle giriş yapmak
amacıyla olarak açılır.
 ifstream constructor’ı dosya adı ve dosya açma
modunu alır.
 Bir dosyanın içeriği değişmeyecekse açma modu
ios::in olarak girilmelidir.

20

10
Sıralı Dosyadan Data Okuma

21

Sıralı Dosyadan Data Okuma

22

11
Sıralı Dosyadan Data Okuma
 Ekran çıkışı ve Notepad ile görüntülenen dosya içeriği

23

Sıralı Dosyadan Data Okuma


 ifstream inClientFile(“[Link]”);
ile dosya default olarak okumak için açılır.
 !inClientFile ile dosyanın sorunsuz açıldığı
kontrol edilir.
 Satır 48’de her iterasyonda dosyadan bir kayıt (satır)
okunur.
 Dosya istream ve ostream nesneleri dosya
pozisyon işaretçisine sahiptir.
 istream için seekg (seek get), ostream için
seekp (seek put).
 ile dosya başına gidilir.
24

12
Sıralı Dosyadan Data Okuma
 Dosya üzerinde yeniden konumlanmak için ikinci bir
parametre daha girilebilir. Bu parametre yön bildirir.

 ios::cur bulunulan noktayı, ios::beg


başlangıcı ve ios::end dosya sonunu gösterir.
25

Sıralı Dosyadan Data Okuma


 Dosya üzerinde bulunulan pozisyonu almak için
tellg ve tellp kullanılır.
 Aşağıdaki kod long integer olarak bulunulan noktayı
verir.

26

13
Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

Sıralı Dosyaları Güncelleme


 Sıralı dosyalarda data güncelleme işlemi sırasında
diğer datalarda bozulma riski vardır.
 Yeni bilginin boyutu öncekinden büyüksek sonraki
bilgileri etkileyecektir.
 Aşağıdaki kayıtta il adını değiştirmek istersek
1000 Bursa 2300
1000 Istanbul 2300
yeni il adı devam eden bilginin üzerine taşacaktır.
 Bu tür hataları önlemek için tüm kayıtlar sabit
uzunlukta alınabilir.

28

14
Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

Random-Access (Rastgele Erişimli) File


 Sıralı erişimli dosyalar belirli bir kayda hızlı ulaşım
gereken uygulamalarda uygun değildir.
 Bir bilgiye doğrudan erişim Random Access File ile
mümkündür.
 Random Access File bir bilgiye doğrudan erişir diğer
kayıtlara bakmasına gerek yoktur.
 Bütün kayıtlar için aynı ve sabit boyut kullanmak
arama işlemlerini kolaylaştırır.

30

15
Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

Rastgele Erişimli Dosya Oluşturma


 ostream sınıfının write üyesi sabit sayıda byte’ı hafızada
belirlenen yere yazar.
 Eğer bir dosyayla ilişkilendirilirse dosyadaki pozisyondan
itibaren yazar.
 istream sınıfının read üyesi sabit sayıda byte’ı hafızadan
belirlenen yerden okur.
 Eğer bir dosyayla ilişkilendirilirse dosyadaki pozisyondan
itibaren okur.
 outfile << number; ile integer number dosyaya yazılır.
 Rastgele erişimli dosyalarda byte yazmak için
[Link](reinterpret_cast<const
char*>(&number), sizeof(number));
kullanılır.
32

16
Rastgele Erişimli Dosya Oluşturma

33

Rastgele Erişimli Dosya Oluşturma

34

17
Rastgele Erişimli Dosya Oluşturma

35

Rastgele Erişimli Dosya Oluşturma

36

18
Rastgele Erişimli Dosya Oluşturma

37

Rastgele Erişimli Dosya Oluşturma

38

19
Rastgele Erişimli Dosya Oluşturma

39

Rastgele Erişimli Dosya Oluşturma


 Fig. 17.10 ve Fig.17.11 kayıt formatını
belirler(ClientData).
 Program 100 kaydı otomatik olarak oluşturup yazar.
 Program her kaydın sabit boyutta olmasını sağlar.
 Bunun için setLastName ve setFirstName
fonksiyonları kullanılır.
 ios::binary ile açılan dosyanın binary formatta
olduğu bildirilir.

40

20
Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

Rastgele Erişimli Dosyaya Rastgele Veri Yazma


 seekp ile istenen yere konumlanılır ve write ile
veri yazılabilir.

42

21
Rastgele Erişimli Dosyaya Rastgele Veri Yazma

43

Rastgele Erişimli Dosyaya Rastgele Veri Yazma

44

22
Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Veri girişi ekranı ve Notepad ile dosya içeriği

45

Rastgele Erişimli Dosyaya Rastgele Veri Yazma


 Programda satır 59-60 ile dosyada konumlanılıyor.

 Tüm kayıtlar accountNumber değerine göre


yerleştiriliyor.
 Programda satır 28’de dosya ios::in, ios::out,
ios::binary olarak birden fazla modla açıldı.

46

23
Konular
 Giriş
 Data Hiyerarşisi
 Files (Dosyalar) ve Streams (Kaynaklar)
 Sıralı Dosya Oluşturma
 Sıralı Dosyadan Data Okuma
 Sıralı Dosyaları Güncelleme
 Random-Access (Rastgele Erişimli) File
 Rastgele Erişimli Dosya Oluşturma
 Rastgele Erişimli Dosyaya Rastgele Veri Yazma
 Rastgele Erişimli Dosyadan Sıralı Okuma

Rastgele Erişimli Dosyadan Sıralı Okuma


 istream sınıfındaki read fonksiyonu belirlenen
kaynakta bulunulan pozisyondan belirlenen sayıda
byte okur.
 Eğer kaynak bir dosya ise konumlanılan yerden
belirlenen boyutta veri okunur.

48

24
Rastgele Erişimli Dosyadan Sıralı Okuma

49

Rastgele Erişimli Dosyadan Sıralı Okuma

50

25
Rastgele Erişimli Dosyadan Sıralı Okuma

51

Rastgele Erişimli Dosyadan Sıralı Okuma


 Programda satır 57-58, sizeof(ClientData)
boyutunda okuma yapar.
 Satır 50’deki ![Link]() ifadesi dosya
sonunu kontrol eder.

52

26

You might also like