Temel Kavramlar
Bilgisayar, donanım ve yazılım olmak üzere iki bileşenden meydana gelmektedir. Donanım, bilgisayarı oluşturan tüm fiziksel verilen addır. Yazılım ise bilgisayarların isteğe uygun işleri yapabilmeleri için onlara iletilen tüm bilgiler ve komutlardır. Yazılımı sistem ve uygulama yazılımları olarak iki gruba ayrılmaktadır.
Günümüz bilgisayarlarının çalışma prensipleri, John von Neumann’ın 1945’de geliştirdiği mimariyi temel almaktadır. Bu mimaride basitçe bir işlemci, bir hafıza ve giriş/çıkış sistemleri yer almaktadır. Bir bilgisayar giriş, çıkış, bellek, aritmetik ve mantıksal, merkezi işlem ve ikincil depolama birimlerinden meydana gelmektedir.
Giriş birimleri bilgisayara veri aktarmak için kullanılan aygıtlardır. Çıkış birimleri ise bilgisayarda işlenen verinin sonucunun gösterildiği aygıtlardır. Bellek işlenecek ve işlenmiş verilerin geçici olarak saklandığı bir hafıza birimidir. Aritmetik ve mantıksal birim işlemci içerisinde yer alan veriler üzerinde artitmetik ve mantıksal işlemler yapan birimdir. Merkezi işlem birimi bilgisayardaki tüm birimleri kontrol eder ve giriş biriminden alınan verilerin ve işlenen verilerin belleğe aktarılmasını sağlar. İkincil depolama birimleri kalıcı ve yüksek kapasiteli bellek birimleridir.
Bilgisayar sistemleri veri oluşturmak ve iletmek için 1’leri ve 0’ları kullanır. Bu iki değerli sayı sistemine, ikilik (binary) denir. 1 ve 0 değerleri Binary Digit olarak ifade edilir. Bu ifadeden türetilmiş bit kelimesi en küçük bellek birimi olarak adlandırılır. Bilgisayarda verileri daha kolay ifade etmek, veri girişini hızlandırmak ve daha az dijit ile daha çok değer gösterebilmek için sekizlik ve onaltılık sayı sistemleri kullanılmaktadır. 23=8 olduğundan üç dijitlik/bitlik bir ikilik sayı bir dijitlik sekizlik sayı ile gösterilebilmektedir. Aynı şekilde 24=16 olduğundan 4 bitlik bir ikilik sayı bir dijitlik onaltılık sayı ile gösterilebilir. Onaltılık sayı sisteminde 10-15 arasındaki değerleri tek sembolle ifade edebilmek için sayılar yerine harfler kullanılmaktadır. Bu harfler A=10, B=11, C=12, D=13, E=14 ve F=15 şeklindedir.
Sayı sistemleri arasında çevrim işlemi oldukça basittir. İkilik sayılar sekizlik sayıya çevrilirken ikilik sayı sağdan üçerli gruplara ayrılır ve eksik kalan bitler 0 kabul edilir. Her bir grubun sayısal değerleri aynı sırada birleştirilerek sekizlik karşılık elde edilir. Sekizlikten ikilik sayı sistemine çevrilirken ise her bir sekizlik dijitin ikilik sistemdeki karşılıkları aynı sırada yan yana yazılarak ikilik karşılık elde edilir. İkilik sayıdan onaltılık sayıya çevirme işleminde ikilik sayı sağdan dörderli gruplara ayrılır ve eksik kalan bitler 0 kabul edilir. Her bir grubun sayısal değerleri aynı sırada birleştirilerek onaltılık karşılık elde edilir. Onaltılıktan ikilik sayı sistemine çevrilirken ise her bir onaltılık dijitin ikilik sistemdeki karşılıkları aynı sırada yan yana yazılarak ikilik karşılık elde edilir.
İkilik sayı sistemi kullanarak bilgisayarları programlamak oldukça zordur. Bu nedenle çeşitli programlama dilleri geliştirilmiştir. Programlama dilleri aracılığıyla çeşitli semboller, ifadeler kullanılarak oluşturulan komutlar grubuyla bilgisayara yapılması istenen işlemler ve veriler aktarılır. İnsanların konuşma diline yakın olan dillere “yüksek seviye dil”, donanıma yakın dillere de “düşük seviye dil” denilmektedir. Programlama dillerini makine dilleri, düşük seviyeli diller ve yüksek seviyeli diller olarak üç gruba ayırabiliriz. Derleyiciler yüksek seviyeli programlama dilleri ile yazılmış programları bilgisayarların anladığı makine diline dönüştüren sistem yazılımlarıdır.
1979 yılında Bjarne Stroustrup tarafından Bell laboratuvarlarında C programlama diline eklemeler yapılarak yeni bir dil geliştirilmiştir. Bu yeni dile "Sınıflarla C" adı verilmiş ve daha sonra 1983 yılında dilin adı C++ olarak değiştirilmiştir ve ilk kullanım kılavuzu yayınlanmıştır. 1989 yılında resmi olarak 2.0 versiyonu yayınlanmıştır. 1998 yılında C++ standart komitesi ilk uluslararası standart ISO C++ 98'i yayınlamıştır. 2003 yılında, C++ 98’in hataları düzeltilen dil C++ 03 olarak adlandırılmıştır. Daha sonra dile yeni düzeltmeler ve eklemeler yapılarak 2011 yılında C++ 11, 2014 yılında C++ 14, 2017 yılında C++ 17 sürümleri yayınlanmıştır. 2020 yılı sonunda C++ 20 son kararlı sürümü yayınlanmıştır.
C++ dilinde program geliştirme süreci düzenleme, önişleme, derleme, birleştirme, yükleme, çalıştırma, hata ayıklama aşamalarından oluşmaktadır. Düzenleme, kaynak kodların bir editör aracılığıyla oluşturulduğu aşamadır. Önişleme, kaynak kod içerisindeki açıklamaların kaldırılması, sabit değerlerin kaynak kod içerisinde yerlerine değerlerinin yazılması gibi işlemlerin yapıldığı aşamadır. Derleme aşamasında, önişleme ile oluşturulan kaynak kod uygulamanın çalışacağı işletim sistemine göre makine diline çevrilerek amaç kod üretilir. Birleştirme aşamasında, kullanılan kütüphane fonksiyonları amaç kod ile birleştirilir. Yükleme aşamasında üretilen program bilgisayarın belleğine yüklenir. Çalıştırma aşamasında merkezi işlem birimi bellekteki programı adım adım işletir.
Hata ayıklama aşaması yazılan programda hata olması durumunda işletilecek adımdır. Yazım hatası, çalıştırma zamanı hatası ve mantık hatası olmak üzere üç tip hata vardır. Fonksiyonun adının yanlış yazılması, parantezi kapatmayı unutmak gibi yazım hataları program derlenirken tespit edilerek hatalı satır numarası geliştiriciye bildirilir. Mantıksal hatalar, çalıştırılan programa girilen verilere göre beklenen sonuçların üretilmediği durumlarda ortaya çıkmaktadır. Test verileri ile programlar test edilerek doğru sonucu üretecek şekilde algoritmada değişiklikler yapılmalıdır. Çalışma zamanı hatası ise genellikle hatalı veri girişi yapıldığında ortaya çıkmaktadır. Programın ihtiyaç duyduğu bir dosyanın, kütüphanenin yüklenememesi, hafızada olmayan bir konuma erişilmeye çalışılması, bilgisayarda disk, hafıza gibi yeterli kaynağın olmaması da çalışma zamanında ortaya çıkarak programın kırılmasına sebep olmaktadır. Geliştirici çalışma anında hatalara sebep olacak durumları denetleyerek programın kırılmasını engelleyebilir.