You are on page 1of 18

MF-102 Bilgisayar Programlama Bahar 2011

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

UYGULAMA i rastgele oluturulmu tam saylarla dolu (1 ile 50 arasnda) 10 elemanl bir satr vektrnn en kk ve en byk elemann bularak ekrana basan bir MATLAB program yaznz. (min ve max fonksiyonlarn kullanmyoruz Kendi min ve max fonksiyonlarmz yazmaya alyoruz.)

clc; clear; A=round(1+49*rand(1,10)); %Dizinin En Kucuk ve En Buyuk Elemaninin Dizinin %Ilk Elemani Oldugunu Farzet enKucuk=A(1); enBuyuk=A(1); for i=2:length(A) %Indeksin 2 den basladigina dikkat ediniz if A(i)<enKucuk enKucuk=A(i); end if A(i)>enBuyuk enBuyuk=A(i); end end disp(A); disp(['Bu Dizinin En Kucuk Elemani : ' num2str(enKucuk)]); fprintf('Bu Dizinin En Buyuk Elemani : %d \n ', enBuyuk);

UYGULAMA i rastgele oluturulmu tamsaylarla dolu (1 ile 50 arasnda) 20 elemanl bir satr vektrnn elemanlarn bykten ke veya kkten bye sralayan ve ekrana basan bir MATLAB program yaznz. (Orjinal vektr de ekrana basmay unutmaynz.) (2. bir vektr kullanmna izin yoktur.) (sort fonksiyonunu kullanmyoruz )

K MATLAB DEKENNN DEERNN YER DETRMES (SWAPPNG)


Elinizdeki TV kumandas yardmyla kaytl 2 kanaln yerini nasl deitirirsiniz?

geciciDegisken=A; A=B; B=geciciDegisken;


!!! GEC BR DEKENE HTYA VAR !!!

Sralama yani Sorting nemli Bir Problem


1 - Kkten Bye Sralama (Artan) (Ascending Sort) 2 - Bykten Ke Sralama (Azalan) (Descending Sort)

A=[3 1 2] >>sort(A) veya sort(A,'ascend') Artan Sral A=[1 2 3] >>sort(A,'descend') Azalan Sral A=[3 2 1]
(Bizler MATLABde tanml bu sort fonksiyonunu kullanmayacaz. Kendi sort programlarmz yazacaz.)

Selection Sort (Sralama Algoritmas)

Bu algoritma birinci elemandan balayarak son elemana kadar, sralanmam DZY para para sralar. nce dizideki en kk eleman bulunur ve dizinin ilk eleman ile yer deitirilir (swap). Sonraki aamada dizinin sralanmam olan paras iindeki en kk eleman bulunur ve ikinci elemanla yer deitirilir. Bu ilemi N defa tekrarladmzda N elemanl bir diziyi sralam oluruz.

"Selection Sort" ile Kkten Bye Sralama


clc;clear; A=round(1+49*rand(1,20)) %Siralanmamis Diziyi Yazdir tic; %Siralamaya Baslamadan Once Kronometreyi Calistir for i=1:(length(A)-1) %Kacinci En Kucuk Eleman Araniyor? minimumunIndeksi=i; %Hangi Indeksteki En Kucuk? for j=(i+1):length(A) %Hangi Aralikta Araniyor? if A(j)<A(minimumunIndeksi) minimumunIndeksi=j; end end %Yer Degistir (swap) geciciDegisken=A(i); A(i)=A(minimumunIndeksi); A(minimumunIndeksi)=geciciDegisken; end toc; %Siralama Bittikten Sonra Kronometreyi Durdur disp(A); %Siralanmis Diziyi Yazdir

FONKSYONLAR
Fonksiyonlar da bilgisayar programlardr. Bilgisayarlar yardmyla zlmeye allan problemler fonksiyonlar sayesinde ynetilmesi daha kolay, kk paracklara blnrler. Bu metoda Bl ve Ynet ya da Divide and Conquer ad verilir. Her fonksiyon:
Kendine zg bir isme sahiptir. GENELLKLE kendine, zerinde ilem yapaca bir argman (parametre) ya da argmanlar (parametreler) alr. GENELLKLE geriye bir deer dndrr. (skaler, vektr ya da matris.)

FONKSYON M DOSYALARI

Bir Fonksiyon M dosyasnn iki bileeni vardr : 1 Fonksiyonun imzas ya da prototipi (lk satrda tanmlanr.) 2 Fonksiyonun tanm (yapmas gereken i) (kinci satrdan balar ve devam eder.)

FONKSYON MZASI YADA PROTOTP


function cikis parametresi = fonksiyon_adi (giris parametreleri 1, 2, n)
function [cikis parametreleri 1, 2,, n] = fonksiyon_adi (giris parametreleri 1, 2, n)

function cikis parametresi = fonksiyon_adi ( ) function cikis parametresi = fonksiyon_adi function fonksiyon_adi (giris parametreleri 1, 2, n)

Fonksiyon M dosyalarnn ilk satr MUHAKKAK yukarda tanmladmz gibi fonksiyonlarn imzas ya da prototipi dediimiz satrlardan olumaldr. Bir fonksiyonu yazmaya balamadan nce onun imzas hakknda iyice dnmeliyiz. (Giri parametresi(leri) almal m, geriye bir deer dndrmeli mi?)

M-Fonksiyonlar Kullanlrken Dikkat Edilecek Hususlar :


1 - Her MATLAB fonksiyonu function anahtar kelimesi ile balamaldr. 2 - fonksiyon_ad m-dosyasna verilen isimle ayn olmaldr. 3 - Bir MATLAB fonksiyonu komut penceresinden fonksiyon ad ve varsa eer parantez ierisinde birbirlerinden virglle ayrlm parametrelerle arlmaldr. 4 - Parametre aktarm olmas durumunda alt ve ana programda eit sayda giri parametresi olmaldr.

Uygulama: ki nokta arasndaki uzakl bulan program m-fonksiyon kullanarak yaznz.


x1 = 1.noktann x koordinati; x2 = 2.noktann x koordinati y1 = 1.noktann y koordinati; y2 = 2.noktann y koordinati

Uzaklik.m

function mesafe = Uzaklik(x1,y1,x2,y2)


mesafe=sqrt((x2-x1)^2+(y2-y1)^2);

%imza

%tanm

KOMUT PENCERES >> sonuc = Uzaklik(3,4,1,2) % ya da

>> Uzaklik(3,4,1,2)

% sonuc ans adli degiskene atanir

BR NCEK RNEN DZYAZI M DOSYASI LE ZM

Uzaklik.m clc;clear; x1=input(' x1 koordinatini gir: '); y1=input(' y1 koordinatini gir: '); x2=input(' x2 koordinatini gir: '); y2=input(' y2 koordinatini gir: '); mesafe=sqrt((x2-x1)^2+(y2-y1)^2); fprintf(' Girilen 2 nokta arasi mesafe : %f \n ',mesafe);

KOMUT PENCERES >>Uzaklik

!!! NEML !!!


Fonksiyon M dosyalar ierisinde input komutu kullanlarak kullancdan bilgi ALINMAZ. Fonksiyon ierisinde deerlendirilecek bilgi parametre olarak alnr.

Fonksiyon M dosyalar program yazma editr ierisindeki run butonu tklanarak ALITIRILMAZ. Komut penceresinden parametre(ler) girilerek altrlr.

!!! NEML !!!


Bir fonksiyon M dosyasnn iinde birden fazla fonksiyon tanmlayabilirsiniz. FonksiyonA.m adnda bir fonksiyon M dosyasnn ierii aadaki gibi olabilir. FonksiyonA.m function sonuc1=FonksiyonA(n) sonuc1=FonksiyonB(n)+5;

FonksiyonA temelde ne i yapyor?

function sonuc2=FonksiyonB(m) sonuc2=m*sqrt(m);

arlma Sras

Komut Penceresi -> FonksiyonA -> FonksiyonB -> FonksiyonB(sonuc) -> FonksiyonA(sonuc)->Komut Penceresi(sonuc)

UYGULAMA
Dardan girilen x ve y deerlerine gre aadaki fonksiyonun deerini hesaplayan bir MATLAB programn fonksiyon M dosyas formatnda yaznz. (Dosya ad olarak Fonksiyon.m kullannz.)

ln( x) 1 x F(x, y) x y x.y tan( ) log 10 ( y ) y


2
Bu fonksiyon M dosyasnn imzas ne olmal? Bu fonksiyon M dosyasnn tanm ne olmal?

UYGULAMALAR
1. Kendisine argman olarak ald say ift ise geriye 1 deerini, tek ise geriye 0 deerini dndren bir MATLAB programn fonksiyon M dosyas formatnda yaznz ve komut penceresinden altrnz. (Dosya ad olarak CiftMi.m kullannz.) 2. Kendisine argman olarak ald a ve b saylarn kullanarak geriye a^b ileminin sonucunu ^ operatrn kullanmadan hesaplayan bir MATLAB programn fonksiyon M dosyas formatnda yaznz ve komut penceresinden altrnz. (Dosya ad olarak CarparakKuvvet.m kullannz.) 3. Kendisine argman olarak ald a ve b saylarn kullanarak geriye a*b ileminin sonucunu * operatrn kullanmadan hesaplayan bir MATLAB programn fonksiyon M dosyas formatnda yaznz ve komut penceresinden altrnz. (Dosya ad olarak ToplayarakCarpma.m kullannz.) 4. Kendisine argman olarak ald say mkemmel ise geriye 1 deerini, deilse 0 deerini dndren bir MATLAB programn fonksiyon M dosyas formatnda yaznz ve komut penceresinden altrnz. (Dosya ad olarak MukemmelMi.m kullannz.)

You might also like