PROGRAMLAMA Dosyalama İşlemleri

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 11 Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama
Advertisements

String fonksiyonları:
STRİNG FONKSİYONLARI.
Dosya ve Klasör İşlemleri
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Internet Tabanlı Programlama Dr. Erman Yukselturk
Nesneye Yönelik Programlama
switch - case Yapısı Döngü Yapıları
String Diziler(Katarlar)
Dosyaya Bilgi Yazmak ve Dosyadan Okumak
Bölüm 2: Program Denetimi
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
MATLAB’ de Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
PHP-Dosya ve Dizinler Internet Tabanlı Programlama Dr. Erman Yukselturk.
DOSYA İŞLEMLERİ.
Bilgisayar Programlama Güz 2011
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 7: Dosyalama İşlemleri Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
8. VİSUAL BASİC İLE TEMEL DOSYALAMA İŞLEMLERİ
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Paralel Programlamaya Giriş
FONKSİYONLAR.
DOSYA İŞLEMLERİ.
PHP Dosya İşlemleri.
Fscanf fonksiyonu fscanf () : Dosyadan bilgiyi okumak ve değişkenlere aktarmak için kullanılır. int fscanf(FILE *dosya, char* format, değişken adres listesi);
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Algoritma & Programlama
Diziler (Arrays).
Temel Giriş/Çıkış Fonksiyonları
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Chapter 11 – Dosya İşleme Outline 11.1Giriş 11.2Veri.
C++ Ders Notları 3.Ders (String İşlemleri)
STRING‘LER Karakter Kütüphanesi Fonksiyonları
Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri Dizgi Çıktı İşlemleri Dizgi Fonksiyonları Karakter Fonksiyonları Gösterge Dizgileri.
Excel’de VBA programlama (Visual Basic Application) Ders 5
Bölüm 9 Kütükler (files). 1 Kütükler Metin Kütükleri (text files) –Örneğin bir metin düzenleyici ile oluşturulmuş, –İkincil saklama birimlerine kaydedilen,
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 7: Dosyalama İşlemleri Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Dosya ve Klasör İşlemleri
VERİ YAPILARI İşaretçi Nedir? Nesne Tabanlı Programlama.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
2. HAFTA 2. Hafta.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
3. HAFTA 3. Hafta.
BİLGİSAYAR programlama II
Linux İşletim Sistemi Metin Editörleri
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
Dosyalar. Örnek: stok.dat isimli bir dosyaya beyaz eşyanın ismini ve stoktaki miktarlarını kaydeden, dosyadaki bilgilerde düzeltme yapan, dosyadan bilgi.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 10: Dosyalama İşlemleri
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 7: Dosyalama İşlemleri
STRING FONKSİYONLARI Dim ders As String
C’de Fonsiyonlar Aslı Ergün.
BİLGİSAYAR PROGRAMLAMA Ders 10: Dosyalama İşlemleri
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
Bilgisayar Programlamasına ve Veri Analizine Giriş
YAPISAL PROGRAMLAMA Hafta-6
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
YAPISAL PROGRAMLAMA Hafta-7
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
NİŞANTAŞI ÜNİVERSİTESİ
GRAFİK Basit grafik işlemlerinin gerçekleştirilmesi
Bölüm 11 Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama
C ile Programlamaya Giriş
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

PROGRAMLAMA Dosyalama İşlemleri Doç. Dr. Murat ÇAKIROĞLU Sakarya Üniversitesi Mekatronik Mühendisliği

Dosyalama İşlemleri Programlama dilleri dosya oluşturma, dosya silme, dosyadan bilgi okuma ve dosyaya bilgi ekleme gibi temel işlevler için gerekli komutları içerirler. Programlama dilinde klasik dosyalama yöntemleri sınıflandırılırlar: Saklama türüne göre: İkili (binary) ve metin (text) Kayıtlara erişim türüne göre: Sıralı (sequential) ve Rastgele (random)

Dosya Değişkeni Programlarda dosya işlemleri yapabilmek için bir dosya değişkeni işaretci (pointer) kullanılarak aşağıdaki gibi tanımlanır.   FILE *dosyaAdi ; // C-dili fstream dosyaAdi; //C++ (#include <fstream.h>) Bilgisayar programı ile işletim sistemi dosyası arasında veri taşıyan bu değişken dosya açma, dosya kapatma, dosyaya veri ekleme ve dosyadan veri okuma işlemlerinde kullanılır.

Dosyalama İşlemleri Bu işlemleri C-dilinde şöyle ifade ederiz: Dosyalarla ilgili yapılan işlemlerde aşağıdaki adımlar takip edilir; Dosyanın açılması Dosya ile ilgili işlem yapılması ( kayıt okuma, yazma, düzeltme, silme gibi) Dosyanın kapatılması Bu işlemleri C-dilinde şöyle ifade ederiz: FILE *dosya; /* dosya göstericisi */ dosya = fopen(const char dosya_adı, const char açma_amacımız); ... dosya işlemleri fclose(dosya); ifstream dosya; // ofstream dosya veya fstream dosya dosya.open(const char dosya_adı, const char açma_amacımız); dosya.close();

Dosya Açma Modları(C-dili)

Dosya Açma Modları(C++ dili) Dosya modu Anlamı ios:app Dosya varsa içindeki değerler korunur ve yazılanlar dosyanın sonuna eklenir. Eğer dosya yoksa açılır. ios:in Giriş modudur. Bilgiler dosyadan okunur. Eğer dosya yoksa oluşturulamaz ve hata verir. ios:out: Çıkış modudur. Bilgiler dosyaya yazılır. Eğer dosya yoksa oluşturulur, varsa içindekiler silinir ve yeniden açılır ios:noreplace Eğer dosya varsa, yeniden açılmasını engeller. ios:nocreate Eğer dosya varsa, oluşturulmasını engeller. ios:binary İkili dosya formatıdır. Bu modda bilgiler yazı modu yerine ikili formatta yazılır. Belirtilmediği takdirde yazı modu geçerlidir.

Dosya İşlem Komutları fopen: Dosya açma komutudur. Örnek: “dosyam.dat” adlı bir dosyayı “r (read-okuma)” modunda açarak adresini fp isimli değişkende saklar.   fp=fopen(“dosyam.dat”,”r”) ; //C-dilinde dosya açma fstream dosyam(“girdiler.dat”, ios::out); //C++ dilindeTanımlandığı yerde dosya açma

Dosya İşlem Komutları #include <iostream> #include <fstream> using namespace std; main(){ fstream dosyam("notlar.dat", ios::out); cout << dosyam.dat acildi.\n"; } #include <stdio.h> main(){ FILE *dosyam; dosyam=fopen("notlar.txt","a+"); puts("notlar.txt acildi.\n"); fclose(dosyam); getchar(); }

Dosya İşlem Komutları fp=fopen(“dosyam.dat”,”r”) ; if(!fp) { Dosyanın açıldığının testi.    fp=fopen(“dosyam.dat”,”r”) ; if(!fp) {       printf(“Hata\n”;);  }      #include <iostream> #include <fstream> using namespace std; int main(){ fstream dosya; dosya.open("testfile.txt", ios::out); if (!dosya){ cout << "Dosya acma hatasi!" << endl; return 0; } cout << "Dosya basarili sekilde olusturuldu\n"; cout << "Dosya simdi kapatiliyor\n"; dosya.close();

Dosya İşlem Komutları (C-dili) fclose: Dosyayı kapatır. Örnek: fclose(fp); fprintf veya fputs(): Dosyaya veri yazar. Örnek: fputs(“Ali",fp); fprintf(fp, “Ali"); fscanf veya fgets(): Dosyadan veri okur. Örnek: fgets(str, 12, fp); fscanf(fp, "%s", str); feof(dosyaAdi): Dosya sonuna gelinip gelinmediğini kontrol eder. Örnek: while (!feof(fp)){ fscanf(fp, "%s", str); // Dosyadan Oku printf(" %s \n“, str); // ve Ekrana yaz } rename(): Dosya adını değiştirir. rename("eski.txt", "yeni.txt"); remove(): Belirtilen dosyayı siler. remove("eski.txt");

İsminizi dosyaya 5 kez yazan program #include <stdio.h> void main(){ FILE *dosya; char str[100]; int i; dosya = fopen("Ad.txt", "w"); for (i=0; i<5; i++) { fprintf(dosya, "Murat\n"); } fclose(dosya); Açma Modu: “w” write (yazma), “r” read (okuma), “a” append (ekleme), “w+”, “r+” ve “a+” hem okuma hem yazma, “b” binary (ikili, diğerleri ile birlikte kullanılır: “w+b” gibi)

Ad.txt dosyasının içeriğini okuyup ekrana yazan program #include <stdio.h> void main(){ FILE *dosya; char str[100]; int i; dosya = fopen("Ad.txt", "r"); while (!feof(dosya)){ fscanf(dosya, "%s", str); printf("%s\n", str); } fclose(dosya); getchar(); feof() :Dosya sonuna gelinmediği sürece tüm kayıtları tarar. feof fonksiyonu dosya sonuna gelinince true değer döndürür. fscanf komutu yerine fgetc fonksiyonu da dosyadan bir karakter (byte) veri okumada aşağıdaki gibi kullanılabilir. printf("%c", fgetc(dosya));

Klavyeden girilenleri alarak dosyaya ekleyen program (C) #include <stdio.h> #include <string.h> void main(){ FILE *d; char str[100]; d = fopen("metin1.txt", "w"); do { gets(str); fprintf(d, "%s\n", str); } while (strlen(str)); fclose(d); } Bir satır boş bırakılana kadar girilen tüm satırları dosyaya yazar scanf kullanımı boşluk karakterinde sorun çıkardığı için gets kullandık str = "" olduğunda strlen sıfır döndürür. while(0) döngüden çıkış anlamına gelir.

Dosyadaki verileri başka bir dosyaya kopyalayan program (C) #include <stdio.h> void main(){ FILE *d1, *d2; char chr; d1 = fopen("metin1.txt", "r"); d2 = fopen("metin2.txt", "w"); while (1) { chr = fgetc(d1); if (feof(d1)) break; fputc(chr, d2); } fclose(d1); fclose(d2); while (!feof(d1)) fputc(fgetc(d1), d2); Yukarıdaki kullanım d2'ye eof karakterini de yazar. Yani d2 dosyası, d1 dosyasından 1 byte fazla olur.

#include <iostream> #include <fstream> C++ dosyaya << operatörü ile veri yazma #include <iostream> #include <fstream> using namespace std; int main(){ fstream dosya; dosya.open("test.txt", ios::out); if (!dosya){ cout << "Dosya acma hatasi!" << endl; return 0; } cout << "Dosya basarili sekilde olusturuldu\n"; dosya<<"C++ dosyaya yazmak gayet kolay\n"; dosya<<"C ise biraz daha zor\n"; dosya.close();

#include <fstream> using namespace std; int main(){ C++ dosyaya << operatörü ile veri yazma #include <fstream> using namespace std; int main(){ fstream dosya; float sayi = 123.456; dosya.open("test.txt", ios::out); if (!dosya){ cout << "Dosya acma hatasi!" << endl; return 0; } dosya << sayi << endl; dosya.precision(5); dosya.precision(4);

#include <iostream> #include <fstream> C++ dosyaya << operatörü ile veri yazma #include <iostream> #include <fstream> #include <iomanip> using namespace std; int main(){ fstream dosya("table.txt", ios::out); int sayilar[3][3] = { 2897, 5, 837, 34, 7, 1623, 390, 3456, 12 }; for (int satir = 0; satir < 3; satir++){ for (int sutun= 0; sutun < 3; sutun++){ dosya << setw(4) << sayilar[satir][sutun]<< " "; } dosya << endl; dosya.close();

#include <iostream> #include <fstream> C++’da >> operatörü ile dosyadan veri okuma #include <iostream> #include <fstream> using namespace std; int main(){ fstream dosya; dosya.open("test.txt", ios::out); if (!dosya){ cout << "Dosya acma hatasi!" << endl; return 0; } cout << "Dosya basarili sekilde olusturuldu\n"; dosya<<"C++ dosyaya yazmak gayet kolay\n"; dosya<<"C ise biraz daha zor\n"; dosya.close();

#include <iostream> #include <fstream> C++’da >> operatörü dosya sonuna kadar veri okuma #include <iostream> #include <fstream> #include <cstring> using namespace std; int main(){ string isim; fstream dosya("isimler.txt", ios::in); do{ dosya>>isim; cout << isim << endl; }while (!dosya.eof()); dosya.close(); cout << "\nBitti\n"; }

dosya.getline(cumle, 81, ‘\n’); C++’da getline komutu ile dosyadan veri okuma dosya.getline(cumle, 81, ‘\n’); cumle– Dosyadan okunan karakterlerin saklanacağı Karakter dizisinin adı 81 – Dosyadan okunacak maksimum karakter adedi (NULL karakteri unutulmamalıdır). ‘\n’ – Dosyadan okumanın sonlandırılacağı karakter . Yazılmadığı takdirde ‘\n’ kabul edilir.

#include <iostream> #include <fstream> C++’da getline komutu ile dosyadan veri okuma #include <iostream> #include <fstream> using namespace std; int main(){ char satir[300]; fstream dosya("mars.txt", ios::in); if (!dosya){ cout << "Dosya bulunamadi!" << endl; return 0; } do{ dosya.getline(satir,300); cout << satir << endl; }while (!dosya.eof()); dosya.close(); cout << "\nBitti\n";

#include <iostream> #include <fstream> C++’da get komutu ile dosyadan veri okuma #include <iostream> #include <fstream> using namespace std; int main(){ char kar; fstream dosya("mars.txt", ios::in); if (!dosya){ cout << "Dosya bulunamadi!" << endl; return 0; } do{ dosya.get(kar); cout << kar; }while (!dosya.eof()); dosya.close(); cout << "\nBitti\n";

fstream oku("oku.txt", ios::in); fstream yaz("yaz.txt", ios::out); do{ C++’da get komutu ile dosyadan veri okuma int main(){ char kar,kar1; fstream oku("oku.txt", ios::in); fstream yaz("yaz.txt", ios::out); do{ oku.get(kar); if(isupper(kar)){ kar1=tolower(kar); yaz<<kar1; }else if(islower(kar)){ kar1=toupper(kar); }else if(isspace(kar)){ yaz<<kar; } }while (!oku.eof()); oku.close(); yaz.close();

fstream dosya("sentence.txt", ios::out); char ch; C++’da get komutu ile dosyadan veri okuma main(){ fstream dosya("sentence.txt", ios::out); char ch; cout << "Bir cumle giriniz"; while (1){ cin.get(ch); dosya.put(ch); if (ch == '.') break; } dosya.close();

12.17 Random Access Files Random Access means non-sequentially accessing informaiton in a file. Figure 12-11

Table 12-7

Table 12-8

Program 12-21 // This program demonstrates the seekg function. #include <iostream.h> #include <fstream.h> void main(void) { fstream file("letters.txt", ios::in); char ch; file.seekg(5L, ios::beg); file.get(ch); cout << "Byte 5 from beginning: " << ch << endl; file.seekg(-10L, ios::end); cout << "Byte 10 from end: " << ch << endl;

Program continues file.seekg(3L, ios::cur); file.get(ch); cout << "Byte 3 from current: " << ch << endl; file.close(); }

The tellp and tellg Member Functions tellp returns a long integer that is the current byte number of the file’s write position. tellg returns a long integer that is the current byte number of the file’s read position.

Program 12-23 // This program demonstrates the tellg function. #include <iostream.h> #include <fstream.h> #include <ctype.h> // For toupper void main(void) { fstream file("letters.txt", ios::in); long offset; char ch, again; do cout << "Currently at position " << file.tellg() << endl; cout << "Enter an offset from the beginning of the file: "; cin >> offset;

Program continues file.seekg(offset, ios::beg); file.get(ch); cout << "Character read: " << ch << endl; cout << "Do it again? "; cin >> again; } while (toupper(again) == 'Y'); file.close(); }

Rastgele Erişimli Dosya komutları fgetc Dosyadan bir karakter okur FILE işaretçisini alır fgetc( stdin ) eşittir getchar() karakter = fgetc(dosya); fputc Dosyaya bir karakter yazar FILE işaretçisini alır ve karakter yazar fputc( 'a', stdout ) eşittir putchar( 'a' ) fputc(karakter, dosya); Dosya kopyalama işleminde dosya1’in sonuna gelene karakter karakter dosya2’ye yazarken aşağıdaki gibi bir kullanım uygulayabilirsiniz: fputc(fgetc(dosya1), dosya2); Karıştırmayalım! fgets Satır okur fputs Satır yazar

Rastgele Erişimli Dosya komutları C’de genellikle rasgele erişimli dosyalar binary tipte yer alır fseek komutu ile istenilen kayda doğrudan erişim sağlanabilir. Fakat dosyadaki kaydın sıra numarası yerine dosyada kaçıncı bayta konumlanılacağı verilir. 11. kaydın başına konumlanmak için, 10. kaydın sonu olan sizeof(personel)*10 gibi bir ifade kullanılabilir.

fseek ve ftell C’de bir dosyanın belirli bir yerine konumlanmak için fseek, bulunduğumuz yeri öğrenmek için ftell kullanılır: fseek(dosya, 1600, SEEK_SET); Dosyanın başından 1600 bayt ileriye konumlanır. (SEEK_CUR ile bulunulan konumdan itibaren, SEEK_END ile dosya sonundan itibaren konumlama yapılabilir) ftell(dosya); Dosyanın neresinde bulunduğumuzu döndürür (kaçıncı bayt) sizeof(personel)*10

fread ve fwrite C’de bir kayıt deseninin tamamını bir defada dosyaya eklemek için fwrite, dosyadan okumak için ise fread kullanılır: fwrite(&kayit,sizeof(personel),1,dosya); fread(&kayit,sizeof(personel),1,dosya); fread NULL değer döndürürse kayıt okuyamamış (muhtemelen dosya sonuna gelmiş) demektir.