• Sonuç bulunamadı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

N/A
N/A
Protected

Academic year: 2022

Share "BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar"

Copied!
31
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

BLM-112 PROGRAMLAMA DİLLERİ II Ders-1 Kapsama Kuralları &

Rasgele Sayı Üretimi &

Rekürsif (Özyinelemeli) Fonksiyonlar

Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr

http://web.karabuk.edu.tr/umitatilla/

(2)

Saklama Sınıfları

• Nesne kendi bloğu içinde oluşturulur ve yok edilir

auto: yerel değişkenler için ön tanımlıdır

auto double x, y;

register: değişkeni yüksek hızlı kaydedicilere yerleştirmeye çalışır

register int counter= 1;

(3)

Saklama Sınıfları

Statik Saklama

• Değişken tüm programın çalışması sürecinde var olur.

• Ön tanımlı değeri sıfırdır.

static: fonksiyonlar içinde tanımlanan yerel değişkenlerdir.

Fonksiyon sonlandıktan sonra değişken değeri saklanır

Sadece tanımlandıkları fonksiyonda geçerlidirler

(4)

Saklama Sınıfları

Dosya kapsama alanı

• Bir fonksiyon dışında tanımlanan bir tanımlayıcı dosya kapsama alanına sahiptir.

• Böyle bir tanımlayıcı tanımlandıkları noktadan itibaren dosya sonuna kadar tüm fonksiyonlar içinde geçerlidir

• Global değişkenler, fonksiyon tanımlamaları hep dosya kapsama alanına sahiptir.

(5)

Saklama Sınıfları

Blok Alanı

• Blok içinde tanımlanan tanımlayıcılar

• Blok alanı tanımlandığı noktadan başlar sağ kırlangıç paranteze kadar devam eder.

• Değişkenler, yerel değişkenler ve fonksiyonlar için kullanılır.

• Dış bloklar eğer iç blokta aynı isimle değişken varsa iç bloktan gizlenirler.

(6)

Saklama Sınıfları

(7)

Saklama Sınıfları

(8)

Rasgele Sayı Üretimi

rand fonksiyonu

<stdlib.h> kütüphanesi yüklenmelidir

0 ile RAND_MAX (en düşük 32767- maks değeri 16 bit tamsayı)

RAND_MAX <stdlib.h> içinde tanımlanmış sembolik sabittir.

0 ve RAND_MAX arasındaki her sayı seçilmek için eşit olasılığa sahiptir.

Rand ile üretilecek rasgele sayı aralığı uygulama ihtiyacına göre değişir.

(9)

Rasgele Sayı Üretimi

• Yazı tura programı sadece yazı için 1 tura için 0’a ihtiyaç duyar.

• Zar kullanan bir program 1 ile 6 arasında rasgele sayı üretmelidir.

ölçekleme

Rand tarafından üretilen değerler daima 0 ile RAND_MAX arasındadır.

0 ≤ rand ( ) ≤ RAND_MAX

0 ile 5 arasında sayı üretmek için rand fonksiyonu ile

% kalan operatorü kullanılır. Buna ölçekleme denir.

rand( ) % 6

(10)

Rasgele Sayı Üretimi

• 6 sayısı ölçekleme faktörüdür.

• Aralığı kaydırmak için sonuca 1 eklenir.

randNumber = 1 + rand ( ) % 6

1 ≤ randNumber ≤ 6 aralığında sayılar üretir.

• Genel kural:

n = a + rand ( ) % b ;

a kaydırma değeridir.

b ölçekleme faktörüdür

(11)

Rasgele Sayı Üretimi

(12)

Rasgele Sayı Üretimi

Örnek Program: 6000 kere zar atma

1’den 6’ya kadar tamsayılar yaklaşık olarak 1000 defa seçilmelidir.

(13)

Rasgele Sayı Üretimi

(14)

Rasgele Sayı Üretimi

(15)

Rasgele Sayı Üretimi

Rand fonksiyonu gerçekte sahte rasgelelik üretir.

rand fonksiyonunu defalarca çağırmak rasgleymiş gibi görünen bir sayı dizisi oluşturur.

Ancak, bu sayı dizisi her program çalıştırıldığında kendi kendini tekrarlar.

Her program çalışmasında farklı dizilimde gerçek rasgele sayılar üretebilmek için srand fonksiyonu kullanılır.

srand argüman olarak bir tamsayı alır.

srand rand fonksiyonunun programın her çalışmasında farklı dizilimde sayılar üretilmesini sağlar.

(16)

Rasgele Sayı Üretimi

(17)

Rasgele Sayı Üretimi

(18)

Rasgele Sayı Üretimi

• Her seferinde seed değeri girmeden rasgele sayı üretmek için

srand ( time (NULL));

• Sistem saati otomatik olarak seed değeri elde etmek için kullanılır.

time fonksiyonu 1970 Ocak ayı gece yarısından itibaren kaç saniye geçtiğini döndürür.

time fonksiyonu için <time.h> kütüphanesi kullanılır.

(19)

Şans Oyunu: Craps

• Kurallar:

• İki zar atılır

• Zarların toplamı hesaplanır

• İlk atışta 7 veya 11 gelirse oyuncu kazanır

• İlk atışta 2, 3 veya 12 gelirse oyuncu kaybeder

• İlk atışta 4,5,6,8,9,10 gelirse bu oyuncunun puanı oluyor.

• Oyuncu 7 atmadan önce kendi puanını tutturmalıdır.

(20)

Özyineleme (Rekürsif)

Özyinelemeli fonksiyonlar

Kendi kendini çağıran fonksiyonlar

Eğer fonksiyon temel durum ile çağırılırsa bir sonuç döndürür.

Eğer fonksiyon daha karışık bir problem ile çağırılırsa

fonksiyon fonksiyon problemi iki kavramsal parçaya böler;

Birincisi: fonksiyonun işi nasıl yapacağını bildiği kısım

İkincisi: fonksiyonun işi nasıl yapacağını bilmediği kısım

İkinci kısım orijinal probleme benzemelidir.

Fonksiyonun bilmediği kısmı çözebilmek için kendisinin bir kopyasını çalıştırır

Sonunda temel durum çözülür

(21)

Özyineleme (Rekürsif)

(22)

Özyineleme (Rekürsif)

(23)

Özyineleme (Rekürsif)

Faktöriyel probleminin rekürsif tanımlaması aşağıdaki tanımlamayla yapılır.

n! = n. (n-1)!

Örneğin: faktöriyel

5! = 5. 4. 3. 2. 1

Dikkat edin

5! = 5. 4!

4! = 4. 3!...

Faktöriyel hesabı rekürsif olarak hesaplanabilir.

Temel durumu çöz ( 1! = 0! =1) daha sonra

2! = 2. 1! = 2*1 = 2

3! = 3. 2! = 3*2 = 6

(24)

Özyineleme (Rekürsif)

(25)

Özyinelemeli Faktöriyel Hesabı

(26)

Özyinelemeli Faktöriyel Hesabı

(27)

Özyinelemeli Fibonacci Sayıları

• Fibonacci serisi: 0, 1, 1, 2, 3, 5, 8...

• Her bir sayı kendinden önceki iki sayının toplamıdır

• Temel durum:

• Fib(0) = 0

• Fib(1) = 1

• Rekürsif olarak çözülebilir :

• Fib (n) = Fib(n-1) + Fib(n-2)

(28)

Özyinelemeli Fibonacci Sayıları

(29)

Özyinelemeli Fibonacci Sayıları

• n. Fibonacci sayısını bulma

(30)

Özyinelemeli Fibonacci Sayıları

(31)

Kaynaklar

Paul J. Deitel, “C How to Program”, Harvey Deitel.

Kaan Aslan, “A’dan Z’ye C Klavuzu 8. Basım”,

Pusula Yayıncılık, 2002.

Referanslar

Benzer Belgeler

Çok değişkenli sürekli dağılımları ikinci sınıfta İST201 ve üçüncü sınıfta İST301

Bu kasabada bir günde toplam 2 kaza olması

Alışagelmiş olarak, kesikli bir rasgele değişkenin aldığı değerler ile bu değerleri alması olasılıkları aşağıdaki gibi bir olasılık

Hız-zaman grafiğinde belli bir zaman aralığında alınan yol miktarı bir alana karşılık geldiği gibi, olasılık yoğunluk fonksiyonunda da bir aralığın

Bu yöntemlerin çoğu belli bir sayıdan başlayıp belli bir dönüşüm kurulana göre ardışık olarak sayı üretilerek rasgele bir dizi elde edilmesi şeklindedir.. Sayı

Aynı şartlar altında bağımsız Bernoulli

Korelasyon katsayısı iki değişken arasındaki doğrusal ilişkinin derecesini belirleyen ve karşılaştırmaya olanak veren

Bu bölümde SPKS ve PWKS kaotik sistemleri, Euler, Heun, RK4 ve RK5-Butcher algoritmaları kullanılarak SED, AED ve KNS tabanlı yapılar ile tasarımı yapılan 24 farklı GRSÜ