310 likes | 543 Vues
M ATLAB ’ de P rogramlama Hafta: 6. MATEMATİKSEL VE MANTIKSAL OPERATÖRLER.
E N D
MATLAB’ de Programlama Hafta: 6 1 Ayrık Yapılar Matlab Notları
MATEMATİKSEL VE MANTIKSAL OPERATÖRLER Program dallandıran bir çok yapıda, işlemler, sonucun "doğru" (1) veya "yanlış" (0) olması durumları ile kontrol edilir. MATLAB' da 'doğru' veya 'yanlış' ifadeleri ile sonuçlar üreten iki çeşit operatör vardır. Bunlar matematiksel ve mantıksal operatörlerdir. Matematiksel Karşılaştırma Operatörleri Bu operatörler iki değişkenin değer bakımından karşılaştırmasını yaparlar ve üretilen sonucun doğru (1) veya yanlış (0) durumuna göre sonuçlar üretirler. Genel kullanımları a1işlema2 şeklindedir. Burada a1 ve a2, aritmetik değerler, değişkenler veya karakter dizileri olabilir, "işlem" ise, söz ettiğimiz matematiksel kıyaslama operatörlerinden biri olabilir. Eğer a1 ve a2 arasındaki ilişki operatörün belirttiği şekilde ise işlem, 1 değerini alır. Eğer operatörün belirttiği durumdan farklı bir durum söz konusu ise işlem 0, değerini alır. 2 Ayrık Yapılar Matlab Notları
Eşitlik durumlarında verilen işaret iki adet eşittir "==" işaretinden oluşur. Oysa değişken atamalarında kullandığımız eşittir "=", bir tanedir. Bu ikisi birbirlerinden farklı operatörlerdir. "==" operatörü, kıyaslama durumlarında kullanılır ve mantıksal bir sonuç üretir. "Eşit ise", "eşit midir?" şeklindeki durumlarda kullanılır. "=" işareti ise, bir değişkene bir değer atamada kullanılır, örneğin MATLAB komut penceresinde; 3=5 yazdığımızda; program hata üretir. Oysa 3==5 yazdığımızda bu “ 3, 5'e eşit midir? " anlamına gelir, kıyaslama yanlıştır ve MATLAB bu durum için “0” cevabını üretir. Yeni başlayanlar için bir karşılaştırma durumunda tek eşittir "=" işareti kullanmak, sık yapılan bir hatadır. >> 3 = 5 ??? 3=5 ! Error: Missing operator, comma, or semicolon. >> 3==5 ans = 0 >> x=0; >> y=sin(pi); şeklinde yapılan iki değişken atamasını takiben yapılan x==y karşılaştırmasının sonucu olarak 1 cevabı beklenirken, 0 cevabı alınır. MATLAB, bu iki değeri farklı olarak algılamıştır. Çünkü MATLAB'da sin (pi) değeri 0'a eşit değildir, sin(pi), yuvarlamadaki farklılıktan ötürü 1.2246e-016 değerine sahiptir ve 0'a eşit değildir. Yani teorik olarak birbirine eşit iki değer, aslında farklı sayılara tekabül etmektedir. 3 Ayrık Yapılar Matlab Notları
>>x=0; >>y=sin(pi); >>x==y ans = 0 Sık yapılabilecek diğer bir hata da karşılaştırma operatörlerinin aritmetik operatörlerden daha sonra değerlendirildikleri durumunu ihmal etmektir. Yani parantezlerden yararlanılmadığı durumlarda bile aritmetik işlemler, öncelikle yapılır. 2+8 > 5+9 Bu iki durumda da MATLAB'ın üreteceği cevap 0'dır. (2+8) > (5+9) Mantıksal Operatörler Bu operatörler, bir veya iki mantıksal anlamı olan ve mantıksal bir sonuç üreten operatörlerdir. Üç çift mantık operatörü vardır. Bunlar; "AND", "OR" ve "XOR" dur. Bu operatörler çiftlidir. Diğer bir mantık operatörü tekli yapıya sahip olan "NOT" operatörüdür. Çiftli yapıdaki operatörlerin genel kullanımı aişlemb şeklinde iken tekli bir operatör olan "NOT" genel kullanımı işlema şeklindedir. Burada a ve bdeğişkenler iken işlem, aşağıdaki mantık operatörlerinden biridir, a ile b'nin arasındaki ilişki, operatörün belirttiği şekilde ise sonuç 1, eğer değilse sonuç 0 olur. 4 Ayrık Yapılar Matlab Notları
Örnek: >> k=4; m=5; >> (k>6) and (m<8) HATALI YAZIM ??? (k>6) and (m<8) | Error: Missing operator, comma, or semicolon. >> (k>6) & (m<8) ans = 0 5 Ayrık Yapılar Matlab Notları
Mantıksal Fonksiyonlar 6 Ayrık Yapılar Matlab Notları
Kontrol yapıları IF Switch For Loop While Loops 7 Ayrık Yapılar Matlab Notları
if Şartlı deyimi Bir mantıksal ifadeyi kontrol ederek bunun sonucuna göre mümkün seçeneklerden birini icra edebilen bir komuttur. IF Şartının Üç şekli vardır IF Şart … ELSEIF … … ELSE … END IF Şart 1. işlem 2. işlem 3. işlem : END IF Şart 1.işlem; ELSE 2. işlem END 8 Ayrık Yapılar Matlab Notları
Örnek:Girilen (okutulan) x ve y değerlerine göre aşağıdaki sonuc değerini bulan programı yazınız. (if4.m) x>y ise sonuc= (x-y) x=y ise sonuc=(x-y)7 Değilse sonuc=x+y x=input('x değeri='); y=input('y değeri='); if x>y sonuc=sqrt(x-y) elseif x==y sonuc=(x-y)^7 else sonuc=x+y end ÇÖZÜM: 9 Ayrık Yapılar Matlab Notları
Disp: Ekrana mesaj yazdırmak için kullanılan komuttur. Disp(‘yazdırılacak mesaj’); Örnek:Girilen iki sayının oranını bulan ve payda sıfır girildiğinde ekrana “üzgünüm sıfıra bölüm hatası var” mesajı yazdıran program. (if5.m) clear N = input(‘payı giriniz: '); D = input(‘paydayı giriniz: '); if D==0 Disp(‘üzgünüm, sıfıra bölüm hatası var‘) else oran = N/D end 10 Ayrık Yapılar Matlab Notları
Örnek:AX2+Bx+C=0 ikinci derece denklemin köklerini hesaplayan aşağıdaki algoritmayı MATLAB komutları programlayınız. (if6.m) A1: Basla A2: A,B,C değerlerini gir A3: delta=B^2+4ac değerini hesapla A4: delta<0 ise A6’ya git, değilse A5’e git A5: delta>0 ise A7’e git, değilse A8’e git A6: ‘kökler kompleks’ yaz A7:’kökler reel’ yaz A8: ‘katlı kök hali’ yaz A9: A10: A11:X1 değerini yaz A12: X2 değerini yaz A13: Son 11 Ayrık Yapılar Matlab Notları
a=input(‘x^2 li terimin katsayılarını giriniz=‘); b=input(‘x li terimin katsayılarını giriniz=‘); c=input(‘Sabit terimi giriniz=‘); delta=b^2-4*a*c; if delta<0 s=‘kökler kompleks’; disp(s); elseif delta>0 disp(‘kökler Reel’) elseif delta ==0 disp(‘katli kök hali’) end x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); x1=num2str(x1);x2=num2str(x2); fprintf(‘1.kök:%s\n’,x1); fprintf(‘2.kök:%s\n’,x2); Çözüm: 12 Ayrık Yapılar Matlab Notları
Örnek:Girilen ay’a göre gün sayısını hesaplayan program. (if7.m) clear ay = input(‘Kaçınçı ayın gün sayısını öğrenmek istiyorsunuz (1-12)= ' ); if ay==1 | ay==3 | ay ==5 | ay==7 | ay==10 | ay==12 disp(‘Bu Ay 31 günden oluşur‘) elseif ay==2 disp(' Bu Ay 28 günden oluşur‘) else disp(' Bu Ay 30 günden oluşur‘) end end 13 Ayrık Yapılar Matlab Notları
if A x=a else if B x=b else if C x=c else x=d end end end if A x=a elseif B x=b elseif C x=c else x=d end Else if ve elseif 14 Ayrık Yapılar Matlab Notları
Else if yapısında else if’ lerin her biri end ile sonlandırılması gereken yeni bir iç içe if’i gösterir. Elseif yapısı ise yalnızca bir tane end ile sonlandırılan lineer sıralı koşul ifadesini gösterir Else if ve elseif 15 Ayrık Yapılar Matlab Notları
Switch Şartlı Deyimi Switch (durum) case (durum1) işlemler case (durum2) işlemler . . otherwise►isteğe bağlı end 16 Ayrık Yapılar Matlab Notları
Örnek: 1 ile 10 arasında girilen sayıların tek ya da çift olduğunu ekrana yazdıran programı yazınız. (switch1.m) sayi=input(‘1 ile 10 arasında bir sayı giriniz:’); switch (sayi) case {1,3,5,7,9} disp(‘Bu sayı Tektir’) case {2,4,6,8,10} disp(‘Bu sayı Çifttir’) otherwise disp(‘Sayı 1 ile 10 arasının dışında’) end 17 Ayrık Yapılar Matlab Notları
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ı 18 Ayrık Yapılar Matlab Notları
for döngüsünün genel yapısı fordöngü değişkeni=başlangıç: bitiş komutlar end Örnek: 1’den 20’ye kadar sayıların toplamını bulan program. (for1.m) clear Toplam = 0for x = 1:20 toplam = toplam + x endtoplam 19 Ayrık Yapılar Matlab Notları
Örnek:Dışardan girilen sayıya kadar olan sayıların toplamını ve çarpımını bulan program. (for2.m) clear sayi=input(‘lütfen bir sayı giriniz=‘) toplam=0carpim=1 for i=1:sayi toplam=toplam+i carpim=carpim*i endtoplam carpim 20 Ayrık Yapılar Matlab Notları
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 21 Ayrık Yapılar Matlab Notları
Tek boyutlu bir dizinin değerlerinin girilmesi (okutulması) Aşağıda 1x5 boyutunda (1 satır ve 5 sütun) bir dizinin elemanlarını giren MATLAB programı aşağıda verilmiştir. (for3.m) for i=1:5 fprintf('A(%d)=',i) A(i)=input(‘ '); end A 22 Ayrık Yapılar Matlab Notları
Örnek:N elemanlı bir dizinin N değeri ve elemanları okutulacak (dışardan girilecek) ve bu vektörün normunun karesi (elemanlarının karelerinin toplamı) bulunacaktır. (for4.m) N=input('N deðerini giriniz='); toplam=0; for i=1:N fprintf('A(%d)=',i); A(i)=input(''); end for i=1:N toplam=toplam+A(i)*A(i); end fprintf('A matrisinin normunun karesi=%f', toplam) 23 Ayrık Yapılar Matlab Notları
İKİ BOYUTLU BİR DİZİNİN DEĞERLERİNİN GİRİLMESİ (OKUTULMASI) Aşağıda 2x3 boyutunda (2 satır ve 3 sütun) bir dizinin elemanlarını giren MATLAB programı aşağıda verilmiştir. (for5.m) for i=1:2 for j=1:3 fprintf('B(%d,%d)=',i,j) B(i,j)=input(''); end end B 24 Ayrık Yapılar Matlab Notları
İçiçe FOR döngüleri (for6.m) clear Toplam=0for i = 1:5 Toplma = 0 for j = 1:5 toplam = toplam + j end Carpım = toplam * i end 25 Ayrık Yapılar Matlab Notları
Örnek: Çarpım tablosunu veren bir program yazınız. (for7.m) for a=1:10 for b=1:10 carpim=a*b; fprintf(‘%d * %d = %d\n’, a, b, carpim) end end 26 Ayrık Yapılar Matlab Notları
Örnek:Bir vektörün negatif elemanlarını sayıp sonucu b adlı değişkene,sıfır ve pozitif elemanlarını sayıp c adlı değişkene atayan program.(for8.m) clc a=[0.3 2 -1 4 -5 0.1 8 -3.4 7 -2.3]; b=0; c=0; for k=1:10 if a(k)<0 b=b+1; else c=c+1; end end b c 27 Ayrık Yapılar Matlab Notları
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 28 Ayrık Yapılar Matlab Notları
Örnek:(while1.m) a=5 while a<10 a=a+1 end Örnek: Ekrana bir ifadeyi 10 kez yazan bir programı WHILE döngüsü kullanarak yazınız. (while2.m) a=0 while a<10 a=a+1; disp(‘Bilgisayar Mühendisliği Bölümü') end 29 Ayrık Yapılar Matlab Notları
Break ifadesi FOR ve WHILE döngülerine ilaveten bir program akışını kontrol edebilmenin diğer bir yolu break ifadesini kullanmaktır. Break ifadesini döngü gövdesi içerisinde kullanmak, döngünün durmasını ve döngüden sonra gelen ilk ifade veya komutun işletilmesini sağlar. (while3.m) Örnek: clc x=input('x değerini giriniz='); for j=2:1000 j if j==x break end end fprintf('j= %g \n', j) disp('döngü sonlandırıldı') 30 Ayrık Yapılar Matlab Notları
İçiçe while döngüsü (while4.m) while 1 x=input(‘x değerini giriniz=‘); if x<=0 break end while x>1 ifmod(x,2)==0 x=x/2 else x=3*x+1 end end end 31 Ayrık Yapılar Matlab Notları