Nesneye Yönelik Programlama

Slides:



Advertisements
Benzer bir sunumlar
BÖLÜM 1 1.C DİLİNİN TARİHİ 1969 yılında Cambridge Üniversitesinde, BCPL (Basic Combined Programming Language) isimli bir programlama dili geliştirildi.
Advertisements

Nesneye Yönelik Programlama
Bilgisayar Bilimlerine Giriş-2
STRİNG FONKSİYONLARI.
Bilgisayar Programlama I
Algoritma ve Akış Diyagramları
C Programlama Dili AT&T Bell laboratuvarlarında, Ken Thompson ve Dennis Ritche tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiş.
TEMEL C PROGRAMLAMA DERSİ - 1
Programlama-II (Java ile Bilgisayar Programlama)
C PROGRAMLAMA DİLİNE GİRİŞ
Bölüm 2 C Dilinin Temelleri
Nesneye Yönelik Programlama
C Programlama Diline Giriş
C PROGRAMLAMA DİLİNE GİRİŞ
Bilgisayar Yapısı-Genel
Programlamanın Yapı Taşları
BDEM 105.
Nesneye Yönelik Programlama
Bölüm 1 – Bilgisayar ve C++ Programlamaya Giriş
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
Nesneye Dayalı Programlama
CEIT 101 Teorik Emrah Soykan - Konu 2 -.
CEIT 101 Teorik Vasfi Tuğun - Konu 2 -.
İSİM UZAYLARI (NAMESPACE).
PROGRAM GELİŞTİRME 1.HAFTA.
C++ Yapısı Giriş-Çıkış Komutları Döngü Komutları
Bilgisayara Giriş Doç. Dr. Mehmet S. İlkay.
BİLGİSAYARIN MİMARİSİ, TEMEL BİLEŞENLERİ VE ÇALIŞMA MANTIĞI
Bilgisayar Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
Paralel Programlamaya Giriş
İŞLETİM SİSTEMLERİ Öğr. Gör. S.Serkan TAN.
CEIT 101 Teorik Vasfi Tuğun - Konu 1- Vasfi Tuğun.
CEIT 101 Teorik Emrah SOYKAN - Konu 1- Emrah Soykan.
Temel Kavramlar, İşlemler, Operatörler
Ünite 1 – Bilgisayara Giriş , İnternet ve WWW
BİLGİSAYAR SİSTEMLERİ
Chapter 1: A First Program Using C#
C++ Ders Notları 3.Ders (String İşlemleri)
 2006 Pearson Education, Inc. All rights reserved. Görsel C# ile Windows Programlama Güz 2009 (2. Hafta)
Görsel C# ile Windows Programlama
DONANIM VE YAZILIM.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Algoritmalar ve Programlama I Ders 3: PROGRAMLAMA VE PROGRAMLAMA DİLİ
Bugünkü konular Programlama dilleri ve Syntax Generic C Program yapısı
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
DERS 4 MİKROİŞLEMCİ PROGRAMLAMA. Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 Ders 4, Slayt 2İÇERİK Yüksek seviyeli programlama dilleri Düşük sevyeli.
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
Adım Adım Algoritma.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
C. Dennis Ritchie 9 Eylül ö. 12 Ekim 2011.
Genel Kavramlar Bölüm - 1. YAZILIM Bilgisayara işlemler yaptırabilmek ve karar verdirtebilmek için yazılan kalıplara denir. Yazılım, genel olarak donanım.
Barış Ceviz Yazılım Geliştiricisi Yazılım, Yazılımcı, Yazılım Dilleri.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Programlama Laboratuarı-I DERS - 3 Program Geliştirme Derleyici ve DevC++ Derleyicisi.
Programlama Temellerİ
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
PROGRAMLAMAYA GİRİŞ.
BM-103 Programlamaya Giriş Güz 2016 (9. Sunu)
C Programlama Dili Bilgisayar Mühendisliği.
BM-103 Programlamaya Giriş Güz 2016 (4. Sunu)
Bilgisayar Donanım ve Sistem Yazılımı
Nesne tabalı Programlamaya giriş
Bölüm 2 C Dilinin Temelleri
Bilgisayar Mühendisliğine Giriş
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
NİŞANTAŞI ÜNİVERSİTESİ
Bölüm 2 C Dilinin Temelleri
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Nesneye Yönelik Programlama BM-104 Nesneye Yönelik Programlama Bahar 2013 (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. 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

Bilgisayar Organizasyonu Bir bilgisayar 6 ana bileşenden oluşur: Giriş Ünitesi (Input Unit): Bilgisayarda işlenecek bilgi çeşitli giriş cihazlarından elde edilir. (Klavye, fare vs.) Çıkış Ünitesi (Output Unit): Bilgisayarda işlenen bilgiler çeşitli çıkış cihazlarına aktarılır. (Ekran, yazıcı vs.) 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. 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. 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? İ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.

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: Makine Dilleri (Machine Languages) Assembly Dilleri (Assembly Languages) Yüksek Seviyeli Diller (High-Level Languages )

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: 00100010011 01000100010 00011010100

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

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

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.

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: C++ programlama dilinin kendisini, 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, Nesneye yönelik programlamanın mantığını ve kurallarını.

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: Yazma ve 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 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ı) İki Açık Kaynak IDE: Eclipse ve Netbeans

Bir C++ Programı Yazılım Aşamaları (devam) 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. Ö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.) 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. 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. Çalıştırma (Executing): Son olarak, bilgisayar CPU`nun kontrolu altında bellekteki programı birerli komutlar halinde peşpeşe çalıştırır.

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.)

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. //IlkOrnek.cpp //C++ ile Yazdığımız İlk Program #include <iostream>//cout Kullanımı İçin Gerekli using namespace std;//Standart Kütüphane int main() { cout<<"Hello World\n"; return 0;//Programı Sonlandır }

Ö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.

Ö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.

Ö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.

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.

Ekrana Birden Fazla Satır Yazı Yazdırma (“Kaçış Sırası” Kullanarak) //IkinciOrnek.cpp //Tek Bir Deyimle Ekrana Birkaç Satır Yazı Yazdırma #include <iostream>//cout Kullanımı İçin Gerekli using namespace std;//Standart Kütüphane int main() { cout<<"Welcome\nto\n\nC++\n"; return 0;//Programı Sonlandır }

Klavyeden Girilen İki Sayıyı Toplayan Program //UcuncuOrnek.cpp //Kullanıcıdan Aldığı 2 Tamsayıyı Toplayan Program #include <iostream>//cout ve cin Kullanımları İçin Gerekli using namespace std;//Standart Kütüphane int main() { //Değişken Deklarasyonu int sayi1,//Birinci Sayı sayi2,//İkinci Sayı toplam;//Girilen 2 Sayının Toplamını Saklayan Değişken cout<<"Birinci Sayiyi Giriniz:";//Ekrana Mesaj Yaz cin>>sayi1;//Girilen Sayıyı sayi1 e Ata cout<<"Ikinci Sayiyi Giriniz:";//Ekrana Mesaj Yaz cin>>sayi2;//Girilen Sayıyı sayi2 ye Ata toplam=sayi1+sayi2;//Girilen 2 Sayıyı Topla cout<<"Girilen 2 Sayinin Toplami:"<<toplam<<endl;//Ekrana Toplamı Yazdır return 0;//Programı Sonlandır }

Ö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.

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.

C++’ ta Tanımlı Temel Veri Tipleri (SAKLAMA KAPLARINI DÜŞÜNÜN) Veri Tipi Açıklama Boyut Aralık bool true ya da false bilgisi saklamak için 1 byte true veya false char Yalnız bir karakter saklamak için karakter short int Kısa tamsayı saklamak için 2 byte signed: -32768 to 32767 unsigned: 0 to 65535 int Tamsayı saklamak için 4 byte signed: -2147483648 to 2147483647 unsigned: 0 to 4294967295 float Ondalıklı sayı saklamak için ~7 digits double Çift hassasiyetli ondalıklı sayı saklamak için 8 byte ~15 digits

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=1100.57;

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;

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

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.