You are on page 1of 18

MF-102

Bilgisayar Programlama
Bahar 2011
(6. Hafta)
(Yrd. Do. Dr. Deniz Dal)
UYGULAMA
Kullancdan klavye yoluyla ald bir alt limit
ile bir st limit arasndaki tek saylarn
ortalamasn hesaplayarak ekrana basan bir
MATLAB dzyaz M program yaznz.
Programnz ortalamay yazdrdktan sonra bu
aralkta bulduu tek saylar da ekrana
basmaldr.
clc;clear;
altLimit=input('Lutfen Alt Limiti Giriniz : ');
ustLimit=input('Lutfen Ust Limiti Giriniz : ');

teklerinSayisi=0; % sayac
teklerinToplami=0; % toplamada etkisiz eleman
teklerVektoru=[ ]; % baslangicta bos vektor

for i=altLimit:ustLimit
if mod(i,2)==1
teklerinSayisi=teklerinSayisi+1;
teklerinToplami=teklerinToplami+i;
teklerVektoru=[teklerVektoru i];
end
end

teklerinOrtalamasi=teklerinToplami/teklerinSayisi;
fprintf('Teklerin Ortalamasi=%f\n',teklerinOrtalamasi);
disp(['Araliktaki Tek Sayilar: ' num2str(teklerVektoru)]);
UYGULAMA
Kullancdan klavye yoluyla ald bir alt limit
ile bir st limit arasndaki ift saylarn
karelerinin toplamnn karekkn
hesaplayarak ekrana basan bir MATLAB
dzyaz M program yaznz. Programnz
karekk yazdrdktan sonra bu aralkta
bulduu ift saylar da ekrana basmaldr.
clc;
clear;

altLimit=input('Lutfen Alt Limiti Giriniz : ');
ustLimit=input('Lutfen Ust Limiti Giriniz : ');

karelerToplami=0; % toplamada etkisiz eleman
ciftlerVektoru=[ ]; % baslangicta bos vektor

for i=altLimit:ustLimit
if mod(i,2)==0
karelerToplami=karelerToplami+i^2;
ciftlerVektoru=[ciftlerVektoru i];
end
end

fprintf('Toplamin Karekoku=%f\n',sqrt(karelerToplami));
disp(['Araliktaki Cift Sayilar: ' num2str(ciftlerVektoru)]);
PROGRAMLARIMIZI ALITIRMA
Yazdmz programlar ya hi almaz ya da
alr ama beklediimiz sonular retmez.

Programmz almaz ise eer bize bunun
nedenlerini komut penceresine hatal blmlere
ait satr ve stun bilgilerini basarak bildirir.
Ayrca MATLAB bizlere programlarmz
yazdmz editrn sa tarafnda turuncu
izgiler eklinde muhtemel hatalar hakknda
ipular da verir.
HATA AYIKLAMA (DEBUGGING)
M dosyas editrnn hata ayklamaya
(debugging) yarayan fonksiyonlarn ve calma
alan (workspace) penceresini kullanarak alan
programnzdaki (!! BEKLEDNZ GB
ALIMAYAN !!) hatalar bulabilirsiniz. Bunun
iin herhangi bir program satrna kesme noktas
(breakpoint) koymal ve kodunuzu F10 tuu ile
satr satr iletmelisiniz. (Derste bu konuyu
zetleyen canl bir uygulama yaplacak.)
HATA AYIKLAMA (DEBUGGING)
Hata Ayklama (Debugging) modundan komut
satrnda return komutunu ileterek kabilirsiniz.
Ayrca M dosyasnn iindeki kesme noktasn
zerini tklayarak kaldrmalsnz.

K>>return
>>
MATRSLERDE LEMLER
Aadaki matris ilemlerini MATLAB zaten kolayca
gerekletirmektedir. Ama bizim amacmz bu ilemleri imdiye
kadar rendiimiz programlama yaplar ile kendimizin
yazabilmesidir.

Matrislerin Bir Skalerle arpm

Matrislerde Toplama ve karma

Matrislerde arpma

Matrislerin Transpozu

Matrislerin Bir Skalerle arpm
UYGULAMA : Aadaki ekliyle verilen bir A matrisinin her bir
elemann 2 rakam ile arpp bir B matrisine atayan ve en
sonunda bu B matrisini ekrana basan MATLAB program.
(

=
4 1
3 2
A
clc;clear;
A=[2 3 ; 1 4];
B=[ ]; % baslangicta bos matris
[m n]=size(A); % m satir ve n sutun
for i=1:m % satir sayisi kadar
for j=1:n % sutun sayisi kadar
B(i,j)=2*A(i,j);
end
end
disp(A);
disp(B);
(

=
8 2
6 4
B
Matrislerde Toplama ve karma lemi
ki matrisin toplanabilmesi veya karlabilmesi iin boyutlarnn (yani satr ve
stun saylarnn) eit olmas gerekir.
(

=
4 1
3 2
A
(

=
5 4
6 3
B
ki matrisin toplam
(

=
(

+
(

=
9 5
9 5
5 4
6 3
4 1
3 2
C
clc;clear;
A=[2 3; 1 4];
B=[3 6; 4 5];
C=[ ];
for i=1:2
for j=1:2
C(i,j)=A(i,j)+B(i,j);
end
end
disp(A);
disp(B);
disp(C);
Matrislerde arpma lemi
A ve B gibi iki matrisin
arplabilmesi iin A matrisinin
stun saysnn B matrisinin satr
saysna eit olmas
gerekmektedir. A matrisi mxn, B
matrisi nxk ise bu arpma ilemi
sonucunda elde edilecek C
matrisinin boyutu mxk olacaktr.
(

=
1 3 0
1 2 1
A
rnek
(
(
(

=
3 2
5 1
2 1
B
(

= =
12 1
15 5
B A C
clc;clear;
A=[1 2 1;0 3 -1];
B=[1 2; 1 5;2 3];
if size(A,2) ~= size(B,1)
disp('Carpim Illegal');
return;
end
C=zeros(size(A,1),size(B,2));
for i=1:2
for j=1:2
for k=1:3
C(i,j)=C(i,j)+A(i,k)*B(k,j);
end
end
end
disp(A);
disp(B);
disp(C);
Transpoz, matrislerde satr ile stunun yer deitirmesi ilemidir.
Yani A=2x3lk bir matrisin transpozu alnd zaman B=A
T
=3x2lik bir
matris elde edilir.
Matrislerde Transpoz lemi
clc;clear;
A=[1 3 0; 4 2 -3];
B=[ ];
[m n]=size(A);
for i=1:n %Anin sutunu
for j=1:m %Anin satiri
B(i,j)=A(j,i);
end
end
disp(A);
disp(B);
A =

1 3 0
4 2 -3
B =A
T

1 4
3 2
0 -3
Komut satrnda A' y test ediniz.
Hangi metod daha kolay ?
UYGULAMA
A=[-45 0 5 10 -91 2] dizisinin (satr vektrnn) elemanlarn
tersten baka bir diziye aktaran ve bu yeni diziyi ekrana yazdran
MATLAB program.
clc;clear;
A=[-45 0 5 10 -91 2]; %A=1:10; icin deneyiniz
B=[ ];
boyut=length(A);
for i=1:boyut
B(i)=A(boyut-i+1);
end
disp(A);
disp(B);
UYGULAMA
K=[-4 3 0 ; 2 0 4 ] matrisindeki sfrlarn saysn ve yerini (satr
ve stun numaralarn) ekrana basan bir MATLAB program.
clc;clear;
K=[-4 3 0 ; 2 0 4 ]; % Rastgele Matris cinde Sfr Arayin
[m n]=size(K);
sifirSayisi=0; % sayac
for i=1:m
for j=1:n
if K(i,j)==0
sifirSayisi=sifirSayisi+1;
fprintf('K(%d,%d) = 0 \n',i,j);
end
end
end
disp(K);
fprintf('K Matrisindeki SIFIR Sayisi = %d \n',sifirSayisi);
UYGULAMA
5x6 boyutunda (5 satrl ve 6 stunlu) bir dizinin (matris)
elemanlarn klavye yoluyla kullancdan alan ve 3. satrn
tm elemanlar ile 4. stunun tm elemanlarn toplayarak
ekrana basan bir MATLAB program yaznz.
UYGULAMA
Herhangi bir kare matrisin ana kegen elemanlarn
toplayarak ekrana basan bir MATLAB program yaznz.
UYGULAMA
Herhangi bir fonksiyonun belirli bir aralktaki integralini
hesaplamak demek o fonksiyona ait erinin altnda kalan
alan hesaplamak demektir. Bu problemi CEBRSEL olarak
zebileceimiz gibi yazacamz bir bilgisayar program
yardmyla belirli bir duyarllkta NMERK olarak da
hesaplayabiliriz. Bu nmerik zm zerinde dnnz.
dx x pi ) 1 /( 4
1
0
2
}
+ =
SINAV HAZIRLIK SORULARI
1. Kullancdan klavye yoluyla ald bir saynn blenlerini (arpanlarn)
bularak ekrana basan bir MATLAB program yaznz.
2. Kullancdan klavye yoluyla ald bir saynn ASAL say olup olmadn
belirleyen ve eer ASAL say ise ASAL arpanlarn ekrana basan bir
MATLAB program yaznz.
3. Kullancdan klavye yoluyla ald belirli bir aralk ierisindeki btn
ASAL saylar ve bu ASAL saylarn saysn ekrana basan bir MATLAB
program yaznz.
4. Kullancdan klavye yoluyla ald 3 saynn En Byk Ortak Blenini
(EBOB) bulacak bir MATLAB program yaznz.
5. Kullancdan klavye yoluyla ald iki saynn aralarnda ASAL olup
olmadn bulan bir MATLAB program yaznz. (4 ve 15 aralarnda
asaldr rnein.)
6. Kullancdan klavye yoluyla ald 3 saynn En Kk Ortak Katn
(EKOK) bulacak bir MATLAB program yaznz. (15 saysnn katlar: 15
30 45 60 75 ve 20 saysnn katlar: 20 40 60 tr. Dolaysyla
EKOK(15,20)=60 tr.)
7. Kullancdan klavye yoluyla ald 2 rasyonel sayy toplayp en sade
haliyle ekrana basacak bir MATLAB program yaznz.

You might also like