Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1 Ayrık Yapılar Matlab Notları M ATLAB ’ de P rogramlama Hafta: 6.

Benzer bir sunumlar


... konulu sunumlar: "1 Ayrık Yapılar Matlab Notları M ATLAB ’ de P rogramlama Hafta: 6."— Sunum transkripti:

1 1 Ayrık Yapılar Matlab Notları M ATLAB ’ de P rogramlama Hafta: 6

2 2 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. a1a2 Genel kullanımları a1 işlem a2 ş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. ==Eşittir ~=Eşit değildir >Büyüktür >=Büyük veya eşittir 65>6 6<=6 → 1

3 3 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 ans = 0 >> 3 = 5 ??? 3=5 ! Error: Missing operator, comma, or semicolon. >> 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ü e-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.

4 4 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 (2+8) > (5+9) Bu iki durumda da MATLAB'ın üreteceği cevap 0'dır. 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ı a işlem b şeklinde iken tekli bir operatör olan "NOT " genel kullanımı işlem a şeklindedir. Burada a ve b değ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.

5 5 Ayrık Yapılar Matlab Notları OperatörlerKomut karşılığıİşlevleri & ANDVE | ORVEYA xor XORÖzel Veya ~ NOTDeğil Ö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

6 6 Ayrık Yapılar Matlab Notları Mantıksal Fonksiyonlar FonksiyonFonksiyonun özelliği Any(x) X vektörü içinde herhangi bir eleman sıfırdan farklı ise bu fonksiyon 1 değerini almakta, aksi halde 0 değerini almaktadır. Eğer x bir matris ise x’in her bir sütunu ayrı ayrı incelenir. All(x) X vektörü içindeki tüm elemanlar sıfırdan farklı ise bu fonksiyon 1 değerini almakta, aksi halde 0 değerini almaktadır. Eğer x bir matris ise x’in her bir sütunu ayrı ayrı incelenir. Find(x) X bir vektör ise bu komut ile x’in sıfır olmayan elemanlarının sırası oluşturulan vektöre yazılır. X matrisi sütun sütun taranarak sıfır olmayan elemanların sırasını sütun vektör olarak yazar. İsempty(x) Eğer x matrisi boş ise 1 aksi halde 0 üretir. isequal(x,y) X ve Y matrislerinin birbirlerine eşit olup olmadığını kontrol eder. Eğer eşit ise 1 aksi halde 0 üretir.

7 7 Ayrık Yapılar Matlab Notları While Loops K ontrol y apıları IF Switch For Loop

8 8 Ayrık Yapılar Matlab Notları IF Şartının Üç şekli vardır IF Şart 1. işlem 2. işlem 3. işlem : END Bir mantıksal ifadeyi kontrol ederek bunun sonucuna göre mümkün seçeneklerden birini icra edebilen bir komuttur. if Şartlı deyimi IF Şart 1.işlem; ELSE 2. işlem END IF Şart … ELSEIF … … ELSE … END

9 9 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:

10 10 Ayrık Yapılar Matlab Notları Ö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 Disp: Ekrana mesaj yazdırmak için kullanılan komuttur. Disp(‘yazdırılacak mesaj’);

11 11 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

12 12 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:

13 13 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‘) else if ay==2 disp(' Bu Ay 28 günden oluşur‘) else disp(' Bu Ay 30 günden oluşur‘) end

14 14 Ayrık Yapılar Matlab Notları Else if ve elseif if A x=a else if B x=b else if C x=c else x=d end if A x=a elseif B x=b elseif C x=c else x=d end

15 15 Ayrık Yapılar Matlab Notları Else if ve elseif 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

16 16 Ayrık Yapılar Matlab Notları Switch Switch Şartlı Deyimi Switch (durum) case (durum1) işlemler case (durum2) işlemler. otherwise ►isteğe bağlı end

17 17 Ayrık Yapılar Matlab Notları 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 Ö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)

18 18 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. Çevrimdeki işlem sayısını önceden belirleyerek ve bu sayıya ulaşıp Ç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 ulaşmadığını bir sayaç ile denetleyerek gerçekleştirilen çevrim yapıları yapıları Çevrimin sona ermesini bir koşula bağlı olarak kontrol eden çevrim Çevrimin sona ermesini bir koşula bağlı olarak kontrol eden çevrim yapıları yapıları ►Çevrim, bir tekrarlı işlem yapısıdır.

19 19 Ayrık Yapılar Matlab Notları for döngü değişkeni = başlangıç : bitiş komutlar end for for döngüsünün genel yapısı clear Toplam = 0 for x = 1:20 toplam = toplam + x end toplam Örnek: 1’den 20’ye kadar sayıların toplamını bulan program. (for1.m)

20 20 Ayrık Yapılar Matlab Notları clear sayi=input(‘lütfen bir sayı giriniz=‘) toplam=0 carpim=1 for i=1:sayi toplam=toplam+i carpim=carpim*i end toplam carpim Örnek: Dışardan girilen sayıya kadar olan sayıların toplamını ve çarpımını bulan program. (for2.m)

21 21 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

22 22 Ayrık Yapılar Matlab Notları Tek boyutlu bir dizinin değerlerinin girilmesi (okutulması) for i=1:5 fprintf('A(%d)=',i) A(i)=input(‘ '); end A 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)

23 23 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)

24 24 Ayrık Yapılar Matlab Notları İKİ BOYUTLU BİR DİZİNİN DEĞERLERİNİN GİRİLMESİ (OKUTULMASI) for i=1:2 for j=1:3 fprintf('B(%d,%d)=',i,j) B(i,j)=input(''); end B 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)

25 25 Ayrık Yapılar Matlab Notları clear Toplam=0 for i = 1:5 Toplma = 0 for j = 1:5 toplam = toplam + j end Carpım = toplam * i end İçiçe FOR döngüleri (for6.m)

26 26 Ayrık Yapılar Matlab Notları Örnek: for a=1:10 for b=1:10 carpim=a*b; fprintf(‘%d * %d = %d\n’, a, b, carpim) end Çarpım tablosunu veren bir program yazınız. (for7.m)

27 27 Ayrık Yapılar Matlab Notları clc a=[ ]; b=0; c=0; for k=1:10 if a(k)<0 b=b+1; else c=c+1; end b c Ö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)

28 28 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

29 29 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

30 30 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 fprintf('j= %g \n', j) disp('döngü sonlandırıldı')

31 31 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 if mod(x,2)==0 x=x/2 else x=3*x+1 end


"1 Ayrık Yapılar Matlab Notları M ATLAB ’ de P rogramlama Hafta: 6." indir ppt

Benzer bir sunumlar


Google Reklamları