Sayfalar

while etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
while etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Nisan 2015 Salı

Fonksiyonlar

FONKSİYONLAR

        Fonksiyonlar kompleks bir işi parçalara bölerek hem daha kolay yapmamızı hemde daha sonra lazım olunca tekrar tekrar kullanmamızı sağlarlar.
     Fonksiyonları kısaca şu şekilde yazarız:
tür fonksiyonadı(parametreler)
{
komutlar;
}

Örnek üzerinden işlersek daha kolay olacak.


#include "stdafx.h"
#include<iostream> //Temel giriş-çıkış fonksiyonları için
#include <clocale> // setlocale kullanımı için
using namespace std; //std namespace deki metotları kullanmak için

void dizisay(char d[50])  /*Gönderilen değerleri alması lazım hangi değerleri yolladıysan
                                                   onun türüyle birlikte yazarak alıyoruz.*/
{
    int sayac = 0, b = 0;
    while (d[b] != '\0')
    {
        b++;
        sayac++;
    }
    cout << "Dizinizde bulunan harf sayısı....:  " << sayac<<endl;
}

int main()
{
    setlocale(LC_ALL, "TURKISH");
    char d[50];
    cout << "Cümle giriniz...: " ;
    gets_s(d);  /* cin komutundan farkı enter tuşuna basılıncaya kadar girilen her şeyi kaydeder, cin komutu ise boşluk yada enter tuşuna basılıncaya kadar değer alıyordu.*/

    dizisay(d); /*Fonksiyonu çağırırken fonksiyonun ismini yazıp parantezin içine parametreleri yazıyoruz.*/

    system("pause");
    return 0;
}


----------------------------------------------------------------------------------------------------------
/* İlk örneğimizde prototip tanımlamaya ihtiyacımız yoktu çünkü: fonksiyonumuz main'in üstündeydi, şimdi fonksiyonumuzu mainin altına aldığımızda neler yapmamız gerekli ona bakalım.*/


#include "stdafx.h"
#include<iostream> //Temel giriş-çıkış fonksiyonları için
#include <clocale> // setlocale kullanımı için
using namespace std; //std namespace deki metotları kullanmak için

void dizisay(char d[50]);   /*Fonksiyonumuzu main'in altında yazdığımızda prototipini yazmamız lazım. */

int main()
{
    setlocale(LC_ALL, "TURKISH");
    char d[50];
    cout << "Cümle giriniz...: ";
    gets_s(d);

    dizisay(d);

    system("pause");
    return 0;
}

void dizisay(char d[50]) 
{
    int sayac = 0, b = 0;
    while (d[b] != '\0')
    {
        b++;
        sayac++;
    }
    cout << "Dizinizde bulunan harf sayısı....: " << sayac<<endl;
}


Burada küçük bir örnek olarak gördük. Sonraki derslerimizde daha kompleks programlar yazarken fonksiyonların ne kadar önemli olduğunu anlayacağız. Burada işlemediğimiz bir konu olan referans ile çağırma var, bu konuyu bir sonraki konuyla birlikte işleyeceğiz.

Not: Yukarıdaki bütün kodlar Visual Studio da yazılmıştır. Kodları direkt olarak kopyalayarak çalıştırabilirsiniz.

27 Nisan 2015 Pazartesi

Örnekler


ÖRNEKLER

Armstrong SayılarıHer basamağın, sayının basamak sayısı kadar kuvvetinin alınıp toplanmaları ile elde edilen sonuç armstrong sayılarını verir.
0 dan 999 a kadar olan armstrong sayılarını bulan programı yazalım.


int sayı1, sayı2, b, o, y, s, f;
    sayı1 = 0;
    sayı2=1000;
    for (sayı1; sayı1 <= sayı2; sayı1++)
    {
        y = sayı1 / 100;
        o = sayı1 % 100;
        s = o / 10;
        b = o % 10;
        f = (y*y*y + s*s*s + b*b*b);
        if (sayı1 == f)
        {
            cout << sayı1 << endl;
        }
    }

-------------------------------------------------------------------------------------------------------
 Asal Sayılar: 1 ve kendisinden başka pozitif tam böleni olmayan sayılara denir.

int a, c, d;
    cout << "Son değeri giriniz....:";
    cin >> a;
    for (int b = 2; b < a; b++)
    {
        d = 1;
        for (int g = 2; g <= b / 2; g++)
        {
            if (b%g == 0)
                d = 0;
        }

        if (d == 1)
            cout << b << endl;

    }

-------------------------------------------------------------------------------------------------------
 Dikdörtgen çizelim.

    int x, y,a,b;
    cout << "Cizilecek dikdörtgen boyutu" << endl;;
    cin >> x >> y;
   

    for ( a = 0; a < x;a++)
    {
        for ( b = 0; b < y;b++)
        {
            cout << "#";
        }
        cout << endl;
    }



-------------------------------------------------------------------------------------------------------
Bir cümle girilsin ve içinden bir harf istensin, istenen harfin dizideki yerlerini bulan programı yazalım.

int sayac = 0;
    char d[50], a;
    setlocale(LC_ALL, "Turkish");
    cout << "Lütfen cümle giriniz....:";
    gets_s(d);
    cout << "İstenilen harfler....:";
    cin >> a;
    for (int x = 1; x < 51; x++)
    {
        if (d[x] == a)
        {
            sayac++;
            cout << "  " << x;
        }
    }
    cout << endl;
 -------------------------------------------------------------------------------------------------------
Negatif bir sayı alınıncaya kadar girilen sayılar arasındaki en büyük sayıyı bulan programı yazalım.

 int ek, eb, temp,a;
    setlocale(LC_ALL, "TURKISH");
    cout << "Değer gir" << endl;
    cin >> ek >> eb;
    while (ek>=0 && eb>=0)
    {
        if (ek <= eb)
            cin >> ek;
        else if (ek>eb)
        {
            temp = eb;
            eb = ek;
            ek = temp;
        }
       

    }
    cout << "En Büyük....:" << eb<<endl;

-------------------------------------------------------------------------------------------------------
İki diziyi çarpan ve trasnpozunu alan programı yazalım.
int i, j, diziboyutu, sayi, dizi[10][10], dizi2[10][10], sonuc[10][10] = { 0 };
    cout << "Matrisinizin boyunu giriniz....:" << endl;
    cin >> diziboyutu;
    //Dizi elemeanlarını giriyoruz.
    for (i = 0; i < diziboyutu; i++)
    {
        for (j = 0; j < diziboyutu; j++)
        {
            cin >> dizi[i][j];
        }
        cout << endl;
    }

    for (i = 0; i<diziboyutu; i++)
    {
        for (j = 0; j<diziboyutu; j++)
        {
            cout << "  " << dizi[i][j];
        }
        cout << endl;
    }
    cout << endl << endl << endl;
//Transpoz.
    for (i = 0; i<diziboyutu; i++)
    {
        for (j = 0; j<diziboyutu; j++)
        {
            cout << "  " << dizi[j][i];
        }
        cout<< endl;
    }
    cout << endl << endl << endl;
    //Matris çarpımı.
    cout << "Carpilacak diziyi giriniz...:";
    for (i = 0; i < diziboyutu; i++)
    {
        for (j = 0; j < diziboyutu; j++)
        {
            cin >> dizi2[i][j];
        }
        cout << endl;
    }
    cout << "Carpilacak diziyi giriniz...:";
    for (i = 0; i < diziboyutu; i++)
    {
        for (j = 0; j < diziboyutu; j++)
        {
            cin >> dizi[i][j];
        }
        cout << endl;
    }

    for (int i = 0; i < diziboyutu; i++)
    {
        for (int j = 0; j < diziboyutu; j++)
        {
            for (int k = 0; k < diziboyutu; k++)
            {
                sonuc[i][j] += dizi[i][k] * dizi2[k][j];
            }
            cout << endl;
        }
    }
    for (i = 0; i < diziboyutu; i++)
    {
        for (int j = 0; j < diziboyutu; j++)
        {
            cout << sonuc[i][j] << "   ";
        }
        cout <<endl;
    }
 -------------------------------------------------------------------------------------------------------
Zar atma oyunu yapalım. Bilgisayar kendisi 1000 kere zar atsın ve gelen sayıları tutsun.

 int zar()
{
    return rand () % 6 + 1;

}

 //main ekleyin
int bir=0, iki=0, uc=0, dört=0, bes=0, alti=0 ;
    for (int i = 0; i < 1000; i++)
    {
        switch (zar())
        {
        case 1: bir++; break;
        case 2: iki++; break;
        case 3: uc++; break;
        case 4: dört++; break;
        case 5: bes++; break;
        case 6: alti++; break;
        default:
            break;

        }
    }
        cout << "Bir...: " << bir << endl;
        cout << "İki...: " << iki << endl;
        cout << "Üç...: " << uc << endl;
        cout << "Dört...: " << dört << endl;
        cout << "Beş...: " << bes << endl;
        cout << "Altı...: " << alti << endl;
    
Not: rand fonksiyonu random sayılar verir ancak çalışma prensibinden dolayı her zaman aynı sayıları alırsınız. Farklı sayılar çıkması için srand(time(null)); fonksiyonunu kullanmanız lazım.


Not: Yukarıdaki bütün kodlar Visual Studio da yazılmıştır. Kodları direkt olarak kopyalayarak çalıştırabilirsiniz.

25 Şubat 2015 Çarşamba

While

Bu yazımızda while dögünüsünü işleyeceğiz.

While çok basit bir döngüdür. Eğer verdiğiniz değişkendeki değer şartı şağlıyorsa döngünün içine girilir.

Örnek olarak;

x=6;

while(x>5) /*x değeri 5 ten büyük bir sayı olduğu için içerisi 0 değerini alır yani yanlış olur bundan dolayı kod çalışmaz.*/
{

cout<<"Döngünün içindesiniz"<<endl;
}
Ve ya döngüye her türlü girmesinide sağlayabiliriz. Şarta 0 değeri yazılmadığı sürece derleyici her zaman şartı true olarak algılayacaktır ve döngünün içine girecektir.


Örnek olarak;

while(true)
{
cout<<"Sonsuz döngü"<<endl;
}

Bu döngüde ekrana sonsuz kere yazı yazılır. Programı kapatmadan çıkış yapılamaz.

Şimdi de bir ekran çıktısı yapalım.

0'dan 10'a kadar olan sayıları ekrana yazdıralım.

#include <iostream>
using namespace std;
int main()
{
int x=0;
while(x<=10) //x değeri 11 oluncaya kadar dönecek, 11 olduğunda program bitecek.
{
cout<<x<<endl;
x++;
}
system("pause");
return 0 ;
}


Not: Kodu DevC++ da yazılmıştır. Kodu direkt kopyalayıp çalıştırabilirsiniz.