C Nedir?

C Nedir?  

1.1 C’nin gelişimi

C Dennis Ritchie tarafından DEC PDP-11 üzerinde geliştirilmiş bir
programlama dili. C BCPL dilinden türetilen B dilinin 1970’lerde
geliştirilmesiyle yaratılmış. C’nin geliştirilme amacı, sistem
seviyesine daha yakın ve kullanımı daha kolay bir dil yaratmak. Uzun
yıllar boyunca C dilinin standardı Unix işletim sistemi ile birlikte
tanımlıydı. Daha sonra 1983’te C dilinin standardize edilmesi için bir
komite oluşturuldu (ANSI) ve bu işlem yaklaşık 9 yıl sürdü. 1989’da ilk
ANSI C standardı tanımlanmıştı. Daha sonra 1995’te C standardına
eklemeler yapıldı. Bu dilin son hali ise 1999’da tanımlandı ve buna C99
adı verildi. 90’lı yıllarda ise C’ye object mantığı eklenerek C++
dilinin geliştirilmesine ağırlık verildi ama bu gene de C’nin
yaygınlığını azaltmadı.

1.2 Programlama Dilleri Hiyerarşisi

Programlama dilleri High (Yüksek), Middle (Orta) ve Low (Düşük)
seviye olarak 3 kategoriye ayrılmıştır. Bu kategorizasyonda kullanılan
kriter söz konusu programlama dilinin programcı veya makineye olan
yakınlığıdır. Örneğin Assembly gibi makineye yakın programlama dilleri
Low Level olarak tanımlanırken, Basic gibi kullanıcıya daha anlaşılır
gelen programlama dilleri ise High Level olarak tanımlanmaktadır;

High Leve Basic

  Pasca

  Cobol

    

Medium Level C  

  C++

  Java

    

Low Leve Assemble

Middle Level bir dil olarak C hem makineye hem de programcıya
yakındır. Örneğin C ile bitler, bytelar ve adresler üzerinde de işlem
yapılabildiği gibi, C syntax bakımından da kullanıcının anlayabileceği
bir yapıdadır. C aynı zamanda kolaylıkla port edilebilir bir dildir.
Yani bir platform için yazılmış bir C programını, bazı
platform-spesifik değişikliklerle başka bir platforma taşımak
mümkündür.

C’nin High Level programlama dillerinden farkları şöyle
sıralanabilir: Data tipi çevirimlerinde diğer High Level programlama
dilleri kadar katı kuralları yoktur. Neredeyse bütün tipler arasında
çevirim yapılabilir. Diğer diller gibi run-time (çalışma anı) hata
kontrolü yoktur; dizi indisi aşılması gibi. Bu kontrolleri programcının
yapması beklenir. İlk kurala benzer bir şekilde C parametre ve argüman
tipleri arasında data tipi uyumunu şart koşmaz. C bit, byte ve adresler
üzerinde işlem yapılmasına da izin vererek sistem programlama
seviyesine daha yakın bir yerde durur. C diğer High Level programlama
dillerinden farklı olarak çok az keyword içerir – 32 adet. Buna karşın
BASIC 100’ün üstünde keyword içermektedir.

1.3 C’nin gücü

C genelde ‘programcının dili’ olarak anılır. Bunun sebebi C’nin
geliştirilme amacıdır. Örneğin COBOL programın verimini artırmak veya
kodun güvenilirliğini artırmak için değil, programcı olmayanların
program yazıp hazır programları kolayca anlayabilmeleri için
tasarlanmıştı. Aynı şekilde BASIC de programcı olmayan kişilerin basit
problemleri çözebilmeleri için tasarlanmıştı.

Fakat C çalışan programcılar tarafından, programcının isteklerini
karşılayacak şekilde geliştirildi: az sayıda kısıtlama, function
tanımlama, block yapısı ve az sayıda keyword. Böylece C kullanılarak
assembly dilinin verimi ve Pascal veya Modula-2 dilinin kullanım
kolaylığını elde edebiliriz.

C’nin ilk başarısını yakalamasının esas sebebi assembly language
yerine kullanılabilmesiydi. Kodlaması, debug edilmesi ve okunması
oldukça zor olan assembly language yerine C dilinin kullanılması gerçek
bir avantaj. Bir diğer önemli nokta da assembly dilinin port
edilememesi.
C sistem dili olarak da tanımlanabilir. C’nin geliştirilme sebebi
işletim sistemi yazılmasında kullanmaktı. Bütün UNIX
implementasyonlarının ve Windows 95’in de C’de kodlanmış olması C’nin
bu konuda ne kadar güçlü olduğunu göstermektedir.

1.4 C Kodunu oluşturan parçalar

Bir C programının en önemli parçaları ‘function’ adı verilen
prosedürlerderdir. Bu prosedürlerden en önemlisi main() dir. main()
prosedürü yazılan programın akışı hakkında genel yapıyı içerir. Bunun
dışındaki prosedürler main() veya diğer prosedürler tarafından
çağırılmak üzere kodlanır.

Örnek bir C kodu verip gerekli kod parçalarını bunun üzerinde gösterecek olursak:


#include

void main(void)

{

     char name[10];

     printf(“Adınızı giriniz:\n”);

     scanf(“%s”, name);

     printf(“Merhaba %s”, name);

}

Yukarıdaki koda baktığımızda birkaç parçaya ayrılmış olduğunu
görülür: #include : Bir programın başında kullanılan #include
satırları, program içinde kullanılacak fonksiyonların (string
fonksiyonları, aritmetik fonksiyonlar, vs.) nerede tanımlanmış olduğunu
söyler. void main(void): Daha önce de belirtildiği gibi main()
fonksiyonu bir C programında olmak zorundadır. main() fonksiyonu
program çalıştırıldığında çalışacak esas kodu içerir. char name[10]:
Fonksiyon tanımından sonra gelen ilk satırlar fonksiyon içinde
kullanılacak değişkenlerin tanımlandığı yerlerdir. printf ve scanf:
Yazılan bütün C programlarında kullanıcıdan veri girişi almak için
scanf, ekrana çıktı almak için ise printf komutlarını kullanılır. { }:
C programlarında en önemli unsurlardan biri de blokları belirleyen
parantezlerdir. Bu parantezler genelde bir kod parçasını ayırmak için
kullanılır; örneğin bir karşılaştırma sonucuna göre yapılacak işlemleri
veya bir döngü içinde yapılacak işlemleri ayırmak için. Bu
parantezlerin yerleştirilmesine dikkat edilmelidir çünkü yanlış
yerleştirilmiş veya eksik/fazla yazılmış bir parantez programın yanlış
çalışmasına veya hiç çalışmamasına yol açabilir.

Bunun yanında bir C programı yazarken dikkat edilecek en önemli
şeylerden biri bu dilin case-sensitive oluşu yani program içinde geçen
karakterlerin büyük/küçük harf yazılmasına dikkat etmesidir. Yani
printf, Printf ve PRINTF hepsi birbirinden bağımsız üç farklı fonksiyon
gibi algılanır. Aynı şey kullanılan değişken isimleri için de
geçerlidir. Örnek programda kullanılan name adlı değişkeni ekranda
yazdırırken ismini Name olarak versek alacağımız şey name değişkenini
içeriği değil bir hatadır.

Bu yazı Programlama içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Yorum bırakın