BMT 101 Algoritma ve Programlama I 5. Hafta Yük. Müh. Köksal Gündoğdu 1
C++ Programlamaya Giriş Yük. Müh. Köksal Gündoğdu 2
Programlama Dili Bilgisayar dünyası 1960 lardan bu yana pek çok dille tanıştı. Başlangıçta her şey 1 lerden ve 0 lardan meydana geliyordu ve komut kavramı bile gelişmemişti. Bilgisayara komut vermek için daha önceden belirlenmiş sayılar kullanılıyordu. O zamandan bu zamana değişen ve gelişen programlama dilleri oldu. Yük. Müh. Köksal Gündoğdu 3
Programlama Dili Bu programlama dilleri yakın bir zamana kadar teknolojiden bağımsızken günümüzde tek başlarına pek bir anlam ifade etmiyorlar. Programlama dili genellikle başka bir dilden hareketle yazılmış oluyor. Makine Dili hariç bütün diller başka bir dil temel alınarak yazılmıştır. Makine dili en hızlı, bilgisayar kaynaklarına doğrudan erişimi sağlayan ancak o oranda da ilkel bir dildir. Hatta mümkün olduğunca makine dili kullanmak çok daha kaliteli sonuç verecektir. Ne yazık ki makine dili kullanımı birçok proje için çok zordur. Makine dili zamanla geliştirilerek ileri düzey diller geliştirildi. Yük. Müh. Köksal Gündoğdu 4
Programlama Dili Şu anda dünyada 100 lerce programlama dili var. Özel amaçlı ve genel amaçlı 10 larca dil büyük kitlelerce kullanılıyor. Bunların hepsinin bir tek ortak özelliği var: yazılan programı makine diline çevirir ya da doğrudan makine dilinden komut çalıştırır. Bu işi rakipsiz denebilecek kadar iyi yapan tek dil ise C++. C ye rakip diller ya yine C kullanarak yazılmıştır, ya da C nin türevlerinden biridir. Kısaca özetlemek gerekirse, C++ hem ileri düzey kullanım rahatlığına sahip hem de oldukça hızlı bir dildir. Yük. Müh. Köksal Gündoğdu 5
Genel Kavramlar 1979 yılında Bell laboratuvarı araştırmacılarından Bjarne Stroustrup tarafından geliştirilmeye başlayan C++, C programlama dilinin temel özelliklerinin yanında nesne yönelimli programlama özelliklerini de taşıyan bir programlama dilidir.1980 lerinbaşında C With Classes olarak adlandırılan bu programlama dilinin adı, 1983 yılında C++ olarak değiştirilmiştir. Yük. Müh. Köksal Gündoğdu 6
C++ Dilinin Temel Özellikleri 1-Nesne yönelimli ve genel amaçlı bir programlama dilidir. 2-C programlama dilinin birçok özelliklerini taşır. 3-Program yazımı belirli kalıpta, bloklar halinde olur. 4-Bloklar { } parantezleri ile oluşturulur. 5-Tüm komutlar (;) ile biter. 6-Programda kullanılan tüm değişkenler ve veri tipleri belirtilir. 7-Programda kullanılacak olan komutların bulunduğu kütüphaneler çağrılır. Yük. Müh. Köksal Gündoğdu 7
C/C++ Program Geliştirme Ortamı Yük. Müh. Köksal Gündoğdu 8
Visual Studio Programında Microsoft.Net C++ ile çalışmak Yük. Müh. Köksal Gündoğdu 9
Visual Studio Programında Microsoft.Net C++ ile çalışmak Yük. Müh. Köksal Gündoğdu 10
Visual Studio Programında Microsoft.Net C++ ile çalışmak Yük. Müh. Köksal Gündoğdu 11
Visual Studio Programında Microsoft.Net C++ ile çalışmak Yük. Müh. Köksal Gündoğdu 12
Visual Studio Programında Microsoft.Net C++ ile çalışmak Programı yazacağımız Studio C++ editor ortamı (IDE) aşağıda görüldüğü gibidir. Bu IDE ortamında error list açık değil ise View menüsünden açılabilir. Aşağıdaki program yazıldıktan sonra Build menüsünden Build ilk_prog seçilirse program derlenerek çalıştırılır. Yük. Müh. Köksal Gündoğdu 13
Visual Studio Programında Microsoft.Net C++ ile çalışmak Microsoft. NET i bilgiyi, bilgi sistemlerini ve cihazları birbirine bağlamak için geliştirilen yazılım teknolojileri kümesidir. NET in temel anlayışı platformdan bağımsız çalışabilecek programlar üretmektir. Visual Studio ile bir C++ programı yazmak için programlardan Visual Studio 2012 seçildiğinde aşağıdaki ekran gelir. File New Project seçildiğinde gelen aşağıdaki ekrandan Win32 Console Application 'ı seçerek ve dosya adı vererek(ilkc++program) verdiğimizde ekrana Win32 Application Wizard-IlkC++Program başlıklı bir pencere gelecektir. Burada finish butonu onaylanırsa artık ilk programımızı yazabiliriz. Yük. Müh. Köksal Gündoğdu 14
Visual Studio Programında Microsoft.Net C++ ile çalışmak Menüler ve Araç Çubuğu Hata Listesi Yük. Müh. Köksal Gündoğdu 15
Visual Studio Programında Microsoft.Net C++ ile çalışmak Çözüm Gezgini Özellikler Yük. Müh. Köksal Gündoğdu 16
İlk C++ Programı Yük. Müh. Köksal Gündoğdu 17
İlk C++ Programı Öncelikle, çok basit bir örnek program yazalım ve C++ programlarının yapısını bu örnek program üzerinde inceleyelim. Uygulama // ilk C++ programı #include <iostream> using namespace std; int main() { cout << "Merhaba Turkiye..." << "\n"; cout << "Merhaba Dunya..."; return 0; } Yük. Müh. Köksal Gündoğdu 18
Program Başlığı Program başlığında, program hakkındaki açıklamaları yada ismini içeren ifade veya ifadelerdir Kullanım Şekilleri: /* açıklamalar veya program başlığı */ // açıklamalar veya program başlığı Örneğin: // by elektroking // 01.04.2013 // Deneme yazılımı Yük. Müh. Köksal Gündoğdu 19
Tanımlama ve Bildirimler Bölümü include: Pascal ve C programlarında olduğu gibi C++ programlarında da ilgili kütüphane (başlık/kitaplık) dosyalarının bildirilmesi gerekmektedir. C kütüphane dosyalarına ilave olarak bazı C++ kütüphane dosyaları verilmektedir. Örneğin; C deki math kütüphanesi C++ da cmath, string kütüphanesi cstring, stdlib kütüphanesi cstdlib gibi çok küçük değişikliklerle kullanılabilmektedir. Yük. Müh. Köksal Gündoğdu 20
Tanımlama ve Bildirimler Bölümü Kullanım Şekilleri: #include < kütüphane adı > #include<iostream> using namespace std; #include<iostream> #include<cmath> #include<cstdlib> using namespace std; Yük. Müh. Köksal Gündoğdu 21
Ana Program Bölümü Temel işlem ve kontrollerin bulunduğu ana program kısmı C++ da main ( ) ana fonksiyonudur. Kullanım Şekilleri: Yük. Müh. Köksal Gündoğdu 22
C++ Program Yapısı Örneği Temel işlem ve kontrollerin bulunduğu ana program kısmı C++ da main ( ) ana fonksiyonudur. // test.cpp : Defines the entry point for the console application. //Bu program VisuaL C++ ile ilk programım #include "stdafx.h" #include <iostream> using namespace std; int main() { cout<<"merhaba"; system("pause"); return 0; } Yük. Müh. Köksal Gündoğdu 23
C++ Program Yapısı Örneği Programı inceleyecek olursak: C++'da açıklamalar // ile yapılır. Aşağıda açıklama satırına örnekler verilmiştir. C++ dosya uzantısı.cpp dir. include ile programımızın kullandığı kütüphaneleri ekleriz. C++ hafızanın etkin kullanılması ve çok hızlı çalışan uygulamalar için sahip olduğu tüm kütüphaneleri kullanmaz. Kullanıcı o program için hangi kütüphanelere ihtiyaç duyarsa, o kütüphaneyi include komutu ile programa dahil eder. Örneğin: #include "stdafx.h" Visual Studio nun kullandığı kütüphane. Yük. Müh. Köksal Gündoğdu 24
C++ Program Yapısı Örneği Programı inceleme (devam1): #include <iostream> iostream giriş çıkış komutlarını içeren bir kütüphanedir. ana program gövdesi int main ile başlar Ana program İki küme işareti { } arasına yazılır. Sadece açıklama olan satırlar /* */ arasına yazılır. cout<<"merhaba"<<endl; cout ekrana yazdırma komutudur.ekrana yazdırılacak sayısal olmayan bilgiler "" arasına yazılır. //endl bir sonraki satıra yazdırır. Yük. Müh. Köksal Gündoğdu 25
C++ Program Yapısı Örneği Programı inceleme (devam2): system("pause"); Ekrana yazılan ifadenin görülmesi için system komutu kullanılarak akış durduruldu. Programda ekranın durmasını istediğimiz her yerde kullanabiliriz. return 0; C++ ve C de her program en az bir main fonksiyon içerir. Fonksiyonlardan alınan değer ile geri dönüş komutu return dür. Parametre dönmediği için return0 kullanılır. Yük. Müh. Köksal Gündoğdu 26
C++ Program Yapısı Örneği Yazılım yazarken dikkat edilmeli! Komut sonu noktalı virgül ile bitmelidir. C++ deyimleri kelimeyi bölmemek koşulu ile birden fazla satıra yazılabilir. Örnek: cout<<a<<a; veya cout <<a<<a; şeklinde yazılabilir. Fakat cou t<<a<<a; şeklinde yazılamaz. Yük. Müh. Köksal Gündoğdu 27
Ön İşlemci Direktifleri Ön işlemci direktifler # işareti ile başlar. Noktalı virgül ile bitmez. Program komutları, bilgisayara birşeyler yaptırmaya yarar. Örneğin; iki sayının toplanması veya bir ifadenin yazıcıya bastırılması. Fakat, Ön işlemci direktifleri, derleyiciye verilen bir komuttur. Derleyicinin ön işlemci denilen bir parçası gerçek derleme işlemi başlamadan önce bu direktiflerle ilgilenir. Yük. Müh. Köksal Gündoğdu 28
Using Direktifi Bir C++ programı değişik isim uzaylarına (namespace) bölünebilir. İsim uzayı, programdaki belirli isimlerin derleyici tarafından tanınmasını sağlayan program parçasıdır. İsim uzayının dışında bu isimler tanınmaz. Using namespace std; direktifi, bunu takip eden tüm program ifadelerinin std isim uzayında olduğunu belirtir. Çeşitli program bileşenleri, mesela cout, bu isim uzayında tanımlıdır. Eğer using ifadesini kullanmamış olsaydık, pek çok program öğesinin başında std kelimesi eklemek zorunda kalacaktık. Örneğin; std::cout<< Merhaba Dunya ; C++ dilini nesneye yönelimli kullanımlarında daha ayrıntılı bilgi Yük. Müh. Köksal Gündoğdu 29 verilecektir.
C++ Değişkenleri Yük. Müh. Köksal Gündoğdu 30
Değişken Değişken: Program içinde değeri değişebilen ifadedir. Sabit: Program içinde değeri değişmeyen verileri saklayan, sadece tek bir değer alan ifadedir. Operatör: Mantıksal veya matematiksel işlemler için kullanılan sembollerdir. kurallara C++'de değişkenlere isim verirken aşağıdaki uyulmalıdır. 1.Değişken ismi; Alt tire( an underscore _ ) veya harf ile başlar. Doğru değişken isimleri: ad,soyad,_yas Yanlış değişken isimleri: -name, adı soyadi,1pat Yük. Müh. Köksal Gündoğdu 31
Değişken 2. Harf, alttire veya sayıları içerir. Doğru değişken isimleri: klavye, sayi1,tam_sayi,adi_soyadi Yanlış değişken ismi: 1tam, Türkçe 3. Özel karakterler içermez.(!, %, ], or $) 4. Boşluk içermez. 5. Herhangi bir rezerve kelime* içermez. 6. C++ büyük küçük harf duyarlıdır. Örneğin: ISIM, isim, ISim, ISIm dört farklı değişken ismidir. Yük. Müh. Köksal Gündoğdu 32
Değişken C++ Rezerve Kelimeleri Asm Auto bad_cast bad_typeid Bool Break Case catch Char Class Const const_cast continue default Delete Do Double dynamic_cast Else Enum Except Explicit extern False Finally Float For friend Goto İf İnline İnt long Mutable Namespace New Operator private Protected Public Register reinterpret_cast return Short Signed Sizeof Static static_cast Unsigned Struct Switch Template this Throw True Try type_info typedef Typeid Typename Union Unsigned using Virtual Void Volatile wchar_t while Yük. Müh. Köksal Gündoğdu 33
Değişken C++'da bir değişkeni kullanmadan önce o değişkene ait veri tipi tanımlanmalıdır. Örneğin yas değişkeni tanımlamak istiyorsanız, önce bu değişkende ne tür veri tipi kullanacağınızı belirtmeniz gerekir. int yas: yas değişkeni tamsayı veriler saklayacak. char cinsiyet: cinsiyet değişkeni karakter veri saklayacak. Sabit tanımı Eğer programda değişmesini istemediğiniz değerler var ise const ifadesi ile sabit tanımlayabilirsiniz. Const tipi degisken_adı=degeri Örnek: const double t=3.14; Yük. Müh. Köksal Gündoğdu 34 const double pi=22.0/7;
Değişken Lokal ve Global Değişken tanımı Her programlama dilinde olduğu gibi C++ da da lokal ve global değişkenler tanımlanabilir. Bir değişken hiçbir {} (blok) iki küme işareti içinde yer almıyorsa bu değişken global değişkendir ve tüm alt fonksiyonlar ve ana fonksiyonda tanımlıdır. Lokal değişken ise hangi blok içinde ise etki alanı bu aralık olup bu aralığın dışında tanımlı değildir. Bir değişken global ve lokal değişken olarak farklı tiplerde tanımlanabilir. Örneğin önce global değişken olarak int ve lokal değişken olarak char olarak tanımlanabilir. Eğer programın herhangi bir yerinde global olan tanıma ulaşılmak istenirse değişken ismi önüne :: işaretleri konulur. Yük. Müh. Köksal Gündoğdu 35
Değişken Lokal ve Global Değişken tanımı (Devam1) Örnek: Yük. Müh. Köksal Gündoğdu 36
Değişken Lokal ve Global Değişken tanımı (Devam2) Çözüm: Yük. Müh. Köksal Gündoğdu 37
Değişken Lokal ve Global Değişken tanımı (Devam3) Örnek: Aşağıdaki programın çalışması sonucu lokal ve global değişken içerikleri ne olur? Yük. Müh. Köksal Gündoğdu 38
Değişken Lokal ve Global Değişken tanımı (Devam4) Çözüm: Yük. Müh. Köksal Gündoğdu 39
Değişken Mutlaka değişkenlere başlangıç değeri atanmalıdır. Eğer başlangıç değeri verilmezse Önce aşağıdaki hata mesajı verilir. a ya ilk değer verilmeden kullanıldığı konusunda kullanıcıyı uyarır. Eğer devam etmek istiyor ise continue ile devam eder. Değerler ise aşağıdaki gibi atanır. Yük. Müh. Köksal Gündoğdu 40