You are on page 1of 31

Bilgisayar Programlama

(5. Sunu)
MATLAB’İN SAYI YUVARLAMA
FONKSİYONLARI
MATLAB’in ondalıklı sayıları yuvarlama amacıyla
sıklıkla kullanılan 4 adet hazır fonksiyonu vardır.
Bunlar:
fix
round
ceil
 floor
fix(x)
Kendisine parametre (argüman) olarak aldığı x
ondalıklı sayısını 0 (Sıfır) yönünde karşılaştığı ilk
tamsayıya yuvarlar.
round(x)
Kendisine parametre (argüman) olarak aldığı x
ondalıklı sayısını kendisine en yakın tamsayıya
yuvarlar.
ceil(x)

Kendisine parametre (argüman) olarak aldığı x


ondalıklı sayısını pozitif sonsuz yönünde karşılaştığı
ilk tamsayıya yuvarlar.
floor(x)

Kendisine parametre (argüman) olarak aldığı x


ondalıklı sayısını negatif sonsuz yönünde
karşılaştığı ilk tamsayıya yuvarlar.
BİR SAYININ TAMSAYI VEYA
ONDALIKLI SAYI OLUP OLMADIĞININ
ARAŞTIRILMASI
Bir sayı tamsayı ise sayının kendisi sayının
yuvarlanmışına eşittir.
Bir sayı yuvarlanmışına eşit değilse ondalıklı
bir sayıdır.
mod FONKSİYONU İLE KALAN BULMA
mod(x,y) x sayısının y sayısına bölümünden kalanı
verir.

x=y*bölüm+kalan
x=y*fix(x/y)+mod(x,y)
BİR SAYININ ÇİFT SAYI VEYA TEK SAYI
OLUP OLMADIĞININ ARAŞTIRILMASI
Bir sayı ikiye tam olarak bölünebiliyorsa yani
sayının ikiye bölümünden kalan sıfırsa bu sayı
bir çift sayıdır.
Bir sayının ikiye bölümünden kalan 1 ise bu
sayının bir tek sayıdır.
rand FONKSİYONU RASTGELE SAYI ÜRETİMİ
 rand(n,m) fonksiyonu MATLAB’de nxm boyutunda ve
elemanları rastgele sayılar olan bir matris oluşturur.
Oluşturulan bu rastgele sayılar 0 ile 1 arasındadır ve düzgün
dağılımlıdır.
 Üretilmek istenen matris kare bir matris ise yani n satır
sayısı, m sütun sayısına eşit ise rand(n,n) yerine sadece
rand(n) kullanılabilir.
 0 ile 1 arasında rastgele ondalıklı bir skaler sayı üretmek için
ise rand(1) fonksiyonunun kullanımı yeterlidir.
 Rastgele sayılardan oluşan bu matrisin tüm elemanlarını k
gibi bir sayı ile çarparak sayıları 0 ile k aralığına çekebiliriz.
 Ondalıklı sayılardan oluşmuş bir matrisin elemanlarını
yuvarlayıp tamsayı yapmak için herhangi bir yuvarlama
fonksiyonunu, mesela round fonksiyonunu kullanabiliriz.
AŞAĞIDAKİ MATLAB DEYİMLERİ KOMUT
PENCERESİNDE ÇALIŞTIRILDIKLARINDA
NASIL ÇIKTILAR ÜRETİRLER?
>> a=rand(1,10)
>> b=fix(rand(3,5))
>> c=round(40*rand(5,3))
>> d= 40*round(rand(5,3))
>> e=round(10+40*rand(5,3))
>> f=10+40*round(rand(5,3))
>> g=round(50+250*rand(3,4))
>> h=round(1000*rand(1))
zeros FONKSİYONU İLE SADECE 0’LAR İÇEREN
BİR MATRİSİN OTOMATİK OLARAK
OLUŞTURULMASI
 zeros(n,m) fonksiyonu nxm boyutunda
(n satırlı ve m sütunlu) ve her bir elemanı 0
olan bir matris üretmek amacıyla kullanılır.
 Üretilmek istenen matris kare bir matris ise
yani n satır sayısı, m sütun sayısına eşit ise
zeros(n,n) yerine sadece zeros(n)
kullanılabilir.
>> zeros(1,3) zeros(3,5) deyimi acaba
>> zeros(3,1) fix(rand(3,5)) deyimi ile aynı
>> zeros(4,4) sonucu üretir mi?

>> zeros(4)
>> zeros(3,5)
ones FONKSİYONU İLE SADECE 1’LER İÇEREN
BİR MATRİSİN OTOMATİK OLARAK
OLUŞTURULMASI
 ones(n,m) fonksiyonu nxm boyutunda
(n satırlı ve m sütunlu) ve her bir elemanı 1
olan bir matris üretmek amacıyla kullanılır.
 Üretilmek istenen matris kare bir matris ise
yani n satır sayısı, m sütun sayısına eşit ise
ones(n,n) yerine sadece ones(n)
kullanılabilir.
>> ones(1,3) ones(3,5) deyimi acaba
>> ones(3,1) ceil(rand(3,5)) deyimi ile
>> ones(4,4) aynı sonucu üretir mi?

>> ones(4)
>> ones(3,5)
UYGULAMA
Dünyaya geldiğiniz gün 0 (sıfır) başlangıç değeri ile çalışmaya başlayan ve
mevcut değerini her gün 1 arttıran bir sayaca sahip olduğunuzu hayal edin.
Böyle bir sayıcının, ekranında gördüğünüz değere ulaşmak için kaç yıl, kaç ay
ve kaç gün süreyle sayma işlemi gerçekleştirdiğini hesaplayacak bir MATLAB
programını yazınız. Programınız input komutu ile kullanıcıdan klavye yoluyla
söz konusu sayıcı değerini almalıdır ve hesapladığı yıl, ay ve gün değerini
fprintf komutuyla ekrana basmalıdır. Bir yılın 365 ve bir ayın da 30 günden
oluştuğunu kabul edebilirsiniz.

sayac=input('Sayıcınızın Mevcut Değeri?: ');


yilSayisi=fix(sayac/365);
ardaKalan=mod(sayac,365); %ardaKalan=sayac-yilSayisi*365
aySayisi=fix(ardaKalan/30);
gunSayisi=mod(ardaKalan,30);
fprintf('%d Sayıcı Değeri ', sayac);
fprintf('%d yıla, %d Aya ve ', yilSayisi, aySayisi);
fprintf('%d Güne Denk Gelir.\n', gunSayisi);
UYGULAMA
Program Ekran Görüntüsü
DÖNGÜLER

 Birçok uygulamada bazı işlemlerin tekrar


tekrar gerçekleştirilmesi gerekir. Bu imkanı
sağlayan programlama yapılarına döngü
denir.
 MATLAB’de döngü oluşturmak amacıyla
kullanılan for ve while adında 2 tekrarlama
deyimi vardır.
DÖNGÜ OLUŞTURMA KURALLARI

1- Döngü değişkeninin başlangıç değeri belirlenir.


2- Döngü değişkeninin bitiş değeri belirlenir.
3- Döngü değişkeninin bitiş değerine ulaşıp ulaşmadığı
test edilir.
4- İstenen işlem gerçekleştirilir.
5- Döngü değişkeni, döngü içinde adım miktarı kadar
artırılır yada azaltılır.
for DÖNGÜSÜ
 Tekrarın belirli bir sayı adedince gerçekleşmesine izin
veren yapı

for döngü değişkeni = başlangıç:artış miktarı:bitiş


komutlar
end

for döngü değişkeni = başlangıç:bitiş


komutlar
end
artış miktarı otomatik olarak 1 atanır.

döngü değişkeni sayaç olarak da adlandırılır.


UYGULAMA
1 sayısı ile klavyeden girilen herhangi bir sayı
arasındaki ardışık sayıların toplamını for
n sayısı 0 veya
döngüsü kullanarak hesaplayan negatifse
ve ekrana hangi
toplam elde
basan bir düzyazı MATLAB programıedilir?
yazınız.
n=input('Lutfen Bir Sayi Giriniz : ');
toplam=0; %Toplamada Etkisiz Eleman
for i=1:n
toplam=toplam+i;
%fprintf('Toplam = %d \n',toplam);
end
fprintf('Toplam = %d \n',toplam); %Gauss Teoremi???

Programlama jargonunda bir döngünün tekrarlanan her bir adımı


iterasyon olarak adlandırılır.
for i=5:1
Yandaki for döngüsü kaç
kere işletilir?

end

Başlangıç değeri bitiş değerinden büyük fakat


artım miktarı pozitif bir for döngüsü işletilmez.

for i=1:-1:5 Yandaki for döngüsü kaç


kere işletilir?

end
Başlangıç değeri bitiş değerinden küçük fakat
artım miktarı negatif bir for döngüsü işletilmez.
while DÖNGÜSÜ
 Tekrarın bir koşula bağlı olarak işletilmesini sağlayan bir yapı

while koşul
işlem_1
işlem_2
koşul denilen şey sonucu BİR veya
SIFIR olan bir eşitlik testi, karşılaştırma
işlem_n işlemi veya mantıksal bir test olabilir.
end
UYGULAMA
Ekrana adınızı ve soyadınızı 10 kez yazan bir
MATLAB programını while döngüsü kullanarak
oluşturunuz.

i=1; %sayac % for Döngüsü ile çözüm


while i<=10 for i=1:10
disp(‘Ad Soyad'); disp(Ad Soyad');
i=i+1; end
end
UYGULAMA
1 sayısı ile klavyeden girilen herhangi bir sayı
arasındaki ardışık sayıların çarpımını while döngüsü
kullanarak hesaplayan ve ekrana basan bir düzyazı
MATLAB programı yazınız.
Bu satır
n=input('Lutfen Bir Sayi Giriniz : '); çözümden
çıkarılırsa ne
carpim=1; %Carpmada Etkisiz Eleman olur?
i=1;
while i<=n
Komut penceresi kontrolünü
carpim=carpim*i;
kaybettiğinizde (mesela programınız
sonsuz bir döngünün içerisine girdiyse)
i=i+1; CTRL+C tuş kombinasyonunu
%fprintf('Carpim = kullanabilirsiniz.
%d \n',carpim);
end
fprintf('Carpim = %d \n',carpim); %Faktoriyel ??????
UYGULAMA
Aşağıdaki while döngüsü kaç kere işletilir?

devamEt=1;
i=0; %sayac
Yandaki programı ekrana 10
while devamEt kere “Merhaba Dünya” yazacak
disp(‘Merhaba Dünya'); şekilde nasıl
i=i+1; modifiye edersiniz???
end
UYGULAMA
Ocak ayının 1. gününde doğan bir bebek tek numaralı ayların sonunda ağırlığının
%7’sini kaybederken, çift numaralı ayların sonunda ağırlığının %9’u kadar kilo
alıyor. Bu bebeğin kaç ay sonra doğum ağırlığının %10’undan fazla bir ağırlığa
ulaşacağını hesaplayan ve fprintf komutuyla ekrana basan bir MATLAB
programını yazınız.
kilo=100; %Bebeğin başlangıç ağırlığı
ay=1;
while kilo<=110
if mod(ay,2)==1
kilo=kilo*0.93; %kilo=kilo-kilo*0.07;
else
kilo=kilo*1.09; %kilo=kilo+kilo*0.09;
end
ay=ay+1;
end
fprintf('Çözümü Sağlayan Ay: %d\n',ay);
UYGULAMALAR
Uygulama 5.1
Dünyaya geldiğiniz gün 0 (sıfır) başlangıç değeri ile çalışmaya başlayan ve mevcut
değerini her saniye 1 arttıran bir sayaca sahip olduğunuzu hayal ediniz. Böyle bir
sayıcının, ekranında gördüğünüz değere ulaşmak için kaç gün, kaç saat, kaç dakika ve
kaç saniye süreyle sayma işlemi gerçekleştirdiğini hesaplayacak bir MATLAB programını
SaniyeSayacininKarsiliginiHesapla.m adındaki düzyazı m-dosyasının içerisine yazınız
ve programı çalıştırınız. Programınız input komutu ile kullanıcıdan klavye yoluyla söz
konusu sayıcı değerini almalıdır ve hesapladığı gün, saat, dakika ve saniye değerini
fprintf komutuyla ekrana basmalıdır.

Örnek Komut Penceresi Çıktısı


Uygulama 5.2
input komutu ile kullanıcıdan klavye yoluyla aldığı bir alt limit ile bir üst limit arasındaki tek
sayıların ortalamasını while döngüsü kullanarak hesaplayan ve fprintf komutuyla ekrana
basan bir MATLAB programını TekSayilarinOrtalamasiniHeapla.m adındaki düzyazı m-
dosyasının içerisine yazınız ve programı çalıştırınız.

Örnek Komut Penceresi Çıktısı


Uygulama 5.3
𝒙𝟐 + 𝟏, 𝒙 ≥ 𝟒 Örnek Komut Penceresi Çıktısı
f(x) = 𝟒 − 𝒙𝟐 , 𝟎 < 𝒙 < 𝟒
𝟑𝒙 , 𝒙≤𝟎

şeklinde tanımlanmış parçalı bir fonksiyonun


− 𝟖 ≤ 𝒙 ≤ 𝟗 aralığındaki ardışık 𝒙 tam sayıları
için alacağı değerleri hesaplayan ve aşağıdaki
formatta ekrana basan bir MATLAB programını
ParcaliFonksiyonuDegerlendir.m adındaki
düzyazı m-dosyasının içerisine yazınız ve
programı çalıştırınız.
x f(x)
---------------
1 3
2 0
Uygulama 5.4
Bir çiftlikteki tavşanların sayısı 1042 iken kuşların sayısı 2272’dir. Bir yılda tavşanlar %
3.8, kuşlar ise % 1.2 oranında çoğalmaktadır. Tavşanların sayısının kuşların sayısını kaç
yıl sonra geçeceğini hesaplayan ve fprintf komutuyla ekrana basan bir MATLAB
programını TavsanlarVeKuslar.m adındaki düzyazı m-dosyasının içerisine yazınız ve
programı çalıştırınız.

Örnek Komut Penceresi Çıktısı


Uygulama 5.5
𝟏𝟏𝟑 + 𝟏𝟐𝟑 + 𝟏𝟑𝟑 + 𝟏𝟒𝟑 + ⋯ + 𝑵𝟑 = 𝟏𝟐𝟒𝟖𝟕𝟕𝟔𝟎𝟎

Yukarıda verilen denklemi sağlayan N sayısını while döngüsü kullanarak bulan ve fprintf
komutuyla ekra ve fprintf komutuyla ekrana basan bir MATLAB programını
GizemliKuplerToplami.m adındaki düzyazı m-dosyasının içerisine yazınız ve programı
çalıştırınız.

Örnek Komut Penceresi Çıktısı

You might also like