Monday, May 21, 2012

Fonksiyonlar;


Fonksiyonlar tekrar tekrar aynı kodların yazılmasını önlemek için kullanılır.Bir fonsiyonun çalışması için başka bir fonksiyon tarafından çağrılması gerekir.
Fonksiyon içinde tanımladığımız kod parçacığını ana fonksiyon içinde çağırdığımız takdirde o fonksiyonun sahip olduğu deyimleride çalıştırmış oluruz. böylece
sürekli aynı kod parçacıklarını kullanmamız gereken durumlarda bize kolaylık sağlar.
fonksiyonlar ;  tür fonksiyon_adı (parametreler) { deyimler.. } şeklinde tanımlanır.
kullandığımız main fonksiyonuda buna örnektir.

deneme adlı fonksiyon  int deneme(int x, int y) {}  şeklinde tanımlanır.

1.Örnek; merhaba yazdıran fonksiyon.

#include <iostream>
#include <conio.h>
using namespace std;

int deneme(){
    cout<<"merhaba";  // deneme adındaki fonksiyonda ekrana merhaba yazdırmasını söyledik.
      }
     
int main(){
   
    deneme();   // deneme fonksiyonunu deneme() ile çağırdık. burada deneme adlı fonksiyondaki deyimler
                         çalıştırılacak.
   
getch();
return 0;
     }


2.örnek; tanımlanan fonksiyonda klavyeden girilen 2sayının toplamını ve çarpımını tutan ve bunu main fonksiyonunda çağıran program.

#include <iostream>
#include <conio.h>
using namespace std;

int islemler(){
    int a,b;
    cout<<" ilk sayiyi giriniz: ";
    cin>>a;
    cout<<"ikinci sayiyi giriniz: ";
    cin>>b;
   
    cout<<"toplamlari" << a+b <<endl;
    cout<<"carpimi" <<  a*b;
      }
     
int main(){
   
    islemler();
   
getch();
return 0;
     }

3.Örnek; topla ve çarpım adında 2 fonskiyonu olan bu fonksiyonlarda  main fonksiyonundan alınan değerleri işletip sonucu geri gönderen program;

#include <iostream>
#include <conio.h>
using namespace std;

int topla(int ilk, int son) {
   
    return  ilk+son;
}
int carpim(int ilk, int son) {
   
    return  ilk*son;
}
int main(){
    int a,b;
    cout<< "birinci sayiyi giriniz: ";
    cin>>a;
    cout<< "ikinci sayiyi giriniz: ";
    cin>>b;
    cout<< "toplamlari: " << topla(a,b) << endl;
    cout<< "carpimlari: " << carpim(a,b);
    cin>>a;
}


4.Örnek; main fonksiyonundan alınan değerler ile fonksiyonda üssünü alan program;

#include <iostream>
#include <conio.h>
using namespace std;


int usalma(int taban, int us){
       int sonuc=1, i;  
       for(i=1; i<=us; i++){
          sonuc= sonuc *  taban;
          }
          return sonuc;
        }
         
int main(){
    int a,b;
    cout<< " tabani giriniz: ";
    cin>>a;
    cout<< " ussu giriniz:  ";
    cin>>b;
    cout<< "sonuc: " << usalma(a,b);
    getch();
    return 0;
}
 
5.örnek; fonksiyona dizi yi parametre olarak gönderen program.

#include <iostream>
#include <conio.h>

using namespace std;

int deneme(int sayi[]) {
    int i;
   
    for(i=0; i<5; i++){
    cout<< sayi[i];
         }
}
int main(){
   
    int sayilar[5]={2,3,5,4,2};
    deneme(sayilar);
   
getch();
    }
 

Random sayı üretme


random  kodu ile program kendiliğinden rasgele bir sayi üretir.

random kodu;  baslangıç değeri + rand()%100 seklinde kullanılır.

1 ile 100 arasında sayı üretmek için 1+ rand()%100  (1+ 100= 101  1-100 dahil arası sayı üretir.
100 ile 200 arasında sayi üretmek için 100 + rand()%101; (100+101= 201 100-200 dahil arası sayi üretir.
5ile 15 arasında sayi üretmek için 5 + rand()% 11 ;  (5 + 11=16  5-15 dahil arası sayi üretir.

random sayi üretmeden önce bilgisayarın sürekli aynı sayıları üretmemesi için srand(time(0)) kodunu yazmamız gerekir.

#include <conio.h>
using namespace std;

int main ()
{
    srand(time(NULL)); //kodlar her calistiginde ayni sayilari uretmemesi icin yazılır.
    int dizi[10];
    int i;
    for (i=0;i<10;i++)
    {
        dizi[i] = 0+rand()%100; // 0 ile 100 arasinda sayi üretir.
        cout<< dizi[i] << endl;
    }
    getch();
}

Örnek;  6 kerede rasgele üretilen bir sayıyı tahmin etme oyunu.

#include<iostream>
#include <conio.h>
using namespace std;
int main () {
int x,a;

srand (time(0));  //aynı sayılar üretilmemesi için yazdık.

x=1+rand()%100; //1-100 arasında rastgele bir sayıyı x değişkenine atadık.
cout<< "1-100arasindaki sayiyi 6 hakkinda bul..."<< endl;

for (int i=0;i<6;i++) { //6 tane hak verdik yani döngü 6kez dönücek.
    cout<<"tahminin nedir ? : ";
cin>>a;

if (a>100 || a<0)  // girilen tahmin 100den büyük ve 0dan küçük ise uyarı verecek.
{
cout<<"sayi 1-100 arasi olmalı!!";
}

if (a==x){
cout<<"Tebrikler doğru tahmin ettin."<<endl;
}
if(a!=x){
cout<<"Yanlis cevap."<<endl;
}

}
cout<<endl<<endl<<"Hakkin doldu"<<endl;
cout<<"sayi " << x  << " idi";

getch();
return 0;
}

Karakter(katar) dizileri

Katar dizileri char türden dizilerdir. Katar dizileri özellik olarak diğer dizelere benzerlik gösterir. Char türden diziler daha çok içlerinde yazı tutmak için 
tanımlanırlar.char türden bir dizinin içinde bir yazı tutmanın dışında  küçük tamsayıları tutmak amacıyla da kullanılabilinir.

char katar[100];

şeklinde tanımlanan katar dizisi bütün elemanları char türden olan 100 elemanlı bir dizidir.
char türden bir dizi içinde bir yazı tutmak demek, dizinin her bir elemanına sırayla yazının bir karakterini atamak anlamına gelir.
galatasaray kelimesinin karakterlerini dizi adli bir  katar dizisine tutulması;

char dizi[100]; ise
0.index  g
1.index  a
2.index  l
..
11.index y  şeklinde tutulur.

Null (\0) Karekteri;

'\0' karakteri karakter dizileri üzerinde yapılan işlemleri hızlandırmak için kullanılır. Örneğin int türden bir dizi kullanıldığında dizi elemanları üzerinde
 döngüleri kullanarak işlem yaparken dizi uzunluğunun mutlaka bilinmesi gerekmektedir. Ama char türden diziler söz konusu olduğunda artık dizi  uzunluğunu 
 bilmemiz gerekmez, çünkü yazının sonunda '\0' karakter bulunacağından, kontrol ifadelerinde budurum test edilerek yazının sonuna gelinip gelinmediği anlaşılır. Ancak '\0' karakterin, karakter dizilerinde yazıların son elemanı olarak kullanılmasının dezavantajı da diziye fazladan bir karakter yani
'\0' karakteri eklemek zorunluluğudur. Bu nedenle 10 elemanlı bir diziye en fazla 10 – 1 tane karakter girilebilinir.

char dizi[3] =”Ali”;  C++'da hata verir. nedeni ise;

1. 'A' dizi[0]
2. 'l' dizi[1]
3. 'i' dizi[2]
... buraya bu durumda null karakteryerleştirilmiyor.(sonuncu index dolu.)

 Şimdi dizi adlı katar dizisinin elemanlarını ekrana yazdırmak istersek ne yapmalıyız?

char dizi[100]="galatasaray";
for(i=0; i<100; i++)
cout<<dizi[i]; 
    ifadesini kullanırsak program galatasaray harflerini yazdırdıktan sonraki indexleri boş olarak ekrana yazdırmaya devam eder. bu boş indexleri \0 simgeler.
 
yani;  
char dizi[4]= "ali" olsun 1.index a, 2.index l, 3.index i, 4.index ise \0 olur . '\o' null değeri olarak ifade edilir.  belli bir karekteri ifade etmez.

örnek; dizi uzunluğunu bulan program;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    int i=0;
    char dizi[20] = "galatasaray";
    
    while(dizi[i] != '\0')  //0 dan baslayan dizinin index teki sayi null değerine eşit olmadığı sürece döngüye gir
                                    ve i yi 1 arttır.\0 ' ' içine yazılır.
    i++;
    cout<<"uzunluk: " << i;
    getch();
}

örnek; çok boyutlu karakter dizisi kullanımı;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[][8] = {"ali","veli","mesut","adem"};
    
    cout<<dizi[1];   //ekrana veli yazar.
    
    getch();
}  


örnek; klavyeden girilen kelimeyi tersten yazdıran program;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    int i=0;
    int k;
    char dizi[20];
    cout<<"kelime giriniz: ";
    gets(dizi);
    while(dizi[i] != '\0')  //dizinin uzunluğunu bulmak için 0dan başlayan dizi index inin Null olmadığı kontrol 
                                    ettirdik. Null değerine ulaşınca döngü bitecek.
    i++;
    
    for(k=i; k>=0; k--)//k değerini dizi uzunluğuna atadık. dizi uzunluğu 0 a eşitlenesiye kadar teker teker 
                                   değeri düşecek. uzunluğun numarasındaki indexte yer alan karekter ilk olarak 
                                   devamında  0ncı indexteki karaktere kadar tek tek ekrana yazılacak.  kelime mal ise 
                                    ilk olarak 2.indexteki l ardından 1.endexteki a son olarak 0.indexteki m yazılacak 
                                    kelime lam olacak.
    cout<< dizi[k];
    
    getch();
    return 0;
}

String olarak dizi tanımlama;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    string dizi[10]={"sifir","bir","iki","uc","dort"}; //index numarası ile dizideki elemanların satırlarına ulaşılabilir. 
    
    cout<< dizi[3];
    
getch();
return 0;
}

Katarları Kopyalama;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[30];
    strcpy(dizi,"sampiyon");
    puts(dizi);
    
getch();
return 0;
}


katarları birleştirme;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[30]="galatasaray";
    strcat(dizi,"sampiyon");
    puts(dizi);
    
getch();
return 0;
}

Puts ve Gets İfadeleri;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[30];
    //cin>>dizi;  //yerine ;
gets(dizi);  //kullanabiliriz fark olarak imlec alt satırdan başlar.

    
    //cout<<dizi; // yerinede
puts(dizi);  //kullanılabilinir.
    
getch();
return 0;
}


Dizinin uzunluğunu bulma;

strlen(dizi) kodu ile dizi adlı dizinin uzunluğunu bulabiliriz.

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[30];
    gets(dizi); //klavyeden değer girdirdik.
    cout<<"dizininin boyutu" << strlen(dizi) << endl;
    puts(dizi);  //değerleri okuttuk.
    
getch();
return 0;
}


Çok boyutlu diziler


Çok boyutlu diziler dizi[][] şeklinde tanımlanır. 1. index dizinin satır sayısını 2. index ise dizinin sütun sayısını gösterir.
mesela dizi[4][2] şeklinde biri dizi tanımlarsak bu dizi 4 satırdan oluşur ve dizinin her satırı 2 eleman içerir.
çok boyutlu dizilerde elemanlar {{},{}...} şeklinde tanımlanır. satır sayısı kadar {} açılır ve {} içinde sutun sayısı kadar eleman yer alır.
dizi[4][2]= {{3,2},{8,2}{7,3}{6,1}} şeklinde tanımlanır.

örnek olarak;

#include <iostream>
#include <conio.h>
using namespace std;

int main(){
    int i,k;
 
    int dizi[4][2]={{3,2},{8,2},{7,3},{6,1}};
 
    for (i=0; i<4; i++)
            for (k=0; k<2; k++){      //iç içe açtığımız for lardan ilki satırları ikinci ise sutunları kontrol edicek.
                  cout<<"dizi ["<<i << "] [" << k <<"]: ";
                  cout<<dizi[i][k] << endl;
                  }
    getch();
    return 0;
}

ekran çıktısı olarak;

dizi [0] [0]: 3
dizi [0] [1]: 2
dizi [1] [0]: 8
dizi [1] [1]: 2
dizi [2] [0]: 7
dizi [2] [1]: 3
dizi [3] [0]: 6
dizi [3] [1]: 1

Diziler


Diziler belirle sayıda veriyi içinde barından değişken listesidir. Program içersinde dizi, değişken türü  dizinin_adı[dizinin boyutu] şeklinde tanımlanır.
dizi içersindeki verilerin indexi(sıra konumu) 0 dan başlar. yani ilk sıradaki dizinin indexi 0 dır. int türünden deneme adında 10 eleman içeren bir dizi
tanımlamamız gerekirse, int deneme[9] şeklinde tanımlamalıyız. index numarası 0 dan başlıyacağı için deneme[9] içersinde 10 adet veri barındırır.
Dizi elamanlarını belirtmek için veriler {} süslü parentezin içine yazılır.
Dizi kullanımda 2 önemli özellik vardır bunlar;
 1. Dizi elemanları bellekte ardışıl  olarak bulunurlar
 2. Dizi elemanları aynı türden nesnelerdir.

Dizi elemanlarına ilk değer verme işleminde dizi uzunluğu belirtilmeyebilir, bu durumda derleyici dizi uzunluğunu verilen ilk değerleri sayarak kendi hesaplar
ve dizinin o uzunlukta açıldığını kabul eder.

int sayilar[] = {10, 20, 30, 40, 50};

Dizi elemanlarına index operatörüyle [] ulaşılabilir.

int sayilar[5]= {10,20,30,40,50}   5 adet eleman içeren sayilar adlı dizinin 0. indexte bulunan elemanı 10, 1.indexte bulunan elamanı 20, 4.indexte ki ise 50dir.
sayilar[0] deyimi 10 değerini ifade eder.

1.örnek; 5elamanlı bir sayı dizisinin index numarasına göre değerini yazan program.

#include <iostream>
#include <conio.h>


using namespace std;

int main() {
   
    int sayilar[5]={10,20,30,40,50};  //dizinin elaman sayısı 5olduğu için {]kısmına en fazla 5 adet eleman 
                                                         yazılabilinir.
   
    cout<< sayilar[0] << endl;  //10 yazar.
    cout<< sayilar[1] << endl;  //20 yazar.
    cout<< sayilar[2] << endl;  //30 yazar.
    cout<< sayilar[3] << endl;  //40 yazar.
    cout<< sayilar[4] << endl;  //50 yazar.
    cout<< sayilar[5];          // 5.index boş olduğu için bellekten herhangi bir sayı atar ve atadığı sayıyı yazar.
    getch();
}


2.örnek; klavyeden 5tane değer girilen 5 değeri diziye atan ve bu dizideki değerlerin ortalamasını alan program.

#include <iostream>
#include <conio.h>


using namespace std;
int main() {
    int dizi[10];
    int i;
    float toplam=0;
    float ortalama=0;
    for (i=0; i<5; i++)   {
    cout<< i+1 << "degeri giriniz";   //1-5e kadar 5 adet elman girdirdik ve bunları diziye attık.
    cin>>dizi[i];
        toplam += dizi [i];   // dizideki elamanları başta 0 olan toplam değeri ile topladık.
        }
        ortalama = toplam /5;  // dizideki elemanların toplamı olan toplam değerini dizinin eleman sayısına 
                                             bölerek ortalamayı elde ettik.
        cout<< "ortalama: " << ortalama;
        getch();
        return 0;  
        }

3.örnek; 10elamanlı bir sayı dizisinin en küçük elemanını ve index numarasını bulan program.

#include <iostream>
#include <conio.h>


using namespace std;

  int main() {
  int dizi[10] = {51, 44, 88, 3, 44, 78, 94, 61, 9, 210};

  int min=0, k,indis;
  min = dizi[0];        //dizinin ilk elamanını en kucuk olarak varsaydık.

  for (k = 0; k < 10; ++k) {
   
      if ( dizi[k]<min ){  //0 ve daha soran gelen indexteki değer min değerinden küçük ise ;
          min = dizi[k];   //yeni min değerine onu atadık.
          indis = k;       // en küçük olan index in index numarasınıda index değişkenine atadık.
                     }
          }
   cout<<"dizideki en kucuk eleman = " << min <<endl;
   cout<<"indisi = "<< indis << endl;

   getch();
   return 0;
   }        

4.örnek; sınıf ortalamasını bulan program.

#include <iostream>
#include <conio.h>
#define mevcut 55    // #define ile tanımlanan mevcut değerine 55 i atadık. mevcut yazdığımızda 55 değeri 
                                    baz alınacak. böylece ilerde mevcut değişikliği olursa tüm 55 değerlerini tek tek  
                                    değiştirmemiz yerine baştaki mevcudu değiştirmemiz yeterli olacak.
using namespace std;

int main(){
   
   int dizi[mevcut], k, toplam=0;  // mevcut değeri 55 ti 55elemanlı bir dizi tanımladık
   float ortalama=0;               // ortalama kusuratlı olabileceği için ortalama yı float türünden tanımladık.
 
   for(k=0; k<mevcut; k++){
         
   cout<<k+1<<".ogrencinin notu= ";//index  0dan başladiği için ilk 1.öğrenci olması gerektiğinden k+1
   cin>>dizi[k];                      //klaveyeden tek tek öğrencilerin notlarını girdirdik ve bunları diziye attık.
   toplam = toplam + dizi[k];     //dizideki tüm elamanları topladık ve toplam değerine atadık.
   ortalama = toplam / (k+1);    //toplamı dizideki eleman sayısına böldük.1.öğrenciden başlattığımız için k+1 
         }
   cout<< "sinif ortalamasi= " << ortalama << "endl";
   getch();
   return 0;
               }
 
5.örnek;  10 elemanlı bir sayı dizisine 1-10arası puan girilen ve hangi puandan kaç adet bulunduğunu gösteren program.

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
    int i, dizi[10], Puansayisinitut[11];   //klavyeden girilen 10adet puan ı saklayacak 10 elamanlı bir dizi 
                                                          tanımladık ve girilen puan değerinden dizide kaç adet bulunduğunu 
                                                          tutacak Puansayisinitut adında 11elemanlı bir dizi tanımladık(puanlama 
                                                          0-10 olacağı için 11elemanlı)
   
    for(i=0; i<=10; i++){  
    Puansayisinitut[i]=0;   //Puansayisinitut dizisindeki elamanları ilk başta 0ladık. ilerde her gelen puan değeri
                                       0dan 1arttırılacak.
         }
       
    for(i=0; i<10; i++) {
    cout<< i+1 <<". puanı giriniz(0-10 arasi hesaplanacak); ";  // klavyeden 10adet puan girdirdik.(0 ve 10 
                                                                                              arası puanlar hesaplanacak)
    cin>> dizi[i];
   
    Puansayisinitut[ dizi[i]  ]++;  // bu kısımda girilen puanın adet sayisi arttırılıyor. eğer dizi dizisinin 0. elamanı    
                                                5 ise Puansayisinitut dizisindeki 5. index teki 0 değeri 1 artırılacak.( başta 
                                                değerleri 0 lamıştık.) dizi dizisinin 1. elemanıda 5 ise  1 olan puansayisitut 
                                                dizisinin 5. indexi 2 ye çıkacak. yani puansayisitut dizisindeki 5. index 
                                                5değerinden kaç adet olduğunu gösterecek.
    }

 for(i=0; i<=10; i++){
  cout<< i<< "'den" <<Puansayisinitut[i] << "adet var" << endl;  //en sonunda 0dan 10 a kadar hangi  puandan kaç adet olduğunu gösterecek. hiç 0 puan 0indexten girilmediyse 0ncı index 0 olarak kalmış olacak. 5puandan 3kere girilmisse 5index in değeri 3 olacak ve 5'den  3 adet var diyecek.
             }
getch();
return 0;
}
}


6.örnek; 10 elamanlı bir sayı dizisinin elamanlarını büyükten küçüğe sıralayan program.

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
   
    int dizi[10]={0,52,31,24,2,45,78,14,65,99};
    int buyuk, i, k;
   
    for(i=0; i<10; i++){ //for döngümüz 0 dan başlayacak 1.for 0 değerinde iken; içindeki for döngüsü 
                                     çalışacak.
    for(k=0; k<10; k++){ // içindeki for döngüsü ilk for değeri 0da iken 10 kere dönecek döngüler
                                          tamamlandığında ikinci for toplam 100kere dönmüş olacak.
   
    if(dizi[i] > dizi[k]){  // birinci for değerindeki i. indexteki sayi, ikinci for daki k. indexteki değerden büyük 
                                   olduğunda if deyimine girecek.
             
     buyuk= dizi[i];   //öncelikli olarak büyük olan dizi[i] değerini elde tutmak için buyuk değerine atadık. 
                              buyuk değeri dizi[i] nin değeriyle aynı oldu.
     dizi[i]= dizi[k]; //şimdi büyük olan dizi[i] değerini küçük olan dizi[k] değerine eşitledik, şuan elimizdeki 
                              dizi[k] ve dizi[i] değeri eşitlendi.
     dizi[k] = buyuk;  //küçük olan dizi [k] değeri aynı zamanda dizi[i] ye atanmıştı . bu kısımda dizi[k] değeri 
                               dizi[i] nin ilk değeri olan buyuk'le eşitlendi.
     }                

     } }
     for(i=0; i<10; i++) {
     cout<< dizi[i] << endl;
     }
     getch();
     return 0;
     }

İç içe For döngüsü;

iç içe for döngüsünde 0.indexteki eleman ilk for da diğer tüm elemanlar ile karşılaştırılıyor. büyük olan değer öncelikle elde
   tutulması için buyuk'e atanıyor. ardından buyuk değer kendinden küçük olan değerin index ine atanıyor. küçük olanın indexi yani önde kalacak index ede
buyuk değeri atanıyor böylece buyuk değer başa geçmiş oluyor.
mesela dizi elemanlarımız 10 20 30 olsun. ilk for da 0 index ikinci for sayesinde 0,1 ve 2. index ile karşılaştırılıyor. if durumunu sağlayan durum
mevcut değil. if döngüsüne girilmiyor. ardından ilk for daki 1.index e bakılıyor (20değeri) 2.for sayesinde 0. indexteki 10 ile karşılaştırılıyor ve
if döngüsüne giriliyor. şimdi 20 değeri buyuk değerine atanıyor. buyuk 20 oldu. ardından dizi[i] yani dizi[1] =20 ve dizi[k] yani dizi[0]=10 ile
eşitleniyor dizi[1] 10 oldu fakat dizi[0] da 10 oldu ardından dizi[k]= 10 değerine buyuk (20)atanıyor ve dizi[0]=20 dizi[1]=10 dizi[2]=30oluyor.
döngüler tamamlandığında 0,1,2 indexler 30 20 10 oluyor, elamanlar büyükten küçüğe sıralanıyor.

Sunday, May 20, 2012

Break ve Continue ifadeleri


Break deyimi döngünün tamamlanmadan belirtilen durumlarda döngüden çıkılmasını sağlar. break deyiminden sonra gelen tüm deyimler atlanır.
Continue deyimi ise döngüden çıkılmadan belirtilen durumlarda döngüdeki adımların atlanmasını sağlar. continue belirtilen aralıktaki deyimleri atlar.

örnek ;  1-100 arasındaki sayıları ekrana yazdıran ve  sayı 50 değerine ulaşınca döngünün sonlanmasını sağlayan program.

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
   
    int a;
   
    for (a=1; a<100; a++) {
        cout << a << endl;
       
            if(a==50){    
                 break;  //döngü içersinde a sayısı 50 ye eşit olduğu durumda döngüden çıkar.
                     }
            }
    getch();
}

örnek; 1-100 arasındaki sayıları yazdıran ancak  40 ile 60 arasındaki sayıları dahil etmeyen program.

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
   
    int a;
     
    for (a=1; a<100; a++) {
       
          if(a>40 && a<60) {
                 continue;       //döngü içersinde sayı 40tan büyük ve 60tan küçük olduğu durumlarda ardından 
                                        gelen deyimleri işletmez.
                 }
               
          cout << a << endl;
            }
    getch();
}


Sunday, May 13, 2012

For döngüsü


For döngüsü içinde bulunduğu deyimleri belirli bir başlangıç değerinden başlatarak belirlenen koşulun sağlandığu sürece değerin artırım değeri baz alınarak
döndürülmesini sağlar. For döngüsünün yapısı  for(baslangıc_degeri; kosul; artırım değeri) { ..deyimler... } şeklindedir.

1.örnek;  1-100e kadar olan sayıların toplamını bulan program;

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
   
    int  sayi, toplam=0;
   
    for(sayi=1; sayi<100; sayi++){   //1-100e kadar olan sayıları toplatacağımız için sayi değerini 1den
                                                        başlattık, sayı değer 100e kadar dönücek  her döndüğünde sayı bir 
                                                        artırılacak. (1 + 2 + 3 .. + 99)
           
          toplam= toplam + sayi;   //1-100e kadar dönücek olan döngü içersinde toplam değeri 0 iken döngü
                                                   her döndüğünde sayının 1 artırılmış değeri toplam  değerine eklenecek.
                                                   ( toplam = 0+ 1) ikincide (toplam = 1 + 2) üçüncüde (toplam = 3 + 3) 
                                                    sonuncuda (toplam = 4851 + 99).
            }
      cout<< toplam;
      getch();
      }

2.örnek; klavyeden girilen sayıyın üssünü bulan program;

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
   
    int us, taban, i, sonuc= 1; //sonuc değişkenini çarpımda kullanacağımız için 1 değerini verdik.
     cout<< "tabani giriniz: ";
     cin>> taban;
     cout<< "ussu giriniz: ";
     cin>> us;
   
    for (i=1; i<=us; i++){     //i başlangıç değerinini 1 olarak atadık, döngü klavyeden girilen us değerinden 
                                           küçük ve eşit olduğu sürece dönecek.  döngü her döndüğün 1 olan başlangıç 
                                          değeri 1 artırılacak. böylece tabanı 2 üssü   5 olan işlemde 2 değeri 1den 5e 
                                           kadar olan sayılarla çarpılarak sonuc elde edilecek.
 
       
        sonuc= sonuc * taban;  // başlangıçta 1 olan sonuc değeri döngü her döndüğünde taban ile çarpılarak 
                                              yeni bir değer elde edecek. 2 üssü 4için; 1.(taban= 1 * 2) 2.(taban= 2 * 2) 
                                               3.(taban= 4 * 2) 4.(taban= 8 * 2)  sonuc = 16
        }
        cout<< "sonuc: " << sonuc;
        getch();
        }

3.örnek ; klaveyeden girilen sayının faktoriyelini bulan program;

#include <iostream>
#include <conio.h>
using namespace std;

int main() {
   
   int sayi, faktoriyel=1, i;
 
   cout<< " sayiyi giriniz: ";
   cin>> sayi;

   for (i= sayi; i>0; i--){      // i başlangıç değerini klavyeden girilen faktoriyeli alınacak sayıya eşitledik. 
                                           döngü sayı 0dan büyük olduğu sürece dönecek  ve her döngü her döndüğünde 
                                            i değerine atanan sayı 1 azaltacak. sayı 4 ise 4 3 2 1 olarak devam edicek.
 
     faktoriyel= faktoriyel * i;  // başlangıç değeri 1 olan faktoriyel döngü her döndüğünde birer azaltılan sayı 
                                             (i) değeri ile çarpılacak. ( 5*4*3*2*1 ) 
           }
 
   cout<< "sonuc: " << faktoriyel;
     
getch();
}

Do While döngüsü



Do while döngüsünde while döngüsünden farklı olarak program koşul sağlansa da sağlanmasa da bir kez döngüye girer. do while döngüsünün kullanımı while den farklı
olarak do(){  .... }  while(); şeklinde olur.  program ilk çalıştırıldığında do bölümündeki deyimler okunur ardından while'ın içindeki koşul kontrol edilir koşul
sağlanıyorsa do ' nun içine tekrar dönülür koşul sağlanmıyorsa döngüden çıkılır.

1.örnek; 1-100 arasındaki tek sayıların toplamı:

#include <iostream>
#include <conio.h>

using namespace std;
main(){
       int sayi=1;      //tek sayıların toplamı alınacağı için sayıyı 1den başlattık.
       int toplam=0;  //toplam değerini başta 0 olarak atadık.
       do{                 //do while döngüsünü açtık. program ilk olarak bu kısmı bir kez çalıştıracaktır.
           toplam=toplam+sayi;     //sayi her döngü her döndüğünde bir önceki toplam değerine eklenecek.
           sayi=sayi+2;     //sadece tek sayıların toplanması için 1den başlattığımız sayıyı 2 ile toplattık böylece 
                                     toplam 1 + 3+ 5 şeklinde ilerleyecek.
           cout<<sayi;
         
         
           }while(sayi<=100);  //while kısmının içine sayı 100den küçük oluncaya kadar koşulunu ekledik. do-
                                            while döngüsünde while kısmı while(koşul); şeklinde kullanılır.
         
           cout<<"1-100 arasindaki tek sayilarin toplami : "<<toplam;    // 1-100e kadar olan sayıların
                                                                                                            toplamını ekrana yazdırdık.
           getch();
       }

2.örnek; kullanıcı veri giricek, istediğinde programdan çıkabilicek.

#include<iostream>
#include <conio.h>
#include <string>  //veri girişinin harflerden oluşturacağımız için string kutuphanesini çağırdık.

using namespace std;

main(){
       string a;   //isim girilmesini istediğimiz için string türünden a tanımladık.

          do {            // do kısmında kullanıcan isim girmesini istedik , döngüden çıkması için C ye basmasını  
                                 söyledik.
          cout<< "isim giriniz giriniz: ";
          cin>>a;
          cout<<"(cikmak icin C'ye basiniz)"<<endl<<endl;

          }while(a!="c");   // kullanıcının klavyeden girdiği değer c değil ise do bloğundaki deyimler tekrar 
                                        çalıştırılacak. eğer girilen değer c ise döngüden çıkılacak.      
          getch();
          }
       
       
                   

       

Saturday, May 12, 2012

While döngüsü


while döngüsü içerdiği bloğun koşul sağlandığı sürece çalışmasını sağlar. mesela bloğun şartı sayı<10 ise döngü sayı 10dan küçük olduğu müddetçe çalışacaktır.
if döngüsünden farkı olarak, if döngüsü kullanıyor olsaydık if(sayı<10) sayı 10'dan kücüktür yazdır deseydik if döngüsü ekrana 1 kez sayı 10'dan küçüktür
yazacaktır ancak while döngüsünde while(sayı<10) sayı 10'dan kücüktür yazdır deseydik sayı 10'dan küçük olduğu sürece ekrana sayı 10'dan küçüktür yazdırıcaktır.

1. Örnek; 1'den 100'e kadar sayıların toplamını yazan program.

#include <iostream>
#include <conio.h>
using namespace std;

int main(){                  
 
    int toplam=0, x=1;
 
    while(x<100){                // x 100den küçük olduğu sürece bloğun içindeki deyimler çalıştırılacaktır.
               
    toplam=toplam + x;        // toplam değeri ve x başta 0 dır. daha sonra okunacak x=x+1 deyimi ile x 1er 
                                            kez artılarak tekrardan döngü çalışacaktır bu durum  x 100den küçük olduğu  
                                            sürece devam edecektir.
    cout<<toplam<<"..";
    x=x+1;                        //x değerini 100den küçük olduğu sürece her okumada 1 sayı artıracaktır.
                }
    cout<<"\n"<< "1'den 100e kadar sayilarin toplami  "<<toplam<< " olarak bulundu.";  // yapılan işlemleri
                                                                                                                           ve sonucu ekrana yazdırır.
    getch();
}
 

2.Örnek; Klaveyeden girelen 2 sayıyı karşılaştıran ve durumlarına göre bu sayıları eşitleyen program.


#include <iostream>
#include <conio.h>
using namespace std;

int main(){
    int a, b;
 
    cout<< "1.sayiyi giriniz: ";
    cin>>a;
    cout<< "2.sayiyi giriniz: ";
    cin>>b;
 
    if (a>b){              // ilk sayının ikinci sayıdan büyük ise,
           
           while (a>b){    // ilk sayı ikinciden büyük olduğu sürece,
             
           cout<< "ilk sayi: " <<a<<"  ikinci sayi: " << b << "\n";    //ilk ve ikinci sayının önceki değererini yazdır.
                 a=a-1;           // her seferinde a'yı 1 azalt.
                        }
         
           cout<< "ilk sayi: " <<a<<"  ikinci sayi: " << b << "\n";      // ilk ve ikinci sayının son değerlerini yaz.  
           cout<< "sayilar birbirine esitlendi"<<"\n";                  //sayılar birbirine eşit olduğunda döngüden çıkar
                                                                                           ve deyimleri yazar.
             }
    if (a<b) {                        // ilk sayi ikinci sayıdan küçük ise,

             while (a<b) {            // ilk sayi ikinciden küçük olduğu sürece,

             cout<< "ilk sayi: " <<a<<"  ikinci sayi: " << b << "\n";  //ilk ve ikinci sayının önceki değererini yazdır.
                  a=a+1;                                               // her seferinde a'yı bir arttır.
                         }        
           cout<< "ilk sayi: " <<a<<"  ikinci sayi: " << b << "\n";    //sayılar birbirine eşit olduğunda döngüden 
                                                                                                 çıkar ve deyimleri yazar.     
           cout<< "sayilar birbirine esitlendi.";                    
             }
   getch();
}

Veri tipleri ve String kullanımı


1-Byte
1 Baytlık işaretsiz tamsayı tipidir. 0 ile 255 arasında değer alabilir.

3-Integer
2 Baytlık işaretli tamsayı tipidir. -32.768 ile 32.767 arasında değer alabilir.

3-Long
4 Baytlık işaretli tamsayı tipidir. -2.147.483.648 ile 2.147.483.647 arasında değer alabilir.

4-Float
4 Baytlık ondalık sayı tipidir. +- 3.402923 X 10 38 ile +- 1.401298 X 10-45 arasında değer alabilir.

5-Double
8 Byte lık ondalık sayı tipidir. +- 1.79769313486232 X 10308 ile +-4.94065645841247 X 10-324 arasında değer alabilir.

6-String
sayısal olmayan veri tipidir. Bu tip karakter sayısı +10 byte değer alabilir.
String bir veri tipi oluşturmak için değişkene atanacak değer ” ” işaretleri içerisinde yer almalıdır.
Adi=”türkiye”

7-Boolean
2 byte lık bir veri tipi olmasına rağmen sadece True veya False değerleri alabilir. Sayısal değerde atanabilir.
Atanan sayı 0 ise False, değilse True kabul edilir.

string kullanımı;

#include <iostream>
#include <conio.h>
#include <string>

using namespace std;
int main () {
   
    string x;
    x= "  galatasaray..";  // string  tipi veri oluşturmak için değişkene atanacak değer ” ” işaretleri içerisinde yer 
                                    almalıdır.
   
    cout<< "sampiyon" << x;      // ekrana sampiyon galatasaray yazdırır.
     
 getch ();
    }

Operatörler


Operatörler

==   // eşittir.
<    // küçüktür.
>    // büyüktür.
<=   // küçük eşittir.
>=   // büyük eşittir.
!=   // eşit değildir.
&&   // ve.
||   // veya.
!    // değil.
\n   // alt satıra geçme.
//   // yorum satırı.

örnek olarak;

#include <iostream>
#include <conio.h>

using namespace std;
int main() {
int a=10, b=20, c=10;

 if (a==c){
           cout<< a << " esittir " << c << "\n" ;
           }
 if(a!= b){
        cout<< a << " esit degildir " << b << "\n";
        }
 if(a==c && b>a) {
         cout<< a << " esittir "<< b << " ve " << b << " buyuktur " << a << "\n";
         }
 if(a==b || c<b){
     cout<< a << " esittir "<< b << " veya " << c << " kucuktur " << b << "\n";
         }
    getch();
            }  

Azaltma ve arttırma operatörleri;

a++ = a'yı okuduktan sonra 1 arttır.
a-- = a'yı okuduktan 1 arttır.
++a = a'yı okumadan önce 1arttır.
--a = a'yı okumadan önce bir azalt.

örnek olarak;

#include <iostream>
#include <conio.h>

using namespace std;
int main() {
    int a= 10;
                                      //ekran çıktısı
    cout<< a << "\n";       //10
    cout<< a++ << "\n";  //10
    cout<< a << "\n";      //11
    cout<< a-- << "\n";   //11
    cout<< a << "\n";      //10
    cout<< ++a << "\n";  //11
    cout<< a << "\n";      //11
    cout<< --a << "\n";   //10
    cout<< a << "\n";      //10
    getch();
            }  

Friday, May 11, 2012

Switch case yapısı


switch case yapısı programda seçenekler içersinden seçilen işlemi çalıştırmaya yarar.

#include <iostream>
#include <conio.h>

using namespace std;

main(){
       int a;
       cout<< " islem numarasi giriniz: ";  //çalıştırılmasını istediğimiz seçeneğin numarasını isteniyor.
       cin>> a;
     
     switch(a){              // switch case yapısını açtık. girilen numara (a) değerinin içine atılcak ve yalnızca o 
                                      kısım çalıştırılacak.
             
     case 1:
          cout<< "1.secenek";        //girilen sayı 1 ise ekrana 1.secenek yazdıracak.
          break;                             // case bloğundan çıkmak için break ifadesi kullanılır.
     case 2:
          cout<< "2.secenek";
          break;
     case 3:
          cout<< "3.secenek";
          break;
     default:
          cout<< "diger secenek";    //girilen sayı 1,2 veya 3ten biri değil ise diger secenek yazdıracak.
          break;
              }
     getch();                 // daha önce kullanmadığımız getch() ifadesi programın ekranda açık kalmasını 
                                    sağlar. bu komutun çalışması için  conio.h kütüphanesini çağırmamız  gerekmektedir.
         }