Eln 1001 Bilgisayar Programlama I GiriŞ / ǹk¹Ş Fonksiyonlar¹ Ne ÖĆreneceĆiz? Temel Giriş/Çıkış Yapısı Giriş Fonksiyonları Karakterler için giriş fonksiyonları Scanf fonksiyonu Formatlı giriş Çıkış Fonksiyonları Karakterler için çıkış fonksiyonları Printf fonksiyonu Formatlı çıkış Alan genişliği ve duyarlılık
GiriŞ/ǹk¹Ş Yap¹s¹ Ekran Yazıcı Tarayıcı Program Disk Klavye Internet GiriŞ/ǹk¹Ş Yap¹s¹ Text giriş/çıkışı aslında karakterlerin bir dizisidir. Stream (akış), I/O ile program arasındaki karakter akışı sağlayan kanallardır. Program açısından karakterler bir boru içerisinde sıralanmış gibidir. Karakterlerin dizilimi satırlar halindedir. Her satır : Sıfır veya daha fazla karaktere sahiptir. Yeni satır krakteri ( \n ) ile sonlandırılmıştır.
GiriŞ/ǹk¹Ş Yap¹s¹ Standart Streamler : stdin standart input : Genelde klavyeden gelen karakter dizilerini programa aktarmada kullanılan kanal. stdout standart output : Genelde ekrana programdan karakter dizisi akışında kullanılan kanal. stderr standart error : Genelde ekrana akış sağlar. Bu streamlerin kullanılabilmesi için stdio.h programa dahil edilmelidir. Karakterler için GiriŞ Fonksiyonlar¹ getchar : Buffer lı bir fonksiyondur. Tek karakter okumak için kullanılır. Kullanımı : int getchar(void); Dönüş değeri : Okunan karakteri geri döndürür. Karakter okuyamadığında ve sona ulaştığında EOF (end-of-file) karakterini döndürür. stdio.h, programa dahil edilmelidir. Örnek : char ch1, ch2; ch1 = getchar(); (ch2 = getchar())!= EOF //Karakter değişken tanımlama //Standart girişten okuma //Şart ifadesi
Karakterler için GiriŞ Fonksiyonlar¹ getch : Buffer lı olmayan bir fonksiyondur. Tek karakter okumak için kullanılır. Kullanımı : int getch(void); Dönüş değeri : Okunan karakteri geri döndürür. Hata döndürmez. Klavyeden basılan karakterin echosu ekranda görülmez. conio.h, programa dahil edilmelidir. Örnek : Karakterler için GiriŞ Fonksiyonlar¹ getche : Buffer lı olmayan bir fonksiyondur. Tek karakter okumak için kullanılır. Kullanımı : int getche(void); Dönüş değeri : Okunan karakteri geri döndürür. Hata döndürmez. Klavyeden basılan karakterin echosu ekranda görülür. conio.h, programa dahil edilmelidir. Örnek : char ch1; ch1 = getche(); //Karakter degisken //standart giristen okuma
Karakterler için GiriŞ Fonksiyonlar¹ getc : Dosyadan buffer lı okuma yapan bir fonksiyondur. Tek karakter okumak için kullanılır. Kullanımı : int getc(file *stream); Dönüş değeri : Okunan karakteri geri döndürür. Karakter okuyamadığında ve sona ulaştığında EOF (end-of-file) karakterini döndürür. stdio.h, programa dahil edilmelidir. Örnek : Karakterler için GiriŞ Fonksiyonlar¹ gets : stdin stream inden bir satırı almak için kullanılır. Kullanımı : char * gets(char *); Okuma başarılıysa argümanını geri döndürür. Okumada bir hata varsa veya dosya sonuna ulaşıldıysa NULL döndürür. stdio.h programa ilave edilmelidir. Örnek :
scanf Fonksiyonu Veri stdin den bir değişkene scanf fonksiyonu yardımıyla okunabilir. Kullanımı : int scanf(const char *format [, argument]...); scanf fonksiyonu, standart giriş stream i stdin den verileri okur; okuduğu bu verileri format string indeki forma uygun olarak argument de verilen lokasyona yazar. Geri dönüş değeri olarak, okuyup ilgili lokasyona yazdığı parametre sayısını döndürür. Dosya sonuna ulaşmış ise EOF karakterini döndürür. scanf Fonksiyonu int adet; float fiyat; 12 25.45 - scanf("%d %f", &adet, &fiyat);
scanf Fonksiyonu int adet; float fiyat; 12 25.45 - scanf("%d %f", &adet, &fiyat); scanf Fonksiyonu 12 25.45 - Giriş - Klavye Stream - stdin \n adet 12 fiyat 25.45 Hafıza - Değişkenler
Formatl¹ GiriŞ Çevrim Karakteri d i o u x yada X h l Anlamı İşaretli tamsayı okur (onluk sistem) İşaretli tamsayı okur (sekizlik, onluk, onaltılık) Sekizlik sistemde tamsayı okur. İşaretsiz tamsayı okur. Onaltılık sistemde tamsayı okur. short long Formatl¹ GiriŞ Çevrim Karakteri e yada E f g yada G l yada L Ondalıklı değer okur. Ondalıklı değer okur. Anlamı Üssel olarak ondalıklı bir değer okur. long. Öne eklenir. double yada long double okunacağını belirtir. c s Karakter okur. String okur.
Örnek Örnek /* Konu : Formatli Giris Ornek : Ondalik sayi giris */ #include<stdio.h> int main() { double x, y, z; printf("3 adet ondalik sayi girin :\n"); scanf("%lf %le %lg", &x, &y, &z); printf("girdiginiz Sayilar : \n"); printf("%f\n%f\n%f\n", x,y,z); } return 0;
Karakterler için ǹk¹Ş Fonksiyonlar¹ putchar : stdout çıkış stream inin geçerli pozisyonuna tek karakter yazmak için kullanılır. putchar ile integer da çıkış stream in yazdırılabilir, fakat sadece en alt seviyedeki 8 biti gözönüne alınır. Kullanımı : int putchar(int c); Geri dönüş değeri olarak yazılan karakteri geri döndürür. Hata oluştuğunda veya dosya sonuna ulaşıldığında EOF karakteri döndürülür. stdio.h dosyası programa ilave edilmelidir. Örnek : Karakterler için ǹk¹Ş Fonksiyonlar¹ putc : Çıkış stream in geçerli pozisyonuna tek karakter yazmak için kullanılır. putc ile integer da çıkış stream in yazdırılabilir, fakat sadece en alt seviyedeki 8 biti gözönüne alınır. Kullanımı : int putc(int c, FILE *stream); Geri dönüş değeri olarak yazılan karakteri geri döndürür. Hata oluştuğunda veya dosya sonuna ulaşıldığında EOF karakteri döndürülür. stdio.h dosyası programa ilave edilmelidir. Örnek : char ch = 'a'; putc(ch, stdout);
Karakterler için ǹk¹Ş Fonksiyonlar¹ puts : stdout çıkış stream ine bir string yazmak için kullanılır. String in sonundaki null ( \0 ) karakteri yeni satır ( \n ) karakteriyle yer değiştirilir. Kullanımı : int puts(const char *str); Başarılıysa geri dönüş değeri olarak negatif olmayan bir sayı geri döndürür. Başarısız olduğunda EOF karakteri döndürülür. stdio.h dosyası programa ilave edilmelidir. Örnek : printf Fonksiyonu Karakter dizilerini ve değerleri formatlı olarak standart çıkış stream i stdout a yazar. Kullanımı : int printf(const char *format [, argument]...); Eğer format stringini takip eden argument lar mevcut ise bu argument değerleri format ta verilen forma uygun olarak çıkışa yazar. Eğer format string ini takip eden argument lar yok ise format stringini çıkışa yazar. Geri dönüş değeri olarak, yazdığı karakter sayısını döndürür. Hata oluştuğunda negatif değer döndürür.
printf Fonksiyonu Stream - stdout \n c b a Çıkış -Ekran printf("abc\n"); printf Fonksiyonu 1 2 a ab 3 4 abc abc -
Formatl¹ ǹk¹Ş Ondalık sayıları istenen basamağa kadar yuvarlamak. Çıktıları sağa veya sola dayamak. Ondalık sayıları üstel ifade etmek. İşaretsiz tamsayıları sekizlik veya onaltılık düzende ifade etmek. Her tipteki veriyi istenen alan genişliğinde ve duyarlılıkta yazmak. Formatl¹ ǹk¹Ş -Tamsay¹lar¹Yazd¹rmak Kullanımı : %cevrim_karakteri Çevrim Karakteri d i o u x yada X h l Anlamı İşaretli tamsayı (onluk sistem). İşaretli tamsayı (onluk sistem). İşaretsiz tamsayı (sekizlik sistem). İşaretsiz tamsayı (onluk sistem). İşaretsiz tamsayı (onaltılık sistem). short long
Formatl¹ ǹk¹Ş Kullanımı : %cevrim_karakteri Ondalıklı Sayılar Çevrim Karakteri Anlamı e yada E Ondalık bir değeri üssel yazmak. f Ondalık sayıyı yazmak g yada G l Ondalık değerleri f yada e (yada E) biçiminde yazmak. Önemli basamak sayısı 6 dır. long String ve Karakterler Çevrim Karakteri s c Bir string i yazmak Anlamı Bir tek karakteri yazmak. Örnek /* Konu : Formatlı Giris/Cikis Ornek : Ondalik Sayi Formatli Cikis */ #include<stdio.h> int main() { float sayi = 12.345678; printf("f cevrim kodu : %f\n", sayi); printf("e cevrim kodu : %e\n", sayi); printf("e cevrim kodu : %E\n", sayi); printf("g cevrim kodu : %g\n", sayi); printf("g cevrim kodu : %G\n", sayi); } return 0;
Alan GeniŞliĆi ve Duyarl¹l¹k Verinin yazdırılacağı alanın kesin boyutları alan genişliği ile belirlenir. Eğer alan genişliği yazdırılacak sayının genişliğinden büyük ise veri alan içinde otomatik sağa dayanır. Tamsayılarda duyarlılık : Eğer yazdırılan değer belirtilen duyarlılıktan daha az basamağa sahip ise sayının önüne fark kadar sıfır konur. Tamsayılar için default duyarlılık değeri 1 dir. Ondalık sayılarda duyarlılık : Ondalık kısımda yazdırılacak basamak sayısıdır (e, E, f için). Yazdırılacak önemli basamakların sayısıdır (g ve G için). Duyarlılık orginal değerdeki ondalık basamak sayısından küçük ise yumarlama olur. String lerde duyarlılık yazdırılacak karakter sayısıdır. Kullanımı : %[alan_genisligi][.duyarlilik]cevrim_karakteri Örnek /* Konu : Formatlı Giris/Cikis Ornek : Tamsayi Alan ve Duyarlilik */ #include<stdio.h> int main() { int sayi1 = 1; int sayi2 = 12; int sayi3 = 123; int sayi4 = 1234; int sayi5 = 12345; printf("alan Genisligi :\n"); printf("%3d\n", sayi1); printf("%3d\n", sayi2); printf("%3d\n", sayi3); printf("%3d\n", sayi4); printf("%3d\n", sayi5); printf("duyarlilik :\n"); printf("%.3d\n", sayi2); printf("%.3d\n", sayi3); printf("%.3d\n", sayi4); } return 0;
Örnek /* Konu : Formatlı Giris/Cikis Ornek : Ondalik sayi Alan ve Duyarlilik */ #include<stdio.h> int main() { float sayi1 = 1234.1236; float sayi2 = 123.1236; float sayi3 = 12.1236; float sayi4 = 1.1236; printf("alan Genisligi ve Duyarlilik :\n"); printf("%8.4f\n", sayi1); printf("%8.4f\n", sayi2); printf("%8.4f\n", sayi3); printf("%8.4f\n", sayi4); printf("%8.3f\n", sayi2); printf("%8.5f\n", sayi3); } return 0; Bilgi Karakterleri Bilgi Karakteri \ \ \? \\ \a \b \f \n \r \t \v Anlamı Tek tırnak karakteri ( ) Çift tırnak karakteri ( ) Soru işareti (?) Ters bölü karakteri (\) Duyulabilen veya görülebilen alarm İmpleci geçerli pozisyonundan bir geri alır. İmleci bir sonraki sayfanın başına taşır. İmleci bir sonraki yeni satırın başına alır. İmleci bulunduğu satırın başına taşır. Yatay sekme Düşey sekme