AMIGA ve C (3)
Retro bilgisayarINPUT VE OUTPUT
Bilgisayarlarda gerekli bilginin girişi ve işlenmiş bilginin çıkışı için kullanılan keyboard ve ekran gibi donanımların işlevlerini yerine getirmekte kullandıkları getchar( ) ve putchar( ) fonksiyonlarını tanıyalım. Getchar( ) ve putchar( ) tek bir karakter uzunluğundaki bilginin giriş ve çıkış işlevini yerine getirir. Getchar( ) fonksiyonu her çağrılışta bir karakter uzunluğundaki bilgiyi keyboard'dan alır, benzer şekilde putchar( ) bir karakterlik bilgiyi ekrana gönderir.
Getchar( ) Kullanımı:
C = getchar( ); şeklindedir. Böylece getchar( ) ile klavyeden okunan ASCII kodları C değişkeninde saklanır. Bu bilgiyi ekrana aktarmak istersek, putchar(c)
fonksiyonunu kullanmamız gerekir.
Putchar( ) içinde yer alan c değeri getchar( ) ile elde edilen değeri içeren değişkendir. Kısa bir programla anlatılanları özetleyelim:
main ( ) / * keyboard okunan
bilginin ekrana aktarılması*/
int c;
c — getchar ( ) ;
while (c ! - EOF) |
putchar (©);
c — getchar ( )
|
|
Program getchar( ) ile okunan karakterin putchar(c) ile ekrana çıkışını sağlamaktadır. (!=) ifadesi (eşit değil) mantıksal durumuna karşılık gelmektedir. Önceden anlatılan while işlemi (c != EOF) şartı ile ortadan kalkana kadar devam etmektedir. EOF (end of file) gösterimi karakter girişinin sona erdiğini ifade eder. EOF değeri -1 veya 0'dır ve sembolik bir sabittir. Büyük harfle yazılmış olması da bunu göstermektedir. Programda önemli bir nokta c değerinin karakter değil de tamsayı (integer) olarak tanımlanmış olmasıdır. Bunun nedeni getchar ile elde edilen değerin ASCII kodu olmasıdır. Benzer şeyler putchar(c) için de söylenebilir. Şimdi yazdığımız programı daha kısa olarak tekrar yazalım:
main
inte;
while ((c — getchar ( )) ! EOF)
putchar(c) ;
|
Bu örnekte while çevrimi içinde hem karakter okunmakta, hem de karşılaştırma işlemi yerine getirilmektedir. (c = getchar( )) ifadesi parantez içindedir. Bunun nedeni işlem sırasının karışmaması içindir, çünkü
(c — getchar ( )! EOF)
ifadesinde getchar( ) != EOF mantıksal bir işlemdir ve ya 1 ya da 0 olması gerekir ve c de bu değeri alır.
KARAKTER SAYMA
Şimdi kaynak kitabımızın 16. sayfasında yer alan keyboard'dan okunan karakteri sayan programı inceleyelim:
main ( ) /* arakter sayan program */
| int nc ;
ne— Ö;
while (getchar ( ) ! —- EOF)
4 4 NC;
printf nc);
Programda yer alan ++nc işlemi bir arttırma anlamındadır ve matematiksel gösterimi nc = nc + 1'dir. Benzer olarak --nc de bir çıkartma işlemidir. Bu da nc = nc - 1 şeklinde ifade edilir.
Önceden görmüş olduğunuz for işlemi ile program daha kısa olarak yazılabilir.
main ( )
int nc; |
for (nc—0 ; getchar ( ) !— EOF; 4 4 nc)
printf Vn”, nc) ;
|
|
Bu örnekte for çevrimi getchar( ) != EOF olduğu sürece devam etmekte ve sayma işlemi ++nc ile gerçekleşmektedir. For çevriminin altında yer alan (;) işareti for çevriminin bir alt işlemi olmadığını göstermektedir.
SATIR SAYMA
Karakter sayma programına ufak bir ek yaparak satır sayma işlemini gerçekleştirebiliriz. Bildiğiniz gibi her satır sonu newline ' ' karakteri ile gösterilmektedir. Bu karakter ENTER veya RETURN tuşlarının ASCII koduna da karşılık düşmektedir. Bu açıklamalardan sonra programı yazalım:
main ( ) / * satır sayıcı program*/
|
int c,nl
while ((c — getchar ( )) ! - EOF)
nm”)
printf nl) ;
|
While çevrimi ile işlem getchar( ) != EOF olana kadar devam etmekte, while çevrimi içinde bulunan if (c == '\n)
4 Anl ;
işlemi ile newline karakterler * nl ile sayılmaktadır. If şartı (c — — * çeşit newline koşulu süresince * 4 nl sayma işlemini gerçekleştirmektedir. “$” ifadesinin tek karakter uzunluğunda olduğunu tekrar söyleyelim. ifadesi arkadan gelen karakterin kontrol karakteri olduğunu göstermek için kullanılır.
Şimdilik hoşçakalın... O 61