Algoritma Örnekleri – 1

Problem: 1’den 10’a kadar sayan sayaç ve kullanıcıdan alınan x(sınır değer) değeri ile x+(i*2)^2 kuralı ile tanımlanan s değerlerini hesaplamak ve her biri için asal olup olmadığını kontrol etmek. Bulunan asal sayıların toplamını ve kaç tane olduğunu ekrana yazdırmak.
(Örnek:
x:5, bulunan asal sayı:2 asal sayıların toplamı:190
x:8  bulunan asal sayı:0 asal sayıların toplamı:0)

x2

static void Main(string[] args)
        {
            int i, x, m, s = 0;
            int toplam_asal = 0, sayi_asal = 0;
            Console.WriteLine("Deger giriniz:");
            x = Convert.ToInt32(Console.ReadLine());
            for (i = 1; i <= 10; i++)
            {
                s = x + (i * 2) * (i * 2);
                for (m = 2; m < s; m++)
                {
                    if (s % m == 0)
                    {
                        break;
                    }
                    if(m==s-1)
                    {
                        toplam_asal = toplam_asal + s;
                        sayi_asal = sayi_asal + 1;
                    }
                }

            }
            Console.WriteLine("Deger:" + x + "Bulunan asal sayi: " + sayi_asal + "Toplam:" + toplam_asal);
            Console.ReadLine();
        }
    }

Dijkstra Algoritması ile En Kısa Yol Bulma

Dijkstra Algoritması, graflar içinde birbirine bağlı düğümler arasında gidilebilen en kısa yolu bulmayı amaçlar. Algoritma, İnternet ağ trafiği protokolünü yönlendiren OSPF (Open Shortest Path First) protokolünde, oyun programlamada, ulaşım ağlarında kullanılır.

Algoritmanın Çalışması

1. Kaynak düğüm belirlenir. Kaynak düğümden gidilebilen diğer diğer düğümler seçilir.

2. Bu düğümlerden en az maliyete sahip olan işaretlenir, diğerleri aynı bilgiyle devam eder. Seçilmemiş düğümler için maliyet sonsuz olarak işaretlenir.

3. İkinci adımda seçilen maliyeti en az olan düğümden gidilebilen düğümler arasında aynı işlem uygulanır. Sonsuz işaretlenen düğümler bitinceye kadar devam edilir.

Bu grafta A düğümünden diğer düğümlere giden en kısa yolu Dijkstra algoritmasıyla bulalım. Dikkat edilecek nokta; önceden işaretlenmiş düğümler için daha kısa mesafeye bakılmaz. Seçim her zaman işaretlenmemiş düğümler arasında yapılır. Örneğin K’ya giden yol J ve I düğümlerinden daha kısa görünürken önceden işaretlenmediği için değiştirilmiştir.

AA

Bu tabloyu çıkardıktan sonra A ve düğümler arası gidilen en kısa yol bulunabilir. Örneğin A – H arası gidilebilecek en kısa yol, tabloya göre A-C-F-E-H yolu izlenerek toplamda 2+1+1+2 olmak üzere 6 birim olduğu görülür.

Anti-pattern Nedir?

Bir yazılım mühendisliği kavramı olan anti-pattern, kullanışsız çoğu zaman hatalı sonuçlar doğuran, yanlış geliştirilmiş çözümlere denir. Genellikle doğru olduğu düşünülerek gerçekleştirilen  ve tecrübe eksikliğinin temel neden olduğu bu hatalar, projelerin başarısızlıkla sonuçlanmasına yol açar. Anti-pattern’lerin en büyük tehlikesi, davranışın ya da çözümün ilk etapta doğru olduğunun düşünülmesidir, bu durum sorunların uzun vadede ortaya çıkmasına neden olur.

Bir çok kaynakta dark pattern, pitfall olarak da geçen bu kavram, Bell Labs programcısı Andrew Koenig‘in C Traps and Pitfalls adlı kitabında bahsetmesiyle yaygınlaştı. Sadece yazılım alanında değil, iş süreçleri ve analizi, proje yönetimi gibi bir çok alanda kullanılan genel bir kavram haline gelmiştir. Aşağıda bazı anti-pattern’ler örnek olarak verilmiştir.

Continue reading “Anti-pattern Nedir?”