YUVARLAMA FONKSİYONLARI Fonksiyon Çalışma Prensibi fix(x) x ondalık sayısını sıfır yönündeki ilk tamsayıya round(x) x ondalık sayısını kisine en yakın ilk tamsayıya ceil(x) x ondalık sayısını + yönündeki ilk tamsayıya floor(x) x ondalık sayısını yönündeki ilk tamsayıya mod(x,y) x in y ile bölümünden kalanı verir Örnek fix(5.5) 5 fix(-5.5) -5 round(5.5) 6 round(-5.5) -6 ceil(5.5) 6 ceil(-5.5) -5 floor(5.5) 5 floor(-5.5) -6 mod(35,3) 2 mod(-35,3) 1 DÖNGÜLER(for,while) Program içersinde bazı ifadelerin tekrarlanarak yapılmasına döngü denilir. Döngü oluşturmak için DÖNGÜ İFADELERİ kullanılır. Döngü kullanımı istenen program bölümünün istenen sayıda ya da istenen şartlar gerçekleşinceye kadar tekrarlanmasını sağlar. MATLAB te 2 farklı döngü ifadesi vardır. Bu iki ifadenin kullanımı birbirinden farklıdır. For- (istenen sayıda) White-(istenen şart gerçekleşinceye kadar) While Döngüsü Kullanımı: while mantıksal ifade İşlem Bloğu; şeklindedir. While deyiminden sonra yazılan mantıksal sınamanın cevabı doğru (mantıksal 1 olarak algılanır) ise while- arasındaki işlemler yapılır. Program deyimine her geldiğinde deyiminden while deyimine geri dönülür ve mantıksal sınama tekrar kontrol edilir. Mantıksal sınama doğru olduğu sürece bu durum böyle devam eder. for- deyiminden farklı olarak istenen sayıda değil, belirli bir durum doğru olduğu sürece işlemlerin tekrarlanması sağlanmış olur. While deyiminin yanındaki mantıksal sınama cevabı yanlış (0) olduğunda ise işlemler yapılmadan deyiminden sonraki işleme geçilir. While- döngüsünden çıkmanın diğer bir yolu ise break komutudur. Bu komut çalışmakta olan döngüyü sonlandırarak, deyiminden sonraki işleme gider. Örnek olarak;1 den 5 e kadar olan sayıları yazdıran program 1
Örnek olarak; Kullanıcının girdiği sayının faktöriyelini hesaplayan fonksiyonu While- kullanarak yazınız. BREAK VE CONTINUE KULLANIMI: 1.1. break: Bu deyim bir döngünün içinde işletildiğinde döngü aniden sonlandırılır. Yani break in altındaki kodlar ve sonraki iterasyonlar çalıştırılmaksızın program işletmeni döngüdeki satırının altından işlemeye devam eder. 1.2. continue: Bu deyim bir döngünün içinde işletildiğinde döngü aniden bir sonraki iterasyona geçer. Yani continue nun altındaki kodlar çalıştırılmaksızın program satırına gelir ve sonra (uygunsa) bir sonraki iterasyon için program işletmeni döngünün başından çalışmaya devam eder. 2
Örnek. Kullanıcıdan bir başlangıç ve bitiş değeri alan bu sayılar ve bu sayıların arasındaki çift sayıların toplamını bulduran ve uygun formatta ekrana yazdıran program hazırlayınız. Editördeki Kodlar: ;; baslangic=input('lütfen bir başlangıç değeri giriniz: '); bitis=input('lütfen bir bitiş değeri giriniz: '); toplam=0; for i=baslangic:1:bitis if mod(i,2)==1 continue; DERSTEKİ ÖRNEKLER 1 %Klavyeden -1 sayısı girilene kadar girilen tüm sayıları %ekrana yazdıran program hazırlayınız. x=input('lütfen bir sayı giriniz: '); while x~=-1 fprintf('%g \n',x); x=input('lütfen bir sayı giriniz: '); 2 %Klavyeden -1 sayısı girilene kadar girilen tüm sayıları uygun formatta %ekrana yazdıran program hazırlayınız. 3
i=1; x(i)=input('lütfen bir sayı giriniz: '); while x(i)~=-1 i=i+1; x(i)=input('lütfen bir sayı giriniz: '); fprintf('girilen sayılar\n\n'); fprintf('%g ',x); fprintf('\n\n\n'); 3 %Duvar ile arasındaki mesafe 0.001 m olduğunda durduğu kabul edilecektir. %Böyle bir antrenmanda tenisçi topa kaç kez vurur? while mesafe>0.001 fprintf('tenisçi antrenmanda %d kere topa vurmuştur.\n\n',kackerevurdugunubilen); 4 %10. vuruşunda tenisçi ile duvar arasındaki mesafe kaç metredir? while kackerevurdugunubilen<10 4
fprintf('tenisçi antrenmanda 10. kez topa vurduğunda duvara uzaklığı %g metredir.\n\n',mesafe); 5 %Duvar ile arasındaki mesafe 0.001 m olduğunda durduğu kabul edilecektir. %Böyle bir antrenmanda top kaç metre yol alır? toplammesafe=0; while mesafe>0.001 oncekimesafe=mesafe; toplammesafe=toplammesafe+mesafe+oncekimesafe; fprintf('tenisçi antrenman topuna %g metre yol yaptırmıştır.\n\n',toplammesafe); 6 %Bir çiftçinin 50 koyunu 120 ineği vardır. İnekler her yıl %5 oranında %koyunlar her yıl %15 oranında artmaktadır (artış miktarı ondalık sayı ise %bu sayının ondalık kısmı yok kabul edilecektir). Buna göre kaç yıl sonra %koyun sayısı inek sayısını geçer? koyun=50; inek=120; kacyilgectiaradan=0; while koyun<=inek kacyilgectiaradan=kacyilgectiaradan+1; inek=fix(inek*1.05); koyun=fix(koyun*1.15); fprintf('%d yıl sonra; %d tane inek, %d tane koyun olup bu yılda koyun sayısı inek sayısını geçer.\n\n',kacyilgectiaradan,inek,koyun); 5