Professional Documents
Culture Documents
PROGRAMLAMA
DERS-2
1
DÖNGÜ
Birçok programda, bazı işlemler belirli ardışık değerlerle
gerçekleştirilmekte veya belirli sayıda yapılmaktadır.
Programlardaki belirli işlem bloklarını, verilen sayıda
gerçekleştiren işlem akış çevrimlerine döngü denir. Döngüler
genelde sayaç kullanırlar.
Örneğin 1 ile 100 arasındaki tek sayıların toplamını
toplam=1+3+5+…+99 gibi uzun uzadıya yazmak yerine 1 ile
100 arasında ikişer ikişer artan bir döngü açarız ve döngü
değişkenini ardışıl toplarız.
2
DÖNGÜ KURMA
Tekrarlı işlemleri gerçekleştirmek için döngü denilen yapılar
algoritmalarda kullanılır. Sorunun çözümü için, çözümde yer
alan herhangi bir adım ya da adımların birden fazla
kullanıldığı akış şemalarına döngülü şemalar denir. Matlab for
ve while döngülerini destekler.
For Döngüsü
Önceki işlemler
Döngü
değişkeni=başlangıç:bitiş:a İşlemler
rtım
Sonraki
işlemler
3
DÖNGÜ
Kontrol değişkeni = başlangıç değeri, bitiş değeri, adım
I = 1, 20 ,3 J = 30, 4 ,-2 k = 1, 99
Tek döngü
I = 1, N, 1 işlem A
4
DÖNGÜ
İç içe döngü
İç döngü
I = 1, N, 1
J = 1, N, 1 işlem B
Dış döngü
5
UYGULAMA 1
1’ den N e kadar tam sayıların toplamını bulan program
algoritma ve akış diyagramını çiziniz.
6
ALGORİTMA 1
1.Adım: Başla
2.Adım: sayac ve toplam değişkenlerine 0 değerini ata
3.Adım: Kullanıcıdan N tamsayıyı klavye yardımıyla al, N
değişkenine ata
4.Adım: N=0 ise 8. Adıma git değilse 5. adıma git
5.Adım: sayac sayacını 1 artır.
6.Adım: toplam değişkenine sayac değerini ekle
sayac<N ise 5. adıma git değilse 7. adıma git
7.Adım: Ekrana sayac ve toplam değişkenlerini yazdır
8.Adım: Bitir
7
AKIŞ DİYAGRAMI 1
Başla
sayac=0,toplam=0
Ni
oku
Hayır Evet
N=0
sayac=sayac+1
toplam=toplam+sayac
Bitir
Hayır Evet
sayac<N
sayac,
8
toplam
AKIŞ DİYAGRAMI 1
Başla
toplam=0
Ni
oku
sayac=1,N,1 toplam=toplam+sayac
toplam
Bitir
9
UYGULAMA 2
Klavyeden girilen N sayısının faktöriyelini alan algoritmanın
akış diyagramını çiziniz.
𝒏
𝒔𝒐𝒏𝒖𝒄 = 𝒏! = ෑ 𝒔𝒂𝒚𝒂𝒄
𝒔𝒂𝒚𝒂𝒄=𝟏
10
ALGORİTMA 2
Faktöriyeli Hesaplanacak Sayı: n
Girilen Sayının Faktöriyeli: sonuc
Faktöriyel Değişkeni: sayac
Adım1: Başla
Adım2: sonuc=1; sayac=1
Adım3: n’yi gir
Adım4: Eğer n<0 ise 3. adıma git
Adım5: Eğer sayac>nise adım 8 e git
Adım6: sonuc=sonuc*sayac
Adım7: sayac=sayac+1 yap ve adım 5 e git
Adım8: sonucdegerini ekrana yaz
Adım9: Bitir
11
AKIŞ DİYAGRAMI 2
Başla
fak=1
Ni
oku
sayac=2,N,1 fak=fak*sayac
fak
Bitir
12
UYGULAMA 3
Aşağıdaki akış diyagramının sonucunu bulunuz.
13
Başla
T=0
I=1,2,1 T=5
J=1,3,1 T=T+I*J
T
Bitir
14
UYGULAMA 4
Aşağıdaki akış diyagramının N = 3 için vereceği sonuçları
bulunuz
15
Başla
T=0
Ni
oku
I=1,N,1
J=1,N,1 T=T+I+J
T
Bitir
16
UYGULAMA 5
Aşağıdaki algoritmada 1-10 arası tek sayıların toplamı hesaplanmaktadır.
(Çift sayılarin toplamına aşağıdaki algoritmayı hangi değişikliği yaparak
dönüstürebilirsiniz?)
A1: Başla
A2: toplam=0
A3: sayac=1
A4: Eğer sayac>10 ise adım 8 e git
A5: toplam=toplam+sayac Döngü
A6: sayac=sayac+2
A7: Git adım 4
A8: Yaz ‘toplam’
A9: Bitir
17
UYGULAMA 6
Bir sayının tek sayı mı çift sayımı olup olmadığını bulan
programın akış şemasını ve algoritmasını gösteriniz.
18
Başla
Ni
oku
Hayır Evet
N mod
2==0
tek çift
Bitir
19
UYGULAMA 7
10 ile 100 arasındaki tek sayıların toplamını ekrana yazdıran
programın akış diyagramını çiziniz.
20
Başla
T=0
x=10,100,1
Hayır Evet
N mod
2==0
T=T+x
T
Bitir
21
UYGULAMA 8
Kullanıcı tarafından klavye yardımıyla girilen pozitif bir doğal
sayının pozitif bölenlerini bulup ekrana yazdıran algoritmayı
yazınız, algoritmanın akış diyagramını çiziniz.
22
ALGORİTMA 8
1.Adım: Başla
2.Adım: Kullanıcıdan pozitif tamsayıyı klavye yardımıyla al,
sayi değişkenine ata
3.Adım: bolen=1
4.Adım: bolen<=sayi ise 5. Adıma git değilse 8. Adıma git.
5.Adım: mod(sayi,bolen)=0 ise 6. Adıma git değilse 7. Adıma
git
6.Adım: Ekrana bolen değişkenini yazdır
7.Adım: bolen=bolen+1 ata, 4. Adıma git
8.Adım: Bitir
23
AKIŞ DİYAGRAMI 8
Başla
sayi
yi oku
bolen=1
Hayır Evet
bolen≤sayi
Hayır Evet
mod(sayi,bo
len)=0
bolen
Bitir
bolen=bolen+1
24
UYGULAMA 9
Kullanıcı tarafından klavye yardımıyla girilen pozitif bir doğal
sayının pozitif bölenlerinin sayısını bulup ekrana yazdıran
algoritmayı yazınız, algoritmanın akış diyagramını çiziniz.
25
ALGORİTMA 9
1.Adım: Başla
2.Adım: Kullanıcıdan pozitif tamsayıyı klavye yardımıyla al, sayi
değişkenine ata
3.Adım: bolen=1, sayac=0;
4.Adım: bolen<=sayi ise 5. Adıma git değilse 8. Adıma git.
5.Adım: mod(sayi,bolen)=0 ise 6. Adıma git değilse 7. Adıma git
6.Adım: sayac=sayac+1
7.Adım: bolen=bolen+1 ata, 4. Adıma git
8.Adım: Ekrana sayac değişkenini yazdır
9.Adım: Bitir
26
AKIŞ DİYAGRAMI 9
Başla
sayi
yi oku
bolen=1,sayac=0
Hayır Evet
bolen≤sayi
Hayır Evet
mod(sayi,bo
sayac len)=0
sayac=sayac+1
Bitir
bolen=bolen+1
27
UYGULAMA 10
Kullanıcı tarafından klavye yardımıyla girilen pozitif bir doğal
sayının asal olup olmadığını kontrol edip ekrana yazdıran
algoritmayı geliştiriniz, algoritmanın akış diyagramını çiziniz.
28
Başla
I=2,N,1 S=0
J=1,I,1 Hayır
Evet
I mod J==0
S=S+1
Bitir
T
S=2
29
UYGULAMA 11
1'den 100'e kadar sayıların karelerini, kareköklerini, küplerini,
küpköklerini toplamlarını ve ortalamalarını veren programın akış
diyagramını oluşturunuz.
30
Başla
say=0, toplam=0
say=say+1
kare=say^2
karekok=𝑠𝑎𝑦^(1/2)
kupkok=𝑠𝑎𝑦^(1/3)
kup=𝑠𝑎𝑦^(3)
toplam=toplam+say
Say,kare,kar
ekok,kup,kup
kok
Hayır Evet
Say==1
00
31
Toplam,ortal
ortalama=toplam/say ama Bitir
UYGULAMA 12
Elimizde bulunan A, B ve C gibi 3 adet sayıdan en büyüğünü ve en
küçüğünü bulan programın akış diyagramını çiziniz.
32
33
UYGULAMA 13
Yandaki diyagramdaki sorunları bulunuz.
34
ANALİTİK VE ALGORİTMİK
ÇÖZÜM NEDİR?
Analitik Çözüm: Matematiksel formüller ve uygulamalara dayanır ve
kesin çözüm vardır.
Algoritmik Çözüm: Bilgisayarda yazılmış algoritmaya dayanır ve
yaklaşık çözüm vardır.
Örnek: Eğik Atış Problemi
Eğik atış problemine göre 10 m/s başlangıç hızı ile ve 35 derece açı ile
bir top fırlatılır.
Topun çıkacağı maximum yükseklik nedir?
Top havada ne kadar süre kalır?
2 sn sonra topun hızı nedir?
Top ne kadar uzağa düşer?
Topun yere çarptığı andaki hızı ne olur? Gibi sorulara yanıt ararken
analitik ve algoritmik çözüm arasındaki farkı inceleyelim.
35
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
36
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
Analitik Çözüm:
Zaman fonksiyonu olarak bu hareket için problemin çözüm
hesaplarını yap
Maximum yüksekliği bulmak için çözümü analiz et
Uçuş süresini bulmak için çözümü analiz et
Algoritmik Çözüm
Zaman fonksiyonu olarak bu hareket için problemin çözüm
hesaplarını yap
Bir çok kez örneklerin çözümünü hesapla
Her bir fonksiyon hesaplama sonucunu önceden belirlenen
kriterlerle test et.
37
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
Matematiksel Model
H(t)= vtsinQ-1/2 gt2
X(t)=vtcosQ
Varsayımlar:
Problemi çözmeden önce bazı varsayımlar göz önüne
alınmalıdır.
1)g yerçekimi ivmesi hareket süresince sabit ve aşağıya
doğru yöneliktir.
2) hava direncinin etkisi ihmal edilmektedir
3) yerin, göz önüne alınan hareketin menzili içinde, düz
olduğunu kabul etmek
38
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
Analitik Çözüm:
Çözüm matematiksel modeldeki formuller ile hesaplanır
t=0.585 s ile Maximum yükseklik 1.68 m olarak bulunur. Fakat
başlangıç ve bitişteki yükseklik değişimi 0 olarak hesaplanır.
Toplam uçuş süresi 1.17 s ilede Yatay uzaklık ise 9.58 m
olarak bulunur.
39
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
Algoritmik çözüm için yaklaşık çözümü bulana kadar farklı
zaman değerleri vererek hesaplama yapılır.
H(t)= vtsinQ-1/2 gt2 formülü için algoritma adımları
40
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
41
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
42
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
43
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
Distance Number of
Time Interval, Peak Height, Total Flight
Travelled, Loops
seconds meters Time, seconds
meters Calculated
0.50 1.6416 10.2394 1.2500 3
0.25 1.6416 9.2155 1.1250 5
0.10 1.6757 9.4202 1.1500 12
0.05 1.6757 9.6250 1.1750 24
0.01 1.6767 9.5431 1.1650 117
0.001 1.6768 9.5800 1.1695 1170
0.0001 1.6768 9.5788 1.1693 11694
44
ALGORİTMİK/ALGORİT
MİK ÇÖZÜM
Algoritmik çözüm tam sonuca ulaşmak için zaman azaltması
veya artırılması yöntemiyle çöümü bulmaktadır.
Neden algoritmik çözüm kullanıyoruz? Eğer tem çöümü
biliyorsak neden algoritma kullanalım?
Gerçek dünyada mühendislerin tam çözümü olmayan bir çok
problem ile karşılaşması yanıt olarak verilebilir.
Bir başka deyişle bir algoritmik çözüm gerçek çözümü kontrol
edilmesi içinde kullanılır.
Atış probleminde olduğu gibi analitik çözümde hava direnci
ihmal edlmişti fakat algoritmik çözümde yapılan test sonuçları
karşılaştırılarak hava direnci ihmal edilmeyebilir. Yani gerçekte
var olan hava direnci çözüme dahil edilmiş olur.
Fakat bahsedilen örnekte hesaplamalar birçok kez yapılmalıdır.
Bunun içinde bir programlama dili döngüler ile otomatik
hesaplamaya olanak verir.
45
MATLAB
MATLAB (MATrix LABoratuary)
MATLAB, yüksek performanslı bir uygulama yazılımı ve bir
programlama dilidir.
MATLAB’in temelindeki yapı, boyutlandırma gerektirmeyen
matrislerdir.
Yaptığımız tüm girdi ve çıktılar, belirteç gerektirmeksizin bir
matris tanımlar.
İlk olarak Fortran dili ile yazılan MATLAB, daha sonra C ile
yazılmıştır.
46
MATLAB
Matlab’de hazır programlar vardır. Bu programlara fonksiyon
adı verilir.
Matlab fonksiyonlarının kullanımı, matematikteki y=f(x)
fonksiyonunun kullanımıyla özdeştir.
Örneğin, a=sin(x) fonksiyonunda, sin fonksiyonu, x açısının
(inputgirdi) değerini hesaplar; kullanıcı bu değeri, örneğin, bir
a değişkenine atar. a değeri sin fonksiyonunun bir çıktısıdır
(output).
47
MATLAB ÖZELLİKLERİ
•Kullanım kolaylığı,
•İşletim sistemi uyumluluğu,
•Sayısal analiz işlemlerindeki kolaylıklar,
•Hazır fonksiyonlar (function files),
•Görüntüleme (visualization) kolaylığı (grafik çizim), 2 ve 3
boyutlu grafikler çizebilme
•GUI(Graphical User Interface) geliştirme kolaylığı,
•MATLAB derleyicisi (exe: executable dosya ile win32
uygulamaları),
•Toolboxes (Araç kutuları) :hazır programlar!
48
MATLAB ÖZELLİKLERİ
MATLAB, matematik-istatistik, optimizasyon, neural network,
fuzzy, işaret ve görüntü işleme, kontrol tasarımları, yöneylem
çalışmaları, tıbbi araştırmalar, finans ve uzay araştırmaları
gibi çok çeşitli alanlarda kullanılmaktadır. MATLAB,
kullanıcıya hızlı bir analiz ve tasarım ortamı sağlar.
Matlab programını C/C++ diline dönüştürebilir,
20. dereceden bir denklemin köklerini bulabilir,
100x100 boyutlu bir matrisin tersini alabilir,
Bir elektrik motorunu gerçek zamanda kontrol edebilir,
Bir otobüsün süspansiyon simülasyonunu yapabilirsiniz,
……..
49
MATLAB KULLANIMINDA
TEMEL KURALLAR:
Programın dili ve yardım bilgileri tamamen ingilizcedir.
Komut temelli yazılımdır.
Küçük-büyük harf ayrımı vardır. lab ve Lab farklı algılanır.
» işareti komut prompt’udur.
Komutlar Enter tuşu ile yürütülür.
50
İFADELER
Matematiksel ve metinsel gösterimler ile işlemler ifadelerle sağlanır.
• Sayılar (Numbers)
• Değişkenler (Variables)
• İşleçler (Operators)
• Fonksiyonlar (Functions)
Örnek olarak
>> x=4*sqrt(5)
x=
8.9443
ifadesinde x değişken , 4 sayı , * işleç , sqrt, fonksiyondur.
Bir ifade = işareti ile bir değişkene atanmamış ise Matlab otomatik olarak sonucu,
ans (answer) adı verilen özel bir değişkende saklar.
51
İFADELER
Bir ifadenin sonuna ; işareti eklediğinizde ekrana yazılmaz.
Birden fazla ifade tek satırda aralarına , ya da ; koyarak
yazılabilir. Yazımda boşluk sayısı etkisizdir.
Sadece ilgili değişken adını yazarak o değişkeni
çağırabilirsiniz.
52
SAYILAR
Ondalık sayılar Türkçemizdeki 3,5 yerine 3.5 şeklinde
gösterilir (0.0001 veya 9.63 / 0.65 yerine .65).
Bilimsel notasyon gösterimi olan e (veya E) harfi 10’nun
kuvvetini temsil eder.
2e4=2.104=2000 veya 1.65e-20=1.65.10-20 demektir.
Kompleks sayılarda imajiner (sanal) kısımlar i veya j ekini alır.
i veya j ile gosterimlerinde bir fark yoktur.
(1+3i veya 1+3*i veya 1+i*3 ama 1+i3) / 1+sqrt(3)*j / -5i
Matlab’de tüm sayılar, yaklaşık 2.10308 ve 2.10-308 arasında
değişir.
53
SAYI FORMATI
Bir işlem sonucu varsayılan (default) olarak 4 ondalık ile
gösterilir.
Sayı gösteriminde hane sayısı format fonksiyonu ile
değiştirilir. >> format xxx
format veya format short : 5 rakamlı (4 ondalık)
format long: 15 rakamlı (14 ondalık)
format bank: İki ondalıklı sayı
format rat: Ondalık sayıları rasyonel sayı olarak gösterir.
54
SAYI FORMATI
>> format xxx, >> % format short
duyarlılık 5 rakam 15 rakam
format short 12.3457
long 12.34567890123457
short e 1.2346e+001
long e 1.234567890123457e+001
rat 1000/81
>> format ile program default ayarlarına döner
55
DEĞİŞKENLER
Bir değişken oluşturmak için değişkene bir isim verilir,
>> var = 3.14
>> string = ‘selam’
Değişken isimleri
Birinci karakter mutlaka HARF olmalıdır! İlk karakter sayı olamaz!
İlk karakterden sonra sayı, harf, _ ve bunların kombinasyonları
Büyük küçük harfe duyarlı: var ile Var birbirinden farklı
Değişken isimleri en fazla 63 karakterli olabilir
Gömülü değişkenler var. Bunları kullanmak tavsiye edilmez!!
pi değişkeni 3.1515926…
ans en son atanan değişkeni gösterir (hesap makinesi gibi)
Inf ve –Inf pozitif ve negatif sonsuz sayılarıdır
NaN ‘Not a Number’
TÜRKÇE karakterler yok!
ç, ğ, ı, ö, ş, ü, Ç, Ğ, Ġ, Ö, Ş, Ü kullanılmaz
56
Matlab’de rezerv edilmiş kelimeler kullanılamaz.
for end
if while
function return
elseif case
otherwise switch
continue else
try catch
global persistent
break classdef
parfor spmd
57
ÖZEL DEĞİŞKENLER VE SABİTLER
pi: = 3.1415926535897…
i, j: karmaşık sayılarda sanal kısmı gösterir.
Inf: infinity (Sonsuz)
NaN: Not-a-Number (Sayı değil, 0*inf, 0/0, Inf/Inf,…)
clock: Vektör olarak zaman bilgisi
date: Dizi olarak tarih bilgisi (e.g. 16-Jan-2007)
eps: (epsilon) Kayan-noktanın bağıl doğruluğu, 2e-52
ans: Bir işlemin son cevabı
58
Değişkenler, skaler, vektör, matris veya metin (string) olabilir.
Değişken örnekleri:
- a=1; b=-3.2e3; ct=22/5;
- metin=’Alp Karadeniz’;
- vektör=[1 2 3];
- matris=[1 2 3;-1 0 1];
- hucre={1 2 ; ’buyuk’ ’kucuk’};
59
İŞLEÇLER
İşlem yapmayı sağlayan sembollerdir.
+ - * / \
^ (üs alma, ab) : 2^3
‘ ‘(Tek tırnak arası) : ‘Ali‘ (Metin girişlerinde kullanılır)
‘ : Transpoze
( ) : 2*(3-4) (İşlem sırasını belirler)
( ) : sin(x)
[ ] : Dizi gösteriminde kullanılır.
= : x=3
== : x==K
? : Programın işleyişini etkilemeyen açıklama satırlarını gösterir.
! : DOS moduna geçer.
Aritmetik işlemlerde, işleç öncelik sırası (precision) vardır.
60
FONKSİYONLAR
Fonksiyonlar
- built-in (yerleşik): abs(mutlak değer), sqrt(karekök),
mak(maksimum), sin(sinus)
- m-file şeklinde: sinh, gamma, factorial
- user-defined (kullanıcı tanımlı)
olmak üzere üçe ayrılır.
Fonksiyon adları da küçük-büyük harf duyarlıdır. Örneğin sin
yerine Sin veya SIN şeklinde fonksiyon adının kullanımı hata
verir.
Tüm fonksiyon işlemleri parantezler () arasında yapılır.
Örneğin, sin30 değil sin(30) gibi.
>> help elfun veya >> help specfun veya >> help elmat
komutları ile tüm temel fonksiyonları görebilirsiniz.
61
Komut
Çalışma Çalışma
Penceresi Komut
Dizini Alanı
(Current
(Command
(Work Geçmişi
Window) (Command
Folder) Space)
History)
62
Metin
Düzenleyicisi
Editor)
63
MATLAB ORTAMI
Bu ekranda en önemli kısım Command Window kısmı olup,
MATLAB'a komutlar buradan girilir. Current Folder yazan
kısım şu andaki çalışma klasörü olup, Workspace yazan
kısım şu anda tanımlı değişkenleri ve Command History
kısmı son çağırılan komutları gösterir.
Bu pencereleri tutup sürükleyerek ekrandaki yerleri tercihe
göre değiştirilebilir,
64
MATLAB/TEMEL
DOSYA TÜRLERİ
• .m MATLAB program dosyaları(M-file)
• .fig Grafik dosyaları ve GUI’lerin grafik parçaları
• .mat Değişken ve matris dosyaları
• Simulink (Model *.mdl) ve Blockset Modülleri
• .p pre-parsed pseudo-code dosyaları (bu dosyaların içeriği
görüntülenemez ancak program olarak çağrılabilir, yani
MATLAB’de çalıştırılabilir!)
• Toolbox (Araç Kutusu) Modülleri (Fuzzy, Neural,Statistic vb.)
• Microsoft Excel Matlab
• Matlab Web-Server
• xPC Target ve xPC Target Embedded
• Stateflow, Real-Time Workshop, Real-Time Windows Target
65
BASİT HESAPLAMALAR
2+3 % toplama
ans =
5
5*7 % çarpma
ans =
35
2^4 % 2 üzeri 4
ans =
16
sqrt(9) % kare kök
ans =
3
66
BASİT HESAPLAMALAR
3*4/2+3 % karışık bir işlem
ans =
9
pi % pi sayısı MATLAB'da iç değişken olarak tanımlı
ans =
3.1416
sin(pi/2) % Not: Trigonometrik fonksiyonlara açılar hep RADYAN girilmeli!
ans =
1
exp(1) % e sayısı
ans =
2.7183
exp(3) % e^3
ans =
20.0855
67
BASİT HESAPLAMALAR
5+4*i
ans =
5.0000 + 4.0000i
2+sin(pi/8)*exp(3)+5.3*log(37) % karışık bir işlem
ans =
28.8243
68
BASİT HESAPLAMALAR
>> 8 + 3*5
ans = 23
>> 8 + (3*5)
ans = 23
>>(8 + 3)*5
ans = 55
>>4^2-12-8/4*2
ans = 0
>>4^2-12-8/(4*2)
ans = 3
>> 3*4^2 + 5
ans = 53
>>(3*4)^2 + 5
ans = 149
>>27^(1/3) + 32^(0.2)
ans = 5
>>27^(1/3) + 32^0.2
ans = 5
>>27^1/3 + 32^0.2
ans = 11
69
BASİT HESAPLAMALAR
Örnek:
TC=5/9*(TF-32)
Örnek:
numerator = s^2 + 4*s + 13;
denominator = s^3 - 2*s^2 + 4*s + 5;
H = numerator/denominator;
2s2 + 10s + 12 = 0
>> a =2;
>> b =10;
>> c =12;
>> disc = b^2-4*a*c;
>> x1 = (-b + sqrt(disc)) /(2*a)
>> x2 = (-b - sqrt(disc)) /(2*a)
x1 = -2
70
x2 = -3
BASİT HESAPLAMALAR
Değişken atama ve bunlarla işlemler
MATLAB'da değişkenlere değer atamak ve bunları kullanmak
da kolaydır
x=8 % x değişkenine sekiz değerini ver
x=
8
x=8; % bir komutun sonuna noktalı virgül konursa komut
çalışır ama sonucu
ekranda görünmez
2*x
ans = 16
71
BASİT HESAPLAMALAR
x-4
ans =
4
sqrt(x) % karekök
ans =
2.8284
y=x^2 % x'in karesi
y=
64
z=x^y-4 % x üzeri y eksi 4
z=
6.2771e+57
72
BASİT HESAPLAMALAR
MATLAB son işlemin sonucunu ans değişkeninde tutar
ans
ans =
0.9894
ans+1
ans =
1.9894
ans+1
ans =
2.9894
ans+1
ans =
3.9894
73
BASİT HESAPLAMALAR
Değişken ismi seçerken dikkat edilmesi gereken bir nokta:
Eğer MATLAB'ın iç değişkenlerinden birine (mesela i, j, pi
gibi) atama yaparsak artık o değişkenin standart değerini
yitiririz ve kullanamayız. Örneğin:
pi=4; % pi değişkenine 4 verelim
pi % artık pi 4 oldu, standart pi'yi (3.1415926...) yitirdik
pi =
4
sin(pi/2) % pi artık 4 olduğu için bu komut sin(2)'yi veriyor!
ans = 0.9093
74
YARDIM KOMUTLARI
MATLAB'da yardım komutlarını kullanabilmek çok önemlidir.
MATLAB çok büyük bir
programdır ve binlerce fonksiyon barındırır. Bunların hepsini
ve nasıl kullanıklarını akılda tutmak imkansızdır. Bu nedenle
komutların nasıl kullanıldığını hatırlamak veya bir işi
yaptırmak için hangi komutlar kullanılması gerektiğini
öğrenmek için yardım dokümanlarından düzenli olarak
faydalanmak gerekecektir.
help exp % exp komutu hakkında hızlı yardım
doc exp % exp komutu hakkında Yardım Penceresinde detaylı
yardım
75
YARDIM KOMUTLARI
lookfor 'inverse tangent' % bir işi yapan komut arama
who % tanımlı olan değişkenlerin isimlerini gösterir
whos % tanımlı değişkenleri detaylı bilgilerle gösterir
clear x % x değişkenini siler, artık x'i kullanamayız
who % değişken listesinde bakarsak artık x yok çünkü silindi
clear pi % pi'ye bizim yaptığımız atamayı siler, standart değerine döner
pi % pi yeniden 3.1415926... Oldu
clear all % tanımlı tüm değikenleri siler
Ekranı temizleme
Komut satırını temizlemek için clc komutu kullanılır.
Clc
exit Matlab oturumundan çıkar.
76
İNPUT()
77
DİSP()
78
FPRINTF()
fprintf('Ekrana Basılacak Açıklama %X\n', deger);
Burada %X Kısmında Kullanabileceğimiz Seçenekler:
%c :degerin tek bir karakter olduğunu gösterir.
%s : degerin bir karakter dizisi (string) olduğunu gösterir.
%d: degerin bir tamsayı olduğunu gösterir.
%f : degerin bir ondalıklı sayı olduğunu gösterir.
%g: degeri mümkün olan en kompakt forma sokar.
Diğeryandan :
\n : İmleci bir alt satırın başına götürür.(n, newline)
\t: İmleci bir TAB kadar sağa kaydırır.
79
PROGRAMI
DALLANDIRAN İFADELER
Dal yapıları, program kodlarından istenilenleri seçen ve onları
işleten,istenilen kodları ise değerlendirme dışı bırakabilen
MATLAB ifadeleridir.
if
Switch, case
try/catch
yapıları ile oluşturulur. Bu bölümde try/catch yapısına
değinilmeyecektir.
80
ŞART DEYİMLERİ
(CONDITIONAL STATEMENTS)
if koşul 1
if koşul if koşul
deyim 1
deyim deyim 1
elseif koşul 2
end else
deyim 2
deyim 2
……
end
elseif koşul n-1
deyim n-1
else
deyim n
end
81
IF-END YAPISI
a=input(' bir sayi giriniz= ');
if a<0
a=log(a);
end
if a>0
a=a;
end
a
/*******************************************/
a=input(' bir sayi giriniz= ');
if a<0
a=log(a);
else
a=a;
end
82
disp(a)
SWİTCH,CASE YAPISI
switch (değiştir) if yapısına benzer. Burada daha çok sözel
olarak belirtilen durumlara göre yönlendirme işlemi yapılır.
Bu yapının kullanımı case ile aşağıdaki gibidir;
switch durum
• case durum1
• işlem1
• case durum2
• işlem2
• otherwise
• işlem3
end
83
SWİTCH,CASE YAPISI
Örnek: gun degiskeninin, is gunu olup olmadığına karar
vermek için aşağıdaki kodlar düşünülür;
clear,clc
gun=input('hangi gun=', 's');
switch lower(gun)
case {'pazartesi', 'sali','carsamba','persembe','cuma'}
disp('iş günü')
case {'cumartesi','pazar'}
disp('TATİL!')
end
84
DÖNGÜLER (LOOPS)
for Döngüsü
Bir for (için) döngünün genel formatı
for döngüdeğişkeni=ifade
deyimler
end
while Döngüsü
Bir while (süresince veya iken) döngüsünün genel formatı
while ifade
deyimler
end
85
Yarıçap değerleri 1,2,3,4,5 için kürenin hacmini (H=4/3r3)
hesaplayan bir program yazınız?
86
FOR-END DÖNGÜSÜ
for,end döngüsü bir işlemin 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ı,
for i=1:n (i→Tam sayı (integer))
işlem
end
biçimindedir.
Örnek: 1’den N’ye kadar olan sayıların toplamını yapan bir program düşünelim.
clear,clc
N=input('bir sayi giriniz=');
say=0; %sayac
for i=1:N
say=say+i; %birikimli (kümülatif toplam)
end
say
87
WHİLE-END DÖNGÜSÜ
while,end döngüsü, belirli bir durumun gerçekleşmesi
durumunda bir işlemin birden
daha fazla sayıda yaptırılmasında kullanılır.
done=0;
while done==0
işlem
end
88
WHİLE-END DÖNGÜSÜ
Örnek: 1’den N’ye kadar olan sayıların toplamını while,end 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,end döngüsündeki “i” ye karşılık gelir.
if i==N
done=1;
end
say=say+i;
end
say
89
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
“Sıfıra Bölüm Hatası.” mesajını yazdırmalıdır.)
clc;
clear;
Pay=input(‘Lütfen payı giriniz’);
Payda=input(‘Lütfen paydayı giriniz’);
if Payda==0
disp(‘Sıfıra Bölüm Hatası.’);
else oran=Pay/Payda;
fprintf(‘Oran= %g\n’,oran);
end
90
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.
𝑥>𝑦→𝑠𝑜𝑛𝑢𝑐=(𝑥−𝑦)(1/2)
𝑥=𝑦→𝑠𝑜𝑛𝑢𝑐=(𝑥+𝑦)7
𝑥<𝑦→𝑠𝑜𝑛𝑢𝑐=𝑥∗𝑦
clear all;clc;
x=input(‘Lütfen x değerini giriniz’);
y=input(‘Lütfen y değerini giriniz’);
if(x>y)
sonuc=sqrt(x-y);
elseif x==y
sonuc=(x+y)^7;
else
sonuc=x*y;
end
fprintf(‘F(x,y)=%g\n’,sonuc);
91
UYGULAMA 3
Girilen ay numarasına göre gün sayısını hesaplayan MATLAB
programını yazınız.
Clera;clc;
ay=input(‘Ay numarası giriniz(1-12)=’);
if ay==1 || ay==3 || ay==5 || ay==7 || ay==8 || ay==10 || ay==12
disp(‘bu ay 31 gün’);
elseif ay==4 || ay==6 || ay==9 || ay==11
disp(‘bu ay 30gün’);
elseif ay==2
disp(‘bu ay 28 gün’);
else
disp(‘geçersiz ay’);
92
UYGULAMA 4
İnput komutuile 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.
Clear;clc;
sayi1=input(‘1. sayıyı giriniz=’);
sayi1=input(‘2. sayıyı giriniz=’);
ortalama=(sayi1+sayi2)/2;
fprintf(‘ortalama=%d\n’,ortalama);
93
ÖDEV
Dışarıdan okunan iki sayıdan büyük olanının tek sayı mı,çift
sayı mı olduğunu belirten bir işin algoritmasını tasarlayınız.
94
ÖDEV
10-250 arasındaki tek ve çift sayıların ortalamasını bulan akış
diyagramını çiziniz.
10-250 arasında 5 e kalansız bölünebilen sayıları ekrana
yazdıran programın akış diyagramını çiziniz.
Klavyeden 0 girilen kadar girilen sayıların negatif olup
olmadığını ekrana yazdıran programın akış diyagramını
çiziniz.
95