30 Mart 2020

#1 C Programlamaya Giriş

Programlama dilleri hayatta karşılaşılan herhangi bir sorunu ya da bir insanın yapmış olduğu herhangi bir eylemin nasıl yapılacağının makinelere anlatıldığı bir tekniktir. İlk programlama dilinden bugüne dek birçok programlama dili yazılmıştır. Yazılan her programlama dilinin belirli bir amacı vardır. Bazı programlama dilleri bilimsel hesaplamalarda nümerik analiz yapabilmek için türetilmişken bazı programlama dilleri ise son kullanıcı odaklı yazılımlar yazılırken programcının işini kolaylaştırmak amacıyla türetilmiştir ve türetilmeye de devam etmektedir.

İlk programlama dilleri bilgisayarların anlayacağı düzeyde oluşturulmaktaydı. Elektrik sinyalleri ile lojik-1 ve lojik-0 sağlanarak sinyallerden çeşitli algoritmalar oluşturulmaktaydı. 5V gerilim uygulandığında lojik-1 sinyali, 0V uygulandığında lojik-0 değeri olacak şekilde devre topolojileri oluşturulmaktaydı. Bu durum günümüzde de kullanılmakta olan Assembly dilinin temellerini oluşturmaktadır. Günümüzde lojik sinyallerle oluşturulan devre topolojileri kullanılmaktadır. Bir programlama dilinden daha hızlı olduğu durumlar da söz konusu olabilir.

C Programlama Dili

Makinelerin dili 1 ve 0′ lardır. Makinelere en yakın programlama dili Assembly dilidir. Assembly dili hem makine diline yakın hem de insanların kodlayabileceği seviyede bir dildir. Assembly dilinin geliştirilmesi ile başka programlama dilleri de türetilmiştir. 1972 yılında ise geliştirilen bu dillerden biri olan B dilinin AT&T Bell laboratuvarlarında geliştirilmesiyle C dili ortaya çıkmıştır. C dili ortaya çıktığı andan itibaren günümüzde kullanılan birçok programlama dilinin yazılmasında kullanılmıştır.

Yukarıdaki programlama dil ailesinde de görüldüğü gibi programlama dilleri belirli bir amaca hizmet etmek için birbirlerinden türetilmiştir. Kimi programcıya göre bu bir gereksizlik iken kimisine göre de bir işlevselliktir.

C Programlama Dilinin Kullanım Yerleri

C programlama dili yapısal bir programlama dilidir. Yapısal programlama yazılan kodun mantıksal bloklara ayrılarak yazılması ile oluşan bir programlama çeşididir.

C programlama dili alt seviye (low level) dil olarak kabul edilir. Bir programlama dilinin alt seviye olması onun makine diline olan yakınlığını gösterir. Yüksek seviye (high level) programlama dilleri ise makineden çok insana olan yakınlığı temsil eder. Bir insanın anlayacağı düzeyde kod yazmak yüksek seviyeli dillerde mümkündür. Programlama dilleri her geçen gün yeni bir güncelleme alarak kendilerini teknolojinin ihtiyaçlarını karşılayabilecek düzeye getirmektedir.

C programlama dili işletim sistemi yazmak amacıyla kullanılan bir programlama dilidir. Gömülü sistemler olarak adlandırdığımız elektronik kompanentlerden oluşan ve elektronik sinyallerle çalışan devrelerde elektronik sinyallerin mikroişlemci ile dijital olarak sağlanmasında da C dili kullanılmaktadır. Yani makine diline yakın olması ve bir insanın rahatça kodlayabilmesi sebebiyle C programlama dili mikroişlemcilerin kodlanmasında yıllardır kullanılmaktadır. Elbette başka programlama dilleri de mikroişlemci kodlamasında kullanılmaktadır lakin C dilinin makineye olan yakınlığından dolayı bu amaç doğrultusunda en çok C dili tercih edilmiştir.

Kısaca C programlama dilinin kullanım yerlerini aşağıdaki gibi sıralayabiliriz. Tabii ki bu listeye bir sürü örnek eklenebilir.

  • Gömülü sistemler
  • Sistem ve masaüstü uygulaması geliştirmek
  • Tarayıcı uzantı ve eklentilerini geliştirmek
  • İşletim sistemi yazmak
  • Derleyici geliştirmek
  • Veri tabanı geliştirmek

İlk C Programı

C programlama dili ile yazılan ilk program ekrana “Hello World” yazdırmaktaydı. Bu program, programcılar için oldukça manevi bir değere sahiptir ve her program dili eğitimcisi öğrencilerine ilk programda ekrana “Hello Word” yazdırır.

C dilinde ekrana “Hello Word” yazdıran kodlar aşağıdaki gibidir.

#include<stdio.h>
int main(){
    printf("Hello World");
    return 0;
}

Yukarıdaki kodların anlamları aşağıdaki tabloda verilmiştir.

KomutAçıklama
#include<stdio.h>C programlama dilindeki standart giriş ve çıkış fonksiyonlarını (standart input output) programı derleyecek olan derleyiciye bildirir.
int main()main fonksiyonunu tanımlar.
{main fonksiyonun içine yazılacak kod bloğunu başlatır.
printf(“Hello World”);Ekrana “Hello World” yazılmasını sağlayan fonksiyondur.
return 0;Programı sonlandırır ve 0 değerini döndürür.
}main fonksiyonun içine yazılacak olan kod bloğunu sonlandırır.

Yukarıdaki tabloda verilen komutlar ve açıklamalarına ek olarak ilerleyen yazılarımda C programlama dilinin yazılmasında kullanılan komutlara daha detaylı yer vereceğim. Yukarıdaki kod sadece örnek bir koddur. Yukarıdaki örnek olarak verilen kodu bir C IDE’ sinde derlediğimizde ekranımızda “Hello World” yazısını görürüz.

C programlama dilinde kod yazarken öncelikle # komutu ile derleyiciye program öncesinde kullanılacak fonksiyonların header dosyaları tanıtılır. Yani bir nevi kütüphaneler derleyiciye tanıtılır. Sonrasında main isminde bir fonksiyon tanımlanarak programda yapılacak tüm işlemleri içerisine yazılır. Yazılan her komuttan sonra noktalı virgül (;) ifadesi kullanılır. Bunun anlamı komutun bittiği ve yeni komuta geçildiğidir. main fonksiyonunun sonunda belirtilen return 0; komutu ile de o değeri döndürülerek program sonlandırılır. Bu işlemin yeni C standarlarına göre yapılmasına gerek yoktur. Lakin çoğu programcı yazar. Bende dahil. 😉 Süslü parantezlerle açılan bloklar ise o bloğun bir yere ait olduğunun göstergesidir. main fonksiyonunun altında açılan blok sadece main fonksiyonunu kapsar.

C Programlama Dili İçin IDE Ortamları

Derleyici (complier) olarak adlandırılan programlar yazılan kaynak kodunu başka bir kod formatına dönüştürürler. C programlama dili programlayan programlayıcılar yazdıkları kodları daha alt seviye dillere ve makine diline dönüştürebilmek için her programcının ihtiyaç duyduğu gibi derleyicileri kullanılırlar. Derleyicilerin tanımı bir programlama dilini kendinden alt seviye programlama dillerine dönüştürebilen program olarak da yapılabilir.

IDE diye adlandırdığımız platform tümleşik geliştirme ortamıdır (integrated development environment). IDE platformları içerisindeki birçok araç ile programcıların yazılımlarını hızlı ve rahat bir şekilde geliştirmesine olanak sağlayan yazılımlardır.

C programcılarının yazdıkları kodları derleyebilmek için kullandıkları bazı IDE’ ler aşağıda verilmiştir. Benim tavsiyem Code::Blocks kullanmanızdan yana. 😉

IDEWindowsLinuxMAC OS XBağlantı
Eclipse+++İndir
Code::Blocks+++İndir
GNAT+İndir
Visual Studio Code+++İndir
Code Lite+++İndir
Net Beans 8+İndir
Qt Creator+İndir
Sublime Text+İndir
Dev C+++İndir
C++ Builder++İndir
Anjuta+İndir
CLion+++İndir
MonoDevelop+++İndir
Linx+İndir

Yukarıdaki IDE’ lerden istediğinizi indirip kullanabilirsiniz. İçlerinden bazıları ücretli olduğundan ücretsiz ve hatta açık kaynak kodlu derleyicileri kullanmanızı tavsiye ederim.

Yorum bölümünden tüm sorularınızı bana iletebilirsiniz.

Çalışmalarınızda başarılar dilerim.

Hamit Can Dinç.

Share

Hamit Can Dinç

Yıldız Teknik Üniversitesinde Elektrik Mühendisliği öğrencisi. Araştırma ve geliştirme odaklı projelerde yer almayı sever.

You may also like...

2 Responses

  1. Ömer Sadık DEMİR dedi ki:

    Merhabalar,

    Sitenizdeki tüm yazıları okudum bu bilgileri Türkçe bir şekilde paylaştığınız için size çok teşekkür ediyorum. Biyografinize baktığım zaman Yıldız Teknik Üniversitesinde mühendislik öğrencisi olduğunuzu okudum, bende size bu üniversite ve imkanları hakkında bazı sorular sormak istiyorum, geleceğimi şekillendirebilmek için sizin tecrübelerinizden faydalanarak. Şimdiden teşekkürler.

    Öncelikle bir üçüncü sınıf öğrencisi olarak Türkiye’de elektrik mühendisleri hakkında ne düşünüyorsunuz? Bir öğrencinin gözünden anlatabilirmisiniz?

    Okulunuzun eğitimi, hocaları ve laboratuvar koşulları hakkında ne düşünüyorsunuz?

    Bir üniversite her zaman eğitim alınan bir yer değildir sosyalleşebilme açısından ne gibi faaliyetlerde bulunabilirim, yönetimi hakkında ne düşünüyorsunuz öğrenci yanlısı mı yoksa köstek mi oluyorlar?

    Bir gün kazanırsam okulda yaptığınız, önerebileceğiniz şeyler nelerdir?

    Birde baş ucu kitabınız nedir? 🙂

    • Hamit Can Dinç dedi ki:

      Merhaba,
      Öncelikle güzel yorumlarınız için teşekkür ederim. Sorularınıza gelirsek,

      • Elektrik Mühendisliği Türkiye’de az bulunan bir mühendislik bölümü. Çoğu üniversitede Elektrik-Elektronik Mühendisliği adı altında bir bölüm okutuluyor lakin isminde Elektrik geçmesine rağmen elektronik ağırlıklı bir eğitim vermekteler. %95’i bu şekilde. Elektrik mühendisliğinde ise elektronik ve benzeri dersler EE kadar fazla olmasa da veriliyor. Elektronik yönümüzün mükemmel olduğunu söyleyemem ama ilginç bir şekilde piyasada elektronik alanında ses getirmiş girişimcilerin de YTÜ- EM çıkışlı olduğunu söyleyebilirim. Piyasa çok kötü bu arada. Çok fazla sayıda mühendislik diploması olan insan var. Bu bir dezavantaj. Ama işinde iyiysen ve uzmansan kendini ispat ettiysen bunun çok da bir önemi yok. Benim sektördeki arkadaşlarımdan ve büyüklerimden gördüğüm anladığım bu. Bu arada Elektrik Mühendsiliği yurt dışında tam karşılığı Güç Mühendisliği iken Elektrik-Elektronik Mühendisliğinin tam karşılığı Elektrik Mühendisliği veya Elektrik ve Bilgisayar Mühendisliği. Ama sektörde mikroişlemci programlama ile ilgili bulabileceğin en detaylı kitabın yazarı YTÜ-EM mezunu. 😉 Demesem olmaz.
      • Hocalarımız iyi. Eskiden daha da iyiymiş. Üst dönemler öyle diyorlar. İllaki içlerinde bizim beğenmediğimiz hocalar da var tabi. Bizden daha yüksek puanlı bir üniversitede (isim vermicem) okuyan arkadaşım hocaların odalarına girmenin zor olduğunu ve hocaları kibirli olduğunu söylüyordu bana. Ben kaç tane hocamın odasında çay içerek hocamla konuştuğumu bile unuttum düşün. 🙂
      • Laboratuvarlarımız aslında baya iyi ama çok verim alamıyoruz. Öğrenci sayısından dolayı dönemde en fazla 4 deney yapabiliyoruz. Ama eğer sen bir hoca ile bir proje yapmak istiyorsan kişisel veya bir yarışmaya bağlı farketmez hoca sana yerine göre laboratuvarın anahtarını bile verir. Ders dışında laboratuvarda çalışabiliyorsun. Tabi bu tamamen sana bağlı.
      • Sosyalleşmeye gelirsek o konuda açık ara iyiyiz. Yıldızlı olupda sosyalleşmeyen pek bilmem. En basitinden ben bile çok sosyal biri olmama rağmen o sosyalliği Yıldız bana aşıladı. Çok verimli kulüplerimiz var. Hatta bir tanesinin başkanı da benim. 😉
      • Yönetim konusuna gelirsek öğrencinin mağduriyet yaşamaması için özen gösterdikleri doğru. Ben bir kulüp başkanı olduğum için bunu diğer öğrencilerden daha yakın bir şekilde gözlemleyebiliyorum. Ama bazen öğrencinin istemediği şeyleri de yapabiliyorlar. Bu her üniversitede olabilen bir durum. Genele vurursak yönetimi bence iyi ama kötü diyen de illaki çıkacaktır.
      • Eğer bir gün Yıldızlı olursan meşhur ortabahçemizde vizeler gelene kadar yat, gez, toz. Vizelerden sonra vaktin olmayacak çünkü. 🙂
      • Benim baş ucu kitabım Güç Elektroniği alanında uzmanlaşmak istediğim için o dersimizin hocalarından Prof. Dr. Hacı Bodur hocamızın yazmış olduğu Güç Elektroniği kitabı. Kitap hem Türkçe hem de lisans seviyesinde oldukça yeterli bir kitap.

      Genel olarak benim diyeceklerim bunlardı. Şimdiden tercihin için tebrik ederim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir