You are on page 1of 161

BİLGİSAYAR TEMELLERİ

VE
PROGRAMLAMAYA GİRİŞ
DERS 1
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
MATLAB (Matematik LABORATUVARI)
• Matlab, MATrix ve LABoratory kelimelerinden
türetilmiş olup, Cleve Moler tarafından 1985
yılında geliştirilmiş bir bilgisayar programlama
dilidir.
• İsminden de anlaşılacağı üzere, matris temeline
dayalı matematiksel hesaplama, çözümleme,
görsellik ve algoritma geliştirme olanağına sahip,
bilimsel ve uygulamalarına yönelik güçlü ve
etkileşimli komut temelli bir paket programlama
dilidir.
•MATLAB ı bilgisayarınıza kurduktan sonra,
matlab ile çalısmak için matlab logosunu
tıklayarak çalısmaya baslayabiliriz. Bu
islemden sonra, matlab ın sürüm
numarasına göre ufak tefek değisiklikler
olmasına rağmen, temel islemler hep
aynıdır, matlab işlecinin olduğu pencere
matlab için komut penceresidir;
MATLAB (MATrix LABoratuary)
http://www.mathworks.com/matlabcentral/

 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.
4
Araç çubuğu ve çalışma klasörü

Diğer çalışma klasörleri


Editor

Komut Satırı
Komut Satır geçmişi
MATLAB/Command window (komut
penceresi)
Current directory
(çalışma klasörü)

Dinamik komut satırı


Her türlü mat. işlem,
Demo, program çalıştırma vb.
M-file editörü
Programların yazıldığı editör
MATLAB/Workspace (İş alanı)

Atanan
değişken Workspace penceresini
açmanın “komut” yolu

Workspace Workspace, ilgili oturumda kullanılan


penceresi tüm değişkenlerin tutulduğu alandır.

7
MATLAB/Array Editor (Dizi editörü)
Matris, vektör ve sayılar için excel özelliğindeki editördür.

İki farklı biçimde görüntülenir:

>>open('a')
workspace penceresinde ilgili
değişken iki kez tıklanır.
Daha önce atanan bir değişkenin
boyutları istenildiği gibi değiştirilebilir!

8
Matlab’ da bulunan fonksiyon kütüphanesi sayesinde diğer programlama
dillerine nazaran daha az sayıdaki satırla çözüm üretilebilmektedir.

Matlab, denklem takımlarının çözümlerinde, diferansiyel denklem


sistemlerinin çözümü, integral hesabı gibi sayısal hesaplamalarda
rahatlıkla kullanılabilmektedir.

Veri çözümleri, istatistiksel çözümlemeler ve grafik çizimlerinde etkin


bir biçimde kullanılabilmektedir.
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
(input-girdi) 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).

10
Avantajları:
 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),

 GUI geliştirme kolaylığı,

 MATLAB derleyicisi (exe: executable dosya ile win32 uygulamaları),

 Toolboxes (Araç kutuları) :hazır programlar!

11
Avantajları:
 Teknik hesaplamalara uygun yüksek seviyeli bir dil oluşu,

 Kodların, dosyaların ve verilerin kolayca düzenlenmesine


olanak sağlayan bir ortama sahip olması,

 Yinelemeli tasarım ve problem çözme yöntemleri için


gerekli interaktif araçları bünyesinde barındırması,

 Tüm matematik problemlerin çözümlerinde ullanılabilecek,


oldukça geniş, hazır fonksiyonlara sahip olması,

 Görsellik açısından 2 ve 3 boyutlu grafik özelliklerine


sahip araçları bünyesinde barındırıyor olması,
TEMEL KURALLAR

 Matlab yavaş çalışır.

 Fiyatı eşdeğer programlara oranla daha pahalıdır.

 Programlama dili ve yardım bilgileri tamamen İngilizcedir.

 Komut temeline dayalı bir programlama dilidir.

 Büyük-küçük harf duyarlılığına sahiptir. (Örneğin; A ile a program tarafından farklı


algılanır).

 ( >> ) işareti, matlab’ da program yazma satırı olup komut promt’u olarak
isimlendirilir. Komut penceresinden komut girilmesinde ya da program isimlerini
yazarak koşturulmasında kullanılır. Komut penceresinden programlama dilinin basit bir hesap
makinası gibi kullanılmasına olanak sağlar.

 Komutlar (enter) tuşuna basılarak koşturulur.
MATLAB/Temel dosya türleri
• *.m MATLAB program dosyaları

• *.fig Grafik dosyaları ve GUI’lerin grafik parçaları

• *.mat Değişken ve matris dosyaları

• *.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!)

14
MATLAB DİLİNDE İFADELER (Expressions)
1. SAYILAR (Numbers)
1.2341e+03=1.2341x10^3= 1234.1
>> format long
>> a=0.0001*256
>> a
a=
a=
0.0256
0.02560000000000

>> format short >> format bank


>> a >> a
a= a=
0.0256 0.03
2. OPERATÖRLER
A- ARİTMETİK OPERATÖRLER
B- İLİŞKİSEL(Relational) OPERATÖRLER
C- MANTIKSAL(Logical) OPERATÖRLER
OPERATÖRLER MATLAB ÖRNEKLERİ
>> [1 2 2]+[2 6 3] >> [1 2 2]-[2 6 3]

ans = ans =

3 8 5 -1 -4 -1

>>>>[1
[1 2 2]*[2;6;3]
2 2]*[2 6 3] >> [1 2 2].*[2 6 3]

??? Error using ==> mtimes ans =


ans =
Inner matrix dimensions must 2 12 6
agree.
20
OPERATÖRLER MATLAB ÖRNEKLERİ
>> [1 2 2]./[2 6 3] >>[1[1222]\[2
>> 2].\[2
6 3]6 3]
>> [1 2 2]/[2 6 3]
ans = ans =
ans =
ans = 0 0 0
0.4082 1.0000 3.0000 1.5000
0.5000 0.3300 0.6670 2.0000
0 3.0000
0 1.5000
0

>> [1 2 2]^[2 6 3] >> [1 2 2].^[2 6 3]


??? Error using ==> mpower
At least one operand must be scalar. ans =

>> [1 2 2]^[2;6;3] 1 64 8
??? Error using ==> mpower
At least one operand must be scalar.
OPERATÖRLERİN ÖNCELİK SIRASI
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 2
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
3. DEĞİŞKENLER (Variables)
• Bir değişken oluşturmak için değişkene bir isim verilir,
• >> deg = 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ı: deg ile Deg 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.1415926…
• ans en son atanan değişkeni gösterir (hesap makinesi gibi) (answer)
• Inf ve –Inf pozitif ve negatif sonsuz sayılarıdır
• NaN ‘Not a Number’
• TÜRKÇE karakterler yok!
• ç, ğ, ı, ö, ş, ü, Ç, Ğ, Ġ, Ö, Ş, Ü kullanılmaz
Ekrana yazmaz hafızasında
tutar

Matlab programlama dilinde yapılan bir işlem herhangi


bir değişkene atanmadığı durumlarda, yapılan işlem
sonucu program dili tarafından özel değişken olan ans
değişkenine atanır.
ÖZEL SABİT ve DEĞİŞKENLER
DEĞİŞKENLER İLE İLGİLİ KURALLAR

Değişken adları harf ile başlamalı ve onu takip eden


karakterler harfler, rakamlar veya alt çizgiden (_) oluşabilir.
Boşluk, nokta (.) ve eksi(-) karakterlerini kullanmamaya özenle
dikkat edilmelidir. İfadeler kısmında boşluklar kullanılabilir.

Bir değişken maksimum 63 karakter uzunluğunda olabilir.


Fazla da yazılsa sadece 63 karakteri işleme alınır.

 Değişken isimlerinde Türkçe karakterler kullanılmamalı.


Karmaşık sayıların sanal kısımlarında kullanılan i ve j harflerinin
kullanılmamasına özen gösterilmeli.
DEĞİŞKENLER İLE İLGİLİ KURALLAR

 Değişkene (=) işareti ile değer atanır.

 Matlab programlama dili, büyük-küçük harfe duyarlıdır.

 Değişkenler, skaler, vektör, matris ve sözcük (string) olabilirler.

 Bir değişkenin ekranda görüntülenmesi istenmiyorsa, komut


sözdiziminden sonra noktalı virgül (;) karakteri kullanılır.
MATLAB/Temel Komutlar
• clc Command window’u temizler.
• clear İlgili oturumda atanmış tüm değişkenleri siler.
• clear a Yalnızca “a” değişkenini siler.
• demo Matlab demosunu çalıştırır.
• date Gün-Ay-Yıl’ı görüntüler (Örneğin, 17-Oct-2009)
• who/whos Çalışma alanında hangi değişkenlerin olduğunu/bu değişkenlerin
yapılarını görüntüler.
• exit Matlab oturumundan çıkar.
• help Yardım menüsünü açar.
• help f_na f_na fonksiyonu hakkında bilgi verir.
• save d a a değişkenini d dosya ismiyle mat uzantılı olarak kaydeder.
• load d a değişkenini d dosyasından geri çağırır.

Save ve load komutları, matris vb. yapıların kaydedilmesi için çok önemlidir.
7
4. FONKSİYONLAR (Functions)

Matlab’ da matematiksel fonksiyonların hemen hepsinin


hesaplanmasına olanak sağlayan standart hazır fonksiyonlar
mevcuttur.

Matlab’ da fonksiyonlar ya yerleşik (built-in) olarak kendi


çekirdeğinde bulunur (sqrt, sin, exp, vb.) ya da m-dosyalarından
işletilir (gamma, sinh, cosh, vb).

Matlab’ da fonksiyon adlarının büyük küçük harfe duyarlı olduğu


unutulmamalıdır. Örneğin, cos yerine Cos ya da COS yazacak olursak
hata mesajı ile karşılaşırız.
Matlab programlama dilinde bir açının değeri hesaplanırken
derece yerine radyan kullanılmaktadır.
>> sind(30)
>> sin(30)
ans =
ans =
0.5000
-0.9880

>> sin(pi/6) >> sin(30*pi/180)

ans = ans =

0.5000 0.5000
>> fix(3.47856) >> fix(3.51856) >> ceil(3.51856) >> ceil(3.47856) >> ceil(1.9999)

ans = ans = ans = ans = ans =

3 3 4 4 2

>> floor(3.01856) >> floor(3.47856) >> floor(3.51856) >> round(3.51586) >> round(3.47586)

ans = ans = ans = ans = ans =

3 3 3 4 3
ÖRNEKLER
>> abs(4-5) >> abs(-5) >> abs(3+5i) >> sqrt(25)
ans = ans = ans =
ans =
1 5 5.8310
5

>> x=[1 5 6 7 9 1 3 24 7] >> max(x) >> min(x) >> length(x)

x= ans = ans = ans =

1 5 6 7 9 1 3 24 7 24 1 9

>> size(x) >> sum(x) >> sort(x)

ans = ans = ans =

1 9 63 1 1 3 5 6 7 7 9 24
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 3
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
DİZİLER (ARRAYS)
Dizi, sayısal ve metinsel değerler topluluğu olarak tarif edilebilir. Bir dizi, skaler, vektör, matris ya da sözcük olabilir.

 Sayısal diziler (numeric array) : Çift duyarlıklı ve karmaşık sayıları ifade ederler.

 Hücresel diziler (cell array): Nesneleri ve sözcükleri ifade ederler.

 n-Boyutlu diziler (n-dimensional array) : Diziler en genel anlamda, matrisler olarak


isimlendirilirler.
MATLAB/Diziler ve Değişkenler
• MATLAB uygulamalarının temel yapı birimi dizilerdir. Diziler
satır veya sütunlar kullanılarak yapılandırılmış birimlerdir.
• Diziler, vektörler ve matrisler olmak üzere iki ana gruba
ayırmak mümkündür. Vektör; tek boyutlu dizileri tanımlamak
için kullanılır. Matris; iki veya daha fazla boyutlu dizileri
tanımlamak için kullanılır.
• Değişkenler; bilgisayar hafızasında belirli bir yer kaplayan,
kullanıcının belirlediği isme sahip olan dizilerdir.
• MATLAB’ de değişken tipleri “double” ve “char” dır.
• double – 64 bit değerli skaler veya değişkenler için kullanılır. Bu
değişkenler reel, sanal veya kompleks değerler olabilir.
• Örnek: deneme = 2 + i
• double aynı zamanda dizileri ASCII kodlarına çevirebilir.
• Örnek: double(‘deneme’)
3
d = selam; >> deneme=2+i

>> double(d) deneme =

ans = 2.0000 + 1.0000i

115 101 108 97 109 >> double(deneme)

>> char(d) ans =

ans = 2.0000 + 1.0000i

selam >> char(deneme)


??? Error using ==> char
Complex values cannot be converted to chars.
SAYISAL DİZİLERİN SINIFLANDIRILMASI

Bir sayısal dizi, skaler, vektör veya matris formunda olabilir

Matlab’ da herhangi bir a sayısal dizi değişkeni, m satır ve n


sütun sayısını göstermek üzere a(m,n) şeklinde gösterilir.
Dizideki her bir sayısal değer dizinin bir elemanı olup, dizinin
eleman sayısı mxn ile saptanır.
1- SKALER DİZİ
m=1 ve n=1 olması durumunda, a(m,n) bir skaler diziyi (sabit) gösterir.

ÖRNEK:
a=4, a=-25, a=23.65, a=2e3, a=3-2i, vb.

Örnekten de görüldüğü üzere, skaler dizi denilince, 1x1 boyunda ve


sayısal değere sahip olan bir dizi elemanından bahsedilmektedir.

SKALER İŞLEMLER
2- VEKTÖRLER
n eleman sayısına sahip 1xn uzunluğunda diziye satır
vektörü, m eleman sayısına sahip mx1 uzunluğundaki diziye
ise sütun vektörü denir

Matlab’ da vektörler üç farklı yoldan oluşturulabilir.


A- Doğrudan Köşeli Parantez [....] Kullanarak Vektör Oluşturmak

B- Eşit Aralıklı Elemanlar Kullanılarak Vektör Oluşturmak

C- Fonksiyonlar Kullanarak Vektör Oluşturmak


A- Doğrudan Köşeli Parantez [....] Kullanarak Vektör Oluşturmak
>> a=[1; 2; 5; 6; 4; 6]
>> d=a/b
a=
??? Error using ==> mrdivide
1 Matrix dimensions must agree.
2
5
>> a=[1 2 5 6 4 6] >> c=a/b 6
4
a= c= 6
>> a*b
1 2 5 6 4 6 1.0000
ans =
>> b=[1, 2, 5, 6, 4, 6]
1 2 5 6 4 6
b= 2 4 10 12 8 12
5 10 25 30 20 30
1 2 5 6 4 6 6 12 30 36 24 36
4 8 20 24 16 24
>> F=[5+2 sqrt(8) -7/3 1-2*cos(18)]
>> F=[5+2 sqrt(8) -7/3 1-2*cos18]
F=
??? Undefined function or variable 'cos18'.
7.0000 2.8284 -2.3333 -0.3206
TEMEL KURALLAR
 Transpoze işlemi dışında vektörler ile yapılan tüm işlemlerde, vektörlerin her ikisi de ya satır ya da
sütun vektörü ve eleman sayıları eşit olmalı veya en az biri skaler olabilir.
 Vektörlere değişken ismi verilerek çalışılması tercih edilen en uygun yoldur.
 İki vektör arasında yapılan işlemler sonucunda yine bir vektör elde edilir.
 Matlab dilinde nokta işaretli işlemler (dot işlemleri) vektörlerde eleman eleman (elemanter) işlem
yapılacağını gösterir (.x, ./, .\ ve .^).
 Bir satır vektörünün boyu çok uzun ise, üç nokta (...) işaretlemesi ile bir alt satıra geçilerek vektör
elemanlarının yazılımına devam edilebilir (Bir alt satıra geçmek için <enter> komutu kullanılır.
 Matlab’ de vektör çarpımları için cross ve dot fonksiyonlarından yararlanılabilir.
 dot(a,b) fonksiyonuyla, aynı uzunluğa sahip a ve b vektörlerinin skaler çarpımı yapılabilir.
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 4
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
B- Eşit Aralıklı Elemanlar Kullanılarak Vektör Oluşturmak

>> v=1:1:5 >> v1=[1 2 3 4] >> v2=[1; 2; 3; 4] >> v3=7:-1:1

v= v1 = v2 = v3 =
1 2 3 4 5 1 2 3 4 7 6 5 4 3 2 1
1
2 >> sort(v3)
>> u=1:4
3
4 ans =
u=
1 2 3 4 5 6 7
1 2 3 4
>> uv=8:-1 >> uv=8:1

uv = uv =

Empty matrix: 1-by-0 Empty matrix: 1-by-0

>> uv=8:-1:15 >> uv=1:3:15

uv = uv =
>> uv=8:15
1 4 7 10 13
uv = Empty matrix: 1-by-0

8 9 10 11 12 13 14 15
Matlab’ da lineer aralıklı vektör oluşturma işlemlerinde linspace ve logspace
fonksiyonlarından da yararlanılabilmektedir.

x1 ilk değer, x2 son değer ve n ise, ilk değer ile son değer arasındaki
nokta sayısını belirtir. Bu yazım formatında n parametresi belirtilmez
ise, ilk değer ile son değer arası 100 eşit parçaya bölünerek X vektörü
üretilir.
>> x=linspace(1,50,10)
10 adet
x= 1.0000 6.4444 11.8889 17.3333 22.7778 28.2222 33.6667 39.1111 44.5556 50.0000

>> x=linspace(1,50)

1.0000 1.4949 1.9899 2.4848 2.9798 3.4747 3.9697 4.4646 4.9596 ………. 100 adet
x=
47.5253 48.0202 48.5152 49.0101 49.5051 50.0000
logaritmik aralığa sahip bir vektörü üretmek için kullanılır.

Bu yazım şeklinde n belirtilmemiş ise, 10^X1 ile 10^X2 arası logaritmik 50


eşit parçaya bölünerek bir satır vektörü üretilir.

>> logspace(1,2,8)

ans =
10.0000 13.8950 19.3070 26.8270 37.2759 51.7947 71.9686 100.0000

>> logspace(3,5,3)

ans =

1000 10000 100000


C- Fonksiyonlar Kullanarak Vektör Oluşturmak rand

Bu yazım formatında, a ve b ile verilen sayılar


arasında rastgele sayılar üretilebilir. Sadece rand fonksiyonunun kullanımı ile 0 ve 1 arasında
Bu formatta verilen m ve n satır, sütun rastgele sayılar üretilir.
sayısını göstermektedir.
>> y=3+8*rand(1,5)
>>x=rand(1,2)
x=
y=
0.4103 0.8936
10.6010 4.8491 7.8547 6.8879 10.1304
>> y=3+8*rand(1,5)
>> x=rand(3,5)
y = 9.0968 6.6517 3.1480 9.5713 6.5576
x=
>> y=1+4*rand(2,3) 0.8537 0.8998 0.8180 0.2897 0.7271
y= 0.5936 0.8216 0.6602 0.3412 0.3093
0.4966 0.6449 0.3420 0.5341 0.8385
3.4617 4.6873 1.7051 4.1677 3.9528 2.6228
randn Ones

Ortalama değeri 1 ve standart sapma değeri 3 olan 6


ones fonksiyonuyla, elemanları sadece 1’ lerden
elemanlı bir satır vektörü,
oluşan bir vektör üretilebilir.
x=
4.5675 0.8871 1.9819 1.5239 0.4399 3.1774 >> x=ones(1,5) >> x=3*ones(1,5)
x= x=
1 1 1 1 1 3 3 3 3 3

zeros
size
Matlab programlama dilinde vektörlerle işlemler yapılırken size ve length fonksiyonlarından yararlanarak
vektör bilgilerine ulaşılabilmektedir.

x=rand(3,8) ;
>> x=rand(3,8) ;
>> length(x)
>> size(x)
ans =
ans =
8
3 8
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 5
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
MATRİSLER

A matrisinin eleman sayısı mxn ile belirlenir. A(m,n) genel yazım biçimi;

A matrisinin m. satır n. sütun elemanının göstermektedir.

A11 A22 A33 ...Amn vektörüne (dizisine) matrisin ana köşegeni adı verilir.
Matlab dilinde bir matrisin oluşturulması üç farklı yoldan birisi ile
yapılabilmektedir. Bunlar;
A- Köşeli Parantez Kullanarak Matris Oluşturma >> x=[2, 3, 3]
>> x=[2 3 3]
x=
x=
2 3 3
2 3 3

>> x=[2 3 3; 1 3 3; 4 6 8 ] >> size(x)


>> x=[2; 3; 3]
x= ans =
x=
2 3 3 1 3
1 3 3 2
4 6 8 3
3

4
2
1
Matlab’ta matris 3 farklı formatta yazılabilir.

3
B- Utility Fonksiyonları ile Matris Oluşturma

>> g=-5+8*rand(3,4)

g=
eye fonksiyonu ile ana köşegen değerleri 1, diğerleri
2.6010 -1.1121 -1.3483 -1.4424 0 olan bir birim matris üretilir. Birim matris, genelde,
-3.1509 2.1304 -4.8520 -0.0765 I simgesi ile gösterilir
-0.1453 1.0968 1.5713 1.3355

>> g=4*rand(2,2) >> I=eye(5,4) >> I=eye(2) >> I=eye(2,2)


g= I= I=
I= 1 0 1 0
3.6873 0.7051 0 1 0 1
2.9528 1.6228 1 0 0 0
0 1 0 0
>> g=4*rand(2,2) 0 0 1 0
g= 0 0 0 1
0 0 0 0
3.7419 1.6411
3.6676 3.5746
>> ones(3) >> ones(3,3)

ans = ans =

1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1

>> zeros(2) >> zeros(2,3)


>> F=[2 3 5 ; 4 6 9 ; 1 2 3; 4 5 6] >> eye(size(F))
ans = ans =
F= ans =
0 0 0 0 0
2 3 5 1 0 0 0 0 0 0 0
4 6 9 0 1 0
1 2 3 0 0 1
4 5 6 0 0 0
3 X 3 birim matris oluşur
3 X 3 matris
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 6
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
Matris Bilgi Alma Fonksiyonları

Bir matrisin determinantı, rankı, tersi, boyutu, köşegen elemanları vb. Bir A matrisi hakkında
bilgi alabilmek için gerekli olan fonksiyonların yazım formatları aşağıda verilmiştir.

>> A=[2 5 6;4 6 1;1 2 1] >> inv(A)

A= ans =

2 5 6 0.8000 1.4000 -6.2000


4 6 1 -0.6000 -0.8000 4.4000
1 2 1 0.4000 0.2000 -1.6000

>> det(A)

ans =

5
X= Y= Z= T= BB =
>> n=3;
>> m=4; 1 1 1 1 0 0 0 1 0 0 1 2 3 1
>> X=ones(n,m); 1 1 1 1 0 0 0 0 1 0 4 5 6 5
>> Y=zeros(m,n); 1 1 1 1 0 0 0 0 0 1 7 8 9 9
>> Z=eye(n); 0 0 0
>> T=[1 2 3;4 5 6 ;7 8 9];
>> BB=diag(T); H= >> eye(n,m) >> rank(T) >> eig(T)
>> v=[1 2 3 4];
>> H=diag(v); 1 0 0 0 ans = ans = ans =
0 2 0 0
0 0 3 0 1 0 0 0 2 16.1168
0 0 0 4 0 1 0 0 -1.1168
0 0 1 0 -0.0000
Matris İndeksleme İşlemleri

Matlab’ da iki nokta üst üste (:, kolon operatörü) işareti, matris indeksleme işlemlerinde önemli bir yer tutar.

>> A=[4 5 6 ; 7 8 9; 2 3 1] >> A(8) >> A(7)

A= ans = ans =

4 5 6 9 6
7 8 9
2 3 1 >> A(3)

ans =
A( 1)4 A(4)5 A(7)6
2 27 58 8 9
3 6 9
2 3 1
A= >> A(2,3) >> A(3,1)
>> A(:,3) >> A(:,1) >> A(:,4)
ans = ans = ??? Index exceeds matrix dimensions
4 5 6 ans = ans =
6 4
7 8 9
9 9 7
2 3 1 2
1 2
>> A(4,5)
??? Index exceeds matrix dimensions. .
>> A(1,:) >> A(3,:) >> A(6,:)
>> A(2,4) ans = ans = ??? Index exceeds matrix dimensions.
??? Index exceeds matrix dimensions. 4 5 6 2 3 1

>> A(:,2:3) >> A(:,1:2) >> A(:,2:4)


>> A(2:6) >> A(3:1) ans = ans = ??? Index exceeds matrix dimensions.
5 6 4 5
ans = ans = 8 9 7 8
3 1 2 3
7 2 5 8 3 Empty matrix: 1-by-0
>> A(8:9)
>> A(1:1,:)
ans = ans =
9 1 4 5 6
TEMEL MATRİS İŞLEMLERİ
Matrislerle Fonksiyonların Kullanımı
(Not: a ve b birer matris olsun)
A= >> sum(A) >> sum(diag(A)) >> diag(A)
ans =
4 5 6 ans = ans =
7 8 9 4
2 3 1 13 16 16 13 8
1

>> fliplr(A) >> flipud(A)

ans = ans =

6 5 4 2 3 1
9 8 7 7 8 9
1 3 2 4 5 6
A=
4 5 6
7 8 9
>> max(A) >> min(A)
2 3 1
>> sort(A)
ans = ans =
ans =
2 3 1
7 8 9 2 3 1
4 5 6
7 8 9

>> sqrt(A)

ans =

2.0000 2.2361 2.4495


2.6458 2.8284 3.0000
1.4142 1.7321 1.0000
a= >> a+b >> a-b
1 2 6
4 6 1 ans = ans =
5 8 6
>> b=[1 3 5; 5 6 8; 5 6 2] 2 5 11 0 -1 1
b= 9 12 9 -1 0 -7
1 3 5 10 14 8 0 2 4
5 6 8
5 6 2

>> a*b >> a.*b >> a/b >> a\b

ans = ans = ans = ans =

41 51 33 1 6 30 0.4444 0.5926 -0.4815 19.0000 48.0000 180.0000


39 54 70 20 36 8 0.6667 -0.6111 1.2778 -12.0000 -31.5000 -120.5000
75 99 101 25 48 12 1.1111 -0.1852 0.9630 1.0000 3.0000 11.0000
>> a^3 a= >> a'
1 2 6
ans = 4 6 1 ans =
5 8 6
507 802 560 1 4 5
421 666 466 2 6 8
861 1362 952 6 1 6

>> 5*a
>> inv(a)
ans =
ans =
5 10 30
14.0000 18.0000 -17.0000 20 30 5
-9.5000 -12.0000 11.5000 25 40 30
1.0000 1.0000 -1.0000
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 7
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
Matlab’ da program yazma işlemi iki yolla yapılabilmektedir.

1- Komut Satırından (in-line) Programlama

2- M-Dosyaları ile (m-files) Programlama


1- Komut Satırından (in-line) Programlama
2- M-Dosyaları ile (m-files) Programlama
Matlab m-dosyaları veya program
satırları, aşağıdaki şekilde gösterilen
Matlab’in yerleşik Editör/Debugger
adlı metin editöründe yazılarak
oradan saklanırlar.
eğer bir komut satırından sonra ; isareti varsa islem sonucu ekranda
;
görünmez. işareti konulmadan da program çalıstırılabilir fakat her
değisken ekranda görüneceğinden bu tercih edilen bir durum değildir.
% işaret ile başlayan program satırları programın
işleyişini etkilememekte ve program çıkışlarında
gözükmemektedirler. Program içerisinde bilgi yazma amaçlı
kullanılıp icra sürecinde işlem görmezler. Bu satırlarda yazı
yazma işlemi sırasında yazım kuralı olarak düz yazı
yazılabilmekte ve Türkçe karakterler kullanılabilmektedir.
MATLAB GRAFİK ÇİZİMİ

close all
clear all
n=100;
dx=1/n;
x=0:dx:1;
y=sin(5*pi*x);
plot(x,y)
%title(');y=sin(5pix)
in grafigi');
%xlabel('x-ekseni');
%ylabel('y-ekseni');
%legend('sin');
%grid;
close all
clear all
n=100;
dx=1/n;
x=0:dx:1;
y=sin(5*pi*x);
plot(x,y);
title('y=sin(5pix) in grafigi');
xlabel('x-ekseni');
ylabel('y-ekseni');
%legend('sin');
%grid;
close all
clear all
n=100;
dx=1/n;
x=0:dx:1;
y1=sin(5*pi*x);
y2=cos(5*pi*x);
plot(x,y1,'--');
title('y=sin(5pix) ve y=cos(5pix) in
grafigi');
xlabel('x-ekseni');
ylabel('y-ekseni');
hold on;
plot(x,y2,‘r.‘);
legend('sin','cos');
grid;
close all
clear all
n=100;
dx=1/n;
x=0:dx:1;
y1=sin(5*pi*x);
y2=cos(5*pi*x);
subplot(2 1 1)
plot(x,y1,'--');
title('y=sin(5pix) in grafigi');
xlabel('x-ekseni');
ylabel('y-ekseni');
legend('sin');
grid;
subplot(2 1 2)
plot(x,y2,'.');
title(' y=cos(5pix) in grafigi');
xlabel('x-ekseni');
ylabel('y-ekseni');
legend('cos');
grid;
close all
clear all
clc
n=100;
dx=1/n;
x=0:dx:1;
y1=sin(5*pi*x);
y2=cos(5*pi*x);
%subplot(2,1,1)
subplot(1,2,1)
plot(x,y1,'--');
title('y=sin(5pix) in grafigi');
xlabel('x-ekseni');
ylabel('y-ekseni');
legend('sin');
grid;
%subplot(2,1,2)
subplot(1,2,2)
plot(x,y2,'.');
title(' y=cos(5pix) in grafigi');
xlabel('x-ekseni');
ylabel('y-ekseni');
legend('cos');
grid;
Input komutu
Bu fonksiyon, kullanıcıdan veri girişi
istendiği durumlarda kullanılır.

Örneğin:
boy=input(‘Boy’) seklinde kullanılır. Bizim
klavyeden girdiğimiz sayı boy değiskenine
atanacaktır.
Burada s takısı, giriş olarak bir karakter dizge girişini belirtir. 1. söz diziminde, kullanıcının
klavyeden yapacağı bir giriş için bekler ve girilen değeri X’ e döndürür. 2. söz diziminde ise,
girilen dizgeyi bir metin değişkeni olarak döndürür.

Şayet, girilen değerin bir alt satırda yazılması isteniyorsa, ikinci tırnak işaretinden önce \n denetim
karakteri kullanılmalıdır.
clc
clear all a satır sayısını giriniz4
close all a=
a=input(' a satır sayısını giriniz','s') 4
b=input('b sütün sayısını giriniz','s')
%a=input(' a satır sayısını giriniz\n') b sütün sayısını giriniz 2
%b=input(' b satır sayısını giriniz') b=
c=a+b 2
c=
102

clc
a satır sayısını giriniz alt satırda yazılması
clear all isteniyorsa
close all 4
%a=input(' a satır sayısını giriniz','s') a=
%b=input('b sütün sayısını giriniz','s') 4 \n denetim karakteri
a=input(' a satır sayısını giriniz\n') kullanılmalıdır
b=input(' b satır sayısını giriniz') b satır sayısını giriniz 2
c=a+b b=
2
c=
6
disp komutu
Bu kullanımı ile x değişkeninin değerinin (sayısal ya da metinsel) ekranda
görüntülenmesi için kullanılır.

Bilgilerin ekranda nasıl görüneceğine yardımda bulunan bir fonksiyondur.


Dizinin değişken adı ekranda görüntülenmez.
%üçgenin alanını hesaplayın Klavye F5 tuşu veya
clear all
clc
a=input('a değerini giriniz')
h=input(‘h değerini giriniz')
Alan= (a*h)/2;
disp('Alan değeri')
disp(Alan)

a değerini giriniz 6

a=

h değerini giriniz 8

h=

Alan değeri
24
%üçgenin alanını hesaplayın %üçgenin alanını hesaplayın
clear all clear all
clc clc
a=input('a değerini giriniz') a=input('a değerini giriniz')
h=input('h değerini giriniz') h=input('h değerini giriniz')
Alan= (a*h)/2; Alan= (a*h)/2;
disp('Alan değeri') %disp('Alan değeri')
%disp(Alan) disp(Alan)

a değerini giriniz6 a değerini giriniz6

a= a=

6 6

h değerini giriniz8 h değerini giriniz8

h= h=

8 8

Alan değeri 24
>>
MATLAB/Sonuçların Görüntülenmesi
• Hesaplanan sonuçları görüntülemenin diğer bir yolu fprintf fonksiyonudur.
• fprintf(format, değer) şeklinde kullanılır.
• format – sunulacak bilginin şeklini, bu bilgiye ilişkin açıklamaları ve bu
açıklamaların nasıl bir şekilde sunulacağını belirleyen ifadelerden oluşur.
• değer – sunulacak bilgiyi içerir.

>> x=123.2;
>> fprintf('Islem sonucu %f bulunmustur. \n', x)
Islem sonucu 123.200000 bulunmustur.
>> x=123.2;
>> fprintf('Islem sonucu = %f \n', x)
Islem sonucu = 123.200000

‘%f’ – gösterilecek değişken gösterimine ait açıklamanın hangi şekilde


gösterileceğini ifade eder.
‘\n’ – komut istem ifadesinin (>>) kaç satır boşluktan sonra yazılacağını gösterir.

21
MATLAB/Sonuçların Görüntülenmesi
>> x=123.2;
>> fprintf('Islem sonucu = %5.1f \n', x)
Islem sonucu = 123.2

• ‘%’ ile ‘f’ işaretleri arasına ondalık sayılar yazarak,


gösterilecek değerin biçimini değiştirmek
mümkündür.
fprintf('Islem sonucu = %5.1f \n', x)

Alan genişliği Ondalık


>> x=123.2; kısım
>> fprintf('Islem sonucu = %15.1f \n', x)
Islem sonucu = 123.2
>> x=123.2;
>> fprintf('Islem sonucu = %25.1f \n', x)
Islem sonucu = 123.2
22
>> x=123.2;
>> fprintf('Islem sonucu = %15.1f \n', x)
Islem sonucu = 123.2

>> fprintf('Islem sonucu = %15.4f \n', x)


Islem sonucu = 123.2000

>> fprintf('Islem sonucu = %1.4f \n', x)


Islem sonucu = 123.2000

>> fprintf('Islem sonucu = %5.4f \n', x)


Islem sonucu = 123.2000

>> fprintf('Islem sonucu = %10.4f \n', x)


Islem sonucu = 123.2000

>> fprintf('Islem sonucu = %1.10f \n', x)


Islem sonucu = 123.2000000000

>> fprintf('Islem sonucu = %25.10f \n', x)


Islem sonucu = 123.2000000000
fprintf için biçimler
Belirteç Tanımı
%e Küçük harf ile üstel gösterim
%E Büyük harf ile üstel gösterim
%f Kayan noktalı gösterim, aksi belirtilmedikçe
virgülden sonra 6 basamak gösterir.
%s Karakter dizilerini gösterir.
%d Virgüllü sayıları daima 10’un kuvvetiyle gösterir.

Bir sonuç fprintf fonksiyonu ile yazıldıktan sonra bir diğeri yazılacaksa bunun komut
satırının neresine yazılacağı da bu fonksiyonda belirtilebilir. Bunun için kullanılan
karakterler:

Karakter Tanımı
\b backspace
\n Yeni satıra gönderir
\r Satır başına döndürür
\t Yatay Tab

24
>> a=100.25;
>> b=255.23;
>> fprintf('a değeri = %5.2f\r ve b değeri = %5.3f \n', a,b) Karakter Tanımı
a değeri = 100.25 \b backspace
ve b değeri = 255.230
\n Yeni satıra gönderir
\r Satır başına döndürür
>> a=100.25;
\t Yatay Tab
>> b=255.23;
>> fprintf('a değeri = %5.2f\b ve b değeri = %5.3f \n', a,b)
a değeri = 100.2 ve b değeri = 255.230

>> a=100.25;
>> b=255.23;
>> fprintf('a değeri = %5.2f\t ve b değeri = %5.3f \n', a,b)
a değeri = 100.25 ve b değeri = 255.230

• Görüntülenecek açıklamalarda tek tırnak(‘), yüzde (%)


ve ters bölme (\) işaretleri kullanılmak isteniyorsa,
arada boşluk bırakmadan ikişer adet kullanılmalıdır. 25
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 7
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
KOŞUL DEYİMLERİ (Conditional statements)

Tüm bilgisayar dillerinde olduğu gibi Matlab programlama dilinde de karar verme aşamalarının
denetiminin büyük önemi vardır.

Bu komutlar, genel olarak, koşula bağlı karar vermede kullanılırlar.

Koşul ifadeleri bir programda bir ya da daha fazla if, if else ve elseif deyimlerinden oluşabilir.

Unutulmamalıdır ki, bu deyimlerin her birinin son satırı end deyimi ile sonlandırılır. Koşul deyimlerinin
bulunduğu satırların sonunda çıkış yazdırmayan (;) işaretini kullanmaya gerek yoktur.
MATLAB/if,end yapısı

if (eğer) yapısı bir koşulun gerçekleşmesi durumunda bir işlemi yaptırmak için sıklıkla kullanılır. Bu ifade,
if koşul if koşul
if koşul
işlem işlem
işlem
else elseif
end
işlem işlem
end else
işlem
end

biçimlerindedir.
NOT: Bu şekilde kullanılan if/end yapısı ile sadece bir sınama yapılabileceği unutulmamalıdır.

n adet if .... end yapısı ile n tane sınama yapmak olasıdır.

Ancak, dikkat edilmesi gereken, her if, bir end deyimi ile sonlandırılmalıdır.

Burada, mantıksal ifadede istenenler


gerçekleşirse (doğru ise, şartları yerine
getiriyorsa) program deyim de belirtilen işleri
yapmak üzere deyim satırına inerek buradaki
işlemler gerçekleştikten sonra end deyimiyle,
if/end, yapısı sona ermiş olur.
%üçgen alanını hesaplayan program %üçgen alanını hesaplayan program
clear all clear all
clc clc
a=input('a değerini giriniz'); a=input('a değerini giriniz');
if a<=0 if a<=0
a=input('a değerini giriniz'); a=input('a değerini giriniz');
end a=input('a değerini pozitif giriniz');
h=input('h değerini giriniz'); end
if h<=0 h=input('h değerini giriniz');
h=input('h değerini giriniz'); if h<=0
end h=input('h değerini giriniz');
Alan=(a*h)/2; h=input(‘h değerini pozitif giriniz');
disp('Alan Değeri'); end
disp(Alan) Alan=(a*h)/2;
disp('Alan Değeri');
disp(Alan)
a değerini giriniz-8
a değerini giriniz-6
a değerini giriniz-4 a değerini giriniz5 a değerini pozitif giriniz6
a değerini giriniz5 h değerini giriniz5 h değerini giriniz-5
h değerini giriniz-6 Alan Değeri h değerini giriniz-9
h değerini giriniz6 12.5000 h değerini pozitif giriniz9
Alan Değeri Alan Değeri
15 27
iç içe if... end yapısı
Herhangi bir koşulun sağlanması durumunda ikinci bir koşulun gerçekleştirilip gerçekleştirilmediğini
sınamak için kullanılabilir.

Genel yazım formatı;


%üçgen alanını hesaplayan program
clear all
clc
a=input('a değerini giriniz');
if a>0
h=input('h değerini giriniz');
if h<=0
h=input('h değerini giriniz');
end
Alan=(a*h)/2;
disp('Alan Değeri');
disp(Alan)
end

a değerini giriniz-8 a değerini giriniz4


h değerini giriniz-6
>> h değerini giriniz3
Alan Değeri
6
Problem: Klavyeden girilen bir sayının pozitif olması durumunda bu sayının karekökü alan ve p
değişkenine atayan, negatif olması durumunda ise, doğal logaritmasını olarak p değişkenine atayan
program kodunu yazınız.
a değerini giriniz6
%p değişkeni p değerinin karekökü
clear all 2.4495
clc
a=input('a değerini giriniz');
if a>0 a değerini giriniz-9
p=a^0.5; p değeri doğal logaritması
disp('p değerinin karekökü ') 2.1972 + 3.1416i
disp(p)
end
if a<=0
p=log(a);
disp('p değeri doğal logaritması')
disp(p)
end
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 6
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
Örnek: Girilen bir sayının negatif olması durumunda, sayıyı doğal logaritmasıyla değiştiren bir kod düşünelim:

a=input(' bir sayi giriniz= '); Else yapısı kullanılmasaydı


if a<0 a=input(' bir sayi giriniz= ');
a=log(a); “Diğer durumda” if a<0
else anlamındadır: a=log(a);
a=a; Burada, a>0 end
end koşulunu temsil if a>0
a eder. a=a;
end
a
3
clc a=input(' bir sayi giriniz= ');
clear all if a<0
a=input(' bir sayi giriniz=\n '); a=log(a);
if a<0 end
a=log(a); if a>0
else a=a;
a=a; end
end a
a

bir sayi giriniz= bir sayi giriniz=


-45 -45

a= a=

3.8067 + 3.1416i 3.8067 + 3.1416i

>> >>
%üçgen alanını hesaplayan program %üçgen alanını hesaplayan program
clear all clear all
clc clc
a=input('a değerini giriniz'); a=input('a değerini giriniz');
if a>0 if a>0
else a=input('a değerini giriniz'); h=input('h değerini giriniz');
end if h<=0
h=input('h değerini giriniz'); h=input('h değerini giriniz');
if h>0 end
else Alan=(a*h)/2;
h=input('h değerini giriniz'); disp('Alan Değeri');
end disp(Alan)
Alan=(a*h)/2; end
disp('Alan Değeri');
disp(Alan)

a değerini giriniz5 a değerini giriniz5


h değerini giriniz5 h değerini giriniz5
Alan Değeri Alan Değeri
12.5000 12.5000
ÖRNEK
Ekrandan girilen bir sayının karekökünü bulan, sayı sıfırdan küçükse “Negatif sayıların karekökü olmaz” uyarı mesajı
veren programı yazınız ?
clc
clear all
sayi=input('Karekökü hesaplanacak sayıyı giriniz:\n')
if sayi<0
disp('Negatif sayının karekökü olmaz!!!')
else karekok=sqrt(sayi)
fprintf(' Karekök değerimiz = %5.4f\n', karekok)
end
Karekökü hesaplanacak sayıyı giriniz:
25

sayi =
25
karekok =
5
Karekök değerimiz = 5.0000
>>
Eğer mantıksal ifade_1 doğru ise, Deyim_1’ de belirtilen
işlemler yürütülür.

Eğer mantıksal ifade_1 yanlış ise, daha sonra bir mantıksal


ifade_2 verilir.

Şayet bu ikinci koşul doğru ise Deyim_2’ de belirtilen işlem,


yanlış ise Deyim_3’ de belirtilen işlem ve end ile de işlem
sona erdirilir.
Girilen bir sayı; negatif ise küpünü; sıfır ise kendi değerini; pozitif ise karesini;
alan ve ekranda görüntüleyen program
clear all; clc;
a=input('Bir sayı giriniz');
if a<0 Eğer mantıksal ifade_1 doğru ise, Deyim_1’ de
kup=a^3; belirtilen işlemler yürütülür.
disp('negatif sayı küpü');
disp(kup)
elseif a==0 Eğer mantıksal ifade_1 yanlış ise, daha sonra bir
disp('girilen sayı sıfır') mantıksal ifade_2 verilir.
disp(a)
else
kare=a^2; Şayet bu ikinci koşul doğru ise Deyim_2’ de belirtilen
disp('pozitif sayı karesi') işlem, yanlış ise Deyim_3’ de belirtilen işlem ve end ile
disp(kare) de işlem sona erdirilir.
end
clear all; clc; Bir sayı giriniz Bir sayı giriniz
a=input('Bir sayı giriniz \n'); 10 -45
if a<0 pozitif sayı karesi negatif sayı küpü
kup=a^3; 100 -91125
disp('negatif sayı küpü'); >> >>
disp(kup)
elseif a==0
disp('girilen sayı sıfır') Bir sayı giriniz
disp(a) 0
else girilen sayı sıfır
kare=a^2; 0
disp('pozitif sayı karesi')
disp(kare)
end
verilen akış diyagramını inceleyerek
programın çalışma prensibini
anlamaya çalışınız. Bu tip yapılarla
programlarda çok farklı sınama
işlemleri yapılabilir. Farklı if
yapıları kullanarak 3, 7 ve 11 sınama
yapabilecek programın işleyiş
mantığını oluşturmayı deneyiniz.
ÖRNEK
Girilen sınav notuna göre ekrana “zayıf – orta – iyi – pekiyi” şeklinde yazdıran program
clear all; clc;
0 – 49 Zayıf sinav_notu = input('Ögrencinin notunu giriniz = \n ');
0 – 69 Orta if sinav_notu > 84
70 – 84 İyi disp('Pekiyi')
85 – 100 Pekiyi elseif sinav_notu > 69
disp(‘iyi')
elseif sinav_notu > 49
disp('Orta')
else
disp('Zayıf')
end

Ögrencinin notunu giriniz = Ögrencinin notunu giriniz = Ögrencinin notunu giriniz =


41 58 100
Zayıf Orta Pekiyi
>> >> >>
a=input('hangi günde olduğumuzu giriniz gün numarası şeklinde örnek : pazartesi=1')
if a==1
disp('pazartesi günündesin, derslerin fizik kimya')
elseif a==2
disp('Salý günündesin, derslerin BTGB ve veri işlem saat 9 da')
elseif a==3
disp('çarþamba gnündesin derslerin .... ')
elseif a==4
disp(' perþembe derslerin')
elseif a==5 ;
disp('cuma günündesin sınavın var dikkat ders çalış')
else
disp('hatalı bir gün girdiniz.')
end
hangi günde olduğumuzu giriniz gün numarası şeklinde örnek : pazartesi=1
5
Cuma günündesin sınavın var dikkat ders çalış
>>

hangi günde olduğumuzu giriniz gün numarası şeklinde örnek : pazartesi=1


6
hatalı bir gün girdiniz.
>>
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 8
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
DÖNGÜ (Loop) YAPILARI
Matlab programlama dilinde döngüler için for ve while deyimleri kullanılmaktadır.
for-end Döngüsü
• En genel kullanımları;

for Değişken adı=Başlangıç Değeri:Artış Değeri:Son


Değer

İşlem Bloğu

end

for Değişken adı=vektör

İşlem Bloğu

end
Döngü Nedir
• Program içeresinde bazı ifadelerin tekrarlanarak
yapılmasına döngü denilir.

• Döngü oluşturmak için DÖNGÜ İFADELERİ


kullanılır.

• Döngü kullanımı istenen program bölümünün


istenen sayıda yada istenen şartlar
gerçekleşinceye kadar tekrarlanmasını sağlar.
for-end İşleyişi
• For deyiminden sonra bir değişken ismi yazılır.
• For bu değişkenin değerini ilk değerden son değere
kadar istenen artışlar ile değiştirir.
• Değişkene her değer atanışından sonra for-end
arasındaki tüm işlemler yapılır ve for deyimine geri
dönülerek değişkenin değeri değiştirilir.
• for-end döngüsünde değişkenin değeri artırılabilir
yada azaltılabilir.
for-end İşleyişi
• Değişkenin değeri son değere ulaştığında for-end
arasındaki işlemler son kez yapılarak döngü
bitirilir ve end deyiminden sonraki işlemlere
geçilir. Böylece for-end arasındaki işlemler
kullanıcının belirlediği sayıda tekrar edilmiş olur.

• Eğer artış değeri girilmez ise bu değer MATLAB


tarafından 1 olarak alınır.
for-end Akış Şeması

For i=1:1:10

İşlem Bloğu 1

END
ÖRNEK:

1’ den 5’ e kadar sayıların küplerini alan ve ekranda yazan programın kodunu


yazınız.
%sayıların küplerini hesaplar %sayıların küplerini hesaplar %sayıların küplerini hesaplar
clear all; clc; clc;clear all; clc;clear all;
for i= 1:5 for i= 1:5
x(i,:)=i^3; x(:,i)=i^3; disp(' sayı küpü')
end end
disp(x) disp(x) for i= 1:5
i;x=i^3;
1 disp([i x])
8 end
27 1 8 27 64 125
64
125 >>
sayı küpü
1 1
>>
2 8
3 27
4 64
5 125
>>
%sayıların küplerini hesaplar
clc;clear all;

disp(' sayı küpü')

for i= 1:5
i;x=i^3;
disp([i x]) %sayıların küplerini hesaplar
end clc;clear all;

for i= 1:5
x(i)=i^3;
end

sayı küpü
1 1 x=
2 8
3 27 1 8 27 64 125
4 64
5 125 >>
>>
Örnek

1-10 arasındaki sayıları toplayan program yazınız.

BAŞLA

Top=0

say=1 :1:100

DÖNGÜ

Top=Top+say

Top

SON
clc;
clear all;
Top=0;
for say=1:1:10;
Top=Top+say;
fprintf ('0-10 arasındaki sayıların toplamı %d dir.\n',Top)
end
Top

Top = 0-10 arasındaki sayıların toplamı 1 dir.


0-10 arasındaki sayıların toplamı 3 dir.
55 0-10 arasındaki sayıların toplamı 6 dir.
0-10 arasındaki sayıların toplamı 10 dir.
0-10 arasındaki sayıların toplamı 15 dir.
0-10 arasındaki sayıların toplamı 21 dir.
0-10 arasındaki sayıların toplamı 28 dir.
0-10 arasındaki sayıların toplamı 36 dir.
0-10 arasındaki sayıların toplamı 45 dir.
0-10 arasındaki sayıların toplamı 55 dir.

Top =

55
Klavyeden girilen sayıların ortalamasını alan Matlab kodunu yazınız

clear all;
clear all;
clc;
clc;
y=input('degerleri vektorel olarak gir');
y=input('degerleri vektorel olarak gir');
top=0;
top=0;
for i=1:length(y)
for i=1:length(y);
top=top+y(i)
top=top+y(i);
end
end
orta=top/length(y);
orta=top/length(y);
disp('ortalama=')
disp('ortalama=')
disp(orta)
disp(orta)
degerleri vektorel olarak gir[1 5 9]
top =
degerleri vektorel olarak gir[1 3 5 8 9 6 2]
1
ortalama=
top =
4.8571
6
top =
15
ortalama=
5
>>
%içiçefor yapısı %içiçefor yapısı
clear all; clc; clear all; clc;
disp('i değeri j değeri') disp('i değeri j değeri')
disp(' ---- ----') disp(' ---- ----')
for i=1:2 for i=1:3
for j=1:3 for j=1:2
disp([i j]) disp([i j])
end end
end end

i değeri j değeri i değeri j değeri


---- ---- ---- ----
1 1 1 1

1 2 1 2

1 3 2 1

2 1 2 2

2 2 3 1

2 3 3 2
Klavyeden girilen sayıların en küçüğünü bulan Matlab
kodunu yazınız clear all; clc
x=input('degerleri vektorel olarak gir\n');
clear all; clc
ek=x(1);
x=input('degerleri vektorel olarak gir\n’);
for i=2:length(x);
ek=x(1);
if x(i)<ek ;
for i=2:length(x);
ek=x(i);
if x(i)<ek ;
sira=i;
ek=x(i);
end
end
end
end
disp(['en küçük =' num2str(ek)] )
disp(['en küçük =' num2str(ek)] )
disp(['sira numarasi=' num2str(sira)])

degerleri vektorel olarak gir degerleri vektorel olarak gir


[5 3 4 1 3 5 2 3] [5 3 4 1 3 5 2 3]
en küçük =1 en küçük =1
>> sira numarasi=4
>>
BİLGİSAYAR TEMELLERİ
VE
PROGRAMLAMAYA GİRİŞ
DERS 11
Doç.Dr. HAKAN ALP

• Kaynaklar: Prof.Dr. Davut AYDOĞAN, «Bilgisayar Temelleri ve Programlamaya Giriş Ders Notları»
• Yard. Doç.Dr. Ertan PEKŞAN «Programlama Ders Notları» Kocaeli Üniversitesi Jeofizik Müh. Bölümü
• Brain R. Hunt, Ronal L. Lipsman ve Jonathan M. Rosenberg «A Guide to MATLAB» Cambridge
University Press, 1995
• Doğan, U., (2009), Temel Bilgisayar Bilimleri Ders Notları, YTÜ, Lisans Ders Notları, İstanbul
while – end Döngüsü

• While mantıksal sınama While 0


Mantıksal şart
• İşlem Bloğu
1
• end
İşlem Bloğu 1

END
while-end Döngüsü
• Bir şart sağlandığı sürece program içersindeki bir
grup işlemin tekrarlanması istendiğinde kullanılır.
• While deyiminden sonra yazılan mantıksal
sınamanın cevabı doğru (1) olduğu sürece while-
end arasındaki işlemler tekrarlanır. end
deyiminden while deyimine geri dönülür ve
mantıksal sınama tekrar kontrol edilir.
while-end Döngüsü
• for-end deyiminden farklı olarak istenen sayıda değil,
belirli bir durum doğru olduğu sürece işlemlerin
tekrarlanması sağlanmış olur.
• While deyiminin yanındaki mantıksal sınama cevabı
yanlış (0) olduğunda ise işlemler yapılmadan end
deyiminden sonraki işleme geçilir.
• While-end döngüsünden çıkmanın diğer bir yolu ise
break komutudur. Bu komut çalışmakta olan döngüyü
sonlandırarak, end deyiminden sonraki işleme gider.
'0-10 arasındaki sayıların '0-10 arasındaki sayıların
toplamı for döngüsü toplamı While döngüsü
clc 1
clc; clear all
clear all; a=1; 3
Top=0; b=10;
for say=1:1:10; Top=0; 6
Top=Top+say; while a<=b;
end Top=Top+a; 10
Top a=a+1;
disp(Top) 15
end
Top = 21

55 28

36

45

55

>>
Burada, giriş
ifadesi her bir
case ile
karşılaştırılmak
tadır. Dikkat
edilmesi
gereken nokta,
her bir case
değerinin, ayrı
ayrı satırlarda
olmasıdır.
clc; clear all

a=input('anahtar kelimeyi gir (1-2) giriniz');


switch a
case 1
'küre gravitesi'

case 2
'silindir gravitesi'
otherwise
'dikkat 1 veya 2 giriniz'
end

anahtar kelimeyi gir (1-2) giriniz anahtar kelimeyi gir (1-2) giriniz anahtar kelimeyi gir (1-2) giriniz
1 2 3

ans = ans = ans =

küre gravitesi silindir gravitesi dikkat 1 veya 2 giriniz

>> >> >>


Fonksiyon m-dosyaları bir işlemi tek bir komutta yapmamızı
sağlayan (giriş argümanlarını alıp çıkış argümanlarına dönüştüren)
programcıklardır.

Fonksiyon m-dosyaları, bazı işlemleri kısa yoldan yapmak için düz


yazı m-dosyası şeklinde düzenlenmiş komutlar topluluğudur.
ort.m dosyası olarak kaydedildi.
clc
clear all
for i=1:2; function or=ort(x);
x(i)=input('x değerini giriniz\n'); top=0;
end for k=1:length(x);
ort=ort(x); top=top+x(k);
disp('ortalama değer') end
disp(ort) or=top/length(x);

x değerini giriniz
6
x değerini giriniz
5
ortalama değer
5.5000
Kullanıcının girdiği sayının faktöriyelini hesaplayan fonksiyonu While-end
kullanarak yazınız
clc; clear all; function fakto=faktoriyel (n)
fakto=1;
x=input('faktoriyeli alınacak rakam giriniz ') sayac=0;
while sayac<n;
faktoriyel=faktoriyel2(x); sayac=sayac+1;
fakto=fakto*sayac;
disp('faktöriyel değeri') end

disp(faktoriyel)
faktoriyel.m
dosyası kaydedidi.
Fonksiyon m-dosyalarının hazırlanmasında göz önünde bulundurulması gereken önemli noktalar:

• Fonksiyon m-dosyalarının ilk satırı fonksiyonun tanıtım satırıdır. Daha sonra tanıtım satırları (% işareti
ile) ve fonksiyonun gövdesi gelir.

• Fonksiyon m-dosyalarında ilk satır kesinlikle function komutu ile başlamalıdır. Şayet, function komutu ile
başlayan bir satır yok ise, düz yazı m-dosyası olarak algılanır.

• Fonksiyon m-dosyaları fonksiyon_adı ile saklanır ve istendiğinde aynı adla çağrılarak işleme konur. Yanı,
fonksiyonun adı ile m-dosyasının adı aynı olmalıdır.

• Fonksiyon m-dosyaları ana program içerisinden istendiği durumlarda pek çok kez çağrılabilir ve istenen
aynı işlemler yaptırılabilir.

• Fonksiyon m-dosyası girişleri ve çıkışları, çağrıldığı andaki veri girişleri ile aynı türden olmalı (sayısal,
string, karmaşık), fakat aynı karakterler ile ifade edilmesi zorunluluğu yoktur.

• Örneğin; fonksiyon m-dosyasının çağrıldığı andaki bir değişken ismi a ise, bu değişken fonksiyon m-
dosyası ilk satırında c karakteri ile tanımlanabilir.

• Bundan sonra fonksiyon m dosyası içerisinde a değişkeni c değişkenine dönüşmüş şekli ile işlem görür.

You might also like