C++ Programming: Program Design Including Data Structures, Third Edition Bölüm 1: Bilgisayarlar ve Programlama Dillerine Kısa Bakış
Bölüm 1 : Amaçlar Farklı tipteki bilgisayarların öğrenilmesi Bir bilgisayar sisteminin yazılım ve donanım bileşenleri hakkında bilgi edinme Bir bilgisayar dilini öğrenme Programlama dillerinin gelişiminin öğrenilmesi Yüksek düzeyli ( high-level) programlama dillerini hatırlamak C++ Programming: From Problem Analysis to Program Design, Third Edition 2
Bölüm 1: Amaçlar (devam) Derleyici nedir? Ne iş yapar? C++ Programı ile uygulama geliştirmek ve nasıl çalıştığını araştırmak Algoritma nedir? Ve problem çözme teknikleri nelerdir? Yapısal tasarım ve nesneye yönelik tasarım metodolojileri hakkında bilgi sahibi olmak Standard C++ ve ANSI/ISO Standard C++ hakkında bilgi sahibi olmak C++ Programming: From Problem Analysis to Program Design, Third Edition 3
Bilgisayarların Sınıflandırmaları Mainframe bilgisayarlar Çok fazla sayıda insanın aynı anda işlem yapabildiği çok büyük kapasiteye sahip bilgisayarlar; pahalıdır. Bankalar, uluslararası marketler, sigorta şirketleri gibi aynı anda pek çok kişinin aynı datayı kullandığı sistemlerdir Orta büyüklükte bilgisayarlar (Midsize computers) Mikro bilgisayarlar (kişisel bilgisayarlar ) C++ Programming: From Problem Analysis to Program Design, Third Edition 4
CPU (Central Processing Unit) Merkezi İşleme Birimi CU (Control Unit- Kontrol Birimi ): Komutları getirir ve çözer Ana belleğin (main memery) içindeki ve dışındaki bilgi (information flow) akışını kontrol eder. CPU bileşenlerinin içinde gerçekleşen işlemleri kontrol eder PC (Program counter-program Sayacı ): Çalıştırılacak olan sonraki komutu işaret eder. C++ Programming: From Problem Analysis to Program Design, Third Edition 5
CPU (Central Processing Unit) (merkezi İşleme Birimi ) IR (instruction register-komut yazmacı) register: verilerin saklandığı bellek: anlık olarak çalıştırılmış olan komutu tutar ALU (arithmetic logic unit- aritmetik lojik birimi ): aritmetik ve mantıksal işlemleri gerçekleştirir. C++ Programming: From Problem Analysis to Program Design, Third Edition 6
Main Memory- Ana Bellek RAM (Random Access Memory) Doğrudan CPU ya bağlıdır. Tüm programlar çalıştırılmadan önce mutlaka ana belleğe yüklenmelidir (load) Tüm veriler (data) işlenmeden önce (manipulated) ana belleğe getirilmelidir. Bilgisayar kapatıldığında ana bellekteki her şey kaybolur. C++ Programming: From Problem Analysis to Program Design, Third Edition 8
İkinci Bellek -Secondary Storage İkinci Bellek : Bilgiyi sürekli olarak (permanently) depolayan aygıttır (device) İkinci bellek örnekleri: Hard disks Floppy disks Zip disks CD-ROMs Tapes Flash drives C++ Programming: From Problem Analysis to Program Design, Third Edition 10
Giriş/Çıkış Aygıtları (Input/Output Devices) Giriş aygıtları bilgisayarlara programları ve verileri beslerler ve Keyboard,Mouse,İkinci Bellek (Secondary storage) aygıtlarını içerirler. Çıktı aygıtları (Output devices) sonuçları görüntüler ve Monitor, Printer, İkinci Bellek (Secondary storage) aygıtlarını içerirler C++ Programming: From Problem Analysis to Program Design, Third Edition 11
Yazılım -Software Yazılım belli işleri gerçekleştiren programlardır. Sistem programları işletim sistemleri gibi bilgisayarın kontrolünü gerçekleştirir. Uygulama programları (Application programs) spesifik, belirlenmiş bir işi (specific task) gerçekleştirir Kelime işlemciler (Word processors), Çalışma tabloları (Spreadsheets), Oyunlar.. gibi C++ Programming: From Problem Analysis to Program Design, Third Edition 12
Bir Bilgisayarın Dili Dijital sinyaller 0 ve 1 lerin bir dizilişidir. Makine Dili (Machine language): Bilgisayarın dilidir. İkili dijit -Binary digit (bit): Dijit 0 veya 1 İkili Kod -Binary code: 0 ve 1 lerin bir dizilişidir (A sequence of 0s and 1s) Bayt- Byte: 8 bitin bir dizilişidir ( A sequence of eight bits) C++ Programming: From Problem Analysis to Program Design, Third Edition 13
15
Kodlama Şemaları ASCII (American Standard Code for Information Interchange) ASCI data seti 128 karakterden oluşmaktadır. A harfi 1000001 şeklinde kodlanır (66th character) 3 rakamı 0110011 şeklinde kodlanır Bilgisayarlar genellikle yedi-bit ASCII kodlama yaparlar. C++ Programming: From Problem Analysis to Program Design, Third Edition 16
17
Kodlama Şemaları EBCDIC IBM tarafından kullanılmaktadır 256 karakterlidir characters Unicode 65536 karakterlidir Bir karakterin depolanması için iki bayt gereklidir. C++ Programming: From Problem Analysis to Program Design, Third Edition 18
19
20
Unicode Tables 21
Unicode Tables 22
Programlama Dili Örneği İlk bilgisayarlar makine dilinde kodlandı wages = rates * hours işleminin makine dilindeki karşılığı 100100 010001 //Load 100110 010010 //Multiply 100010 010011 //Store C++ Programming: From Problem Analysis to Program Design, Third Edition 23
Assembly Dili Assembly dili komutları bellek düzeyinde komutlardır. Assembler: Assembly dilinde yazılmış bir programı makine diline dönüştürür. C++ Programming: From Problem Analysis to Program Design, Third Edition 24
Assembly dilinin komutlarının kullanılması ile wages = rates hours eşitliği aşağıdaki gösterime dönüşür. LOAD rate MULT hour STOR wages
Yüksek düzeyli Diller (High-Level Languages) Basic, FORTRAN, COBOL, Pascal, C++, C, ve Java dilleri yüksek düzeyli dillerdir. Derleyici (Compiler): yüksek düzeyli bir dili makine diline dönüştürür wages = rate hours eşitliği C++ dilinde aşağıdaki şekilde yazılabilir: wages = rate * hours; C++ Programming: From Problem Analysis to Program Design, Third Edition 26
C++ Programı #include <iostream> using namespace std; int main() { cout << «İlk C++ programi." << endl; cout << "2 ve 3 sayilarinin toplami = " << 5 << endl; cout << "7 + 8 = " << 7 + 8 << endl; return 0; } Programın çalışması: İlk C++ programi. 2 ve 3 sayilarinin toplami= 5 7 + 8 = 15 C++ Programming: From Problem Analysis to Program Design, Third Edition 27
Bir C++ Programının Çalıştırılması C++ gibi yüksek düzeyde yazılmış bir programı çalıştırmak için C++ da kaynak programın oluşturulması gerekir. Bu, bir editör ile gerçekleşir. C++ programında deyimler # sembolü ile başlarsa, bunlar özişlemci direktifleri (preprocessor directives) olarak adlandırılır ve bu tür deyimler önişlemci (preprocessor) bir program tarafından işleme girerler. adı verilen Derleyici (compiler) programın kurallara uygunluğunu kontrol eder ve makine diline (object program) dönüştürür. C++ Programming: From Problem Analysis to Program Design, Third Edition 28
Bir C++ Programın Çalıştırılması Linker (Bağlayıcı) Nesne (object) programı diğer programlarla birleştirir; böylece çalıştırılabilir koda (executable code) dönüşüm sürecine hazırlanılmıştır. Loader (Yükleyici) Çalıştırılabilir kodu (executable code) ana belleğe (main memory) yükler. Son adım programın çalıştırılmasıdır. C++ Programming: From Problem Analysis to Program Design, Third Edition 29
Problem Çözümü Programlama bir problem çözme sürecidir. Problem çözme teknikleri: Problemin analiz edilmesi Problem gereksinimlerinin özetlenmesi Problemin çözümünün gerçekleştirilmesi için tasarım adımları (algoritma) Algoritma: Adım adım problem çözme sürecidir Çözüme sonlu bir zaman aralığında ulaşılır C++ Programming: From Problem Analysis to Program Design, Third Edition 31
Problem Çözme Süreci Adım 1 - Problemin analiz edilmesi Problemin ve gereksinimlerinin özetlenmesi Problemin çözümünde adım adım tasarım (algoritma) Adım 2 Algoritmanın implementasyonu - Algoritmanın kodlanması - Algoritmanın çalışmasının doğrulanması (verify) Adım 3 Sürerliliğin sağlanması (Maintenance) Problem alanı değiştiğinde programın da buna uygun değiştirilmesi C++ Programming: From Problem Analysis to Program Design, Third Edition 32
Yapısal Programlama (Structured Programming) Yapısal tasarım(structured design): Problemin daha küçük alt problemlere bölünmesidir. Yapısal Programlama (Structured programming) Yapısal tasarımın implementasyonudur Yapısal tasarım aşağıdaki şekillerde de adlandırılabilir: Yukarıdan aşağıya tasarım (Top-down design) Adım adım ilerleme (Stepwise refinement) Modüler programlama (Modular programming) C++ Programming: From Problem Analysis to Program Design, Third Edition 34
Nesneye Yönelik Programlama (Object-Oriented Programming) Bileşenleri nesneler olarak adlandırılır. Olası işlemler önceden belirlenmiş olan, probleme özel veriler (data) üzerinde gerçekleşir. Her nesne (object), veriler (data) ve bu verilerin işlendiği operasyonlardan oluşur. Herhangi bir nesne (object) data ve operasyonları tek bir birim içerisinde birleştirir. C++ Programming: From Problem Analysis to Program Design, Third Edition 35
Nesneye Yönelik Programlama (Object-Oriented Programming) OOD (Nesneye Yönelik Tasarım) gerçekleştiren herhangi bir programlama dili nesneye yönelik programlama dili (OOP) olarak adlandırılır. Verilerin bilgisayar belleğinde tutulması ve operasyonların (metotların) gerçekleştirilmesi yapısal programlama işleyişine göre farklıdır. C++ Programming: From Problem Analysis to Program Design, Third Edition 36
ANSI/ISO STANDARD C++ C++ dili C dilinden geliştirilmiştir C++ dili Bjarne Stroustrup tarafından 1980 li yılların başlarında Bell Laboratuvarlarında geliştirilmiştir İlk yıllarda C++ programlarının bir derleyiciden diğerine aktarılması her zaman mümkün değildi. 1998 yılının ortalarında, ANSI/ISO C++ dili standartı ile taşınabilirlik sağlandı C++ Programming: From Problem Analysis to Program Design, Third Edition 37