Archive for the ‘ C Porgramlama Dili ’ Category

14- C PROGRAMLAMAYA GİRİŞ: DİZİLER –> ÇOK BOYUTLU DİZİLER

Çok boyutlu bilgileri veya veri tablolarını saklamak için kullanılırlar.

Tanımlama biçimi: Tip Değişken_adı [Boyut1] [Boyut2] [Boyut3]…

Tip: Değişken türü

Değişken adı: Dizinin adı

[Boyut1]: Birinci boyut

[Boyut2]: İkinci boyut

Dizimiz iki boyutlu ise bir tabloya benzer. Bu durumda birinci boyut satırları, ikinci boyut ise sütunları gösterecektir. Bunun gösterim şekli ise;

13- C PROGRAMLAMAYA GİRİŞ: DİZİLER –> TEK BOYUTLU DİZİLER

Dizi, benzer elemanlardan oluşur. Diğer bir değişle dizi, aynı tip verilerin oluşturduğu küme biçimidir. Bahsettiğimiz küme ise matematikteki kümelerden biraz farklıdır. Biri dizi tanımlandıktan sonra, dizi elemanları bellekte peşpeşe saklanır. Bu yüzden diziler aynı tip verilerin toplanıp tek isimle adlandırılan veri bölgeleridir. Temel olarak iki özelliği mevcuttur.

  • Dizi elemanlarının bellekte (program çalıştığı sürece) sürekli biçimde bulunması.
  • Dizi elemanlarının aynı türden değişkenler olması.

Dizi elemanlarına ulaşmak için indisler kullanılır. İndisler tam sayı ifadeler olup, n tane dizi elemanının 0 ile n-1 arasında indislere sahip elemanları vardır.

Dizi Tanımı ve Kullanımı

12- C PROGRAMLAMAYA GİRİŞ: ÖZYİNELEME (RECURSIVE) FONKSİYONLAR

Şimdiye kadar başka fonksiyonları çağıran fonksiyonlara örnekler verdik. Şimdi ise kendini çağıran (recursive) fonksiyonları kavrayalım.

Recursive fonksiyonlar herhangi bir döngü (while, for, do while) kullanmadan kendisine bağlı olarak kullanılan prosödürdür.

ÖRNEK: Bir sayının faktöriyelini bulmak

 

11- C PROGRAMLAMAYA GİRİŞ: FONKSİYONLAR (İŞLEVLER)

Problem çözmenin temel ilkelerinden biri de, problemi mümkün olduğu kadar çok parçalara ayırmaktır. Parçalara ayrılan kısımlar sanki birbirinden bağımsızmış gibi düşünülerek çeşitli çözümler elde edilebilir. Ayrıca bu parçaları istediğimiz kadar, tekrar tekrar kullanabiliriz. İşte C programlama dilinde bu parçalama işlemini fonksiyon kullanarak yaparız. Kısaca işlev(fonksiyon); belli bir işi gerçekleştiren program deyimlerinin, karmaşık programları düzenlemek ve basitleştirmek için, programın bir birimi olarak gruplandırılmasıdır diyebiliriz. Örneğin bir program yazdığımızda

10- C PROGRAMLAMAYA GİRİŞ: DÖNGÜ DEYİMLERİ (YİNELİ)

Bir ya da birden fazla deyimin tekrar edilemesini sağlarlar. C dilinde while, for ve do-while deyimleri döngü işlevini sağlar. Tekrar edilen deyimlere döngü gövdesi denir.

WHILE DEYİMİ:


while
(koşul) {

9- C PROGRAMLAMAYA GİRİŞ: İÇ İÇE GEÇMİŞ İFADELER

If – else if Basamakları:

Daha önce yapmış olduğumuz programı hatırlıyalım:

8- C PROGRAMLAMAYA GİRİŞ: KOŞULLU (CONDITIONAL) İFADELER

Koşullu (Conditional) İfadeler:

Bilgisayarda yapılan mantıksal işlemlerin hepsi kaba bir temele dayanır. Koşullar sağlandığı zaman [EVET(1)] ve koşullar sağlanmadığı zaman [HAYIR(0)] yapılacak işlemler bellidir. Koşulların kontrol edilmesini if operatörüyle sağlarız. Bu operatörün genel kullanım şekli;

if( koşul ) {

komut(lar)

}

Eğer if’in altında birden çok komut varsa, ayraç işareti (veya küme parantezi) koymamız gerekir. Şayet if’ten sonra, tek komut bulunuyorsa, ayıraç kullanma zorunluluğu yoktur.

#include <stdio.h>
int main()
{
    int sayi;

    printf("Bu program girilen sayinizin pozitif veya negatif oldugunu bulur\n\n");
    printf("Lutfen bir tam sayi giriniz > ");
    scanf("%d",&sayi);

    if(sayi==0)
        printf("\n\n Sonuc sifirdir\n\n");

    return 0;
}

Akış şemamızı takip ederek programımızı anlamaya çalışalım. int, printf ve scanf fonksiyonlarıyla değişkenimizi tanıttık ve giriş yaptık. İlk koşulumuzdan (sayi==0 ?) itibaren devam edelim.

if(sayi==0) Kullanıcının girdiği sayı sıfıra eşit mi? diye sorgulayan programımız, eğer cevap evet ise bir alttaki satırı izleyerek programı sonlandıracaktır. Dikkat ederseniz sayi=0 ifadesini değil, sayi==0 kullandık. = ifadesi sayı değişkenine atama yaparken, == ifadesi değişkenimizi sağdaki sonuç olan sıfıra eşitledi.

printf(“\n\n Sonuc sifirdir\n\n”);

if else yapısı:

Bir koşulun doğruluğunda yapacağı işlemleri belirtmek yeterli olmadığı durumunda, koşulun doğru olmadığı zaman yapılacak işlemlerin belirlenmesini isteriz. İşte bu gibi pozisyonlarda if else yapısı devreye girer. If else operatörünün kullanım şekli ise şöyledir.

if( koşul ) {
komut(lar)
}
else {
komut(lar)
}

Şimdi programımızı biraz daha geliştirelim.

#include <stdio.h>
int main( )
{ //main bloğunun başlangıcı
    int sayi;
    printf("Bu program girilen sayinizin pozitif veya negatif oldugunu bulur\n\n");
    printf("Lutfen bir tam sayi giriniz > ");
    scanf("%d",&sayi);
    if(sayi==0)
    { //if bloğunun başlangıcı
        printf("\n\n Sonuc sifirdir\n\n");
    } //if bloğunun sonu
    else
    { //else bloğunun başlangıcı
        if(sayi>0)
        { //else bloğu içerisindeki if bloğunun başlangıcı
            printf("\n\nGirdiginiz sayi %d olup bu sayi pozitif bir tam sayidir\n\n",sayi);
        } //else bloğu içerisindeki if bloğunun sonu
    } //else bloğunun sonu
    return 0;
} //main bloğunun sonu

İncelememize devam edelim. Akış şemamızda eğer cevabımız hayır ise, if bloğunu terk ederek, hayır cevabının okunu  takip eden program yeni bir blokla karşılaşır. ELSE bloğu… Else bloğunun içinde tekrar bir koşulla karşılaşan programımız bu sefer sayının sıfırdan büyük olup olmadığını sorgular. Eğer sayımız sıfırdan büyük ise alttaki satırı takip ederek programı sonlandırır.

Programımızın son hali:

#include <stdio.h>
int main()
{
    int sayi;

    printf("Bu program girilen sayinizin pozitif veya negatif oldugunu bulur\n\n");
    printf("Lutfen bir tam sayi giriniz > ");
    scanf("%d",&sayi);

    if(sayi==0)
    {
        printf("\n\n Sonuc sifirdir\n\n");
    }

    else
    {
        if(sayi>0)
        {
            printf("\n\nGirdiginiz sayi %d olup bu sayi pozitif bir tam sayidir\n\n",sayi);
        }
        else
        {
            printf("\n\nGirdiginiz sayi %d olup bu sayi negatif bir tam sayidir\n\n",sayi);
        }
    }

    return 0;
}

Else bloğu içerisinde sayı sıfırdan büyük mü sorusuna verilen cevap hayır ise, program if bloğunu terk ederek else bloğu içerisinde yeni bir else bloğu arar. Bu blok zaten bir sayının pozitif mi yoksa negatif mi olduğunun son mantığıdır. Ve bu blok içerisinde bulunan komutla işlemi sonlandırır. Burada dikkat edilmesi gereken husus küme parantezlerinin yerleridir. Hangi durumlar hangi bloğun içerisinde gerçekleşiyorsa küme parantezleri de o bloğu belirtmelidir.

İLİŞKİSEL OPERATÖRLER
< KÜÇÜKTÜR
> BÜYÜKTÜR
== EŞİTTİR
<= KÜÇÜK EŞİTTİR
>= BÜYÜK EŞİTTİR
!= EŞİT DEĞİLDİR
BİRLEŞİK OPERATÖRLER
&& AND VE
|| OR VEYA
! NOT DEĞİL
BİRLEŞİK OPERATÖRLERİN MANTIKSAL TABLOSU
p q p&&q p||q !p !q
0 0 0 0 1 1
0 1 0 1 1 0
1 0 0 1 0 1
1 1 1 1 0 0

 ÖRNEK:

#include<stdio.h>
/* "Kendisine verilen iki tam sayıyı, bölecek ve sonucu virgüllü sayı olarak gösterecek bir bölme işlemini programı.
*(Şayet bölen 0 olarak verilirse, bölme işlemi yapılmamalıdır.) "
*/
int main()
{
    int sayi1, sayi2;
    float sonuc;

    printf("Lutfen bolmek istediginiz bir tam sayi giriniz\t> ");
    scanf("%d",&sayi1);

    printf("\n\nGirdiginiz sayiyi kaca bolmek istersiniz?\t> ");
    scanf("%d",&sayi2);

    if(sayi2!=0){
        sonuc= (float) sayi1/sayi2;
        printf("\n\nSonuc\t\t: %0.2f",sonuc);
    }

    else{
        printf("\n\n\"HATA: Sayi \'0\'a bolunemez\"\n\n");
    }

    return 0;
}




ÖRNEK:

#include <stdio.h>
int main()
{
    int sayi;
    printf("Bu program Kullanici tarafindan girilen bir sayinin tek mi veya cift mi oldugunu bulur\n\n"
           "Lutfen bir sayi giriniz > ");
    scanf("%d",&sayi);

    if(sayi%2==0)    //sayi%2==0 sayının mod2 ye göre kalanı sıfır ise…
    {
        printf("\nGirmis oldugunuz sayi %d olup bu sayi cifttir\n",sayi);
    }
    else
    {
        printf("\nGirmis oldugunuz sayi %d olup bu sayi tektir\n",sayi);
    }

    return 0;
}




ÖRNEK:

int main()
{
    int girilen_sayi;

    printf("Lutfen bir sayi giriniz >");
    scanf("%d",&girilen_sayi);

    if(girilen_sayi>=10 && girilen_sayi<=50){
        printf("Girilen sayi \"%d\", 10 ile 50 arasindadir!\n\n",girilen_sayi);
    }

    else{
        if(girilen_sayi<10)
            printf("Girilen sayi \"%d\", 10'dan kucuktur!\n\n",girilen_sayi);
        else
            printf("Girilen sayi \"%d\", 50'den buyuktur!\n\n",girilen_sayi);
    }

    return 0;
}




ÖRNEK:

#include <stdio.h>//printf fonksiyonu için lazım
int main()
{
    int sayi;
    printf("Bu program Kullanici tarafindan girilen bir sayinin 100 den buyuk - kucuk, tek mi veya cift mi oldugunu bulur\n\n"
           "Lutfen bir sayi giriniz > ");
    scanf("%d",&sayi);
    if (sayi==0)
        printf("\nSifir cift ve 100 den kucuk sayidir.\n");
    else
    {
        if(sayi>0)
        {
            if(sayi==100)
                printf("\nGirilen sayi cift, pozitif ve 100 e esittir.\n");
            else
            {
                if(sayi>100)
                {
                    if(sayi%2==0)
                    {
                        printf("\nGirilen sayi cift, pozitif ve 100 den buyuktur.\n");
                    }
                    else
                        printf("\nGirilen sayi tek, pozitif ve 100 den buyuktur.\n");
                }
                else
                {
                    if(sayi%2==0)
                    {
                        printf("\nGirilen sayi cift, pozitif ve 100 den kucuktur.\n");
                    }
                    else
                        printf("\nGirilen sayi tek, pozitif ve 100 den kucuktur.\n");
                }
            }
        }
        else
        {
            if(sayi%2==0)
            {
                printf("\nGirilen sayi cift, negatif ve 100 den kuvuktur.\n");
            }
            else
                printf("\nGirilen sayi tek, negatif ve 100 den kuvuktur.\n");
        }
    }
    return 0;
}




ÖRNEK:

#include <stdio.h>
int main()
{
    int a, b, c;
    puts("Bu program kullanicinin girdigi uc sayiyi siralar");
//
//printf ile aynı işlevi görür satır başını otomatik yapar.
//
    printf("\n Lutfen 3 sayiyi aralarda birer bosluk birakacak sekilde giriniz >");
    scanf("%d %d %d", &a, &b, &c );
    if(a>b)
    {
        if(c>a)
        {
            printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", c, a, b);
        }
        else
        {
            if(c>b)
            {
                printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", a, c, b);
            }
            else
            {
                printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", a, b, c);
            }
        }
    }
    else
    {
        if(b>c)
        {
            if(a>c)
            {
                printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", b, a, c);
            }
            else
            {
                printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", b, c, a);
            }
        }
        else
        {
            printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", c, b, a);
        }
    }
    return 0;
}