ALGORİTMALAR VE PROGRAMLAMA

Benzer belgeler
MATLAB/Programı Dallandıran İfadeler

ALGORİTMA VE PROGRAMLAMA Ek Ders Notu

GÖRÜNTÜ İŞLEME MATLAB DERS-4

MATLAB de. Programlama. Kontrol Yapıları. Döngü Yapıları. Doç. Dr. İrfan KAYMAZ Matlab Ders Notları

BM202 SAYISAL ÇÖZÜMLEME

GÖRÜNTÜ İŞLEME DERS-3

disp VEYA fprintf KOMUTLARIYLA EKRANA MESAJ YAZDIRMA

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

GÖRÜNTÜ İŞLEME DERS-3

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

MatLab. Mustafa Coşar

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

GÖRÜNTÜ İŞLEME MATLAB DERS-3

Fen ve Mühendislik Uygulamalarında MATLAB

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

BİLGİSAYAR PROGRAMLAMA DERSİ

Soru 1: 3x5 boyutunda s adlı sıfır matrisi oluşturunuz.

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

İnternet Programcılığı Dersi 2.Dönem Ders Notu

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Erzurum Teknik Üniversitesi Mühendislik Mimarlık Fakültesi Bilgisayar Programlama Dersi Ödevi Soru

Matlab da Dizi ve Matrisler. Mustafa Coşar

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

PROGRAMINIZI ANĠ SONLANDIRMAK ĠSTEDĠĞĠNĠZ YER BĠR DÖNGÜNÜN ĠÇĠ ĠSE NE OLUR?????????

ALGORİTMA VE PROGRAMLAMA I

YUVARLAMA FONKSİYONLARI

Bilgisayar Programlama MATLAB

HSancak Nesne Tabanlı Programlama I Ders Notları

1- Temel MATLAB Fonksiyonları ve Programlama

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

PROGRAMLAMA ve YAZILIM. Sayısal Analiz Yrd.Doç.Dr. Zekeriya PARLAK

Program BagilHarfNotuHesabi.m clc; clear all; %Microsoft Excel Dosyalarını Matlaba okutmaya yarar. x=xlsread('veri.xls','b2:b37');

DENEY 1: Matlab de Temel Uygulamalar

BİLGİSAYAR PROGRAMLAMA DERSİ

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1

Bilgisayar Programlama MATLAB

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

Bilgisayar Programlama

Yrd. Doç. Dr. A. Burak İNNER

BİLGİSAYAR PROGRAMLAMA DERSİ

Erzurum Teknik Üniversitesi Mühendislik Mimarlık Fakültesi Bilgisayar Programlama Dersi Final Sınavı Soru Toplam Puanlar

ALGORİTMA VE PROGRAMLAMA I

Akış Kontrol Mekanizmaları

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

BMT 101 Algoritma ve Programlama I 8. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

BPR152-Algoritma ve Programlama II Uygulama -8

Matris İşlemleri Uygulaması

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

MATLAB İLE PROGRAMLAMAYA GİRİŞ. Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü

Koşul deyimleri: Koşul deyimleri döngülerle birlikte programcılıkta en çok kullanılan deyimlerdir. Matlab de kullanılan koşul deyimleri;

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

LYS MATEMATİK DENEME - 1

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı


MATLAB de Programlama & Dosya Yönetimi. EE-346 Hafta 6 Dr. Ayşe DEMİRHAN

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

BİLGİSAYAR PROGRAMLAMA DERSİ

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

Internet Programming II

MAK 210 SAYISAL ANALİZ

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

BİLGİSAYAR PROGRAMLAMA DERSİ

DÖNGÜLER BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA DENEY-4 FÖYÜ GİRİŞ LABORATUARI.

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

MATLAB Temelleri. EEM104 - Bilgisayar Programlama. Matlab ın Açılış Ekranı. Dr. Mehmet Siraç Özerdem EEM Dicle Üniversitesi. Launch Pad.

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

C++ Dilinde Bazı Temel Algoritmalar

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

MATLAB Semineri. EM 314 Kontrol Sistemleri 1 GÜMMF Elektrik-Elektronik Müh. Bölümü. 30 Nisan / 1 Mayıs 2007

C Programlama Dilininin Basit Yapıları

1. LabVIEW ile Programlama

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

MATLAB a GİRİŞ. Doç. Dr. Mehmet İTİK. Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü

BİLGİSAYAR PROGRAMLAMA VE FİZİKTE PROGRAMLAMA DERSLERİ İÇİN MATLAB ÇALIŞMA NOTLARI. Mehmet ÖZKAN

Hafta 4 Döngü Yapıları

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Bir algoritma aşağıdaki ğ dki özelliklere sahip komutların sonlu bir kümesidir.

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

BLM 210 PROGRAMLAMA LABORATUVARI II PROJELERİ

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

KONTROL YAPILARI JAVADA UC TURLU KONTROL YAPISI VARDIR BUNLAR İF ELSE İF ELSE İF SWİTCH YAPILARIDIR. IF ELSE YAPISI if (deger) { }else {

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Nesne Yönelimli Programlama

1 PROGRAMLAMAYA GİRİŞ

FONKSİYONLARIN TABLO ŞEKLİNDE HESAPLANMASI

ALGORİTMA VE PROGRAMLAMA I

MATLAB Yardımcı Ders Notları

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Program AkıĢ Kontrol Yapıları

UYGULAMALAR -2 Select case Yapısı: Select Case case case case case case is case Else End Select Örnek:

Transkript:

ALGORİTMALAR VE PROGRAMLAMA DENEY-2: MATLAB da FONKSİYON M-DOSYALARI, KOŞUL İŞLEMLERİ (switch case), BREAK, CONTINUE, RETURN KOMUTLARI FONKSİYON M-DOSYALARI: Fonksiyon, belirli sayıda verileri kullanarak bunları işleyen ve bir sonuç üreten yapıdır. Fonksiyon m-dosyaları düzyazı (script) m-dosyalarına benzerler. Ancak iki temel farkı vardır. 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 (local variables) ve MATLAB komut penceresinde gösterilmezler. Bu değişkenler komut satırından da geri çağırılamazlar. Oysa script lerde değişkenler genel (global variables) olup MATLAB komut penceresinde gösterilir ve komut satırından çağırılabilirler. Fonksiyonlar, belirli sayıda verileri kullanarak bunları işleyen ve bir sonuç üreten programlardır. Fonksiyonları programlarda sadece fonksiyon adı ve sözdizimine uymak şartıyla defalarca kullanma olanağı bulunmaktadır. Fonksiyonların genel yazım biçimi; function cikisdegiskeni_1=fonksiyon_adi (girisdegiskeni_1) Bu yazım biçiminde fonksiyona bir adet parametre (giriş_değişkeni_1) ile giriş verilmektedir. Fonksiyonun çıkış değişkeni sayısı ise yine bir tanedir. Giriş ve çıkış sayısı birden fazla ise fonksiyon tanımlaması aşağıdaki gibi yapılır; function [out1,out2,...,outn] = fonksiyon_adı (in1,in2,...,inm) Aşağıda bir örnek fonksiyon dosyası verilmiştir. Fonksiyon m-dosyasında önemli noktalar: 1. Fonksiyon m-dosyalarında ilk satır kesinlikle function ile başlamalıdır. Bu ilk satır fonksiyon tanımının yapıldığı satır olup fonksiyon adı ve giriş çıkış değişkenleri bu satırda belirtilir. 1

2. Fonksiyon hakkında yardım istenildiğinde, yani help fonksiyon_adi yazıldığında görüntülenecek % ile başlayan açıklama satırları ilk satırdan hemen sonra yazılmalıdır. 3. Fonksiyon adı ile dosya adı aynı olmalıdır. 4. Değişken çıkışları ekrana yazdırılmamalıdır. 5. Bir fonksiyon içerisinde kullanılan bütün değişkenler bu fonksiyon için geçerlidir. Örnek: İki nokta arasındaki uzaklığı bulan programı m-fonksiyon kullanarak yazınız. x1 = 1.noktanın koordinatının apsisi; x2 = 2.noktanın apsisi y1 = 1.noktanın ordinatı; y2 = 2.noktanın ordinatı ---------------------------------------------------------------- function mesafe = uzaklik(x1,y1,x2,y2) % İki nokta arasındaki uzaklık hesaplanır. mesafe=sqrt((x2-x1)^2+(y2-y1)^2); ---------------------------------------------------------------- Oluşturulan dosyanın adı uzaklik.m olacak şekilde kayıt edilmelidir. Artık uzaklik adında bir fonksiyon oluşturuldu. Bu fonksiyonu oluşturmak için bir m-dosyasında aşağıdaki kodları yazınız ve çalıştırınız. clear all; clc; devam=1; while devam==1 a1=input('birinci noktanın x ekseni değerini giriniz:'); b1=input('birinci noktanın y ekseni değerini giriniz:'); a2=input('ikinci noktanın x ekseni değerini giriniz:'); b2=input('ikinci noktanın y ekseni değerini giriniz:'); uzk=uzaklik(a1,b1,a2,b2); fprintf('iki nokta arasındaki uzaklık %4.2f '' dir.\n',uzk); goster=sprintf('uzaklik değeri:%4.2f',uzk); msgbox(goster,'uzaklik'); x=input('yeni bir uzaklık hesabı yapmak ister misiniz? (Evet:E), (Hayır:Diğer Tuşlar)','s'); if x=='e' x=='e' devam=1; else devam==2; break; help uzaklik Örnek: Girilen iki sayının harmonik ortalamasını bulan fonksiyon m-dosyasını yazınız. function h=horta(a,b) %horta:harmonik Ortalama % horta(a,b) verilen iki sayının harmonik ortalamasını hesaplar h=2/(1/a+1/b) Bu fonksiyonu komut penceresinden çağırarak istediğiniz iki sayının harmonik ortalamasını hesaplayınız. Örnek: Girilen bir sayı vektörünün ortalama değerini ve standart sapmasını bulan bir fonksiyon yazalım. ----------------------------------------- function [ort, stds] = ort_stdsapma (x) 2

% ort_stdsapma fonksiyonu girilen matristeki her bir sütunun ortalama değerini %ve standart sapmasını bulur. [m,n] = size(x); if m == 1 m = n; ort = sum(x)/m; stds=sqrt(sum(x.^2)/m-ort.^2); ------------------------------------------------- MATLAB komut satırında aşağıdaki satırlar sırasıyla yazılırsa; >> a=[1 2 3 4 5]; >> [x,y]=ort_stdsapma(a) Örnek: Bir metin içinde kaç tane a harfinin bulunduğunu hesaplamak için bir fonksiyon-m dosyası oluşturunuz. function kactane=a_harfi_sayisi(x) kactane=0; for i=1:1:length(x) if x(i)=='a' kactane=kactane+1; clear all; clc; metin=input('bir metin giriniz:','s'); sayi=a_harfi_sayisi(metin); fprintf('a harfi sayısı %d dir. \n',sayi); Örnek: Aşağıdaki gibi bir ekran çıktısı verecek ekranarakambas.m adında bir fonksiyon M dosyası yazınız. (Fonksiyonunuz kisine hiçbir argüman almayacak ve geriye yine hiçbir değer çevirmeyecektir.) EKRAN ÇIKTISI >>ekranarakambas() 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 ekranarakambas.m function ekranarakambas() clc; for i=1:9 %satir sayisi for j=1:(10-i) %sutun sayisi fprintf('%d ',j); fprintf('\n'); Komut satırında aşağıdaki komutu çalıştırınız. >>ekranarakambas Örnek: Aşağıda bir M-fonksiyon ve bir de M-düzyazı şeklinde MATLAB kodları verilmiştir. function s=polinom_sonuc(a,k) % A polinomunun x=k için değerini hesaplar. s=0; for i=0:1:(length(a)-1) s=s+a(i+1)*k^(i); clear all; B=[1 2 5]; Sonuc=polinom_sonuc(B,3) 3

Yukarıda verilen kodları uygun şekilde MATLAB de yazınız ve kaydediniz. M-düzyazı şeklinde olan MATLAB kodunu çalıştırınız. Burada; B(x) polinomu 2 B ( x) x 2x 5 dir. Fonksiyon-m dosyasının çalışmasını inceleyiniz. SORULAR: 1) Bir n elemanlı kümenin r elemanlı kombinasyon sayısını hesaplamak için bir n! fonksiyon-m dosyası oluşturunuz. C( n, r) r!( n r)! 2) a) Aşağıda sağda akış diyagramı verilen, p sayısından A matrisinde kaç tane olduğunu bulan fonksiyonun MATLAB kodunu yazınız. (İlk satır: function sayi=kactane(a,p) olacaktır). b) Aşağıda solda verilen akış diyagramını gerçekleyen MATLAB kodunu yazınız. SINAV SORUSU Başla A=[1 2 1;2 1 1;4 1 1]; B=[8 9 1;5 7 8;9 1 6]; sayi=kactane(a,1) [a,b]=size(b) kactane fonkiyonuna Başla A değişkenini ve p değişkenini fonksiyon girişi olarak al. [m,n]=size(a) sayi=0 i=1,a,1 B Dur j=1,b,1 B(i,j)<sayi E B(i,j)=0 H B(i,j)=1 i=1,m,1 sayi değerini fonksiyon dönüş değeri olarak döndür Dur j=1,n,1 A(m,n)=p E sayi=sayi+1 H 3) Girilen iki sayının aralarında asal olup olmadığını kontrol edecek ve aralarında asal ise 1 değil ise 0 çıkışı verecek olan fonksiyon-m dosyasını oluşturunuz. 4) MATLAB da tanımlı olan polyder adlı bir fonksiyon mevcuttur. Bu fonksiyon girilen bir 2 polinomun türevini almaktadır. Örneğin; A ( x) x x 1 olsun. Bu polinomun türevi tura ( x) 2x 1 dir. MATLAB da aşağıdaki satırları yazınız. >> A=[1 1 1]; >> polyder(a) Buradaki polyder() fonksiyonunun işini gerçekleyen bir fonksiyon-m dosyası oluşturunuz. Fonksiyonunuzun adı polinomturev.m olsun. KOŞUL İŞLEMLERİ: if (eğer) yapısı bir koşulun gerçekleşmesi durumunda bir i yaptırmak için sıklıkla kullanılır. Bu ifade, if koşul if koşul else if koşul elseif else 4

switch (değiştir) if yapısına benzer. Burada daha çok sözel olarak belirtilen durumlara göre yönlirme i yapılır. Bu yapının kullanımı case ile aşağıdaki gibidir; switch durum case durum1 1 case durum2 2 otherwise 3 Örnek: gun degiskeninin, is gunu olup olmadığına karar vermek için aşağıdaki kodlar düşünülür; gun=input('hangi gun=', 's'); switch lower(gun) case {'pazartesi', 'sali','carsamba','persembe','cuma'} disp('iş günü') case {'cumartesi','pazar'} disp('tatil!') Örnek: Kullanıcı tarafından girilen bir a=10.2424542 değişkeninin virgülden sonra 2 mi 3 hane mi yazdırılacağının sorgulanması. a=10.2424542; buton=questdlg('virgülden sonra kaç hane verilsin?','sonuc','2 hane', '3 hane','3 hane'); switch buton case {'2 hane'} fprintf('%1.2f \n',a); case {'3 hane'} fprintf('%1.3f \n',a); Aynı kodu aşağıdaki gibi yazınız. a=10.2424542; buton=questdlg('virgülden sonra kaç hane verilsin?','sonuc','2 hane', '3 hane','3 hane'); switch buton case {'2 hane'} x=sprintf('%1.2f \n',a); msgbox(x,'sonuc'); case {'3 hane'} x=sprintf('%1.3f \n',a); msgbox(x,'sonuc'); Örnek: Aşağıdaki programı yazınız. clear all; x=input('x tam sayısını giriniz:'); secim=menu('işlem türünü seçiniz','x! hesabı','taylor serisine açarak e^x hesabı','x sayısına kadar olan Fibonacci serisinin hesaplanması'); f=1; switch secim case 1 for i=1:x f=f*i; fprintf('x!=%6.2f dir\n',f) case 2 5

N=input('Taylor serisindeki terim sayısını giriniz:'); T=1; for i=1:1:(n-1) f=f*i; T=T+x^i/f; fprintf('%d terim sayısı için e^x=%6.2f dir\n',n,t) case 3 terim1=1; terim2=1; fprintf('%d, %d ',terim1, terim2) i=1; while (terim1+terim2)<=x terim3=terim1+terim2; fprintf(' %d, ',terim3) terim1=terim2; terim2=terim3; for, döngüsü bir in birden daha fazla sayıda yaptırılmasında kullanılır. (Örneğin, kök bulma problemlerinde kullanılan iterasyon çözümleri). Kullanımı, biçimindedir. for i=1:n (i Tam sayı (integer)) while, döngüsü, belirli bir durumun gerçekleşmesi durumunda bir in birden daha fazla sayıda yaptırılmasında kullanılır. done=0; while done==0 Örnek: 1 den N ye kadar olan sayıların toplamını while, döngüsü ile yapan bir program düşünelim. clear,clc N=input('bir sayi giriniz='); say=0; i=0;done=0; while done==0 i=i+1; %bir önceki örnekte for, döngüsündeki i ye karşılık gelir. if i==n done=1; say=say+i; say break, continue ve return komutları: 6

break komutu döngüleri sonlandırır. Genellikle bir koşula bağlıdır. continue komutu döngünün bir sonraki adımına atlar. * for için döngü değişkeni arttırılır! * Genellikle bir koşula bağlıdır. return komutu programı sonlandırır. Örnek: Aşağıdaki fonksiyon-m dosyasını oluşturunuz. 7

Örnek: Bir oyun programı yazalım. Koşullar şöyle 1. MATLAB 0 ile 100 arasında rasgele bir tam sayı belirleyecek 2. Sizden tahminler yapmanızı isteyecek 3. Tahmin ettiğiniz sayı, MATLAB in tuttuğu sayıdan küçükse ekrana büyült, büyükse kücült yazdıracak. 4. Sayıyı tahmin ettiğinizde döngü kırılacak ve size kaç tahmin yaptığınızı söyleyecek. Örnek: Girilen iki sayının en küçük ortak katını bulan bir fonksiyon yazalım. İki sayının en küçük ortak katı en fazla o iki tam sayının çarpımı kadardır. Girilen sayıların tamsayı olup olmadığının da kontrolünü yapalım! Sorular: 1) Girilen iki sayının en büyük ortak bölenini bulmak için gerekli olan fonksiyon-m dosyasını oluşturunuz. 8