BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları 1
M-Dosya Yapısı Bir senaryo dosyası (script file) özel bir görevi yerine getirmek için gerekli MATLAB komutlarının saklandığı bir metin programıdır. Başka bir ifadeyle; bir hesaplamayı gerçekleştirmek için yazılacak bir çok komutlar dizisi, komut penceresinden tek tek girmek yerine bir dosyada saklanır daha sonra bu dosya çalıştırılarak bu komutlar icra edilir. Bu dosyaların MATLAB’ın çalıştığı dizinde "*****.m" uzantısıyla saklanmaları gerekir. Senaryo dosyalarının (M - dosyalarının) oluşturulması ve yazılması için MATLAB bir metin hazırlayıcısı (text editor) sunmaktadır. Bu senaryo dosyaları Windows’da Notepad gibi herhangi bir metin hazırlayıcısında da yazılabilirler. MATLAB metin hazırlayıcısı ya komut penceresinin üst kısmında yer alan “New M-file” düğmesi tıklanarak veya kısaca “File” menüsünden “New/M-file” ibaresini seçerek etkin hale getirilebilir.
Neden M-Dosyalarına İhtiyaç Duyuyoruz? Değişken sayısı fazla olması durumunda Akış diyagramlarının uygulanmasında Programdaki değişikliklerin kolayca yapılmasında M-dosyalarının Kullanılmasında Dikkat Edilecek Hususlar: M-dosyası çalışma klasörü olarak tanımlanan klasörde bulunmalıdır. Bu dosyaların MATLAB’in Çalışma Dizini (Current Folder) altında "DosyaAdi.m" şeklinde saklanmaları gerekir. M-dosyasına isim verilirken kesinlikle Türkçe karakter kullanılmamalıdır. M-dosyasına isim verilirken MATLAB’in hazır komutları (pi, exp, sin ve vs.) verilmemelidir.
Uygulama-1: input komutu ile kullanıcıdan klavye yoluyla aldığı iki sayının ortalamasını hesaplayıp bu değeri fprintf komutuyla ekrana yazan bir programın m-dosyası kullanılarak hazırlayınız. UYGULAMALAR
Uygulama-2: Ekrandan dairenin yarıçapını isteyerek alanını ve çevresini hesaplayan programı m-dosyası kullanılarak hazırlayınız.
Uygulama-2: input komutu ile kullanıcıdan klavye yoluyla aldığı santigrat derece cinsinden bir sıcaklık değerini fahrenhayt derece cinsinden sıcaklık değerine dönüştüren ve bu değeri fprintf komutuyla ekrana yazan bir programı m-dosyası kullanılarak hazırlayınız. Not: Fahrenhayt=1.8*Santigrat+32
Uygulama-2: input komutu ile kullanıcıdan klavye yoluyla aldığı x ve y değerlerine göre aşağıdaki fonksiyonun değerini hesaplayan bir program yazınız.
MATEMATİKSEL VE MANTIKSAL OPERATÖRLER MATLAB' da yapılan bir işlem sonucunda 'doğru' veya 'yanlış' şeklinde sonuçlar üreten iki çeşit operatör vardır. Bunlar matematiksel ve mantıksal operatörlerdir. Matematiksel veya mantıksal operatörler kullanılarak gerçekleştirilen işlemlerde, işlemin sonucunun "doğru" olması durumunda 1, "yanlış" olması durumunda ise 0 değeri elde edilir. ==Eşit Mi? ~=Eşit Değil Mi? >Büyük Mü?>=Büyük veya Eşit Mi? MATEMATİKSEL ÖPERATÖRLER <Küçük Mü? <=Küçük veya Eşit Mi?
Eşitlik testinde 2 adet "==" işareti kullanılır. Oysa değişken atamalarında kullandığımız eşittir "=" 1 tanedir. MATLAB komut penceresinde 3=5 yazdığımızda program hata verir. Oysa 3==5 yazdığımızda bu “3, 5'e eşit midir?" anlamına gelir, karşılaştırma yanlıştır ve MATLAB bu durum için 0 (Sıfır) sonucunu üretir.
İlişkisel Operatörlerin Öncelik Sıraları İlişkisel operatörler aritmetik operatörlerden daha düşük bir işlem önceliğine sahiptirler. Örneğin komut penceresinde 3+4<7-5 şeklinde çalıştırılacak bir MATLAB deyimi arka planda önce 7<2 formuna dönüştürülür ve ilişkisel test (küçüklük testi) daha sonra gerçekleştirilir. Benzer şekilde i+j==10 gibi bir eşitlik testi, öncelikle hesaplanan i+j aritmetik işleminin sonucu ile 10 sayısı arasında gerçekleştirilir. Yukarıdaki deyimler, karışıklığa meydan vermemek için (3+4)<(7-5) ve (i+j)==10 formlarına sokulabilirler.
Mantıksal Operatörler Mantıksal operatörler de ilişkisel operatörler gibi sonuç olarak 1 (BİR) (true) veya 0 (SIFIR) (false) değerlerini üretirler. ABA && B ABA || B ~A~AA Mantıksal Matlab Operatörleri İşlevleri a&&bVE (AND) a||bVEYA (OR) ~a~aDEĞİL (NOT)
Örnekler:
KONTROL YAPILARI
if Şartlı Deyimi Bir karşılaştırma ifadesini veya mantıksal bir ifadeyi test ederek bunun sonucuna göre mümkün seçeneklerden birini icra edebilen bir komuttur. if Deyiminin Üç Farklı Kullanım Şekli Vardır: if koşul işlem(ler) end if koşul işlem(ler) else işlem(ler) end if koşul1 işlem(ler) elseif koşul2 işlem(ler) else işlem(ler) end koşul dediğimiz şey bir karşılaştırma ifadesi (a>b gibi) ya da bir mantıksal ifadedir (a&&b gibi).
UYGULAMALAR Uygulama-1: Klavyeden girilen iki sayının oranını bulan ve fprintf komutuyla ekrana basan bir MATLAB düzyazı m-programı yazınız. (Programınız payda sıfır girildiğinde disp komutuyla ekrana “Üzgünüm! Sıfıra Bölüm Hatası Var.” mesajını yazdırmalıdır.)
Uygulama-2: Kullanıcıdan klavye yoluyla alınan x ve y değerlerine göre aşağıdaki sonuçlardan birini hesaplayan bir MATLAB programı yazınız.
Adım 1: Başla Adım 2: A,B,C sabitlerini değişkenlere ata Adım 3: Deltayı hesapla Adım 4: Delta<0 ise Adım 5’e, değilse Adım 6’a geç Adım 5: Ekrana ‘’Kökler sanaldır’’ yaz Adım 9’a geç Adım 6: 1. kökü hesapla, x1 değişkenine ata Adım 7: 2. kökü hesapla, x2 değişkenine ata Adım 8: x1 ve x2 değişkenlerini ekrana yaz Adım 9: Bitir
Neden Hata Veriyor
Uygulama-4: Girilen ay numarasına göre gün sayısını hesaplayan MATLAB programını yazınız.
switch Şartlı Deyimi
Kaynaklar: Ahmet Dumlu ders notlari Matlab İle Programlama (Dr. Deniz DAL) Matlab 7.6 Simulink & Mühendislik Uygulamaları (Prof. Dr. Uğur ARİFOĞLU) 22