C Ders Notlar 1 Ders Programlamaya Giri Yrd

  • Slides: 21
Download presentation
C++ Ders Notları 1. Ders (Programlamaya Giriş) Yrd. Doç. Dr. Musa Ataş 1

C++ Ders Notları 1. Ders (Programlamaya Giriş) Yrd. Doç. Dr. Musa Ataş 1

Dersin Amacı � C++ dersi ile: � Bilgisayar bilimlerinde ve C++ programlama dilinde geçen

Dersin Amacı � C++ dersi ile: � Bilgisayar bilimlerinde ve C++ programlama dilinde geçen kavramlar. � Program geliştirme safhaları. � Nesneye Dayalı Analiz ve Programlama. � Bu dersin sonundaki kazanımlarınız: � Algoritma geliştirme yeteneği. � Nesneye dayalı programlama bilgisi. � C++ programlama tecrübesi. � Code: : Blocks geliştirme editörü ve Ming. W derleyicisi tecrübesi. 2

Soyutlama (Abstraction) Soyutlamanın amacı karmaşıklıkla başa çıkmaktır. Bir nesnenin veya olayın sadece belli özelliklerini

Soyutlama (Abstraction) Soyutlamanın amacı karmaşıklıkla başa çıkmaktır. Bir nesnenin veya olayın sadece belli özelliklerini alıp, diğerlerini göz ardı etme yeteneğidir. (Different Viewpoints, projection) � Bilgisayar programları genellikle n boyutlu gerçek dünya problemlerinin (real world problems), m boyutlu başka bir uzayda (programlama ve mantık uzayı) çözümlenmesi için araçlar sunar. � Zor ve karmaşık bir problemi çözmenin en etkin ve kolay yolu problemi soyutlamaktır, yani; problemi en genel ana hatlarıyla çerçevelendirip detayları ile ilgilenmeden kuş bakışı bir çözüm geliştirmektir. � Örn-1: Yabancı bir ülkeye veya şehre gittiğinizi düşünelim. O belde hakkında kısa süre içerisinde fikir sahibi olmak için ne yapardınız? (helikopter turu, harita, rehber tutma) � 3

Soyutlama (Abstraction) Örnekleri Kas Sistemi 4 Sinir Sistemi İskelet Sistemi

Soyutlama (Abstraction) Örnekleri Kas Sistemi 4 Sinir Sistemi İskelet Sistemi

Soyutlama: Katman/Bileşen Mimarisi � Etrafımızdaki nesnelere/objelere dikkat edilirse katmanlar şeklinde inşa edilmiş olduğu görülür.

Soyutlama: Katman/Bileşen Mimarisi � Etrafımızdaki nesnelere/objelere dikkat edilirse katmanlar şeklinde inşa edilmiş olduğu görülür. Her katman birbiriyle etkileşim halindeki bileşenlerden meydana gelmiştir. Katman ve bileşen mimarisine göre her bileşen daha alt bileşenlerin zarfı şeklinde düşünülebilir. Bize verilen soyutlama kabiliyeti ile istediğimiz katmana ve bileşene konsantre olabiliyoruz. (Multiresolution && Scale-Space in Computer Vision, Different Viewpoints in System Engineering, Granularity in Software Engineering) � Mesela insan vücudunu ele alırsak, atomik boyutta (atom uzayında) trilyonlarca atomdan meydana gelmiş bir kitle olarak görülebildiği gibi, hücre uzayında milyonlarca hücrelerden meydana gelmiş karmaşık bir sistem olarak ta görülebilir. Biraz daha yukarı seviyelere çıktığımızda, doku uzayından meseleyi incelediğimizde tamamen ayrı bir katmanda çalıştığımız görürüz. Katman ve bileşen/alt bileşen mimarisi aslında soyutlamanın bir çeşididir. Detaylarda boğulmak yerine sadece bizi ilgilendiren kısımlara konsantre olmamız o katmanla ilgili genel bir fikir edinmemiz açısından yeterli gelecektir. 5

Soyutlama: Görsel Örnekler-1 6

Soyutlama: Görsel Örnekler-1 6

Soyutlama: Görsel Örnekler-2 7

Soyutlama: Görsel Örnekler-2 7

Bilgisayarda Katmanlı Mimari � � � � � 8 Bilgisayar da katmanlı mimari ile

Bilgisayarda Katmanlı Mimari � � � � � 8 Bilgisayar da katmanlı mimari ile inşa edilmişlerdir. Her katman (Layer), bir alt katmanın karmaşıklığını (complexity) gizlemektedir. En altta fiziksel katman yer almaktadır, bu katmanda elektrik yüklerinin ortam içerisinde akışı bulunmaktadır. Onun bir üzerinde elektronik devre elemanlarının katmanı bulunur. Bu katmanda bilgisayar sistemi milyonlarca mikro ölçekte transistör ve ilgili bileşenler ve yolları barındırmaktadır. Onun üzerinde mantıksal kapıların olduğu katman yer almaktadır. Bir üstte mantıksal kapılar ve elektronik bileşenlerden meydana gelmiş donanım katmanı bulunur. (CPU, RAM, Anakart, BIOS) Bunun üzerinde işletim sistemi (OS) katmanı yer alır. İşletim sistemin sağladığı servislerden (API) faydalanan programlama dili katmanı ile, programcı düşük seviye sistem çağrıları ile uğraşma zahmetinden kurtulur. Dolayısıyla programlama dili katmanı programcıyı, alt katmanlardaki karmaşıklıktan izole ederek daha etkin kod yazmasını sağlar. Bir üst seviyede uygulama programları katmanı yer alır. Bu katmanda bildiğimiz birçok uygulama programı, word, excel, hesap makinesi, web browser, ve belirli bir iş için geliştirilen uygulama yazılımları yer almaktadır. En üst seviyede ise insan kullanıcısı bulunmaktadır.

Bilgisayarda Katmanlı Mimari (Grafik) Kullanıcı ve/veya Programcı Seviyesi İşletim Sistemleri Programlama Dilleri Donanım aygıtları

Bilgisayarda Katmanlı Mimari (Grafik) Kullanıcı ve/veya Programcı Seviyesi İşletim Sistemleri Programlama Dilleri Donanım aygıtları Elektronik Entegre Sistemleri Fiziksel Katman 9

Programlama Dilleri Katmanı Düşük Performans Yüksek seviyeli script diller (matlab, simulink, actionscript) Öğrenmesi Kolay

Programlama Dilleri Katmanı Düşük Performans Yüksek seviyeli script diller (matlab, simulink, actionscript) Öğrenmesi Kolay Nesne tabanlı diller OOP, (C++, Java, C#, Delphi, vb) Yapısal Diller C++, Pascal, Delphi, C Orta Seviyeli Diller C / C++ Assembly Dili Makine Dili 0, 1 10 Yüksek Performans Öğrenmesi Zor

C++ Geliştirme Ortamı: Code: : Blocks � Bu dersin kapsamında C++ programlarını geliştirmek için

C++ Geliştirme Ortamı: Code: : Blocks � Bu dersin kapsamında C++ programlarını geliştirmek için Code. Blocks IDE’sini (Integrated Development Environment) kullanacağız. � Code. Blocks geliştirme editörü internet üzerinden free olarak indirlebilen açık kaynak kodlu bir editördür. � Code. Blocks editörü kendi içerisinde cross-platform (platformlar arası) çalışabilen Mingw C/C++ derleyicisini barındırmaktadır. Code. Blocks yüklendiğinde otomatik olarak Mingw derleyicisi de kurulacaktır ve gerekli ayarlamalar yapılacaktır. � Internetten Code. Blocks editörünü indirmek için http: //www. codeblocks. org/ 11

Code: : Blocks Kurulumu ve Çalıştırılması-1 � codeblocks-10. 05 mingw-setup. exe yi biligsayarınıza download

Code: : Blocks Kurulumu ve Çalıştırılması-1 � codeblocks-10. 05 mingw-setup. exe yi biligsayarınıza download ettikten sonra çift klikleyip, gelen pencerelerde next butonuna basarak kurulumu tamamlıyoruz. � Yükleme bittikten sonra Code. Blocks ı açmaya çalıştığınızda karşınıza çıkan ekranda siteminizde yüklü diğer C/C++ derleyicileri listelenecektir. Eğer yukarıda yazdığımız setup exe yi indirmişseniz Ming. W aslında GCC derleyicisini sisteme yüklemiş olacaktır. En üstte bulunan GNU GCC yi seçip açılan pencereyi kapatıyoruz. 12

Code: : Blocks Kurulumu ve Çalıştırılması-2 Açılan ana geliştirme formunda ortadaki create a new

Code: : Blocks Kurulumu ve Çalıştırılması-2 Açılan ana geliştirme formunda ortadaki create a new project linkine veya File -New-Project e geldiğimizde açılan ekrandan Console Application a ardından çıkan ekranda ise C++ ı seçip …. 13

Code: : Blocks Kurulumu ve Çalıştırılması-3 � � Project title yazan yere türkçe karakter

Code: : Blocks Kurulumu ve Çalıştırılması-3 � � Project title yazan yere türkçe karakter ve boşluk içermeyecek bir şekilde proje ismi girmemiz gerekiyor. Örn: Hafta_2_3_Ogrenci_Islemleri Dikkat edilirse Proje Büyük harfle başlanmış, kelimeler arası alt çizgi ile bağlantı yapılmış ve türkçe karakter kullanılmamıştır. Folder to Create project in yazan yere de uygun bir path (klasör) ismi yazıp next butonuna tıklıyoruz. 14

Code: : Blocks Kurulumu ve Çalıştırılması-4 � Gelen ekranda eğer derleyiciyi değiştirmeyeceksek hiçbir yeri

Code: : Blocks Kurulumu ve Çalıştırılması-4 � Gelen ekranda eğer derleyiciyi değiştirmeyeceksek hiçbir yeri değiştirmeden Finish butonuna basıyoruz. 15

Code: : Blocks Kurulumu ve Çalıştırılması-5 � Açılan Editör penceresinde sol tarafta bulunan projemizin

Code: : Blocks Kurulumu ve Çalıştırılması-5 � Açılan Editör penceresinde sol tarafta bulunan projemizin altınaki Sources yazan klasörün önündeki artıya tıklayıp açılmasını sağlayarak içerisindeki main. cpp ye çift tıklıyoruz. Şablon C++ kodları editörde açılacaktır. Bu kodlar minimal düzeyde çalıştırılabilir ve konsolda “Hello World!” mesajını görebiliriz. Bunun için F 9 a basıyoruz veya editörde Build and Run yazan simgeye tıklıyoruz. 16

Code: : Blocks Kurulumu ve Çalıştırılması-6 17

Code: : Blocks Kurulumu ve Çalıştırılması-6 17

Code: : Blocks Hata Ayıklama/Debug Modu-1 Program geliştirme sürecinde bazan programcılar yazdıkları kodları satır

Code: : Blocks Hata Ayıklama/Debug Modu-1 Program geliştirme sürecinde bazan programcılar yazdıkları kodları satır analiz ederek hataları ve değişkenlerin o anki durumlarını ve değerlerini kontrol etmek isteyebilirler. Bu işleme debugging denilmektedir. Code: : Blocks editörü programcının debug etmesine yardımcı olacak bir takım araçlar ve bileşenler içermektedir. � Bu iş için ilkönce editörün sol tarafında kod satır numaralarının hemen sağında istediğimiz bir satıra gelerek mouse ile bir kez tıklıyoruz. Aşağıdaki şekilde görüldüğü gibi kırmızı bir nokta ile beraber ilgili satırın gri renkle seçildiğini göreceğiz. Kırmızı noktaya breakpoint da denilmektedir. F 8 e bastığımızda debugger çalışıp ilk kırmızı noktada program çalışması durdurulacaktır. � 18

Code: : Blocks Hata Ayıklama/Debug Modu-2 Program kodlarının içerisindeki değişkenleri izleyebilmek için Watches menüsünü

Code: : Blocks Hata Ayıklama/Debug Modu-2 Program kodlarının içerisindeki değişkenleri izleyebilmek için Watches menüsünü aktif etmemiz gerekir. � Eğer isterseniz bu pencereyi sola sürükleyerek bir frame altına yerleştirebilirsiniz. Bu şekilde editörünüz daha derli toplu görünecektir. � Not: Eğer istenirse açılan menuden diğer önemli bileşen pencereleri de görüntülenebilir. Mesela: CPU daki registerlerin o anki durumları gibi. � 19

Code: : Blocks Hata Ayıklama/Debug Modu-3 � Debug modunda bir alt satıra geçmek için

Code: : Blocks Hata Ayıklama/Debug Modu-3 � Debug modunda bir alt satıra geçmek için F 7 tuşuna basmamız gerekmektedir. � Şayet bir fonksiyona çağrı yapılıyorsa ve o fonksiyonun içerisine de girip satır çalıştırmak istiyorsak Shift+F 7 tuşlarına basmamız gereklidir. � Debug modundan çıkmak için Menuden – Debug oradan da stop debugger a tıklamalıyız. � Bazan, uzun bir döngü içerisinde satır ilerlemek çok güç olabilir ve çok zaman alır. Bunun yerine döngüden sonra başka bir breakpoint atıp arayı ctrl+F 7 ile (“continue”) geçmemiz gerekir. 20

C++ kaynakları Arama motorlarında “C++ dersleri”, “C++ örnekleri”, “C++ kodları”, “C++ öğreniyorum”, “C++ tutorial”,

C++ kaynakları Arama motorlarında “C++ dersleri”, “C++ örnekleri”, “C++ kodları”, “C++ öğreniyorum”, “C++ tutorial”, “C++ programming”, “C++ projects”, “C++ source codes” kelimeleri ile aramalar yapıldığı takdirde birçok siteden bilgi edinilebilir. � Örnek olması açısından birkaç site aşağıda verilmiştir. � � Türkçe � http: //www. seyretogren. com/yazilim/c-dersleri. html � http: //www. muhammedmastar. com/c-dersleri � http: //www. bilgisayardershanesi. com/bilgisayar_dersleri/c-ve-c-plusdersleri. html � İngilizce � http: //www. cplus. com/doc/tutorial/ � http: //www. cprogramming. com/tutorial. html � http: //www. learncpp. com/ � http: //www. java 2 s. com/Tutorial/Cpp/Catalog. Cpp. htm � http: //www. learnerstv. com/Free-Computers-Video-lectures-ltv 161 Page 1. htm 21