You are on page 1of 30

Bilgisayar Programlama

(4. Sunu)
İLİŞKİSEL OPERATÖRLER
İlişkisel operatörler, işlenenleri (operands) arasındaki
eşitlik, eşitsizlik, büyüklük veya küçüklük türünden ilişkileri
belirleyen operatörlerdir.

== Eşit Mi?
~= Eşit Değil Mi?
> Büyük Mü?
>= Büyük veya Eşit Mi?
< Küçük Mü?
<= Küçük veya Eşit Mi?
İlişkisel operatörler sonuç olarak 1 (BİR) (true) veya
0 (SIFIR) (false) değerlerini üretirler.
 Eşitlik testinde 2 adet "==" işareti kullanılır. Oysa değişken
atamalarında kullandığımız eşittir "=" 1 tanedir.
 MATLAB komut penceresinde 3=5 yazdığımızda program hata
verir. Oysa 3==5 yazdığımızda bu “3, 5'e eşit midir?" anlamına gelir,
karşılaştırma yanlıştır ve MATLAB bu durum için 0 (Sıfır) sonucunu
üretir.
İLİŞKİSEL OPERATÖRLERİN
ÖNCELİK SIRALARI
 İlişkisel operatörler aritmetik operatörlerden daha düşük
bir işlem önceliğine sahiptirler.
 Örneğin komut penceresinde 3+4<7-5 şeklinde
çalıştırılacak bir MATLAB deyimi arka planda önce 7<2
formuna dönüştürülür ve ilişkisel test (küçüklük testi)
daha sonra gerçekleştirilir.
 Benzer şekilde i+j==10 gibi bir eşitlik testi, öncelikle
hesaplanan i+j aritmetik işleminin sonucu ile 10 sayısı
arasında gerçekleştirilir.
 Yukarıdaki deyimler, karışıklığa meydan vermemek için
(3+4)<(7-5) ve (i+j)==10 formlarına sokulabilirler.
MANTIKSAL OPERATÖRLER
Birden fazla ilişkisel durumu birbirine mantıksal olarak
bağlamaya yarar.
Mantıksal operatörler de ilişkisel operatörler gibi sonuç
olarak 1 (BİR) (true) veya 0 (SIFIR) (false) değerlerini
üretirler.
MANTIKSAL İŞLEVİ
MATLAB
OPERATÖR
a&&b VE (AND)
a||b VEYA (OR)
~a DEĞİL (NOT)
MANTIKSAL OPERATÖRLERİN
DOĞRULUK TABLOLARI

A B A && B Mantıksal VE operatörü ile


birleştirilmiş bir ifadenin 1 (true)
0 0 0 değerini üretebilmesi için
işlenenlerin her ikisinin de aynı
0 1 0 anda 1 (true) olması gerekir. Diğer
1 0 0 tüm durumlarda sonuç 0 (false) dır.

1 1 1
MANTIKSAL OPERATÖRLERİN
DOĞRULUK TABLOLARI

A B A || B Mantıksal VEYA operatörü ile


birleştirilmiş bir ifadenin 1 (true)
0 0 0 değerini üretebilmesi için işlenenlerden
herhangi birisinin 1 (true) olması
0 1 1 yeterlidir. Çıkışın 0 (false) olduğu tek
durum her iki işlenenin de aynı anda 0
1 0 1 (false) olduğu durumdur.
1 1 1
MANTIKSAL OPERATÖRLERİN
DOĞRULUK TABLOLARI

A ~A Mantıksal DEĞİL operatörü sağındaki


işlenen 0 (false) ise 1 (true) değerini,
0 1 benzer şekilde sağındaki işlenen 1 (true)
ise 0 (false) değerini üretmektedir. Yani
1 0 işlenenin DEĞİL’ini almaktadır.
>> k=5;
>> m=7;
>> (k>6) && (m<8)

ans =

0
İlişkisel ve mantıksal operatörler her zaman bool
tipinde (yani 1 (true) veya 0 (false) değerinde, başka bir
ifadeyle sadece iki değerli) bir sonuç geriye döndürürler.
Dolayısıyla if ve while deyimleri ile birlikte karar verme
amacıyla kullanılabilirler.
if Şartlı Deyimi
Bir karşılaştırma ifadesini veya mantıksal bir ifadeyi test ederek bunun
sonucuna göre mümkün seçeneklerden birini icra edebilen bir komuttur.

if Deyiminin Üç Farklı Kullanım Şekli vardır:


if koşul if koşul if koşul1
işlem(ler) işlem(ler) işlem(ler)
end else elseif koşul2
işlem(ler) işlem(ler)
end else
işlem(ler)
end
koşul dediğimiz şey bir karşılaştırma ifadesi (a>b gibi) ya da
bir mantıksal ifadedir (a&&b gibi).
if Yapısının Akış Diyagramı
if-else Yapısının Akış Diyagramı
if-elseif-else Yapısının Akış Diyagramı
ÖRNEK UYGULAMALAR
Klavyeden girilen iki sayının oranını bulan ve fprintf komutuyla
ekrana basan bir MATLAB düzyazı m-programı yazınız.
(Programınız payda sıfır girildiğinde disp komutuyla ekrana
“Uzgunum! Sifira Bolum Hatasi Var.” mesajını yazdırmalıdır.)

Uygulama1.m
Programınızı en az kaç
clc; %Komut penceresini temizle kez çalıştırmalısınız?
clear; %Degiskenleri sil
pay = input('Lutfen Payi Giriniz: ');
pay
payda = input('Lutfen Paydayi Giriniz: '); oran 
payda
if payda==0
disp('Uzgunum! Sifira Bolum Hatasi Var.');
else
oran=pay/payda;
fprintf('Oran = %f \n',oran);
%disp(['Oran = ' num2str(oran)]);
end
Örnek: Kullanıcıdan klavye yoluyla alınan x ve y değerlerine
göre aşağıdaki sonuçlardan birini hesaplayan bir MATLAB
programını bir m-dosyası içine yazınız ve komut penceresinden
dosya adı ile çalıştırınız.
Uygulama2.m
x>y ise sonuc= (x-y)
x=y ise sonuc=(x+y)7 x=input('Lutfen x Degerini Giriniz : ');
y=input('Lutfen y Degerini Giriniz : ');
x<y ise sonuc=x*y
if x>y
sonuc=sqrt(x-y);
elseif x==y
sonuc=(x+y)^7;
else
Programınızı en az kaç sonuc=x*y;
kez çalıştırmalısınız?
end
disp(['Sonuc=' num2str(sonuc)]);
m-dosyalarını oluşturduğunuz
MATLAB metin editörünün >>Uygulama2
program yazma stiline
müdahale etmeyiniz !!!!!
UYGULAMA
Girilen ay numarasına göre gün sayısını hesaplayan MATLAB
programını yazınız.
Programınızı en az
kaç kez
Uygulama3.m çalıştırmalısınız?

ay=input('Bir Ay Numarasi Giriniz (1-12)= ');


if ay==1 || ay==3 || ay==5 || ay==7 || ay==8 || ay==10 || ay==12
disp('Bu Ay 31 Gunden Olusur. ');
elseif ay==2
disp('Bu Ay 28 Gunden Olusur.');
elseif ay==4 || ay==6 || ay==9 || ay==11
disp('Bu Ay 30 Gunden Olusur.');
else
disp('Yanlis Bir Ay Numarasi Girdiniz.');
end
switch-case Yapısı
switch-case yapısı sayesinde bir değişkenin farklı değerleri için ayrı ayrı
işler yapabilmek oldukça kolay hale gelir.

switch-case kullanılarak yazılan herhangi bir bilgisayar programı aslında


if-elseif-else-end ile de gerçekleştirilebilir olsa da programımızı daha
okunabilir ve anlaşılabilir kıldığı için genellikle tercih edilir

switch değisken
case koşul1
işlem(ler)
case koşul2
işlem(ler)
.
otherwise
işlem(ler)
end
switch Şartlı Deyimi
Uygulama4.m

ayNo = input('Bir Ay Numarasi Giriniz (1-12)= ');


switch ayNo
case {1,3,5,7,8,10,12}
disp('Bu Ay 31 Gunden Olusur.');
case 2
disp('Bu Ay 28 Gunden Olusur.');
case {4,6,9,11}
disp('Bu Ay 30 Gunden Olusur.');
otherwise
disp('Yanlis Bir Ay Numarasi Girdiniz.');
end
PROGRAMLARIMIZI ÇALIŞTIRMA

Yazdığımız programlar ya hiç çalışmazlar ya da


çalışırlar ama beklediğimiz sonuçları üretmezler.

Yazdığımız bir program çalışmaz ise eğer, bize


bunun nedenlerini komut penceresine hatalı
bölümlere ait satır ve sütun bilgilerini basarak
bildirir. Ayrıca MATLAB bizlere programlarımızı
yazdığımız editörün sağ tarafında turuncu
çizgiler şeklinde muhtemel hatalar hakkında
ipuçları da verir.
HATA AYIKLAMA (DEBUGGING)
NE UMUYORDUM NE BULDUM?
m-dosyası editörünün hata ayıklamaya
(debugging) yarayan fonksiyonlarını ve calışma
alanı (workspace) penceresini kullanarak çalışan
programınızdaki (!! BEKLEDİĞİNİZ GİBİ
ÇALIŞMAYAN !!) hataları bulabilirsiniz. Bunun
için herhangi bir program satırına kesme noktası
(breakpoint) koymalı ve programınızı F10 tuşu ile
satır satır işletmelisiniz. (Derste bu konuyu
özetleyen canlı bir uygulama yapılacak.)
HATA AYIKLAMA

Hata Ayıklama modundan komut satırında return


komutunu işleterek çıkabilirsiniz. Ayrıca
m-dosyasının içerisindeki kesme noktasını
üzerini tıklayarak kaldırmalısınız.

K>>return
>>
UYGULAMALAR
Uygulama 4.1
Her bir doğru sorunun karşılığının 4 puan olduğu ve 4 yanlışın 1 doğruyu götürdüğü 25
soruluk bir testten alınan puanı hesaplayacak bir MATLAB programını
TestPuaniniHesapla.m adındaki düzyazı m-dosyasının içerisine yazınız ve programı
çalıştırınız. Programınız input komutu ile kullanıcıdan klavye yoluyla doğru, yanlış ve boş
cevap sayılarını almalıdır ve hesapladığı test puanını fprintf komutuyla ekrana
basmalıdır. Kullanıcının tutarsız veri girişi yapması durumunda ise ekrana sadece disp
komutuyla «Tutarsız Veri Girişi Yaptınız.» mesajı yazdırılmalıdır.

Örnek Komut Penceresi Çıktısı


Uygulama 4.2
input komutu ile kullanıcıdan klavye yoluyla aldığı iki sayı arasındaki ilişkiyi (eşitlik,
büyüklük, küçüklük) belirleyen ve fprintf komutuyla ekrana basan bir MATLAB
programını IkiSayiArasindakiFarkiBelirle.m adındaki düzyazı m-dosyasının içerisine
yazınız.

Örnek Komut Penceresi Çıktısı


Uygulama 4.3
𝑨𝒙𝟐 + 𝑩𝒙 + 𝑪 = 𝟎 şeklinde verilen 2. dereceden bir denklemin köklerini hesaplayarak
ekrana basan bir MATLAB programını IkinciDerecedenDenkleminKokleriniHesapla.m
adındaki düzyazı m-dosyasının içerisine yazınız ve programı çalıştırınız. A ve B
katsayıları ile C sabiti input komutu yardımıyla kullanıcıdan klavye yoluyla alınmalıdır.
Eğer girilen denklem 2.dereceden bir denklem değilse bu durum kullanıcıya bir uyarı
mesajıyla iletilmelidir.

Örnek Komut Penceresi Çıktısı Örnek Komut Penceresi Çıktısı


Uygulama 4.4
Bir bisiklet kiralama firması, müşterilerinden, yarım saate kadar olan kiralamalar için 5 TL
ve bu süre aşımı sonrasındaki her bir dakika için 0.25 TL (25 Kuruş) ücret talep
etmektedir. input komutu ile kullanıcıdan klavye yoluyla aldığı herhangi bir müşteriye ait
dakika cinsinden kiralama süresini kullanarak müşterinin ödemesi gereken kiralama
ücretini hesaplayan ve fprintf komutuyla ekrana basan bir MATLAB programını
BisikletKiralamaUcretiniHesapla.m adındaki düzyazı m-dosyasının içerisine yazınız.
Örneğin programınız 29 dakika bisiklet kiralayan bir müşteriye 5 TL’lik ve 40 dakika
bisiklet kiralayan bir müşteriye ise 7.5 TL

Örnek Komut Penceresi Çıktısı


Uygulama 4.5
input komutu ile kullanıcıdan klavye yoluyla aldığı üç sayının en küçüğünü bularak fprintf
komutuyla ekrana basan bir MATLAB programını UcSayininEnKucugunuBul.m
adındaki düzyazı m-dosyasının içerisine yazınız ve programı çalıştırınız.

Örnek Komut Penceresi Çıktısı


Uygulama 4.6
Vücut Kitle İndeksi (VKİ), kilogram cinsinden vücut ağırlığının metre cinsinden boy uzunluğunun
karesine bölünmesiyle hesaplanır. VKİ değeri 16’dan küçükse kişi aşırı az kilolu, 16-18.5 arasında ise
kişi az kilolu, 18.5-25 arasında ise kişi normal, 25-30 arasında ise kişi kilolu ve 30-40 arasında ise
kişi obez sınıfına dâhil edilir.^ input komutu ile kullanıcıdan klavye yoluyla aldığı vücut ağırlığı
(kilogram cinsinden) ve boy uzunluğu (metre cinsinden) değerlerini kullanarak herhangi bir kişiye ait
VKİ’yi hesaplayan ve bu indekse göre kişiyi sınıflandıran bir MATLAB programını
VucutKitleIndeksiniHesapla.m adındaki düzyazı m-dosyasının içerisine yazınız ve programı
çalıştırınız.

Örnek Komut Penceresi Çıktısı

You might also like