Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

BM-104 Nesneye Yönelik Programlama Bahar 2013 (1. Sunu) (Yrd. Doç. Dr. Deniz Dal)

Benzer bir sunumlar


... konulu sunumlar: "BM-104 Nesneye Yönelik Programlama Bahar 2013 (1. Sunu) (Yrd. Doç. Dr. Deniz Dal)"— Sunum transkripti:

1 BM-104 Nesneye Yönelik Programlama Bahar 2013 (1. Sunu) (Yrd. Doç. Dr. Deniz Dal)

2 Bilgisayar Nedir?  İnsanoğlundan milyarlarca kez daha hızlı işlem yapabilen ve lojik kararlar verebilen cihazlara bilgisayar diyoruz.  Bilgisayarlar, “bilgisayar programları” adını verdiğimiz birbiri ardına sıralanmış komut setlerinin kontrolü altında bilgi işlerler.  Bir bilgisayar en temelde 2 bileşenden oluşur:  Donanım (Hardware)  Klavye, fare, ekran, diskler, bellek, CD/DVD-Rom  Yazılım (Software)  Bir bilgisayar üzerinde çalışan her türlü program

3 Bilgisayar Organizasyonu  Bir bilgisayar 6 ana bileşenden oluşur: 1.Giriş Ünitesi (Input Unit): Bilgisayarda işlenecek bilgi çeşitli giriş cihazlarından elde edilir. (Klavye, fare vs.) 2.Çıkış Ünitesi (Output Unit): Bilgisayarda işlenen bilgiler çeşitli çıkış cihazlarına aktarılır. (Ekran, yazıcı vs.) 3.Bellek Ünitesi (Memory Unit): Bellek ya da ana bellek olarak da adlandırılır. Bilgiye gerektiğinde (işleme esnasında) hızlı ulaşmayı mümkün kılan bir depo vazifesi görür. 4.ALU (Arithmetic and Logic Unit) (Aritmetik ve Lojik İşlem Birimi): Toplama, çıkarma, çarpma, bölme gibi temel aritmetik işlemlerin yanında bellekte saklı olan iki sayının birbirine eşitliğini test etmek gibi lojik bir vazifesi de vardır. 5.CPU (Central Processing Unit) (Merkezi İşlem Birimi): Bilgisayarın patronudur diyebiliriz  Giriş ünitesi hangi anda belleğe bilgiyi yazmalıdır veya ALU gercekleştireceği işlemler için gerekli olan bilgiyi bellekten ne zaman almalıdır ya da bellekten çıkış ünitesine bilgi ne zaman yollanmalıdır? 6.İkincil Depolama Ünitesi (Secondary Storage Unit): Hard diskler gibi bellekten daha fazla kapasiteye sahip ama daha yavaş, enerjisi kesildiğinde bile sahip olduğu bilgiyi kaybetmeyen depolama üniteleridir.

4 Makine Dilleri, Assembly Dilleri ve Yüksek Seviyeli Diller  Bazı programlama dilleri bilgisayarın direkt anlayabileceği bir komut setine sahip iken bir başka grup bu işlemi çeviri ile gerçekleştirir. Bu anlamda programlama dilleri 3 farklı kategoride değerlendirilebilir: 1.Makine Dilleri (Machine Languages) 2.Assembly Dilleri (Assembly Languages) 3.Yüksek Seviyeli Diller (High-Level Languages )

5 Makine Dilleri (Machine Languages)  Her bilgisayar, direkt olarak anlayabileceği kendine has bir makine diline sahiptir.  Bu diller genelde anlamlı olarak peşpeşe dizilmiş 1`ler ve 0`lardan oluşur. Bu şekilde oluşmuş her bir komut bilgisayara anlamlı bir takım temel işlemleri gercekleştirmesini söyler.  Bu tür diller makine bağımlıdır. (machine-dependent)  Makine dilleri ile program yazmak biz insanlar için hem çok can sıkıcıdır hem de hata yapma oranı çok fazladır.  Örnek: Bir A sayısı ile B sayısını toplayıp sonucu C sayısına atayan makine dilinde yazılmış bir program:

6 Assembly Dilleri (Assembly Languages)  Bilgisayarlar popüler olmaya başlayınca makina dilleri hem hata yapma oranlarının yüksek oluşu hem de sıkıcı olmaları sebebiyle günün ihtiyaçlarına karşılık veremez oldular.  1`lerden ve 0`lardan oluşan komut setleri yerine biz insanların anlayabileceği komut setleriyle makina komutlarını karşılama ihtiyacı doğdu.  Bu anlamda “assemblers” denilen çevirici programlar yazıldı. Bunlar assembly dillerini makina diline bilgisayar hızında çevirmeye yarayan bilgisayar programlarıdır.  Örnek: 1 önceki slide da makine diliyle yazılan program assembly dilinde şöyle temsil edilebilir: load A add B store C

7 Yüksek Seviyeli Diller (High-Level Languages)  Assembly dilleri programlama için harcanan süreyi ilk başlarda azalttı belki ama zaman içinde o da ihtiyaca cevap vermemeye başladı.  Bu ihtiyaçtan doğan yüksek seviyeli diller tek bir satır kodla birçok işlemi aynı anda gerçekleştirme becerisine sahiptirler.  Bu tür diller makina bağımlı değildirler. (machine- independent)  Bu dilleri, bilgisayarların anlayabileceği makina dillerine dönüştürmek için “compiler” yada “derleyici” olarak adlandırılan çeviriciler kullanılır.  Örnek: 2 önceki slide da makine diliyle yazılan program bir yüksek seviye dilinde şöyle temsil edilebilir: C=A+B

8 C ve C++`ın Tarihçesi  C++ dili C dilinden o da BCPL ve B dilleri üzerinden gelişti.  BCPL 1967 yılında Martin Richards tarafından işletim sistemi ve derleyici yazmak amacıyla geliştirildi.  Ken Thompson Bell Laboratuarlarında BCPL den faydalanarak B dilini geliştirdi ve bu dili UNIX işletim sisteminin ilk versiyonlarını yazmak için kullandı.  C dili B dili üzerinden gelişti ve Bell Laboratuarlarında Dennis Ritchie tarafindan 1972 yılında yazıldı. C dili ilk başlarda UNIX işletim sisteminin yazılım dili olarak geniş kabul gördü.  C++ ise Bjarne Stroustrup tarafından, 1980`li yılların başında, Bell Laboratuarlarında, C dilinin bir uzantısı olarak birçok ek özelliği bünyesinde barındıran bir programlama dili olarak geliştirildi. Bu özelliklerin en önemlisi ise bu dilin bir “object-oriented programming” yani “nesne tabanlı programlama” dili olmasından kaynaklanır.

9 C++ Standart Kütüphanesi (Standard Library)  Her bir C++ programı “sınıflar” (classes) ve “fonksiyonlar” (functions) denen kısımlardan oluşur.  İhtiyacımız olan her programı sıfırdan kendimiz yazabileceğimiz gibi “C++ Standart Kütüphanesi” denen ve bünyesinde çok zengin bir sınıf ve fonksiyon kümesi barındıran kütüphaneyi de kullanabiliriz. (!Avoid reinventing the wheel. Reuse reuse reuse.!)  Dolayısıyla bu derste 3 şey öğreneceğiz: 1.C++ programlama dilinin kendisini, 2.C++ standart kütüphanesini ve bu kütüphane bünyesinde işimize yarayabilecek nelerin halihazırda bizim için yazılmış ve kullanıma hazır olduğunu, 3.Nesneye yönelik programlamanın mantığını ve kurallarını.

10 Bir C++ Programı Yazılım Aşamaları  Tipik bir C++ programı bilgisayar tarafından çalıştırılabilmeden önce 6 aşamadan geçer: 1.Yazma ve Düzeltme (Editing) 2.Önişleme (Preprocessing) 3.Derleme (Compiling) 4.Birleştirme (Linking) 5.Yükleme (Loading) 6.Çalıştırma (Executing) 7.Test Etme (Testing) 8.Hata Ayıklama (Debugging) Microsoft Visual Studio 2010 programı bu 8 aşamanın tamamında bize yardımcı olacak araçlara sahiptir. (IDE: Integrated Development Environment) (Tümleşik – Bütünleşik - Entegre Geliştirme Ortamı)

11 Bir C++ Programı Yazılım Aşamaları (devam) 1.Yazma ve Düzeltme (Editing): Programcı bir editör yardımı ile C++ programını yazar ve gerekli düzenlemeleri yapar. Bir C++ programı “.cpp” uzantılıdır. 2.Önişleme ve Derleme (Preprocessing and Compilation): Compiler ya da derleyici bir C++ programını makina dilini çevirir. (machine language code - object code) Preprocessor (önişlemci) derleyiciden önce çağrılır ve bazı manipulasyonlar gercekleştirir. (Açıklayıcı bilgileri (comments) programdan çıkarır, bazı dosyaları mevcut programa iliştirir.) 3.Birleştirme (Linking): Bir C++ programı tipik olarak başka yerlerde tanımlı fonksiyonlara referanslar içerir. (Mesela standart kütüphanedeki fonksiyonlar) Derleyicinin oluşturduğu “makina kodu” bu olmayan fonksiyonların yerini sonradan tamamlanmak üzere boş bırakır. “Linker” dediğimiz birleştirici ana makina kodu ile fonksiyonlara ait makina kodlarını birleştirir ve bilgisayar tarafından çalıştırılabilecek “executable image” denen programı oluşturur. 4.Yükleme (Loading): !!!BİR BİLGİSAYAR PROGRAMI ÇALIŞTIRILMADAN ÖNCE, MUHAKKAK BELLEĞE YERLEŞTİRİLMELİDİR.!!! İşletim sisteminin “Loader” (yükleyici) adlı bileşeni “executable image” halindeki programı sabit diskten alarak belleğe transfer eder ve programın başlangıç adresini CPU ya bildirir. 5.Çalıştırma (Executing): Son olarak, bilgisayar CPU`nun kontrolu altında bellekteki programı birerli komutlar halinde peşpeşe çalıştırır.

12 Bir C++ Programı Yazılım Aşamaları (devam)  Genellikle programlar ilk deneme esnasında çalışmazlar. Az önce açıklanan 6 aşamanın herhangi birinden kaynaklanan bir sorun buna sebep olmuş olabilir. Sebep araştırılır, belki yeniden başa dönülür ve her işlem yeniden tekrarlanır.  Programlar genellikle kullanıcıdan giriş isterler ve çalıştırma sona erdiğinde bir çıkış verirler. Bazı C++ fonksiyonları girişlerini “cin – see in - siin” (standard input stream) den alırlar. (Çoğunlukla bu klavye olur.) Bilgi ise genelde “cout – see out – siaut” (standard output stream) a yönlendirilir. (Çoğunlukla bu bilgisayar ekranıdır.)

13 C++ ile Programlamaya Giriş (Basit Bir Program – Ekrana Tek Satır Yazı Yazdırma)  Herhangi bir bilgisayar programlama dilini öğrenmeye genel olarak ekrana “Hello World” (Merhaba Dunya) yazdırılarak başlanır.

14 Örnek Programa Ait Açıklamalar  1 ve 2 nolu satırda yazdıklarımızın programın işleyişine hiçbir katkısı yoktur. Bunlar “comment” adını verdiğimiz ve programın anlaşılmasına yardımcı olabileceğini düşündüğümüz açıklamalardır. “//” karakteri “bir satırlık açıklama” olarak adlandırılır, çünkü açıklama o satır sona erdiğinde biter. Eğer birden fazla satıra comment yazmak istersek, yazacaklarımızı “/*” ve “*/” karakterleri arasına koyarız.

15 Örnek Programa Ait Açıklamalar (Devam)  3 nolu satır “preprocessor directive” yani “önişleme talimatı” dır. “#” karakteri ile başlayan her satır program derlenmeye başlanmadan önce “C++ önişleyicisi” tarafından işlenir. Bizim örneğimizde bu satır önişlemciye standart kütüphaneden “iostream” adlı başlık (header) dosyasını eklemesini söyler. Bu dosya “C++ Standart Kütüphanesinden” bizim için giriş/çıkış işlemlerini kolaylaştıracak fonksiyonları içerir. (cout ve cin kullanılabilir artık)  4 nolu satır muhakkak eklenmelidir ve amacı detaylı olarak daha sonraki derslerde işlenecektir.

16 Örnek Programa Ait Açıklamalar (Devam)  6 nolu satır her C++ programında olması MUHAKKAK bir satırdır. “main” kelimesinden sonraki parantezler bu bloğun bir fonksiyon olduğunu söyler bize. Bir C++ programı bir ya da daha fazla fonksiyondan oluşur ama MUHAKKAK bir “main” fonksiyonu olmalıdır. Program çalışmaya “main” fonksiyonundaki ilk satırı işleterek başlar. “main” kelimesinin solundaki “int” bize bu fonksiyonun bir integer rakam geri döndürdüğünü söyler. “{“ sol köşeli parantezi ve ona karşı gelen “}” sağ köşeli parantezi bir fonksiyonun gövdesini tanımlar. (7 ve 10 nolu satırlar)  8 nolu satır ekrana, “string” adını verdiğimiz tırnak işaretleri içindeki karakter dizisini yazdırır. Bu satırın tamamı (en sondaki noktalı virgül “;” işareti de dahil) deyim (statement) olarak adlandırılır. “<<“ karakteri “araya akış sokma operatörü” olarak tanımlanır. Bu operatörün sağındaki bilgi solundaki “cout” a (ki genelde ekranı temsil eder) atanır. Tırnak işaretleri içinde kullanılan “\” (backslash) karakteri “kaçış karakteri” olarak adlandırılır ve bu özel bir karakterin ekrana yazdırılmak üzere olduğuna işaret eder. Bir karakter dizisi içinde “\” a rastlanıldığında, bir sonraki karakter backslash ile birleştirilir ve bu “kaçış sırası” olur. Bizim örneğimizde “\n” yeni bir satıra git anlamı taşır.  9 nolu satır her “main” fonksiyonunun sonuna MUHAKKAK eklenmelidir ve herşey yolunda gitti ise programın sona ermesine sebep olur.

17 Yaygın “Kaçış Sıraları” \n : Newline (İmleci yeni bir satırın en başına götürür.) \t : Yatay tab (İmleci bir sonraki tab durağına götürür.) \r : Carriage return (İmleci mevcut satırın başına götürür.) \\ : Backslash (Ters Bölü) karakterini ekrana yazar. \” : Tırnak işaretini ekrana yazar.

18 Ekrana Birden Fazla Satır Yazı Yazdırma (“Kaçış Sırası” Kullanarak)

19 Klavyeden Girilen İki Sayıyı Toplayan Program

20 Örnek Kodun Açıklaması  8 nolu satır ile integer veri tipinde 3 adet değişken (sayi1, sayi2, toplam) tanımlanır. (Değişken deklarasyonu) Bir değişken bilgisayarın belleğinde bulunur ve program tarafından depolama amaçlı kullanılır. Deklarasyonun başındaki “int” anahtar kelimesi tanımlanan değişkenin tipinin integer olduğunu gösterir.  12 ve 14 nolu satırlardaki “cin” operatörü klavyeden bilgi girişi için kullanılır. cin operatörü klavyeden whitespace, newline (ENTER) ya da tab karakterini görünce okumayı sonlandırır.  16 nolu satırdaki “endl” manipülatör olarak adlandırılır ve yeni bir satırın başına gitmek için kullanılır.

21 Değişkenler (Variables)  Her bir C++ değişkeni içerisinde saklayacağı bilginin tipini belirleyen bir VERİ TİPİNE ve bir İSME sahiptir.  Değişkenlere MUHAKKAK kullanım maksatlarına uygun bir isim verilmelidir. Bütün değişken isimleri bir harfle başlar ve devamında başka harfler, rakamlar ve alt çizgiler içerebilir. Değişkenler adlandırılırken noktalama işaretleri ve boşluk kullanılmaz.  Değişkenler isimlendirilirken en fazla kullanılan metodlardan biri deve notasyonudur (camel notation). Bu notasyon, değişken ismi birden fazla kelime içeriyorsa ilk kelime hariç sonraki kelimelerin ilk karakterlerinin büyük harfle yazıldığı bir notasyondur. enKucukSayi, bankaHesapNo gibi.  Değişkenler kullanılmadan önce muhakkak tanımlanmalıdırlar yani deklare edilmelidirler. Değişkenlere değer atanması deklarasyon anında da yapılabilir daha sonra da.

22 Veri TipiAçıklamaBoyutAralık booltrue ya da false bilgisi saklamak için 1 byte true veya false charYalnız bir karakter saklamak için 1 byte karakter short intKısa tamsayı saklamak için2 byte signed: to unsigned: 0 to intTamsayı saklamak için4 byte signed: to unsigned: 0 to floatOndalıklı sayı saklamak için4 byte~7 digits doubleÇift hassasiyetli ondalıklı sayı saklamak için 8 byte~15 digits C++’ ta Tanımlı Temel Veri Tipleri (SAKLAMA KAPLARINI DÜŞÜNÜN)

23 Değişken Deklarasyonu ve Değer Atama Örnekleri  bool buyukMu; //Deklarasyon  bool test=false; //Deklarasyon ve İlk Değer Atama  char kullaniciGirisi='y';  unsigned short int kardesSayisi;  signed int sicaklik;  int sicaklik;  float ortalama=2.345;  double piSayisi=3.1418;  double hesapBakiyesi= ;

24 Nesne Tabanlı Programlama Nedir?  Dile Entegre Veri Tipleri (Built-in Data Types)  int, double, float…  int sayi1;  float ortalama;  Kullanıcı Tanımlı Veri Tipleri (User-defined Data Types)  Araba, Bilgisayar, Deniz…  Araba honda;  Bilgisayar hp;  Deniz nesne1;

25 Aritmetik Operatörler Toplama Operatörü; + ; örneğin a+3 Çıkarma Operatörü; - ; örneğin a-3 Çarpma Operatörü; * ; örneğin a*3 Bölme Operatörü; / ; örneğin a/3 Modülüs Operatörü; % ; örneğin a%3 Tamsayı Bölme: 7/4=1 17/5=3 Modülüs: 7%4=3 17%5=2

26 UYGULAMA  Kullanıcıdan klavye yoluyla alacağı 3 tam sayının aritmetik ortalamasını bularak ekrana yansıtacak bir C++ konsol uygulaması yazınız.


"BM-104 Nesneye Yönelik Programlama Bahar 2013 (1. Sunu) (Yrd. Doç. Dr. Deniz Dal)" indir ppt

Benzer bir sunumlar


Google Reklamları