BM-103 Programlamaya Giriş Güz 2014 (7. Sunu)

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 11 Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama
Advertisements

Nesneye Yönelik Programlama
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
MATLAB Bilgisayar Programlama Yrd.Doç. Dr. Aslıhan KURNUÇ
Makine Müh. & Jeoloji Müh.
Bilgisayar Programlama Güz 2011
EKRAN ÇIKTISI.
Bilgisayar Programlama Güz 2011
Ayrık Yapılar Matlab Notları
Bilgisayar Programlama Güz 2011
Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT
MATLAB’İN SAYI YUVARLAMA FONKSİYONLARI
MATLAB’ de Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut
Nesneye Yönelik Programlama
MATLAB’ de Programlama XII Hafta 12 Matlab Ders Notları.
Yapısal Program Geliştirme – if, if-else
Program Kontrol İfadeleri
Makine Müh. & Jeoloji Müh.
Fonksiyonlar Fonksiyon nedir?
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
Bilgisayar Programlama Güz 2011
6. HAFTA
Görsel C# ile Windows Programlama
4. HAFTA Mart 2010.
Bilgisayar Programlama Güz 2011
MATLAB’ de Programlama
Paralel Programlamaya Giriş
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bilgisayar Programlama Güz 2011
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
BM-103 Programlamaya Giriş Güz 2014 (8. Sunu)
Bilgisayar Programlama
MATLAB’te Döngüler.
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
BM-103 Programlamaya Giriş Güz 2014 (4. Sunu)
BM-103 Programlamaya Giriş Güz 2014 (2. Sunu)
BM-103 Programlamaya Giriş Güz 2014 (9. Sunu)
MATLAB’ de Programlama
Bilgisayar Programlama Güz 2011
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Lineer Denklem Sistemlerinin
4. Hafta1 4. HAFTA. 4. Hafta2 Fonksiyonlar  Büyük problemler, küçük parçalara bölünerek kolay çözülür  Yazılımlar benzer modüller içerirler  Hata ayıklama.
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
Adım Adım Algoritma.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
5. HAFTA Mart Discussion: comp.soft-sys.matlab An unmoderated newsgroup that focuses on the.
9. HAFTA 25 Nisan2016. Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde.
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
BİLGİSAYAR PROGRAMLAMA DERSİ
BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları 1.
BM-103 Programlamaya Giriş Güz 2016 (4. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (3. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (8. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (5. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (7. Sunu)
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BM-103 Programlamaya Giriş Güz 2012 (6. Sunu)
BM-103 Programlamaya Giriş Güz 2016 (6. Sunu)
Bilgisayar Bilimi Problem Çözme Süreci-2.
Discussion: comp.soft-sys.matlab
Lineer Denklem Sistemlerinin
Akis diyagramı Örnekleri
Bilgisayar Bilimi Fonksiyonlar-2.
Sunum transkripti:

BM-103 Programlamaya Giriş Güz 2014 (7. Sunu) (Yrd. Doç. Dr. Deniz Dal)

GERİYE SADECE 1 VEYA 0 DEĞERİNİ DÖNDÜREN FONKSİYONLARIN if ve while YAPILARINDA KOŞUL OLARAK KULLANILMASI Bundan önceki derslerimizde if ve while deyimlerini kontrol amacıyla kullanılacak koşulları oluştururken sadece ilişkisel ve mantıksal operatörlerden faydalandık. Bundan sonra if ve while deyimlerinin yanında koşul olarak geriye sadece 1 veya 0 değerini döndüren ve bizlerin oluşturduğu alt (yardımcı) fonksiyonları da kullanabileceğiz. if AsalMi(n) %birşey yap end while ~RakamlariFarkliMi(n) %birşey yap end

İPUCU Bilgisayar programlamada, geriye 1 veya 0 değerini döndüren MATLAB fonksiyonlarının adlarının sonuna Mi veya Mu eklerini getiren ve böylece onları diğer fonksiyonlardan kolayca ayırt edebilmeye imkan tanıyan bir notasyondan faydalanılır. Bu türden fonksiyon adlarına örnek olarak TekSayiMi, AsalSayiMi veya SayininRakamlariFarkliMi verilebilir.

UYGULAMA Kendisine parametre olarak aldığı sayı bir tek sayı ise geriye 1 değerini aksi takdirde geriye 0 değerini döndüren bir MATLAB fonksiyonunu TekSayiMi.m adındaki fonksiyon m-dosyasının içerisine yazınız. function sonuc=TekSayiMi(sayi) sonuc=mod(sayi,2); KOMUT PENCERESİ >>TekSayiMi(9) ans= 1 >>TekSayiMi(8)

UYGULAMA Kendisine parametre olarak aldığı bir alt limit ile bir üst limit arasındaki tek sayıların adedini hesaplayarak geriye döndüren bir MATLAB fonksiyonunu AraliktakiTeklerinSayisiniHesapla.m adındaki fonksiyon m-dosyasının içerisine yazınız. Programın çalışabilmesi için bu alt fonksiyonun çalışma dizini altında tanımlı olması (mevcut olması) gereklidir. function teklerSayaci=AraliktakiTeklerinSayisiniHesapla(altLimit,ustLimit) teklerSayaci=0; for i=altLimit:ustLimit if TekSayiMi(i)%Geriye 1 veya 0 Döndüren Alt Fonksiyon teklerSayaci=teklerSayaci+1; end KOMUT PENCERESİ >>AraliktakiTeklerinSayisiniHesapla(1,100) ans= 50

return Komutu Yazdığınız MATLAB programını herhangi bir anda (programın normalde sona erdiği noktanın haricinde - early termination) sona erdirmek için return komutunu kullanabilirsiniz. Eğer return komutu ana program içerisinde kullanılmışsa, kontrol komut penceresindeki klavyeye geçer. Eğer return komutu bir fonksiyon içerisinde kullanılmışsa, kontrol bu fonksiyonu çağıran ana fonksiyona devredilir. return komutunun hata ayıklama modundan çıkmak için de kullanıldığını hatırlayınız.

Soru: Ax²+Bx+C=0 şeklinde verilen 2 Soru: Ax²+Bx+C=0 şeklinde verilen 2. derece denklemin köklerini bulan programın akış diyagramını çiziniz.

ÇÖZÜM 1 ÇÖZÜM 2 DÜZYAZI M ÇÖZÜMLER A=input('A Katsayısını Giriniz= '); B=input('B Katsayısını Giriniz= '); C=input('C Sabitini Giriniz= '); delta=B^2-4*A*C; if delta<0 disp('Kökler Sanal'); else x1=(-B+sqrt(delta))/(2*A); x2=(-B-sqrt(delta))/(2*A); fprintf('1. Kök : %f \n', x1); fprintf('2. Kök : %f \n', x2); end A=input('A Katsayısını Giriniz= '); B=input('B Katsayısını Giriniz= '); C=input('C Sabitini Giriniz= '); delta=B^2-4*A*C; if delta<0 disp('Kökler Sanal'); return; %Programı Ani Sonlandır end x1=(-B+sqrt(delta))/(2*A); x2=(-B-sqrt(delta))/(2*A); fprintf('1. Kök : %f \n', x1); fprintf('2. Kök : %f \n', x2); DÜZYAZI M ÇÖZÜMLER

ÇÖZÜM 3 1. FONKSİYON M ÇÖZÜM function IkinciDereceDenkleminKokleriniHesapla(A,B,C) delta=B^2-4*A*C; if delta<0 disp('Kökler Sanal'); else x1=(-B+sqrt(delta))/(2*A); x2=(-B-sqrt(delta))/(2*A); fprintf('1. Kök : %f \n', x1); fprintf('2. Kök : %f \n', x2); end Çözümün hem if ve hem de else bloğunda kök hesabı yaptırılmadığı için (sadece else bloğunda yaptırılıyor) geriye belirli bir değer döndürülmediğine dikkat ediniz. Bu yüzden imza satırında bir atama operatörü kullanılmamıştır. 1. FONKSİYON M ÇÖZÜM

ÇÖZÜM 4 2. FONKSİYON M ÇÖZÜM function IkinciDereceDenkleminKokleriniHesapla(A,B,C) delta=B^2-4*A*C; if delta<0 disp('Kökler Sanal'); return; %Programı Ani Sonlandır end x1=(-B+sqrt(delta))/(2*A); x2=(-B-sqrt(delta))/(2*A); fprintf('1. Kök : %f \n', x1); fprintf('2. Kök : %f \n', x2); İmza satırında bir atama operatörü kullanılmadığına, yani fonksiyonun geriye bir değer döndürmediğine dikkat ediniz. 2. FONKSİYON M ÇÖZÜM

Olmayana Ergi Yöntemi ile İspat Bu ispat yöntemi doğruluğu gösterilmek istenen bir ifadenin yanlış olduğunu kabul ederek bir ispat yolculuğuna koyulur. Yöntem, eğer bu (yanlışlığı ispat) yolculuğu esnasında bir çelişkiyle karşılaşırsa başta yanlış olduğunu kabul ettiği ifadenin aslında doğru bir ifade olduğunu ispatlamış olur. Bu yöntem tam ters bir mantıkla da çalışır.

UYGULAMA Kendisine parametre olarak aldığı sayı bir çift sayı ise geriye 1 değerini aksi takdirde geriye 0 değerini döndüren bir MATLAB fonksiyonunu CiftSayiMi.m adındaki fonksiyon m-dosyasının içerisine yazınız. function sonuc=CiftSayiMi(sayi) sonuc=0;%Sayının Çift Sayı Olmadığını Kabul Et if mod(sayi,2)==0 sonuc=1;%Başlangıç Kabulünü Değiştir end KOMUT PENCERESİ >>CiftSayiMi(8) ans= 1 >>CiftSayiMi(9)

GizemliFonksiyon.m function GizemliFonksiyon(n) clc; if (n<2)||(n>20) disp('Beklenen Aralıkta Bir Giriş Değil.'); return; end for i=1:n if (i==1)||(i==n) for j=1:n fprintf('#'); %Ekrana # Bas fprintf('\n'); else fprintf('@'); %Ekrana @ Bas for j=2:(n-1) fprintf(' '); %Ekrana Boşluk Bas fprintf('@\n'); Yanda verilen GizemliFonksiyon.m adlı fonksiyon m-dosyası genel olarak nasıl bir iş yapar? Komut penceresinde çalıştırılan GizemliFonksiyon(10) nasıl bir ekran çıktısı verir? Çözüm: Fonksiyon içerisinde n gördüğünüz her yere 10 rakamını yerleştirip sanki MATLAB programıymışsınız gibi  fonksiyonu satır satır işletmelisiniz. 13

KİTAPTAKİ 22.7-22.30 ARASI UYGULAMALARI BİRLİKTE YAZALIM VE ÇALIŞTIRALIM.