Makine Müh. & Jeoloji Müh. MATLAB’ de Programlama 2012-13/ Bahar Makine Müh. & Jeoloji Müh. Doç.Dr. Özcan Asilkan
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.)
Düz Yazı M-Dosyalarından Farkları 1- Fonksiyonlar bir değeri ve değerler kümesini döndürür. 2- Fonksiyonların içinde atanmış değişkenler, fonksiyona ait yerel değişkenlerdir ve Matlab komut penceresinde gösterilmezler; komut satırındanda geri çağrılamazlar. Oysa script’lerde değişkenler genel olup Matlab komut penceresinde gösterilir ve komut satırından çağrılabilirler.
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. 5 - 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. 6 - 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.
>> 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İ >> Uzaklik(3,4,1,2) %sonuc, ans adli degiskene atanir veya >> sonuc=Uzaklik(3,4,1,2) %sonuc, sonuc adli degiskene atanir
BİR ÖNCEKİ ÖRNEĞİN SCRIPT 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
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)
DEĞİŞKENLER Yerel (local) değişkenler Genel (global) değişkenler (topla.m)
KOMUTLAR what Tüm özel dosyaları listeler. inmem Tüm fonksiyonları listeler. dir Tüm dosyaları listeler. type Tüm m-dosyalarının içeriğini gösterir. edit Tüm m-dosyalarını düzenleme modunda açar.
KOMUTLAR clear fonksiyon_adi Belirli bir fonksiyonu bellekten siler. clear functions Tüm fonksiyonları bellekten siler. delete fonksiyon_adi.m Dosyayı sabit disk’ten siler.
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?