14 Aralık 2017 Perşembe

C Programlama Mükemmel Sayıları Bulmak (Perfect Numbers)

Kendisi hariç bütün pozitif bölenlerinin toplamı kendisine eşit olan sayılara mükemmel sayı denir. Mükemmel sayı terimini ilk olarak Pisagor ortaya atmıştır. Pisagor'a göre sayılarda mükemmellik, bir sayının bölenleriyle ilgiliydi. 

6 bir mükemmel sayıdır. Çünkü 6'nın pozitif bölenleri 1,2,3 ve 6'dır. 1+2+3=6 Bunun gibi 28 de mükemmel sayıdır. 28 = 1 + 2 + 4 + 7 + 14 Sayılar büyüdükçe mükemmel sayıları bulmak daha da zorlaşır. Günümüz bilgisayarlarının işlem gücüyle 34 milyondan fazla basamağı olan mükemmel sayılar keşfedildi. 

* 6,
* 28,
* 496,
* 8128,
* 33550336,
* 8589869056,
* 137438691328,
* 2305843008139952128
*................................................

C programlama dili ile iki sayı arasındaki mükemmel sayıları bulalım:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x, y, bir, iki, z;
    printf("--------------------------------------- \n");
    printf("Birinci sayiyi giriniz: ");
    scanf("%d", &bir);
    printf("ikinci sayiyi giriniz: ");
    scanf("%d", &iki);

    printf("iki sayi araligindaki mukemmel sayilar: \n");
    printf("--------------------------------------- \n");
    printf("%d ve %d: arasinda \n", bir, iki);
    printf("--------------------------------------- \n");

    for(x=bir; x<=iki; x++)
    {
        z = 0;

        for(y=1; y<x; y++)
        {
            if(x % y == 0)
            {
                z += y;
            }
        }

        if(z == x)
        {
            printf("%d, ", x);
        }
    }
    return 0;
}

20 Ağustos 2017 Pazar

C Programlama Örnek Kelimeleri Alfabetik olarak Sıralama

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
    int ametin;
    printf("Lutfen Kelime Sayisini Belirtiniz:\n");
    scanf("%d", &ametin);
    char Kelimeler[ametin][100], t[100];
    int x, y;
    printf("\nLutfen Kelimeleri Giriniz:\n");
    for (x = 0; x < ametin; x++)
        scanf("%s", Kelimeler[x]);

    printf("\nMetindeki Kelimeler:");
    for (x=0; x<ametin; x++)
    {
        printf ("\n%s", Kelimeler[x]);
    }
    for (x = 1; x < ametin; x++)
    {
        for (y = 1; y < ametin; y++)
        {
            if (strcmp(Kelimeler[y - 1], Kelimeler[y]) > 0)
            {
                strcpy(t, Kelimeler[y - 1]);
                strcpy(Kelimeler[y - 1], Kelimeler[y]);
                strcpy(Kelimeler[y], t);
            }
        }
    }
    printf("\n---------------------------------------------------\n");
    printf("\nMetindeki Kelimeleriniz Alfabetik Olarak Siralandi: ");
    for (x = 0; x < ametin; x++)
        printf("\n%s", Kelimeler[x]);
    return 0;
}


5 Temmuz 2017 Çarşamba

Programlamanın Taousu - 8. Kitap - Yazılım ve Donanım


Şoyle dedi usta programcı: "Ruzgar olmadan çimler hareket edemez. Yazılım olmadan donanım işe yaramaz."

8.1
Bir çırak, ustaya sordu: "Goruyorum ki bir bilgisayar firması var ki diğerlerinin hepsinden daha buyuk. Rekabet ortamında cucelerin arasındaki dev gibi. Tek bir bolumu bile başlı başına bir şirket adeta. Bu neden boyle?"

Usta cevapladı: "Neden boyle aptalca sorular soruyorsun? Şirket buyuk çunku buyuk. Sadece donanım yapsaydı hiç kimse satın almazdı. Sadece yazılım yapsaydı kimse kullanmazdı. Sadece sistem bakım hizmeti verseydi insanlar ona hizmetçi muamelesi yapardı. Fakat o bunların hepsini birleştiriyor bu yuzden de insanlar onu tanrılardan biri olarak goruyor. Çırpınmadan, zahmetsizce fethediyor."

8.2
Usta bir programcı bir gun yolda bir acemi bir programcı ile karşılaştı. Usta, aceminin elindeki portatif bilgisayar oyununu fark etti. "Afedersin, bir bakabilir miyim acaba?" diye sordu.
Acemi, elindeki bilgisayarı ustaya verdi. Usta alete bakıp konuştu: "Gorduğum kadarı ile oyunun uç seviyesi var; kolay, orta ve zor. Ancak bu tip bir aletin bir oyun seviyesi daha vardır. Öyle bir seviye ki ne bilgisayar insanı yenmeye çalışır ne de insan bilgisayarı."

"Lutfen usta", diye yalvardı acemi, "bu gizemli ayarı nasıl bulabilir bir insan?"
Usta aleti yere attı ve uzerinde zıplayıp parçaladı. Ve acemi o anda aydınlandı.

8.3
Bir zamanlar mikroişlemciler uzerinde çalışan bir programcı vardı. "Bak burada ne kadar iyiyim" dedi kendisini ziyarete gelen bir programcıya. "Kendi işletim sistemim ve depolama cihazım var. Kaynaklarımı hiç kimse ile paylaşmak zorunda değilim. Yazılım kendi kendine yeterli ve kullanması kolay. Neden işinden ayrılıp bana katılmıyorsun?"

Mainframe programcısı arkadaşına kendi sistemini tarif etmeye başladı: "Mainframe bilgi işlem merkezinde, meditasyon yapan kadim bir bilge gibi oturur. Yuzlerce disk surucusu buyuk bir okyanus gibidir. Yazılım tıpkı bir elmas gibi çokyuzludur ve bir orman gibi derindir. Sistemdeki programlar ırmaklar gibi akar. Ben bulunduğum yerde mutluyum."

Bunu duyan mikroişlemci programcısı sustu ve derin duşuncelere daldı. İki programcı omur boyu dost kaldılar.

8.4
Donanım ve Yazılım Chang-tse yolunda karşılaştılar. Yazılım dedi ki: "Sen Yin'sin ve ben de Yang'ım. Eğer birlikte seyahat ederse meşhur olur ve çok para kazanırız." Ve birlikte yola koyuldular dunyayı fethetmek uzere.

Yolda Firmware ile karşılaştılar, elinde bir değnek ve uzerinde hırpani giysiler vardı. Firmware onlara dedi ki: "Tao Yin ve Yang'ın otesindedir. Bir su birikintisi kadar sessiz ve hareketsizdir. Meşhur olma arzusu gutmez ve bu yuzden de kimse onun varlığından haberdar değildir. Servet duşkunu değildir çunku kendi kendine yetebilir. Zamanın ve mekanın otesinde yaşar."
Yazılım ve Donanım, utanmış bir halde eve donduler.

9. Kitap - Bitiş
Şoyle soyledi usta programcı:
"Gitme zamanın geldi."

Programlamanın Taousu - 7. Kitap - Şirket Bilgeliği

Şoyle dedi usta programcı: "Bir şirket yoneticisi için program demosu sunabilirsiniz ama onu bilgisayardan anlayan biri haline getiremezsiniz."

7.1
Acemi programcı ustaya sordu: "Doğuda insanların 'Şirket Karargahı' dedikleri bir ağaç yapısı var. Bir suru mudur yardımcısı ve muhasebeci ile dolu. Ortalıkta 'Şuraya git!', 'Buraya git!', 'şunu yap, bunu yap' yazan bir suru not var ama kimse bunların tam olarak ne anlama geldiğini bilmiyor. Her yıl bu ağaca yeni isimler ekleniyor ama hiçbir işe yaramıyor. Bu kadar garip bir ucube varlığını nasıl oluyor da surdurebiliyor?"

Usta cevapladı: "Bu koca yapıyı algılıyor ve onun mantıklı bir amacı olmamasından oturu rahatsız oluyorsun. Onun devasa donuşlerinden zevk almayı oğrenemez misin? Onun koruyucu dalları altında sakince program yazmanın guzelliğinin farkına varamaz mısın? Onun kullanışsızlığı seni neden bu kadar rahatsız ediyor?"

7.2
Doğuda tum balıklardan daha buyuk olan bir kopekbalığı yaşar. Kanatları bulutları kaplayan bir kuşa donuşur. Bu kuş hareket eder etmez Şirket Karagahından bir mesaj getirir. Bu mesaj programcıların ortasına duşer, tıpkı dalış yapan bir martı gibi. Ve sonra kuş ruzgarı arkasına alır, mavi gokyuzune doğru yukselip evine doner.

Acemi programcı şaşkınlık içinde kuşa bakakalır çunku onun ne olduğunu anlamaz. Ortalama programcı kuştan çekinir çunku getirdiği mesajdan korkar. Usta programcı bilgisayarının başında çalışmaya devam eder çunku O kuşun ne geldiğini fark eder ne de gittiğini.

7.3
Fildişi Kule'nin Buyucusu son icadını getirip usta programcının onunde koydu. Buyucu koca siyah bir kutuyu ustanın ofisine suruklerken usta sessizce olup bitenleri izliyordu.
"Bu entegre, dağıtık, genel amaçlı bir iş istasyonudur!" diye başladı buyucu ve devam etti, "ozel bir işletim sistemi ile ergonomik olarak tasarlanmış, içinde altıncı kuşak dilleri ve teknoloji harikası kullanıcı arabirimleri barındıran bir bilgisayardır. Asistanlarımın yuzlerce adam yılına mal oldu bunu tasarlamak. Nasıl sence de buyuleyici değil mi?"
Usta hafifçe kaşlarını kaldırdı ve "Gerçekten de buyuleyici," dedi.
"Şirket Karargahı'ndan gelen emirlere gore yeni programlar için artık bu makinayi platform olarak kullanacaksınız, bu konuda anlaştık mı?"
"Elbette," diye cevapladı usta, "Hemen onu bilgi işlem merkezine yollayacağım!" Ve buyucu mutlu bir şekilde kulesine geri dondu.
Gunler sonra bir acemi, ustanın odasına girdi ve "Yeni programımın yazıcı çıktısını bulamıyorum bir turlu, siz gordunuz mu acaba?" diye sordu.
"Evet," diye cevapladı usta, kağıtlar bilgi işlem merkezindeki platformun uzerinde yığılı."

7.4
Usta programcı bir programdan diğerine korkusuzca geçer. Yonetimdeki hiçbir değişiklik ona zarar veremez. Proje iptal edilse bile o kovulmaz. Neden? Çunku o Tao ile doludur!

Programlamanın Taousu - 6. Kitap - Yönetim


Ve şoyle dedi usta programcı:
"Programcılar çok ve yoneticiler az olsun - o zaman herkes çok daha uretken olur."

6.1
Yoneticiler bitmek bilmeyen toplantılar yaparken programcılar oyun yazar. Muhasebeciler son donem karlarından bahsederken programcıların butçesi kesilmek uzeredir. Bilimadamları gokyuzunden bahsederken ortalığı bulutlar kaplar.
Gerçekten de programlanın Tao'su bu değildir.
Yoneticiler kendilerini adadıklarında, oyun programları ihmal edilir. Muhasebeciler uzun donemli plan yaptıklarında uyum ve duzen geri doner. Bilimadamları eldeki problemleri incelemeye başladıklarında problemler çozulur.
Gerçekten de programlamanın Tao'su budur.

6.2
Programcılar neden uretken değildir?
Çunku vakitleri toplantılarda harcanır.
Programcılar neden isyankardır?
Çunku yonetim işlerine çok fazla karışır.
Programcılar neden tek tek istifa ederler?
Çunku kendilerini tuketilmiş hissederler.
Kotu yonetim için çalışmışlardır ve artık işlerine değer vermiyorlardır.

6.3
Bir yonetici kovulmak uzere iken onun için çalışan bir programcı yeni bir program geliştirdi, bu meşhur olup çok sattı ve yonetici yerini korudu.
Yonetici programcıya prim vermeye çalıştı ancak programcı reddetti ve dedi ki "O programı yazdım çunku fikir hoşuma gitmişti, bu yuzden de odul beklemiyorum."
Bunu duyan yonetici, "Bu programcı bir çalışanın gorevlerini mukemmel bir şekilde anlamış durumda, o halde onu yonetici danışman yaparak onurlandıralım!" dedi.
Bunu duyan programcı bir kez daha reddetti ve dedi ki: "Benim varlık amacım programlamak. Terfi edersem herkesin vaktini çalarım. Şimdi bana musaade. Üzerinde çalıştığım bir program var da."

6.4
Bir yonetici programcılarına gidip dedi ki: "İş saatlerinizle ilgili olarak, artık sabah 9'da gelecek ve akşam 5'te çıkacasınız." Bunu duyar duymaz çoğu programcı hemen oracıkta bastı istifayı.
Bunu goren yonetici dedi ki: "Pekala, pekala. O halde iş saatleerinizi kendiniz ayarlayın, proje zamanında yetiştiği surece ozgursunuz." Tatmin olan programcılar oğlen gelip sabahın erken saatlerine dek çalışmaya başladılar.

Programlamanın Taousu - 5. Kitap - Bakım


Ve şoyle dedi usta programcı:
"Bir program uç satırı geçtiyse bir gun mutlaka bakıma ihtiyaç duyar."

5.1
İyi kullanılan bir kapıya yağ gerekmez.
Akan su kir tutmaz.
Ne duşunceler ne de sesler boşlukta hareket edebilir.
Kullanılmayan yazılım çurur.
Bunlar buyuk sırlardır.

5.2
Bir mudur bir programcıya uzerinde çalıştığı programı ne kadar surede bitirebileceğini sordu. "Yarın bitecek," diye cevapladı programcı tereddut etmeden.
"Bu bana pek gerçekçi gelmedi açıkçası," dedi mudur. "Açık konuş, ne kadar surer?"
Programcı durup biraz duşundu. "Eklemek istediğim bir iki ozellik daha var. İki hafta alır," dedi.
"Bu bile iyimser bir beklenti!" diye ısrar etti mudur, "Bana kısaca programın ne zaman tamamlanacağını soyler misin?"
Programcı bunu kabul etti.
Yıllar sonra, mudur emekli oldu. Emekliliğini kutlama yemeğine çıkarken programcıyı bilgisayarı başında uyurken gordu. Sabaha kadar program yazmıştı.

5.3
Bir gun bir çırak programcıya bir muhasebe paketi yazma gorev verildi.
Çırak gunlerce deliler gibi çalıştı ancak usta programı incelediğinde sistemde bir ekran editoru, genelleştirilmiş grafik rutinleri, bir tur yapay zeka arabirimi bulunduğunu gordu. Muhasebeye yonelik hiçbir şey yoktu.
Usta bu noktaya dikkat çekince çırak biraz bozuldu, "Lutfen bu kadar sabırsız olmayın, sureç içinde muhasebe fonksiyonlarını da ekleyeceğim."

5.4
İyi bir çiftçi ekinini ihmal eder mi?
İyi bir oğretmen en aptal oğrenciye bile kotu davranır mı?
İyi bir baba bir çocuğunu açlığa makhum eder mi?
İyi bir pogramcı programının bakımını yapmayı reddeder mi?

Programlamanın Taousu - 4. Kitap - Kodlama


Ve şoyle dedi usta programcı: "İyi yazılmış bir program kendi içinde bir cennettir, kotu bir program ise cehennemin ta kendisi."

4.1
Bir program hafif ve çevik olmalıdır. Alt rutinleri inci dizileri gibi bağlanmalıdır. Programın ruhu ve amacı surekli goz onunde bulundurulmalıdır. Fazla ya da az olmamalı, gereksiz donguler ve değişkenler kullanılmamalıdır. Ancak yapıdan yoksunluk ya da değiştirilemez bir katılık da bulunmamalıdır.

Bir program "En Kuçuk Şaşkınlık" yasasını takip etmelidir. Nedir bu yasa? Program kullanıcıya daima onu en az şaşırtacak şekilde cevap vermelidir.
Bir program, ne kadar karmaşık olursa olsun, tek bir birim gibi çalışmalıdır. Program dış gorunuşu tarafından değil içsel mantığı tarafından yonlendiriliyor olmalıdır.
Eğer program bu ihtiyaçları karşılamazsa duzensizlik ve karmaşa hakim olur. Bunu duzeltmenin tek yolu programı yeniden yazmaktır.

4.2
Bir çırak ustaya sordu: "Bazen çalışan, bazen de çoken bir programım var. Programlama kurallarına uydum ama gene de apışıp kaldım. Bunun sebebi ne olabilir?"

Usta şoyle cevapladı: "Kafan karışmış çunku Tao'yu anlamıyorsun. Sadece bir insan etrafındaki insanlardan rasyonel davranışlar bekler. Sen neden aynı şeyi insanların yaptığı bir makinadan bekliyorsun? Bilgisayarlar determinizmi sadece simule ederler, mukemmel olan ise sadece Tao'dur.
Programlama kuralları geçicidir. Sadece Tao kalıcıdır. Bu yuzden aydınlanabilmek için once Tao'yu kavramalısın."

"Peki ama aydınlandığımı nasıl anlayacağım?" diye sordu çırak.
Usta cevap verdi: "Programın duzgun çalışacak."

4.3
Bir usta çıraklardan birine Tao'nun doğasını anlatıyordu: "Tao tum yazılımların içinde vardır, ne kadar kuçuk olurlarsa olsun bu yazılımlar."

"Bir hesap makinasında Tao var mıdır?" diye sordu bir çırak.
"Vardır."
"Peki bir video oyununda da var mıdır Tao?" diye devam etti çırak.
"Bir video oyununda bile vardır," dedi usta.
"Peki, kişisel bilgisayardaki Windows sisteminde de Tao var mıdır?" diye sordu çırak.
Usta oksurdu, boğazın temizledi, biraz kımıldandı ve "Bugunku dersimiz bu kadar," dedi.

4.4
Prens Wang'ın programcısı yazılım kodluyordu. Parmakları klavye uzerinde dans ediyor, programları tek bir hata mesajı olmadan derleniyor ve ruzgar gibi çalışıyordu.

"Mukemmel!" diye bağırdı Prens. "Tekniğin kusursuz!"
"Teknik mi?" dedi programcı ve terminalinden yukarı doğru baktı. "Benim takip ettiğim şey Tao'dur - tum tekniklerin otesinde. Programlamaya ilk kez başladığımda tum problemi tek bir kutle gibi goruyordum. Aradan yıllar geçtikten sonra o kutleyi gormuyorum. Bunun yerine alt rutinler kullanıyordum. Ancak şimdi artık hiçbir şey gormuyorum. Tum varlığım şekilsiz bir boşluk gibi. Ruhum plansız programsız, içgudulerini takip ederek ozgurce çalışabiliyor. Kısaca programım kendi kendini yazıyor. Evet, doğru, bazen guç problemlerle karşılaştığım oluyor. Onların geldiğini goruyorum ve yavaşlayıp sessizce izliyorum. Sonra tek bir satırı değiştiriyorum ve problemler duman gibi uçup gidiyor. Programı derliyorum ve yapılan işin guzelliği varlığıma işliyor. Gozlerimi kapatıyorum ve sonra sistemden çıkıyorum."

Bunun uzerine Prens Wang dedi ki "Keşke tum programcılarım senin kadar bilge olsaydı."

Programlamanın Taousu - 3. Kitap - Tasarım


Ve şoyle dedi usta programcı:
"Program test edilmeye başlandığında tasarım değişiklikleri yapmak için artık çok geçtir."

3.1
Bir zamanlar bir bilgisayar fuarına giden bir adam vardı. Her gun girişteki guvenlik gorevlisine şoyle diyordu: "Ben buyuk bir hırsızım, arakladığım şeyler yuzunden meşhurum. Seni uyarıyorum bu fuar da benden nasibini alacak."

Bu konuşma guvenlik gorevlisini çok rahatsız etmişti çunku içeride milyonlarca dolar değerinde bilgisayar ekipmanı vardı ve o da bu yuzden hırsız olduğunu soyleyen adamı yakın takibe almaya karar verdi. Ancak adam bir standdan diğerine gidiyor ve kendine kendine mırıldanıyordu, tum yaptığı buydu.

Adam fuarı terk eder etmez, guvenlik gorevlisi onu bir kenara çekiyor baştan sonra arama tarama yapıyordu. Adamın hırsızlığına işaret eden hiçbir şey çıkmıyordu uzerinden.

Ertesi gunu fuara gelen adam guvenlik gorevlisine yanaşıp dedi ki: "Dun iyi iş çıkardım ama bugun daha da iyi olacak." Tum huzuru kaçan bu sefer takip işini daha sıkı tutmaya karar vermişti ancak sonuç gene husrandı.

Fuarın son gununde dayanamayan guvenlik gorevlisi adama gidip şoyle dedi:"Sayın Hırsız, o kadar şaşırmış durumdayım ki huzurum kaçtı, çok kotu durumayım, lutfen beni aydınlatın, çaldığınız şey nedir?"

Adam gülümsedi ve tek bir cumle sarf etti:"Fikir çalıyorum."

3.2
Bir zamanlar yapısal olmayan programlar yazan bir usta programcı vardı. Çomez programcı onu taklit etmeye yeltendi ve o da yapısal olmayan programlar yazmaya başladı. Sonra ustaya gidip programlarını değerlendirmesini isteyince usta ona yapısal olmaya programlar yazmadığı için kızdı ve dedi ki: "Usta için uygun olan çomez için uygun değildir. Yapıyı aşmadan once Tao'yu kavramalısın."

3.3
Bir zamanlar savaş lordu Wu'nun topraklarında yaşayan bir programcı vardı. Wu onu huzuruna getirtti ve sordu: "Hangisini tasarlamak daha kolaydır, bir muhasebe paketi mi yoksa bir işletim sistemi mi?"
Programcı cevapladı: "Bir işletim sistemi."
Kulaklarına inanamayan savaş lordu içini çekti ve dedi ki: "Bir işletim sistemi ile kıyaslandığında muhasebe yazılımının çok basit olduğu su goturmez!"
"Tam olarak oyle denemez efendim", dedi programcı, "bir muhabesebe paketi tasarlarken programcı değişik fikirleri olan insanlarla muhatap olmak zorunda kalır: program nasıl çalışmalıdır, raporlar nasıl gorunmelidir, vergi kanunlarına ne şekilde uymaldıdır, vs. Oysa bir işletim sistemi dış gorunuş ile sınırlandırılamaz. Bir işletim sistemi tasarlarken programcı makina ve fikirler arasındaki en basit uyumu arar bu yuzden de işletim sistemi tasarlamak daha kolaydır."
Savaş lordu Wu başını onaylar biçinde salladı ve gulumsedi: "Guzel ve akıllıca! Peki hangisinin hatalarını ayıklamak daha kolaydır?"
Programcı cevap vermedi.

3.4
Bir mudur usta programcıya gitti ve yeni bir uygulama ile ilgili ozellik listesini gosterdi. Sonra da sordu: "Eğer 5 programcıyı gorevlendirirsem sistemin tasarlanması ne kadar surer?"
"1 yıl," diye cevapladı usta hiç tereddut etmeden.
"Fakat bu iş çok acil! 10 programcı çalıştırsak?"
Ustanın kaşları çatıldı. "Bu durumda iki yıl surer" dedi.
"Peki ya 100 programcı çalıştırsak?"
Usta omuz silkti ve "O zaman tasarım asla tamamlanmaz" dedi.

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


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

C Programlama Örnek Onluk Sistemi İkili Sisteme Dönüştürme

Kullanıcıdan alınan Decimal (Ondalık Sistem) sayıyı Binary (ikili Sisteme) dönüştüren C Programı.

#include <stdio.h>

int main()
{
  int s, x, y;

  printf("LUTFEN BIR SAYI GIRINIZ\n");
  scanf("%d", &s);

  printf("%d IKILI SAYI SISTEMINDE:\n", s);

  for (x = 50; x >= 0; x--)
  {
    y = s >> x;

    if (y & 1)
      printf("1");
    else
      printf("0");
  }

  printf("\n");

  return 0;
} 

C Programlama Örnek Armstrong Sayılar

Tüm basamaklarındaki rakamların sayı değerlerinin küpleri toplamı, kendisine eşit olan sayılara "Armstrong sayı" denir. Diğer bir deyişle her bir basamağın o sayının basamak sayısı kadar üssü alınarak toplanmasıdır. Eğer toplam bu sayıyı veriyorsa o sayı Armstrong Sayıdır.

Bazı Armstrong sayıları: 0, 1, 2, 3, 153, 370, 407, 1634, 8208

153 = 13 + 53  33
1634 = 14 + 64 + 34 + 44

#include <stdio.h>

int pw(int, int);

int main()
{
   int s, sonuc = 0, gecici, bdeger, basamak = 0;

   printf("LUTFEN BIR SAYI GIRINIZ\n");
   scanf("%d", &s);

   gecici = s;
   while (gecici != 0) {
      basamak++;
      gecici = gecici/10;
   }

   gecici = s;

   while (gecici != 0) {
      bdeger = gecici%10;
      sonuc = sonuc + pw(bdeger, basamak);
      gecici = gecici/10;
   }

   if (s == sonuc)
      printf("%d ARMSTRONG SAYIDIR.\n", s);
   else
      printf("%d ARMSTRONG SAYI DEGILDIR.\n", s);

   return 0;
}

int pw(int s, int r) {
   int c, p = 1;

   for (c = 1; c <= r; c++)
      p = p*s;

   return p;

C Programlama Örnek Palindrome Sayılar

Tersten ve düzden okunduğu zaman okunuş yönüyle aynı olan sayılara Palindromik Sayılar denir.

Örnek: 3,5,8,101,232,3663,8008,12431 vb.

Asal palindromik sayılar:  2, 3, 5, 7, 11, 101, 131, 151, 181, 191,….
Karesel palindromik sayılar: 0, 1, 4, 9, 121, 484, 676, 10201, 12321, 14641, 40804, 44944,….
Küpsel palindromik sayılar: 0, 1, 8, 343, 1331, 1030301, 1367631, 1003003001,....

#include <stdio.h>

int main()
{
   int n, t = 0, temp;

   printf("LUTFEN BIR SAYI GIRINIZ\n");
   scanf("%d",&n);

   temp = n;

   while( temp != 0 )
   {
      t = t * 10;
      t = t + temp%10;
      temp = temp/10;
   }

   if ( n == t )
      printf("%d PALINDROMIK BIR SAYIDIR\n", n);
   else
      printf("%d PALINDROMIK DEGILDIR\n", n);

   return 0;
}


1 Nisan 2017 Cumartesi

Linux SCP Komutu ve Kullanımı

SCP (Secure Copy) isimli bu güzel komut sayesinde ssh protokolü üzerinden iki Linux arasında dosya transferi yapabiliyoruz. Sadece uzak bir bilgisayardaki dosyayı yerele indirmek için değil, yereldekini de uzaktaki bilgisayara yüklemek içinde kullanabiliyorsunuz. SCP ile dilerseniz kendi sunucunuza farklı bir sunucudan dosya çekebilir, dilerseniz kendi sunucunuzdan farklı bir sunucuya dosya transfer edebilirsiniz. SCP veri aktarımı için Güvenli Kabuk (SSH) kullanması nedeniyle, transit verilerin doğruluğunu ve gizliliğini sağlar ve kimlik doğrulama için aynı mekanizmalarını kullanır. İsteğe bağlı temel nitelikleri (izinler, zaman tanımları dahil), bir sunucuya (upload) veya bir sunucudan download imkanı sağlar.

SCP Aracının Kurulumu

Linux dağıtımlarında öntanımlı olarak scp bulunmamaktadır. SCP paketi Openssh-client ile gelmektedir. SCP kurmak için:
# apt-get install openssh-client -y  (Debian/Ubuntu)
# yum install openssh-client -y      (RHEL/CentOS/Fedora/Suse) 

SCP Parametreleri
-p = Hedef port bilgisi girmek için
-q = Yüzdelik olarak gösterilen transferi disable eder. İşlem devam eder arayüzde görünmez.
-r = Klasörleri kopyalamak için kullanılır. Alt Klasörler Dahil
-c = Veri aktarımında şifreleme metodunu "-c blowfish cipher" olarak değiştirir. 
-i = Ortak anahtar kimlik doğrulaması veya özel anahtar (ssh key) dosyasını kullanmak için kullanılır.
-l = Bandwidth limitlemek için kullanılabilir. Kbit/s.
-v = Hata ayıklama iletilerini görüntüler.
-C = Sıkıştırmayı etkinleştirir.

SCP ile Sunucudan Farklı Bir Sunucuya Dosya Gönderme Nasıl?
scp -P 55 dosya.zip root@192.168.1.15:/home

SCP ile Sunucumuza Farklı Bir Sunucudan Dosya Alma Nasıl?
scp -P 55 root@192.168.1.15:/var/www/dosya.zip /home

SCP ile Uzak Sunucudan Klasör Alma Nasıl?
scp -r belgeler root@192.168.1.15:/var/www

SCP ile Çoklu Dosya Transferi Yapmak Nasıl?
scp -P 55 root@192.168.1.15:/home/\{belgeler.zip,kitaplar.tar.gz,notlar.rar\}

NOT: Varsayılanda scp ile veri aktarımı Triple-DES şifreleme metodu kullanır. Fakat daha performanslı olduğu savunulan Blowfish Cipher ile de kullanmak mümkündür. Bunun için "-c blowfish” parametresi kullanılır.

31 Mart 2017 Cuma

Ubuntu 16.10 üzerine Oracle XE 11g R2 ve Oracle Sql Developer Kurulumu

Merhaba, Bu makalemde Oracle Database Express Edition 11g Release 2 kurulumunu Ubuntu 16.10 (Yakkety Yak) üzerinde gerçekleştireceğiz. Ubuntu, Oracle belgelerine göre desteklenen işletim sistemleri listesinde değil. Mevcut Oracle XE 11g kurulum dosyası rpm (Red Hat Package Manager) türünde olduğu için Windows işletim sisteminde olduğu gibi next next - finish şeklinde kurulamıyor. Bu nedenle kurulum zor olmamakla birlikte belirli adımlar izlenerek gerçekleştirilebiliyor. Oracle Database Express Edition 11g  Release 2 tamamen ücretsizdir, projelerinizde telif hakkı problemi olmadan kullanabilirsiniz.

Oracle resmi web sitesinden kurulum için gerekli paketimizi ve uygun sürümü indirelim.

Download işlemi için Oracle Account hesabıyla login olmanız istenecektir. Eğer Oracle hesabınız yok ise https://profile.oracle.com/myprofile/account/create-account.jspx adresinden bir hesap oluşturabilirsiniz. Kurulum dosyamızı indirdikten sonra zip içerisinden çıkaralım ve sırasıyla aşağıdaki işlemleri ve komutları uygulayalım. 

Başlarken ilk yapmamız gereken rpm (Red Hat Package Manager) yapısındaki kurulum paketi dosyamızı Alien programcığı ile Debian paket türüne çevirmek olacak. Bu işlem için öncelikle Alien programcığını kuralım. Bunun için konsola aşağıdaki kodu yazın ve enter'a basın.

$ sudo apt-get install alien libaio1 unixodbc

$ sudo apt-get install alien libaio1 unixodbc
$ cd Downloads (Sizin download klasörünüz)
$ unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
$ cd Disk1 
$ sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm 
$ sudo gedit /sbin/chkconfig

chkconfig için scripti oluşturalım.

5 Şubat 2017 Pazar

Linux Dosya Sistemlerine Windows'dan Erişim Nasıl?

Merhaba
Bu yazımda Windows işletim sistemlerinde UNIX/LINUX Disk bölümlerine erişim için kullandığım küçük bir freeware (ücretsiz) yazılımdan bahsedeceğim.

Sizde Windows ve Linux'u çift önyükleme olarak birlikte kullanıyorsanız veya mevcut sisteminiz sadece Windows tabanlı bir işletim sistemiyse ve Unix/Linux disk bölümlerine sahip bir disk içeriğinden veri almanız yada okumanız gerekiyorsa ne yapabiliriz. Malum Linux üzerinde Windows NTFS veya FAT bölümleri için yerleşik destek çoğu dağıtımda mevcut olmayanlarda ise minik programcıklar vasıtasıyla sorunsuz ve güvenli bir şekilde mount edilip içeriğe erişilebiliyor ancak bu destek henüz Windows için sadece üçüncü parti yazılımlar ile yapılabiliyor. Benzer yazılımlar ile test tecrübelerim üzerinden DiskInternals firmasının üretmiş olduğu Linux Reader isimli minik bir yazılımın rahat ve hızlı bir şekilde bu ihtiyacımı karşıladığını deneyimledim. Bu küçük programcık Windows ve Ext2 / Ext3 / Ext4, HFS ve ReiserFS dosya sistemleri arasında bir tür köprü görevi görmekte. Erişilecek diskte aktif bir Linux kurulu olması durumunda program salt okunur erişim sağladığından dolayı dosya sistemi bölümlerinde kayıt yapmanıza izin vermeyecek ve mevcut Linux yapısını etkileyebilecek hiç bir değişiklik yapmadan istenilen disk bölümünden istenilen dosyaya erişim sağlanabilecek. Program kendi yapısında Windows Explorer benzeri bir yapıyla kolaylıkla dosya filtreleme ve istenildiğinde aktif çalışılan Windows disk alanına aktarım yapabilmemizi sağlıyor.

Desteklenen Dosya Sistemleri: 
Ext2/3/4, ReiserFS, Reiser4, HFS, HFS+ FAT, exFAT, NTFS, ReFS, UFS2 

Lisans: Freeware
İndirme sayfası için tıklayın

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