MATLAB de Bilgisayar Programlama Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK
disp komutu: Ekrana mesaj veya bir değişken değeri yazdırmak için kullanılan komuttur. disp( yazdırılacak mesaj ) veya display(degisken_adi) Örnek: Girilenil iki sayının oranını bulan ve payda sıfır girildiğinde ildiği d ekrana üzgünüm, sıfıra bölüm hatası var! mesajı yazdıran program clear; N = input('payı giriniz: '); pay D = input('paydayı giriniz: '); oran = if D==0 payda disp('üzgünüm, sıfıra bölüm hatası var!') else display(oran) oran = N/D;
Önk: Örnek: 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==8 ay==10 ay==12 disp('bu Ay 31 günden oluşur') elseif ay==2 else disp(' Bu Ay 28 günden oluşur') disp(' Bu Ay 30 günden oluşur') NOT: Yukarıdaki soruda ay değeri 12 nin üzerinde bir değer girildiği zaman da Bu ay 30 günden oluşur mesajı ekrana gelmektedir. Bunun yerine ekrana yanlış değer girdiniz mesajı nasıl yazdırırsınız?
ÖDEV1: Bilgisayar Programlama dersine ait 1. vize, 2. vize ve Final notları dışarıdan girilerek dönem sonu başarı notunu hesaplayan ve harf notunu belirleyen bir program yazınız. BN=0.3*(V1+V2)+0.4*F Not: Şart BN>= 90 Harfli Not A 75 <= BN< 90 B 60 <= BN< 75 C 45 <= BN< 60 D Diğer F
ÖDEV 2: Dışarıdan girilen x ve y değerlerine karşılık z yi aşağıdaki şartlar için hesaplayan bir program yazınız. > + = 0 0 ) log( 3 y y e y y x z x x > 0 için 0 y y e ve > + = 0 0 ) ln( 2 2 y y x y y x z x 0 için
Switch Şartlı Deyimi switch (anahtar ifade) case (durum1) işlemler case (durum2) işlemler.. otherwise isteğe bağlı
Örnek: 1 ile 10 arasında girilen il sayıların tek ya da çift olduğunu ekrana yazdıran programı yazınız sayi=input( 1 ile 10 arasında bir sayı giriniz: ); switch (sayi) case {1,3,5,7,9} case {2,4,6,8,10} otherwise disp('bu sayı tektir') disp('bu sayı çifttir') disp('sayı bu aralığının ğ dışındadır') ş
Uygulama : Girilen ay numarasına göre, o ayın gün sayısını veren programı switch komutu kullanarak yazınız. clear all; ay = input( Bir input(bir ay numarası giriniz (1-12)='); 12) ); switch (ay) case {1,3,5,7,8,10,12}; disp('bu ay 31 günden oluşur') case {2} disp('bu ay 28 günden oluşur') case {4,6,9,11}; disp('bu ay 30 günden oluşur')
fprintf Fonksiyonu Genel kullanımı: Burada fprintf ('ekrana basılacak açıklama %f \n', deger) %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: %d veya %g : Tamsayı değeri basar %e : Üstel değer basar
Uygulama: fprintf('döngünün başı\n'); for i = 4:-1:1 fprintf('merhaba i = %g\n',i); fprintf('\n Döngünün sonu.\n');
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ı
for döngüsünün genel yapısı for döngü değişkeni = başlangıç :artış miktarı:bitiş ifa edilecek komutlar Örnek: 1 den 20 ye kadar sayıların toplamını bulan program Çözüm: clear all; toplam = 0 ; for x = 1:1:20 toplam toplam = toplam + x ;
Örnek: 1 den başlayıp dışardan girilen sayıya kadar olan sayıların toplamını ve çarpımını bulan program Çözüm: clear all; sayi=input('lütfen input( bir sayı giriniz='); toplam=0; carpim=1; for i=1:sayi toplam=toplam+i ; carpim=carpim*i ; toplam carpim
Örnek: 50 ile 150 arasındaki tek sayıları ekrana yazdıran ve adetini bulan programı MATLAB ortamında yazınız. Çözüm: adet=0; for i=51:2:150 fprintf('%g ',i); % veya disp(i); adet=adet+1; disp(' '); fprintf('sayıların adeti:%g', adet);
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 şart ifade_1 ifade_2. ifade_n
Örnek: 5 den 10 a kadar olan sayıların toplamını bulan program yazınız. a=5; toplam=0; while a<10 a=a+1; toplam=toplam+a; toplam Uygulama: Ekrana adınızı ve soyadınızı 10 kez yazan bir programı WHILE döngüsü kullanarak yazınız. a=0; while a<10 a=a+1; disp( Birol SOYSAL')
Örnek : Ax+b=0 seklinde verilen 1.derece denklemin çözümünü, programa ait akış diyagramından faydalanarak Matlab da programlayınız. A=input('A katsayısını giriniz..: '); while A==0 A=input('A katsayısını tekrar giriniz..: '); B=input('B katsayısını giriniz..: '); x = -B/A; fprintf(' %d \n ', x) = h e
Ödev: Dışardan 10 adet sayı girilecektir. Girilen bu sayılar içinden pozitif olanların doğal logaritmaları toplamını, negatif olanların kareleri çarpımını ve sıfır olanların da adetini bulan programı MATLAB de yazınız (program for ve while komutları ile ayrı ayrı yazılacaktır). Yazdırma işlemleri fprintf komutu ile yapılacaktır. Programdan elde ettiğiniz çıktıyı da kağıdınıza yazınız.
Örnek: a=10 ve b=7 olarak veriliyor. Bu sayıların toplamı 52325 den büyük olana kadar sayılardan birisi iki katına katlanıyor. Kaç kez katlandığını ekrana yazan programı kodlayınız. Çözüm: a=10; b=7; sayac=0; toplam=0; while toplam<52325 sayac=sayac+1; a=2*a; toplam=a+b; fprintf(' %d \n ',sayac) Not: Aynı problemi diğer sayıyı katlayarak tekrarlayınız.
Break ifadesi Örnek: 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. for j=2:6 if j==4 break fprintf(' j= %g \n', j) disp('döngü sonlandırıldı')
İç içe FOR döngüleri clear all; toplam=0; for i = 1:5 toplam = 0 for j = 1:5 toplam = toplam + j carpım = toplam * i Örnek: for a=1:10 Çarpım tablosunu veren bir program yazınız for b=1:10 carpim=a*b; a fprintf(' %d * %d = %d\n ', a, b, carpim)
İç içe while döngüsü i=7; while i>5 x=input(' x değerini giriniz= '); if x<=0 break while x>1 if mod(x,2)==0 x=x/2; else x=3*x+1; i=i-2; fprintf(' Bravo, programı sonuçlandırdınız:%g ', x)
ÖDEV: Döngü komutları kullanmadan dışarıdan girilen 50 adet sayının en büyük ve en küçük olanlarını bulan bir program yazınız. Aynı problem için döngü komutlarını kullanarak bir program yazınız. ÖDEV: İki ayrı sınıfın aynı ders için 1. vize ortalamasını bulan, not ortalaması daha yüksek olan sınıftaki öğrencilerin notlarına 10 puan ekleyerek yazdıran bir program yazınız. Sınıflardan birinde 40, diğerinde ğ ise 50 öğrenci ğ bulunmaktadır. ÖDEV: Verilen N adet (N dışarıdan girilecek) değişik sayıdan pozitif, negatif ve sıfır olanların sayısını ve hangisinin daha çok olduğunu bulan bir program yazınız.