5 Temmuz 2017 Çarşamba

Programlamanın Taousu - 2. Kitap - Eski Ustalar


Şoyle dedi usta programcı:
"Üç gun program yazma ve hayat anlamsızlaşır."

2.1
Eski zamanlarda yaşayan programcılar gizemliydi. Onların duşuncelerini takip edebilmemiz mumkun değil, bu yuzden sadece gorunuşlerini tarif etmekte yetineceğiz.
Suyu geçen bir tilki gibi uyanık. Savaş meydanındaki general gibi dikkatli. Misafirlerini ağırlayan ev sahibi gibi nazik. Yontulmamış tahta blok gibi basit. Derin mağaralardaki sular gibi karanlık.
Onların kalplerindeki ve kafalarındaki sırları kim bilir?
Cevap sadece Tao'dadır.

2.2
Buyuk usta Turing bir gun ruyasında bir makina olduğunu gordu ve uyandığında dedi ki: "Bilmiyorum ki acaba ben ruyasında bir makina olduğunu goren Turing miyim yoksa Turing olduğunu goren bir makina mıyım!"

2.3
Buyuk bir firma için çalışan bir programcı bir yazılım konferansına gider ve sonra donup mudurune rapor verir: "O firmalarda çalışan programcılar nasıl insanlar! Kotu davranıyorlardı ve dış gorunuşleri ile ilgilenmiyorlardı. Saçları uzun, giysileri eski pusku, kırış kırıştı. En guzel odamızı batırdılar ve benim prezentasyonum esnasında gurultu yapıp durdular."

Mudur bunun uzerine dedi ki: "Seni oraya asla gondermemeliydim! O programcılar fiziksel dunyanın otesinde yaşarlar. Hayatı saçma, bir tur tesaduf kabul ederler. Sınır tanımaksızın hareket ederler. Sadece programları için yaşarlar. Neden toplumsal kurallara uysunlar ki?...
Onlar Tao'nun içinde yaşarlar."

2.4
Bir çırak ustaya sordu: "Bak şurada bir programcı var, hiç tasarım yapmadan program yazıyor, dokumantasyon hazırlamıyor ve test etmiyor. Ancak kimi gorduysem onun dunyadaki en iyi programcı olduğunu soyluyor. Bu nasıl olabilir?"

Usta cevap verdi: "O programcı Tao'yu bilir. Tasarım kaygısını aşmıştır, sistem goçtuğunde ofkelenmez, evreni olduğu gibi kabul eder. Dokumantasyon kaygısın aşmıştır, bir başkasının onun koduna bakıp bakmaması umurunda değildir. Test etme kaygısını da aşmıştır çunku yazdığı her program kendi içinde mukemmel, şık ve rahattır, amaçları hemen belli eder kendini. Evet, gerçekten de o Tao'nun gizemlerine ermiştir."

Programlamanın Taousu - 1. Kitap - Sessiz Boşluk

Ve şoyle dedi usta programcı: "Sadece TCP/IP kullanarak uzaktaki makinanın işletim sistemini anlayabildiğinde tapınaktan ayrılmanın zamanı gelmiş demektir."

1.1
Sessiz boşlukta gizemli bir şey oluştu. Tek başına hareketsiz bekleyen o şey yine de surekli hareket halindedir. Tum programların ozunde yer alır o. Adını bilmiyorum onun, bu yuzden Programlanın Taosu diyeceğim.

Tao buyukse işletim sistemi buyukturr. İşletim sistemi buyukse derleyici buyuktur. Derleyici buyukse uygulama buyuktur. Kullanıcı mutludur ve dunyada uyum hukum surer.
Programlamanın Taosu uzaklara gider ve sabah ruzgarı ile geri doner.

1.2
Tao makina dilini doğurdu. Makina dili assembler'ı doğurdu.
Assembler derleyiciyi doğurdu. Şimdi ortalıkta onbin tane programlama dili var.
Ne kadar alçakgonullu olsa da her dilin bir amacı vardır. Her dil yazılımın Yin ve Yang'ını ifade eder. Her dilin Tao içinde bir yeri vardır.
Ancak mumkunse COBOL ile programlamayın.

1.3
Başlangıçta sadece Tao vardı. Tao Mekanı ve Zamanı doğurdu. Bu yuzden Zaman ve Mekan programlamanın Yin ve Yang'ıdır.
Tao'yu anlamayan programcılar programları için bir turlu yeterli zamana ve mekana sahip olmazlar. Tao'yu anlayan programcılar ise hedeflerine varmak için gerekli zamana ve mekana daima sahiptirler.
Başka turlu nasıl olabilirdi ki?

1.4
Bilge programcıya Tao'dan bahsedildiğinde onu takip eder. Ortalama programcıya Tao'dan bahsedildiğinde onu araştırma gereği duyar. Aptal programcıya Tao'dan bahsedildiğinde kahkahalarla guler.

Eğer gulmezse, duyduğu gerçek Tao değildir.
En yuksek ses işitilmesi en zor olandır.
İleri gitmek geri çekilmeye goturur.
Buyuk yetenek kendini olgunlukta gosterir.
Mukemmel bir programın bile hataları vardır.

10 Haziran 2017 Cumartesi

C Programlama Örnekler 4

Örnek 1 : Kullanıcının girmiş olduğu iki sayının arkadaş sayı olup olmadığını bulan bir C programı yazınız. 

Arkadaş Sayılar: A ve B pozitif iki sayı olsun. A'nın kendisi hariç pozitif bölenlerinin toplamı B ise ve B'nin kendisi hariç pozitif bölenlerinin toplamı A ise A ile B arkadaş sayılardır. 

Örneğin: 
220 ile 284 arkadaş sayılardır.
S(220)=1+2+4+5+10+11+20+22+44+55+110=284
S(284)=1+2+4+71+142=220 
 
#include <stdio.h>
#include <conio.h>
int main()
{
    int sayi1,sayi2;
    int s1Toplam=1,s2Toplam=1;
    int gecici,i=2;
    printf("Lutfen Sayilari Giriniz:\n");
    scanf("%d %d",&sayi1,&sayi2);
    if (sayi2>sayi1)
    {
        gecici=sayi1;
        sayi1=sayi2;
        sayi2=gecici;
    }
    while( i<=(sayi1/2) )
    {
        if(sayi1%i==0)
            s1Toplam=s1Toplam+i;
        if(sayi2%i==0)
            s2Toplam=s2Toplam+i;
        i=i+1;
    }
    if(sayi1==s2Toplam && sayi2==s1Toplam)
        printf("\nArkadas Sayilardir.");
    else
        printf("\nArkadas Sayi Degillerdir.");
    getch();
    return 0;
}


5 Nisan 2017 Çarşamba

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;
}


Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü