Eln 1002 Bilgisayar Programlama II

Benzer belgeler
ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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

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

Yrd. Doç. Dr. Caner ÖZCAN

DOSYA İŞLEMLERİ Programlama dilleri hafta -

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

ALGORİTMA VE PROGRAMLAMA II

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

Yrd. Doç. Dr. Caner ÖZCAN

Temel Bilgisayar Programlama

12. Saat : Dosyalar I (Files)

Eln 1001 Bilgisayar Programlama I

Genel Programlama II

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

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

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ı

Dosyalar 1.1 Dosya Nedir?

ALGORİTMA VE PROGRAMLAMA II

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

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ü

DOSYALAR. Temel terimler Hafta. Dr. Fahri Vatansever

Strings(Karakter Dizisi)

PROGRAMLAMAYA GİRİŞ DERS 2

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

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

ALGORİTMA VE PROGRAMLAMA II

Adı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Programlama Dilleri 1. Ders 4: Diziler

BİL1001 Bilgisayar Bilimlerine Giriş 1

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Temel Giriş/Çıkış Fonksiyonları

ALGORİTMA VE PROGRAMLAMA I

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

Telefon Rehberi Uygulaması

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

Genel Programlama II

C Programlama Dilininin Basit Yapıları

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

C Programlama printf() Fonksiyonu

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Ş (

Fen ve Mühendislik Uygulamalarında MATLAB

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

void main() { int a[] = {1, 2, 3, 4, 5, 6}; int *p=&a[2]; int **pp=&p; printf("%d", **pp+2); }

Bilgisayar Programlama MATLAB

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

Hafta 12 Karakter Tutan Diziler

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

Dr. Fatih AY Tel: fatihay@fatihay.net

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Verileri Sıralı ve Random Erişimli Dosyalamak

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

Girdi Çıktı İşlemleri

BİLGİSAYAR PROGRAMLAMA DERSİ

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

Diziler (Arrays) Çok Boyutlu Diziler

ALFASAYISAL BİLGİLER KARAKTER DİZİLERİ (STRING)

BİLGİSAYAR PROGRAMLAMA DERSİ

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

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

C PROGRAMLAMA D İ L İ

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

int printf (const char *format [, argument,...]);

Chapter 11 Dosya İşleme

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

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

C Konsol Giriş Çıkış Fonksiyonları

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

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Dr. Fatih AY Tel: fatihay@fatihay.net

Pointer Kavramı. Veri Yapıları

BTP 205 İŞLETİM SİSTEMLERİ

ALGORİTMA VE PROGRAMLAMA I

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Proses. Prosesler 2. İşletim Sistemleri

PROSESLER. Proses. Proses

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

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Bilgilerin Uzun Vadeli Saklanması

Özyineleme (Recursion)

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

Biçem Belirteçleri (Format Specifiers)

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

Bilgisayar Sistemlerine Genel Bakış

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { int ID; char isim[15]; char soyisim[15];

ALGORİTMA VE PROGRAMLAMA II

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

Transkript:

Eln 1002 Bilgisayar Programlama II C»de Dosya ğşleme : S¹ral¹ EriŞim Ne ÖĆreneceĆiz? Dosyalar ve Streamler Sequential (sıralı) erişim dosyaların yaratılması Sıralı Erişim Dosyalarından Veri Okuma Sıralı Erişim Dosyalarına Veri Yazma Uygulamalar

Dosyalar ve Stream»ler Bilgisayar programları disk üzerindeki dosyaları okuyabilir ve bunlara yazabilir. Dosya sistem detayları geniş bir spektrumda değişim gösterir. Her iletişim sistemi birbirinden farklı sistemler kullanır : Unix, Linux, IRIX, HP-UX, MS-DOS, Win16, Win32, NTFS, AppleOS, MacOs, Solaris... Dosyaların iki formatı mevcuttur: Karakter dosyaları : Byte dizisi olarak klavye karakter dizileri dosyada saklanır. ASCII UniCode Binary dosyalar : Bir ve sıfırların dizisi saklanır. Özellikle sayıların saklanacağı dosyalarda kullanılır. Örnek : 49 binary dosyada 11001, fakat karakter dosyasında 4 ve 9 dur. Dosyalar ve Stream»ler Dosyadan bilgi elde edeceğimiz zaman dosyadan okuruz. Dosyada bilgi saklayacağımız zaman dosyaya yazarız. Ama herşeyden önce dosyayı açmak zorundayız. Yani önce dosya açılır. İşlemler gerçekleştirilir. Ve en son dosya kapanır. Dosyalar iki yol ile okunur/yazılır: Sıralı Erişim : Baştan sona doğru dosya okunur (veya dosyaya yazılır). Random Erişim : Dosya içinde herhangi bir yere yazılır veya herhangi bir yerden okunur. Veri tabanı uygulamaları için uygundur. C her dosyayı byte ların bir dizisi olarak görür : Dosya end-of-file (EOF) işaretcisi ile sona erer. Veya özel bir karakter ile sona erer. Dosya açıldığında stream yaratılır. Program ile dosya arasında haberleşme kanalı olarak iş görür. Özel yapıya sahiptirler (FILE yapısı). Örnek : stdin, stdout, stderr

S¹ral¹ EriŞim Dosya Yarat¹lmas¹ HER ZAMAN kullanmadan önce dosyayı AÇ. HER ZAMAN işin bittikten sonra dosyayı KAPAT. Dosya açma işlemi üç aşamada gerçekleşir. Dosya işaretçisini tanımla. fopen() fonksiyonunu kullanarak dosyanın açılması/yaratılması Hata kontrolü Dosya adı Dosya modu S¹ral¹ EriŞim Dosya Yarat¹lmas¹ Programlar bir veya daha fazla sayıda dosyayı işleyebilirler. Açılan her dosya farklı isme sahip olmalıdır ve her FILE pointer için farklı değer oluşturulur. Dosya programın çalıştığı klasör içine açılır veya içinde olmalıdır. Farklı bir klasör içine açılıyorsa veya farklı bir klasör içindeyse dosya isminden önce bulunduğu klasörün yolu girilmelidir. C:\\win\\system.ini /usr/etc/passwd MS-Windows için Unix için NOT : Dosya pointerları üzerinde pointer aritmetiği geçerli değildir. fopen() hafızadan yer tahsis eder. fclose() unutulursa bu hafıza kaybıdır.

Dosya Modlar¹ Mod Görev Dosya Mevcutsa Dosya Mevcut Değilse r Dosyayı sadece okumak için açar Dosya açılır ve okunabilir. Dosyaya veri yazılamaz. İşlem başarısız olur. w Yeni dosya kaydeder. Dosya içeriği silinir ve yeni içerik kaydedilir. Yeni dosya yaratılır ve yazma işlemi yapılabilir. a Mevcut dosyayı açar, yeni dosya kaydeder, düzenlenmiş dosyayı kaydeder. Dosya açılır ve düzenlenir veya değiştirilir. Yeni bilgi dosya sonuna eklenir. Yeni dosya yaratılır ve yazma işlemi için hazır hale getirilir. r+ Mevcut dosyayı açar. Dosya açılır ve mevcut veri değiştirilir, yenilenir. İşlem başarısız olur. w+ Yeni dosya yaratır veya mevcut olanı açar. Dosya açılır. İçeriği silinir ve yeni içerik yazılır. Yeni dosya yaratılır ve yazma işlemi yapılabilir. a+ Yeni dosya yaratır veya mevcut olanı açar. Dosya açılır, içerik değiştirilebilir. Yeni bilgi dosyanın sonuna eklenir. Yeni dosya yaratılır ve yazma işlemi yapılabilir. rb, wb, ab, rb+, wb+, ab+ : Yukarıdakiler ile aynı işleve sahiptirler. Sadece binary modda işlem yaparlar. S¹ral¹ EriŞim Dosyaya Yazmak/Dosyadan Okumak Sıralı dosyalara veri yazmak için fprintf() fonksiyonu kullanılır. fprintf() kuralları, printf() ile aynıdır. Farklı olarak fprintf() fonksiyonuna dosya pointer ı parametre olarak geçirilir. Sıralı dosyadan veri okumak için fscanf() fonksiyonu kullanılır. Kullanım açısından fscanf(), scanf() fonksiyonu ile aynı kurallara sahiptir.farklı olarak fscanf() fonksiyonuna okuma yapılacak dosya işaretcisi parametre olarak geçirilir. fscanf() de dosyada boşluk ile karşılaşıncaya kadar okuma yapar. Yani sadece kelime okuyabiliriz.

S¹ral¹ EriŞim Dosyaya Yazmak /* Konu : C'de Dosyalar Orn : Sirali dosyaya yazmak */ #include<stdio.h> int main() int studentid; char studentname[30]; float GANO; FILE *sfile; sfile = fopen("students.txt", "w"); if(sfile == NULL) printf("dosya acilamadi...\n"); return 1; do printf("ogrenci Numarasini Giriniz : "); scanf("%d", &studentid); printf("ogrenci Adini Giriniz : "); scanf("%s", studentname); printf("ogrenci GANO Giriniz : "); scanf("%f", &GANO); fprintf(sfile, "%d\t%s\t%f\n", studentid, studentname, GANO); while(!feof(stdin)); fclose(sfile); S¹ral¹ EriŞim Dosyaya Yazmak Komut Satırı : Çıktı students.txt Dosyası : İki kez yazıldığına dikkat ediniz.

S¹ral¹ EriŞim Dosyaya Yazmak /* Konu : C'de Dosyalar Orn : Sirali dosyaya yazmak */ #include<stdio.h> int main() int studentid; char studentname[30]; float GANO; int devam; FILE *sfile; sfile = fopen("students.txt", "w"); if(sfile == NULL) printf("dosya acilamadi...\n"); return 1; do printf("ogrenci Numarasini Giriniz : "); scanf("%d", &studentid); printf("ogrenci Adini Giriniz : "); scanf("%s", studentname); printf("ogrenci GANO Giriniz : "); scanf("%f", &GANO); fprintf(sfile, "%d\t%s\t%f\n", studentid, studentname, GANO); printf("devam Etmek Istiyor musunuz? (1:Devam/0:Bitti) : "); scanf("%d", &devam); while(devam==1); fclose(sfile); S¹ral¹ EriŞim Dosyaya Yazmak Komut Satırı : Çıktı students.txt Dosyası :

S¹ral¹ EriŞim Dosyadan Okumak /* Konu : C'de Dosyalar Orn : Sirali dosyadan okumak */ #include<stdio.h> Komut Satırı : int main() int studentid; char studentname[30]; float GANO; FILE *sfile; sfile = fopen("students.txt", "r"); if(sfile == NULL) printf("dosya acilamadi...\n"); return 1; printf("numara\tisim\tgano\n"); printf("----------------------------\n"); while(!feof(sfile)) fscanf(sfile, "%d\t%s\t%f\n", &studentid, studentname, &GANO); printf("%d\t%s\t%.2f\n", studentid, studentname, GANO); fclose(sfile); S¹ral¹ EriŞim Dosyaya Yazmak/Dosyadan Okumak Önceki programda, okuma işlemi bittikten sonra, fclose() fonksiyonundan önce tekrar okuma yapmaya çalışsak ne ile karşılaşırız? Cevap : Hiç birşey okuyamayız. Dosyamızın içinde sanal bir imleç olduğunu varsayarsak, bu imleç ilk okumayla dosya sonuna gelmiştir ve tekrar okumaya kalkarsak imleç sonda olduğundan hiç birşey okuyamayız. Okuma işlemi bittikten sonra dosyadan tekrar okuma yapmak istiyorsak dosya imlecini dosyanın başına almalıyız. rewind() fonksiyonu dosya imlecini dosyanın başına getirir. Kullanımı : rewind(file *stream);

S¹ral¹ EriŞim Dosyaya Yazmak/Dosyadan Okumak fprintf() ve fscanf() fonksiyonları dışında sıralı dosyadan yazma ve okuma yapan fonksiyonlar mevcuttur. Karakter yazma ve okuma : fputc() ve fgetc() fonksiyonları. int fputc(int c, FILE *stream); int fgetc(file *stream); Dosyadaki bir satırı veya belli bir uzunluğu okuma : fgets() char *fgets(char *str, int n, FILE *stream); Dosyaya string yazma : fputs() int fputs(const char *str, FILE *stream); Uygulama : Dosyada Kay¹tl¹ Kelimeleri Sayma Problem : Dosyada kayıtlı text içinde kaç kelime olduğunu sayan bir program yazmak. Algoritma: Dosya adını kullanıcıya sor. Dosyayı aç. Dosyanın açıldığını kontrol et. Dosyadaki kelimeleri say. Sonucu ekrana yaz. Dosyayı kapart. Kelimeleri sayan fonksiyon : fscanf() in boşluğa kadar okuma özelliği kullanılacaktır. sayacı sıfırla döngü dosyadan kelime oku eğer okuma işlemi başarısız olduysa döngüden çık sayacın değerini 1 arttır.

Uygulama /* Konu : C'de Dosyalar Orn : Dosyadaki Text icinde kac kelime oldugunun sayilmasi. */ #include<stdio.h> /*Fonksiyon prototipleri*/ int kelimesay(file *); /*main fonk.*/ int main() char dosyaadi[30]; /*Fonksiyon tanimlari*/ int kelimesay(file *text) int sayac = 0; char kelime[40]; while(fscanf(text, "%s", kelime)!=eof) sayac++; return sayac; printf("dosya Adini uzantisiyla birlikte giriniz :"); scanf("%s", dosyaadi); /*Dosya Acilmasi*/ FILE *textdosya; textdosya = fopen(dosyaadi, "r"); if(textdosya==null) printf("dosya Acilamadi..."); return 1; int kelimesayisi = kelimesay(textdosya); printf("%s Dosyasinda %d adet kelime vardir...", dosyaadi, kelimesayisi); return 0; Uygulama Kelimeleri sayılacak dosya içeriği : Program çıktısı :