5 Ocak 2014 Pazar

C dili Temel G/Ç Fonksiyonları - Ders5

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.

Tablo 5.1 : Kontrol karakterleri
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
Tablo 5.2 : Tip karakterleri
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.568
yada
16        1.568
veya
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