1 / 26

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

BM-104 Nesneye Yönelik Programlama Bahar 201 3 ( 1 . Sunu ) ( Yrd . Do ç . Dr. Deniz Dal). Bilgisayar Nedir?. İ nsano ğ lundan milyarlarca kez daha h ı zl ı i ş lem yapabilen ve lojik kararlar verebilen cihazlara bilgisayar diyoruz .

vadin
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Bilgisayar Nedir? • İnsanoğlundanmilyarlarcakezdaha hızlıişlemyapabilenvelojikkararlarverebilencihazlarabilgisayardiyoruz. • Bilgisayarlar, “bilgisayarprogramları” adınıverdiğimizbirbiriardına sıralanmışkomutsetlerininkontrolü altındabilgiişlerler. • Birbilgisayar en temelde 2 bileşendenoluşur: • Donanım (Hardware) • Klavye, fare, ekran,diskler, bellek, CD/DVD-Rom • Yazılım (Software) • Birbilgisayarüzerindeçalışan her türlü program

  3. Bilgisayar Organizasyonu • Birbilgisayar 6 anabileşenden oluşur: • GirişÜnitesi(Input Unit):Bilgisayarda işlenecekbilgiçeşitligirişcihazlarındaneldeedilir.(Klavye, fare vs.) • ÇıkışÜnitesi(Output Unit):Bilgisayarda işlenenbilgilerçeşitliçıkışcihazlarınaaktarılır.(Ekran, yazıcıvs.) • BellekÜnitesi(Memory Unit):Bellekya da anabellekolarak da adlandırılır. Bilgiyegerektiğinde (işlemeesnasında) hızlıulaşmayı mümkün kılanbirdepovazifesi görür. • ALU(Arithmetic and Logic Unit)(Aritmetik ve LojikİşlemBirimi):Toplama, çıkarma, çarpma,bölmegibitemelaritmetik işlemlerinyanındabellektesaklıolaniki sayının birbirine eşitliğini test etmekgibilojikbirvazifesi de vardır. • CPU(Central Processing Unit)(MerkeziİşlemBirimi):Bilgisayarın patronudurdiyebilirizGirişünitesihangianda belleğe bilgiyiyazmalıdırveya ALU gercekleştireceği işlemler için gerekliolanbilgiyibellekten ne zamanalmalıdırya da bellektençıkışünitesinebilgi ne zamanyollanmalıdır? • İkincilDepolamaÜnitesi(Secondary Storage Unit): Hard disklergibibellektendahafazlakapasiteyesahipamadahayavaş, enerjisikesildiğinde bile sahipolduğu bilgiyikaybetmeyendepolamaüniteleridir.

  4. MakineDilleri, Assembly Dillerive YüksekSeviyeli Diller • Bazıprogramlamadilleribilgisayarın direktanlayabileceği birkomutsetinesahipikenbirbaşkagrupbu işlemiçeviriilegerçekleştirir. Bu anlamdaprogramlamadilleri 3 farklıkategoride değerlendirilebilir: • MakineDilleri(Machine Languages) • Assembly Dilleri(Assembly Languages) • YüksekSeviyeli Diller(High-Level Languages )

  5. MakineDilleri(Machine Languages) • Her bilgisayar, direktolarakanlayabileceği kendine has birmakinedilinesahiptir. • Bu dillergeneldeanlamlıolarakpeşpeşe dizilmiş 1`ler ve 0`lardan oluşur. Bu şekildeoluşmuş her birkomutbilgisayaraanlamlıbirtakım temel işlemlerigercekleştirmesini söyler. • Bu tür dillermakinebağımlıdır. (machine-dependent) • Makinedilleriile program yazmak biz insanlar için hem çok can sıkıcıdır hem de hatayapmaoranıçok fazladır. • Örnek:Bir A sayısıile B sayısınıtoplayıp sonucu C sayısınaatayanmakinedilinde yazılmış bir program: 00100010011 01000100010 00011010100

  6. Assembly Dilleri (Assembly Languages) • Bilgisayarlar popülerolmayabaşlayıncamakinadilleri hem hatayapmaoranlarının yüksekoluşu hem de sıkıcıolmalarısebebiyle günün ihtiyaçlarınakarşılıkveremezoldular. • 1`lerden ve 0`lardan oluşan komutsetleriyerine biz insanların anlayabileceği komutsetleriylemakinakomutlarınıkarşılama ihtiyacı doğdu. • Bu anlamda“assemblers”denilençeviriciprogramlaryazıldı. Bunlar assembly dillerinimakinadilinebilgisayar hızındaçevirmeyeyarayanbilgisayar programlarıdır. • Örnek: 1 önceki slide da makinediliyleyazılan program assembly dilindeşöyletemsiledilebilir: load A add B store C

  7. YüksekSeviyeli Diller(High-Level Languages) • Assembly dilleriprogramlama için harcanan süreyi ilk başlardaazalttıbelkiamazaman içinde o da ihtiyacacevapvermemeyebaşladı. • Bu ihtiyaçtan doğan yüksekseviyelidillertek bir satır kodlabirçok işlemiaynıandagerçekleştirmebecerisinesahiptirler. • Bu tür dillermakinabağımlıdeğildirler.(machine-independent) • Bu dilleri, bilgisayarların anlayabileceği makinadillerine dönüştürmek için “compiler”yada“derleyici”olarakadlandırılançeviricilerkullanılır. • Örnek: 2 önceki slide da makinediliyleyazılan program bir yüksekseviyedilindeşöyletemsiledilebilir: C=A+B

  8. C ve C++`ın Tarihçesi • C++ dili C dilinden o da BCPL ve B dilleriüzerindengelişti. • BCPL 1967 yılında Martin Richards tarafındanişletimsistemivederleyiciyazmakamacıylageliştirildi. • Ken Thompson Bell Laboratuarlarında BCPL den faydalanarak B dilinigeliştirdivebudili UNIX işletimsisteminin ilk versiyonlarınıyazmakiçin kullandı. • C dili B diliüzerindengeliştive Bell Laboratuarlarında Dennis Ritchie tarafindan 1972 yılındayazıldı. C dili ilk başlarda UNIX işletimsistemininyazılım diliolarakgenişkabul gördü. • C++ iseBjarneStroustruptarafından, 1980`li yılların başında, Bell Laboratuarlarında, C dilininbiruzantısıolarakbirçok eközelliği bünyesinde barındıran birprogramlamadiliolarakgeliştirildi. Bu özelliklerin en önemlisiisebudilinbir“object-oriented programming”yani“nesnetabanlıprogramlama”diliolmasındankaynaklanır.

  9. C++ Standart Kütüphanesi (Standard Library) • Herbir C++ programı“sınıflar” (classes)ve“fonksiyonlar”(functions)denenkısımlardanoluşur. • İhtiyacımız olan her programı sıfırdankendimizyazabileceğimizgibi“C++ StandartKütüphanesi”denenve bünyesindeçok zenginbir sınıf vefonksiyon kümesi barındıran kütüphaneyi de kullanabiliriz. (!Avoid reinventing the wheel. Reuse reuse reuse.!) • Dolayısıylabuderste3şeyöğreneceğiz: • C++ programlamadilininkendisini, • C++ standart kütüphanesinivebu kütüphane bünyesinde işimizeyarayabileceknelerinhalihazırdabizim için yazılmışvekullanıma hazır olduğunu, • Nesneye yönelik programlamanın mantığını ve kurallarını.

  10. Bir C++ Programı Yazılım Aşamaları • Tipikbir C++ programıbilgisayartarafındançalıştırılabilmedenönce 6 aşamadangeçer: • Yazmave Düzeltme(Editing) • Önişleme(Preprocessing) • Derleme(Compiling) • Birleştirme(Linking) • Yükleme(Loading) • Çalıştırma(Executing) • Test Etme (Testing) • Hata Ayıklama (Debugging) Microsoft Visual Studio 2010programı 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) • Yazmave Düzeltme(Editing):Programcıbir editör yardımıile C++ programınıyazarvegerekli düzenlemeleriyapar. Bir C++ programı“.cpp”uzantılıdır. • Önişleme ve Derleme (PreprocessingandCompilation): Compiler ya da derleyicibir C++ programınımakinadiliniçevirir. (machine language code-object code) Preprocessor (önişlemci) derleyicidenönceçağrılır vebazımanipulasyonlargercekleştirir.(Açıklayıcıbilgileri (comments) programdançıkarır, bazıdosyalarımevcutprogramailiştirir.) • Birleştirme(Linking):Bir C++ programıtipikolarakbaşkayerlerde tanımlıfonksiyonlarareferanslar içerir.(Meselastandartkütüphanedeki fonksiyonlar)Derleyicininoluşturduğu “makinakodu”buolmayanfonksiyonların yerinisonradantamamlanmaküzereboş bırakır. “Linker”dediğimizbirleştiriciana makina kodu ilefonksiyonlaraaitmakina kodlarınıbirleştirirvebilgisayartarafındançalıştırılabilecek“executable image”denen programıoluşturur. • 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ısabitdiskten alarak belleğe transfer ederve programın başlangıç adresini CPU ya bildirir. • Çalıştırma (Executing):Son olarak, bilgisayarCPU`nunkontrolu altındabellekteki programıbirerlikomutlarhalindepeşpeşe çalıştırır.

  12. Bir C++ Programı Yazılım Aşamaları (devam) • Genellikleprogramlar ilk denemeesnasındaçalışmazlar. Azönce açıklanan 6 aşamanın herhangibirindenkaynaklananbirsorunbunasebepolmuşolabilir. Sebeparaştırılır, belkiyenidenbaşa dönülür ve her işlemyenidentekrarlanır. • Programlar genelliklekullanıcıdangirişisterlerveçalıştırmasonaerdiğinde bir çıkışverirler. Bazı C++ fonksiyonlarıgirişlerini“cin – see in - siin” (standard input stream) den alırlar. (Çoğunluklabuklavyeolur.) Bilgiisegenelde“cout – seeout – siaut” (standard output stream) a yönlendirilir. (Çoğunluklabubilgisayarekranıdır.)

  13. C++ ileProgramlamayaGiriş(BasitBir Program – EkranaTek Satır Yazı Yazdırma) • Herhangibirbilgisayarprogramlamadiliniöğrenmeyegenelolarakekrana“Hello World” (Merhaba Dunya)yazdırılarakbaş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şlemetalimatı” dır. “#” karakteriilebaşlayan her satır program derlenmeyebaşlanmadanönce“C++ önişleyicisi” tarafından işlenir. Bizimörneğimizdebu satır önişlemciyestandart 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şlemlerinikolaylaştıracakfonksiyonları içerir. (cout ve cinkullanılabilir artık) • 4 nolu satır muhakkakeklenmelidirveamacıdetaylıolarakdahasonrakiderslerde işlenecektir.

  16. Örnek Programa Ait Açıklamalar (Devam) • 6nolu satır her C++ programındaolmasıMUHAKKAKbir satırdır. “main”kelimesindensonrakiparantezlerbubloğun birfonksiyonolduğunu söylerbize. Bir C++ programıbirya da dahafazlafonksiyondanoluşuramaMUHAKKAKbir“main”fonksiyonuolmalıdır. Program çalışmaya“main”fonksiyonundaki ilk satırı işleterekbaşlar. “main”kelimesininsolundaki“int”bizebufonksiyonunbir integer rakamgeri döndürdüğünü söyler. “{“ sol köşeliparanteziveonakarşıgelen“}”sağ köşeliparantezibirfonksiyonun gövdesini tanımlar. (7ve10nolu satırlar) • 8nolu satır ekrana, “string” adınıverdiğimiz tırnak işaretleri içindekikarakterdizisiniyazdırır. Bu satırın tamamı (en sondakinoktalıvirgül “;” işareti de dahil) deyim(statement) olarakadlandırılır. “<<“karakteri“araya akış sokma operatörü”olarak tanımlanır. Bu operatörün sağındakibilgisolundaki“cout” a (kigeneldeekranıtemsileder) atanır. Tırnak işaretleri içindekullanılan“\”(backslash)karakteri“kaçış karakteri”olarakadlandırılır vebuözelbirkarakterinekranayazdırılmaküzereolduğuna işareteder. Birkarakterdizisi içinde“\” a rastlanıldığında, birsonrakikarakterbackslash ilebirleştirilirvebu“kaçış sırası”olur. Bizimörneğimizde“\n”yenibir satıragitanlamı taşır. • 9nolu satır her “main”fonksiyonununsonunaMUHAKKAKeklenmelidirve herşeyyolundagittiise programın sonaermesinesebepolur.

  17. Yaygın “Kaçış Sıraları” \n : Newline (İmleciyenibir satırın en başına götürür.) \t : Yataytab (İmlecibirsonraki tab durağına götürür.) \r : Carriage return (İmlecimevcut satırın başına götürür.) \\: Backslash (Ters Bölü)karakterini ekranayazar. \”: Tırnak işaretini ekranayazar.

  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ı • 8nolu satır ile integerveri tipinde 3 adet değişken (sayi1, sayi2, toplam) tanımlanır. (Değişken deklarasyonu)Bir değişken bilgisayarın belleğindebulunurve program tarafındandepolamaamaçlıkullanılır. Deklarasyonunbaşındaki“int”anahtarkelimesi tanımlanan değişkenintipinin integer olduğunu gösterir. • 12ve 14nolu satırlardaki“cin”operatörüklavyedenbilgigirişiiçin kullanılır. cinoperatörüklavyedenwhitespace, newline (ENTER)ya da tabkarakterini görünceokumayısonlandırır. • 16nolu satırdaki“endl”manipülatör olarakadlandırılır veyenibir satırın başınagitmekiç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. C++’ ta Tanımlı Temel Veri Tipleri (SAKLAMA KAPLARINI DÜŞÜNÜN)

  23. Değişken Deklarasyonuve Değer Atama Örnekleri • boolbuyukMu;//Deklarasyon • bool test=false;//Deklarasyon ve İlk Değer Atama • char kullaniciGirisi='y'; • unsigned short intkardesSayisi; • signed intsicaklik; • intsicaklik; • floatortalama=2.345; • doublepiSayisi=3.1418; • doublehesapBakiyesi=1100.57;

  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 ToplamaOperatörü; + ; örneğin a+3 Çıkarma Operatörü; - ; örneğin a-3 ÇarpmaOperatörü; * ; örneğin a*3 BölmeOperatö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.

More Related