© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Chapter 9 – Biçimlendirilmiş Giriş/Çıkış Outline 9.1Giriş 9.2Akışlar (Streams) 9.3printf ile çıkışı biçimlendirmek 9.4Tam sayıları yazdırmak 9.5Ondalıklı sayıları yazdırmak 9.6String ve karakteri yazdırmak 9.7Diğer dönüşüm belirteçleri 9.8Alan genişliği ve duyarlılık ile yazdırmak 9.9printf Biçim-Kontrol Dizesinde bayrakları Kulanmak 9.10Çıkış Dizilerini ve Hazır Bilgileri(Literal) yazdırmak 9.11scanf ile Girişi Biçimlendirmek
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 2 Objectif Bu bölümde, şunları öğreneceksiniz: –Giriş ve Çıkış Akışları –Bütün print formatlarını kullanabilmek –Bütün input formatlarını kullanabilmek
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Giriş Bu Bölümde –Sunumun sonuçları(Presentation of results) –scanf ve printf –Akışlar (Streams (input ve output)) gets, puts, getchar, putchar ( içindeki )
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Akışlar Akışlar –Bir satırdaki karakterlerin sıralarını düzenler Each line consists of zero or more characters and ends with newline character Bütün satırlar sıfır yada daha fazla karakter içerir ve yeni satır karakteri ile biter ANSI C en az 254 karakterlik satırları satırları desteklemesi gerekir –Bütün Giriş ve Çıkışları Gerçekleştirir. –Can often be redirected Standart giriş – Klavye Standart çıkış – Ekran Standart hata – Ekran Daha fazlası 11 Bölümde mevcut
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved printf ile çıkışı biçimlendirmek printf –Doğru çıkış formatı Maddeleri(specification) dönüştürme: bayraklar, alan genişlikleri, vb. –Yuvarlamayı gerçekleştirir, kolonları sıraya koymaya yarar, sağ/sol hizalamaya yarar, karakterleri kelimesi kelimesine araya ekler, üstel (exponential) format, onaltılık (hexadecimal) format, ve sabit genişlik sağlar –Format –printf ( format-kontrol-string, diğer-argumanlar ); –Format kontrol string: çıkış formatını tanımlar –Diğer-argumanlar: biçim kontrol dizisindeki her dönüşüm tarafının karşılığıdır. Her dönüşüm tarifi biir tüzde işareti ile başlar ve bir dönüşüm belirteci ile sonlanır.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Tam sayıları yazdırmak
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Tam sayıları yazdırmak Tam sayı (Integer) –Bütün sayılar (virgüllü olmayanlar): 25, 0, -9 –pozitif, negatif, ya da sıfır
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 8 fig09_02.c
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 9 Program Ouptut c7 1C7
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Ondalıklı sayıları yazdırmak Ondalıklı sayılar –Ondalıklı kısım içerir ( 33.5 ) –Üssel yazılım biçim şu şekilde x 10² gösterilir şu şekilde 1.503E+02 gösterilir, üssel e ya da E kullanılır –f – dönüşüm beliteci, her zaman noktanın solunda en az bir basamakyazdırır. –g (or G ) – dönüşüm beliteci,bir birini izleyen sıfırları yazdırmadan e(E) ya da f biçimindeyazdırır. –Üssel yazılım biçimine çevrildiğinde üs -4 ten küçüktür, –Ondalıklı sayılar için kullanılan tüm belirteçlerin aksi belirtilmedikçe 6 duyarlılıgına sahip olduğunu hatırlayınız.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Printing Floating-Point Numbers
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 12 fig09_04.c Program Output e e E e E+006
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved String ve karakteri yazdırmak c –char argumanını yazdırmak için kullanılır –String in ilk karakterini yazdırmak için kullanılmaz. s –Cahar göstericilerine ihtiyaç duyar. –Karakterleri Null (‘\0’) oluncaya kadar yazdırır. –char argumanını yazdırmak için kullanılamaz Remember –Karakter sabitleri için tek tırnak kullanılır (‘z’) –Stringler için çift tırnak kullanılır (“z”)
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 14 fig09_05.c A This is a string This is also a string
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Diğer dönüşüm belirteçleri p –Göstericinin değerini gösterir (adresini) n –O andaki printf ifadesinde yazdırılan karakter sayısını tutar –Değerin tutulduğu tamsayı değişkenini gösteren bir gösterici alır –%n dönüşüm belirteci ile hiç birşey yazdırılamaz. –bütün printf çağırımı değer döndürür Sayı karakterleri çıkışı Eyer hata oluşursa negatif sayı % –Yüzde işaretlerini yazdırmak için kullanılır –%
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Diğer dönüşüm belirteçleri
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 17 fig09_07.c (1 of 2)
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 18 The value of ptr is 0012FF78 The address of x is 0012FF78 Total characters printed on this line: 38 This line has 28 characters 28 characters were printed Printing a % in a format control string Program Output
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Alan genişliği ve duyarlılık ile yazdırmak Alan Genişliği –Verinin yazdırılacağı alanın kesin boyutları alan genişliği ile belirlenir. –Eğer alan genişliği yazdırılacak veriden büyükse, veri o alan içinde otomatik olarak sağa yaslanacaktır. –Alan genşliğini belirten bir tamsayı, dönüşüm tarifi içinde yüzde işareti (%) ile dönüşüm belirteci arasına yerleştirilir. –%4d – alan genişliği 4 olur
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Alan genişliği ve duyarlılık ile yazdırmak Duyarlılık –Anlamı veri türüne bağımlı olarak değişir –Tam sayılar ( varsayılan deüğer(default) 1 ) Eğer yazdırılan değer belirlenen duyarlılıktan daha az basamağa sahipse,toplam basamak sayısı duyarlılığa eşit olana kadar yazdırılan değerin önüne sıfır eklenir. –Ondalıklı sayılar Ondalık kısımda yazdırılacak basamak sayısıdır ( e ve f ) –G / g – yazdırılacak önemli basamakların maksimum sayısıdır. –Strings Stringten yazdırılacak en fazla karakter sayısıdır. –Format % işareti ile dönüşüm belirteci arası (.) ve duyarlılığı belirten bir tam sayı değeri yerleştirirlir. %.3f
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Alan genişliği ve duyarlılık ile yazdırmak Alan genişliği ve duyarlılık Aşağıdaki şekilde tanımlanabilir. %width.precision %5.3f –Negatif alan genişliği– sola yaslanır –pozitif alan genişliği– sağa yaslanır –Duyarlılık pozitif olmak zorunda –Biçim kontrol dizesinden sonra gelen arguman listesi içinde tamsayı deyimleri olarak belirtilebilir. Alan genişliği ya da duyarlılığı yerine yıldız karakteri (*) yerleştirilir. –Eşleşen int argümanı hesaplanır ve yıldız işareti yerine kullanılır örnek: printf( "%*.*f", 7, 2, );
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 22 fig09_08.c
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Program Output
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 24 fig09_09.c
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 25 Using precision for integers Using precision for floating-point numbers e Using precision for strings Happy Birth Program Output
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved printf Biçim-Kontrol Dizesinde bayrakları Kulanmak Bayraklar –Biçim kontrol dizesi içinde bir bayrak kullanmak için, bayrağı yüzde işaretinin hemen sağına koymak gerekir. –Birden fazla bayrak tek bir dönüşüm belirteci içinde birleştirilir.
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 27 fig09_11.c Programın çıktısı hello 7 a hello 7 a
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 28 fig09_12.c Programın çıktısı
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 29 fig09_13.c Programın çıktısı
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved x593 0X fig09_14.c Programın çıktısı
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 31 fig09_15.c Programın çıktısı
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Çıkış Dizilerini ve Hazır Bilgileri(Literal) yazdırmak Hazır bilgileri bastırmak –Çoğu karakterler bu şekilde yazdırılır. –Biçim kontrol dizesini sınırlandıran tırnak işareti gibi(“) sorunlu bazı karakterler vardır. –Yeni satır sekme gibi çeşitli kontrol karakteri, çıkış sıraları ile temsil edilmelidir. Bir çıkış sırası ters bölü (\) sonra, bir çıkış karakteri ile oluşturulur.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved Çıkış Dizilerini ve Hazır Bilgileri(Literal) yazdırmak
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved scanf ile Girişi Biçimlendirmek
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved scanf ile Girişi Biçimlendirmek
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved scanf ile Girişi Biçimlendirmek scanf –Giriş formatı –Yaptıkları Bütün veri türlerinin girişini sağlar. Belirli karakterlerin girişini sağlar. Belirli karakterlerin atlanması sağlar. Format –scanf ( format-kontrol-string, diğer-argumanlar); –Format-kontrol-string Giriş biçimini tanımlar –diğer-argumanlar Gösterici değişkenlerinin saklanıldığı yerdir.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved scanf ile Girişi Biçimlendirmek Tarama kümeleri –Köşeli parantez [] içine yazılmış karakter kümesidir Yüzde % işaretinden sonra yazılır –Giriş akışındaki karakterler arasında tarama kümesi içinde belirtilenlerle eşleşenleri tarar Herhangi bir anda karakter eşlemesi olduğunda, eşlenen karakter, tarama kümesinin ilgili argümanı olan karakter dizisini gösteren gösterici içine depolanır. Tarama kümesi, karakter almayı tarama kümesi içinde yer almayan ilk karakterle karşılaştığında durdurur. –Ters Tarama Kümeleri Düzeltme imi kullanılır. ^ : [^aeiou] Ters bir tarama kümesi içinde bulunan bir karakter ile karşılaşıldığında giriş sonlanır. Atlanan karakterler –Scanf gereksiz karakterleri eleyemez. Bu sebepten, scanf atama bastırma karakteri olan * karakterini sunar. –Format kontrolu iceren karakterler atlanır.
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 38 Enter seven integers: x The input displayed as decimal integers is: fig09_18.c Program Output
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 39 fig09_19.c
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 40 Enter a string: Sunday The input was: the character "S" and the string "unday" fig09_20.c Program Output
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 41 Enter string: ooeeooahah The input was "ooeeooa" fig09_21.c Program Output
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 42 Enter a string: String The input was "Str" fig09_22.c Program Output
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 43 Enter a six digit integer: The integers input were 12 and 3456 fig09_23.c Program Output
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 44 fig09_24.c
Outline © Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 45 Program Output Enter a date in the form mm-dd-yyyy: month = 11 day = 18 year = 2003 Enter a date in the form mm/dd/yyyy: 11/18/2003 month = 11 day = 18 year = 2003