Ö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