C’nin gelişimi

Konu sahibi son olarak 2615 gün önce görüldü
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ı.
 
rogramlama 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.
 
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.
 
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.
 
C programlama dili, Dennis Ritchie tarafından Bell laboratuarlarında yapılmıştır. PDP-11 ile Unix altında çalışmak için yapılmış olmasına rağmen, ilgi üzerine MS-DOS altında çalışacak hale getirilmiştir. Basitliği, oluşan kodun küçüklüğü, ve her çeşit programlamada kullanılabilmesi, C yi popüler bir dil yapmıştır.

Temel Bilgiler

Bu dili anlatırken azda olsa belli bir düzeyde programlama bilgisine sahip olduğunuzu düşünmekteyim. Ancak yeni başlayanlarada mümkün olan en iyi şekilde yaklaşabilmek için başlangıçta C++ diline ait veri tiplerinden, değişken tanımlamadan ve değişkenlere değer atamadan bahsedip, basit bir C++ programının yapısına göz atacağız.

Veri Tipleri

Temel Veri Tipleri :

Bool: true ve false değerlerini alır. true = 1, false = 0 gibi düşünelebilir. Derleyicisine göre Bool şeklindede tanimlanıyor olabilir.
Char : ASCII karakterleri ve çok küçük sayılar için kullanılır.
Enum : Sıralanmış değerleri tutar.
Int : Sayma sayıları.
Long : Sayma sayıları.
Loat : Ondalıklı sayılar.
Double: Ondalıklı sayılar.
Long Double: Ondalıklı sayılar.
Void : Değersiz - boş.
Temel Veri Tiplerinin Uzunlukları :

Not : Bu değerler 32 bit uygulama geliştirme ortamındaki platformlara özeldir.

Platformdan platforma değişebilir.
bool : 0--1
char : -128 -- 127
enum : int ile aynı değerde
int : �2,147,483,648 -- 2,147,483,647
long : �2,147,483,648 -- 2,147,483,647
float : 3.4E +/- 38
double: 1.7E +/- 308
long double: 1.2E +/- 4932

unsigned :
unsigned belli veri tiplerinin işaretsiz değerler almasını sağlar. Örneğin; unsigned char 0 - 255 arasında değer alır. Dikkat edilecek olunursa negatif kısım atılmış ve burada ki değer uzunluğu pozitif kısıma eklenmiş. unsigned char;int ve long türlerine uygulanabilir.

typdef - Türleri kendinize göre adlandırın
typdef kullanarak tanımlanmış türleri kendinize göre adlandırabilirsiniz..Dikkat ediniz ki bu şekilde yeni bir tür yaratmıyorsunuz. Ayrıca bu isimlendirmenizi diğer tiplerle birlikte kullanamazsınız. örneğin: typdef double FINANSAL artık double yerine FINANSAL kullanabilirsiniz. long FINANSAL şeklinde bir kullanım hatalıdır.
 
Değişken belli bit türe ait verileri saklayan veri deposudur. Aksi belirtilmedikçe içerikleri değiştirilebilir.

Değişken nasıl Tanımlanır ?

Değişkenleri tanımlamak için aşağıdaki notasyon kullanılır. [Veri Tipi] [Değişken Adı]; Örneğin içinde sayı tutacak bir değişken şu şekilde tanımlanabilir. int sayi; Benzer olarak aşağıdaki tanımlamalarda doğudur char c; int i; float f; double d; unsigned int ui;

Değişken isimlerini tanımlarken dikkate alınacak noktalar :

C++ dilinde de C dilinde ki gibi büyük ve küçük harfler farklı verileri temsil eder. Örneğin; char c; char C; int sayi; int Sayi; c ve C hafızada farklı yerleri gösterirler. sayi ve Sayi'da farklıdır. Değişkenler harflerle yada _ ile başlar. İçlerinde boşluk yoktur. Değişkenler istenildekleri yerde tanımlanabilirler. Ancak burada dikkate alınması gereken noktalar vardır. Lütfen bölüm sonundaki örneklere göz atınız.

Değişkenlere değer atanması :

Bir değişkene değer atamak için = operatörü kullanılır. Değişkene değer atama tanımlandığı zaman yapılabildiği gibi daha sonradanda yapılabilir. Örneğin; Tanımlama sırasında değer atama: char c = 'c'; int sayi = 100; Daha sonradan değer atama: char c; int sayi; c = 'c '; sayi = 100; Aynı anda birden fazla değişken tanımlanabilir, ve aynı anda birden fazla değişkene değer atanabilir; int i , j , k; i = j = k = 100; i,j,k'nın değeri 100 oldu.
 
Geri