PROGRAMLAMA Temel Giriş/Çıkış Fonksiyonları

PROGRAMLAMA Temel Giriş/Çıkış Fonksiyonları
1
726
Forum sitemizde mesaj sayısı kasmak için oto mesaj yanıtlayıcı programlar kullanmak kesinlikle yasaktır.
Lütfen yorum yaparken ( ty,tyty, +++++, up up, asasdasf ) vb. anlamsız ifadeler kullanmayalım. Bu şekilde yorum yapan üyelerin üyelikleri durdurulacaktır.
Spam mesajlar atan kişileri RAPOR butonu ile bize bildiriniz!

Mia

28 Nis 2020
930
192
314
Giriş

Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden veri girişi yapmasına izin verir. Temel giriş/çıkış fonksiyonları kullanılırken stdio.h başlık dosyası programın başına eklenmelidir. Bu kısımda, en çok kullanılan giriş/çıkış fonksiyonları anlatılacaktır.


4.1 printf() Fonksiyonu

Standart C kütüphanesinde bulunan printf() fonksiyonu, değişkenlerin tuttuğu değerleri, onların adreslerini veya bir mesajı ekrana belli bir düzenle (format) standart çıkışa (stdout), yani ekrana, yazdırmak için kullanılan fonksiyondur. Daha önce yazılan örnek programlarda printf() fonksiyonundan yararlanmıştık. Şimdi bu fonksiyonun nasıl kullanıldığına bakalım.

Genel yazım biçimi:
int printf(const char *format, ...);

Basit olarak ekrana Hata oluştu!.. şeklinde bir mesaj yazırma işlemi:

printf("Hata Oluştu!..");

şeklindedir. Çoğu zaman ekrana, programda kullanılan bir değişkenin değeri yazdırılmak istenebilir. Örneğin ekrana bir tamsayı değişkeninin içeriğini basırımak için, printf()

....
int x = 12;
printf("x in değeri %d dir", x);
....

gibi kullanılır. Bu program parçasının ekran çıktısı şöyle olacaktır:
x in değeri 12 dir

Bu örnekte printf fonksiyonuna 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).

*format üç kısımdan oluşmaktadır:
  1. Düz metin (literal string): yazdırılmak istenen ileti.
    Örneğin: printf("Ben gelmedim kavga için..."); gibi.


  2. Konrol karakterleri (escape squence): değişkenlerin ve sabitlerin nasıl yazılacağını belirtmek veya imlecin alt satıra geçirilmesi gibi bazı işlemlerin gerçekleştirilmesi için kullanılır. Bu karakterler Tablo 4.1'de listelenmiştir.
    Örneğin: printf("\tDostun evi gönlüdür...\n"); gibi.
    Tablo 4.1: Kontrol karakterleri
    Resimleri görmek için kayıtlı olmalısınız


  3. Tip belirleyici (conversion specifier): % işareti ile başlar ve bir veya iki karakterden oluşur (%d gibi). Ekrana yazdırılmak istenen değişkenin tipi, % işaretinden sonra belirtilir (Bkz. Tablo 4.2) Örneğin: printf("x in değeri %d dir"); gibi.
    Tablo 4.2: Tip karakterleri
    Resimleri görmek için kayıtlı olmalısınız
Tip karakterlerini kullanarak, birden çok veri tipi yazdırılabilir. Örneğin:

...
int not= 12;
float pi = 3.14;
char kr = 'A';

printf(" not = %d , pi = %f ve kr = %c dir", not, pi, kr);
...

gibi.
printf() fonksiyonu esnektir. Parametreler herhangi bir C deyimi olabilir. Örneğin x ve y nin toplamı şöyle yazılabilir:

printf("%d", x+y);



printf fonksiyonu kullanımı Program 4.1'de verilmiştir.

Program 4.1: printf() fonksiyonunun kullanımı
Resimleri görmek için kayıtlı olmalısınız


ÇIKTI

Resimleri görmek için kayıtlı olmalısınız


printf fonksiyonunun geri dönüş değeri int tipindedir. Bu geri dönüş değeri çıktının kaç karakter olduğunu gösterir. Yani, printf fonksiyonu, *format ile tanımlanmış karakter topluluğunun kaç bayt olduğu hesaplar. Program 4.2, printf'in bu yönünüde ortaya çıkaran bir programdır.

Program 4.2: printf() fonksiyonunun kullanımı
Resimleri görmek için kayıtlı olmalısınız


ÇIKTI
Resimleri görmek için kayıtlı olmalısınız


Program 4.3: scanf() fonksiyonun kullanımı


11. satırdaki işlemle, hem ekrana Ugurlu sayim = 1234 iletisi bastırılmakta, hem de karSay değişkenine bu iletinin uzunluğu atanmaktadır. Ekrana basılan karakterlerin sayısı (\n karakteri dahil) 20 dir.

4.2 scanf() Fonksiyonu

Birçok programda ekrana verilerin bastırılmasının yanısıra klavyeden veri okunması gerekebilir. scanf() fonksiyonu klavyeden veri okumak için kullanılan fonksiyondur. printf() gibi scanf() fonksiyonuda Tablo 4.1 ve Tablo 4.2'de verilen karakterleri kullanır. Örneğin klaveden bir x tamsayısı okumak için:

scanf("%d",&x);
satırını yazmak yeterli olacaktır. Klavyeden iki farklı sayı okunmak istendiğnde scanf() fonksiyonu şöyle kullanılabilir:

scanf("%d %f",&x,&y);
veriler klavyeden
16 1.56
yada
16 1.56
veya
16
1.56

şekilinde girilebilir. Program 4.3'de scanf() fonsiyonunun kullanımı gösterilmiştir.

Program 4.3: scanf() fonksiyonun kullanımı
Resimleri görmek için kayıtlı olmalısınız


ÇIKTI
Resimleri görmek için kayıtlı olmalısınız


4.3 puts() Fonksiyonu

Ekrana yazdırılacak ifade bir karakter topluluğu ise, printf()'e alternatif olarak puts() fonksiyonu kullanılabilir. Ancak puts(), ekrana bu karakter topluluğu yazdıktan sonra, imleci alt satıra geçirir. Buna göre:

printf("Sevgi varlığın mayasıdır.\n");
ile
puts("Sevgi varlığın mayasıdır.");
kullanımları eşdeğerdir.
puts() fonksiyonu Tablo 4.1 de verilen kontrol karakterleri ile kullanılabilir.

puts("Bu birinci satır...\nBu ikinci satır.");

Bu birinci satır...
Bu ikinci satır.


4.4 gets() Fonksiyonu

Klavyeden bir karakter topluluğu okumak için kullanılır. Okuma işlemi yeni satır karakteriyle(\n) karşılasılıncaya kadar sürer. puts() - gets() arsındaki ilişki, printf() - scanf() arasındaki gibidir. Yani,

scanf("%s",str);
ile
gets(str);
aynı anlamdadır. puts() - gets() fonksiyonlarının kullanımı daha sonra ayrıntılı işlenecektir.


4.5 getchar() Fonksiyonu

Bu fonksiyon ile standart girişten bir karakter okunur. Programı istenen bir yerde dudurup, bir karakater girinceye kadar bekletir. Örneğin:

...
for(i=0; i<10; i++)
{
getchar();
printf("%d\n",i);
}
...

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.


4.6 Formatlı Çıktı

Bundan önceki programlardaki değişkenler serbest biçimde (free format), yani derleyicinin belirlediği biçimde ekrana yazdırılmıştı. Bazen giriş ve çıkışın biçimi kullanıcı tarafından belirlenmesi gerekebilir. Bu işlem:

Tamsayılarda %d yerine %
wd
Gerçel sayılarda %f yerine %
w.kf
Stringlerde %s yerine %
ws
biçimindeki kullanım ile sağlanır. Burada w yazılacak olan sayının alan genişliği olarak adlandırılır. Gerçel bir değişken ekrana yazılacaksa, değişkenin virgülden sonra kaç basamağının yazdırılacağı k sayısı ile belirlenir. Ancak w > k + 2 olmalıdır.

int i=583,j=1453;

printf("%d %d\n",i,j); /* serbest biçim */
printf("%5d %8d\n",i,j); /* formatlı */

program parçasının ekran çıktısı şöyledir:

ÇIKTI
Resimleri görmek için kayıtlı olmalısınız


Birinci satır serbest formatta ikinci satır ise formatlı yazılmıştır. i değişkeninin tuttuğu 583 sayısı %5d formatıyla yazdırılınca, bu sayı için 5 alan genişliği tanımlanır arakasından sağdan başlayarak sayı bu alana yazılır. Benzer olarak j değişkeni, 8 alan genişlikli bir bölgeye yazılır.

Gerçel sayılarda iş biraz daha karışık. Örneğin:
int x=123.456;

printf("%f\n",x); /* serbest biçim */
printf("%8.2f\n",x); /* formatlı */

program parçası çalıştırıldığında aşağıdaki sonuç gözlenir:

ÇIKTI
Resimleri görmek için kayıtlı olmalısınız


Birinci satır serbest formatta ikinci satır ise formatlı yazılmıştır. İkinci satırda x değişkeni için ayrılan alan genişliği 8 ve noktadan sonra 2 basamağa kadar hassasiyet önemsenmiştir. Dikkat edilirse noktadan sonra sayı uygun bir şekilde yuvarlanmış ve sayı sağa dayalı olarak yazılmıştır.

Son olarak formatlı çıktı ile ilgili bir örnek Program 4.4'de verilmiştir. İnceleyiniz.
Program 4.4: printf() in formatlı kullanımı
Resimleri görmek için kayıtlı olmalısınız


ÇIKTI
Resimleri görmek için kayıtlı olmalısınız
 

xreal13x

Üye
12 May 2021
70
5
22
sen her şeyde en iyisisin, her gün büyümemize yardımcı olabilecek değerli bilgileri paylaştığın için çok teşekkür ederim
 
Forum sitemizde mesaj sayısı kasmak için oto mesaj yanıtlayıcı programlar kullanmak kesinlikle yasaktır.
Lütfen yorum yaparken ( ty,tyty, +++++, up up, asasdasf ) vb. anlamsız ifadeler kullanmayalım. Bu şekilde yorum yapan üyelerin üyelikleri durdurulacaktır.
Spam mesajlar atan kişileri RAPOR butonu ile bize bildiriniz!