5. HAFTA Mart 2016
Discussion: comp.soft-sys.matlab An unmoderated newsgroup that focuses on the software package Matlab.
if … …. else if … … elseif… … elseilf… … end % DENEME 8: “girilen notlardan harfli notun bulunması’ not=input(‘1 ve 100 arasında bir not giriniz= '); if not<=0 disp(‘lütfen 1 ve 100 arasında bir not giriniz') not=input(‘1 ve 100 arasında bir not giriniz= '); else if not>=81 harfli_not='AA' elseif (not>=76 & not<=80) harfli_not ='BA' elseif (not>=70 & not<=75) harfli_not ='BB') elseif (not>=60 & not<=69) harfli_not ='CB'; elseif (not>=50 & not<=59) harfli_not ='CC'; elseif (not>=45 & not<=49) harfli_not ='DC' elseif (not>=40 & not<=44) harfli_not ='DD' elseif (not>=30 & not<=39) harfli_not ='FD' elseif (not>=1& not<=29) harfli_not ='FF' end
% DENEME 16: a=10;b=2;x=1;y=4; c(1)=(a+b)*a/(x+y); c(2)=2*a*x^2+x^2*y^2; c(3)=sqrt(a^2-4*x*y)/(2*a); c(4)=a/(a+b)^3+(b*x^2)/y; c(5)=1/3*x+2/7*y+16*a^2*b; c(6)=(3*x^2*y+sqrt(a+b))^(1/3) ; c(7)=x/(a+b/sqrt(y)); c(8)=1+1/(1+1/(1+1/(1+1/x))); d=c'; % DENEME 16: a=input(‘a için sayı giriniz=’) b= input(‘b için sayı giriniz=’); x=input(‘x için sayı giriniz=’) y= input(‘y için sayı giriniz=’); c(1)=(a+b)*a/(x+y); c(2)=2*a*x^2+x^2*y^2; c(3)=sqrt(a^2-4*x*y)/(2*a); c(4)=a/(a+b)^3+(b*x^2)/y; c(5)=1/3*x+2/7*y+16*a^2*b; c(6)=(3*x^2*y+sqrt(a+b))^(1/3); c(7)=x/(a+b/sqrt(y)); c(8)=1+1/(1+1/(1+1/(1+1/x))); d=c';
switch-case yapısı switch-case (değiştir-durum) yapısı, yukarıda gördüğümüz if, else ve elseif yapılarının kullanımına bir alternatif getirir. Aslında switch- case ile yapılan herşey if yapılarıyla da yapılır ama switch-case ile yazılan programlar daha okunabilir bir özelliğe sahiptir. Genel formatı Giriş ifadesi, her bir case değeri ile karşılaştırılır. Her bir case değeri ayrı bir satırda olmalıdır. switch giriş ifadesi (skaler veya karakter dizgesi) case ifadesi deyim grubu-1 case ifadesi deyim grubu-2. otherwise deyim grubu-n end
Örnek: sindeg.m adlı bir dosyada, girilen bir açı değerinin hangi bölgede olduğu ve sinüs değerinin ne olduğunu bulmak için aşağıdaki kodu giriniz. angle=input('Bir aci giriniz: '); switch fix(angle/90) case 0 disp('I. Bolge ve pozitif') case 1 disp('II. Bolge ve pozitif') case 2 disp('III. Bolge ve negatif') case 3 disp('IV. Bolge ve negatif') otherwise disp('0 ile 360 arasinda bir deger giriniz') end
For Döngüsü Bir çok uygulamada belirli işlemlerin tekrar tekrar gerçekleştirilmesi gerekir. Programlamada bu işlemler grubunu çok sayıda tekrar etmek imkanı sağlayan yapılara ÇEVRİM, DÖNGÜ veya LOOP denir. Çevrim, bir tekrarlı işlem yapısıdır. Çevrimdeki işlem sayısını önceden belirleyerek ve bu sayıya ulaşıp ulaşmadığını bir sayaç ile denetleyerek gerçekleştirilen çevrim yapıları Çevrimin sona ermesini bir koşula bağlı olarak kontrol eden çevrim yapıları Genel Kullanımı: for k=başlangıç:adım:son komutlar end
for döngüsü ile yineleme Örnek 1: Aşağıdaki program döngü içindeki hesaplamayı 5 kez yürütür. y'nin ilk değeri 1 olsun. y(1)=1 for i=2:6 y(i)=2*y(i-1); end
Örnek 2: 3X4'lük bir matrisin elemanları şu formüle göre hesaplansın; for döngüsü ile yineleme m=3; n=4; for i=1:m for j=1:n A(i,j)=1/(i+j-1) end
Örnek 3: k=1 for n=0:0.2:1 x(k)=n; f(k)=n*n; k=k+1 end Bu koda f(x)=x2 fonksiyonu [0,1] aralığında ve 0.2 ile artan tüm değerler için çalışıyor. Alternatif gösterim f=x.*x
While Döngüsü Önceden belirlenmiş belli bir durum gerçekleşinceye kadar gereken sayıda tekrar edilen ifadeleri içerir. Genel Kullanımı: while durum ifade_1 ifade_2 ….. ifade_n end
Örnek 1: Bu örnekte ilk değeri 3.14 olan bir q değişkeninin değeri, 0.01’den küçük olana kadar sürekli olarak yarılanır. Burada q’nun sondan bir önceki değeri olan , 0.01’den büyük olduğu için döngünün içindeki komut son kez yürütülmüş ve q, bulunmuştur. q’nun son değeri 0.01’den küçük olduğundan döngü içindeki komut bundan sonra yürütülmemiştir q=pi; k=0 while q>0.01 q=q/2 k=k+1 end
a=5 while a<10 a=a+1 end Örnek 3: Ekrana bir ifadeyi 10 kez yazan bir programı WHILE döngüsü kullanarak yazınız. a=0 while a<10 a=a+1; disp(‘Harita Mühendisliği Bölümü') end Örnek 2:
Örnek 4: y=zeros(1,2) x=[2 3] while x>=0 y=y+x x=x-1 disp(y) end Çıktısı;
try…catch a=3 try x=5*a y=3*b catch z=a^2 end try…catch arasındaki ifadelerden x=5*a ifadesinde kullanılan a değişkeni, önceden tanımlanmıştır. Bu yüzden ifade, aynen işletilir. Bu deyimler arasındaki diğer bir ifade olan y=3*b önceden tanımlanmamış bir b değişkeni bulundurduğu için MATLAB bu noktadan itibaren catch ile end arasındaki ifadelerin işletilmesine geçer. Eğer try—catch arasında sadece x=5*a ifadesi bulunuyor olsaydı MATLAB asla catch--- end arasındaki ifadeleri işletmeyecekti.
fprintf Fonksiyonu Genel kullanımı: fprintf(‘ekrana basılacak açıklama %f \n’, deger) Burada %f : Değerin reel sayı olduğunu gösterir \n : Bir satır atlatır deger : Ekrana yazılması istenen sayısal değişkenin adı Diğer yazım biçimleri: %g : Tamsayı değeri basar %e : Üstel değer basar
Örnek 1: >>fprintf(‘pi sayisi = %5.2f \n\n ‘, pi) SONUÇ: pi sayisi = 3.14 Açıklama: %5; eşitlikten sonraki boşluğu (5 karakter).2f; ondalık hane sayısını (2 hane) \n; yazının altındaki boşluğu (2 satır) belirlemektedir.
Örnek 2: fprintf('Döngünün başı\n'); for i = 4:-1:1 fprintf('MERHABA i = %g\n',i); end fprintf('\n Döngünün sonu.\n'); for a=1:10 for b=1:10 carpim=a*b; fprintf(' %d * %d = %d\n ', a, b, carpim) end Örnek 3:
DENEME 9: programı alternatif yapı ile yeniden yazma if number==1 | number==3 | number==5 | number==7 | number ==9 ‘tek sayı' elseif number==2 | number==4 | number==6 | number==8 | number ==10 ‘çift sayı' else ‘sayı 1 ile 10 arasında değildir' end
DENEME 11: programı alternatif yapı ile yeniden yazma for i=1:5 a=a+1 end
DENEME 14: daha fazla uygulama for i=1:2 for j=1:3 A(j,i)=1/(i+j+1) end
% DENEME 16: a=10;b=2;x=1;y=4; c(1)=(a+b)*a/(x+y); c(2)=2*a*x^2+x^2*y^2; c(3)=sqrt(a^2-4*x*y)/(2*a); c(4)=a/(a+b)^3+(b*x^2)/y; c(5)=1/3*x+2/7*y+16*a^2*b; c(6)=(3*x^2*y+sqrt(a+b))^(1/3); c(7)=x/(a+b/sqrt(y)); c(8)=1+1/(1+1/(1+1/(1+1/x))); d=c'; % DENEME 16: a=input(‘enter a’) b= input(‘enter b’); x=input(‘enter x’) y= input(‘enter y’); c(1)=(a+b)*a/(x+y); c(2)=2*a*x^2+x^2*y^2; c(3)=sqrt(a^2-4*x*y)/(2*a); c(4)=a/(a+b)^3+(b*x^2)/y; c(5)=1/3*x+2/7*y+16*a^2*b; c(6)=(3*x^2*y+sqrt(a+b))^(1/3); c(7)=x/(a+b/sqrt(y)); c(8)=1+1/(1+1/(1+1/(1+1/x))); d=c';