Nesneye Yönelik Programlama

Slides:



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

Java Programlama Giriş/Çıkış
Nesneye Yönelik Programlama
STRİNG FONKSİYONLARI.
Turbo Pascal 7.0 Öğr. Gör. İrfan MACİT Endüstri Mühendisliği Bölümü
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
Internet Tabanlı Programlama Dr. Erman Yukselturk
Nesneye Yönelik Programlama
Nesneye Yönelik Programlama
Nesneye Dayalı Programlama
Nesneye Dayalı Programlama
C Programlama Diline Giriş
Nesneye Yönelik Programlama
Nesneye Yönelik Programlama
PHP-Dosya ve Dizinler Internet Tabanlı Programlama Dr. Erman Yukselturk.
Nesneye Dayalı Programlama
DOSYA İŞLEMLERİ.
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
Bilgisayar Programlama Güz 2011
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
C++ Yapısı Giriş-Çıkış Komutları Döngü Komutları
Bilgisayara Giriş Doç. Dr. Mehmet S. İlkay.
Nesneye Yönelik Programlama
8. VİSUAL BASİC İLE TEMEL DOSYALAMA İŞLEMLERİ
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ
Temel Veri Türleri ve Operatörler
Nesne Yönelimli Programlama Dersi
DOSYA İŞLEMLERİ.
BM-103 Programlamaya Giriş Güz 2014 (7. Sunu)
Bilgisayar Programlama
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);
Nesneye Dayalı Programlama
Algoritma & Programlama
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ VE SINIFLARIN DİĞER ÖZELLİKLERİ Yılmaz Kılıçaslan.
Dijital Ölçütler.
Veri Tabanı Yönetim Sistemleri 2 Ders 2 Oracle 11g Kurulumu
C++ Ders Notları 3.Ders (String İşlemleri)
BM-103 Programlamaya Giriş Güz 2014 (9. Sunu)
Paralel Programlamaya Giriş
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
Chapter 14: Files and Streams. 2Microsoft Visual C# 2012, Fifth Edition Dosyalar, Dosya Ve dizin Sınıfları Geçici Depolama – Genellikle bilgisayar belleği.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
İÇ VE DIŞ DONANIMLAR.
VERİ YAPILARI İşaretçi Nedir? Nesne Tabanlı Programlama.
Bilgisayar Donanımı Bilgisayarın elle tutulup gözle görülen parçalarına donanım denir. Bilgisayar kasasının içindeki parçalara iç (dahili) donanım, dışındaki.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Dijital Ölçütler.
PROGRAMLAMA Dosyalama İşlemleri
BİLGİSAYAR programlama II
Dijital Ölçütler.
BİLGİSAYAR programlama II
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bilgisayar Donanımı Dersi
STRING FONKSİYONLARI Dim ders As String
Bilgisayar Donanımı Dersi
C Programlama Dili Bilgisayar Mühendisliği.
Dijital Ölçütler.
Bilgisayar Programlamasına ve Veri Analizine Giriş
YAPISAL PROGRAMLAMA Hafta-6
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Bölüm 11 Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama
NİŞANTAŞI ÜNİVERSİTESİ
MADDE VE YAPISI TEST.
Bilgisayar Donanımı Dersi Bilgisayarın Mimarı Yapısı ve Çalışma Mantığı.
Sunum transkripti:

Nesneye Yönelik Programlama BM-104 Nesneye Yönelik Programlama Bahar 2013 (11. Sunu) (Yrd. Doç. Dr. Deniz Dal)

Dosya Yönetimi Bir bilgisayarda 2 tür depolama yapılabilir: 1 - Geçici Depolama (Temporary Storage) Bilgisayarın ana belleğini (RAM) kullanan depolamadır. Bilgisayar kapanınca bilgiler de kaybolur. (Volatile) 2- Kalıcı Depolama (Permanent Storage) Bilgisayar kapatıldığında bile bilgilerin silinmediği yani bilginin diske kaydedildiği depolamadır. (Non-volatile) Bilgi diskte dosyalar içerisinde saklanır.

Files (Dosyalar) ve Streams (Akışlar) C++ her bir dosyayı sıralanmış byte lar olarak görür. Her bir dosyanın sona erdiği noktayı belirleyen özel bir işaretçisi vardır. (end-of-file ya da eof) Bir dosya açıldığı zaman buna ilişkin bir nesne oluşturulur ve bu nesneye stream adını verdiğimiz bir bilgi akış mekanizması iliştirilir. C++ ile dosya işleyebilmek için standart kütüphaneden <fstream> header dosyasını include etmek gerekir. include edilen bu <fstream> sayesinde ifstream (bir dosyadan bilgi okuma) ve ofstream (bir dosyaya bilgi yazma) sınıfları ve bunların nesneleri çağrılabilir.

Dosyaya Bilgi Yazdırma #include <iostream> //cout ve endl #include <fstream> //ofstream using namespace std; int main() { int sayi; ofstream cikisDosyasi;//Nesne Oluştur cikisDosyasi.open("C:\\test.txt",ios::out);//Dosya Adı ve Modu if(cikisDosyasi.fail()) cout<<"Dosya Olusturulamadi."<<endl; exit(1);//Programı Hemen Sonlandır. } cout<<"Lutfen Bir Sayi Giriniz: "; cin>>sayi; cikisDosyasi<<sayi<<" Deniz Dal "<<endl;//Dosyaya Yönlendir cikisDosyasi.close();//Açtığın Dosyayı Muhakkak Kapat return 0;

Dosya Açma Modları ios::in Okunmak üzere dosya aç ios::out Yazılmak üzere dosya aç (Dosya zaten mevcutsa içindeki bilgiler tamamen silinir.) ios::app Dosyanın sonundan itibaren yaz (append)

Dosyadan Bilgi Okuma #include <iostream> //cout ve endl #include <fstream> //ifstream #include <string> using namespace std; int main() { int sayi; string s1,s2; ifstream girisDosyasi;//Nesne Oluştur girisDosyasi.open("C:\\test.txt",ios::in);//Dosya Adı ve Modu if(girisDosyasi.fail()) cout<<"Dosya Acilamadi."<<endl; exit(1);//Programı Hemen Sonlandır } while(girisDosyasi>>sayi>>s1>>s2) cout<<sayi<<' '<<s1<<' '<<s2<<endl; girisDosyasi.close();//Açtığın Dosyayı Muhakkak Kapat return 0;

Hatırlatma Boşluklar (white spaces) ve satır sonu karakterleri (end-of-line) şimdiye kadarki dosyadan okuma örneklerinde ihmal edildiler. Bunu istemiyorsak eğer ifstream sınıfının get() fonksiyonunu ve string sınıfının getline() fonksiyonunu kullanmalıyız. getline() fonksiyonu herhangi bir akışı (iostream, fstream veya sstream) bir string değişkenine yönlendirir.

ifstream Sınıfının get() Fonksiyonu ile Dosyadan Tek Karakter Okuma Örnek: ifstream test; test.open("deneme.txt",ios::in); char ch; test.get(ch); //dosyadan tek bir karakter oku cout<<ch; //okunan karakteri ekrana yazdır

string Sınıfının getline() Fonksiyonu ile Dosyadan Satır Satır Bilgi Okuma #include <iostream> //cout ve endl #include <string> //getline() ve c_str() #include <sstream> //istringstream #include <fstream> //ifstream using namespace std; int main() { string dosyaAdi,satir,sutun; ifstream girisDosyasi; cout<<"Lutfen Giris Dosyasinin Adini Giriniz: "; cin>>dosyaAdi; //Dosya Adını C Stil Stringe Dönüştür (c_str()) girisDosyasi.open(dosyaAdi.c_str(),ios::in); if(girisDosyasi.fail()) cout<<"Dosya Acilamadi."<<endl; exit(1);//Programı Hemen Sonlandır } while(getline(girisDosyasi,satir))//Satırlar Tükeninceye Kadar istringstream ss(satir);//string stream lere Ayır while(ss>>sutun)//Sütunlar Tükeninceye Kadar cout<<sutun<<' '; cout<<endl; girisDosyasi.close();//Açtığın Dosyayı Muhakkak Kapat return 0; Okunan satırın herhangi bir sütununda bir tamsayı veya ondalıklı sayı olabilir. Ama biz herşeyi bir string değişkeninin içerisinde saklıyoruz???

Dosyanın Her Bir Satırındaki Sütunlar Birbirinden Boşluklar Yerine Özel bir Ayraçla (Delimiter) Ayrılmışlarsa #include <iostream> #include <string> #include <sstream> using namespace std; int main() { string personel="123;Metin;Durak;1957;Rize\n124;Ahmet;Arslan;1964;Erzurum"; string satir,sutun; istringstream satirStream(personel); while(getline(satirStream,satir))//Satır Sonuna Kadar istringstream sutunStream(satir); while(getline(sutunStream,sutun,';'))//Satır Sonuna veya ;'e Kadar cout<<sutun<<endl; } return 0;

atoi ve atof Fonksiyonları atoi ve atof fonksiyonları kendilerine parametre olarak aldıkları karakter dizilerini rakama çevirirler. atoi(char *str) fonksiyonu kendisine argüman olarak aldığı karakter dizisini integer a çevirir. atof(char *str) fonksiyonu kendisine argüman olarak aldığı karakter dizisini ondalıklı sayıya çevirir. (floating point) atoi ve atof fonksiyonlarını C++ programlarımızın içerisinde kullanabilmek için standart kütüphaneden <cstdlib> header dosyasını programımızın başına eklemeliyiz.

Örnek #include <cstdlib> //atoi ve atof için #include <string> //string veri tipi için using namespace std; string metin="123"; int i=atoi(metin.c_str()); string metin= "123.34"; float f=atof(metin.c_str());

Uygulama PersonelBilgileri.txt adlı bir düzyazı dosyasının içerisine TiKKiR adındaki bir şirkette çalışan personele ait bilgiler (her bir personele ait bilgi kaydı dosyanın bir satırında yer almak üzere) yukarıdaki formatta kaydedilmiştir. Dosyanın her bir satırında ilk sütun personelin kurum sicil numarasını, ikinci sütun personelin adını, üçüncü sütun personelin soyadını, dördüncü sütun personelin doğum tarihini ve son sütun ise personelin doğum yerini temsil etmektedir. (Şirket personelinden hiçbirisinin ikinci bir isme sahip olmadığını kabul edebilirsiniz.) Bu dosyayı okuyan ve 2013 yılı itibariyle şirket çalışanlarının yaş ortalamasını hesaplayarak ekrana basan bir C++ fonksiyonu yazınız ve main içerisinden çağırınız.

Bir Dosyanın Başına ve Sonuna Birkaç Kez Gidip Gelmek Gerekirse Bir dosyanın sonuna ulaşıldığında dosyayı kapatıp yeniden açarak dosyanın başına geri dönülebilir ama bu iyi bir yöntem değildir. //Bir Dosyanın Tamamını Heap e Yükleme //http://www.cplusplus.com/reference/iostream/istream/seekg/ #include <iostream> #include <fstream> using namespace std; int main() { int length; char *buffer; ifstream is; is.open("C:\\test.txt",ios::binary); is.seekg(0,ios::end);//Dosyanın Sonuna Git length=(int)is.tellg();//Dosyanın Kaç Byte Olduğunu Öğren is.clear();//Yeniden Dosyanın Başına Gidebilmek İçin is.seekg(0,ios::beg);//Dosyanın Başına Git buffer=new char[length];//Heap te Dinamik Yer Ayır is.read(buffer,length);//Bir Blok Halinde Dosyayı Heap e Oku is.close();//Dosyayı Kapat cout.write(buffer,length); delete [] buffer; return 0; }

!! Önemli Hatırlatma !! Bir dosya sadece bir kere okunmak üzere açılmalıdır ve bu esnada okunan bilgiler uygun bir veri yapısı içerisinde saklanmalıdır. Daha sonra ihtiyaç duyulan herhangi bir veri bu veri yapısı içerisinden temin edilmelidir. Her ihtiyaç duyulduğunda ilgili dosyayı okumaya açmak suretiyle bilgiye erişmek ve sonrasında dosyayı kapatmak iyi bir yöntem değildir.

? SORU ? PersonelBilgileri.txt adlı dosyadaki bilgiler vector<vector<string>> içerisinde saklanabilir mi?