23 Mayıs 2013 Perşembe

MATLAB-Break komutu

Öyle bir komuttur ki bazen ne yapacağınızı? Hatanın neden kaynaklandığını bulamayabilirsiniz. Bunun sebebi "Break" komutunu kullanmamanızdır.

Örnek olarak bir diziniz olsun. Dizinizdeki bir eleman sorgulanıyor ve bulunduğunda 10 sayısını dönderiyor bulamaz ise 0 sayısını döndermesini istiyorsunuz. 

Dizi
1. elemanı  : A
2. elemanı  : B
3. elemanı  : C

Ana Programdan fonksiyonu  

deger=Bul(Dizi,'A') 

şeklinde çağıralım. Normalde Dizi içinde A olduğundan değerin 10 olması gerekirken maalesef 0 diye gözükecektir. Bunun sebebini irdeleyelim ...


function a=Bul(Dizi,Str)

uz=length(Dizi)

for i=1:uz

     if strcmp(Dizi(i),Str) = = 1
        a=10
     else
        a=0
     end

end


fonksiyonu yukarıdaki gibi ise analiz ettiğimizde :

uz=3


i=1 için Dizi(1) =A? Adır o halde a=10 olacaktır. Yalnız döngü daha bitmedi ...

i=2 için Dizi(2) =A? A değildir o zaman a=0 olacaktır. Yalnız döngü daha bitmedi ...

i=3 için Dizi(3) =A? A değildir o zaman a=0 olacaktır. Döngü sona erdi. 

Şu anda a değeri kaçı göstrerir sorusuna , 0 cevabını vereceğiz. Bu basit örnekte bile işleri karıştıran olguda istenilen bulunduğunda döngüden çıkılması yani döngünün kırılması gerekmektedir. Bu yüzden Break komutunu if bloğu içinde a=10 sayısından hemen sonra kullanmamız gerekecektir.


Önceki durumda çalıştığında 

deger=Bul(Dizi,'A')



function a=Bul(Dizi,Str)
uz=length(Dizi)
for i=1:uz
     if strcmp(Dizi(i),Str) = = 1
        a=10
     else
        a=0
     end
end

deger=0

Sonraki durumda break komutu eklenince çalıştığında 

deger=Bul(Dizi,'A')


function a=Bul(Dizi,Str)
uz=length(Dizi)
for i=1:uz
     if strcmp(Dizi(i),Str) = = 1
        a=10 
        break
     else
        a=0
     end
end


deger=10


Hiç yorum yok:

Yorum Gönder