Gömülü Sistem C Programlama By Konuk Yazar Posted on 7 Şubat 2015 16 min read 0 0 3,649 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhabalar arkadaşlar, Programlamanın en önemli yapıtaşlarından biri olan C programlama ile ilgili anlatımlarımıza başlıyoruz.Başlangıç niteliğinde olan bu yazımızda temel kavramlardan bahsedeceğiz. TANIMLAR PROGRAM:Bilgisayara ne yapması gerektiğini söyleyen komutlar dizisine denir. Program hayatımızdaki bir problemi bilgisayar ile çözmek, rutin işlemleri kolaylaştırmak için gereklidir. PROGRAMCI:Programları belli kurallar(her programlama dilinin kendine özgü kuralları ve yazım formatı vardır) çerçevesinde yazan kişilere denir. PROGRAMLAMA DİLİ:Programcının, bir bilgisayara ne yapmak istediğini anlatmasının standartlaştırılmış yoluna denir . KAYNAK KOD:Bilgisayar, işlemlerin programlama dilleri aracılığı ile makine diline çevrilmesini sağlar. Kaynak kod herhangi bir metin editörüne yazılıp değiştirilebilir. Programlama dilleri daha sonra kaynak kodların makine diline çevirerek bilgisayara anlatılması işlemini üstlenirler. DERLEYİCİ(COMPİLE):Bir programlama dilinde yazılmış olan kaynak kodu başka bir dile çeviren programa denir. YORUMLAYICI(INTERPRETER):Kaynak kodunu satır satır makine koduna çeviren ve çakıştıran yazılım türüne denir. NESNE KODU:Derleyici tarafından derlenmiş olan kaynak koddan üretilen obje veya o uzantılı olan koda denir.Çalıştırılabilir bir kod değildir.Oluşturulan nesne kodları ve gerekli görülen bazı kütüphane dosyaları kullanılarak bir BAĞLAYICI(LİNKER) aracılığıyla çalıştırılabilir kod haline dönüştürülebilir. Bilgisayarda bir problemi çözmek günlük hayattaki çözdüğümüz problemden daha farklıdır. Bilgisayarda çözeceğimiz problemin çözümünü bilgisayarın anlayacağı dilde yani makine dilinde bilgisayara aktarmamız gerekiyor.Bunu yapabilmek için, kodlamaya geçilmeden önce tasarım aşamasında problemi oluşturan varlıkların bilgisayarda ifade edilecek şekilde modellerin oluşturulması gerekmektedir. PROGRAMLAMA DİLLERİNİN SINIFLANDIRILMASI Programlama dilleri günümüze kadar birçok gelişim aşamasından geçmiştir. Bu yüzden sınıflara ayrılma ihtiyacı duymuştur.Programcının amacına yönelik olarak, programlama dili seçebilmesi için bu sınıflamalardan faydalanması gerekebilir. Seviyelerine göre programlama dilleri Yüksek seviyeli: İnsan anlayışına daha yakın bir programlama dilidir.Kaynak kodları kısa derlenmiş halleri uzundur.Çalışma hızları yavaştır. Alçak seviyeli:Makine anlayışına daha yakın olan bir programlama dilidir.Kaynak kodları uzun derlenmiş halleri kısadır.Çalışma hızları ise yüksek seviyeli dillere göre daha hızlıdır. Uygulama alanlarına göre programlama dilleri C PROGRAMLAMA DİLİNİN GENEL ÖZELLİKLERİ Yapısal bir programlama dili olan c, gerek aritmetik operatörleri,gerek program denetim deyimleri, gerekse fonksiyon yapısı yönüyle diğer dillerden daha üstün bir program kontrolüne imkan sağlar. C programlama dili verileri istenen formata çevirebilen, operatörleri bulunan ve böylece daha etkin program yazılabilen bir dildir. C programlama dili donanıma da kolay bir şekilde erişim imkanı verir. Donanımsal işlemlerinde aynı kolaylıkta yapılmasını sağlar. Bunu yaparken de alt düzey programlama dillerine yazımı daha kolay ve daha esnektir. C programlama dilinde programlar yukarıdan aşağıya doğru işler ve sıklıkla =,==,!=,+,++,-,–,*,(),{ } işaretler kullanılır. C programlama dilinde tek satırlık açıklama için ‘//’ bu işaret, çok satırlı açıklama ifade etmek için ‘/* */’ bu işaret kullanılır. C programlama dili fonksiyonlardan oluşmuştur. Kullandığımız bütün komutlar birer fonksiyondur. Yazacağımız komutlarda en az bir tane fonksiyon olmalıdır. Bu ana fonksiyonda main( ) fonksiyonudur.Programların çalıştırılması main fonksiyonundan başlar. satırlar ‘;’ bu karakter ile ayrılır. Değişkenlerde büyük küçük duyarlılığı vardır. C PROGRAMLAMA DİLİNİN TARİHÇESİ AT&T Bell laboratuarlarında, Ken Thompson ve Dennis Ritchie tarafından UNIX İşletim Sistemi‘ ni geliştirebilmek amacıyla B dilinden türetilmiş yapısal bir programlama dilidir. Geliştirilme tarihi 1972 olmasına rağmen yayılıp yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan “C Programlama Dili” kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin (Microsoft Windows, GNU/Linux, *BSD, Minix) yapımında %95’ lere varan oranda kullanılmış, halen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen bir alt küme C++ diline geçmişlerdir. C PROGRAMLAMA DİLİNİN KARDEŞLERİ C++ PROGRAMLAMA DİLİ C++ programlama dili ilk olarak 1979 yılında New Jersey’in Murrey Hil bölgesinde bulunan BELL laboratuarlarında Bjame Stroustrop tarafından geliştirilmiştir. Bu ismin veriliş nedenlerinden biri, C programlama dilinde c=c+1 deyiminin artırma operatörü olan ‘++’ kullanılarak c++ olarak gösterilir. Bu dil aslında c programlama dilinin uzantısıdır ve sorunlara çözüm bulunabilmesi için eski özelliklerin kaybedilmesi istenmemiştir. Bu dil c programlama dilini kapsamakta ve ek olarak nesneye dayalı programlamayı(OPP – Object Oriented Programming) da destekler. Bu dil c programlama dili ile tamamen uyumludur. C# PROGRAMLAMA DİLİ Nesneye dayalı bir dildir. C++’ ın ve Java’nın pozitif yönlerinin birleştirilmesiyle oluşturulmuş yeni bir programlama dilidir. Programcıya internet uygulamaları ve yerel uygulamalar yazmakta bazı kolaylıklar getirmiştir. C PROGRAMLAMA DİLİNİN AVANTAJLARI VE DEZAVANTAJLARI Orta seviyeli bir dildir. Yazılan C kodu ile makine kodu arasında bağlantı kolaylıkla kurulabilir. Sistem programlama dilidir. Bugün işletim sistemleri , derleyiciler, editörler gibi sistem programlarının hemen hepsi yoğun olarak C kodu içermektedir. Ancak sistem programlamanın dışında da birçok uygulamada C verimli olarak kullanılabilir. Algoritmik bir dildir. Yalnızca dilin sintaks ve şematik yapısını bilmek yetmez. Problemleri çözebilecek bir algoritma bilgisine de ihtiyaç duyulur. Diğer diller arasında taşınabilirliği en fazla olanlardan biridir. İfade gücü yüksek ve okunabilirlik özelliği kuvvetli bir dildir. Atomik bir dildir. C de alt programlama tekniği ileri düzeyde kullanılmaktadır. Güçlü bir dildir. Tasarım özellikleri çok iyidir. C ‘ye ilişkin yapıların ve operatörlerin bir kısmı daha sonra diğer diller tarafından da benimsenmiştir. Verimli bir dildir. C programları seviyesi dolayısıyla daha hızlı çalışır. Doğal bir dildir. C Bilgisayar sisteminin çalışma biçimiyle uyum içindedir. Eğitimi zor bir dildir. Öğrenebilmek için diğer dillerden daha fazla çaba gerekir. Yapısal bir dildir. Çok esnektir. Bu yüzden programcının hata yapmayacak bir bilgiye ve deneyime sahip olması gerekir. BİR PROGRAMIN OLUŞTURULMASI Sistem analizi:Gerçekleştirilmek istene proje tasarlanır ve parametreleri araştırılır. Algoritmalar ve akış şemaları:Programı yazarken atacağımız adımların açıklamasıdır. Program tasarımında; yapılacak işlemleri açıklamak ve programcıya yol göstermek için kullanılan bir diğer yöntemde akış şemaları hazırlamaktır. Kodlama:Herhangi bir yazılım programı ile kaynak dosya oluşturulur. bu dosya bir isim altında ve uzantısı”*.c” olmak koşuluyla diske kaydedilir. Derleme: C programlama dilinde yazılan programı makine diline çevirir. Bağlama(linking):Derlenen c programında, standart kitaplıkta bulunan veya kullanıcın daha önce hazırladığı derlediği fonksiyonlar kullanılmış olabilir. C derleyicisinin oluşturduğu nesne dosyasında bu bakımdan eksiklikler olabilir. Linkler, programı bu kullanılan fonksiyonların bulunduğu dosyaları, kaynak programın nesne dosyasına ekler. Bilgisayar bu dosyadaki programın komutlarını teker teker ve bulundukları sırada CPU’nun kontrolü altında çalışır. Yazar: Tuğba Kaya – Konya Selçuk Üniversitesi / Bilgisayar Mühendisliği