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…
© Copyright 2024 Paperzz