30
Bilgisayar Programlama 1 DERS 6: DOSYA İŞLEMLERİ (OKUMAK) DR. HÜSEYİN BAHTİYAR

Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

  • Upload
    others

  • View
    10

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Bilgisayar Programlama 1

DERS 6: DOSYA İŞLEMLERİ (OKUMAK) DR. HÜSEYİN BAHTİYAR

Page 2: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Donanım Mimarisi

Yazılım

Giriş/Çıkış Birimleri Central

Processing Unit (CPU)

Ana Bellek

İkincil Bellek

Ne yapacağım?

2

Page 3: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Donanım Mimarisi

Yazılım

Giriş/Çıkış Birimleri Central

Processing Unit (CPU)

Ana Bellek

İkincil Bellek

Ne yapacağım?

Klavye Ekran Mouse Hoparlor….

3

Page 4: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Donanım Mimarisi

Yazılım

Giriş/Çıkış Birimleri Central

Processing Unit (CPU)

Ana Bellek

İkincil Bellek

Ne yapacağım?

Ram: değişkenler burada yaşıyor

4

Page 5: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Donanım Mimarisi

Yazılım

Giriş/Çıkış Birimleri Central

Processing Unit (CPU)

Ana Bellek

İkincil Bellek

Ne yapacağım?

Ram: değişkenler burada yaşıyor

Bilgisayar (Program) kapanınca kayboluyor.

5

Page 6: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Donanım Mimarisi

Yazılım

Giriş/Çıkış Birimleri Central

Processing Unit (CPU)

Ana Bellek

İkincil Bellek

Ne yapacağım?

Uzun ömürlü saklama, usb bellek sabit disk vs…

6

Page 7: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya işlemleri için1. Öncelikle dosya kütüphanesini eklemeliyiz

#include<fstream>

2. Dosya işlemi yapacağımız değişkeni tanımlamalıyız

ifstream dosya_oku;

3. Bilgisayar akıllı bir alet olmadığından sadece dosya_oku isminde bir değişken ile dosya ismi yapacağımızı, sanmaktadır. Dosyayı açmak için.

dosya_oku.open(“dosyaadi”);

7

Page 8: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

ifstream? fstream? ofstream?Komut İşlem

ifstream okumak için (input)

ofstream yazmak için (output)

fstream hem okumak hem yazmak için

8

Page 9: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

. operatörü?❖ . operatörü kullandığımız sınıfa bağlı alt fonksiyonlara

erişmemizi sağlayan operatördür.

❖ Kısacası ifstream’e özel fonksiyonlara erişmek için öncelikle ifstream yapısında bir değişken tanımlayıp değişken_adi.fonksiyon() şeklinde alt fonksiyonlarına erişebiliriz.

9

Page 10: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya açmaya çalışalım

10

Page 11: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya açmaya çalışalım

fstream headerını çağırdık buradaki fonksiyonları kullanacağız dedik.

11

Page 12: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya açmaya çalışalımokumak için (ifstream)

kullandık değişkenimiz myfile

12

Page 13: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya açmaya çalışalım

deneme.txt isimli bir dosyayı açmasını söyledik

13

Page 14: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya açmaya çalışalım

eğer dosyayı açabildiysek??

14

Page 15: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya açmaya çalışalım

ekrana dosyayi actik yazdırdık

15

Page 16: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya açmaya çalışalım

açamadıysak???

16

Page 17: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya açmaya çalışalım

hataaaaa! yazdırdık

17

Page 18: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Neden çalışmadı???❖ Bilgisayar programın bulunduğu klasörde deneme.txt

dosyasını aradı!

❖ Bulamadı ve hata verdi.

❖ Benzer sorunla karşılaşırsak ilk bakmamız gereken durum dosyanın doğru yerde olup olmadığını kontrol etmektir.

❖ Veya dosyanın bulunduğu klasörde pwd komutunu kullanarak klasörün yolunu sisteme girmektir.

18

Page 19: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

deneme.txt yi oluşturalım❖ Text editörü açıp programın bulunduğu yere

deneme.txt isimli bir dosya oluşturalım.

❖ dosyanın içerisine şimdilik bir şey yazmaya gerek yok.

❖ Şimdi programımızı çalıştıralım.

19

Page 20: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosyayı okumak❖ Şimdi dosyanın içerisinde okul numaramızı yazalım ve

programa aşağıdaki hale getirelim.

Okunan isimli tamsayı değişkeni yarattık.

20

Page 21: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosyayı okumak❖ Şimdi dosyanın içerisinde okul numaramızı yazalım ve

programa aşağıdaki hale getirelim.

Dosyadan aldığımız değeri okunan içine atadık.

Dikkatt!! değer int değil ise program hatalı olur

21

Page 22: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosyayı okumak❖ Şimdi dosyanın içerisinde okul numaramızı yazalım ve

programa aşağıdaki hale getirelim.

Ekrana dosya içinden okuduğumuz

değeri yazdırdık

22

Page 23: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosyayı sonuna kadar okumak?❖ Peki elimizde içerisinde birden fazla integer olan bir dosya

olsaydı?

❖ Bu gibi durumlar için fstream altındaki .eof() fonksiyonunu while döngüsü ile kullanırız.

❖ while kullanmamızın sebebi dosyanın uzunluğunu bilmeyebileceğimizden dosyanın sonuna gelene kadar (end of file -> eof ) okumaya devam etmesini istememizdir.

❖ Okul numaramızın yanına doğum tarihimizi gün ay ve yıl olarak alt alta yazalım.

23

Page 24: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Dosya sonuna kadar okumak

Dosya bitene kadar oku

24

Page 25: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Yeni bir değişken string❖ deneme.txt isimli dosyamızın en altına adımızı yazalım

ve programdan okumasını isteyelim.

❖ Neler oldu?

25

Page 26: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Yeni bir değişken string❖ deneme.txt isimli dosyamızın en altına adımızı yazalım ve

programdan okumasını isteyelim.

❖ Neler oldu?

❖ Harf karakterlerini (sözcükleri) okuyabilmesi için, yeni bir değişken ile tanışmamız gerekiyor.

❖ Bu değişken string olarak isimlendirilir.

❖ Öncesinde kütüphanesini tanıtmamız gerekmektedir.

#include <string>

❖ string degisken; şeklinde tanımlayabiliriz.

26

Page 27: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

String ile karakter şeklinde okumak

27

Page 28: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

getline() ile satır satır okumak

28

❖ C++’ın içerisinde dosya okumak (veya klavyeden giriş için) işlerimizi kolaylaştırıcı bir çok fonksiyonu bulunmaktadır.

❖ Bunlardan biri getline fonksiyonudur.

❖ Bu fonksiyon tüm satırı bir string değişkeni olarak alır, böylece dosyayı satır satır okumuş oluruz. Kullanımı:

getline(dosya_degiskeni,string_degiskeni);

Page 29: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Getline ile örnek

while döngüsü sayesinde, myfile içerisindeki satırlar okunan değişkeninin içerisine yazılır.

Page 30: Bilgisayar Programlama 1hbahtiyar/dersler/icerik/Cplusplus-Ders6.pdf · Donanım Mimarisi Yazılım Giriş/Çıkış Birimleri Central Processing Unit (CPU) Ana Bellek İkincil Bellek

Kaynaklar!http://www.cplusplus.com/doc/tutorial/ !www.py4e.com !C++ How to program (Deitel) !Ferhat Özok Bilgisayar Programlama I ders notları