Bağlantılı Öğeler
Son Yorumlar
- En Kısa Yol Algoritması (10)
- Montaj hattı dengeleme (Konum Ağırlıklı Dengeleme Metodu) (3)
- PHP de Güvenlik Kodu Uygulaması (6)
- Goalunited İçin Saha Yerleşim Hesaplayıcı (12)
- Sıralama Algoritmaları (4)
- Bumerang Web Sitesi ve Blog Ödülleri Başlıyor! (1)
- Rubik Küp Çözümü (1)
- GoalUnited Rehberi (7)
Kimler Sitede
Şu anda 11 ziyaretçi çevrimiçiBağış
| Futbol Ligi Sıralama Algoritması |
| Makale - Visual Basic | |||
| Yazar ugokhan | |||
| Pazartesi, 08 Ekim 2007 17:18 | |||
|
Okullarda bilgisayar programlama derslerinde her zaman hocalar bu soruyu sormuştur. 18 takımlı bir futbol liginde takımları gerçek futbol kurallarına göre dizmek. Bir çok öğrenci bunu en başta kolay zanneder. Alt tarafı bir sıralama işlemi der. Bu kısmen doğrudur. Ama işler başladığında bunun çok da kolay olmadığı görülür. Şimdi 18 takımı sıralamadan önce gerçek futbol kuralları nelerdir kısaca bir hatırlayalım.
DİZİ TANIMLAMAKŞimdi aklımıza hemen bir dizi oluşturmak gelmiş olabilir. Diziyi aşağıdaki gibi tanımlayalım.
Genelde ilk akla gelen uygulama budur. Her özellik için ayrı bir dizi oluşturulur ve aynı indisli veriler aynı takıma ait olan verilerdir. Örnek:
Bu şekildeki bir mantık doğrudur fakat çok hantaldır. Özellikle sıralama işlerinde diziler karışır ve gereksizce fazla kod yazılır. Kodların takibi ve düzeni arapsaçı gibi olur. Çoğu kişinin hata yaptığı nokta doğru dizi mantığı kuramamaktadır. Şimdi bu iş için örnek bir dizi tanımı yapalım. TYPE yapısı oluşturarak birden çok değişkeni tek bir özellik altında gruplayabiliriz. Bu sayede bir nesnenin özelliklerini oluşturmuş oluruz.
Bu sayede tek bir diziye değişik özellikler eklemiş olduk. Artık bu diziyi bir nesne gibi kullanabiliriz. Yukarıdaki kodları proje içerisinde bir module içine yazın. Böylece tüm proje içerisinde kullanabilirsiniz. Takim dizisine nasıl bir özellik kattığımızı aşağıda görebilirsiniz.
Artık dizimiz tek bir isim altında değişik özelliklere sahip olarak oluşturuldu. Yani nesne modelli programlamanın bir avantajını kullanmış olduk. Program başlarken sadece Erase Takim komutunu kullanarak diziyi resetleyebilir. Daha sonra istediğiniz bir yöntemle takimlar hakkındaki bilgileri Takim dizisi içerisine yazabilirsiniz. Bu konuda istediğiniz uygulamayı yapabilirsiniz. Ben örnek programımda bir text dosya içerisine maç skorlarını yazdırıp yine aynı dosyadan gerekli bilgileri okutturdum. İsteyen veritabanı da kullanabilir. SIRALAMA MANTIĞIFutbol kurallarına göre bir algoritmik akış şeması oluşturalım. Akış şeması biraz uzun olduğu için Burayı Tıklatarak ayrı bir pencerede algoritmasını görebilirsiniz. Sıralama işlemi için birkaç sub programı tanımlayalım. Bunlar bizi her defasında benzer kodları yazma derdinden kurtaracak. Aynı zamanda daha anlaşılabilir bir kod düzeni sağlayacak. İlk Sub'ımız a ve b indisli takımları yer değiştirmekle ilgili.
Gördüğünüz gibi a ve b indisli takımları yer değiştirmek ne kadar kolay. Eğer bir sürü dizi tanımlasaydık gereksizce fazladan kod yazacaktık. Devam edelim. Eğer proje içerisinde tablo olarak MSHFlexGrid kullanacaksanız aşağıdaki kod işinize yarayacaktır. Bu kod modül içerisindedir ve anaform adlı form üzerinde bulunan bir MSHFlexGrid nesnesine değer yazar. Obje değeri için anaformdaki MSHFlexGrid nesnesinin adını yazmalısınız. Bunun kullanılmasının anlamı, anaform üzerinde birden fazla MSHFlexGrid kullanıyorsanız nesne ismini yollayıp istediğiniz tabloya yazdırma işlemi yaptırabilmenizdir.
Bu Sub ise seçilen bir takıma puan vermek için kullanılır. Özellikle maçların sonuçlarını değerlendirirken işinize yarayacaktır.
' Örnek Kullanım-1 : Galatasaray, Gençlerbirliği'ni 4-1 yendiyse
Örnek Kullanım-2 : Real Madrid, Barcelona 2-2 berabere kaldıysa
Yukarıdaki 3 Sub program ile birçok işi zahmetsizce yapabiliriz. Şimdi sıralamaya geçelim. Bir Command butona bastığımızda sıralama işlemi başlamış olsun. Aşağıdaki kodları bir Command butonun Click yordamına yazın.
İşte bütün sıralama işlemi bu kadar. Burada kullanılan sıralama algoritması EXCHANGE SORT (Yerdeğiştirme Sıralaması) olarak bilinen algoritmadır. Eğer dikkat ettiyseniz, "Sıralamada alttaki takımın puanı, Üstteki takımın puanından büyükse değişiklik yap" diye bir kontrol var. Sadece bu kontrol bize yeter. Çünkü üstteki takımın puanı büyükse zaten yer değiştirmeye gerek yoktur. Bir de puan eşitliği olayı var. Eğer seçilen 2 takımın puanı eşitse, konunun en başında anlattığım futbol ligi sıralama kurallarına göre tek tek kontrol yapılması gerekir. Bu kontroller KendiMaclari adlı Sub program içerisinde yapılmaktadır. İşte bütün olayı gerçekleştiren ana sub programı burası.
Bu hazır Sub programlarını, kendi programınız içerisinde kullanabilirsiniz. Görüldüğü gibi TYPE yapısıyla doğru şekilde dizi tanımlayınca işlemler çok basite indirgenmektedir. Programlarım sayfasından Futbol-Ligi adlı projeyi indirip kodlarda eksik kalan kısımlara bakabilirsiniz.
|

Yorumlar
Programlarım sayfasına girerseniz orada bu programı görebilirsiniz. Zaten yukarıda da belirttim bunu. Zip şifresi gokhanca.com olacak.
RSS beslemesi, bu iletideki yorumlar için.