BPR152 ALGORİTMA VE PROGRAMLAMA - II

Slides:



Advertisements
Benzer bir sunumlar
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Advertisements

BPR151 ALGORİTMA VE PROGRAMLAMA - I
Fonksiyonlar.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Programlama-II (Java ile Bilgisayar Programlama)
OOP UYGULAMA 5.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
BPR152 ALGORİTMA VE PROGRAMLAMA - II
String Kütüphanesindeki Arama Fonksiyonları
BPR151 ALGORİTMA VE PROGRAMLAMA - I
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 10 Yapılar ve Birleşimler
Özyinelemeli(Recursive) Algoritma Tasarımı
Karar ifadeleri ve Döngüler
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
BPR152 ALGORİTMA VE PROGRAMLAMA - II
BPR152 ALGORİTMA VE PROGRAMLAMA - II
NESNEYE YÖNELİK PROGRAMLAMA
BPR151 ALGORİTMA VE PROGRAMLAMA - I
DİZİLER.
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
Fonksiyonlar.
METODLAR.
C# Metot Overloading (Aşırı yükleme)
BPR152 ALGORİTMA VE PROGRAMLAMA - II
İSİM UZAYLARI (NAMESPACE)
NESNEYE DAYALI PROGRAMLAMA
.Net teknolojisi ve C# Yasin Gedik Dokuz Eylül Üniversitesi (4. Sınıf) Microsoft Danışman Öğrenci
Chapter 7: Using Methods. Metotları ve Kodlamayı Gizlemeyi Anlama Metot – Kapsüllenmiş ifadeler serisini gerçekleştiren bir görev – Kullanılan metodun.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
İş Parçacıkları Thread(s)
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
BPR152 ALGORİTMA VE PROGRAMLAMA - II
FONKSİYONLAR.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller Aslı Ergün.
ÇOK BİÇİMLİLİK POLYMORPHISM
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Kalıtım , Sınıf Asli Ergün.
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Ders İçeriği Liste Soyut veri yapısı (ADT)
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Amaçlar Bu derste öğrenilecekler: –Uygulamaları “method”
NESNEYE YÖNELİK PROGRAMLAMA
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bölüm 5 Nesneler ve Metotlar
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
JAVA PROGRAMLAMA ORNEKLER
KOŞUL İFADELERİ.
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
4. Hafta1 4. HAFTA. 4. Hafta2 Fonksiyonlar  Büyük problemler, küçük parçalara bölünerek kolay çözülür  Yazılımlar benzer modüller içerirler  Hata ayıklama.
Fonksiyonlar.
BSM447 – MOBİL UYGULAMA GELİŞTİRME Öğr. Gör. Nevzat TAŞBAŞI 6. Hafta.
Hafta2 Rekürsif Algoritmalar
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
YAPISAL PROGRAMLAMA Hafta-7
Kurucular(Yapıcılar), Yıkıcılar
Nesneye Dayalı Programlama 1
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
Sunum transkripti:

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 Temsilci fonksiyonlar Kendini çağıran fonksiyon Temsilci fonksiyonlar Paralelleştirme işlemleri Threading

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ş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ı 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. static long Faktoriyel(long n) { if (n == 0) return 1; return n * Faktoriyel(n - 1); } Temel Kısım Genel Kısım Yaklaşma

Fibonacci Serisi 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'inci Fibonacci 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 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. static long Fibonacci(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ı 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 static long UsHesapla(long a, long n) { if (n == 0 ) return 1; return a * UsHesapla(a, n - 1); } Temel Kısım Genel Kısım Yaklaşma

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: delegate geriDönüşTipi temsilciAdı([parametreler]); Örnek: delegate int Fonksiyon(int a, string b);

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: delegate double İşlem(double a, double b); Temsilci kullanma: İşlem temsilci = new İşlem(Fonksiyon); - Veya; İşlem temsilci = Fonksiyon;

Temsilci fonksiyon:Tanımlama & Kullanım using System; class Metotlar { // temsilci fonksiyonu tanımlanıyor. delegate double İşlem(double a, double b);   // iki farklı metot tanımlanıyor. static double Topla(double a, double b) { return a + b; } static double Çarp(double a, double b) { return a * b; } static void 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 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 using System; class Temsilciler { delegate void MesajVer(string isim);   static void SelamVer(string isim) { Console.WriteLine("Selam " + isim); } static void HatırSor(string isim) { Console.WriteLine(isim + " nasılsın?"); } static void Main() MesajVer m = SelamVer; m("Ali"); m = HatırSor; Console.WriteLine("*********************"); // iki metodu da ekle m = SelamVer; m += HatırSor; m("Ahmet"); // 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 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. Thread ları kullanmak için programın başına > using System.Threading; satırı eklenmelidir.

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: ThreadStart ts = new ThreadStart(HazırlananMetod); En sonunda yeni bir Thread tanımlanarak oluşturulan ThreadStart parametresi ile aşağıdaki gibi çalıştırılır: Thread t = new Thread(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ı: Thread.Start() using System; using System.Threading; class Program { static void SelamVer() while (true) Console.WriteLine("Selam!"); Thread.Sleep(500); // 500 ms = 0.5 sn uyu }   static void HatırSor() Console.WriteLine("Nasılsın?"); Thread.Sleep(700); // 700 ms = 0.7 sn uyu static void Main() ThreadStart ts1 = new ThreadStart(SelamVer); Thread t1 = new Thread(ts1); t1.Start(); // SelamVer metodu çalışacak ThreadStart ts2 = new ThreadStart(HatırSor); Thread t2 = new Thread(ts2); t2.Start(); // HatırSor metodu ç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… Öğr. Gör. Bayram AKGÜL