Bir önceki derste, iki ayrı sistem( MSVC - CB ) için ayrı ayrı direktifler (Türkçesi neydi bu meletin) verip, aynı kodu derlemiştik. Hepimizin ekranına 3 satır gelmiş olmalı. ( bi de derleyicinin ek satırı belki, etti 4 )

Kodu hatırlayalım:

#include <stdio.h>
int main()
{
    puts("Merhaba DersimizPC.\nMerhaba Dunya.\nMerhaba Murteza\n");
    getchar();
    return 0;
}

Eğer kodu yanlış yazmadıysam,

Merhaba DersimizPC
Merhaba Dunya
Merhaba Murteza

mesajları çıkmış olmalı. Hem de alt alta. “İyi de, zaten bunların çıkacağı belliydi” diyosunuzdur şimdi.

Peki tamam. O zaman, aradaki “\n”‘lara ne oldu ha. Açıklayın bakalım!

Pardon, ben açıklıycaktım :) Evet arkadaşlar, C dilinin özelliğidir bu. Normalde, tırnak işaretleri(”") arasına yazdığınız şeyin hiç değişmemesini beklersiniz. Ama C bu konuda küstahtır. Aslında yardımseverliğinden böyle davranıyo C. “Bakalım r-G0ne abim bana tırnak içindeki yazılarda bi emir vermiş mi” diyo. Bundan sonrasını hepimiz biliyoruz zaten :) . Bu özel emirler, C dilinde “\” ile belirtilir. Derleyici tırnaklar içinde ‘\’ yi gördüğü anda, bi sonraki karaktere bakar. Örneğin ‘n’ görürse, “\n” ‘yi “bir alt satıra geç” manasındaki karakterle(numarası 10 :) galiba ) değiştiriyo. Ya da “\t”, TAB attırıyo. ( Eğer sadece “\” yazdırmak istiyosanız “\\” kullanmalısınız )

Bu kadar Escape Sequences” dersi yeter :) . Şimdi kodu yakından inceleyelim.

#include <stdio.h>

Evet, “#” ile başlayan bir satır. Bu ancak tek bir şeyi anlatıyo olabilir: “Şimdi, önişlemciye emrediyorum!” . Arkadaşlar, C eski bir dil (ama hala 25′inde gibi). O dönemde, böyle şâşâlı “System.Console” ya da “javax.sound.sampled” gibi sistemler yoktu. Hey gidi günler :)

Şimdi DOS ekranına “r-G0ne” yazdığımızı düşünelim. Nasıl yazıcaz? Ben biliyorum. 0xB8000 gibi bi adrese erişip, LOW-ORDERED BYTE’ı istediğimiz karakterler olacak şekilde WORD’ler yazmamız gerekiyo. :) (Windows’ta çalışmaz)

Şimdi, bunu başlangıç seviyesindeki birisinin yapması imkansız(ben de yapamam, Windows kullanıyorum). O yüzden, C dilinin bi “Standart Kütüphane”si var. Yalnız, bildiğimiz kütüphaneleden değil bu. Bu kütüphanede “fonksiyonlar” bulunuyo ( Fonksiyon, belirli bir işi yapan kod parçası ) . Kütüphaneden istediğimiz fonksiyonu seçip kullanıyoruz. Standart kütüphane, hem programlamayı kolaylaştırmak, hem de ortak fonksiyonlar belirlemek için oluşturulmuş (Herkes aynı fonksiyonla kosinüs bulur örneğin). Ama her fonksiyon da yok tabi. “MP3Çal()” gibi bişey “Standart Kütüphanede” yok. Biyerden bulmanız ya da kendiniz yazmanız lazım. Ama, yazı yazan, RAM’den yer ayıran fonksiyonlar, sin, cos, tan gibi başbelaları var. Kabul edin, hayat adil değil.

Şimdi, Standart Kütüphane, linker gibi olaylara çok girmeden devam edelim. Standart kütüphane zaten derlenmiş halde bekliyo. Bağlayıcı(linker) diye bilinen program gerektiğinde gereken fonksiyonu kütüphaneden alıp yazdığınız programa ekliyo. Ama derleyici, bağlanacak fonksiyonun özelliklerini bilmeli. Bu işe yarayan(ama siz her amaçla kullanabilirsiniz) “başlık” dosyaları var.

“#” ile önişlemciyi çağırdık. “include” ile “birazdan adını yazacağım dosyayı al, tam olarak buraya koy” diyoruz. Bi nevi kopyala-yapıştır. “<stdio.h>” ise, bütün standart girdi-çıktı fonksiyonlarını anlatan bi dosya. Bunun gibi daha birsürü dosya var. Hatta isterseniz siz bile yazabilirsiniz bi tane.

Şimdi, bu satır ile, girdi-çıktı fonksiyonlarını, yani konsola yazı yazma, konsoldan okuma fonksiyonlarını ekledik. Basit oldu dimi :D

int main()
{

Bu da güzel bi satır. C dilinin bi özelliği daha: “Programın kendisi bile bir fonksiyondur. Ve program ‘main’ fonksiyonundan başlar.” Gayet açık. “int” fonksiyonumuzun ne türden bi değer üreteceğini anlatıyo. “int” tamsayı demek. “main” ise fonksiyonun adı. Bir programda kesinlikle main bulunmak zorundadır(işletim sistemi yazmıyosanız eğer). Çünkü, program çalışmaya main’den başlar. “()” ise “bak, fonksiyon bunlarla çalışıyo” diyo. örneğin “tan(97)” gibi. “tan” fonksiyonu 97 ile çalışıyo burda. Bizim örneğimizde parantezin içi boş. Yani “benim çalışmam için bişey gerekmiyo” diyoruz derleyiciye. Küstahlık oldu biraz :)

C dili başlangıç yazısında “blok”lardan bahsetmiştim. Bloklar, C dilinin tasarımının en güzel yanlarından biridir. “{” ile bloğu açarsınız ve “}” ile de kaparsınız. Arada kalan şeyler bir bütündür. “int main(){” yaptığımızda, derleyiciye, “abi, ben int main() fonksiyonunu anlatıyom sana. bak böyle çalışcak” demiş olduk.

    puts("Merhaba DersimizPC.\nMerhaba Dunya.\nMerhaba Murteza\n");

Evet, ilk programımızın en can alıcı noktası. Fonksiyon çağırdık(kullandık). Peki nasıl yaptık: Fonksiyonun ismini yazdık, Parantez açtık, Argümanları(fonksiyonu çağırırken kullandığımız değerler) yazdık, Parantezi kapattık. Böylece fonksiyonu çağırdık. Bi de eşantiyon olarak “;” kullandık. İmla kurallarına ne kadar ters olsa da, bu noktalama işarei bi nevi nokta. “emrim burda bitti” demek. Ama bu sadece ilk emirdi. Peki niye “puts”‘u çağırdık. “puts” kendisine verilen karakter kümesini ekrana basan fonksiyon da ondan kullandık. Standart bi fonksiyon tabi ki. Ekrana yazımızı yazdık yani.

İstediğimiz şeyi yaptık. Programı bitirebiliriz artık. Ama, yazdıklarınızın bi tuşa basılıncaya kadar ekranda kalmasını istemez miydiniz? Biz de öyle düşündük ve “tuş bekle” manasına gelen

    getchar();

kullandık. Yine standart tabi ki. getchar, bi tuşa basılıncaya kadar bekliyo ve basılınca da basılan karakterin numarasını veriyor. Ama biz değeri kullanmadık. Belki başka bi derste…

İşte şimdi programı cidden bitirebiliriz. Bunun için ise

    return 0;
}

ile main fonksiyonuna “bit, ve biterken bu değeri( 0 ) üret” diyoruz. main’in 0 ile bitmesi, “bi sorun yok” demek. Bi de main fonksiyonunu anlatmayı kesmemiz lazım tabi. Onun içinse “}” ile bloğu kapatıyoruz.

İlk programımız böylece bitmiş oldu. İstediğiniz editörle yazıp afiyetle derleyebilirsiniz :)

Yorumlarınızı bekliyoruz.

Kalın sağlıcakla

Bu yazı 26 Temmuz 2008, Cumartesi günü gönderildi.
Toplamda 29 kere okundu.
Kategorileri: C Anlatım.
Etiketler:, , , , ,
OOOOO
2 oy - Sonuçları görmek için oylayın!

2 yorum var.

  1. #include <stdio.h>

    Yine aynı problem KaraSancak düzeltti sen bi zahmet düzelti ver :P
    Bu arada put komutunu öğrendiğim iyi oldu :D

  2. r-G0ne

    Grafik modu 0′da çizgisel yazı arabelleği adresi(ben neler saçmalıyorum) 0×8000 den 0xB8000′e düzeltildi.(İngilizce ayrıntılı bilgi için. ama siz bakmayın bence. beyne zararlı). Alt satıra geçen karakterin numarası düzeltildi(13 deilmiş :( 10′muş ). Kod renklendiriciden kaynaklanan sorunlar düzeltildi. Şimdilik bu kadar :)

    (şimdiden cevap vereyim: “hayır, psikolojik sorunlarım yok”)

“C Dili: Ders 1 - İlk Programımız (II)” yazısına yorum yapın.