Algoritma etiketine sahip kayıtlar gösteriliyor.
Algoritma etiketine sahip kayıtlar gösteriliyor.

C Programlama Örnek Insertion Sort (Eklemeli Sıralama)

Insertion Sort (Eklemeli Sıralama) Bubble Sort algoritmasının iyileştirilmiş biçimidir. Sıralanacak dizinin ilk elemanını yerine bırakarak, sonraki elemanları (alt diziyi) sırayla alarak sıraya uygun olan yere sokar. Instertion Sort algoritması ile dizinin elemanları küçükten büyüğe sıralanır. En son ekrana dizinin yeni hali yazdırılır.
Eklemeli sıralama algoritmasının rastgele üretilmiş sayıları nasıl sıraya dizdiğini gösteren bir örnek.
#include <stdio.h>

int main()
{
  int n, dizi[100], x, y, t;

  printf("LUTFEN DIZI ELEMAN SAYISINI GIRINIZ\n");
  scanf("%d", &n);

  printf("%d ELEMANA AIT DEGERLERI GIRINIZ\n", n);

  for (x = 0; x < n; x++) {
    scanf("%d", &dizi[x]);
  }

  for (x = 1 ; x <= n - 1; x++) {
    y = x;

    while ( y > 0 && dizi[y] < dizi[y-1]) {
      t          = dizi[y];
      dizi[y]   = dizi[y-1];
      dizi[y-1] = t;

      y--;
    }
  }

  printf("ARTAN SIRAYA GORE LISTELEME:\n");

  for (x = 0; x <= n - 1; x++) {
    printf("%d\n", dizi[x]);
  }

  return 0;
}

C Programlama Örnek Selection Sort (Seçerek Sıralama)

Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından  (sorting algorithms) Selection Sort (Seçerek Sıralama) algoritmasında uygulanan her adımda eldeki dizinin en küçük elemanı bulunuyor ve en başa atılıyor. Bu işlem her seferinde tekrarlanıyor. Dizinin sonuna gelindiğinde dizimiz küçükten büyüğe sıralanmış oluyor. Büyük sayıda verileri sıralamak için elverişsizdir. Bubble Sort algoritmasının iyileştirilmiş biçimi sayılır.






#include <stdio.h>

int main()
{
   int dizi[100], s, x, y, pw, t;

   printf("LUTFEN DIZI ICIN ELEMAN SAYISINI GIRINIZ\n");
   scanf("%d", &s);

   printf("%d ELEMANA AIT DEGERLERI GIRINIZ\n", s);

   for ( x = 0 ; x < s ; x++ )
      scanf("%d", &dizi[x]);

   for ( x = 0 ; x < ( s - 1 ) ; x++ )
   {
      pw = x;

      for ( y = x + 1 ; y < s ; y++ )
      {
         if ( dizi[pw] > dizi[y] )
            pw = y;
      }
      if ( pw != x )
      {
         t = dizi[x];
         dizi[x] = dizi[pw];
         dizi[pw] = t;
      }
   }

   printf("ARTAN SIRAYA GORE LISTELEME:\n");

   for ( x = 0 ; x < s ; x++ )
      printf("%d\n", dizi[x]);

   return 0;
}


C Programlama Örnek Bubble Sort (Kabarcık Sıralaması)

Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından (sorting algorithms) arasında yazılması en kolay olan, ama büyük dizilerde çok yavaş kalan bir sıralama yöntemidir.

Kabarcık sıralaması'nın rastgele üretilmiş sayıları sıraladığını gösteren bir örnek
Sıralanacak dizinin üzerinde sürekli ilerlerken her defasında iki öğenin birbiriyle karşılaştırılıp, karşılaştırılan öğelerin yanlış sırada olmaları durumunda yerlerinin değiştirilmesi mantığına dayanır. Algoritma, herhangi bir değişiklik yapılmayıncaya kadar dizinin başına dönerek kendisini yineler. Adına "Kabarcık" sıralaması denmesinin nedeni büyük olan sayıların aynı suyun altındaki bir kabarcık gibi dizinin üstüne doğru ilerlemesidir. 

#include <stdio.h>

int main()
{
  int dizi[100], s, x, y, t;

  printf("LUTFEN DIZI ICIN ELEMAN SAYISINI GIRINIZ\n");
  scanf("%d", &s);

  printf("%d ELEMAN DEGERLERINI GIRINIZ\n", s);

  for (x = 0; x < s; x++)
    scanf("%d", &dizi[x]);

  for (x = 0 ; x < ( s - 1 ); x++)
  {
    for (y = 0 ; y < s - x - 1; y++)
    {
      if (dizi[y] > dizi[y+1])
      {
        t         = dizi[y];
        dizi[y]   = dizi[y+1];
        dizi[y+1] = t;
      }
    }
  }

  printf("ARTAN SIRAYA GORE LISTELEME:\n");

  for ( x = 0 ; x < s ; x++ )
     printf("%d\n", dizi[x]);

  return 0;
}

Sıralama Algoritmaları - Sorting Algorithms

Sıralama algoritmaları (sorting algorithms) nasıl çalışır görmek için sitedeki yeşil giflere tıklayın.

İlgili Link: www.sorting-algorithms.com

 sorting algorithms

Algoritma Örnekleri 3

Programlamaya Giriş ve Algoritmalar - Ders Notları
Algoritma ve Akış Diyagramı Örnekleri

1. Klavyeden girilen n adet günün sıcaklık ortalamalarını bulan  bir algoritma ve akış diyagramı?

A1 Başla
A2 Oku, Gün
A3 s=0 t=0 ort=0
A4 Oku sc (sıcaklık)
A5 s=s+1
A6 t=t+sc
A7 s<gün A4’e git
A8 ort=t/gün
A9 Yaz ort
A10 Dur



Algoritmanın Temel İfadeleri ve Operatörler

Programlamaya Giriş ve Algoritmalar - Ders Notları
Algoritmanın Temel İfadeleri ve Operatörler

Bir problemin çözümünde algoritma oluştururken satır algoritma yazabilir yada akış diyagramı çizebiliriz. Bu şekilde programlamaya başlamadan önce problemin çözümünü açık bir şekilde ifade etmiş oluruz. Böylelikle süreç ile ilgili bir hatayı programlamaya geçmeden önce gözlemleme imkanı buluruz.
Algoritmanın Temel İfadeleri
Değişkenler (variable) : Programın işleyişi içinde farklı değerleri tutmak üzere ayrılmış bellek bölümüdür. Bir değişkenin tanımlanması halinde tüm bilgiler geçici hafızada (RAM) tutulur. Örneğin :  a=b+c ifadesinde a,b,c tanımlamaları birer değişkendir.Değişken isimlendirme tamamen programcıya aittir. Ancak adının yerini aldığı ifadeye çağrışım yapacak şekilde olması programın anlaşılırlığı açısından önemlidir.
Tanımlayıcılar (identifier) : Değişken, sabit, alt yordam ve alan gibi programlama birimlerine programcı tarafından verilmiş isimlerdir.
İsimlendirme Kuralları
  • 0-9 arası rakamlar kullanılabilir.
  • Sembollerden sadece alt çizgi ( _ ) kullanılabilir.
  • Tanımlayıcı isimleri harf veya alt çizgi ile başlayabilir.
  • Tanımlayıcı ismi, rakamla başlayamaz veya sadece rakamlardan oluşamaz (sayı olamaz).
  • İngiliz alfabesindeki A-Z veya a-z arası 26 harf kullanılabilir.


Akış Diyagramı Nedir Diyagramı


Döngüsel Akış Diyagramları Örnekleri

Programlamaya Giriş ve Algoritmalar - Ders Notları
Algoritma ve Akış Diyagramı Örnekleri (Döngüsel Akış Diyagramları)


Döngüsel (İteratif, Çevrimli, Yineli) Akış Şemaları
Sorunun çözümü için, çözümde yer alan herhangi bir adım ya da aşamanın birden fazla kullanıldığı akış şemalarına denir. İş akışları genel olarak giriş ya da başlangıç değeri verme, hesaplama, kontrol biçiminde olmaktadır.  

Mantıksal Akış Diyagramları Örnekleri

Programlamaya Giriş ve Algoritmalar - Ders Notları
Algoritma ve Akış Diyagramı Örnekleri (Mantıksal Akış Diyagramları)


Mantıksal Akış Şemaları
Geniş ölçüde mantıksal kararları içeren akış şemalarıdır. Hesap düzenleri genellikle basittir.

100 kişilik bir sınıfta 18-22 yaş arası kaç öğrenci bulunduğunu yazan programın akış diyagramı :
Değişkenlerimiz : OS: Öğrenci sayısı, I18: 18 yaşında olan öğrencilerin sayısı, I19: 19 yaşında olan öğrencilerin sayısı, I20: 20 yaşında olan öğrencilerin sayısı, I21:21 yaşında olan öğrencilerin sayısı I22: 22 yaşında olan öğrencilerin sayısı , IOS: İşlem yapılan öğrenci sayısı

A1 Başla
A2 I18=0 I19=0 I20=0 I21=0 I22=0 IOS=0
A3 OS oku
A4 OS=18 ise I18'i arttır, A9'a git
A5 OS=19 ise I19'u arttır, A9'a git
A6 OS=20 ise I20'yi arttır, A9'a git
A7 OS=21 ise I21'i arttır, A9'a git
A8 OS=22 ise I22'Yİ arttır, A9'a git
A9 IOS<100 ise A3'e git
A10 I18,I19,I20,I21,I22,yaz
A11 DUR

Doğrusal Akış Diyagramları Örnekleri

Programlamaya Giriş ve Algoritmalar - Ders Notları
Algoritma ve Akış Diyagramı Örnekleri (Doğrusal Akış Diyagramları)

Doğrusal Akış Şemaları
İş akışları giriş, hesaplama, çıkış biçiminde olan akış şemaları bu grup kapsamına girer.

İki sayının çarpımını bulan algoritma ve akış diyagramı :
Değişkenlerimiz : 
A: Birinci sayıyı / B: İkinci sayıyı / C: İki sayının çarpımı (A*B)
A1 Başla
A2 A'yı oku
A3 B'yi oku
A4 C=A*B yi hesapla
A5 C'yi yaz
A6 Dur

Akış Diyagramları Örnekleri

Programlamaya Giriş ve Algoritmalar - Ders Notları
Akış Diyagramları Örnekler

1. Klavyeden girilen iki sayının toplamını bulan bir algoritma ve akış diyagramı :
A1.Başla
A2.Oku Sayi1, Sayi2
A3.Toplam=Sayi1+Sayi2
A4.Yaz Toplam
A5.Dur

Akış Diyagramları (Şemaları)

Programlamaya Giriş ve Algoritmalar - Ders Notları
Akış Diyagramları (Şemaları)

Herhangi bir sorunun çözümü için izlenmesi gerekli olan aritmetik ve mantıksal adımların söz veya yazı ile anlatıldığı algoritmanın, görsel olarak simge ya da sembollerle ifade edilmiş şekline “akış şemaları” veya FLOWCHART adı verilir. Akış şemalarının algoritmadan farkı, adımların simgeler şeklinde kutular içine yazılmış olması ve adımlar arasındaki ilişkilerin ve yönünün oklar ile gösterilmesidir.
Programın saklanacak esas belgeleri olan akış şemalarının hazırlanmasına, sorun çözümlenmesi sürecinin daha kolay anlaşılır biçime getirilmesi, iş akışının kontrol edilmesi ve programın kodlanmasının kolaylaştırılması gibi nedenlerle başvurulur. Uygulamada çoğunlukla, yazılacak programlar için önce programın ana adımlarını (bölümlerini) gösteren genel bir bakış akış şeması hazırlanır. Daha sonra her adım için ayrıntılı akış şemalarının çizimi vardır.

En basit şekliyle dikdörtgen kutulardan ve oklardan oluşur. Akış şeması sembolleri ANSI (American National Standards Institute) standardı olarak belirlenmiş ve tüm dünyada kullanılmaktadır.

Algoritma Örnekleri 2

Programlamaya Giriş ve Algoritmalar - Ders Notları

Algoritma Örnekleri 2 

  • Klavyeden girilen 2 tam sayının toplamını veren algoritma
A1 Başla
A2 sayı,sayı2,toplam değerlerini tanımla
A3 sayı gir
A4 sayı2 gir
A5 toplam=sayı+sayı2
A6 toplam ekrana yazdır
A7 Dur

Algoritma Örnekleri 1

Programlamaya Giriş ve Algoritmalar - Ders Notları
Algoritma Örnekleri
  1. Klavyeden girilen iki sayının toplamını 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?

Algoritma

Programlamaya Giriş ve Algoritmalar - Ders Notları

Algoritma sözcüğü nereden gelir?
 
Algoritma kelimesi, Özbekistan'ın Harezm, bugünkü Türkmenistan'ın Khiva kentinde doğmuş Ebu Abdullah Muhammed bin Musa el Harezmi isimli Türk matematikçinin adından gelir. Batılılar, el Harezmi (Al-Khwarizmi) (Latincede Algoritmi) sözcüğünü telaffuz edemedikleri için terim bu şekilde kalmıştır.

Algoritma Nedir?
Tüm programlama dillerinin temeli algoritmayla başlar. Aynı zamanda algoritma tek bir problemi çözecek davranışın, temel işleri yapan komutların veya deyimlerin adım adım ortaya konulmasıdır ve bu adımların sıralamasına göre işlem yapılmasıdır.

Algoritma bir programlama dili değildir.
Bir problem çözülürken algoritmik ve sezgisel (herustic) olmak üzere iki yaklaşım vardır. Algoritmik yaklaşımda da çözüm için olası yöntemlerden en uygun olan seçilir ve yapılması gerekenler adım adım ortaya konulur.

Algoritma türleri:
  • Arama algoritmaları
  • Bellek yönetimi algoritmaları
  • Bilgisayar grafiği algoritmaları
  • Birleşimsel algoritmalar
  • Çizge algoritmaları
  • Evrimsel algoritmalar
  • Genetik algoritmalar
  • Kripto algoritmaları veya kriptografik algoritmalar
  • Kök bulma algoritmaları
  • Optimizasyon algoritmaları
  • Sıralama algoritmaları
  • Veri sıkıştırma algoritmaları