Amiga Dünyası sayı 30, sayfa 41

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 41

Sıra geldi *while' ve temel C komutlarına. Her iki komut da, C'de döngü kurmamızı sağlar. Bir örnekle inceleyelim:

main() ( int

while(i<100) ( )

while, yanında verilen ifadenin doğruluğu sürdükçe döngüye devam eder.

main() int i;

for(iz0;i<100;i4--4) | )

|

while ile yapılan programı, for ile yukarıda olduğu gibi yazmak mümkün. Burada i<100, ana ifadeyi oluşturmakta. Yani bu ifadenin doğruluğu sürene kadar döngü devam eder. Eğer ikinci ifade kullanılmazsa “for”, sonsuz döngüye girer.

for(;;) |

Bir sonsuz döngü (infinite) oluşturur. Temel fonksiyonlardan en çok kullanılanlardan do-while'ı bir inceleyelim. Kullanımı, while komutuna benzer. Program bir defalık döngüye girerek cümleyi işler ve daha sonra while'dan sonraki ifadenin doğruluğuna göre döngüye devam eder. Eğer ifade yanlışsa, sonuç olarak do'dan sonraki cümleler bir defalık bile olsa işlenmiş olur. Bir örnekle inceleyelim:

main() int

do | ) while (i<100); |

Program 100'e kadar sürer. Goto, C dilinde de kullanılmakta ve bildiğiniz gibi program içerisinde herhangi bir ifadeye bağlı olmadan verilen etikete (label) sıçramayı sağlar.

ini for(:) (

prin "edei it

goto end;

end: printf("Program sonuân");

Bu temel komutların dışında, C'de önişlem komutları vardır. Bunlardan

#include <dosya.h>, program compile edilmeden önce verilen dosya.h ismindeki dosya, disketinizdeki “include” directory'si içerisinden yüklenerek compile edilir ve sonra programa geri dönülerek ana program compile edilir. Bu önişlem komutu, özellikle structure yapı tanımlamaları ve macro tanımlamaları için kullanılır. #define ise, macro tanımlamak için kullanılan bir ön işlem komutudur. Kullanımı ise şöyledir:

#define printfi(i) printf(" #define printfeli)

main()

int char

printfi(i); printfe(a);

|

Örnekten de anlaşılacağı gibi, #define ile printf() fonksiyonları tanımlanmakta. Burada C compiler programı, printfi(i) gördüğü yerde printf(" 90d",i); varmış gibi davranmaktadır. Oldukça kullanışlı bir fonksiyon. Structure'lar ise, C'nin getirdiği avantajlardan birtanesi. C dilinde çok kullanılan struct komutu, yapı anlamına geliyor ve birden fazla değişkeni bir grup ismi altında toplamamıza yarıyor. Bu sayede program içerisindeki değişkenlere, kullanım yerlerini daha rahat ayırt ederek ulaşabiliyoruz. Böylece hem programımızın anlaşılırlığı artıyor, hem de planlarken değişkenleri daha yerli yerinde kullanabiliyoruz. Sonuç olarak yapılar, verilerin daha iyi organize edilmesini sağlıyor.

Bir örnekle devam edelim:

struct grup ( int a; int b; char string(101;

main()

(

di.b-20; 0123456789";

printf("b-Ddn",d1.b); printi( string evi di sunge

|

Yukarıdaki programda *“grup' bir yapı ismi, dl ise bu yapının değişkeni olarak tanımlanıyor. İçerisindeki veri tipleri ise, yapının elemanlarını oluşturuyor. Yapı içerisindeki veri tiplerine erişebilmek için *dlaa' yazı şeklini kullanıyoruz. Bu arada yapı tanımlamaları main() dışında tanım- İanmak zorunda. Bu nedenle, biz de yapı tanımlamasını main'den önce yaptık. Bu ay son olarak, C dilinde *stru&t' kadar önemli ve çok kullanılan bir fonksiyon olan mantığını hatırlayaca- Biz. Pointer'lar (işaret değişkenleri), kısaca bir değişkenin kullandığı adresi gösterir. Aynı zamanda bu adres ile de oynamamız mümkün. Normal olarak biz bir değişkenin adresini öğrenmek istediğimizde, *&' işaretini kullanırız. Örneğin *x' değişkenin hafızada bulunduğu adresi, *px' değişkenine aktarmak istediğimizde, yazarız. Fakat burada *x' değişkeninin adresi ile oynamamız mümkün değildir. Bu adres sabittir. Eğer böyle bir ihtiyacımız varsa, buradaki *x” değişkenini pointer değişken olarak kullanabiliriz. Kullanımını inceleyelim:

main() (

int *x;

Dikkat ettiyseniz, pointer tanımlamasını **x' şeklinde yaptık. Bu değişkenin gösterdiği adresi *x', adresteki değeri ise öğrenebiliriz. Yukarıdaki programdaki “x-0xbfe00l' komutuyla, x degişkenine hex olarak Oxbfe00l adresi tanımlanmıştır. Bundan böyle x değişkeni artık Oxbfe00l adresini gösterecektir. Bu adresteki değeri okumak için de, *x'e bakabiliriz. Evet, bu ayki tekrarımız burada sona eriyor. Umarım sizi eski konulara götürerek fazla sıkmamışımdır. Fakat gelecek ay yeni şeyler öğrenmeye devam edeceğiz. Gelecek aya buluşmak üzere hepinize iyi günler...

Klavyeyle gezinmek için ← ve → tuşları.