Bvural41 1
Bvural41
Mt2Hizmet 1
Mt2Hizmet
xranzei 1
xranzei
Hikaye Ekle

Öğrenilmesi Gereken Temel Konular (C++)

  • Konuyu başlatan Konuyu başlatan Shiver
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 10
  • Görüntüleme Görüntüleme 2K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Değişkenler ve Değişken Tipleri



Programlarımızda işlemlerimizi yaparken verileri kullanırız. Mesela herhangi iki sayıyı toplarız veya iki tane karakter dizisini (string) karşılaştırırız. Bu işlemler için kullandığımız verilerimizi değişkenler içinde tutarız. Değişkenler bilgisayar hafızasında verileri depolayan ve isimleri olan programlamının en temel elementleridir.
Değişkenlerin isimlerinin olmasını gerektiğini söyledik. Bir değişkeni kullanmadan önce onu tanımlamalıyız. Tanımlamayı değişkene uygun bir isim verme ve değişkenin hangi tipten olduğunu bildirmeyle yaparız.
Önce isterseniz değişleri C++ dili kuralların uygun bir biçimde nasıl isimlendireceğimizi görelim. Değişken isimlerini verirken C++'ın bir takım sıkı kurallarına uymamız gerekir. Bu kurallar:
Değişkenlerin isimleri alfabede bulunan karakterlerle başlamalı. Ama ilk harf hariç diğer karakterler sayı olabilir.







  • [*=left]C++ büyük ve küçük harf duyarlıdır. Yani Sayi, sayi ve SAYI hepsi ayrı değişken olarak algınalırlar.


  • [*=left]
    [*=left]Değişken isimleri birden fazla kelime olduğu zaman; kelimelerin arasına boşluk konmaz. Bu tür değişkenleri ya kelimeleri birleştirerek veya kelimeler arasına _ (alt çizgi) karakteri koyararak isimlendiririz.
    [*=left]Değişkenlerin isimleri !, ?, {, ] gibi karakterler içeremezler.
    [*=left]C++'ın anahtar kelimelerini de değişken isimleri olarak kullanamayız.

sayi, tamsayi1, toplam, Fark, KullaniciAdi, isim, _Adres, sinif_ortalaması, kurallar göre adlandırılmış değişkenlerdir. Diğer taraftan 1.sayi, tamsayi 1, fark!, 3.sinif_ortalamasi geçersiz değişken isimleridir. Böyle yanlış adlandırılmış değişkenleri içeren programlar derlenmez!
Anahtar kelimeler C++ dilinde bulunan komutların isimleridir. Bunları direk olarak değişken ismi olarak kullanamayız. Ayrıca alt çizgi ile başlayan değişken tanımlamadan kaçınmalıyız. Çünkü genelde C++ kütüphanelerini yazan programcılar değişkenlerini alt çizgi ile başlayan isimler verirler. Bu da isimler arasında çakışma yaratabilir. Değişkenleri isimlendirmeyi öğrendikten sonra sonra sıra C++ dilindeki temel veri türlerini öğrenmeye geldi.
Verileri bilgisayarda program çalışırken bellekte(RAM) depolanır. Bilgisayar belleği bitlerden oluşmuştur. Bir bit temel olarak 1 veya 0 değerini alır. Sekiz tane bit bir byte eder. Bilgisayarın hafızasında verilerin kapladıkları alanlar byte türünden ifade ederiz (bir çok sistemde bu böyledir). C++ verileri ihtiyacımıza göre değişik tiplerde tanımlarız kullanırız.
C++ dilinde hazır bulunan temel veri tipleri şunlardır:



*Yalnız platform ve işletim sistemine göre değişkenlerin boyutları yukarıdakilerden farklı olabilir. Ama ANSI C++ standart derleyicilerinin hepsi yukarıdaki veri tiplerini desteklerler. Yukarıda dikkate ederseniz değişkenlerin çoğunun unsgined ve signed versiyonları var. Bunlardan signed olanları hem pozitif hem de negatif değerler alırken; unsigned versiyonlar ise sadece pozitif değerler alırlar.
Değişkenleri isimlendirdik ve onların tiplerini öğrendik. Şimdi değişkenleri bildirmeyi ve onları kullanmayı öğrenelim. Genel olarak temel veri tiplerinden olan değişkenleri şu şekilde tanımlarız:
;
Yukarıdaki kurala uygun olarak aşağıda bununla ilgili örnekler vardır:

Kod:
int sayi;
       unsgined int a;
       char karakter;
       float sayi_2;
       bool dogru_yanlis;
       unsigned long uzunTamsayi;
Yukarıdaki değişken tanımlamalarının hepsi kurallara uygundur. İstersek birden fazla değişkeni bir satırda tanımlama olanağımız vardır:

Kod:
int sayi1, sayi2, sayi 3;
       char karakter, baskabir_karakter;
Örnekte int tipinden üç değişkeni tek bir satırda tanımlamayı ve aynı şekilde char tipinden iki değişkeni tek bir satırda tanımlıyoruz. Burda dikkat edilmesi gereken nokta değişkenlerin arasına virgül koymamız gerektiğidir.
Değişkenlere değer atama işlemi için eşittir (=) operatörünü kullanırız. Mesela aşağıdaki kod parçasında önce x değişkenini sonra da y değişkenini tamsayı (int) tipinde bildirdik. Sonra programın herhangi bir yerinde x'in içeriğini 25 yaptık. Bunun hemen ardından y'nin değerini 14 yaptık. En son kısımda x'in değerini y'de depoladık.

Kod:
int x;
       int y;
       ......
       x=25;
       y=14;
       ....
       y=x;
Değişkenlerin değerlerini ilk tanımladığımız anda da atayabiliriz. Aşağıda bununla ilgili örnekler verelim:

Kod:
double t=3.25;
      bool dogru_mu=false;
      long int s1=12345, s2=-694312978425;
     double t=3.25;

Kod:
// İki tamsayı alan ve toplamını bulan program
#include 

int main()
{
    int sayi1;
    int sayi2;

    int toplam;

    cout << "\n Lütfen birinci tamsayıyı girniz: ";
    cin   >> sayi1;

    cout <<"\n Lütfen ikinci tamsayıyı girniz: ";
    cin   >> sayi2;

    toplam = sayi1 + sayi2;

    cout << "\n " << sayi1 << " + " << sayi2 << " = " << toplam << endl;

   return 0;

}

Son olarak yukarıdaki programı yazalım. Programda int tipinden sayi1, sayi2 ve toplam değişkenlerimizi tanımladık. Sırası ile kullanıcıdan bu değişkenlerin değerlerini aldık ve sonucu ekrana yazdırdık. Program basit gibi görünebilir ama mutlaka yazın, derleyin ve çalıştırın.

Devamı gelecek...

 
Son düzenleme:
IF ELSE



if-else komutu iki işlemden hangisinin uygulanacağına karar verir. Else kısmı seçimlidir, gerekmiyorsa kullanılmayabilir.

Yazılım kuralı ile şöyledir;

Kod:
if ( ifade )
komut1;
else
komut2;
Daha genel şekliyle;

Kod:
if ( ifade )
{
komut1;
komut2;
...
}
else
{
komut1;
komut2;
...
}

Veya lojik olarak baktığımızda sanırım daha iyi anlayacaksınız;


Kod:
if (ifade)
blok_dogru (1);
else
blok_yanlis (0);

Sanırım artık açıklama yapmaya gerek kalmayacak. Şimdi örneklerle bunu pekiştirmeye çalışalım:


Kod:
//tekcift.cpp
//sayı tekmi çiftmi onu görüceğiz
#include
main()
{
int sayi;
cout<< "Bir sayı giriniz:";
cin >> sayi;
if (sayi %2==1 )
cout <<"tek";
else
cout << "çift" ;
}

Bir örnek daha verelim:


Kod:
//ifelse.cpp
#include
main()
{
int not;
cout<< "Notu giriniz:";
cin >> not;
if (not >= 50)
cout << "Geçti!";
else
cout << "Kaldı!";
}

if kısmından anlatalım. Eğer notumuz 50 ye eşit veya 50 den büyük ise geçiyoruz aksi halde kalıyoruz.

Bir de bir if-else in altında bir tane daha if-else kullanalım.

Kod:
//sinav.cpp
// alt alta if-else
#include
main()
{
int not;
cout<< "Not`u giriniz:";
cin >> not;
if (not >= 50)
cout << "Geçtiniz!";
else
{
cout <<"Bütten alınan not:";
cin >>not;
if( not>=60 )
cout << "Geçtiniz!";
else
cout <<"Kaldınız!";
}
}
Burada da şunu inceledik: Diyelim ki sınava girdik ve notumuzu öğrendik, notu giriyoruz 50 nin altındaysa kalıyoruz ve bütünleme sınavına giriyoruz. Bütünlemede de geçer not en az 60. Sanırım bu basit örneklerle olayı iyice kavramışızdır. if-else i de burada bitiriyoruz.

?: Komutu
Bu komut, yalnızca C++ a özgüdür. Kendine özgü bir yazılımı ve mantıksal kullanımı vardır ve if-else komutunun kısaltılmışıdır. Fakat, tüm if-else komutları yerine kullanılmaz. Yalnızca karşılaştırma sonrası, tek komut kullanılan uygulamalar için geçerlidir. Bu söylediklerimizi örnek üstünde gösterelim:

Kod:
//tekcift.cpp
//tekcift.cpp yi bu sefer ?: ile yapıyoruz
#include
main()
{
int sayi;
cout<< "Bir sayı giriniz:";
cin >> sayi;
cout << (sayi %2==1 ? "tek" : "çift") ;
}
Kullanış biçimi: cout << (sayi %2==1 ? "tek" : "çift") ; çok basit ama dikkat edelim. Her zaman kullanmıyoruz.

 
Switch-case Komutları

Switch Case deyimi işlev bakımından if deyimine çok benzemektedir. Çok sayıda if işlem blokları kullandığımızda programın okunurluğu azalacak ve programı izlemek zorlaşacaktır. Programımızın bir değerini bir çok değerle karşılaştırmak gerektiğinde switch komutunu kullanacağız. Switch seçeneği ile değişkenin durumuna göre bir çok durum içersinden bir tanesi gerçekleştirilir. İstersek de if deyimi ile switch case' yi birlikte kullanabiliriz. Switch in yaptığı iş kısaca, ifadenin değerini sırayla sabitlerle karşılaştırarak ve her satırı işlemektir.

Kod:
switch( Kontrol Değişkeni )
{
case Sabit1 : komut1;
case Sabit2 : komut2;
.
.
.
default : Komutson;
}

Buna en basit örneğimizi verelim:


Kod:
//switch.cpp
// switch-case yi öğreniyoruz.
#include
main()
{
int i;
cout<< " 1 ile 4 arası bir sayı giriniz:";
cin>>i;
switch(i)
{
case 1 :cout<<"1 Girdiniz"; break;
case 2 :cout<<"2 Girdiniz"; break;
case 3 :cout<<"3 Girdiniz"; break;
case 4 :cout<<"4 Girdiniz"; break;
default:cout<<"1 ile 4 ten farklı";
}

Burada gördüğümüz gibi i değişkenine bağlı olarak Program işliyor. Case'lerinin aldığı değere göre kendinden sonra gelen komutları işliyorlar.

Burada daha önce görmediğimiz break komutunu gördük. Buna ilerde daha detaylı olarak değineceğim. Fakat biraz bahsetmek istiyorum.

Programımızda değişkene 1 değerini verdiğimizi farz edelim. Case 1 adlı satırı geçip ondan sonraki komut dizisini işleme soktuk. Bu işlemin tamamlanması için break komutu kullanılıyor. Yazılımda break komutu goto gibi işlev görür ve derleyiciye switch komutundan çıkması için talimat verir. Sorunu ortadan kaldırmak için her durum için break deyimi eklemeliyiz (tavsiye). Ne demiştik; bir çok karşılaştırma olduğunda switch'e ihtiyaç duyuyoruz. Karşılaştırmaların hiç biri olmadığı anda da ortaya default tan sonraki satırın işlenmesi kalıyor. Sanırım bu örnekte basit olarak anlamış olacağız.

Daha karmaşık bir örnek verecek olursak:

Kod:
//ucgen.cpp
// Program gireceğimiz ölçülere göre üçgenin Alan, Yükseklik ve Tabanını bulur
// switch-case örneğimiz.
#include
int main()
{
char secenek;
float alan, yukseklik, taban;
cout << "Program gireceğimiz ölçülere göre üçgen'in Alan,
Yükseklik ve Tabanını bulur!\n" << endl
<< " A ---> Alan : Bulmak için yükseklik ve tabanı gireceğiz:" << endl
<< " h ---> Yükseklik : Bulmak için alan ve tabanı gireceğiz:" << endl
<< " t ---> Taban : Bulmak için alan ve yüksekliği gireceğiz:" << endl
<< endl << endl;
cout<< "Seçeneğiniz? ---> A, h, t :";
cin>> secenek;
switch(secenek)
{
case 'a':
case 'A':
{
cout<< endl <<<"Yükseklik: ";
cin>> yukseklik;
cout<<< "Taban: ";
cin >> taban;
alan = 0.5 * taban * yukseklik;
cout<<< endl << "Alanı: " << alan << endl;
break;
}
case 'h':
case 'H':
{
cout<< endl << endl <<"Alanı: ";
cin>> alan;
cout<<< "Tanabı: ";
cin >> taban;
yukseklik = 2.0 * alan / taban;
cout << endl << endl << "Yükselik: " << yukseklik << endl;
break;
}
case 't':
case 'T':
{
cout << endl <<<"Alanı: ";
cin >> alan;
cout << endl << "Yüksekliği: ";
cin >> yukseklik;
taban = 2.0 * yukseklik / alan;
cout << endl << endl <<"Tabanı: " << taban << endl;
break;
}
}
return 0;
}
Gayet basit bir örnek değişkenleri tanımladık. Caseleri koyduk ve caselerden sonra gelecek komut satırlarını yerleştirdik. Bu program göründüğü gibi zor değildir.

Döngü Komutları:
Bir ya da birden fazla deyimin tekrar edilmesini sağlarlar. Döngüler, " belli bir koşul sağlandığı sürece sürekli çalıştırılacak kod parçası " olarak nitelendirilebilir. For döngüsü, while döngüsü, do-while döngüleri, diğer yüksek seviyeli dillerdeki gibidir. Ancak en büyük fark, programın bu tekrar döngüleri istediğinde terk edebilmesidir. C/C++, döngüden çıkmak için beş ayrı yöntem vardır.


normal=Tüm tekrarlar yapılır ve test ifadesi işartı sağlanırsa döngüden çıkar.

break=Beklenen hatayla karşılaştığında kullanılır

continue=Döngü içinde mantıksal akışa göre kullanılır

break ve continue=Yukarıdakilerin karmaşık bileşimi.

exit=Ciddi ve geri alınamaz hata oluştuğunda.


C/C++ da ki döngülerin arasındaki fark, beklenen döngü sayıları arasındaki farktan kaynaklanır. Eğer önceden belirli bir döngü sayımız mevcut ise For döngüsü kullanılır. while ve do-while döngülerinde döngü sayısı belli değildir. C++ nın bize vermiş olduğu esneklik sayesinde, döngüleri son derece esnek bir biçimde kullanma şansımız vardır.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst