1 / 103

Ses Kontrol

Ses Kontrol. Metodlar ile ilgili son birkaç söz. Tekrar : Programlama için başlıca 3 model. Java Metodları. Java ‘da hem fonksiyonlar hem de prosedürler için metod adı altında tek bir yapı mevcuttur:

ismail
Download Presentation

Ses Kontrol

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ses Kontrol

  2. Metodlar ile ilgili son birkaç söz

  3. Tekrar: Programlama için başlıca 3 model

  4. Java Metodları • Java ‘da hem fonksiyonlar hem de prosedürler için metod adı altında tek bir yapı mevcuttur: • prosedürolarak kullanıldığında metod isminin hemen önüne geri dönüş değeri olarak “void” ifadesi yazılır. • public voidprintHelloWorld( ) • { • System.out.println(“Hello World!”); • } // of printHelloWorld • Not: Bütün metodlarda parametre almasa dahi çift parantez kullanmak zorunludur! Hızlı Tekrar

  5. Java Metodları • fonksiyonolarak kullanıldığında metod isminin hemen önüne gerekli olan geri dönüş değerinin türü yazılır. • public float average (float fNum1, float fNum2, float fNum3) • { • float fReturnVal; • fReturnVal = • (fNum1 + fNum2 + fNum3)/ 3; • return (fReturnVal); • } // of average Hızlı Tekrar

  6. Metodların İmzaları • “Metodun imzası, metodun adı, ve aldığı parametre sayısı ve türlerinden oluşur. Herhangi bir sınıf aynı imzaya sahip iki metod tanımlayamaz, tanımlasa bile derleme zamanı hatası oluşur.” • Metod overloadingadını verdiğimiz olay, aynı isme sahip metodların farklı imzalara sahip olmasıyla oluşur. • public int getCube(int iNum){ • return iNum*iNum*iNum; • } • public int getCube(float fNum){ • return (int)(fNum*fNum*fNum); • } • public int getCube(double dNum){ • return (int) (dNum*dNum*dNum); • } Hızlı Tekrar

  7. Parametreler • Unlike Pseudocode, Java only has “in” parameters. • Thus no need to declare in, in/out or out ‘cause they’re all IN • Parametreler de tıpkı değişkenler gibi tanımlanır: public void demo(int i, float x) • Nesneleri tartışırken parametreler hakkında daha çok şey öğreneceğiz.

  8. Metodlar nerede durur? Methodlar, sınıflara ait üyeler gibi sınıfların içinde tutulurlar. Sınıf ve nesne oluşturmayı öğrenirken daha ayrıntılı göreceğiz ancak aşağıda kısaca bir örnek verelim: Hızlı Tekrar class zippy { int pin; public String yow() { // some code } }

  9. Sorular?

  10. Yineleme (İterasyon)

  11. Java Temelleri: İterasyon YapıIarı • Aslında temelde, tüm iterasyon türlerinde kullanılan tek bir iterasyon yapısı mevcuttur. Geçen dönem dikkat ettiyseniz üç çeşit döngüden bahsetmiştik: SentinalLoops Test-Last Loop N-and-a-half Loops

  12. Java Temelleri: İterasyon Yapıları • Biraz önce de söylediğimiz gibi temelde, tüm iterasyon türlerinde kullanılan tek bir iterasyon yapısı mevcuttur. • Ancak, bu temelde böyledir. Java ‘da diğer birçok programlama dilinde olduğu gibi herşeye uyan esnek tek bir yapı mevcut değildir. • Bunun yerine, Java herbiri belirli bir amaca uygun olmak üzere 3 çeşit döngü yapısı sunar. • Tek bir döngü yapısına alışıp onu heryerde kullanmaya çalışmayın. • Bu yapıları akıllıca kullanabilmek için bu yapıların sadece nasıl çalıştığını değil en iyi nerede kullanılabileceklerini de bilmeniz gerekir...

  13. Java İterasyon Yapıları: “WhileDöngüleri” • Herhangi bir işi tekrar ederken insanlar doğal olarak aşağıdaki yöntemi tercih eder: • değeri elde et, daha sonra bu değeri işle • While döngüsü ise doğal olmayan yöntemi tercih eder: • Döngüye girmeden önce döngünün kontrol değişkeninin değerini elde et; • sonra, döngüye gir, • ilk önce işlemleri yap, • daha sonra diğer adımlara geç

  14. Doğal olmayan? while(Benim sokağıma gelmediğin sürece) { Düz yürümeyi sürdür } Sağa dön

  15. Java İterasyon Yapıları: “While Döngüleri” Pseudocode: <İlk değeri elde et> döngü döngüden çık eğerki sağlamıyorsa (şart) <değeri işle> <diğer değeri al> döngü sonu Java örneği: <ilk değeri elde et> while (şart) { <değer işle> <diğer değeri al> } Gözcü:Sentinal

  16. Java İterasyon Yapıları: “Do While Döngüleri” Java örneği: do { deyim 1; ... deyim N; } while (şart); Pseudocode: döngü deyim 1 ... deyim N döngüden çık eğerki sağlamıyorsa (şart) döngü sonu Sonra Test Et:Test Last

  17. Java İterasyon Yapıları: “For Döngüleri” Java sentaksı: for (< baslangiç durumuna getir >; <devam et eğer şart sağlıyorsa>;<artış miktarı>) • Pseudocode: • Num türünden i diye bir • değişken tanımla • i ‘ye 0 değerini ata • döngü • eğer (i >=10) ise çık • değilse • <işlemler> • i ‘nin içeriğini 1 artır • döngü sonu Java örneği: int i; for (i=0; i<10; i++) { <işlemler> }

  18. i = 0; while (i < 10) { System.out.println(i); i++; } for(i = 0; i < 10; i++) { System.out.println(i); } Aşağıda fordöngüsü ile whiledöngüsü aynı işi yapmaktadır. Bu örnek, size for yapısını daha iyi anlamanıza yardımcı olacaktır.

  19. Java İterasyon Yapıları: “For Döngüleri” For döngüleri ile ilgili genel hatalar: for (i=0; i<N; i++); { … } --Yukarıdaki hatada for döngü yapısı dikkate alınmadan liste işaretleri arasında kalan işlemler sadece 1 kez yapılır. ; işaretinden dolayı tekrarlama söz konusu değildir. for (int i=0; i<N; i++){…} -- yukarıda değişken tanımlaması döngü imza yapısının içinde tanımlanmış... --değişkene bu döngü imza yapısının dışında ihtiyaç olabilir, bu yüzden bu tür tanımlamalardan kaçının.

  20. Çokça Yapılan Bir Hata public class Forex { static int i = 42; public static void main(String args[]) { for(int i=0; i < 5; i++) { System.out.println(i); } System.out.println(i); } }

  21. Çıktı 0 1 2 3 4 42

  22. Sor: Bu kontrol değeri sadece döngü sayısını mı ifade ediyor? Bu değer, döngü yapısının hesaplaması gereken bir şey mi? Yoksa bu değer herhangi bir yerde mevcut ta döngü onu oradan elde mi ediyor? Java İterasyon Yapıları: Hangisini Ne Zaman ? --“kontrol değişkeni” olarak ifade edilen değişkeninin değeri, döngünün devam mı edeceği yoksa sonlanacağına mı karar vermek amacıyla kontrol edilir. --Örneğin, aşağıdaki thisVar değişkeni: while (thisVar < = SOME_CONSTANT) --Hangi durumda hangi döngü yapısını kullanacağınıza karar vermek için öncelikle şu soruyu kendinize sorun: “kontrol değişkeninin değeri nereden gelmektedir?”

  23. Java İterasyon Yapıları: Hangisini Ne Zaman ? fordöngüsü: kontrol değişkeni sadece döngü sayısını ifade ettiği zamanlarda kullanılır. örnek: “100 adet sayı girişi alıp, işleyecek bir döngü oluşturun.” whiledöngüsü: bu değer herhangi bir yerde mevcut ve döngü onu bir yerlerden elde ettiği durumlarda kullanılır. örnek: “klavyeden 100 değeri girilene kadar devamlı olarak sayı girişi alan ve bunları işleyen bir döngü oluşturun” do-whiledöngüsü: bu değerin döngünün bizzat kendisi tarafından hesaplanması gereken durumlarda kullanılır. örnek: “klavyeden, girilen sayıların toplamı 100 oluncaya kadar giriş alan döngü oluşturun”

  24. Java İterasyon Yapıları:Tekrar Hangi yapıyı kullanırdınız eğer ki... Bir dizi işlemi N kez gerçekleştirmek için... Ne kadar uzunlukta olduğunu bilmediğiniz bir liste üzerinde dolaşıyorsanız ve aradığınız değeri bulunca duracaksanız... Bir dizi işlemi en az bir kere olmak üzere, en çok ne kadar çalıştırılacağını ise henüz bilmiyorsanız (hesaplanacak)...

  25. İterasyon (Tekrar) • Üç çeşit iterasyon vardır: • for (...;...;...) {...} döngüleri • Sabit sayıda yineleme yapılır • while (...) {...} döngüleri • Döngü kontrol değeri daha önceden hesaplanmış • do {...} while (...) döngüleri • Döngü kontrol değeri döngü içerisinde hesaplanmaktadır

  26. Sorular?

  27. Temel veri türlerinden Diziler • Anafikir: Daha önce öğrendiklerinize benzer Yazılımda bazı farklılıklar vardır • Java ‘da dizi bildirimi: <VeriTürü>[ ] <DiziAdı> = new <VeriTürü>[<boyut>]; örnek: 10 adet tamsayı türündeki notu tutmak için tamsayı türünden 10 elemanlı bir dizi oluşturalım: int[ ] notDizisi = new int[10]; • Dizi bildirim hatası: köşeli parantez yerine normal parantez kullanmak: int[ ] iGradeArray = new int(10);

  28. Detaylar • Sentaks biraz garip gelebilir çünkü diziler de birer nesnedir. • Nesneleri anlatmaya başlayınca detaylı olarak inceleyeceğiz... int[ ] iGradeArray = new int[10]; int iGradeArray[ ] = new int[10];

  29. Diziler int[ ] iNotDizisi = new int[10]; int i; /*dizi işlemlerinde indis yani kontrol değişkeni olarak i,j,k gibi geleneksel olarak herkes tarafından kullanılan ve tanınan değiken isimleri kullanın. */ for (i=0; i < iNotDizisi.length; i++) { iNotDizisi[i] = 0; } // for döngüsü • Örnek: • 10 adet tamsayı türündeki notu tutmak için tamsayı türünden iNotDizisi adında 10 elemanlı bir dizi oluşturalım • dizinin bütün değerlerine 0 değerini atayalım Güzel düşünce! Dizinin boyutunu değiştirdiğinizde, sadece for imza yapısının içini değiştirmeniz yeterli. • Not: • Diziler kendi uzunluklarını bilirler • lengthbir özelliktir, metod değil • Dizi uzunlukları sabittir, bildirim yapıldıktan sonra bir daha değiştirilemez. • Bütün diziler nesnedir, bu nedenle bir referans değişkeni bişldirimi yapmalı, nesneyi oluşturmalı ve ilk değerini atamalısınız(declare a reference, instantiate, initialize)

  30. Notlar: • Dizi indisi her zaman 0 ‘dan başlar 1 ‘den değil • Öyleyse, length yani dizi uzunluk değeri indisin maksimum alacağı değerden sayısal olarak 1 fazladır • Bu nedenle, eğer aşağıdaki gibi yaparsanız hata yaparsınız: Diziler int[ ] iGradeArray = new int[10]; int i; for (i=1; i <= iGradeArray.length; i++) { iGradeArray[i] = 0; } // for loop • Yukarıdaki program kodundadizinin 1 ’den 10 ’a kadar olan elemanlarına erişilmeye çalışılıyor • Ancak dizinin indis numaraları 0..9 aralığındadır • Öyleyse: dizini ilk elemanı olan 0 indis olanı kaçırıyor ve dizinin 10 indis numaralı elemanına erişmeye çalışıyorki ne böyle bir indis mevcut ne de diziye ait böyle bir alan.

  31. Sorular?

  32. Örnek Quiz Sorusu Tamsayı türünden bir dizinin elemanları arasında en yüksek değere sahip olanın indis numarasını geri döndüren programı yazınız.Aşağıdaki kodu kullanın: public intenBuyugunIndisiniDondur(int[ ] iDizi){ /* Kodunuzu buraya yazın*/ }

  33. Örnek Quiz Sorusu public intenBuyugunIndisiniDondur(int[ ] iDizi){ int enBuyuk = -9999; int i; for (i = 0; i < iDizi.length;i++) { if (enBuyuk < iDizi[sayac]) enBuyuk = iDizi[i]; } return enBuyuk; }// enBuyugunIndisiniDondur metodunun sonu Çalışır mı?

  34. Örnek Quiz Sorusu public intenBuyugunIndisiniDondur(int[ ] iDizi){ int enBuyuk = -9999; int i; for (i = 0; i < iDizi.length;i++) { if (enBuyuk < iDizi[sayac]) enBuyuk = iDizi[i]; } return enBuyuk; }// enBuyugunIndisiniDondur metodunun sonu Eğer dizinin bütün değerleri -9999 ‘dan küçükse ne olacak?

  35. Örnek Quiz Sorusu public intenBuyugunIndisiniDondur(int[ ] iDizi){ int enBuyuk = iArray[0]; int i; for (i = 0; i < iDizi.length;i++) { if (enBuyuk < iDizi[sayac]) enBuyuk = iDizi[i]; } return enBuyuk; }// enBuyugunIndisiniDondur metodunun sonu Peki bu nasıl?

  36. Örnek Quiz Sorusu public intenBuyugunIndisiniDondur(int[ ] iDizi){ int enBuyuk = iArray[0]; int i; for (i = 1; i < iDizi.length;i++) { if (enBuyuk < iDizi[sayac]) enBuyuk = iDizi[i]; } return enBuyuk; }// enBuyugunIndisiniDondur metodunun sonu i sayaç değerini neden daha önceleri olduğu gibi 0 ‘dan değil de 1 ‘den başlattık?

  37. Örnek Quiz Sorusu public intenBuyugunIndisiniDondur(int[ ] iDizi){ int enBuyuk = iArray[0]; int i; for (i = 1; i < iDizi.length;i++) { if (enBuyuk < iDizi[sayac]) enBuyuk = iDizi[i]; } return enBuyuk; }// enBuyugunIndisiniDondur metodunun sonu Bu haliyle mükemmel!???

  38. Örnek Quiz Sorusu Tamsayı türünden bir dizinin elemanları arasında en yükse değere sahip olanın indis numarasını geri döndüren programı yazınız.. Dikkat! public intenBuyugunIndisiniDondur(int[ ] iDizi){ int enBuyuk = iArray[0]; int i; for (i = 1; i < iDizi.length;i++) { if (enBuyuk < iDizi[sayac]) enBuyuk = iDizi[i]; } return enBuyuk; }// enBuyugunIndisiniDondur metodunun sonu

  39. Örnek Quiz Sorusu Öyleyse çözüm nedir? Bu, kendi kendinize çözebileceğiniz güzel bir problem. Biz en büyük değeri değil, en büyk değerin indisini öğrenmek istiyoruz.

  40. Aldığımız dersler Soruyu iyi oku. Alışkanlıklara kapılma (örneğin bütün döngüler 0 ‘dan başlamalı gibi...). Varsayımlar yapma (örneğin, -9999 iyi bir değer değildir). Kodunuzu iyi inceleyin; basit >, < hatalarınızın olup olmadığını araştırın.

  41. Sorular?

  42. Gideceğimiz yol Bugün Özyineleme(Recursion) Sınıflar ve Nesneler Yapıcılar Nesnelere Referanslar Referanslar Parametreler

  43. Soru Burada kaç kişi özyinelemeyi sevmiyor? Neden? Söz veriyorum: Bu dersin sonunda diyeceksiniz ki: “Özyineleme dünyamı değiştirdi”

  44. Özyineleme (Recursion) Diyelim ki 2 tavşanı bir kafese koydunuz. Ne olacak? Bir aile

  45. İki ay sonra... ilk rabbits yeni tavşanlar Eğer tavşanlar 2 ayda olgunlaşıyorlarsa, 2 ay içinde elinizde üreyebilecek 1 çift ile üremeye müsait olmayan başka bir çift tavşan olacaktır.

  46. Bu böylece devam eder 0 aylık 1 aylık Gelecek ay, yeni bir çift elde edersiniz . . .

  47. Farzedelim ki Tavşanlar hep iki adet yavru meydana getiriyorlar ve bunların biri erkek diğeri de dişi Tavşanlar hep 2 ay sonunda olgunlağa ulaşıyorlar Hiçbir tavşan ölmüyor Bir sene sonunda kaç tavşanımız olur? 1 2 3

  48. Yaban tavşanının çoğalma hikayesi Anahtar = bir e/dçift 1. Ay sonunda 2. Ay sonunda 3. Ay sonunda 4. Ay sonunda 5. Ay sonunda Başlangıç

  49. Ay Üretken Üretken olmayan Toplam 1 0 1 1 2 1 0 1 3 1 1 2 4 2 1 3 5 3 2 5 6 5 3 8 7 8 5 13 8 13 8 21 9 21 13 34 10 34 21 55 11 55 34 89 12 89 55 144 Tavşan çiftleri Modeli görebildiniz mi?

  50. Başka bir örnek verelim • Tavşanlar yerine geometriyi kullanalım. • Kenar uzunluğu 1 olan bir adet kare çizin. • 90 derece çevirerek bu kareye aynısından 1 tane daha ekleyin. • Tekrar 90 derece döndürerek bu sefer 2 uzunluğunda bir kare ekleyin. • Tekrar, döndürün ve bu sefer 3 uzunluğunda bir kare ekleyin ve böyle artarak devam edin. • Oluşan seri: • 1, 1, 2, 3, 5, 8, 13, 21, . . . , • Ne görüyorsunuz?

More Related