BMT 101 Algoritma ve Programlama I 6. Hafta Yük. Müh. Köksal Gündoğdu 1
C++ Veri Tipleri Yük. Müh. Köksal Gündoğdu 2
Veri Tipleri Tam sayı ve Ondalık sayı veri tipleri Veri Tipi Alt Sınıf Üst Sınıf Duyarlı Basamak Sayısı Bellek Alanı (byte) Bool False True yok 1 Char 128 127 Yok 1 Short 32768 32767 Yok 2 İnt 2147483648 2147483647 Yok 4 Long 2147483648 2147483647 yok 8 Float 3,4x10^ 38 3,4x10^38 7 4 Double 1,7x10^ 308 1,7x10^308 15 8 Long double 3,4x10^ 4932 3,4x10^4932 19 10 Yük. Müh. Köksal Gündoğdu 3
Veri Tipleri Tablo 2 İşaretsiz Tam Sayı Veri Tipleri Veri Tipi Alt Sınıf Üst Sınır Bellek Alanı (byte) Unsigned char 0 255 1 Unsigned short 0 65535 2 Unsigned int 0 4294967295 4 Unsigned long 0 4294967295 8 Yük. Müh. Köksal Gündoğdu 4
Veri Tipleri Programlar çeşitli veri türlerini işlerler. Bu veri tipleri sayısal veya alfasayisal olabilir. Aşağida C++ için veri tipleri verilmiştir. 1. Tam Sayı Veri Tipi Tam sayı değişkenleri üç tiptir. int,short ve long veri tipi kullanılır. İşletim sistemlerine göre hafızada kapladıkları yer değişmektedir. PC'ler için hafızada kapladıkları yer ve maximum sayı değerleri tabloda verildiği gibidir. C++'da tam sayı değişkeni tanımlamak ve ilk değer atamak için aşağıdaki formatlardan biri kullanilabilir. Yük. Müh. Köksal Gündoğdu 5
Veri Tipleri 1. Tam Sayı Veri Tipi (Devam1) int a,b,c; 3 adet tamsayi degisken tanimalndi ilk deger atanmadi int a,b,c=3; 3 adet tamsayi degisken tanimalndi c=3 ilk degeri atandi int a=42,b,c=3; 3 adet tamsayi degisken tanimalndi a=42,c=3 ilk degeri atandi int a(42),b,c(3); 3 adet tamsayi degisken tanimalndi a=42,c=3 ilk degeri atandi int a(42); float b=34.45, c(3); 1 adet tamsayi degisken tanimlandi a=42, iki adet float degisken tanimlandi b=34.45 ve c=3 ilk degeri atandi Short İnt Long 2Byte 4 Byte 8 Byte Yük. Müh. Köksal Gündoğdu 6
Örnek: Veri Tipleri 1. Tam Sayı Veri Tipi (Devam2) Yük. Müh. Köksal Gündoğdu 7
Çözüm: Veri Tipleri 1. Tam Sayı Veri Tipi (Devam3) Yük. Müh. Köksal Gündoğdu 8
Veri Tipleri 2. Floating Point Veri Tipi Floating Point tip gerçek hayatta kullandığımız tam kısım ve ondalıklı kısmı olan sayıların gösteriminde kullanılır. Float, double ve long double olmak üzere üç farklı float veri tipi mevcuttur. Float değişken tanımı; float degisken_adı; float a; double b şeklindedir. Float Double Long double 4Byte 8 Byte 8 Byte veya 16 Byte Yük. Müh. Köksal Gündoğdu 9
Veri Tipleri 2. Floating Point Veri Tipi (Devam1) Örnek: Aşağıdaki programın çalışması sonucu a değeri ne olur? Yük. Müh. Köksal Gündoğdu 10
Çözüm: Veri Tipleri 2. Floating Point Veri Tipi (Devam2) Yük. Müh. Köksal Gündoğdu 11
Veri Tipleri 3. Karakter Veri Tipi Bir karakter saklayabilen veri tipidir. C++ karakter veri tipi ' ' arasına yazılır İşaretli (-128 ile 127) işaretsiz(0-255) arasında bir değere karşı düşer Karakter veri tipinde 64 @ sembolünü temsil eder. Karakter veri tipleri üzerinde aritmetik işlem yapılabilir. Örneğin 'c'+2 'e' 'yi temsil eder. Karakter Değişkenler, küçük harfler(a,b,c.z ), büyük harfler( A,B Z), sayılar( 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9 ) ve özel karakterler( :`~#$!@%^&*({[)}] \:; +-<_?>,/=.)'i içerir. C++'da karakter değişken tanımlamak için ; Yük. Müh. Köksal Gündoğdu 12 char degisken_adı ifadesi kullanılır.
Örnek: Veri Tipleri 3. Karakter Veri Tipi (Devam1) Yük. Müh. Köksal Gündoğdu 13
Çözüm: Veri Tipleri 3. Karakter Veri Tipi (Devam2) Yük. Müh. Köksal Gündoğdu 14
Veri Tipleri 4. String ve Karakterler Mühendis ifadesi string, M' ifadesi ise karakter sabittir. ASCII kodlamadan dolayı bir karakter 1 byte'lık yer kaplar.«mühendis" string sabiti ise hafızada 8 byte yer kaplar. Karakter sabitler Char cevap= e, cinsiyet= b şeklinde arasında bir karakter ile tanımlanır. Şu ana kadar char, int, long, float, double ile uğraştık. String nesneler ile uğraşmak için string kütüphanesi dahil edilir. String ifadeler ifade şeklinde tanımlanır. #include <string> String mesaj= merhaba şeklinde atama yapılabilir. mesaj=mesaj+ Arkadaşlar şeklinde ekleme yapılabilir. Yük. Müh. Köksal Gündoğdu 15 int uzunluk=mesaj.size() ile mesaj stringinin uzunluğu öğrenilebilir.
Örnek: Veri Tipleri 4. String ve Karakterler (Devam1) Yük. Müh. Köksal Gündoğdu 16
Çözüm: Veri Tipleri 4. String ve Karakterler (Devam2) Yük. Müh. Köksal Gündoğdu 17
Veri Tipleri 4. String ve Karakterler (Devam3) String ifadelerle kullanılan kaçış karakterleri Kaçış Görevi Karakteri \n Yeni Satır(Newline) \t Yatay Tab(Horizantal Tab) \b Geri al(backspace) \a Alarm(Alert bell) \\ Backslash \ Double quote \v Dikey Tab(Vertical Tab) \f Sayfa ilerletme(form feed) \r Pragraf sonu \ Single quote? Yük. Soru Müh. İşareti(Question Köksal Gündoğdu mark) 18
Örnek: Veri Tipleri 4. String ve Karakterler (Devam4) Yük. Müh. Köksal Gündoğdu 19
Veri Tipleri 4. String ve Karakterler (Devam5) Çözüm: Yük. Müh. Köksal Gündoğdu 20
Veri Tipleri 4. String ve Karakterler (Devam6) Örnek: Aşağıdaki programda sizeof komutu ile değişken uzunluklarını görüntüleyiniz. Yük. Müh. Köksal Gündoğdu 21
Veri Tipleri 4. String ve Karakterler (Devam7) Çözüm: NOT: sizeof bir değişkenin bellekte kapladığı alanı byte olarak veren operatördür. Yük. Müh. Köksal Gündoğdu 22
Formatlı Giriş ve Çıkış İşlemleri Yük. Müh. Köksal Gündoğdu 23
Veri Tipleri Yük. Müh. Köksal Gündoğdu 24
ÖRNEKLER Örnek 3: a harfini ASCII kodunu yazan C++ programını yazınız Yük. Müh. Köksal Gündoğdu 25
ÖRNEKLER Örnek 3: a harfini ASCII kodunu yazan C++ programını yazınız Yük. Müh. Köksal Gündoğdu 26
C++ Operatörler Yük. Müh. Köksal Gündoğdu 27
Operatörler 1. Matematiksel İşlem Operatörleri İşlem Operatör Örnek Sonuç Toplama + Top=3+3; Top=6 Çıkarma cik=3 2; Cik=1 Çarpma * Carp=2*12; Carp=24 Bölme / D=14/7; D=2 Mod alma % S=13%4; S=1 Negatif alma a=3; b= a; b= 3 Son artım ++ T=2; A=T++; Ön artım ++ T=2; A=2; T=3; T=3; A=++T A=3; Son azaltım T=3; B=T ; T=2; B=3; Yük. Müh. Köksal Gündoğdu 28 Ön azaltım T=3; B= T; B=2; T=2;
2. Atama Operatörleri Operatörler İşlem Operatör Örnek Sonuç Değer atama a=3; b=a b=3 = Toplama Ataması += a=a+3 a+=3 a=3+3=6 Çıkarma Ataması = a=a 4 a =4 a=6 4=2 Çarpma Ataması *= a=a*5 a*=5 a=2*5=10 Bölme Ataması /= a=a/3 a/=3 a=10/3=3 Mod Ataması %= a=a%2 a%=2 a=3%2=1 Yük. Müh. Köksal Gündoğdu 29
Operatörler 3. Karşılaştırma Operatörleri İşlem Operatör Örnek Sonuc Eşit mi? == A=5, B=3 0 A==B Eşit değil mi?!= A!=B 1 Küçük mü? < A<B 0 Büyük mü? > A>B 1 Büyük eşit mi? >= A>=B 1 Küçük eşit mi? <= A<=B 0 Yük. Müh. Köksal Gündoğdu 30
Operatörler 4. Mantıksal Operatörleri İşlem Operatör Örnek Sonuç And(Ve) && A=26 A>20 && A<30 Or(Veya) A=34 A>=45 A<50 Not! A=30 1 1 C=0 C=!(A>20 && A<40) NOT: MANTIKSAL OPERATÖRLER İle BİT DÜZEYİNDE OPERATÖRLERİ KARIŞTIRMAYINIZ Yük. Müh. Köksal Gündoğdu 31
Operatörler 5. Bit Düzeyinde Operatörleri İşlem Operatör Örnek Sonuç Sola Öteleme (Shift left) << 32<<4(32 yi 4 kez sola ötele) 32=(0000100000) 2 64=(0001000000) 2 128=(0010000000) 2 512 Bu işlem 32*2 4 işlemine denktir. Sağa Öteleme (Shift right) 256=(0100000000) 2 512=(10000000000) >> 32>>4 2 Bu işlemde 32/2 4 işlemine denktir. Bit Düzeyinde AND & 4 & 8 0 Bit düzeyinde OR 4 8 12 Bit Düzeyinde XOR ^ 4^8 12 Yük. Müh. Köksal Gündoğdu 32
6. Diğer Operatörleri Operatörler İşlem Operatör fonksiyon çağırma ( ) Dizi oluşturma [ ] 7. Koşul Operatörleri Operatör Sembulü Örnek Sonuç Koşul operatörü? a?b:c Örneğin: 2. Dereceden denklem köklerini bulurken; delta>=0? kok=-b+sqrt(delta) : Kök yok 8. Alfasayısal Operatörleri İşlem Operatör Yük. Müh. Köksal Gündoğdu 33 Birleştirme +
9. Cast Operatörü Operatörler Tip bilgisi değişiminde kullanılır. (Tip bilgisi) X şeklindedir. Örneğin: 32/15 in sonucunu ekrana direk yazdırırsak ; 2 olur. Fakat tip dönüşümünden (Float) 32/15 yazdırırsak sonuç= 2,13333 eder. Yük. Müh. Köksal Gündoğdu 34
Operatörler Operatörlerde Öncelik Sırası Yük. Müh. Köksal Gündoğdu 35
C++ Temel Giriş/Çıkış İşlemleri Yük. Müh. Köksal Gündoğdu 36
Temel Giriş/Çıkış Fonksiyonları C++ 'da verilerin girişi yada çıkışı gibi işlemler stream adı verilen nesneler yardımıyla yerine getirilir. Stream, bir sınıfın bir nesnesi olarak değerlendirilir. Akım, C++ 'ın bilgisayarın fiziksel aygıtlarını kullanabilmesini sağlayan olanaktır. Araç ne olursa olsun C++ bu aygıtlarla akım nesneleri yoluyla iletişim kurar. C++'da akım nesnelerine veri yönlendirmek için "<<" veya ">>" işleçlerini kullanılır. Yük. Müh. Köksal Gündoğdu 37
Temel Giriş/Çıkış Fonksiyonları Bir C++ programı çalışmaya başladığında, cout, cin, cerr ve clog akım nesneleri kendiliğinden açılır. Bu akımların varsayılan nesneleri aşağıdaki gibidir. cerr ve clog ekrana mesaj yazdırmak için kullanılır. Biz cin ve cout deyimlerini örneklendireceğiz. STREAM VARSAYILAN AYGIT ANLAMI cout Ekran Standart Çıkış cin Klavye Standart Giriş cerr Ekran Standart Hata clog Ekran Ön Bellekli Standart Hata Yük. Müh. Köksal Gündoğdu 38
cin Fonksiyonu Yük. Müh. Köksal Gündoğdu 39
cout Fonksiyonu Yük. Müh. Köksal Gündoğdu 40
Formatlı Giriş ve Çıkış İşlemleri Biçim Tanımlayıcıları Biçim Tanımlayıcı Anlamı %d Onlu (decimal) tam sayı %c Tek karakter %s Karakter katarı %f Ondalıklı sayı %e Ondalıklı sayı (üslü gösterimi ile) %g %e veya %f hangisi kısa ise %u İşaretsiz onlu tamsayı %o İşaretsiz sekizli tamsayı %x İşaretsiz on altılı tamsayı Yük. Müh. Köksal Gündoğdu 41
C++ Örnekler Yük. Müh. Köksal Gündoğdu 42
Örnek Uygulamalar Örnek 1: Klavyeden bir kenar uzunluğu ve o kenara ait yüksekliği girilen üçgenin alanını hesaplayan programın akış diyagramını hazırlayarak ve C++ kodlarını yazınız. Yük. Müh. Köksal Gündoğdu 43
Örnek Uygulamalar Çözüm 1: Akış Şeması Alan. Başla a,h ha Alan=a*h/2 a Alan Dur Yük. Müh. Köksal Gündoğdu 44
Örnekler Çözüm 1: Yük. Müh. Köksal Gündoğdu 45
Örnek Uygulamalar Örnek 2: Klavyeden iki kenarı ve bu iki kenar arasındaki açısı girilen üçgenin alanını hesaplayan programın akış diyagramını hazırlayıp C++ program kodlarını yazınız. Yük. Müh. Köksal Gündoğdu 46
Çözüm 2: Örnek Uygulamalar Akış Şeması Başla Alan sin a,b,aci b Alan=a*b*sin(aci)/2 α a Alan Dur Yük. Müh. Köksal Gündoğdu 47
Örnekler Çözüm 2: Yük. Müh. Köksal Gündoğdu 48
Örnekler Örnek 3: İki kenarı ve açısı verilen üçgenin üçüncü kenarını bulan algoritma ve C++ programı..? Yük. Müh. Köksal Gündoğdu 49
Örnekler Çözüm 3: 2 cos b α c Algoritma: 1. Basla 2. 1.kenar 2. Kenar ve açıyı gir. 3. 3.kenar^2=(1.kenar)^2+(2.kenar)^2-2*(1.kenar)*(2.kenar)*Cos(acı) 4. Yaz 3.kenar 5. Dur a Yük. Müh. Köksal Gündoğdu 50
Örnekler Çözüm 3: (Devam1) Yük. Müh. Köksal Gündoğdu 51
Ödev Soruları İki kenar uzunluğu verilen bir dik üçgenin hipotenüsünü hesaplayan programın akış şemasını çizerek C++ kodlarını yazınız? Yük. Müh. Köksal Gündoğdu 52