C'de Temel Veri Türleri

09:29

  • Değişken türleri default type ve user type olarak ikiye ayrılır. default type primitive veri türüdür. void veri türünü saymazsak C'de 12 veri türü vardır.9 tane tamsayı,3 tane gerçek sayı türünü ifade edebilecek şekildedir.
  • Varsayılan veri türleri tamsayı türleri ve gerçek sayı türleri olarak ikiye ayrılır. Tamsayı (integer types) veri türleri karakter türleri, Kısa, Normal, Uzun tamsayı olarak gruplandırılabilir. Karakter (char) türü, short(kısa), int(normal), long(uzun) veri türü işaretli ve işaretsiz ver türü olarak iki alt gruba ayrılır.
image


  • C’de boolean veri türü yoktur. Boolean veri türü yerine int veri türü typedef edilerek veya define edilerek kullanılır.
  • Taşınabilirlik açısından her yerde 4 byte olmasını istiyorsak int değil long veri türünü kullanmamız gerekir.
image
  • 3 tane gerçek sayı türü ise float,double ve long double türleridir. Bu türlerin alt-üst limitleri ve kaç byte olduğu aşağıdaki gibidir:



  • 32 bit işlemciler bir defada 32 bit’lik bir tamsayıyı işleme sokabilmektedir. Bu nedenle int veri türü 32 bit işlemcilerin doğal türü denilebilir.
  • Değişken isimleri 63 karakter ile isimlendirilebilmektedir. Kısıtlama ise değişken isimleri sayi ile başlayamamaktadır.

    image


Linux'te Komut Satırından C Derleme & Çalıştırma

07:58 ,

Linux ‘te C ile çalışırken Kate Text Editörünü kullanmak geliştirme işlemlerini kolaylaştıracaktır. Kurulum yaparken komut satırını da plug-in olarak kurmak mantıklı olacaltır.
image
Ardından sürekli derleyip çalıştırmak yerine bu işlemi bash script ile halletmek pratik olacaktır.
image
Script ‘i çalıştırırken değişken olarak, yazdığımız C kodunun adını uzantısız vermemiz yeterli olacaktır.

image

C' ye Giriş - 2 [ Kavramlar ]

05:03

  • C önişlemci syntax’ı,komut’ları,kuralları olduğundan dolayı unique bir programlama dilidir.
  • Önişlemci çalıştırdığı komutları tamamladıktan sonra siler, dolayısıyla derleyici mesela # ile başlayan komutları görmez.
  • C standartları belirlenmeden önceki C’ye traditional C denir. C’nin ilk zamanlarında yayınlanan kitaplarda ilk örnek olarak verilen program:
image

yukarıdaki gibidir. Görüldüğü gibi fonksiyonun geri dönüş değeri boş bırakılmış ( bu int olduğu anlamına gelir ) 'tır.
  • 1970’lerden itibaren kullanılmaya başlanan C programlama dili 1989’da C89 adıyla standarta kavuştu.
  • 1999 yılında C99 adıyla C’de köklü değişiklikler oldu ama hala default olarak çoğu derleyici  C89 versiyonuna göre kodları derlemektedir.
  • Derleyici firmaları tasarım sırasında ek özellikler verebilirler. Ama bu durumda taşınabilirlik açısından sıkıntı yaşanabilir. Tasarım sırasında ek özellikler verilmesine extension denir.
  • C++ içindeki C ile Bağımsız C arasındaki faklılıklar bulunmaktadır.
  • Source File ( ya da Source Code ) : C’nin kurallarına uygun bir şekilde yazılmış metinlere denir.
  • Bir dilden başka bir dile çeviri yapan programlara translater, yüksek seviyeli bir dilden düşük seviyeli bir dile çeviri yapan programlara derleyici (compiler) denir.
  • IDE : compiler, linker, text editörü gibi ihtiyacımız olan programları paket halinde sunan programlara denir.
  • Diagnostic Message: Derleyicinin kod için verdiği mesajlar. Warning Message, Error Message
  • Objective-C : ayrı bir programlama dili çekirdeğinde C dili olan bir dildir.
  • Derleyiciler Source File’ı alıp Object File ‘ı verir. Object File’ın Türkçesi nesne dosyası değil amaç dosyası veya hedef dosyası denir.
  • Dosya: verilerin ikinci saklama ortamında  1-0 lardan oluşan kümeye dosya denir.
  • C dili orta seviye bir dildir. C dili için portatable Assambly kavramını kullanılır.
  • Turbo C, Visul C++ bir program değil bir bir geliştirme ortamı (IDE)
  • C99 standartları C++ uyumluluğunun kaybolmasına sebep olacağından çok fazla tercih edilmemiştir.
  • Clean C kavramı eğer C ‘de özenli olarak kod yazarsak bu kod C++ da da çalışır durumdadır. Bu tip kodlara Clean C kod kavramı kullanılır.
  • Kaynak kodun taşınabilirliği söz konusu iken makina kodunun taşınabilirliği diye bir şey yoktur. Makina kodu sistemden sisteme, mimariden mimariye farklılık gösterir.

C' ye Giriş - 1 [ Kavramlar ]

04:06

  • C/C++’da terminoloji çok önemlidir.
  • C dilinde cümlelere deyim (statement) denir. statement declaration statements - executable statement olarak ikiye ayrılır.
                              declaration statements    —>    typedef int Word
                              executable statement      —>    x=y+z
  • C’de komut diye bir şey yoktur. Komut terimi sadece “önişlemci komutu” ifadesinde geçer. Komut derken kastedilen şey aslında statement’dır.
  • C’de 32 tane anahtar sözcük vardır. C++ ‘da ise 68 tane anahtar sözcük vardır.
  • Programlama dilinde bazı öğelere identifier(isim) denir. Identifier’ı variable ile karıştırmamak gerekir. Fonksiyonlara,değişkenlere, label' lara identifier(isim) denir.
  • Derleyici kodun anlamını çözmeye başlamadan önce en küçük anlamlı birimlere bölmesine tokenizing denir. Tane tane parçalara token (atom) denir.
  • C’de 8’lik-16’lık-10’luk sistemde tanımlama yapılabilir.

image
  • Fonksiyonların içindeki isim alanına local namespace, Fonksiyonların dışındaki isim alanına global namespace denir.
  • Global namespace ‘e executable statement deyimleri yazılamaz. Local namespace’e ikiside yazılabilir. 
  • Nesneye bir değer verme işlemine set, nesnenin değerini okuma işlemine get denir.
  • C’deki nesne kavramı ile Object Oriented programlama dilindeki nesne(Object) kavramı farklı kavramlardır. C’de bir nesneden bahsedebilmek için bellekte bir yerinin olması (storage) gerekir.
  • C’de kod yazımı için bir sitilin olması gerekir Zamanla bu sitilin oturması bir standartta kavuşması gerekir.
  • # ile başlayan ifadeler pre-processor'un görevindedir. Örneğin;
    • #include<stdio.h> :ön işlemcinin görevidir. Derleyicinin görevi değildir.
  • C’de neden 16-10-8’lik sistem kullanılır? Bu sorunun cevabı bu dilin uygalama alanından dolayı tamamen ihtiyaçtan dolayı eklenmiştir. Mesela Gömülü sistemlerde mikroişlemci adresleme sistemi 16’lık sistemde gerçeklenmektedir. Dolayısıyla C’de mikroişlemci programlama için 16’lık sistem bir ihtiyaç haline gelmiştir.

    Bir C Programı Oluşturmak

    04:59


    C dilinde yazılan bir programın çalıştırılabilir hale getirilebilmesi için, çoğunlukla aşağıdaki süreçlerden geçirilir :
    1. Kaynak dosyanın oluşturulması :
      Kaynak dosya bir metin editörü yardımıyla C dilinin kurallarına göre yazılan metinden ibarettir.
    2. Kaynak dosyanın derleyici program ( compiler ) tarafından derlenmesi :
      Bir programlama dilinde yazılmış bir programı başka bir programlama diline programlara “çevirici” ( translator ) denir. Dönüştürülmek istenen programın yazıldığı dile “kaynak dil” ( source language ), dönüşümün yapıldığı dile ise “hedef dil” ( target language ) denir. Hedef dil, makine dili ya da simgesel makine dili ise, böyle çevirici programlara “derleyici” ( compiler ) denir.
      Derleyici program kaynak dosyayı alır, çeviri işleminde eğer başarılı olursa bu kaynak dosyadan bir “amaç dosya” ( object file ) üretir.
      Kaynak metinde dilin kurallarının çiğnendiği durumlarda, derleyici program bu durumu bildiren bir ileti ( diagnostic message ) vermek zorundadır. Derleyici programın verdiği ileti :
      Bir “hata iletisi” ( error message ) olabilir. Bu durumda derleyici programlar çoğunlukla amaç dosya üretmeyi reddeder.
      Bir “uyarı iletisi” ( warning message ) olabilir. Bu durumda, derleyici programlar çoğunlukla amaç dosya üretir.
      Unix/Linux sistemlerinde oluşturulan amaç dosyaların uzantısı “.o” dur. DOS ve Windows sistemlerinde amaç dosyalar “.obj” uzantısını alır.
    3. Daha önce elde edilmiş amaç dosyalar “bağlayıcı” ( linker ) program tarafından birleştirilerek çalıştırılabilir bir dosya elde edilir. UNIX sistemlerde çalıştırılabilir dosyanın uzantısı olmaz. Windows sistemlerde çalıştırılabilir dosyanın uzantısı “.exe” olarak seçilir.
      Bağlayıcı program ne işe yarar? Derleyici program, yalnızca kendi derlediği kaynak dosyayı bilir. Kaynak dosyalar arasındaki, derleyicinin sorumluluğunda değildir. Derleyici program, Makine koduna dönüştürme çabası sırasında, kaynak dosya içinde kullanılan bazı isimlerin, kaynak dosya dışındaki bir başka birime ait olduğunu saptayabilir. Böyle bir durumda, kendisinden sonra gelecek “bağlayıcı” programa bu ismi kullandığı yolunda bir bilgi verir. Projeyi oluşturan modüller arasında ortaklaşa kullanılan isimlerin birbiriyle ilişkilendirilmesi ve kodların bağlanması bağlanması “bağlayıcı” programın görevidir.


    Önislemci Program

    C ve C++ dillerinde derleyici programdan daha önce kaynak kodu ele alan “önişlemci” ( preprocessor ) isimli bir program kullanılır. Önişlemci programın çıktısı, derleyici programa verilir.


    Diger Yardımcı Programlar

    • Hata Ayıklayıcı Programlar (Debugger)
    • Metinsel Yardımcılar
    • Mantıksal Hata Yakalayıcılar : Bu programlardan en çok kullanılanı LINT isimli yazılımdır.
    • Kod Biçimleyicileri
    • Profiler Programlar : Bu programlar çalışan bir programın verimini ölçme, değerlendirme amacıyla kullanılır. İşlevlerin kaç kez çağrıldığını, çağrılan her bir işlevin, çalışan program içinde ne kadar zaman harcadığını vs. bulmak ya da raporlamak amacıyla kullanılabilir.

    Programlama Dilleri ve C

    04:05


                           image


    • Birinci kuşak diller :    Makina dilleri
    • İkinci kuşak diller  : Makina kodlarının toplanarak paket haline getirildiği ve sembolik isimler verildiği assembly dili
    • Üçüncü kuşak diller     :   C,C++ … dilleridir. Üçüncü kuşak dillerin ataları Fortran, COBOL, ALGOL dilleridir.
      1.FORTRAN : Amerikan Kökenli- IBM tarafından 1954 ‘de John Focus tarafından geliştirlmiştir. http://en.wikipedia.org/wiki/Fortran
      2.COBOL     : Amerikan Kökenli -Grace Hopper tarafından geliştirilmiştir. http://en.wikipedia.org/wiki/COBOL
      3.ALGOL      : Avrupa kökenli bir dil 1950’lerde tasarlanmıştır. http://en.wikipedia.org/wiki/Fortran

    • C dilinin  tercih edilme sebepleri:
    Ø  Sistem programlama - donanımı kullanan programların geliştirilmesinde C dilini yaygın olarak kullanılması
    Ø     Mülkiyete dayalı nedenlerden dolayı (C’nin bir telif sorunu olmaması)
    Ø    C derleyicisini destekleyen donanımların fazlalığı
    Ø    Verimli bir uygulama geliştirmek için C dilinin uygunluğu
    Ø  C ’nin gücü sunni bir dil oluşturup algısal bir anlam oluşturması, iki satır kodla konuşma dilinde  paragrafla ifade edilecek anlamı karşılayacak iş yapabilmesi.
                  

    • Procedural Programlamada programın yapması gereken bir iş var ve bu iş parçalara ayrılarak gerçeklenmesine procedural programming language denir. C böyle bir dildir.
    • C# ve Java gibi diller Object Oriented Programming Paradigmasına uygun program geliştirilebilmesi esas alınarak tasarlanmıştır, C’ye nesne yönelimli programlama paradigması eklenseydi küçük olma özelliğini kaybederdi.
    • Büyük satırlı kod yazma insanoğlu için bir challenge’dı ve milyonlarca satır kod yazma C dili için ( genel olarak Procedural programming ile ) başarılı sonuçlar doğurabilecek bir yapı değildi. Object Oriented Programlama paradigması esas alınarak yapılan projelerde bu challenge aşılmış oldu ve büyük projelerin üstesinden gelindi. Nesne Yönelimli Programlamayı yaygınlaştıran en önemli etken ise bu olmuştur.
    • Nesne Yönelimli programlama C’den sonraki bir süreç,70’lerin sonu 80’lerin başı, C dili zorlanarak,daha fazla kod yazarak C dilini Object Oriented bir yapıya kavuşturmak mümkündür,simulasyon,oyun programlarında buna yakın bir mantık işlemektedir.

      C' nin Tarihi

      11:38


      MIT bir challange olarak printerları paylaşımlı kullanılabilir yapan bir proje başlatmış ve başarılı olmuştur. Bu projenin ardından MIT- GE - AT&T Bell bir araya gelerek MULTIX adında bilgisayarı paylaşımlı kullanabilecek bir proje üzerinde çalışmaya başlanmış ama AT&T bir süre sonra projeden ayrılarak kendileri bir işletim sistemi proje gerçekleştirmek üzere çalışmaya başlıyor.Bu sırada MULTIX Projesi başarısızlıkla sonuçlanıyor ve Bell Lab’da yapılan projeye MULTIX projesine nazire yaparak UNIX adı veriliyor.
      image
      Projenin başında Ken Thompson bulunuyor ve o sırada en yaygın olarak kullanılan bilgisayarına (DEC (PDP-7)) işletim sistemi yazmaya başlıyor. Bunun için CPL(Cambridge Programming Language) dilinden geliştirilmiş BCPL (http://en.wikipedia.org/wiki/BCPL) - sistem programlama dili olarak- dilini kullanıyor.  Ama bu dil yerine kendisi bir dil tasarlamaya başıyor ve adına B dili diyor. Daha sonra ekibe katılan Denis Ritche
      image
      B diline yeni eklemeler yapıyor ve adına new B deniyor. Fakat yapılan değişikllikler dilin yapısını fazlasıyla değiştirdiği için bu dile yeni bir ad veriliyor ve C ismi veriliyor.
      image
      C dili ile UNIX işletim sistemi PDP-11 için tekrardan yazılıyor ve C dilinin ilk başarısı bu oluyor. Brian Kernighan & Dennis Ritche (K&R) 1978 de The C Programming language kitabını yayınladığında bu C için dönüm noktası olmuştur. 1980’ler PC devriminin olduğu, kişisel bilgisayarların yaygınlaştığı dönem olacak ve bu kitabın tutulmasında, çok fazla atıf yapılmasında ve C ile çok fazla kod yazılmasını sağlayacaktır. Bu sırada her PC mimarisi için ayrı derleyiciler tasarlandı ve belirli standartların olmaması C’nin taşınabilirliğini zedelemeye başladı ve bu sorunu çözmek için ANSI, 1983’ten itibaren standartlar oluşturmaya çalışdı ve 1989’da ilk sandartlar yayınlandı.