Sol üstteki geri simgesine ← tıklayarak Ana Sayfaya dönebilir, menü simgesine ☰ tıklayarak OkanNotlar hakkında bilgilere ulaşabilirsiniz.

Pisagor Teoremi - Algoritma


Dim Genişlik As Double
Dim Yükseklik As Double
Dim Birim As Double
Dim Hipotenüs As Double

Birim = 1
Hipotenüs = 5

Genişlik = 0
Do
    Genişlik = Genişlik + Birim
    Yükseklik = 0
    Do
        Yükseklik = Yükseklik + Birim
        txtÖlçülen.Text = Genişlik & " " & Yükseklik
        If Genişlik ^ 2 + Yükseklik ^ 2 = Hipotenüs ^ 2 Then
            txtGUyanlar.Text = txtGUyanlar.Text & " " & CStr(Genişlik)
            txtYUyanlar.Text = txtYUyanlar.Text & " " & CStr(Yükseklik)
        End If
        DoEvents
    Loop Until Yükseklik >= Hipotenüs
Loop Until Genişlik >= Hipotenüs



Bir şeyin ölçümünü yapmak Pisagor teorimini kullanmıştım. Başlangıçta Hipotenüs değişkenine 5, Birim değişkenine 1 verdiğimizde algoritma gayet güzel işliyor. Genişlik'i 4, Yükseklik'i 3 buluyor – ve tam tersini. Birim'e 0.01 değerini de versek aynı sonuca ulaşacağını düşünebiliriz. Sadece daha çok sayıyı ölçeceğinden daha uzun sürecektir. Ama iş burada ilginçleşiyor. Garip bir şekilde Genişlik'in değeri virgülden sonra en fazla 2 haneli sayılar olması gerekirken “2,1234...” diye gidebiliyor. Bağıntıyı sağlayan 3,4 rakamlarını da bulamıyor. Birim'e 0.01 yerine 0.5 verirsek algoritma yine beklendiği gibi çalışıp doğru sonuçlara ulaşabiliyor.

Visual Basic'i yıllardır kullanırım. Daha önce Visual Basic'in mantık hatası yaptığını hatırlamıyorum.:-) Bu algoritma daha büyük bir yazılımın parçası olabilirdi. O yazılım bu algoritmadan dolayı yanlış hesap yapabilirdi. Gerektiği gibi çalışmamasına neden olabilirdi. Yazılımcıları sorunun nereden kaynaklandığını uzun süre fark edemeyebilirlerdi. Çünkü bu basit algoritma ilk bakışta gayet normal görünmektedir. Hatalı çalışacağına dair bir şey belli etmemektedir. Dolayısıyla sorunun aranacağı ilk yer olmayacaktır. :-)

Visual Basic yazılımcıları algoritmayı denemek isterlerse diye buraya aldım. Visual Basic'in bu mantık hatasını yapmasına neyin neden olduğu merak konusudur. Ne tür bir iç işleyişin sonucunda mantık hatası yapıyormuş gibi görünüyor! :-)

Yorumlar

Bu blogdaki popüler yayınlar

Davranışlarını Cilalamak Zorunda Olmak - Sahne

"Yapay zekanın bilinçli olması neden düşük bir ihtimal" Başlıklı TED Konuşmasına Bir Eleştiri - Teknoloji

Bitkilerimizi Güncellemeye Hazır mısınız! - Bilim

Kansere Çözüm Mümkün mü?! - Teknoloji

Yapay Zekâ Balonu Patlamak Üzere mi? - Konferans

Yaşlanmamak Mümkün Olabilir mi! – Bilim

Yeniden Gençleşmek Mümkün Olabilir mi! – Bilim

Google Gibi Reklam Yayınlamak - Sahne

Yaşlanma Tersine Çevrilebilir mi? - Konferans

Bilincin Gizemi - Bilim