|
Bilgisayarın Yapısı Bilgisayar, çok sayida aritmetiksel veya mantiksal islemlerden olusan bir isi, önceden verilmis islem adimlarina göre yapip sonuçlandiran bir araçtir. Günümüzde bu aracin daha çok yari-iletken teknolojisiyle üretilmis sekli yaygin oldugundan elektronik beyin olarak da bilinir. Ancak tarihsel a idan ilk bilgisayarlar mekanik olmustur. Çalisma Sistemi Bilgisayarlarin kisimlari Mikro bilgisayarlar ilk bakista bir daktilo tuslari ve bir televizyon ekrani olan basit bir alettir. Bu alete esitli yardimci cihazlar baglanabilir. Mikro bilgisayarlara disk hafiza, yazici, grafik .izici gibi daha bir çok aletler baglanabilir. Bütün bunlar bilgisayarin sert kisimlarini (donanim) teskil eder. Programlar Bilgisayara hayat verebilmek için ona tam bilgi aktarmak gerekir. Belli bir isin yapilmasini tarif eden her ifadeye program denir. Bütün programlarin toplamina da bilgisayarin yumusak kisimlari (yazilim) denir. Bilgisayar mantigi Bilgisayarin nasil çalistigini ögrenmek için onun bilgileri nasil kullandigini anlamak gerekir. Harfler ve rakamlar bilgisayarda kodlar seklinde ifade edildikten sonra kullanilir. Bilgisayarlarda kodlar elektrik olarak voltajin olup olmamasi ile ifade edilir. Voltaj var, lamba yaniyorsa 1; voltaj yok, lamba yanmiyorsa 0 kodlarini alir. Iki durumlu olan bu kodlamaya "ikilik sistem" denir. Bilgisayara tuslardan verilen her bilgi 1 ve 0 kodlarina çevrilir. Her 0 ve 1, bit olarak; sekiz bitlik grup ise, byte olarak tarif edilir. Bilgisayar, islemlerini ikilik sayi sistemi ile yapar. Islemler ok sade ve basit olmakla beraber çok hizlidir. Mantik Bilgisayarlar sadece sayilari saymakla kalmayip karar da verebilirler. Bu kararlar, Boolean cebiri denilen mantik kaidelerine göredir. Çesitli sartlara göre bilgisayar EVET, HAYIR, VE, VEYA, DEGIL gibi kararlar alabilir. Mesela; evi tasimak için bir kamyon VE bir soföre ihtiyaç vardir. Bu kamyon bir dar köprüden geçmek zorundaysa kamyon genis VEYA yüksekse köprüye çarpar. Tasinacak ev bos DEGIL ise tasima islemi gecikecektir. Burada VE, VEYA, DEGIL kararlari verilmistir. Bilgisayarlarin Çalismasi Bilgisayarlar dört ana kisimdan meydana gelmistir: Hafiza, giris, çikis ve merkezi islem birimi. CPU islemleri sirasi ile yapar, toplar, çikarir, mukayese eder. Toplama, çikarma gibi islemleri yaptiran programlar önceden CPU'ya ögretilmistir. Bilgisayara giristen iki sayi yazmak yeterli olmaktadir. CPU'nun saat, program sayici, bilgi tarif edici aritmetik ve mantik kismi gibi bölümleri vardir. CPU Bilgisayarin kalbidir. Icra edilecek komutlar sira ile CPU ya getirilir. Komutun muhtevasi ve bilgisayarin o anki durumu göz önüne alinarak, komut icra edilir. Her türlü aritmetik ve mantiki islemler CPU'nun bir parçasi olan ALU'da yapilir. Islemlerin sonucu akümülatör denen özel hafiza hücresine geçici olarak alinir, gitmesi gereken yere buradan ulastirilir. Program sayici, siradaki komutun hafizadaki yerini tutar. Saat ise, CPUnun elektronik çalismasi için gereken titresimleri saglar. Bu titresimlerin sikligi bilgisayarin hizini belirleyen temel unsurdur. C++ Temelleri ve C++ nedir C++ dili C dilinin gelistirilmis seklide diyebiliriz.(Bu arada C++ ogrenmek icin C bilmenize gerek yoktur). C Brian Kernighan ve Dennis Ritche tarafindan Bell Labs'ta 1969 -73 tarihleri arasinda yaratilmistir. Ilk amaci alt duzeyde bilgisayar dilerinin (Assembly) yerini almakti, Assembly dili gercekten okunmasi ve yazilmasi cok zor bir dildir. Onlarin acisindan yapmak istedikleri sey Unix' i yazmakti, Butun dunyada kisa bir surede basariya ulasti ve UNIX ve WINDOWS'un anahtar dili oldu. Bu dogrultuda C kisa bir surede yuksek performansli proglamlar yapmaya odaklasti, ayni sekilde C++. Boylelikle foksiyonel programcilik dogmus oldu. C ve C++ programlari foksiyonlardan ( functions ) olusur, foksyionlar bir bilgiyi alir ve sonuc uretir yada baska bir foksiyona bu isin yapilmasini soyler. Biraz aciklamak gerekirse, Programlamaya baslamadan once karisiniza bir problem sunulur, bu problemin tamamini cozmektense o problemi parcalara bolup , parcalari cozmek gibi. Ornegin Bakkaldan ekmek almak: problem = bakkaldan ekmek almak Bakkaldan Ekmek almak = evden cik + bakkali sec + bakkala kadar yuru + ne almak istedigine soyle + parayi ver + ekmegi al + eve don. Burada dikkat etmenizi istedigim bir konu var. Ornekte dikkat edin her fonksiyon bir eylem. Bunu aklinizin bir kosesine yazin ilerde bu konuya geri donecegim. C ayni zamanda kuvettli bir dil yapan ozellik C de yazdiginiz bir program " Run " yapilmadan once dogru olmasi gerekliligi, (strongly typed language). Bjarne Stroustup 1983 yillin c yi gelistirerek C++ yaratti. C de yazdiniz her dogru program C++ da kullanabilirisiniz, ama tam tersi gecerli degil. C++ nesne oryantasyonu (object oriented) stilinde bir programdir. Object oriented programi siniflara ( classes) ayirir, bu siniflar nesneleri uretir. Her class bilgilerden ve fonsiyonlardan olusur. (Bundan sonra sinif yerine Class, fonksiyon yerine functions, nesne yerine object ve bilgi yerine data kelimerini kullanabilirim. Bunlari ilgilizce olarak kulanmaniz ve o sekilde kavramaniz daha dogru olacagini dusunuyorum) Bir object diger bir class'taki baska bir object'tin ozellikleri onu cagirarak kullanabilir. Data mevcut oldugu class icinde saklanir, bu ozellik iste C++ guclu kilan ozelliktir.Cunku data daha guvenilir bir sekilde saklanir ve programin degistirilmesi yada modifikasyonu daha kollaylikla saglanmis olur. Object orientation (nesne oriyantosyonu) Object Oriented programciligi asagidaki bir ornekle aciklamaya calisacagim. Bir kahve makinesi dusunun sizden bu kahve makinasini programlamasini istediler. Simdi bakalim elimizde neler var. Bir buyuk kutu icinde su, kahve, sut tozu, seker var kutunun uzerinde dugmeler var, ve uzerinde para tabileceginiz bir bolum var. Buraya kadar hersey yolunda, simdi elimizdekileri inceleyelim neler data, neler functions. Ozelikle baslamadan once sistem duvarlarini (System Boundry) belirlememiz gerekiyor. Sizin yapacaginiz programin cercevesini belirliyecegiz. Bizim System Boundry kahve makinasi, kahve makinasi disindaki hic bir sey bizi baglamiyor.
 Simdi ornegimizi inceleyelim. Kullanici sutlu ve sekerli kahve icmek istiyor diyelim, Parayi makinadan iceri attiyor ve sut+kahve+seker dugmesine basiyor. Buraki dugmeye basmak olayi programla dilinde o function'i kullanmaya baslamak demek. program kahve, sut ve sekeri (datalari) aliyor ve belli oranda karistiyor ve size plastik kap icersinde Kahvenizi (sizin ictiginiz kahve bir nesne (object)) veriyor. Objecti sanirim anladiniz simdi objectin oriyantosyonuna gecelim. ilerde diyelimki firma sahibi sizden ekspresso ozelligini makinaya eklemenizi istedi.siz yeni bastan butun programi degistirmeniz gerekecek. Eger programiniz object oriented ise buna gerek yok. Nedeneni hemen aciklayayim 
Patron ekspereso istemisti, object orriented olmayan sisteme gore butun programi yeniden yazmaniz gerekcek. ama object oriented sistemde tek yapmaniz gereken yeni bir fonksiyon ekleyip, diger foksiyonlari yardima cagira bilirsiniz, asagidaki ornege bir bakin. 
simdi birde Cay ekleyelim
Gordugunuz gibi programin tamamini degistirmeden yeni bir ozellik daha eklemis olduk. Bir cok kitapta yada web sayfasinda dillin ozellikleri anlatilip daha sonra object oriyantasyon anlatiliyor, bu okuyucun kafasinin karismasina yada bazi kotu aliskanliklarin kazanilmasina neder oluyor. Bir seyi en basindan dogru ogrenmek en dogrusu oldugunu dusunuyorum. Umarim object oriyantasyon fikrini biraz olsun burada anlamissinizdir, ilerde bu konuya tekrar donecegim. C++ Program yazmak C++ dilinden yazilan her program genelde asagidaki gibi bir yol izler Inceleme -> Program ile ne yapacaginiza karar verme Dizayn -> Programin neyi nasil yapacaginin aciklanmasi Edit-> Kodu yazma asamasi Compile-> Compiler kulanarak yazdiginiz kodun bilgisayarin anlayaca bilecegi bir metne donusturme. Link-> Birbirinden farkli nesneleri bir araya getirme Test-> Compiler sadece yazim diliyle ilgili olan hatalarda sizi uyarir yada hata verir, mantiksal hatalari sizin duzeltmenzi gerekir. Debug-> Program islemeye basladiktan sonra ortaya cikan hatalarin duzeltilmesi.
|