Temel C Programlama -8- İlk Program

C dilinde en büyük adımı ilk programı yazmakla ve ikinci büyük adımı ise ilk programı anlamakla atarız. Bu noktadan sonra anlamadan ilerlememek gereklidir. Eğer anlamadığınız nokta olursa farklı kaynaklardan yararlanarak anlayana kadar o konu üzerinde durmanız gereklidir. Biz ilk program olarak diğer bütün eğitimlerde olduğu gibi “Merhaba Dünya!” programını yazacağız. Bu program basit bir görevi yerine getirse de pek çok bilgiyi bünyesinde barındırmaktadır. Bu bilgileri öğrendikten sonra programa tekrar bakınca programı anlayabiliriz. Fakat şimdilik programı deneyip nasıl çalıştığını görelim.

// C ile Merhaba Dunya Programı
#include <stdio.h>
#include <stdlib.h>

 int main( void )
 {
 printf( "Merhaba Dunya!\n" );
 system("PAUSE"); 
 } // Main Sonu

Bu programı yüklediğimizde konsol ekranında şöyle bir çıkış verecektir

Görüldüğü gibi program “Merhaba Dunya!” yazısını yazdırdıktan sonra devam etmek için bir tuşa basın uyarısını verip kendini beklemeye alıyor. İngilizce işletim sistemi kullandığım için “Press any key to continue . . .” yazsa da Türkçe Windows kullanıyorsanız size “Devam etmek için bir tuşa basın . . .” ifadesini yazdıracaktır. Şimdi bütün program komutlarını tek tek inceleyelim.

Yorumlar

C dilinde programlama yaparken program komutlarından farklı olarak not almak istediğimiz veya açıklamada bulunduğumuz metinleri yorum işaretini (//) kullanarak programa dahil ederiz. Bu işaretten sonraki kısmı derleyici program görmezden geldiği için istediğimizi o satıra yazabiliriz. Yorum işaretleri çok satırlı olacaksa farklı bir yol olarak /* ve */ işaretlerini kullanırız. Örneğin çok satırlı bir yorum yazacaksak şu şekilde yorum işaretlerini kullanabiliriz.

/* 
   Birinci Satır
   İkinci Satır
   Üçüncü Satır 
*/ 

/* Tek Satırda Yorum Da Yapılabilir */

Programda yorumların olması programı daha anlaşılır kılacaktır. Sadece başkalarının okuyacağı program değil kendi yazdığımız programda da yaptığımız işlemi unutmamak ve önemli noktaları gözden kaçırmamak için bu yorumları kullanmamız gereklidir. Bildiğimiz ve her yazdığımız komutu yorumlamak elbette gerekli değildir fakat önemli kısımlarda kullanmamız bizim yararımızadır.

Boş Satır (White Space)

4 numaralı satırda göreceğiniz üzere boş bıraktığımız bir satır programda yer almaktadır. Bu boş satırlar derleyici tarafından görmezden gelinmektedir ve programa bir etkisi olmamaktadır. Bu boşlukları bırakma nedenimiz komutları birbirinden ayırarak daha düzenli bir hale getirmek istememizdir. Siz de program yazarken bu boşlukları programın uygun yerlerine eklerseniz daha kolay okunabilir bir kod meydana getirebilirsiniz.

#include Yönergesi

Önceki yazılarımızda ön işlemci yönergelerinden bahsetmiştik. Bu yönergeler her zaman # işareti ile başlamaktadır. Bunlar programa dahil olmasa da derleyici programa belli bir iş yapması konusunda talimat vermektedir. #include’nin anlamı “dahil et” demektir. Yani bir dosyayı yazdığımız program dosyasına dahil etmek istiyorsak #include yönergesini kullanmamız gereklidir. #include <stdio.h> komutu ile Standart giriş/çıkış başlık dosyasını programımıza dahil ettik. < ve > işaretleri arasına dosya adını yazmamız dosyanın bilinen bir konumda olduğu durumlar için geçerlidir. Eğer kendi yazdığımız veya sonradan eklediğimiz bir kütüphane dosyası varsa bu işi ” ve ” işaretleri arasına dosyanın adını yazmakla gerçekleştiririz. C dili herhangi bir kütüphane dosyası eklemediğimiz zaman dilden ibaret olmaktadır. Yani ne fonksiyon ne de farklı bir özellik kullanmaya müsaade etmektedir. O yüzden hangi fonksiyonu kullanacaksak ilgili kütüphanenin dosyalarını buna eklememiz gereklidir. En temel giriş ve çıkış işlemleri için bu geçerlidir. Örneğin BASIC ve Python gibi dillerde bu böyle değildir. PRINT komutu dilin içindedir ve ayrı bir kütüphane eklemeye gerek yoktur. Bu dili kalabalıklaştırmaktadır. C dili ise mümkün olduğu kadar sade yapıdadır ve beraberinde olmazsa olmaz standart kütüphanelerle gelmektedir.

main Fonksiyonu

Kodlardan oluşan program blokuna fonksiyon adı verilir ve C dilinde yazılmış programlar fonksiyonlardan oluşmaktadır. Hiçbir fonksiyon içermeyen basit bir program bile bir fonksiyon içerisinde yer almaktadır. Program başlayınca ilk çalıştırılacak komutların olduğu fonksiyon main fonksiyonu olarak ayarlanmıştır ve program yazarken öncelikle bir main adında fonksiyon oluşturmamız gereklidir. Kod bloku süslü parantez yani { ve } işaretleri arasında sınırlandırılmıştır. Bunların dışına yazdığımız program çalıştırılmaz ve derleyici hatası ile karşılaşırız. main fonksiyonu içerisine ilk çalıştırılacak komutlar yazılır. Önişlemci direktifleri ve global değişkenler gibi tanımlamalar program dosyasının başına yazılabilir. Şimdi bir fonksiyon yapısının nasıl olduğunu inceleyelim.

Fonksiyonun_Döndürdüğü_Değer Fonksiyon_Adı (aldığı_argüman)
{
  Kod Bloku
}

Burada main fonksiyonunu int main( void ) olarak belirttiğimizden bu fonksiyonun int (tamsayı) tipinde bir değer döndürdüğünü ve void yani boş değer aldığını görmekteyiz. Main fonksiyonunun bu şekilde yazılmasının bir kuralı vardır. İlerleyen konularda fonksiyonların nasıl çalıştığını size ayrıntısıyla anlatacağız.

printf fonksiyonu

printf( “Merhaba Dunya!\n” ); komutunun “Merhaba Dunya!” yazısını ekrana yazdırdığını uygulamalı olarak gördünüz. Yalnız bu bir satır kodda incelenmesi gereken pek çok unsur vardır. Öncelikle printf komutunun bir fonksiyon olduğunu ve özel bir iş yapmak için fonksiyonları kullanmamız gerektiğini bilelim. Bu fonksiyonları tanımanın yolu ise peşinden gelen parantezlerdir. ( ve ) işaretleri tanımadığımız bu komutun özel bir fonksiyon olduğunu belirtmektedir. printf fonksiyonu #include <stdio.h> önişlemci yönergesi ile programa dahil ettiğimiz stdio.h dosyasının içinde bulunmaktadır. Bu dosya derleyiciye göre değişse de belli standartlara sahiptir. Bu dosyanın içerisinde ne olduğunu şimdi incelemeye gerek olmasa da bizim yazdığımız printf(…) komutu dosyanın içinde yazılı olan printf fonksiyonunu çalıştırmaktadır. Printf komutunun görevi ise konsola veya terminale formatlanmış yazı yazdırmaktır. Print, yazdır anlamı taşırken printf “Print formatted” yani formatlanmış halde yazdır demektir. Bir fonksiyonu çağırırken şu şekilde bir komut kullanırız.

fonksiyon(deger);

Eğer argüman (değer) almayan fonksiyon olursa parantezin içi boş bırakılır fakat her zaman önce fonksiyon adı ve sonrasında iki parantez “()” kullanılması gereklidir. Burada büyük ve küçük harf ayrımına dikkat etmemiz gerekir.

Noktalı Virgül

C dilinde her komut (statement) bittiği zaman noktalı virgül “;” konur. C dili BASIC ya da Python dilleri gibi satır satır ilerleyen bir dil değildir. Derleyici satıra değil noktalı virgüle bakarak komutun bitip bitmediğini anlar. Bu bize program yazarken biraz esneklik tanımaktadır. Örneğin “Merhaba Dünya!” yazısını istersek tek satırda değil de şöyle yazdırabilirdik.

 printf(
		 "Merhaba"
		 " Dunya!\n"
		 );

Program yine aynı şekilde çalışsa da okunabilirliği düşecekti. O yüzden satırları iyi kullanmayı bilmek gereklidir. Noktalı virgülü koymayı unutmak en sık karşılaşılan programlama hatalarından biridir ve yıllar boyu programlama yapanların bile dalgınlığında yaşadığı bir durumdur.

Çift Tırnak

C dilinde karakter dizilerini belirtmek için çift tırnak işareti kullanılır. Çift tırnak arasına yazdığımız metnin sayı olmadığı ve karakter dizisi olduğunu fonksiyona belirtmek için “Merhaba Dunya!” yazmaktayız. Fonksiyona hangi değer tipini gönderdiğimiz ise çok önemlidir. Her fonksiyona her değer tipini gönderme imkanımız yoktur. printf fonksiyonu ilk değeri her zaman karakter dizisi biçiminde aldığı için bu fonksiyona göndereceğimiz değer ” ve ” işaretleri arasına yazılmalıdır.

Kaçış Sekansı

printf fonksiyonuna iki tırnak işareti arasında yazdığımız Merhaba Dunya! yazısı ekranda gösterilecektir. Fakat biz bir komut göndermek istediğimizde örneğin yeni satıra geçmesini istediğimizde metin gibi olan fakat sadece o amaç için kullanılan bir yapıyı göndermemiz gereklidir. Buna kaçış sekansı adı verilir. Örneğin printf( “Merhaba Dunya!\n” ); derken \n komutu ekranda yazdırılmamaktadır. Bu fonksiyonun yapısından dolayı böyle gerçekleşmektedir. Fonksiyon önce \ işaretini metnin içerisinde arar ve bulduktan sonra o işaretin ardından “n” ile ifade edilen komutu yerine getirir. \n komutu burada yeni satıra geç anlamına gelmektedir. Kaçış sekanslarını ilerleyen konularda uygulamalı olarak göstereceğiz.

system(“PAUSE”);

Program ilk olarak printf fonksiyonunu çalıştırarak “Merhaba Dunya!” yazısını ekrana yazdırır. Çünkü main fonksiyonu içerisinde ilk yer alan fonksiyon oydu. Yalnız Visual Studio haricinde bir derleyicide (Eclipse, Dev-C++ gibi) program çalışır çalışmaz kendini sonlandırmaktadır. Bunun için sistemi beklemeye sokacak bir fonksiyona ihtiyaç vardır. Bu da stdlib.h yani standart kütüphane fonksiyonları içerisinde yer alan system fonksiyonudur. Bu fonksiyon içerisine aldığı argüman ile (gönderilecek değer) programı beklemeye sokar ve “Devam Etmek İçin Bir Tuşa Basın . . . ” yazısını ekrana yazdırır. Biz bir tuşa bastığımızda program kapanacaktır. Biz ekrandaki yazıyı okumak için bu fonksiyonu kullanıyoruz. Daha farklı fonksiyonları da kullanma imkanımız vardır ve bunu ileride fırsatımız olursa anlatacağız.

İlk programı bütün ayrıntısıyla sizlere anlattık. İlk programdan sonra veri okuma ve işleme konusu üzerinden devam edeceğiz. Verdiğimiz ilk program örneklerini anlamanız geri kalanı kolayca anlamanızı sağlayacaktır.

Last updated