Genel Programlama II

Benzer belgeler
ALGORİTMA VE PROGRAMLAMA II

C Dosyalama. Öğr. Gör. M. Ozan AKI. Rev 1.0

ALGORİTMA VE PROGRAMLAMA II

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

Eln 1002 Bilgisayar Programlama II

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

Temel Bilgisayar Programlama

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Temel Dosya İşlemleri. Kütük Organizasyonu 1

Yrd. Doç. Dr. Caner ÖZCAN

DOSYA İŞLEMLERİ Programlama dilleri hafta -

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

PROGRAMLAMA. Dosyalama İşlemleri. Yrd. Doç. Dr. Bülent Çobanoğlu. Sakarya Üniversitesi Mekatronik Mühendisliği. Yrd.Doç.Dr.

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Fen ve Mühendislik Uygulamalarında MATLAB

12. Saat : Dosyalar I (Files)

DOSYALAR. Temel terimler Hafta. Dr. Fahri Vatansever

Dosyalar 1.1 Dosya Nedir?

Bilgisayar Programlama MATLAB

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

Yrd. Doç. Dr. Caner ÖZCAN

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

ALGORİTMA VE PROGRAMLAMA II

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

ALGORİTMA VE PROGRAMLAMA I

İSMET AKTAR ANADOLU TEKNİK LİSESİ BİLİŞİM TEKNOLOJİLERİ ALANI WEB PROGRAMCILIĞI DALI

Sıralı bir dosyayı açmak için FileOpen komutundan faydalanılır. Bu komutun genel kullanılış biçimi aşağıdaki gibidir:

MATLAB de Programlama & Dosya Yönetimi. EE-346 Hafta 6 Dr. Ayşe DEMİRHAN

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

PYTHON PROGRAMLAMA DİLİ

Eln 1001 Bilgisayar Programlama I

GİRİŞ/ÇIKIŞ VE TANIMLAMA DEYİMLERİ

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Dosyalama İşlemleri. Ders Notları

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Sınav tarihi : Süre : 60 dak.

MİCROSOFT WORD. Araç çubukları: menü çubuğundan yapabileceğimiz işlemleri daha kısa zamanda araç çubukları ile yapabiliriz.

Veri Yapıları Laboratuvarı

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

ALGORİTMA VE PROGRAMLAMA I

Programlama Dilleri 1. Ders 5: Göstericiler

MATLAB İLE PROGRAMLAMAYA GİRİŞ. Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü

BİLG Dr. Mustafa T. Babagil 1

BİLGİSAYAR PROGRAMLAMA DERSİ

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BİLGİSAYAR PROGRAMLAMA DERSİ

3- Turbo Pascal Programlamada Giriş Çıkış İşlemleri

BÖLÜM 12: DOSYA İŞLEMLERİ

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

JAL IN İNTERNET TEN İNDİRİLMESİ VE KURULMASI

FORTRAN da Giriş/Çıkış Ve Tanımlamalar

C PROGRAMLAMA D İ L İ

ALGORİTMA VE PROGRAMLAMA II

Dosyalarda Farklı Yaklaşımlar. Kütük Organizasyonu 1

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

Verileri Sıralı ve Random Erişimli Dosyalamak

C Programlama Dilininin Basit Yapıları

Değişken atama Kullanıcıdan veri girişi istendiğinde kullanılır. 1. Bir değişkene değer atama (örn: a=4 gibi) 2. Klavyeden veri girme

Erzurum Teknik Üniversitesi Mühendislik Mimarlık Fakültesi Bilgisayar Programlama Dersi Final Sınavı Soru Toplam Puanlar

SUPERVISOR (YETKİLİ KULLANICI) KAMPANYA YÖNETİMİ EĞİTİM DOKÜMANI

pfrintf fonksiyonu: Çıkışın formatlı olması ve bunun bir dosyaya yazdırılması durumlarında kullanılır. fprintf fonksiyonunun genel yazım biçimi,

Göstericiler (Pointers)

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

HSancak Nesne Tabanlı Programlama I Ders Notları

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Python Programlama Dili

PROGRAMLAMA DİLLERİ I

C/C++ Disk G/Ç İşlemleri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

Chapter 11 Dosya İşleme

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

Girdi Çıktı İşlemleri

Bilgisayar Programlama

VISUAL BASIC DOSYA İŞLEMLERİ

Temel Giriş/Çıkış Fonksiyonları

JAVASCRIPT JAVASCRIPT DİLİ

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Temel Bilgi Teknolojileri - II Ayrıntılı Ders İçerikleri

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) Şimdi başka bir problem üzerinde çalışalım.

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

PERSONEL BANKA IBAN BİLGİSİ DEĞİŞİKLİĞİ UYGULAMA KILAVUZU

Transkript:

Genel Programlama II 18.04.2011 1

DİSK DOSYALARI İLE ÇALIŞMA DOSYALARIN AÇILMASI C programlama dilinde bir dosyayı kullanabilmek için, öncelikle o dosyanın açılması gerekmektedir. Hem okuma hem de yazma işlemlerinde önce o dosya açılır. Bir dosyayı açmak için fopen fonksiyonu kullanılır. Dosya açma fonksiyonu dosyaya işaret eden bir gösterge döndürür. Bu gösterge FILE tür tanımı içinde yer alır. FILE * dosya göstergesi Bu gösterge ile birlikte, bir dosyayı açmak için aşağıdaki şekilde bir tanım yapılır: dosya göstergesi = fopen (dosya adı, açma durumu) ; 2

Dosya Açma Tanım içinde yer alan açma durumu ifadesi, dosyanın ne amaçla açılacağını belirlemektedir. Örneğin, dosyaya veri mi kaydedilecektir? Yoksa veri mi okunacaktır? Dosya açma durumlarını aşağıdaki tablo üzerinde tanımlıyoruz: 3

Eğer dosyaya yazma veya ekleme işlemleri gerçekleştirilecek ise ve dosya o anda mevcut değil ise, söz konusu dosya yaratılır. Dosya "w" veya "w+" açma durumu ile açılmış ise dosyanın eski içeriği yok olacaktır. Eğer dosya "a" veya "a+" açma durumunda açılıyorsa, dosya içindeki veriler yok olmaz. Dosyanın içine yeni veri eklemeleri yapılır. Dosya "r+" veya "w+" durumunda açılmış ise, dosyadan hem okuma hem de yazma işleminin gerçekleştirilebileceği anlaşılır. 4

Dosya Kapatma Bir dosya açıldıktan sonra üzerinde okuma yada yazma işlemleri gerçekleştirilir. Bu işlemler tamamlandıktan sonra dosyanın kapatılması gerekecektir. Dosyanın kapatılması işlemi fclose fonksiyonu yardımıyla yerine getirilir. Bu fonksiyon aşağıdaki şekilde tanımlanmaktadır: fclose ( dosya ) 5

DOSYAYA BİLGİ KAYDETME Bir dosyaya veri kaydedilirken çeşitli yöntemlerden biri seçilir. Aşağıdaki tabloda veri kaydetme fonksiyonlarına yer verilmektedir. DOSYAYA SADECE BİR KARAKTERİN YAZDIRILMASI Dosyaya sadece bir karakterin kaydedilmesi söz konusu ise, C'nin fputc fonksiyonu kullanılır. Bu fonksiyon bir karakter kaydettiği için, daha fazla sayıda karakteri kaydetmek için döngü deyimlerinden yararlanılır. Söz konusu fonksiyon aşağıdaki şekilde tanımlanıyor: fputc (karakter, dosya göstergesi) 6

Metin isimli bir katar içine yerleştirilen bir ifadeyi test.txt dosyası içine kaydetmek için aşağıdaki programı düzenliyoruz. Bu program çalıştırıldığında disk üzerinde test.txt isimli bir metin dosyasının oluşturulduğu görülür. Bu dosya açıldığında sonuç şu şekilde görülür. 7

DOSYAYA BİR KARAKTER DİZİSİNİN KAYDEDİLMESİ Dosyaya bir karakterin kaydedilmesi söz konusu olduğunda fputc fonksiyonunu kullanıyorduk. Ancak, birden fazla karakterin kaydedilmesi durumunda bir döngü ile karakterler ardarda yazdırılıyordu. Bu işlemin yerine, fputs fonksiyonu kullanılarak, bir karakter dizisinin yani bir katarın bir defada yazdırılması sağlanabilir. Bu fonksiyon aşağıdaki şekilde tanımlanıyor: fputs (karakter, dosya göstergesi) 8

Program içinde tanımlanan metin isimli bir katar içine yerleştirilen ifadeyi, bir defada dosya içine kaydetmek istiyoruz. Bunun için aşağıdaki program düzenlenir. Bu program çalıştırıldığında disk üzerinde test.txt isimli bir metin dosyasının oluşturulduğu görülür. Bu dosya açıldığında sonuç şu şekilde görülür. 9

BİR DOSYAYA İKİLİ YAPIDA VERİ YAZDIRMA Şu ana kadar ele alarak incelediğimiz yazma fonksiyonları metin (text) dosyalara kayıt yapıyordu. Dolayısıyla herhangi bir metin editörle dosyanın içeriğini doğrudan görebiliyorduk. Verileri bir dosya içine ikili yapıda (binary) olarak saklamak söz konusu ise bu kez fwrite fonksiyonu kullanılır. Bu fonksiyon aşağıdaki gibi tanımlanmaktadır: fwrite ( bellek, boyutu, sayısı, dosya göstergesi) bellek boyutu sayısı dosya göstergesi Dosyaya yazdırılacak verinin geçici olarak bellekte saklandığı alan. Yazdırılacak alanın uzunluğu. Bu verinin tekrarlanma sayısı. Dosyanın göstergesi. 10

Örnek olarak aşağıdaki fonksiyonu göz önüne alalım: fwrite(a, sizeof(a),1,dg); Bu tanımdan şu anlaşılmaktadır: Söz konusu yazdırma işleminde a isimli bir alan kullanılacaktır. Bu alanın uzunluğu sizeof() işleci ile tanımlanmaktadır. Alan içeriği bir kez kaydedilecektir ve yazdırılacak dosya dg isimli gösterge ile tanımlanmaktadır. 11

Örnek: Bir yapı tanımlayarak, bu yapıyı kayıt biçiminde dosyaya kaydetmek istiyoruz. Veriler ikili düzeyde yerleştirilecektir. Amacımıza uygun C programı: Bu programda dosyaya yazdırılacak alanlar yapı biçiminde düzenlenerek gruplandırılması sağlanıyor. Bunun için bir yapı tanımlanıyor. Ardından bu yapı tanımı ile bir değişkene aktarılıyor. Kayitin her bir değişkenine birer veri yerleştiriyoruz. Dosya yazıma fopen ile yazıma açılıyor. Kayıtın dosyaya verilerin ikili yapıda yazdırılması işlemi ise fwrite fonksiyonu ile yerine getiriliyor. 12

DOSYAYA BİÇİMLENDİRİLMİŞ VERİ KAYDETME Verileri biçimlendirerek dosyaya kaydetmek söz konusu olduğunda, fprint fonksiyonu kullanılır. Bu fonksiyon aşağıdaki şekilde tanımlanır: fprintf (gösterge, biçimlendirme tanımları, değişken) Bu fonksiyon ile, örneğin 1 sayısını sol tarafında dört sıfır olacak biçimde disk dosyasına yazdırmak mümkündür. 13

Örnek: 1 den 5 e kadar olan sayıları dosyaya ardarda kaydetmek istiyoruz. Herbir sayısal değer 3 haneden oluşacak ve rakamın sol tarafı sıfırla doldurulacaktır. Bu program çalıştırıldıktan sonra test.txt dosyası oluşturulmuş olur. Bu dosyanın içeriği: 001002003004005 14

DOSYADAN BİLGİ OKUMA Bir dosyaya verilerin nasıl kaydedilebileceğini ele alarak inceledik. Peki bu veriler nasıl okunacaktır? C'de dosyadan veri okuma işlemleri de yine fonksiyonlarla yerine getirilir. Bu amaçla aşağıda belirtilen fonksiyonlara başvurulur. 15

DOSYADAN BİR KARAKTERİN OKUNMASI Bir dosyaya sadece bir karakterin yazılması isteniliyorsa fputc fonksiyonunu kullanıyorduk. Bunun tam tersi fgets fonksiyonu ile gerçekleştirilir. Söz konusu fgets fonksiyonu dosyadan sadece bir karakter okunmasını sağlar. fgetc (dosya göstergesi) Okunma ardından, dosya göstergesi bir artar. Bu nedenle, dosyanın diğer karakterleri bir döngü deyimi ile ardarda okunabilir. 16

Örnek : Daha önce oluşturduğumuz test.txt dosyası içeriğinin INONU UNIVERSITESI biçiminde olduğunu varsayalım. Bu dosyanın içerdiği değerlerin ilk karakterini okutmak ve okunan bu değeri görüntülemek istiyoruz. Bu program çalıştığında şu şekilde bir sonuç çıkacaktır. I 17

Disk dosyası biçimindeki test.txt dosyasının içerdiği karakterlerin tümünü okumak için şöyle bir yol izlenebilir. Bu program çalıştırıldığında, dosya içindeki tüm karakterler ardarda okunarak x dizisine aktarılmakta ve bu dizi görüntülenmektedir. Çıkacak sonuç: INONU UNIVERSITESI 18

DOSYADAN KARAKTER DİZİSİNİN OKUNMASI Bir dosyadan bir karakter değil, bir karakter dizisinin okunması söz konusu ise fgets fonksiyonun kullanılması gerekecektir. fgets (katar, uzunluğu, dosya göstergesi) Bu tanım içinde, katar ile, dosyadan okunacak karakter dizisinin aktarılacağı diziyi belirler. Karakter dizisinin uzunluğu ve dosyanın göstergesi de tanım içinde yer almaktadır. 19

Örnek: test.txt dosyasının içerdiği karakterlerden ilk 80 tanesini topluca okumak ve okunan bu değeri görüntülemek istiyoruz. Bu program çalıştırıldığında çıkacak sonuç: INONU UNIVERSITESI 20

DOSYADAN BİÇİMLENDİRİLMİŞ VERİ OKUMA Bir dosyaya verileri belirli bir biçimde yazmak söz konusu olduğunda fprintf fonksiyonunu kullanmıştık. Bu işlemin tersini yerine getirmek için, yani bu biçimde saklanan verileri okumak söz konusu olduğunda fscanf fonksiyonu kullanılır. Bu fonksiyon aşağıdaki şekilde tanımlanıyor: fscanf (gösterge,biçimlendirme tanımları, değişken) 21

Örnek: fprintf fonksiyonunu kullandığımız örnekte test.txt isimli dosya oluşturmuştuk. Bu dosyanın içeriği: 001002003004005 idi. Bu dosyadaki verileri üçer biçimde okuyarak, sonuçları tamsayı biçiminde görüntülemek istiyoruz. Bu program çalıştırıldığında, çıkan sonuç: 1 2 3 4 5 Bu programda dosyadan okuma işlemi yapılırken EOF ifadesi kullanılmıştır. Okuma işlemi while(fscanf(dosya,"%03d",&i)!=eof) Deyimleri yardımıyla gerçekleştirilmektedir. Dosta sonuna ulaşıldığında fscanf fonksiyonu EOF değerini döndürür. Bu değer kontrol edilerek döngünün sona erdirilmesini sağlanmaktadır. 22

DOSYAYA VERİ EKLEME Şu ana kadar iki temel noktayı öğrendik. Bunlardan birincisi, bir dosyaya veri yazdırma işlemi, ikincisi ise bu dosyalardan veri okuma işlemleridir. Dosyaya veri kaydederken, "w" ile açıyorduk. Böylece program her çalıştırıldığında, önceki verilerin tümü kayboluyordu. Uygulamada, yeni bir dosya yaratırken bu durum tercih edilir. Aksi durumlarda, dosyadaki verileri silmeden onlara eklemek istenir. Bunu sağlamak için dosya açılması esnasında "a" kodu tanımlanmalıdır. fopen (dosya adı, "a") ; 23

Dosyada daha önceden kayıtlı bilgi varsa, program çalıştırıldığında, dosyanın sonuna yeni bilgi girişlerinin eklenmesini sağlıyoruz. 24

DOSYANIN YOK EDİLMESİ Bir dosya yaratıldıktan sonra ve hatta içine veri kaydedildikten sonra yok edilebilir. Bunun için remove fonksiyonundan yararlanılır. Bu fonksiyon, remove ( dosya adı) biçiminde tanımlanır. 25

DOSYALARA RASGELE ERİŞİM Şu ana kadar ele alarak incelediğimiz dosyalar sıralı dosyalar olarak bilinmektedir. Bu dosyaların her bir kaydına sırayla erişiliyordu. Bunun yerine, dosyanın her bir kaydına doğrudan ulaşmak mümkündür. C programlarında bir dosyaya rastgele erişimi yada bir başka deyişle doğrudan erişimi sağlamak için, fseek fonksiyonundan yararlanılır. Bu fonksiyonla, veriler için bir tampon bellek yaratılmakta ve verilere buradan erişim sağlanmaktadır. Söz konusu fseek fonksiyonu aşağıdaki şekilde tanımlanıyor: fseek (dosya göstergesi, bayt sayısı, başlangıç) dosya göstergesi bayt sayısı başlangıç Dosya açılırken tanımlanan dosya göstergesi. Dosya yer belirleyicisinin başlangıçtan itibaren yerleşeceği alanının bayt cinsinden boyutu. Dosyanın nereden itibaren okunmaya başlayacağını belirler. SEEK_SET: Dosyanın başlangıcı. SEEK_CUR: Dosya yer belirleyicisinin o andaki konumu. SEEK_END: Dosyanın sonu. 26

27

Bölüm örnekleri: 28

29

30

31

UYGULAMA Kendi adınızı ve soyadınızı test.txt dosyasına yazdırın. test.txt dosyasından önce isminizin başharfini sonrada tamamını ekrana yazdırın. 32