C'ye Giriş
Pardus-Linux.org | Wiki sitesinden
Linux’ta C -1.Adım
Bilgisayar ilk yapıldığında makine dili denilen 1'ler ve 0'lar ile kodlanıyordu. Makine dilinde kodlama çok zor olduğundan programlama dili ve bunların derleyicileri ortaya çıktı. Programlama dillerinde siz o dile göre komutları yazarsınız derleyiciler (veya yorumlayıcılar) bunu makine diline çevirir. Böylece bilgisayar denilen komutlar anlar ve ona göre hareket eder. İlk olarak makine diline en yakın olan Assembly dili geliştirildi. Fakat bu dilde kodlamanın uzun sürmesi ve hataların anlaşılmasının zorluğu nedeniyle başka diller de geliştirildi. Temel olarak iki çeşit sınıflandırma vardır. Biri dil düzeyi diğeri taban çeşidi. Dil düzeyinde yüksek, orta ve düşük seviyeli dilleri vardır. Seviyenin düşmesi demek o programlama dilinin makine diline yakınlaşıp günlük konuşma kelimelerinden uzaklaşması demektir. Seviyenin yükselmesi de haliyle bunun tam tersidir. Taban çeşidi ise o dilin nesne tabanlı olup olmadığıyla alakalıdır. Nesne tabanlı olan diller bildiğimiz pencereler ile programlanabilir ama C veya Assembly gibi diller doğrudan o şekilde programlanamaz. Assembly dilinden sonra temel olarak C ve Fortran dilleri çıktı. Ondan sonra birbirlerinden türeyen diller ve ayrı olarak çıkan diller ile programlama dillerinin sayısı 50’yi aştı. C dilinin en önemli özelliği C++ ile (C’yi kapsayan gelişmiş bir dil) nesne tabanlı olarak yazılıp aynı zamanda makine dili kadar hızını günlük konuşmaya yakın kodlar ile kaybetmemesidir. Aynı zamanda anahtar kelime sayısı da azdır. Bu şu demektir. Örneğin X dilinde 30 tane anahtar sözcük var ve Y dilinde 10 tane var ise Y dili diğer özellikler eşit kabul edilirse daha iyidir. Şimdi C diline küçük bir giriş yapalım, yalnız herhangi bir dilde yazılım geliştirmek için algoritma ve akış çizelgesinin iyi derecede bilinmesi gerektiğini hatırlatalım. Pardus’ta ya da diğer GNU/Linux dağıtımlarında C dilinde yazılım geliştirmek için bazı yazılımlara ve kütüphanelere ihtiyaç duyabiliriz. Öncelikle yazdıklarımızı derlemek için kullanacağımız gcc adlı derleyicinin ve ncurses kütüphanesinin yüklü olduğundan emin olmamız gerekiyor. Yüklü değilse depolarımızdan yükleyebiliriz. [1] Derleyicimiz ve kütüphanemizi yüklediysek işe koyulabiliriz. Herhangi bir metin düzenleyicisi (örn. Kate, Kwrite, Gedit, Geany) ile komutlarımızı yazdıktan sonra dosyayı “.c” uzantılı olarak kaydedeceğiz. Ardından terminalimizi orada açıp şu komutla derleyeceğiz:
“gcc kaynakkodu.c –o kaynakkodu –lncurses … .”
Peki bunlar ne demek oluyor?
Bu komuttaki “gcc”, bizim kullanacağımız derleyici yazılım, “kaynakkodu.c” ise bizim derlenek dosya, “-o” seçeneği derlenmiş dosyaya isim vermek istiyorsak kullanacağımız tercihe bağlı bir seçenek, “kaynakkodu” çıktı dosyasının adı anlamına geliyor. Geldik can alıcı noktaya: Bazı kütüphaneler kaynak kodunun içerisine yazıldıktan sonra derlenebildikten sonra “-l” kodundan sonra kütüphanenin kendine has çağrılışı ile çağrılır. Örn: ncurses.h -lncurses
Artık C diline adım atabiliriz. C’de bir kaynak dosyası şu şekilde oluşur:
Eklenen kütüphaneler. (include)
Açıklamalar. (/* */ notasyonu)
Fonksiyonlar (function)
Değişken tanımlamaları. (veri tipleri)
Ana fonksiyon (main)
İşlemler vb.
Biz bu yazıda genel olarak bunları inceleyeceğiz :
Açıklamalar (/* */ veya //) : Bir programcı bir kodu yazdıktan bir süre sonra nerede kaldığını niçin öyle yaptığını unutabilir. O yüzden açıklamalar adını verdiğim bölümü istediğimiz yere yazıp kullanabiliriz. /* */ arasına yazılanları derleyici okumaz ve atlar. Örneğin:printf (“Talha”); talha; yazsak ve eğer bir şekilde talha diye bir fonksiyon veya deyim belirlememişsek yazılım hata verir. Ama eğer: printf (“Talha”);/* talha */ yazsak program hata vermez. /* */ gösterimini birkaç satır için de kullanabiliriz : printf(“Talha”); /* talha pardus kullanın. */
printf (“Talha”); //Talha
#include <kütüphaneadı.h>Olarak yazılan kütüphaneler ile bu işlevleri yerine getirebiliriz. Kütüphane adını yukarıda gösterildiği gibi “< >” işaratlerinin arasına almak yerine aşağıdaki gibi tırnak içine de alınabilir :
#include “stdio.h”
Değişken Tanımlama : Bu bölümü daha sonra veri tiplerinde anlatacağız.
main() { …….. komutlar ……. }
Şimdi bu gördüklerimizle kısa bir yazılım yapalım. Metin düzenleyicimizi açıp aşağıdaki komutları yazıyoruz :
/* Biz Hello degil Merhaba deriz. */ #include “stdio.h” #include “ncurses.h” main() { clrscr(); printf(“Bak kardesim Biz Hello degil Merhaba deriz. \n”); getch();return 0; }
Bilmediğimiz hangi komutlar var? Bir yazalım bakalım :
clrscr() printf() getch() return 0 \n
-----------*-------- ---------**-*------- --------**---------- --------**---------- --------***--------- ---------***-*------ ----------***-------
[1] Eğer depoda ilgili yazılımları bulamazsanız GCC'yi http://gcc.gnu.org/, ncurses kütüphanesini http://ftp.gnu.org/pub/gnu/ncurses adreslerinden indirerek kaynak koddan kurulum yapmanız gerekebilir.
M.Talha İlhan mtalhailhan@gmail.com http://neyapacagiz.blogspot.com/
Bu yazı Pardus-Linux.org eDergi 5. Sayı'dan derlenmiştir. Dergiyi incelemek için www.pardus-edergi.org
