Copyright @ Tm Esercan oyun 2015

C++

Önsöz:


"Bir düşünceyi anlatmak için neden sayfalarca roman yazayım ?"(L.Borges)


Araçlar:
* MS Visual C++ v.6 (MFC kullanılmayacaktır)
Programlamaya Giriş:
"Program yazamak" için öncelikle "Program"'ı anlamak gerekir. Hepinizin programın ne olduğunu bildiğinizi biliyorum. Ancak "bilmek" ve "kavramak" farklı şeylerdir.
Sorulması gereken soru şu:"Bir program nasıl çalışır ?". Bunun cevabını vermek için önce ünlü "çift tıklama" olayını açıklayalım.
Bir program çalıştırılmak istendiğinde ms win. Çok Kabaca şu olayları gerçekleştirir.
1. Hedef dosyayı oku , dosyada belirtilen miktar kadar bir bellek bölümü ayır ve içine programın kodlarını (dosyanın tamamını değil!) kopyala.
2. Programın ihtiyaç duyduğu ek dosyları(ör: win. Kitaplıkları(kernel32.dll,user32dll vb...)) yine aynı bölgeye kopyala
3. Yine dosyada belirlen program başlama noktasından itibaren programı başlat.
Burdan çıkartacağınız ders şu: siz bir *.exe dosyasını herhangi bir editör ile açtığınızda karşınıza çıkan şey program kodları değil, program bilgileri+program kodları
Artık çalışan bir programımız var....
Fakat prog."Bir Mesaj kutusu göstermek yada dosya işlemi yapmak isterse ne yapar ?"


Kritik Nokta:
Prog. Windows'un konu ile ilgili fonksiyonunu(ki genel adı WinAPI'dir.) çağırır.(Yani siz ister VisualBasic kullanın, ister Delphi kullanın en son derlediğiniz program mutkla windows'un fonksiyonlarını kullanacaktır.)
Not: WinAPI'lerle ilgili detaylı bilgi ve kullanımlarının örneklerini http://msdn.microsoft.com/library/ adresinde bulabilirsiniz.


C Ailesine Giriş:
C soyunun amacı program yazarken sık sık kullanılan rutinlerden kurtulmaktır. Peki onu diğer rakiplerinden ayıran özellik nedir. C++ komut bazı değil hafıza yönetimini bazlı bir dildir.(Ör: VisualBasic komut bazılıdır.) C++'da dosya açma komutu yoktur.(Özellikle bunu bazı tutorial'lerin de dosya işlemi komutları veren kişilere söylüyorum!)


Örnek:
Bir kağıda "Ali Veli Deli" yazdınız ve birine sadece "Veli" kısmını okutmak istiyorsunuz ne yaparsınız ? "5.harften itibaren kelime sonuna kadar(veya 4 harf) oku". İşte C++'ın yaptığı şey bu, sizin yüzlerce defa "5.harften itibaren kelime sonuna kadar(veya 4 harf) oku" komutu tekrarlama zorunluluğunuzu kaldırıyor. Sizin yerinize bu yönetimi o yapıyor.

 


Değişkenler:
C++ her ne kadar gelişmiş bir dil de olsa da daha telepatik değil. Bu yüzden sizin "Ali Veli Deli" ile ne anlatmak istediğinizi ona söylemelisiniz. Belki "Ali" gerçekten bir yazı, belki de ascii kodları bir sayının basamaklarını temsil ediyor. C++ aradaki ayrımı yapabilmek için bu referansı sizden istiyor.
Temel Değişkenler
"char"(8-bit)
bir byte(karakter=max 0-255 aralığını alabilen) büyüklüğündeki sayıyı temsil eder.
-127 ile 127 aralığını alabilir.(işaretlidir !)
"unsigned char"(8-bit)
char'ın işaretsiz(pozitif tam sayı) olanıdır(0-255 aralığını alabilir.)
"int"(veya long)(32-bit)
bir DoubleWord(dword=4 karater=0-4294967295) uzunluğundadır,işaretlidir.
-2,147,483,648 to 2,147,483,647 aralığını alabilir.
"unsigned int"(32-bit)
"unsigned char"'a bakıp tahmin edin... "unsigned" parametresi bir değişkenin önüne gelirse onu pozitif tam sayı halinde tanımlanmasına neden olur. Böyle bir değişkenin pozitif tavanı yükselir.
Ör: unsigned int'in pozitif tabanın hesaplamak isterseniz. win. hesap makinesibi açın. Bilimsel moda getirin, Bin tabanına alıp 32 tane 1 yazın ve Dec'e tabana alıp ondalık değeri görün...
"float"(!)
3.4*10^-38 ile 3.4*10^+38 arasında değer alır.
"dobule"(!)
1.7*10^-308 ile 1.7*10^+308 arasında değer alır.
"long double"(!)
3.4*10^-4932 to 1.1*10^+4932 arasında değer alır. 
  

C++ Degişkenler

 

DEGISKENLER

Simdi bize yine çok lazim olacak bir özellik de degisken tanimlamak ve atama yapmaktir. Bunu bir örnek üzerinde anlatmak istiyorum. Örnegimiz;

// degisken.cpp
// Burda degisken tanimlamayi görecegiz.
// Ayni zamanda verilen bir sayiyi kendisi ile carpma 2.2=4 gibi

#include <iostream.h>
#include <stdio.h> // kütüphane dosyamiz
main()
{
int i; // Degisken tanimlama
cout << "Bir sayi giriniz: ";
cin >> i;
i=i*i;
cout << "sonuc: " << i ;
return 0;
}

Burada bundan önce yaptigimiz programlardan farkli olarak int i kullandik, yani degisken tanimladik.

Degisken Nasil Tanimlanir?

Degiskenleri tanimlamak için asagidaki sema kullanilir.

[Veri Tipi] [Degisken Adi];

Örnegin
int sayi;

Simdi degisken.cpp örnegindeki int i; kismini anlamissinizdir. Burada degiskenlere deginmek istiyorum. Biz yukarda Içinde sayi tutan bir degiskeni tanimladik. Benzer olarak asagidaki tanimlamalar da vardir.

char c;
int i;
float f;
double d;
unsigned int ui;


Burada [Veri Tipi] [Degisken Adi]; bu kaliba göre tanimlama yaptigimiz için önce Veri Tiplerini inceleyelim.


OPERATÖR ve OPERANT NEDIR?

Bunu bir örnek üzerinde anlatmak istiyorum. Örnegin; x + y ''de x ve y operand + ise operatördür. Bu bir aritmetiksel operatördür. Matematikte islemler operatörler ve operandlar ile anlatilir.

Operatörleri öncelikle türlerine göre ayiralim:

1) Aritmetiksel operatörler + , - , * , / , % , ++ , --

2) Karsilastirma operatörleri < , > , <=, >= , ==, !=

3) Esitleme operatörleri = , += , -=, *= , /= , %= , <=, >>=, &=, != , ^=

4) Mantiksal Operatörler ! , || , &&

5) Bit bazinda islem yapan operatörler & , ! , ^ , ~ ,

Aritmetiksel (Matematiksel) Operatörler:

Matematiksel ifadeleri günlük hayattaki biçimde bilgisayarda yazamadigimiz için belli kurallara uymamiz gerekir. Bu kisim önemli oldugu için biraz genis yer verecegim. Kullandigimiz matematiksel islemler ve anlamlari söyledir:

 

C++ islemi:

Aritmetik operatör:

Toplama

+

Çikarma

-

Çarpma

*

Bölme

/

Modulus(mod)

%

Bir arttirma

++

Bir azaltma

--

 

 

Bu operatörle verilen iki veya daha fazla operand toplanabilir. Yazilis sekli Asagidaki gibidir.

degisken1 + degisken2

Eger bu iki degiskeni Sonuç gibi baska bir degiskene atarsak esitleme operatörüyle asagidaki gibi yapariz.

Sonuç = degisken1 + degisken2

Buna bir örnek verelim.

// toplama.cpp //Vize ve final notlarinindan geçme notunu hesaplama  #include <iostream.h> #include <math.h>  main()  {   int vize, final, ort;    vize = 10;    final = 80;    ort = vize * 0.4 + final * 0.6;   cout<< "Geçme notunuz: " << ort; }

Burada çarpma operatörünü de kullandik sanirim, artik digerlerinin de ne oldugunu kavramis oldunuz. Bir örnekte isi ucuza getirdim . Fakat bir artma ve bir azalmaya örnek verelim. Bu bana çok lazim olmustu.

Burada dikkat etmemiz gereken olay " ++ " operatörünü degiskenin önüne yazmaniz gerektigidir. Bu sayede degisken bir arttirilarak isleme konur. Arkasina konursa degisken islenir, sonra bir arttirilir. " -- " operatöründe ise ayni sekilde de bir azaltma yapilir.

// carpim.cpp // x i bir arttirip y yi bir azaltip çarptik.  #include <iostream.h>    main()  {     int x = 5;     int y = 10;     cout << "x = " <<x << endl;      cout << "y = " << y << endl;      cout <<"++x * --y = " << ++x * --y ;      }

Iste bir fark daha yakaladik bunu da hemen örnek üzerinde anlatalim. Sanirim buraya kadar geldigimiz yerlerde int i , çarpma islemini, bir arttirip azaltmayi gördük, ama diyeceksiniz ki " endl " ne oluyor? Hemen açiklayayim; Satir sonunu belirterek yeni satira geçmemizi saglar, bir nevi " \n " Escape operatörü gibi bir isleve sahiptir.

Karsilastirma Operatörleri:

Operatör

C++ örnegi

Anlami

>

x > y

x, y'den büyüktür

<

x < y

x, y'den küçüktür

>=

x >= y

x, y'den büyüktür veya y'ye esittir

<=

x <= y

x, y'den küçüktür veya y`ye esittir

==

x ==y

x, y'ye esittir

!=

x != y

x, y'ye esit degildir

Bunlarin teker teker ne oldugunu söylemeye gerek yok. Ifadeler gayet basittir. Burada dikkat etmemiz gereken önemli bir sey var: " >=, <=, ==, !=" notasyonlarini kullanirken iki notasyon arasinda bosluk birakmamaliyiz. Buna dikkat edelim!

Esitleme ( Atama) Operatörleri:

Bunlarida liste halinda verelim.

Operatör

C++ örnegi

Anlami

=

x = y

x`in degeri y'ninkine atanir

+=

x += y

x`e x+y'nin degeri atanir.

-=

x -= y

x`e x-y`nin degeri atanir.

*=

x *= y

x`e x*y'nin degeri atanir.

/=

x /= y

x`e x/y`nin degeri atanir

%=

x %= y

x`e x%y'nin degeri atanir.

<<=

x <<= y

x`e x<<y'nin degeri atanir.

>>=

x >>= y

x`e x>>y'nin degeri atanir.

&=

x &= y

x`e x&y'nin degeri atanir.

!=

x != y

x`e x!y'nin degeri atanir.

^=

x ^= y

x`e x^y'nin degeri atanir.

 

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol