bpr152 algor tma ve programlama ii n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
BPR152 ALGORİTMA VE PROGRAMLAMA - II PowerPoint Presentation
Download Presentation
BPR152 ALGORİTMA VE PROGRAMLAMA - II

Loading in 2 Seconds...

play fullscreen
1 / 17

BPR152 ALGORİTMA VE PROGRAMLAMA - II - PowerPoint PPT Presentation


  • 192 Views
  • Uploaded on

BPR152 ALGORİTMA VE PROGRAMLAMA - II. Öğr . Gör. Bayram AKGÜL bayramakgul@bartin.edu.tr http ://myo.bartin.edu.tr/akgul. Konular. Recursive fonksiyonlar Kendini çağıran fonksiyon Temsilci fonksiyonlar Paralelleştirme işlemleri Threading. Kendini Çağıran Fonksiyonlar.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'BPR152 ALGORİTMA VE PROGRAMLAMA - II' - makaio


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
bpr152 algor tma ve programlama ii

BPR152 ALGORİTMA VE PROGRAMLAMA - II

Öğr. Gör. Bayram AKGÜL

bayramakgul@bartin.edu.tr

http://myo.bartin.edu.tr/akgul

konular
Konular
  • Recursive fonksiyonlar
    • Kendini çağıran fonksiyon
  • Temsilci fonksiyonlar
  • Paralelleştirme işlemleri
    • Threading
kendini a ran fonksiyonlar
Kendini Çağıran Fonksiyonlar
  • Recursive Fonksiyon da denir.
  • Bazı durumlarda bir fonksiyon kendini çağırabilir. C bazlı diller böyle bir duruma izin vermektedir.
  • Örnek:
    • Faktöriyel hesaplama
      • n! = n * (n-1)!
    • Fibonacci serisi
      • Fn= Fn-1 + Fn-2
recursive fonksiyonlar n bile enleri
Recursive Fonksiyonların Bileşenleri
  • Recursive fonksiyonların üç bileşeni vardır.
    • Temel Durum
    • Genel Durum
    • Yakınlaşma

Recursive Fonksiyon Bileşenleri

Temel Durum:

Basit ve Recursive olmayan durum

Genel Durum:

Recursive tanımlama

Yakınlaşma:

Temel duruma yaklaşma

rnek recursive fakt riyel hesab
Örnek Recursive: Faktöriyel Hesabı
  • Tanım: n! = n * (n-1) * (n-2) * …. * 1
    • Örnek: 6! = 6 * 5 *4 *3 * 2 * 1
      • Temel Durum: 0! = 1
      • Genel Durum: n! = n * (n-1)!
      • Yakınlaşma: Her adımda n bir azaltılıyor.

staticlongFaktoriyel(long n)

{

if (n ==0) return1;

return n *Faktoriyel(n -1);

}

Temel Kısım

Genel Kısım

Yaklaşma

fibonacci serisi
FibonacciSerisi
  • sayıları: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, … vb. şeklinde devam eder.
  • Her sayı kendisinden önce gelen iki sayının toplamıdır.
  • Bu durumda genel olarak n'inciFibonacci sayısı F(n) şeklinde ifade edilir.
  • Bu sayıların yeterince büyük art arda gelen iki elemanını birbirleriyle oranlandığında altın oran ortaya çıkar.
    • Örnek: F(21)/F(20)
rnek recursive fibonacci serisi
Örnek Recursive: Fibonacci Serisi
  • Tanım: Fn = Fn-1 + Fn-2
    • Dizinin ilk sayı değeri 0, ikincisi 1 ve her ardışık elemanı da önceki iki elemanın değerinin toplamı alınarak bulunur.
    • Örnek: 0,1,1,2,3,5,8, 13,21,34,55,89,…
      • Temel Durum: F(0) = 0; ve F(1) = 1;
      • Genel Durum: F(n) = F(n-1) + F(n-2);
      • Yaklaşma: Her adımda n sayısı 1 ve 2 eksiltiliyor.

staticlongFibonacci(long n)

{

if (n ==0|| n ==1) return n;

return Fibonacci(n -1) + Fibonacci(n -2);

}

Temel Kısım

Genel Kısım

Yaklaşma

Yaklaşma

rnek recursive sl say hesab
Örnek Recursive: Üslü Sayı Hesabı
  • Tanım: an = a * a * … * a
    • Örnek: 35 = 3 * 3 *3 *3 * 3
      • Temel Durum: n = 0 ise sonuç 1 (a0 = 1)
      • Genel Durum: an = a * (an-1)
      • Yakınlaşma: Her adımda n bir azaltılıyor.

n defa

staticlongUsHesapla(longa, long n)

{

if (n ==0 ) return1;

return a *UsHesapla(a, n -1);

}

Temel Kısım

Genel Kısım

Yaklaşma

temsilci fonksiyonlar
Temsilci Fonksiyonlar
  • Temsilciler metot yerine metotları temsil eden fonksiyonlardır.
  • delegate anahtar sözcüğü ile ifade edilirler.
  • Bir temsilci aşağıdaki şekilde yazılır:

delegategeriDönüşTipitemsilciAdı([parametreler]);

Örnek:

delegateintFonksiyon(inta, string b);

temsilci fonksiyonlar n tan mlanmas
Temsilci fonksiyonların Tanımlanması
  • Temsilciler genellikle programlarımıza belirli bir ifadeyle birden fazla metodu çağırabilme yeteneği vermek için kullanılır.
  • Temsilci tanımlama:

delegatedoubleİşlem(double a, double b);

  • Temsilci kullanma:

İşlem temsilci = newİşlem(Fonksiyon);

- Veya;

İşlem temsilci = Fonksiyon;

temsilci fonksiyon tan mlama kullan m
Temsilci fonksiyon:Tanımlama & Kullanım

usingSystem;

classMetotlar

{

// temsilci fonksiyonu tanımlanıyor.

delegatedoubleİşlem(double a, double b);

// iki farklı metot tanımlanıyor.

staticdouble Topla(double a, double b) { return a + b; }

staticdouble Çarp(double a, double b) { return a * b; }

staticvoid Main()

{

İşlem temsilci;

double s1, s2;

// temsilci Topla fonksiyonunun yerine çalışacak.

temsilci = Topla;

s1 = temsilci(3, 5);

// temsilci Çarp fonksiyonunun yerine çalışacak.

temsilci = Çarp;

s2 = temsilci(3, 5);

Console.WriteLine("s1 = {0}, s2={1}", s1, s2);

}

}

s1 = 8, s2=15

temsilci fonksiyonlar ile ilgili notlar
Temsilci fonksiyonlar ile ilgili notlar:
  • Temsilci fonksiyonlar sadece geri dönüş tipleri ve parametreleri (sayı ve tip) kendisiyle uyumlu olan metotları temsil edebilirler.
  • Temsilciler bir defada birden fazla metodu temsil edebilirler. Temsilciye metot eklemek veya çıkarmak için + ve – kullanılır.
temsilciye birden fazla metot ekleme karma
Temsilciye birden fazla metot ekleme & çıkarma

usingSystem;

classTemsilciler

{

delegatevoidMesajVer(string isim);

staticvoidSelamVer(string isim) { Console.WriteLine("Selam " + isim); }

staticvoidHatırSor(string isim) { Console.WriteLine(isim + " nasılsın?"); }

staticvoid Main()

{

MesajVer m = SelamVer;

m("Ali");

m = HatırSor;

m("Ali");

Console.WriteLine("*********************");

// iki metodu da ekle

m = SelamVer;

m += HatırSor;

m("Ahmet");

Console.WriteLine("*********************");

// SelamVer metodunu çıkar

m -= SelamVer;

m("Ayşe");

}

}

Selam Ali

Ali nasılsın?

*********************

Selam Ahmet

Ahmet nasılsın?

*********************

Ayşe nasılsın?

paralelle tirme i lemleri
Paralelleştirme işlemleri
  • Threading olarak ifade edilir.
  • Bir programdaki bir birinden bağımsız kısımların aynı anda ve ayrı ayrı çalıştırılması anlamına gelmektedir.
  • Programdaki herhangi bir iş parçasına Thread denilmektedir.
  • Her Thread kendi başına çalışmaktadır.
  • Threadları kullanmak için programın başına

>usingSystem.Threading;

satırı eklenmelidir.

thread tan mlama
Thread Tanımlama
  • Önce Thread ile beraber hangi metodun çalışacağı hazırlanır.
  • Daha sonra metodun çalışmasını sağlayacak bir ThreadStart parametresi oluşturulur.
  • ThreadStart parametresi aşağıdaki gibi oluşturulur:

ThreadStartts = newThreadStart(HazırlananMetod);

  • En sonunda yeni bir Thread tanımlanarak oluşturulan ThreadStartparametresi ile aşağıdaki gibi çalıştırılır:

Threadt = newThread(ts);

t.Start(); // Hazırlanan metod çalışmaya başlayacaktır.

  • Bu şekilde birçok Thread tanımlanarak aynı anda çalıştırılabilir.
thread metodlar
Threadmetodları:

usingSystem;

usingSystem.Threading;

classProgram

{

staticvoidSelamVer()

{

while (true)

{

Console.WriteLine("Selam!");

Thread.Sleep(500); // 500 ms = 0.5 sn uyu

}

}

staticvoidHatırSor()

{

while (true)

{

Console.WriteLine("Nasılsın?");

Thread.Sleep(700); // 700 ms = 0.7 sn uyu

}

}

staticvoid Main()

{

ThreadStart ts1 = newThreadStart(SelamVer);

Thread t1 = newThread(ts1);

t1.Start(); // SelamVer metodu çalışacak

ThreadStart ts2 = newThreadStart(HatırSor);

Thread t2 = newThread(ts2);

t2.Start(); // HatırSormetodu çalışacak

}

}

Thread.Start()

Thread’in çalışmaya başlamasını sağlar.

Thread.Sleep(milissaniye)

Aktif Thread’i belirtilen süre kadar uyutur.

Thread.Suspend()

Aktif thread’i durdurur.

Thread.Resume()

Suspend ile durdurulmuş Thread’i devam ettirir.

Thread.Abort()

Çlışmakta olan bir Thread’i iptal eder. (durdurur.)

Thread.Join()

Başka bir Thread’in işleminin bitmesini bekler.

dinledi iniz i in te ekk rler
Dinlediğiniz için teşekkürler…

Öğr. Gör. Bayram AKGÜL