Bilgisayar Programlama Güz 2011 MF-103 Bilgisayar Programlama Güz 2011 (7. Sunu) (Yrd. Doç. Dr. Deniz Dal)
FONKSİYONLAR Fonksiyonlar da bilgisayar programlarıdır. Bilgisayarlar yardımıyla çözülmeye çalışılan problemler fonksiyonlar sayesinde yönetilmesi daha kolay, küçük parçacıklara bölünürler. Bu metoda “Böl ve Yönet” ya da “Divide and Conquer” adı verilir. Her fonksiyon: Kendine özgü bir isme sahiptir. GENELLİKLE kendine, üzerinde işlem yapacağı bir argüman (parametre) ya da argümanlar (parametreler) alır. GENELLİKLE geriye bir değer döndürür. (skaler, vektör ya da matris.)
FONKSİYON M-DOSYALARI Bir fonksiyon m-dosyasının iki bileşeni vardır: 1 – Fonksiyonun imzası veya prototipi (İlk satırda tanımlanır.) 2 – Fonksiyonun tanımı (yapması gereken iş) (İkinci satırdan başlar ve devam eder.)
FONKSİYON İMZASI VEYA PROTOTİPİ function cikisParametresi = FonksiyonAdi (girisParametreleri 1, 2, …n) function [cikisParametreleri 1, 2,…, n] = FonksiyonAdi (girisParametreleri 1, 2, …n) function cikisParametresi = FonksiyonAdi ( ) function cikisParametresi = FonksiyonAdi function FonksiyonAdi (girisParametreleri 1, 2, …n) Fonksiyon m-dosyalarının ilk satırı MUHAKKAK yukarıda tanımladığımız gibi fonksiyonların imzası veya prototipi dediğimiz satırlardan oluşmalıdır. Bir fonksiyonu yazmaya başlamadan önce onun imzası hakkında iyice düşünmeliyiz. (Giriş parametresi(leri) almalı mı, geriye bir değer döndürmeli mi?)
Fonksiyon M-Dosyaları Oluşturulurken Dikkat Edilmesi Gereken Hususlar: 1 - Her MATLAB fonksiyonu function anahtar kelimesi ile başlamalıdır. 2 - FonksiyonAdi m-dosyasına verilen isimle aynı olmalıdır. 3 - Bir MATLAB fonksiyonu komut penceresinden fonksiyon adı ve varsa eğer parantez içerisinde birbirlerinden virgüllerle ayrılmış parametrelerle çağrılmalıdır. 4 - Parametre aktarımı olması durumunda alt ve ana programda eşit sayıda giriş parametresi olmalıdır.
>> Uzaklik(3,4,1,2) %sonuc ans adli degiskene atanir Uygulama: İki nokta arasındaki uzaklığı bulan programı m-fonksiyon kullanarak yazınız. x1 = 1. noktanın x koordinati; x2 = 2. noktanın x koordinati y1 = 1. noktanın y koordinati; y2 = 2. noktanın y koordinati Uzaklik.m function mesafe = Uzaklik(x1,y1,x2,y2) %imza mesafe=sqrt((x2-x1)^2+(y2-y1)^2); %tanim KOMUT PENCERESİ >> sonuc=Uzaklik(3,4,1,2) %veya >> Uzaklik(3,4,1,2) %sonuc ans adli degiskene atanir
BİR ÖNCEKİ ÖRNEĞİN DÜZYAZI M-DOSYASI İLE ÇÖZÜMÜ Uzaklik.m 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ının imza satırlarında yer alan fonksiyon adları Paskal notasyonu ile tanımlanır. Aynı şekilde fonksiyon m-dosyalarına verilen isimler için de düzyazı m-dosyalarına verilen isimler de olduğu gibi Paskal Notasyonu kullanılır. Fonksiyon m-dosyalarının imza satırlarındaki giriş ve çıkış parametrelerini ifade etmek amacıyla kullanılan değişkenler deve notasyonuyla tanımlanırlar. Fonksiyon m-dosyaları içerisinde input komutu kullanılarak kullanıcıdan bilgi ALINMAZ. Fonksiyon içerisinde değerlendirilecek bilgi programa parametre olarak aktarılır. Fonksiyon m-dosyaları program yazma editörü içerisindeki run butonu tıklanarak ÇALIŞTIRILMAZLAR. Komut penceresinden parametre(ler) girilerek çalıştırılırlar.
ANA FONKSİYON, ALT (YARDIMCI) FONKSİYON MANTIĞI Bir fonksiyon m-dosyasının içerisinde daha önceden tanımlanmış ve çalışma dizininizin altında mevcut olan başka bir fonksiyon m-dosyasını (alt program, yardımcı program) kullanabilirsiniz. FonksiyonA.m (Ana) FonksiyonB.m (Alt) function sonuc1=FonksiyonA(n) sonuc1=FonksiyonB(n)+5; function sonuc2=FonksiyonB(m) sonuc2=m*sqrt(m); FonksiyonA temelde ne iş yapıyor? Çağrılma Sırası Komut Penceresi -> FonksiyonA -> FonksiyonB -> FonksiyonB(sonuc) -> FonksiyonA(sonuc)->Komut Penceresi(sonuc)
UYGULAMA Dışarıdan girilen x ve y değerlerine göre aşağıdaki fonksiyonun değerini hesaplayan bir MATLAB programını fonksiyon M dosyası formatında yazınız. (Dosya adı olarak Fonksiyon.m kullanınız.) Bu fonksiyon m-dosyasının imzası ne olmalıdır? Bu fonksiyon m-dosyasının tanımı ne olmalıdır?
KİTAPTAKİ 42-57 ARASI UYGULAMALARI BİRLİKTE YAZALIM VE ÇALIŞTIRALIM.