You are on page 1of 18

MF-102 Bilgisayar Programlama Bahar 2011

(5. Hafta)
(Yrd. Do. Dr. Deniz Dal)

Sonsuz Dngler
Baz uygulamalarda belirli bir art gerekleinceye kadar bir takm ilemlerin devam istenir ve bu gereklemesi beklenen ilem program ierisinde dinamik olarak belirleniyor olabilir. rnein kullancnn bilgisayarn tuttuu bir sayy tahmin oyununda, oyun say doru tahmin edilinceye kadar devam etmelidir. (Bunun ne kadar srecei dinamik bir sre sonunda bilinebilir ancak.) Bu tr durumlarda sonsuz bir dngnn iine girerek bu artn gereklemesini beklemek tercih edilen metodlardan biridir.

devamEt=1;
while devamEt if tahmin==sayi devamEt=0; end end

while 1 if tahmin==sayi break; end end

BR SATIR VEKTRN BLG DEPOLAMAK N KULLANMA

A=[ ]; %Baslangicta Bos 1. METOD A=[A x]; %A=[x] A=[A y]; %A=[x y] 2. METOD A(1)=x; %A=[x] A(2)=y; %A=[x y]

Balangta bo olan bir satr vektrnn iine srasyla x ve y elemanlar ekleniyor.

K RESM ARASINDAK 10 FARKI BULUNUZ

A=[ ]; %Baslangicta Bos 1. RESM A=[A x]; %A=[x] A=[A y]; %A=[x y]
Son eklenen dizi eleman dizinin son eleman oluyor.

2. RESM A=[x A]; %A=[x] A=[y A]; %A=[y x]


Son eklenen dizi eleman dizinin ilk eleman oluyor.

Bu iki farkl trdeki depolama stratejisinin ne tr uygulamalar iin uygun olabilecei zerinde dikkatlice dnnz.

>>A=[ ] >>A=[A 1] >>A=[A 2] >>A=[3 A]

e for Dngleri
clc;clear; carpim=[ ]; % Baslangicta Ici Bos Bir Vektor for i = 1:5 toplam = 0; for j = 1:5 toplam = toplam + j; Bu MATLAB deyimi end ka kez iletilir? x = toplam * i; carpim=[carpim x]; %carpim=[x carpim]; deneyiniz end disp(['Carpim Vektoru = ' num2str(carpim)]); Bu MATLAB deyimi ka kez iletilir?

EKRAN IKTISI ???

UYGULAMA
arpm tablosunu program yaznz. clc;clear; for i=1:10 for j=1:10 carpim=i*j; fprintf('%d * %d = %d \n', i, j, carpim);
Bu MATLAB deyimi ka kez iletilir? Bu MATLAB deyimi ka kez iletilir?

ekrana

basacak

bir

MATLAB

end
disp('-----------------------'); end

UYGULAMA
Yarap deerleri 1,2,3,4,5 iin bir krenin hacmini (H=4/3r3) hesaplayan bir MATLAB program yaznz.
% Elemanter Yntem clc;clear; r=1:5; hacim=(4/3)*pi*r.^3; disp([r;hacim]); % for Dngs ile clc;clear; for r=1:5 hacim=(4/3)*pi*r^3; disp([r,hacim]); end % while Dngs ile clc;clear; r=1; while r<=5 hacim=(4/3)*pi*r^3; disp([r,hacim]); r=r+1; end

UYGULAMA
Girilen ay numarasna gre gn saysn hesaplayan MATLAB programn yaznz.
Programnz en az ka kez altrmalsnz? clc;clear; 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 Deyimi
clc;clear; ay = input('Bir ay numarasi giriniz (1-12)= '); switch(ay) 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

return Komutu
Yazdnz MATLAB programn herhangi bir anda (programn normalde sona erdii noktann haricinde - early termination) sona erdirmek iin return komutunu kullanabilirsiniz. Bu ilem iin break komutunu KULLANMAYINIZ. PROGRAMINIZI AN SONLANDIRMAK STEDNZ YER BR DNGNN SE NE OLUR????????? break komutunu sadece for ve while dngleri iinde kullannz. Eer return komutu ana program ierisinde kullanlmsa, kontrol komut penceresindeki klavyeye geer. Eer return komutu bir fonksiyon ierisinde kullanlmsa, kontrol bu fonksiyonu aran ana fonksiyona devredilir. (Fonksiyonlar daha sonraki derslerimizde greceiz.)

Soru: Ax+Bx+C=0 eklinde verilen 2. derece kklerini bulan programn ak diyagramn iziniz.

denklemin

PROBLEMN MATLABDE PROGRAMLANMASI (1)


clc;clear; A=input('A katsayisini giriniz= '); Programnz en az ka kez altrmalsnz?

B=input('B katsayisini giriniz= ');


C=input('C sabitini giriniz= '); delta=B^2-4*A*C; if delta<0

disp('Kokler Sanal');
else X1=(-B+sqrt(delta))/(2*A); X2=(-B-sqrt(delta))/(2*A);

fprintf('1. Kok : %f \n', X1);


fprintf('2. Kok : %f \n', X2); end

PROBLEMN MATLABDE PROGRAMLANMASI (2)


clc;clear; A=input('A katsayisini giriniz= '); B=input('B katsayisini giriniz= '); C=input('C sabitini giriniz= '); delta=B^2-4*A*C;

if delta<0
disp('Kokler Sanal'); return; %Programi Ani Sonlandir end

X1=(-B+sqrt(delta))/(2*A);
X2=(-B-sqrt(delta))/(2*A); fprintf('1. Kok : %f \n', X1); fprintf('2. Kok : %f \n', X2);

UYGULAMA : 1x5 boyutunda (1 satr ve 5 stun) bir dizinin (satr vektr) elemanlarn klavye yoluyla kullancdan alan ve en sonunda bu diziyi ekrana basan MATLAB program.

clc;clear; A=[ ]; % Bos vektor for i=1:5 fprintf('A(%d) = ? ',i); A(i)=input(' '); end disp(A);

Bir vektrn elemanlar tek bir for dngs kullanlarak ziyaret edilir.

UYGULAMA : 2x3 boyutunda (2 satr ve 3 stun) bir dizinin (matris) elemanlarn klavye yoluyla kullancdan alan ve en sonunda bu diziyi ekrana basan MATLAB program.

clc;clear; B=[ ]; % Bos matris for i=1:2 % Distaki for satirlar icin for j=1:3 % Icteki for sutunlar icin fprintf('B(%d,%d) = ? ',i,j); B(i,j)=input(' '); end end disp(B);
Bir matrisin elemanlar i ie 2 for dngs kullanlarak ziyaret edilir.

UYGULAMA
5 rencinin herhangi bir dersten aldklar vize ve final notlarn klavye yoluyla kullancdan alarak herbir rencinin ortalamasn hesaplayan ve aadaki formata gre ekrana yazdran bir MATLAB program.
Sira 1. Ogrenci 2. Ogrenci : Vize 35 22 : Final Ortalama 40 95 : 37.5 58.5 :

zm
clc;clear; vize=[ ];final=[ ];ort=[ ]; % 3 Adet Bos vektor for i=1:5 %Dizilere Disaridan Veri Girisi fprintf('%d. Ogrencinin Vize Notu=?', i); vize(i)=input(' '); fprintf('%d. Ogrencinin Final Notu=?', i); final(i)=input(' '); ort(i)=(vize(i)+final(i))/2; end fprintf('Sira Vize Final Ortalama\n'); fprintf('-------------------------------\n'); for i=1:5 %Dizi Elemanlarini Ekrana Yazdirma
fprintf('%d. Ogrenci %d %d %f\n', i, vize(i),final(i),ort(i));

end

You might also like