9 Aralık 2015 Çarşamba

1.Klavyeden girilen iki sayını toplamanı bulan bir algoritma yazınız?

2.Klavyeden girilen iki sayının çarpım ve bölümünü bulan bir algoritma yazınız?
3.Klavyeden girilen iki notun ortalamasını bulan bir algoritma yazınız?vize%40 final%60 olarak...
4.Klavyeden iki notun ortalamasını bulan ve ortalaması 45den büyükse geçti değilse kaldı yazan bir algoritma yazınız?
5.Klavyeden girilen isminizi 10 defa yazdıran bir algoritma yazınız?
6.0 dan 10'a kadar olan sayıların toplamını bulan bir algoritma yazınız?
7.0 ile 100 arasındaki çift sayıların toplamını bulan bir algoritma yazınız?
8.Klavyeden girilen bir sayının faktöriyelini bulan bir algoritmasını yazınız?
9.Klavyeden girilen sayı kadar BOZOK ÜNİVERSİTESİ MYO yazan bir algoritma yazınız?
10.Klavyeden girilen n adet sayının kareleri toplamını bulan bir algoritma yazınız?
11.klavyeden girilen n adet günün sıcaklık ortalamalarını bulan programın algoritmasını ve akış şemasını yazınız?
12.Klavyeden girilen x elemanlı bir kümenin alt ve özaltküme toplamlarını bulan programın algoritmasını ve akş şemasını yapınız?
13.0 ile 100 arasındaki 3 ve 4'e tam bölünebilen 5'e bölündüğünde 2 kalanını veren kaç adet ve toplamını bulan programın algoritmasını ve akş şemasını yapınız?
14.Klavyeden n adet sayı girilmektedir. Girilen sayılardan 5 den küçük olanların  adet ve toplamlarını  bulan programın algoritmasını ve akş şemasını yapınız?  örneğin: n=5 girilseydi  3,7,9,2,4    küçük adet=3 k.toplam=9
15.14.soruda yer alan 5 yerine herhangi bir x değeri geldiği duruma göre oluşan programın algoritması ve akış şemasını yapınız?
16. Klavyeden r yarı çapı girilen dairenin alanını ve çevresini hesaplayan programı yapınız? pi=3.14
17. Fibonacci ilk 20 dizinin toplamını bulan programı yapınız?0,1,+,1,+,2,+,3,+,5,+,8,+,13,+,.....
18.Klavyeden N elemanlı sayılardan; İlk girilen sayıdan kaç tane daha girildiğini bulan programı yapınız? örnek n=5 ise x1=6, x2=4, x3=6, x4=6, x5=2    adet=2 dir.

//örnek1
#include<stdio.h>
#include<conio.h>

main()
{
     printf("Bozok Üniversitesi");
     getch();
      
}

//örnek2
#include<stdio.h>
#include<conio.h>
main()
{
     int bs,is,t;
     scanf("%d",&bs);
     scanf("%d",&is);
     t=bs+is;
     printf("toplam=%d",t);
     getch();
}

//örnek3
#include<stdio.h>
#include<conio.h>
main()
{
     int bs,is,c;
     scanf("%d",&bs);
     scanf("%d",&is);
     c=bs*is;
     printf("carpim=%d",c);
     getch();
}



//örnek4
#include<stdio.h>
#include<conio.h>
main()
{
      float vize,final,ort; 
      printf("vize notu="); 
      scanf("%f",&vize); 
      printf("final notu="); 
      scanf("%f",&final); 
      ort=(vize*0.4)+(final*0.6); 
      if(ort<44 && ort>44)
                {
                printf("KALDINIZ");
                }
      else
      {
          printf("GECTINIZ");
          }
      
      printf("\n ort=%f",ort);  
      getch(); 
}



26 Kasım 2015 Perşembe

4 Kasım 2015 Çarşamba


Dışardan girilen bir sayi için;
    f:faktöriyel hesabı yapan,
    i:girilen sayı kadar isim yazan
    t:girilen sayıya kadar kaç tane tek var
    y:girilen sayıya kadar kaç tane cift var

    İşlemlerini yapan yapan programı switch case ile yazınız.
    Program sonunda; Devam etmek istiyormusun(E/H) sorusuyla başa dönmelidir.
    Faktöriyel döngüsü do while; isim yazdırma döngüsü while ile yazılmalıdır.
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    int main(void)
    {
        gidilecekYer: ;
        system("cls");       
        int s;
        int f=1;
     int u=1;
     int x,m;
     char z;
    
        printf ("Islem Yapilacak Sayiyi Giriniz: ");
        scanf("%d",&s);
     printf("\n\n(f) Faktoriyel Hesapla"); 
     printf("\n(i) Girilen Sayi Kadar Isim Yaz");
     printf("\n(t) Sayiya kadar kac adet tek sayi var");
     printf("\n(y) Sayiya kadar kac adet cift sayi var\n\n"); 
     
     scanf("%s",&z);
        
          switch (z) {
      case 'f':
       do
       {
       f=f*s;
       s--;
       }
       while (s!=1); //sayi 1 e esit degilse dönecek. do calisacak.
       printf ("Faktoriyel Sonuc: %d",f);
       break;
        case 1:
       printf ("1e");
       break;
            case 'i':
       m=1;
       while (m<s+1)
       {
       printf ("BAYRAKTAR\n");
       m++;
       }
       break;
          
            case 't':
       for(m=0;m<s+1;m++)
       {
        if(m%2==1)
        {
       printf("tek sayi: %d",m);
        }
       }
       break;
       
      case 'y':
       x=1;
       for(m=0;m<s+1;m++)
       {
        if(m%2==0)
        {
       printf(x+".cift sayi: %d",+m);
       x++;
        }
       }
       break;   
       
                default: printf("Hatali Deger Girdin"); break;
    } 
       
       char x2; 
       printf("\n\nDevam Etmek istiyor musunuz ? (e/h)\n");
       scanf("%s",&x2); 
       
     
       if(x2=='e')
       {
                   goto gidilecekYer;
    } 
    }
    S1-klavyeden girilen bir sayıdan 0'a kadar ekrana yazan programı yazınız.
    S2-klavyeden girilen bir sayıya kadar olan rakamları alt alta ekrana yazdıran programı yazınız .
    S3-klavyeden girilen 10 sayıdan tek olanların toplamını bulan programı yazınız.

    C1:
    #include <stdio.h>
    #include <conio.h>
    int main(int argc, char *argv[])
    {
        int sayac;
      int sayi; //Sayı değişkenini tanımlıyorum.
      printf("Sayiyi Girin: \n");
      scanf("%d",&sayi); //değişkene dışardan değer aldırıyorum.
      
      if(sayi<0) //eğer sayı sıfırdan küçükse bu alan çalışacak.
      {
                printf("0'a kadar olan sayilar asagida: \n");
                for(sayac=sayi; sayac<=0 ; sayac=sayac+1)
                {
                       printf("%d\n",sayac); 
                }
      } else
      if(sayi==0) //Eğer sayı 0 a eşitse bu alan çalışacak..
      {
      printf("Zaten 0 Girmissiniz..");
      }
      else //Eğer sayı 0 dan büyükse bu alan çalışacak..
      {
                  printf("\n0'a kadar olan sayilar asagida: \n\n");

                for(sayac=sayi; sayac>=0 ; sayac=sayac-1)
                {
                       printf("%d\n",sayac); 
                }
      }
      printf("\nCikis icin herhangi bir tusa basin...");
      getch();
    }

    C2:

    #include <stdio.h>
    #include <conio.h>

    int main(int argc, char *argv[])
    {
        int sayac;
        int sayi;
        printf("Bir Sayi Girin..\n");
        scanf("%d",&sayi);
       
       if(sayi > 0)
       {
        for (sayac=0;sayac <= sayi; sayac ++)
        {
            printf("\n%d",sayac);
        }
    }
    else if(sayi==0)
    {
         printf("0 girdiniz...");
     } else if(sayi<0)
     {
            printf("Sayi sifirdan kucuk");
            for (sayac=sayi;sayac <=0;sayac++)
            {
                printf("\n%d",sayac);
            }
            
            
            } else {
                   printf("Harici Hata var. Yanlis Birseyler yapiyor olmalisin..");
                   }
                   printf("\n\nCikis icin herhangi bir tusa basin..");
      getch();
     
    }

    C3:

    int main(int argc, char *argv[])
    {
        int sayac;
        int toplam=0;
        int dizi[9];
        for(sayac=0;sayac<=9;sayac++)
        {
                printf("%d. Elemani girin\n",sayac+1);
                scanf("%d",&dizi[sayac]);
                printf("%d. Eleman Tanimlandi..\n",sayac+1);
                }
      for(sayac=0;sayac<=9;sayac++)
      {
                                   if(dizi[sayac]%2==1) //girilen sayıların 2 ile bölümünden kalan 1 ise, yani tek sayılar ise.
                                   {
                                          toplam=toplam+dizi[sayac];
                                          printf("Tek Sayilar: %d\n",dizi[sayac]);             
                                                       }
                                   }
                                   printf("Toplami: %d",toplam);
                                   getch();
    }
    Dizi (array) Nedir? 
    Dizi, aynı tip verilerin birbiri arkasına tanımlanmasıdır. Dizi bir kümedir. Aynı tipte verilere tek bir isimle erişmek için kullanılır. Bir dizinin bütün elemanları bellekte peşpeşe saklanırlar. Diziler kullanılarak, aynı isimle birden fazla değişkene erişilebilir ve işlem yapılabilir. Diziler tek ya da çok boyutlu olarak tanımlanabilir ve dizi boyutu ihtiyaca göre ayarlanabilir.char, int, float ve double olarak tanımlanabilen dizilerde sadece aynı veri türünden değişken değerleri yer alabilir.

    Dizileri tek boyutlu ve çok boyutlu olarak iki kısma ayırabiliriz. Tek boyutlu dizilere sayı dizilerini ve vektörleri örnek verebiliriz. Çok boyutlu dizilere ise matrisleri örnek verebiliriz..

    Tek Boyutlu Diziler (one-dimensional array) : C Programlama Dilinde aynı veri tipinden olan değişkenler tek bir isim altında toplanarak tek boyutlu diziler oluşturulur. Aynı veri türünden ve farklı isimlere sahip çok fazla sayıda değişken tanımlamak yerine, dizi bildirimi yapıp tek isim kullanarak aynı sayıda değişken tanımlamak daha kolaydır.

    Tek boyutlu dizilerin bildirimi için kullanılan genel yapı :  veritipi diziAdı [boyut];

    Veri Tipi : Dizi elemanlarının tipini belirtir. dizi kaç elemandan oluşur ise oluşsun tipleri aynı olmak zorundadır.
    Dizi Adı : Diziye programcının verecegi özerk ismi ifade eder.
    Boyut : Dizilerin mutlaka bir boyutu olmak zorundadır. Dizi boyutları "[ ... ]" içeriğinde tanımlanır. 

    Örnek :
    // Örnek Dizi Tanımlama
    // 100 elemanlı ve dizi adlı bir double dizisi
    double dizi[100];

    Örneğimizde 100 elemandan oluşan dizi adlı bir double dizisi oluşturuluyor. Köşeli parantezle içerisindeki 100 sayısı, dizimizin 100 elemanlı olduğunu ifade etmektedir. Tek bir köşeli parantez olduğu için dizimizin tek boyutlu bir dizi olduğunu söyleyebiliriz. 

    Tek Boyutlu Dizilerde Atama : Bir dizinin tanımlaması yapıldıktan sonra, atama işlemcisini kullanarak bu diziye değerler atanabilir. C Programlama Dilinde de bir dizinin ilk elemanına 0 değeri ile erişim sağlanır.

    Örnek :
    int dizi[30];   // 30 elemanlı dizi isimli bir dizi oluşturur. //
    dizi[0] = 15;   // Dizinin ilk elemanına 15 değerini atar. //
    dizi[16] = 42;  // Dizinin 17. elemanına 42 değerini atar. //

    Örneğimizde İşlem Satırlarında Neler Yaptık?
    Dizi isimli ve 30 elemanlı int bir dizisi oluşturuyoruz. Bilgisayar belleğinde 30 int değişkeni için yer ayrılmış oluyor. Dizinin ilk elemanına 15 sayısını ve üçüncü işlem satırında, dizinin 16. elemanına 42 sayısını atar. 

    Dizi elemanları  bellekte birbirlerini takip edecek şekilde depolanırlar.  Bir tamsayı değişken bellekte 4 byte yer kaplıyorsa 5 elemanlı bir tamsayı dizisi bellekte 5x4=20 byte yer kaplayacaktır. Diziler kaç elemandan oluşursa oluşsun elemanlarının tipleri aynı olmak zorundadır.  Yani dizinin birinci elemanı double iken ikinci eleman int olamaz. Diziler sadece kendi tipinden elemanları kabul ederler. 

    Örnek :
    #include "stdio.h"
    
    main()
    {
      int dizi[10];
      int id1, id2;
    
      dizi[0] = id1 = 27;  // dizi[0] : Dizinin ilk elemanını gösterir. //
      dizi[8] = id2 = 348; // dizi[8] : Dizinin dokuzuncu elemanını gösterir. //
    
      printf("%d %d %d %d", id1, id2, dizi[0], dizi[8]);
    }

    Program Çıktısı : 

    Örneğimiz öncelikle 10 elemanlık int bir dizi ve iki adet int değişken bildirimi yapar. Sonra, aynı işlem satırında dizinin ilk ve dokuzuncu elemanlarına atadığı değerleri aynı zamanda int değişkenlere atar. Daha sonra bu değerleri ekrana yazar. 

    Örnek :
    #include "stdio.h"
    
    main()
    {
        char soyad[10];         // Bir karakter dizisi tanimlayalim //
        soyad[0] = 'B';
        soyad[1] = 'A';
        soyad[2] = 'Y';
        soyad[3] = 'R';
        soyad[4] = 'A';
        soyad[5] = 'K';
        soyad[6] = 'T';
        soyad[7] = 'A';
        soyad[8] = 'R';
        soyad[9] = 0;             // Bos karakter - stringin sonu //
        printf("Soyadi %s dir. \n",soyad);
        printf("Icinden bir karakter: %c\n",soyad[2]);
        printf("Soyadinin bir parcasi: %s \n",&soyad[3]);
    }

    Program Çıktısı : 

    Tek Boyutlu Dizilerin Bellekte Yerleşimi : Tek boyutlu dizilerin bütün elemanları, ilk elemanı en düşük adrese gelecek şekilde, bellekte birbirlerine birleşik olarak yerleştirilir.

    Örnek :
    #include "stdio.h"
    
    main()
    {
      int idizi[5];
      int id1, id2;
    
      for (id1=0, id2=3; id1<5; id1++, id2+=3) {
           idizi[id1] = id2;
        printf("%d ", idizi[id1]);
      }
    
      printf("\n%d %d", idizi[4], idizi[4] * idizi[4]);
    }

    Program Çıktısı : 
    Örneğimizde önce 5 elemanlık int bir dizi ve 2 adet int değişken bildirimi yapılıyorç Sonra, bir for döngüsü ile,  dizinin elemanlarına 3'ten 15'e kadar olan sayıları 3'er arayla sırasıyla atar ve ekrana yazar. Daha sonra, dizinin son değerini ve karesini ekrana yazar.

    Tek Boyutlu Dizilerde Yazdırma ve Okuma : printf ve scanf fonksiyonları bir dizinin okunması ve yazdırılması için kullanılır. scanf() fonksiyonunu kullanarak dizi elemanlarına klavyeden girilen değerler de atanabilir. Böylelikle dışarıdan girilen değerler dizi elemanlarına atanarak kullanabilir.  

    Örneğin bir X dizisinin int X[10];  şeklinde bildirildiğini varsayalım. 

    Bu dizinin elemanlarını klavyeden okumak için: 
    for (i=0; i<10; i++)
    scanf ("%d",&X[i]); 

    Daha sonra değerleri ekrana yazmak için: 
    for (i=0;i<10;i++)
    printf("%d\n",X[i]);

    Örnek :
    #include "stdio.h"
    
    main()
    {
      int idizi[10];
      int id1, id2;
    
      for (id1=0; id1<10; id1++) {
           idizi[id1] = id1;
           printf("%d ", idizi[id1]);
      }
    
      printf("\n");
    
      printf("Lutfen bir sayi giriniz: ");
      scanf("%d", &id2);
    
      for (id1=0; id1<10; id1++) {
           idizi[id1] += id2;
           printf("%d ", idizi[id1]);
      }
    }

    Program Çıktısı : 
     
    Örneğimizde, program oluşturduğu 10 elemanlı bir diziye 0-9 arasındaki sayıları sıra ile atar ve printf fonksiyonu ile ekrana yazar. Sonra, klavyeden girilen int değeri her dizi elemanına ekleyerek, dizi eleman değerlerini tekrar ekrana yazar.

    Karakter Dizileri : C Programlama Dilinde karakter dizisi olarak tanımlanan bir veri çeşidi yoktur. Karakter dizisi veri desteğini sağlamak için tek boyutlu char diziler olarak kullanılır. Karakter dizisi NULL(0) değer ile sona eren bir char dizidir.

    C Programlama Dilinde klavyeden girilecek olan karakter dizileri standart bir kütüphane fonksiyonu olan gets() fonksiyonu ile okutulur. Bu fonksiyon stdio.h başlık dosyasını kullanır.

    Örnek 1 :
    #include "stdio.h"
    #include "conio.h"
    
    main()
    {
      char chdizi[20];
    
      printf("Bir karakter dizisi giriniz (20 karakterden az) :\n");
      gets(cdizi);
      
      printf("\n%s", chdizi);
      
    getch ();  
    }

    Örneğimizde program 20 elemanlık bir karakter dizi bildirimi yaptıktan sonra 20 karakterden az bir karakter dizisi girilmesini ister. Girilen karakter dizisini chdizi adlı diziye atar. Son olarak chdizi dizisini printf fonksiyonu ile ekrana yazar.

    Örnek 2 :
    #include "stdio.h"
    #include "conio.h"
    
    main()
    {
      char chdizi[20];
      int id1;
    
      printf("Bir karakter dizisi giriniz (20 karakterden az) :\n");
      gets(chdizi);
      
      printf("\n%s\n", chdizi);  
      printf(chdizi);  
      printf("\n");
      for (id1=0; chdizi[id1]; id1++) printf("%c", chdizi[id1]);   
      
    getch ();
    }
    2.Örneğimizde program klavyeden girilen karakter dizisini chdizi adlı diziye atadıktan sonra, önce printf() fonksiyonu ve %s format tanımlayıcısı, sonra sadece printf() fonksiyonu ve en son olarak bir for döngüsüyle her defasında bir karakter olmak üzere diziyi ekrana yazar. for döngüsü içindeki chdizi[id1] koşulu dizideki karakter dizisi sonunda bulunan NULL(0) değerine ulaştığı zaman döngü sonlanır. 

    Örnek 3  Bir karakter dizisinin uzunluğunu bulmak : 
    #include "stdio.h"
    #include "conio.h"
    
    int main(void)
    {
       char s[40];
       int  k = 0;
    
       printf("Bir seyler yazin : ");
       gets(s);
    
       while( s[k]!='\0' )
          k++;
     
       printf("Dizinin uzunlugu : %d\n",k);
       
    getch ();
    }

    Programın Çıktısı : 

    Örnek 4  Bir karakter dizisinin tersini bulmak : 
    #include "stdio.h"
    #include "conio.h"
    
    int main(void)
    {
       char s[40], gecici;
       int  i, n;
    
       printf("Bir seyler yazin : ");
       gets(s);
    
       for(n=0; s[n] != '\0'; n++)
          ;
    
       for(i=0; i<n/2; i++){
          gecici   = s[n-i-1];
          s[n-i-1] = s[i];
          s[i]     = gecici;
       }
    
       printf("Tersi : %s\n",s);
       
    getch ();
    }

    Programın Çıktısı : 

    Tek Boyutlu Dizilerde Sıralama (Sorting) : Dizilerde sıralama işlemini veren bir çok algoritma ( QuickSort, Insertion, Shell Sort, vs... ) vardır. Bu sıralama algoritmalarının kendilerine göre algoritmik olarak (hız, kullanılan bellek alanı vs....) avantajları ve dezavantajları vardır. Burada iç içe döngüler içeren bu algoritmalardan kavraması en kolay olan kabarcık yani bubble sort algoritmasını göreceğiz.

    Örneğin bir sayı dizisi olsun ve bu dizinin elemanlarını büyükten küçüğe sıralamamız gereksin. Bubble sort algoritmasında dizide eğer n tane eleman varsa dıştaki döngü diziyi n-1 kare tarar. Dizi elemanlarının birbirleriyle karşılaştırılmasını ise içteki döngü gerçekleştirir. İçteki döngü bitişik dizi elemanlarını karşılaştırır ve eğer önceki eleman sonraki elemandan küçükse bu iki elemanı yer değiştirir. Yer değiştirme işleminde C Programlama dilinde swap adı verilir. Swap işlemi kısaca iki değişkenin değerlerinin üçüncü bir geçici değişken yardımıyla yer değiştirmesidir.

    Örnek 1 : Kabarcık Sıralama (Bubble Sort) Algoritması ile birdizinin elemanlarını büyükten küçüğe dogru sıralayan bir C Programı 
    #include <stdio.h>
    #define n 10
    
    int main(void)
    {
       int   a[n] = {100, -250, 400, 125 ,550, 900, 689, 450, 347, 700};
       int   j,k,gecici;
    
       /* Dizinin kendisi */
       printf("Once : ");
       for(k=0; k<n; k++)
          printf("%5d ",a[k]);
    
       /* Sırala */
       for(k=0; k<n-1; k++)
       for(j=0; j<n-1; j++)
          if( a[j]<a[j+1] ){
             gecici = a[j];
               a[j] = a[j+1];
             a[j+1] = gecici;
          }
    
       /* Sıralama bitti */
       printf("\nSonra: ");
       for(k=0; k<n; k++)
          printf("%5d ",a[k]);
    
       printf("\n");
    
      return 0;
    }

    Program Çıktısı :

    Çeşitli sıralama algoritmaları için kaynak siteler : 
    Çok Boyutlu Diziler (Multidimensional Arrays): C Programlama Dilinde diziler birden fazla boyuta sahip olabilirler. Çok boyutlu dizileri elemanları dizilerden oluşan diziler olarak düşünebiliriz. Aşağıdaki işlem satırlarının ilki tek boyutlu, ikincisi iki boyutlu ve üçüncüsü ise üç boyutlu bir dizi tanımlar. Çok boyutlu dizi tanımlamanın, tek boyutlu dizi tanımlamaktan yapı olarak büyük bir farkı yoktur. Diziye eklenen her bir boyut için yine [] işaretleri arasında bir sayı tanımlanmaktadır. Çok boyutlu bilgileri veya veri tablolarını saklamak için kullanılırlar.

    Çok boyutlu dizilerin bildirimi için kullanılan genel yapı : 
    veritipi diziAdı [boyut1] [boyut2] [boyut3]...


    Çok Boyutlu Dizilerde Atama :

    Örnek :
    #include "stdio.h"
    #include "conio.h"
    
    main()
    {
      int idizi[3][4];
    
      idizi[0][0] = idizi[0][1] = idizi[0][2] = idizi[0][3] = 1 ;  
      idizi[1][0] = idizi[1][1] = idizi[1][2] = idizi[1][3] = 2 ; 
      idizi[2][0] = idizi[2][1] = idizi[2][2] = idizi[2][3] = 3 ; 
     
      printf("%d %d %d %d %d\n", idizi[0][0], idizi[0][1], idizi[0][2], idizi[0][3]);
      printf("%d %d %d %d %d\n", idizi[1][0], idizi[1][1], idizi[1][2], idizi[1][3]);
      printf("%d %d %d %d %d\n", idizi[2][0], idizi[2][1], idizi[2][2], idizi[2][3]);
      
    getch ();
    }
    Örneğimizde 3*4'lük ve 12 elemanlık iki boyutlu int bir dizi tanımlar. 1 sayısı ile gösterilen işlem satırında dizinin ilk satırındaki elemanlara 1 değerini, 2 sayısı ile gösterilen işlem satırında dizinin ikinci satırında yer alan elemanlara 2 değerini, 3 sayısı ile gösterilen işlem satırında ise dizinin üçüncü satırındaki elemanlara 3 değerini atar. Daha sonra printf() fonksiyonunun kullanıldığı işlem satırları ile dizinin satırlarını sırasıyla ekrana yazar.

    Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu dizilerde olduğu gibi, çok boyutlu dizilerde de başlangıç değeri vermek mümkündür. Örneğin 3 satır ve 4 sütünlu (3x4=12 elemanlı) bir x matrisinin elemanları şöyle tanımlanabilir:

    int x[3][4] = {11,34,42,60, 72,99,10,50, 80,66,21,38};
    yada
    int x[3][4] = {11,34,42,60,
                           72,99,10,50,
                           80,66,21,38}; 
    Bu matris ekrana matris formunda yazılmak istendiğinde:
    for(i=0; i<3; i++)
    {
    for(j=0; j<4; j++)
    printf("%4d",x[i][j]);
    }

    Örnek İki matrisin toplamını bulan bir C Programı :
    #include <stdio.h>
    #include <conio.h>
    #define SAT 2
    #define SUT 3
    
    int main()
    {
        int a[SAT][SUT] = {5, 3, 7,  0, 1, 2};
    
        int b[SAT][SUT] = {1, 2, 3,  4, 5, 6};
        int c[SAT][SUT];
        int i, j;
    
        puts("A Matrisi:");
        for(i=0; i<SAT; i++){
          for(j=0; j<SUT; j++)
             printf("%4d",a[i][j]);
          printf("\n");
        }
    
        puts("B Matrisi:");
        for(i=0; i<SAT; i++){
          for(j=0; j<SUT; j++)
             printf("%4d",b[i][j]);
          printf("\n");
        }
    
        puts("\nC Matrisi:");
        for(i=0; i<SAT; i++){
           for(j=0; j<SUT; j++){
             c[i][j] = a[i][j] + b[i][j];
             printf("%4d",c[i][j]);
           }
           printf("\n");
        }
    
    getch ();
    }


    Örnek Tek boyutlu bir diziyi iki boyutlu matrise çeviren bir C Programı :
    #include <stdlib.h>
    #include <conio.h>
    int main()
    {
        int dizi[100];
        int a[100][100];
        int i, j, n, x, st, su;
        printf("Dizi kac elemandan olusmali : ");
        scanf("%d",&n);
        for(x=0; x<n; x++)
        {
            printf("Dizinin [%d] . elemanini giriniz : ",x+1);
            scanf("%d",&dizi[x]);
        }
        printf("\nDizi elemanlari -->\n" );
        for(x=0; x<n; x++)
        {
            printf("%3d",dizi[x]);
        }
        printf("\nMatrisin Satir sayisini giriniz : ");
        scanf("%d",&st);
        printf("\nMatrisin Sutun sayisini giriniz : ");
        scanf("%d",&su);
        if(n%st==0 && n%su==0)
        {
            x=0;
            for(i=0; i<st; i++)
            {
                for (j=0; j<su; j++)
                {
                    a[i][j]=dizi[x];
                    x++;
                }
            }
            printf("\n\nMATRIS > \n");
            for(i=0; i<st; i++)
            {
                for(j=0; j<su; j++)
                {
                    printf("%3d", a[i][j]);
                }
                printf("\n");
            }
        }
        else
            printf("HATA! Dizi Eleman Sayisi Satir veya Sutuna Tam bolunmelidir");
        getch ();
    }
    Klavyeden girilen bir sayının faktöriyelini bulan bir programı for, do while, while ve if goto ile yazınız?
    for

    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
          int sayi,fakt,s;
          s=0;fakt=1;
          printf("Bir Sayi Giriniz:");
          scanf("%d",&sayi);
          for (s=1;s<=sayi;s++)
          {
              fakt*=s;
          }
          printf ("Sonuc=%d dir...",fakt);
          getch();
    }
    while 
    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
          int sayi,fakt,s;
          s=0;fakt=1;
          printf("Bir Sayi Giriniz:");
          scanf("%d",&sayi);
          s=1;
          while (s<=sayi)
    {    
                fakt*=s;
                s++;     
    }
    printf ("Sonuc=%d dir...",fakt);
    getch();
    }
    do while 
    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
          int sayi,fakt,s;
          s=0;fakt=1;
          s=1;
          printf("Bir Sayi Giriniz:");
          scanf("%d",&sayi);
          do
          {
          fakt*=s;
          s++; 
          }
          while (s<=sayi);
          printf ("Sonuc=%d dir...",fakt);
          getch();
    }
    if goto

    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
          int sayi,fakt,s;
          s=0;fakt=1;
          s=1;
          printf("Bir Sayi Giriniz:");
          scanf("%d",&sayi);
          bayraktar:
          {
          fakt*=s;
          s++; 
          }
          if (s<=sayi)goto bayraktar;
          printf ("Sonuc=%d dir...",fakt);
                
          getch();
    }
    Klavyeden girilen n adet sayının kareleri toplamını bulan bir programı for, do while, while ve if goto ile yazınız?
    for
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n,s,x,t,sonuc;
        t=0;
        printf("n sayisinin degerini giriniz: ");
        scanf("%d",&n);
    
        for (s=0; s<n;s++)
        {
            printf("%d x degerini giriniz:",s+1);
            scanf("%d",&x);
            sonuc=x*x;
            t=t+sonuc;
        }
        printf("Sonuc=%d",t);
        return 0;
    }
    while 
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n,s,x,t,sonuc;
        t=0;
        printf("n sayisinin degerini giriniz: ");
        scanf("%d",&n);
        s=0;
        while (s<n)
        {
    
            printf("%d x degerini giriniz:",s+1);
            scanf("%d",&x);
            s++;
            sonuc=x*x;
            t=t+sonuc;
        }
        printf("Sonuc=%d",t);
        return 0;
    }
    do while 
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n,s,x,t,sonuc;
        t=0;
        printf("n sayisinin degerini giriniz: ");
        scanf("%d",&n);
        s=0;
    
        do
        {
        printf("%d x degerini giriniz:",s+1);
        scanf("%d",&x);
        s++;
        sonuc=x*x;
        t=t+sonuc;
        }
    
        while (s<n);
        printf("Sonuc=%d",t);
        return 0;
    }
    if goto
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n,s,x,t,sonuc;
        t=0;
        printf("n sayisinin degerini giriniz: ");
        scanf("%d",&n);
        s=0;
        bayraktar:
    
        {
        printf("%d x degerini giriniz:",s+1);
        scanf("%d",&x);
        s++;
        sonuc=x*x;
        t=t+sonuc;
        }
    
        if(s<n)goto bayraktar;
        printf("Sonuc=%d",t);
        return 0;
    }
    Klavyeden n adet sayı girilmektedir. Girilen sayılardan 5 den küçük olanların  adet ve toplamlarını  bulan programı for, do while, while ve if goto ile yazınız?
    for
    #include <stdio.h>
    #include <conio.h>
    main()
    {
    int n,s,x,t,a,kriter; a=t=0;
    printf ("n sayiyi giriniz=");
    scanf ("%d",&n);
    for(s=0;s<n;s++)
    {
    printf("\n %d. x sayisini  giriniz:",s+1);
    scanf("%d",&x);
    if (x<5)
    {
    a++;
    t+=x;
    }
    }
    printf ("Adet=%d dir,Toplam=%d dir...",a,t);
    getch();
    }
    while 
    #include <stdio.h>
    #include <conio.h>
    main()
    {
    int n,s,x,t,a,kriter; a=t=0;
    printf ("n sayiyi giriniz=");
    scanf ("%d",&n);
    s=0;
    while(s<n)
    {
    s++;
    printf("\n %d. x sayisini  giriniz:",s+1);
    scanf("%d",&x);
    if (x<5)
    a++;
    t+=x;
    }
    printf ("Adet=%d dir,Toplam=%d dir...",a,t);
    getch();
    }
    do while 
    #include <stdio.h>
    #include <conio.h>
    main()
    {
    int n,s,x,t,a,kriter; a=t=0;
    printf ("n sayiyi giriniz=");
    scanf ("%d",&n);
    s=0;
    do
    {
    s++;
    printf("\n %d. x sayisini  giriniz:",s+1);
    scanf("%d",&x);
    if (x<5)
    a++;
    t+=x;
    }
    while (s<n);
    printf ("Adet=%d dir,Toplam=%d dir...",a,t);
    getch();
    }
    if goto
    #include <stdio.h>
    #include <conio.h>
    main()
    {
    int n,s,x,t,a,kriter; a=t=0;
    printf ("n sayiyi giriniz=");
    scanf ("%d",&n);
    s=0;
    bayraktar:
    
    {
    s++;
    printf("\n %d. x sayisini  giriniz:",s+1);
    scanf("%d",&x);
    if (x<5)
    a++;
    t+=x;
    }  
    if (s<n)goto bayraktar;
    printf ("Adet=%d dir,Toplam=%d dir...",a,t);
    getch();
    }
    Döngüler : C Programlama Dilinde döngüler bir veya birden fazla işlem satırını programcı tarafından belirlenen sayılarda tekrarlı bir şekilde çalıştırmak için kullanılan ifadelerdir. C Programlama Dilinde, for, while ve do-while olmak üzere üç tip döngü vardır. Diğer programlama dillerinde olduğu gibi, bu deyimlerle istenildiği kadar iç-içe döngü yapısı kullanılabilir. 

    for Döngüsü : Yazım şekli olarak for deyiminin üç bileşeni vardır. Birincisi ve üçüncüsü atama ifadesi ve fonksiyon çağrısı iken, ortadaki ikincisi karşılaştırma ifadesidir.

    for Döngüsü Genel Yazım Biçimi : 
    for (başlangıç ifadesi; koşul ifadesi; artırma ve azaltma ifadeleri;)
    {
    ........
    döngüdeki deyimler
    ........
    }

    Başlangıç İfadesi : Döngü içerisinde kullanılacak olan temel atama işlemlerini içerir.
    Koşul İfadesi : Mantıksal ifadelerin bulunduğu kısımdır.
    Artırma ve Azaltma İfadeleri : Döngü içerisinde kullanılacak sayaç değişkenlerinin değerlerinin değiştirildiği komutları içerir.

    Yazım biçiminde gördüğünüz gibi bileşenler arasında (;) bulunması zorunludur. Örneğin karşılaştırma ifadesi yazılma ise koşulun her zaman pozitif olduğu kabul edilir ve  döngü koşulsuz tekrarlanır.

    for (;;) 
    {
    ....
    }

    ifadesinde sonsuz bir döngü oluşturmuş oluruz.

    Örnek for Kullanımı : 
    #include<stdio.h>
    int main( void )
    {
     int x;
     for( x = 0 ; x < 20; x++ ) {
     printf("%2d: Merhaba Dunya\n",(x+1));
     }
     return 0;
    }

    Programın Çıktısı : 

    while Döngüsü : Tekrarlama deyimidir. İçine yazılan br veya birden fazla işlem satırlarını belirli bir koşul sağlandığı sürece tekrar tekrar çalıştırmak için kullanılır. Bir küme ya da deyim while kullanılarak bir çok kez tekrarlanabilir. Tekrarlanması için koşul sınaması döngüye girilmeden yapılır. Koşul olumlu olduğu sürece döngü tekrarlanır.

    while Döngüsü Genel Yazım Biçimi :  
    while (koşul ifadesi)
    {
    ...... 
    döngüdeki deyimler
    ......
    }

    while döngüsünde ilk olarak döngü koşulu test edilir ve koşul pozitif ise döngüye girilir. Eğer koşul negatif ise döngüye hiç girmeden bir sonraki satırdan çalışmasına devam eder. while döngüsünde ifadenin sonucu döngünün başlangıcında kontrol edildiğinden, ifadenin yanlış sonuç verdiği durumlarda döngü bir defa bile çalışmaz. while döngüsünde,  for döngüsünden farklı olarak,  ilk değer atama ve artırma/azaltma ifadeleri bulunmamaktadır. while döngüsünde ilk değer atama işlemi döngü öncesinde, artırma/azaltma işlemi ise döngü kod bloğu içinde yapılır. 

    Örnek while Kullanımı : 
    #include <stdio.h>
    
    main()
    {
       int s=0;
       while(s <= 10)
       printf("%d\n",s++);
    
     return 0;
    }

    Programın Çıktısı : 

    Sonsuz Döngü (Infinite Loop) :  Koşul ifadesinin negatif olduğu durumlarda döngü hiç bir zaman sonlanmaz ve çevrime devam eder. Bu duruma sonsuz döngü (infinite loop) denir.

    for(;;)
    printf("Sonsuz döngü içindeyim...\n");
    ------------------------------------------------
    ...while
    {
    printf("Sonsuz döngü içindeyim...\n");
    }...

    do-while Döngüsü : while döngüsüne benzemektedir. do döngüsünde koşul kontrolü döngü sonunda yapıldığından koşul sağlanmasa bile döngü en az bir defa çalışır. Bu yönü ile do döngüsü for ve while döngülerinden farklıdır. Bir anlamda do-while döngüsü post test loop yani test yapan döngü olarakta bilinmektedir.

    do-while Döngüsü Genel Yazım Biçimi : 
    do

    ..... 
    döngüde yapılacaklar
    .....

    }
    while (koşul ifadesi);

    Diğer döngülerin aksine do-while döngüsünden sonra mutlaka (;) eklenmelidir.

    Örnek do-while Kullanımı :
    #include <stdio.h>
    #include <math.h>
    
    int main(int argc, const char * argv[])
    {
        int x=0;
        do
        {
            printf("Karakokunu almak istediginiz sayiyi giriniz:\n");
            printf("(Programi sonlandirmak icin 0 giriniz):");
            scanf("%d",&x);
            //math.h kütüphanesindeki sqrt fonksiyonunu kullanarak sayının karakökünü bulalım//
            //bulunan karakökü karekok isimli değişkende tutalım//
            double karekok=sqrt((double)x);
            printf("-------------------------------------------\n");
            printf("Girilen deger:%d\n",x);
            printf("Karakoku:%.2f\n",karekok);
            //program sonlandırılmadığı durumda döngü devam eder//
            //program 0 ile sonlandırıldığında döngüden çıkılır.//
        } while (x !=0);
        printf("Program sonlandiriliyor...");
        return 0;
    }

    Programın Çıktısı : 

    Goto Yapısı : C programlama dilinde bulunan bir başka yapı, goto deyimidir. Belirlenecek etiketler sayesinde, programın bir noktasından bir başka noktasına atlamanızı sağlar. goto, bir döngü değildir ancak döngü olarak kullanılabilir. goto, çalışabilmek için etiketlere ihtiyaç duyar. Etiketler, vereceğiniz herhangi bir isme sahip olabilir. Goto kullanmak için, "goto" isminin yanına, atlamak istediğiniz yerin sembolik ismini yazmanız yeterlidir. "goto" ile bir döngünün icine atlamanıza izin yoktur, fakat bir döngünün dışına atlayabilirsiniz. Ayrıca bir fonksiyondan ötekine de "goto" ile geçemezsiniz. goto için tanımlanan etiketin sonuna (:) eklemek zorunludur. 

    Örnek goto Kullanımı :
    #include<stdio.h>
    int main( void )
    {
     int x = 0;
     start:
     printf( "Merhaba Dunya\n" );
     x++;
     if( x<10 ) goto start;
    
     return 0;
    }

    break ve continue Deyimleri : break deyimi döngüde belirli şartlar oluştuğunda döngüyü sonlandırmak için kullanılır. Benzer şekilde continue deyimide bir döngünün herhangi bir satırından itibaren döngünün geri kalan işlem satırlarını çalıştırmadan, döngünün baş tarafına dönme olanağı sağlar. do ve while döngülerinde, program continue deyimi ile karşılaştığında, koşul bölümünü kontrol eder ve döngünün çalışmasını devam ettirir. for döngüsünde ise, artırma ve koşul bölümünü çalıştırdıktan sonra döngünün çalışmasını devam ettirir.

    Örnek break ve continue Kullanımı :
    #include<stdio.h>
    int main()
    {
       int s;
       for (s=5;s<15; s=s+1)
       {
        if (s==8)
         break;
        printf("Break dongusunun icinde, s in Degeri simdi %d\n",s);
       }
       for (s=5;s<15;s=s+1)
       {
        if (s==8)
         continue;
        printf("Continue dongusunun icinde, s in Degeri simdi %d\n",s);
       }
    }

    Programın Çıktısı : 

    İç İçe Döngüler : Kodlamada bazı problemler tek bir döngü ile çözülemezler. Bir veya birden fazla döngüyü iç içe kullanma ihtiyacı doğabilir.

    Örnek İç İçe Döngü Kullanımı : 
    Üç basamaklı, basamaklarının küpleri toplamı kendisine eşit olan tam sayılara Armstrong sayı denir.
    Örneğin: 371 bir Armstrong sayıdır çünkü 3^3 + 7^3 + 1^3 = 371. 

    İç İçe geçmiş üç for döngüsü ile bütün Armstrong sayıları bulup ekrana yazan bir C programı : 

    #include <stdio.h>
    
    int main()
    {
       int x,y,z, kup, sayi, s=1;
    
       for(x=1; x<=9; x++)
       for(y=0; y<=9; y++)
       for(z=0; z<=9; z++)
       {
           sayi = 100*x + 10*y + z;
           kup  = x*x*x + y*y*y + z*z*z;
    
           if( sayi==kup ) printf("%d. %d\n",s++,sayi);
       }
    
    return 0;
    }
    Programın Çıktısı : 

    Programlama Temelleri

    Ödev1: Günlük Hayatta Karşımıza Çıkan

    Bir Sorunun Çözümünde İzlenecek En Az 10

    En Fazla 20 Adımlık Bir Algoritma Yazınız?

    8,9,10,11,12. Soruların Algoritmasını Yazınız?

    Ödev2: İlk 10 Soruyu A4 Kağıdına Yazarak Getiriniz.

    Ödev3: İlk 15 Soruyu A4 Kağıdına Yazarak Getiriniz.

    Hava Durumu

    GIRESUN
    Blogger tarafından desteklenmektedir.