programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

16 Kasım 2007 Cuma

Görsel Yardımla Sıralama Algoritmaları

Sıralama Algoritmaları Max Nagl sıralama algoritmalarının nasıl çalıştığını görsel olarak görmemiz için bir Java apleti hazırlamış. Buradan ulaşabileceğiniz aplet ile 6 popüler sıralama algoritmasının nasıl çalıştığını adım adım görebilirsiniz.

Sağda gösterilen Java ve C++ kodları ile hangi satırın işlendiğini gösteren ve 200 elemanlı bir kümeyi işlemeyi sağlayan bir aplet.

Benzer işlevli bir diğer aplet ise hem görsel olarak sonuç veriyor hem de karşılaştırma ve kopyalama sonuçlarını. Timed mode'da ise dizi ve eleman sayısına göre farklı algoritmaların çalışma sürelerini hesaplıyor.

Sort Algorithms Visualizer isimli bu aplet ise 11 yöntemi birbiriyle eş zamanda çalıştırmaya olanak tanıyor.

Buradan çeşitli sıralama algoritmaların kodlarına ulaşabilirsiniz.

30 Temmuz 2007 Pazartesi

Modern Yazılımlarda Olmazsa Olmazlar

Yazılım teknolojilerinde nesiller atlandıkça yeni özellikler kullanıma sunulmakta. Bu özellikler yazılımın kalitesini artırmak için dikkat edilmesi gereken unsurlar.

Bu özelliklerin başında "yabancı dil desteği" geliyor. Artık çoğu program daha geniş kullanımın sağlamak için bu destek ile geliyor. İster yazılım şirketi için çalışan ister gönüllü çevirmenler bildikleri bir yabancı dilden programı kendi dillerine çeviriyor.

Çok önemli bir başka unsur "sistem kaynaklarının doğru" kullanılmasıdır. Gereğinden fazla hafıza ve işlemci kullanımı yanı sıra hatalı kodlama nedeniyle oluşan sızıntılar (leak) yazılımın çalıştığı platformda çok çeşitli performans sorunlarına neden olabilir. Örneğin işlemciyi sürekli meşgul edecek bir uygulama diğer uygulamaların düzgün çalışmasını engelleyebilir.

"Kullanıcı dostu arabirim" yazılımcıların en çok üzerinde durduğu ama bazen başarısız oldukları konulardan biri. Genel kullanıcıya yönelik yazılımlarda arabirim bir kullanıcı için kullanışlıyken diğeri için kullanışsız olabilir. Bu nedenle arabirimlerin esnek olması ve özelleştirilebilmesi çok önemli.

Arabirim konusunda değinilebilecek bir diğer unsur da değiştirilir arayüzlerdir. Bunlar kullanıcının kendini daha yakın bulduğu bir görünümü seçmesine olanak sağlar.

Bir çok konuda kısıtlı işlev sunmaktansa az konuda "uzmanlaşma" da günümüz yazılımları için önemli hale gelmektedir. Artık çoğu kullanıcı için programın ne kadar çok iş yaptığından çok bir işi ne kadar iyi yaptığı önemli hale gelmiştir. Konu üstüne uzman yazılım pek çok ayar seçeneği ile kullanıcının genelden çok özel ihtiyaçlarını karşılayabilir hale gelebilir.

"Düzenli güncelleme ve hata giderme" çağın gerçeklerinden biri. Bir yazılımın hatasız olması veya sürekli güncel kalması çok özel örnekler dışında mümkün değil. Hal böyle olunca güncellemeler ile eksiklerin ve hataların giderilmesi seçenekten çok zorunluluk haline geliyor.

"Kullanışlı yardım sistemi" kullanıcının takıldığı sorunları kolayca çözmesini sağlar. Yardım dosyaları program ile birlikte sunulabileceği gibi internet üzerinden de sunulabilir. Forum, veri bankası, çevrimiçi teknik destek gibi seçenekler ile kullanıcı memnuniyeti üst seviyede tutulabilir.

Programların kısıtlı kaldığı konularda gerek kullanıcının gerekse üçüncü partilerin yeni özellikler eklemek için ürettiği yan yazılımlara "eklenti" denilmektedir. Özelleştirmenin adımlarından bir eklenti sistemidir. Böylece kullanıcı programın belli başlı özelliklerini alıp farklı şekillerde kullanabilir. Basit bir örnek vermek gerekirse bir program toplama ve çıkarma işlemi barındırıyorsa kullanıcı özel eklentiler aracılığıyla bir kaç toplama ile bir kaç çıkarmayı aynı anda yapabilir.
Eklentiler uzmanlaşma konusunda da önemli rol oynar. Zira üreticinin genel kullanımda gerek olmadığı için derinlemesine girmesinin mümkün olmayacağı özellikler bu sayede kullanılabilir.

"Entegrasyon" farklı unsurların diğer unsurlar ile bütünleşik çalışması olarak adlandırılabilir. Yazılımda entegrasyona basitçe değinirsek bir programın diğer programların işlevlerini veya ürünlerini kullanabilmesidir. Bu bir yazılımın belli özelliklerini kendinde kullanmak olabileceği gibi bir yazılımın kullanacağı malzemeyi üretmek veya ürettiği malzemeyi kullanmak da olabilir.
Örneğin bir yazılım kendinde bir resim gösterici barındırmaz ama bu iş için konusunda özelleşmiş bir resim gösterim yazılımı kullanabilir.
Veya farklı formatlardaki resimleri başka programların kullanabileceği formatlara getirerek entegre olabilir.

14 Temmuz 2007 Cumartesi

Voronoi Diyagramı


Yukarıda bir örneğini gördüğünüz Voronoi Diyagramı, birbirinden bağımsız bir küme elemanlarının (S)birbirileriyle olan uzaklıklarını ifade ediyor. İsmini veren Georgy Voronoi'den çok önceleri de kullanılsa da üzerinde araştırmalar yapan kişinin adını almıştır. Noktaları kapsadığı alana Voronoi hücresi adı da verilir.

Şekilde gördüğümüz noktalar diğer noktalar ile ilişkili olarak belirli bir alanı kaplıyor. Bu alan noktaların birbirine göre düzgün bir şekilde dağılmasıyla oluşuyor. Bir noktayı çıkartırsak o noktaya komşu tüm noktaları çevreleyen alanlar değişiyor.
Bu diyagram pek çok alanda kullanılır. Örneğin Thiessen poligonu adıyla, bir alanda toplanan yağmur miktarını ölçmekte kullanılır. Orta noktalar ölçüm istasyonu olup, ölçümlerin kapladıkları alana göre ağırlıklı ortalamasının alınmasıyla ölçülür.
Bu diyagramı el ile yapmak isterseniz, iki noktanın ortasından geçen normalleri çizerek yapmanız mümkün.
Ancak bunun için geliştirilmiş algoritmalar mevcut.
2B üzerinde çalışan ve istediğiniz noktaları üretebildiğiniz Fortune algoritması ile çalışan bir örnek görmek için tıklayın.
Sayfanın en altındaki aplet üzerinde CLEAR tuşun bastıktan sonra istediğiniz noktaları beyaz bölgeye tıklayarak ekleyin. RESUME dediğinizde diyagram çizimi canlı olarak başlayacak.