Professional Documents
Culture Documents
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.
== Eşittir
5<6 → 1
~= Eşit değildir
5<=6 → 1
> Büyüktür
5==6 → 0
>= Büyük veya eşittir
< Küçüktür 5>6 → 0
ş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
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.
4
Ayrık Yapılar Matlab Notları
Operatörler Komut karşılığı İşlevleri
& AND VE
| OR VEYA
~ NOT Değil
Örnek:
>> k=4; m=5;
>> (k>6) and (m<8) HATALI YAZIM
??? (k>6) and (m<8)
|
Error: Missing operator, comma, or semicolon.
ans =
0
5
Ayrık Yapılar Matlab Notları
Mantıksal Fonksiyonlar
Fonksiyon Fonksiyonun özelliği
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.
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
ÇÖZÜM: 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
9
Ayrık Yapılar Matlab Notları
Disp: Ekrana mesaj yazdırmak için kullanılan komuttur.
Disp(‘yazdırılacak mesaj’);
clear pay
N = input(‘payı giriniz: '); oran
D = input(‘paydayı giriniz: '); payda
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: X 1 (b delta ) / 2a
A10: X 2 ( b delta ) / 2a
A11:X1 değerini yaz
A12: X2 değerini yaz
A13: Son 11
Ayrık Yapılar Matlab Notları
Çözüm: 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);
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)= ' );
13
Ayrık Yapılar Matlab Notları
Else if ve elseif
if A if A
x=a x=a
else elseif B
if B
x=b x=b
else elseif C
if C x=c
x=c else
else x=d
x=d
end end
end
end
14
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
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Ü
Ç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ı
komutlar
end
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=0
carpim=1
for i=1:sayi
toplam=toplam+i
carpim=carpim*i
end
toplam
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ı
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)
24
Ayrık Yapılar Matlab Notları
İçiçe FOR döngüleri
(for6.m)
clear
Toplam=0
for 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
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
Ö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
if mod(x,2)==0
x=x/2
else
x=3*x+1
end
end
end
31
Ayrık Yapılar Matlab Notları