BİLGİSAYAR PROGRAMLAMA Ders 10: Dosyalama İşlemleri

Slides:



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

String fonksiyonları:
Dizi Kullanan Örnekler
STRİNG FONKSİYONLARI.
Dosya ve Klasör İşlemleri
Fonksiyonlar.
Internet Tabanlı Programlama Dr. Erman Yukselturk
Bölüm 2 C Dilinin Temelleri
switch - case Yapısı Döngü Yapıları
String Diziler(Katarlar)
Dosyaya Bilgi Yazmak ve Dosyadan Okumak
Bölüm 2: Program Denetimi
OOP UYGULAMA 5.
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
PHP-Dosya ve Dizinler Internet Tabanlı Programlama Dr. Erman Yukselturk.
DOSYA İŞLEMLERİ.
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
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.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
8. VİSUAL BASİC İLE TEMEL DOSYALAMA İŞLEMLERİ
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
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);
Algoritma & Programlama
Diziler (Arrays).
Temel Giriş/Çıkış Fonksiyonları
C# Veri Tipleri ve Değişkenler
PROGRAM DENETİM DEYİMLERİ
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
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
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
2. HAFTA 2. Hafta.
PROGRAMLAMA Dosyalama İşlemleri
BİLGİSAYAR programlama II
BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)
UNV13107 TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Veri tabanı Bilgisayar ortamında saklanan düzenli verilerdir. Bilgisayar ve ağ ortamındaki bilginin temel.
String Diziler(Katarlar)
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 10: Dosyalama İşlemleri
BİLGİSAYAR PROGRAMLAMA DERSİ 7. DERS NOTU Konu: Dosya Yönetim.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 7: Dosyalama İşlemleri
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
STRING FONKSİYONLARI Dim ders As String
C Programlama Dili Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA Ders 8: Fonksiyonlar
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
Bölüm 2 C Dilinin Temelleri
Bilgisayar Programlamasına ve Veri Analizine Giriş
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
YAPISAL PROGRAMLAMA Hafta-7
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
Bölüm 2 C Dilinin Temelleri
Bölüm 11 Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama
C ile Programlamaya Giriş
MTM216 GÖRSEL PROGRAMLAMA
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

BİLGİSAYAR PROGRAMLAMA Ders 10: Dosyalama İşlemleri

Dosya Programda kullanılacak verileri veya programda üretilen verileri saklamak için dosyalar kullanılır. Programlama dilleri dosya yaratma, dosya silme, dosyadan bilgi okuma ve dosyaya bilgi ekleme gibi temel işlevler için gerekli komutları içerirler. Dosyalar saklama türüne göre ve kayıt erişim biçimlerine göre aşağıdaki gibi sınıflandırılırlar: Saklama türleri: ikili (binary) ve metin (text) Kayıt erişim biçimleri: sıralı (sequential) ve rastgele (random)

Saklama Türüne Göre Dosyalar Metin (text) türündeki dosyalara bilgi ASCII biçiminde kaydedilir. Bu tip dosyalar Not Defteri (Notepad) gibi bir metin editörleri tarafından okunabilir. İkili (binary) türündeki dosyalara sayısal veriler ASCII formatına dönüştürülmeden doğrudan kaydedilir. Örn: 123 sayısı metin türü dosyaya 00110001, 00110010, 00110011 (49, 50, 51) şeklinde 3 byte olarak kaydedilirken, ikili dosyaya 01111011 şeklinde 1 byte olarak kaydedilir.

Erişim Biçimlerine Göre Dosyalar Sıralı Erişimli (Sequential Access) dosyalarda, kayıtların boyutu sabit değildir. Bu nedenle aradığımız kayda erişmek için tüm kayıtlara tek tek bakmamız gerekir. Rastgele Erişimli (Random Access) dosyalarda, her kayıt sabit bir uzunlukta olmalıdır (Örneğin soyad alanı kayıt deseninde 20 karakter olarak belirlendiyse, o uzunlukta soyad girilmediğinde kalan kısımlar boşluk karakteri ile doldurulur). Bu sayede n. kayda erişmek gerektiğinde, önceki kayıtları atlamak için; (n  1) × Kayıt Boyu kadar dosyada ilerleme seçeneği kullanılabilir.

Dosyalama Komutları C dilinde öncelikle FILE * türünde bir dosya değişkeni yaratılmalıdır. Dosya kullanılmadan önce fopen komutu ile açılır ve yazma/okuma işlemleri bittikten sonra fclose komutu ile kapatılır. Dosyaya veri yazmak için fprintf, fputs, fputc ve fwrite komutları, dosyadan bilgi okumak için fscanf, fgets, fgetc ve fread komutları kullanılır. Not: Başka dosyalama komutları da var ama en çok kullanılanlar bu komutlar olduğu için bunları bilmeniz yeterlidir.

Dosyaya "Merhaba Dünya" yazdıran ve takrar açıp okuyan program #include <stdio.h> void main(){ FILE *yaz; char str[100]; yaz = fopen("dosyam.txt", "w"); fprintf(yaz, "Merhaba millet"); fclose(yaz); yaz = fopen("dosyam.txt", "r"); fscanf(yaz, "%s", &str); printf("%s", str); } dosyam.txt dosyası yazma (w) kipinde açılır. fopen fonksiyonunun döndüreceği değer dosya verilerinin saklanacağı yerin başlangıç adresidir. Bu değer önceden tanımladığımız dosya değişkenine atanır. fputs("Merhaba Dunya", yaz); fgets(str, 12, yaz); Kipler: “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)

fprintf ve fscanf fprintf(dosya, format string, [değişkenler]); fscanf(dosya, format string, [değişkenler]); Aldıkları ilk parametre olan dosya parametresi dışında kullanımları printf ve scanf ile aynıdır. fprintf ekran yerine dosyaya yazarken, fscanf klavye yerine dosyadan okur. NOT: Burada ve sonraki slaytlarımızda dosya adında verilen parametreler FILE * türünde olan dosya değişkenini ifade etmektedir.

fgets ve fputs fgets dosyadan bir string okur fgets(string, boyut, dosya); fputs dosyaya bir string yazar fputs(string, dosya); fgets içindeki 2. parametre (boyut) yazılacak olan string'in karakter sayısından az verildiyse, o string'in ilk boyut kadar karakteri yazılır. Çok verildiyse string'in tamamı yazılır.

1 ile 10 arasındaki sayıların karesini dosyaya ekleyen program #include <stdio.h> void main(){ FILE *dosya; int i; dosya = fopen("dosya.txt", "w"); for (i=1; i<=10; i++) fprintf(dosya, "%d\n", i*i); fclose(dosya); }

fgetc ve fputc fgetc dosyadan bir karakter okur karakter = fgetc(dosya); fputc dosyaya bir karakter yazar fputc(karakter, dosya); Dosya kopyalama işleminde dosya1 de bulunan karakteri dosya2’ye yazarken aşağıdaki gibi bir kullanım uygulayabilirsiniz: fputc(fgetc(dosya1), dosya2);

Dosyadaki tüm verileri okuyarak ekrana yazdıran program #include <stdio.h> void main(){ FILE *d; d = fopen("metin.txt", "r"); while (!feof(d)) printf("%c", fgetc(d)); fclose(d); getchar(); } “metin.txt” isimli dosya okuma kipinde açılarak içindeki bilgiler karakter karakter okunuyor ve ekrana yazdırılıyor. feof fonksiyonu dosya sonuna gelinince true (1) değerini döndürür.

Dosyadaki verileri başka bir dosyaya kopyalayan program #include <stdio.h> void main(){ FILE *d1, *d2; char chr; d1 = fopen("metin.txt", "r"); d2 = fopen("metin_kopya.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); Programımızdaki while döngüsünü yukarıdaki gibi değiştirirsek, d2'ye eof karakterini de yazar. Yani d2 dosyası, d1 dosyasından 1 byte fazla olur.

Klavyeden girilenleri alarak dosyaya ekleyen program #include <stdio.h> #include <string.h> void main(){ FILE *d; char str[100]; d = fopen("yazi.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.

Notlar fopen komutu dosyayı bulamaz yada açamazsa NULL değer döndürür : FILE *d; if ((d=fopen("dosya.txt", "w"))==NULL) printf("Dosya acilamadi\n"); Dosyanın İsmini Değiştirme : rename("eski.txt", "yeni.txt"); Dosyayı Silme : remove("deneme.txt");

Ödev 2 Kullanıcının ekleyeceği notları notlar.txt dosyasında sıra ile saklayan bir program yazın. Program çalıştırıldığında dosyanın içinde saklı olan tüm notlar sıra numarası ile birlikte görüntülenecek ve altında "not eklemek için 1’e, not silmek için 2’ye çıkış için ESC’ye basın" mesajı görüntülenecektir. Not Ekleme seçildiğinde "Notunuzu Giriniz" mesajı görüntülenecek ve kullanıcının ekrana yazacağı not ENTER basıldığı anda dosyanın sonuna eklenecektir. Not Silme seçildiğinde "Silmek İstediğiniz Notun Numarasını Giriniz" mesajı görüntülenecek ve kullanıcının seçtiği not dosyadan silinecektir. Ekleme ve silme işlemlerinden sonra ekran temizlenip programın başına dönülmelidir (Dosyanın son hali ekranda gösterilip yine altında "not eklemek için 1’e, not silmek için 2’ye çıkış için ESC’ye basın" mesajı görüntülenmelidir).