Ders5: Temel G/Ç Fonksiyonları
Temel giriş/çıkış fonksiyonları kullanılırken stdio.h başlık dosyası
programın başına eklenmelidir. Bu fonsiyonlardan en çok kullanılanlar
aşağıda verillmiştir. Fakat bunların dışında olan bir kaç fonksiyon daha vardır.
printf() Fonksiyonu
Standart C kütüphanesinin bir parçası olan printf() fonksiyonu,
değişkenlerin içeriğini veya bit mesajı ekrana bir düzenle(formatla) standart çıkışa(stdout)
yazmak için belki de en çok kullanılan fonksiyondur. Daha önce yazılan örnek programlarda
printf() fonksiyonu kullanılmıştı. Şimdi bu fonsiyonun nasıl kullanıldığı
açıklanacaktır.
Basit olarak eğer ekrana Hata oluştu!.. şeklinde bir mesaj yazdırmak için,
printf fonksiyonu çağırmak ve fonksiyon içinde, çift tırnaklar arasına,
bu iletiyi yazmak yeterli olacaktır. Yani:
printf("Hata Oluştu!..");
Çoğu zaman ekrana, programda kullanılan bir değişkenin değeri yazdırılmak istenebilir.
Örneğin ekranda bir alt satıra geçerek bir x değişkeninin sayısal değerini
ekrana yazdırma işlemini gerçekleştirmek istediğinizi varsayalım. Bu durumda
printf() fonksiyonun kullanımı şu şekilde olacaktır:
printf("\nx in değeri %d dir",x);x=12 için bu işlemin sonucunda ekrana şu ileti çıkacaktır:
x in değeri 12 dir
Bu örnekte printf fonsiyonuna iki parametre aktarılmıştır. Birincisi
ekranda gösterilecek ve çift tırnaklar arasına yazılan ifadeler, ikincisi ise
ekranda sayısal değeri gösterilmek istenen değişken(x). Ayrıca bir alt satıra geçme
işlemi \n ile gerçekleştirilmiştir.
Daha genel bir ifade ile
printf fonksiyonu iki kısımdan oluşur. Şöyle ki:
printf("karakter dizisi formatı",değişkenler);
Burada, birinci parametre karakter dizisi formatı, değişkenler
kısmı ise ikinci parametredir. karakter dizisi formatı üç kısımdan oluşmaktadır:
- Düz metin(literal string): yazdırılmak istenen ileti.
- Konrol karakterleri(escape squence): değişkenlerin ve sabitlerin nasıl yazılacağını belirtmek ve imlecin alt satıra geçirilmesi gibi bazı basit işlemlerin gerçekleştirilmesi için kullanılır. Bu karakterler Tablo 5.1 de listelenmiştir.
- Tip belirleyici(conversion specifier): % işaretinden oluşur(%d gibi). Ekrana yazdırılmak istenen değişkenin tipi, % işaretinden sonra belirtilir (Bkz. Tablo 5.2 ). Yani % işaretinin hemen ardına yazılan bir veya bir kaç karakter, ilgili değişken ve sabitin nasıl yazılacağını düzenleme bilgisidir.
Karakter | Anlamı |
\a | Ses üretir(alert) |
\b | imleci bir sola kaydır(backspace) |
\f | Sayfa atla. Bir sonraki sayfanın başına geç(formfeed) |
\n | Bir alt satıra geç(newline) |
\r | Satır başı yap(carriage return) |
\t | Yatay TAB(Horizontal TAB) |
\v | Dikey TAB(vertical TAB) |
\" | Çift tırnak karakterini ekrana yaz |
\' | Tek tırnak karakterini ekrana yaz |
\\ | \ karakterini ekrana yaz |
%% | % karakterini ekrana yaz |
Tip Karakteri | Anlamı | Tip |
%c | tek bir karakter | char |
%d | işaretli ondalık tamsayı | int, short |
%ld | uzun işaretli ondalık tamsayı | long |
%u | işaretsiz ondalık tamsayı | unsigned int, unsigned short |
%f | Gerçel sayı | float, double |
%s | karakter dizisi (string) | char |
%lu | işaretsiz uzun tamsayı | unsigned long |
Tip karakterlerini kullanarak, not=12, pi=3.14 ve kr='A' değişkenleri printf() fonksiyonu
ile ekrana yazdırılmak istensin. Bunun için:
... int not=12; float pi=3.14; char kr='A'; ... printf("Not=%d , pi=%f ve kr=%c dir",not,pi,kr); ...printf() fonksiyonu ile yazdırabilecek ifadeler için bir sınır yoktur. parametreler herhangi bir C deyimi olabilir. Örneğin x ve nin toplamı söyle yazılabilir:
z = x + y; printf("%d",z);Bu ifade şu şekilde de yazılabilir:
z = x + y; printf("%d",x+y);
printf fonksiyonu kullanımı Program 5.1 te verilmiştir.
Program 5.1 : printf() fonksiyonunun kullanımı
1: /* sayısal değerleri ekrana yazdırmak için printf fonksiyonunun kullanımı */ 2: #include <stdio.h> 3: 4: /* global değişken tanımlamaları */ 5: int a = 2, b = 10, c = 50; 6: float f = 1.05, g = 25.5, h = -0.1 ,yuzde; 7: 8: main() 9: { 10: printf("\nTAB kullanılmadan yazılan tamsayılar : %d %d %d", a, b, c); 11: printf("\nTAB kullanılarak yazılan tamsayılar : \t%d \t%d \t%d", a, b, c); 12: 13: printf("\nÜç reel sayının tek satırda yazılması : %f\t%f\t%f", f, g, h); 14: printf("\nÜç reel sayının üç satırda yazılması: \n \n\t%f\n\t%f\n\t%f", f, g, h); 15: 16: yuzde = (25/220)*100.0; 17: printf("\n220 ün %%25 i %f dir", yuzde); 18: printf("\n%f/%f işleminin sonucu = %f\n", g, f, g / f); 19: 20: printf("\n program sonunda beep sesi çıkar...\a"); 21: 22: return 0; 23: } TAB kullanılmadan yazılan tamsayılar : 2 10 50 TAB kullanılarak yazılan tamsayılar : 2 10 50 Üç reel sayının tek satırda yazılması : 1.050000 25.500000 -0.100000 Üç reel sayının üç satırda yazılması: 1.050000 25.500000 -0.100000 220 nin %25 i 11.363636 dir 25.500000/1.050000 işleminin sonucu = 24.285715 program sonunda beep sesi çıkar...
Program 5.1 , printf() fonksiyonu ile değişkenlerin ekrana nasıl yazıldığını
ve kontrol karakterlerinin kullanımını göstermektedir. 5. ve 6. satırda değişkenler
global olarak bildirilmiştir. 10. ve 11. satırlarda üç tamsayının ekrana sırasıyla
yanyana TABlı(\t) TABsız olarak yazdırılmıştır. 13. ve 14. satırlarda ise
üç reel sayının yan yana ve alt alta kullanımı gösterilmiştir. 17. satırda
yüzde değişkenine atanan değerin nasıl yazılacağı görülmektedir. 18.
satırda g/f oranının başka bir değişkene aktarılmadan da yazdırılabileceğine
dair bir örnektir. Program sonlanmadan önce beep sesinin duyulmasını 20. satırdaki
\a kontrol karakteri sağlamıştır.
Bazen bir reel sayı ekrana sadece üç basmak hassasiyetle yazdırılmak istenebilir.
Bunun için %f tip karakterinden önce hassasiyet(virgülden öce ve sonra) yazılır. Şöyle ki:
float x = 12.123548; printf("%f in üç basamak hassasiyetli hali %5.3f dür.",x,x); 12.123548 in üç basamak hassasiyetli hali 12.124 dür.puts() Fonksiyonu
#include <stdio.h> puts( katar );
katar olarak belirtilen karakter topluluğunu ekrana yazdıktan sonra,
imleci alt satıra geçirir. Örneğin:
puts("puts() fonksiyonunun gösterimi!");şekinde kullanılırsa çıkış şöyle olacaktır.
puts() fonksiyonunun gösterimi!
puts() fonksiyonu Tablo 2.7 de verilen kontrol karakterleri ile kullanılabilir.
puts("Bu birinci satır...\nBu ikinci satır..."); Bu birinci satır... Bu ikinci satır...scanf() Fonksiyonu
Birçok programda ekrana verilerin yazılmasının yanı sıra klavyeden veri okunması gerekebilir.
scanf() fonksiyonu bu amaçla kullanılan fonksiyondur. printf() gibi
scanf() fonksiyonuda Tablo 5.1 ve Tablo 5.2 de
verilen karakterleri kullanır. Örneğin klavyeden bir x tamsayısı
scanf("&d",&x);
satırını yazmak yeterli olacaktır. burada & işareti adres operatörü olarak adlandırılır ve
Pointerler kısmında ayrıntılı olarak açıklanacaktır. Klavyeden iki farklı sayı
okunmak istendiğinde scanf() fonksiyonu şöyle kullanılır:
scanf("%d %f",&x,&y);veriler
16 1.568yada
16 1.568veya
16 1.568şekilinde okunabilir. Program 5.2 te scanf() fonksiyonunun kullanımı gösterilmiştir.
Program 5.2 : scanf() fonksiyonun kullanımı
1: /* scanf() fonksiyonu ile int, char ve float tipindeki verilerin okunması */ 2: #include <stdio.h> 3: 4: main() 5: { 6: int x; 8: float y; 9: char kr; 10: 11: printf("Bir tamsayı girin :"); 12: scanf("%d",&x); 13: printf("Bir karakter girin :"); 14: scanf("%c",&kr); 15: printf("Bir reel sayı girin :"); 16: scanf("%f",&y); 17: 18: printf("tamsayı :%d\nkarakter :%c\nreel sayı :%f olarak girdin."); 19: 20: return 0; 21: }gets() Fonksiyonu
Klavyeden bir karakter topluluğu, katar, okumak için kullanılır.
Okuma işlemi yeni satır karakteriyle karşılaşılıncaya kadar sürer.
puts()-gets() arsındaki ilişki, printf()- scanf() arasındaki gibidir.
puts() ile ekrana bir katar yazdırılırken, gets() ile okunur. Örneğin:
... char ktr[10]; puts("Bir şeyler yazın:"); gets(ktr); ...
Yukarıdaki program parçası, klavyeden girilen karakterlerin,
gets() fonksiyonu ile ktr katarına
aktarmak için kullanılır. ktr[10] şeklindeki kullanım girilen katarın içerisinden
ilk 10 karakteri değerlendir manasındadır. Bu kullanım daha sonra açıklanacaktır.
getchar() Fonksiyonu
Standart girişten bir karakter okur. Programı istenen bir yerde durdurup, bir
karakter
girinceye kadar bekletir.Örneğin:
... for(i=0;i<10 data-blogger-escaped-...="" data-blogger-escaped-d="" data-blogger-escaped-getchar="" data-blogger-escaped-i="" data-blogger-escaped-n="" data-blogger-escaped-printf="">Yukarıdaki program parçası 0-9 arası sayıları sırasıyla ekranda göstermek için kullanılır. Fakat her rakamı yazdırılmadan önce klavyeden herhangi bir karakter girip ENTER tuşuna basılması beklenir. Bu bekleme getchar() fonksiyonu ile gerçekleştirilir.
Hiç yorum yok:
Yorum Gönder