23 Aralık 2013 Pazartesi

Çalışan Ama Doğru Sonuçlar Üretmeyen MATLAB Programlarında Hataların Ayıklanması

Yazdığımız bilgisayar programları bir hata nedeniyle ya hiç çalışmazlar ya da çalışırlar ama beklediğimiz sonuçları/çıktıları üretmezler. Bir hata vererek çalışmayan MATLAB programlarındaki sorunların giderilmesine yönelik yapılabilecekleri irdeleyelim. çalıştığı halde içerdiği mantıksal (geliştirilen veya bilgisayar programına dönüştürülmüş algoritmadan, döngü değişkeninin sınır değerlerinin yanlış belirlenmesinden, if veya while deyimlerinde kullanılan koşulların yanlışlığından kaynaklanabilecek vs.) hatalar yüzünden beklenilen sonuçları üretmeyen programlarda sorunun kaynağını bulmanın standart ve kolay bir yolu maalesef yoktur. Bu tür durumlarda hata ayıklama (debugging) adı verilen işleme başvurulur. MATLAB'in de metin düzenleyicisi penceresi üzerinden bizlerin kullanımına sunduğu bir hata ayıklama modu mevcuttur. Bu mod, bizlerin programımızın herhangi bir satırına bir kesme noktası (breakpoint) koyabilmesine imkan tanır. Programın kesme noktası konulan satırı öncesindeki bölümü bilgisayar tarafından işletilir ve kesme kesme noktasına ulaşıldığında kontrol bilgisayar tarafından kullanıcıya devredilir. Kontrolü devralan kullanıcı ise programı satır satır işletir, işletilen herhangi bir satır sonrası program akışının nereye kayacağını ve hangi sonuçlar üretileceğini not alır. Nihayetinde o satırı sanki kendisi MATLAB yorumlayıcısıymış gibi işletir ve gerçek durumla beklentilerini karşılaştırarak sorunu bulmaya çalışır. Kullanılan bu hat ayıklama yöntemi, aynı zamanda nasıl çalıştığını veya kodlandığını tam olarak anlayamadığımız programlarla ilgili bizlere ipuçları verme noktasında de oldukça faydalıdır. Şimdi MATLAB ile hata ayıklamanın nasıl yapılabileceğini adım adım öğrenelim:
ADIM 1: İçerisindeki hataları açıklayacağınız programı düzgün çalışma dizini penceresi üzerinde çift tıklayarak açınız.
ADIM 2: Programınızın metin düzenleyicisi penceresi üzerinde açıldığından emin olunuz.
ADIM 3: Çalışma Alanı penceresinin açık olduğundan emin olunuz.
ADIM 4: Komut penceresinde clear komutunu çalıştırarak Çalışma Alanı penceresini temizleyiniz, yani tanımlı bütün değişkenleri bellekten siliniz.
ADIM 5: Komut penceresinde clc komutunu çalıştırarak komut penceresini temizleyiniz.
ADIM 6: Metin düzenleyicisi penceresinin sol tarafında programın satır numaraları yer alır. Kontrolü devralmak istediğiniz satırın satır numarasının sağındaki tire karakterini (-) tıklayınız ve onun içi dolu kırmızı bir yuvarlağa dönüşmesini sağlayınız.
ADIM 7: Komut penceresine gidiniz ve programınızı çalıştırınız. Komut penceresindeki >> sembolünün K>> formuna dönüştüğünü göreceksiniz. Bu sizin başarıya hata ayıklama moduna geçtiğinizin işaretidir.
ADIM 8: Kesme noktasında bilgisayar tarafından size devredilen kontrolü ele alınız ve F10 tuşu sayesinde adım adım ilerleyiniz. (Alt programlar içerisinde dallanmak için F11'i kullanınız.)
ADIM 9: Kesme noktasının yanında yeşil bir okun varlığına ayrıca dikkat ediniz ve F10 tuşuna bastığınızda bu yeşil okun program akışına göre yeni pozisyonuna ilerlediğini göreceksiniz.
ADIM 10: F10 tuşuna basmadan önce bu okun nerede olduğuna dikkat ediniz ve F10 tuşuna bastığınızda hangi satıra gideceğini kestirmeye çalışınız.
ADIM 11: Çalışma Alanı penceresi üzerinde var olmayan bir değişkenin sırası geldiğinde nasıl sıfırdan oluşturulduğuna ve var olanın değerinin ise nasıl güncellendiğine dikkat ediniz. Farenizi programınızda bir değişkenin üzerine taşıdığınızda onun mevcut değerinin ekranda göründüğünü test ediniz.
ADIM 12: İşiniz bittiği zaman programınızdaki kesme noktasını (içi dolu kırmızı yuvarlağı) bir kez tıklayınız ve onun yerine tire (-) karakterine dönüştürünüz.
ADIM 13: Komut penceresi üzerinde return komutunu çalıştırınız ve hata ayıklama modundan çıkınız. Böylece K>> sembolünün yeniden >> haline dönüştüğünü göreceksiniz.

20 Aralık 2013 Cuma

switch-case YAPISI İLE ÇOKLU SEÇİMİN KOLAYLAŞTIRILMASI

switch-case yapısı sayesinde bir değişkenin farklı değerleri için ayrı ayrı işler yapabilmek oldukça kolay hale gelir. switch-case kullanılarak yazılan herhangi bir bilgisayar programı aslında if-elseif-else-end (elseif sayısı genelde birden fazladır.) ile de gerçekleştirilebilir olsa da programımızı daha okunabilir ve anlaşılabilir kıldığı için genellikle tercih edilen switch-case yapısıdır. Aşağıda bu durumu özetleyen iki örneğe yer verilmiştir:


Yukarıdaki iki örnek input komutuyla kullanıcıdan klavye yoluyla alınacak herhangi bir karakterin (input komutuna verilen 's' parametresine dikkat ediniz.) MATLAB'de tanımlı bir aritmetik operatör olup olmadığını iki farklı yolla tespit etmek için verilmiştir. if-elseif-else-end versiyonunda eşitlik testini gerçekleştiren == operatörünün solunda yer alan değişken switch-case versiyonunda switch anahtar kelimesinin sağında yer almıştır. Öte yandan if-elseif-else-end versiyonunda her bir eşitlik testinde == operatörünün sağında yer alan ifadeler switch-case yapısında case anahtar kelimesinin sağında kullanılmıştır. switch-case yapısında kullanılan otherwise anahtar bir kelimedir, if-elseif-else-end versiyonundaki else-end bloğuna karşılık gelir ve case ile teste tabi tutulmayan bütün durumları karşılamak üzere kullanılır. switch-case yapılarında her bir switch anahtar kelimesine karşılık bir end anahtar keşlimesi muhakkak kullanılmalıdır.