You are on page 1of 31

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

<= Küçük veya eşittir 6<=6 → 1


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

xor XOR Özel 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.

>> (k>6) & (m<8)

ans =

0
5
Ayrık Yapılar Matlab Notları
Mantıksal Fonksiyonlar
Fonksiyon Fonksiyonun özelliği

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.
Any(x)
Eğer x bir matris ise x’in her bir sütunu ayrı ayrı incelenir.

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
All(x)
matris ise x’in her bir sütunu ayrı ayrı incelenir.

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
Find(x)
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.

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 IF Şart IF Şart


1. işlem 1.işlem; …
2. işlem ELSE ELSEIF …
3. işlem 2. işlem …
: END ELSE
END …
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
ÇÖ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’);

Ö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 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)= ' );

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
end

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Ü

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ı

for dö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 = 0
for x = 1:20
toplam = toplam + x
end
toplam

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ı

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

Ö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
if mod(x,2)==0
x=x/2
else
x=3*x+1
end
end
end
31
Ayrık Yapılar Matlab Notları

You might also like