Dosyayı İndir

BİLGİSAYAR PROGRAMLAMAYA
GİRİŞ
Hata Ayıklama
Yuvarlama fonksiyonları
Döngü akışının değiştirilmesi
Break deyimi
Continue deyimi
7. DERS NOTU
Kaynak: Dr.Deniz DAL ders sunumları
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.
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
>>
MATLAB’İN SAYI YUVARLAMA
FONKSİYONLARI
MATLAB’in ondalıklı sayıları yuvarlama amacıyla sıklıkla
kullanılan 4 adet hazır fonksiyonu vardır. Bunlar:
fix
round
ceil
 floor
FIX(X)
Kendisine parametre (argüman) olarak aldığı x ondalıklı
sayısını 0 (Sıfır) yönünde karşılaştığı ilk tamsayıya yuvarlar.
ROUND(X)
Kendisine parametre (argüman) olarak aldığı x ondalıklı
sayısını kendisine en yakın tamsayıya yuvarlar.
CEIL(X)
Kendisine parametre (argüman) olarak aldığı x ondalıklı
sayısını pozitif sonsuz yönünde karşılaştığı ilk tamsayıya
yuvarlar.
FLOOR(X)
Kendisine parametre (argüman) olarak aldığı x ondalıklı
sayısını negatif sonsuz yönünde karşılaştığı ilk tamsayıya
yuvarlar.
BİR SAYININ TAMSAYI VEYA ONDALIKLI SAYI
OLUP OLMADIĞININ ARAŞTIRILMASI
Bir sayı tamsayı ise sayının kendisi sayının
yuvarlanmışına eşittir.
Bir sayı yuvarlanmışına eşit değilse ondalıklı bir
sayıdır.
MOD FONKSİYONU İLE KALAN BULMA
mod(x,y) x sayısının y sayısına bölümünden kalanı verir.
x=y*bölüm+kalan
x=y*fix(x/y)+mod(x,y)
BİR SAYININ ÇİFT SAYI VEYA TEK SAYI OLUP
OLMADIĞININ ARAŞTIRILMASI
Bir sayı ikiye tam olarak bölünebiliyorsa yani sayının
ikiye bölümünden kalan sıfırsa bu sayı bir çift sayıdır.
Bir sayının ikiye bölümünden kalan 1 ise bu sayının
bir tek sayıdır.
RAND FONKSİYONU RASTGELE SAYI ÜRETİMİ
 rand(n,m) fonksiyonu MATLAB’de nxm boyutunda ve elemanları
rastgele sayılar olan bir matris oluşturur. Oluşturulan bu rastgele
sayılar 0 ile 1 arasındadır ve düzgün dağılımlıdır.
 Üretilmek istenen matris kare bir matris ise yani n satır sayısı, m
sütun sayısına eşit ise rand(n,n) yerine sadece rand(n) kullanılabilir.
 0 ile 1 arasında rastgele ondalıklı bir skaler sayı üretmek için ise
rand(1) fonksiyonunun kullanımı yeterlidir.
 Rastgele sayılardan oluşan bu matrisin tüm elemanlarını k gibi bir
sayı ile çarparak sayıları 0 ile k aralığına çekebiliriz.
 Ondalıklı sayılardan oluşmuş bir matrisin elemanlarını yuvarlayıp
tamsayı yapmak için herhangi bir yuvarlama fonksiyonunu, mesela
round fonksiyonunu kullanabiliriz.
AŞAĞIDAKİ MATLAB DEYİMLERİ KOMUT PENCERESİNDE
ÇALIŞTIRILDIKLARINDA NASIL ÇIKTILAR ÜRETİRLER?
>> a=rand(1,10)
>> b=fix(rand(3,5))
>> c=round(40*rand(5,3))
>> d= 40*round(rand(5,3))
>> e=round(10+40*rand(5,3))
>> f=10+40*round(rand(5,3))
>> g=round(50+250*rand(3,4))
>> h=round(1000*rand(1))
ZEROS FONKSİYONU İLE SADECE 0’LAR İÇEREN BİR
MATRİSİN OTOMATİK OLARAK OLUŞTURULMASI
 zeros(n,m) fonksiyonu nxm boyutunda (n satırlı ve m sütunlu)
ve her bir elemanı 0 olan bir matris üretmek amacıyla kullanılır.
 Üretilmek istenen matris kare bir matris ise yani n satır sayısı,
m sütun sayısına eşit ise zeros(n,n) yerine sadece zeros(n)
kullanılabilir.
>> zeros(4,4)
>> zeros(4)
>> zeros(3,5)
zeros(3,5) deyimi acaba
fix(rand(3,5)) deyimi ile aynı
sonucu üretir mi?
ONES FONKSİYONU İLE SADECE 1’LER İÇEREN BİR
MATRİSİN OTOMATİK OLARAK OLUŞTURULMASI
 ones(n,m) fonksiyonu nxm boyutunda (n satırlı ve m sütunlu) ve
her bir elemanı 1 olan bir matris üretmek amacıyla kullanılır.
 Üretilmek istenen matris kare bir matris ise yani n satır sayısı, m
sütun sayısına eşit ise ones(n,n) yerine sadece ones(n)
kullanılabilir.
>> ones(4,4)
>> ones(4)
>> ones(3,5)
ones(3,5) deyimi acaba
ceil(rand(3,5)) deyimi ile aynı
sonucu üretir mi?
break DEYİMİ
for veya while döngülerinde program akışını kontrol edebilmenin bir yolu
break deyimini kullanmaktır. break deyimini döngü gövdesi içerisinde
kullanmak, döngünün aniden sonlandırılmasını ve döngüden sonra gelen
ilk ifade veya komutun işletilmesini sağlar.
for i=1:10
if i==4
break;
end
fprintf('i=%d\n', i);
end
EKRAN ÇIKTISI ???
continue DEYİMİ
Genellikle for döngülerinde, program akışı ayrıca continue deyimi ile kontrol
edilebilir. continue deyimi işletildiğinde continue deyiminden sonraki bütün
herşey ihmal edilir ve döngü değişkeni güncellenerek döngü bir sonraki
iterasyona başlar.
for i=1:10
if i==4
continue;
end
fprintf('i=%d\n', i);
end
EKRAN ÇIKTISI ???
Bu MATLAB deyimi
kaç kere işletilir?
İç İçe for Döngüleri
Bu MATLAB deyimi
kaç kere işletilir?
for i=1:5
toplam=0;
for j=1:5
toplam=toplam+j;
end
disp(toplam*i);
end
EKRAN
5 yerine i kullanılsaydı
nasıl bir ekran çıktısı
elde edilirdi?
toplam=0; deyimi
dıştaki for döngüsünün
bir üst satırına
taşınsaydı nasıl bir
ekran çıktısı elde
edilirdi?
Bu MATLAB deyimi
kaç kere işletilir?
ÇIKTISI ???
UYGULAMA
Çarpım tablosunu ekrana basacak bir MATLAB düzyazı
m-programı yazınız.
Bu MATLAB deyimi
kaç kere işletilir?
for i=1:10
for j=1:10
carpim=i*j;
Bu deyim yerine
break deyimi
kullanılırsa ne olur?
fprintf('%d*%d=%d\n', i, j, carpim);
end
disp('-----------------------');
end
Bu MATLAB deyimi
kaç kere işletilir?
Sonsuz Döngüler
Bazı uygulamalarda belirli bir şart gerçekleşinceye kadar bir takım
işlemlerin devamı istenir ve bu gerçekleşmesi beklenen işlem
program içerisinde dinamik olarak belirleniyor olabilir. Örneğin
kullanıcının bilgisayarın tuttuğu bir sayıyı tahmin oyununda, oyun
sayı doğru tahmin edilinceye kadar devam etmelidir. (Bunun ne
kadar süreceği dinamik bir süreç sonunda bilinebilir ancak.) Bu tür
durumlarda sonsuz bir döngünün içine girerek bu şartın
gerçekleşmesini beklemek tercih edilen metodlardan biridir.
devamEt=1;
while devamEt
if tahmin==sayi
devamEt=0;
end
end
while 1
if tahmin==sayi
break;
end
end
UYGULAMA
• 1’den başlayarak tamsayıların toplamı 120’ye eşit olduğunda
döngüyü durdurup o tamsayı değerini ekrana yazdıran
bilgisayar programının algoritmasını yazıp, akış diyagramını
çiziniz.
• Matematiksel Gösterim (Analiz) :
1+2+3+……..+N =120
-> N=?
ÇÖZÜM 1
ÇÖZÜM 2
UYGULAMA
• Aşağıda verilen nümerik integrasyon değerini 1 yapacak t
değerini bulunuz.
• Artım miktarını 1e-5 alınız.
𝒕
𝟏
𝟏
𝒅𝒙 = 𝟏
𝒙
TEŞEKKÜR
Kitap ve ders notlarından yararlandığım Değerli Hocamız Dr.
Deniz DAL’a teşekkürlerimle…