1 / 31

M ATLAB ’ de P rogramlama Hafta: 6

M ATLAB ’ de P rogramlama Hafta: 6. MATEMATİKSEL VE MANTIKSAL OPERATÖRLER.

norton
Télécharger la présentation

M ATLAB ’ de P rogramlama Hafta: 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATLAB’ de Programlama Hafta: 6 1 Ayrık Yapılar Matlab Notları

  2. 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ı

  3. 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ı

  4. >>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ı

  5. Ö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ı

  6. Mantıksal Fonksiyonlar 6 Ayrık Yapılar Matlab Notları

  7. Kontrol yapıları IF Switch For Loop While Loops 7 Ayrık Yapılar Matlab Notları

  8. 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ı

  9. Ö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ı

  10. 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ı

  11. Ö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ı

  12. 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ı

  13. Ö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ı

  14. 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ı

  15. 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ı

  16. 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ı

  17. Ö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ı

  18. 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ı

  19. 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ı

  20. Ö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ı

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

  22. 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ı

  23. Ö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ı

  24. İ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ı

  25. İç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ı

  26. Ö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ı

  27. Ö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ı

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

  29. Ö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ı

  30. 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ı

  31. İç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ı

More Related