Kıyametin Kopacağı Gün (Hanoi Bilmecesi)
|
|
|
- Ayla Gürsel
- 10 yıl önce
- İzleme sayısı:
Transkript
1 Kıyametin Kopacağı Gün (Hanoi Bilmecesi) Timur Karaçay Çok eskiden Hanoi deki bir tapınakta başrahip tapınağın bahçesine üç sütun diktirmiş. Yanyana duran sütünlardan soldakine, ortası delik 64 disk (halka) geçirmiş. Yarıçapları birbirlerinden farklı olan disklerin en büyüğünü en alta, en küçüğünü en üste koymuş. Sonra, başrahip, genç rahipleri bahçede toplayıp onlara demiş ki; -Şu sütünlara ve disklere bakın. Sol sütundaki diskleri, size söyleyeceğim kurallara uyarak sağdaki sütuna geçireceksiniz. Bunu ilk başaran kişi doğrudan cennete gidecektir. Ama aynı anda kıyamet kopacak, dünyanın sonu gelecektir!... Kurallar şunlardır: 1. Her hamle bir sütunda en üstteki diski alıp başka bir sütuna geçirme işlemidir. 2. Her hamlede yalnızca bir disk taşınabilir. 3. Küçük bir disk asla büyük bir diskin altına konamaz. 4. Üç sütunu dilediğiniz gibi kullanabilirsiniz. Rivayet ederler ki, binlerce yıldır tapınaktaki genç rahipler cennete gitmek için gece gündüz demeden başrahibin verdiği işi bitirmeye çabalıyorlar. Yaşlanıp ölenlerin yerine yeni gençler geliyor ve çalışma aksamadan yürüyor. Tapınağın bahçesine gidip canla başla verilen uğraşı görenler diyor ki; 1
2 -Bu işin bitmesi daha milyarlarca yıl alır!... Biz başrahibin dediği gibi, diskler taşınınca kıyametin kopacağına inanmıyoruz ama eğlence olsun diye denemeye kalkıştık. Çok uğraştık, ama işi bitiremedik. Sonunda vazgeçip, bu işin ne kadar zamanda bitebileceğini merak etmeye başladık. Rahiplerin hamleleri çok hızlı yaptığını varsayalım. Bir hamleyi 1 saniyede bitirseler, 64 diski ne kadar zamanda soldaki sütundan sağdaki sütuna taşıyabilirler? İçinizde bu merakımızı kim giderebilir? Yol gösterme: n = 1 durumu: Kaynak sütunda 1 disk vardır. Bir hamlede kaynaktan al, doğrudan hedef sütuna geçir. Bu hamlede yedek sütunu kullanmaya gerek yoktur. n = 2 durumu: İlk hamlede, kaynak sütunda en üstte duran küçük diski yedek sütuna tak. İkinci hamlede kaynak sütundaki büyük diski hedef sütuna tak. Üçüncü hamlede yedek sütundaki diski hedef sütuna tak. 2,3 ve 4 disk için yaptığımız hamleleri aşağıdaki şekillerden görebilirsiniz. 2
3 8 diske kadar gerekli hamle sayısı aşağıdaki tabloda görülmektedir. Disk sayısını artırarak 64 diske çıkınız ve işin ne kadar zamanda biteceğini hesaplayınız. Disk Sayısı Hamle sayısı Hanoi Kuleleri Bilmecesinin Genel Çözümü Bu bilmece 1883 yılında Fransız matematikçi E.Lucas tarafından ortaya atılmıştır. Sonraları matematiğin çetin problemlerinden birisi haline geldi yılında Gardner, problemin n-hiperküp üzerinde bir Hamilton yolu bulma problemine eşdeğer (isomorphic) olduğunu gösterdi. Matematikte en kısa yol problemi diye adlandırılan zor bir probleme örnek oluşturdu. Problemin farklı çözümleri için Hanoimania! web adresine bakılabilir: Burada, özyineli bir algoritma ile bilmeceyi çözen bir bilgisayar programı yazacağız. Her hangi bir hamlede üstünden diskin alınacağı sütuna kaynak sütun, diskin götürüleceği sütuna hedef sütun, geri kalan sütuna da yedek sütun diyelim. Bir hamlede yedek sütun ancak gerekirse yardımcı olarak kullanılacak, gerekmezse kullanılmayacaktır. Öyleyse, her hangi bir hamlede üç 3
4 sütunumuz vardır: kaynak, hedef ve yedek. Farklı hamlelerde sütunların rolleri değişebilir. Disk sayısını n ile gösterelim. Yukarıdaki şekillerde gösterilen hamleler, problemin genel çözümü için bir ipucu veriyor. Disk sayısının 1,2,,n olması durumlarını 1 den n ye doğru artırarak düşünmek yerine n,(n-1), (n-2),,3,2,1 gibi n den 1 e doğru azaltarak çözmeyi düşünelim. Bu düşünce bizi şuna götürür: n disk olması durumunda bulacağımız algoritma bir sütundaki n diski başka bir sütuna (kurallar n-1 disk olması durumunda bulacağımız algoritma bir sütundaki (n-1) diski başka bir sütuna (kurallar n-2 disk olması durumunda bulacağımız algoritma bir sütundaki (n-2) diski başka bir sütuna (kurallar 2 disk olması durumunda bulacağımız algoritma bir sütundaki 2 diski başka bir sütuna (kurallar 1 disk olması durumunda bulacağımız algoritma bir sütundaki 1 diski başka bir sütuna (kurallar Bu algoritmaların hepsi birbirine benziyor. Öyleyse bu adımların hepsini içeren tek bir algoritma ile problemi çözebiliriz. Bu düşünce, bizi özyineli (recursive) bir algoritma yaratmaya götürür. Taşıma işini yapacak özyineli bu algoritma için yalancı kodları (pseudo codes) kolayca yazabiliriz. 1. n = 1 ise 1.1. Kaynaktaki tek diski doğrudan hedefe taşı 2. n > 1 ise 2.1. Kaynaktan (n-1) diski yedek sütuna taşı 2.2. Kaynakta geri kalan tek diski hedefe taşı 2.3. Yedekteki (n-1) diski hedefe taşı 3. Dur (iş bitti) Dikkat ederseniz 2.1-inci adımı ile 2.3-üncü adımının işlevleri aynıdır; yalnızca sütunların rolleri değişmiştir. 2.3-üncü adım, algoritmanın kendi kendisini iş bitene kadar çağırması demektir. Algoritmanın özyineli (recursive) olmasının nedeni budur. Şimdi yukarıdaki özyineli algoritmayı biraz daha açık yazalım: hanoi(n, kaynak, yedek, hedef) if n is 0 exit else hanoi (n - 1, kaynak, hedef, yedek) taşı(kaynak, hedef); //Hamlenin nereden nereye olduğunu yazar hanoi (n - 1, yedek, kaynak, hedef) 4
5 // Sütunlar : a kaynak, b yedek, c hedef static void hanoi(int disksayısı, int a, int b, int c) { if (disksayısı > 0) { hanoi(disksayısı-1, a, c, b); taşı(a, c); hanoi(disksayısı-1, b, a, c); Hanoi() metodu bilmeceyi çözer. Bilmecenin nasıl çözüldüğünü görmek istersek, her hamlede diskin nereden alınıp nereye taşındığını yazan bir metot ekleyebiliriz. Bu metoda taşın() diyelim: static void taşın(int nerden, int nereye) { System.out.print("Nereden nereye : "); System.out.print(nerden); System.out.print(" --> "); System.out.print(nereye); System.out.println(" Hamle : " + ++sayaç); Gerekli metotlarımızı hazırladığımıza göre, artık onları bir java uygulama programı haline getirebiliriz: class HanoiKuleleri { static int disksayısı = 4; static int sayaç; public static void main(string args[]) { hanoi(disksayısı, 1, 2, 3); System.exit(0); // Sütunlar : a kaynak, b yedek, c hedef static void hanoi(int disksayısı, int a, int b, int c) { if (disksayısı > 0) { hanoi(disksayısı - 1,a, c, b); taşın(a, c); hanoi(disksayısı - 1, b, a, c); 5
6 static void taşın(int nerden, int nereye) { System.out.print("Nerden nereye : "); System.out.print(nerden); System.out.print(" --> "); System.out.print(nereye); System.out.println(" Hamle : " + ++sayaç); /* Çıktı: Nereden nereye : 1 --> 2 Hamle : 1 Nereden nereye : 1 --> 3 Hamle : 2 Nereden nereye : 2 --> 3 Hamle : 3 Nereden nereye : 1 --> 2 Hamle : 4 Nereden nereye : 3 --> 1 Hamle : 5 Nereden nereye : 3 --> 2 Hamle : 6 Nereden nereye : 1 --> 2 Hamle : 7 Nereden nereye : 1 --> 3 Hamle : 8 Nereden nereye : 2 --> 3 Hamle : 9 Nereden nereye : 2 --> 1 Hamle : 10 Nereden nereye : 3 --> 1 Hamle : 11 Nereden nereye : 2 --> 3 Hamle : 12 Nereden nereye : 1 --> 2 Hamle : 13 Nereden nereye : 1 --> 3 Hamle : 14 Nereden nereye : 2 --> 3 Hamle : 15 */ Algoritmanın etkinliği Bilmecenin ne kadar zamanda çözülebileceğini hesaplamak için, yukarıda yazdığımız algoritmanın etkinliğini bulmalıyız. Bunun için, algoritmadaki hamle (bir diski bir sütundan başkasına taşıma işlemi) sayısını hesaplamalıyız. Kaç hamle yapıldığını hesaplayalım. hanoi() metodu iki kez kendisini çağırmaktadır. İki çağrı arasındada bir sabit birim zaman geçtiğini varsayalım. Buna göre, n tane diskin taşınması için geçen zaman T(n) ise T(0) = 0 T(n) = 2*T(n-1) +1, n>0 olur. Buradan recursive olarak T(n) = 2*T(n-1) +1 = 2 * [2 * T(n-2) + 1] +1 = 2 2 * T(n-2) +3 = 2 2 * T(n-2) + (2 2-1) = 2 2 * [2 * T(n-3) +1] + (2 2-1) = 2 3 * T(n-3) +7 = 2 3 * T(n-3) + (2 3-1) = 2 3 * [2 * T(n-4) +1] + (2 3-1) = 2 4 * T(n-4) +15 = 2 4 * T(n-4) + (2 4-1) = = 2 k * T(n-k) + (2 k -1) = 6
7 = 2 n * T(0) + (2 n -1) = 2 n -1 çıkar 1. Ohalde, bu algoritma O(2 n ) grubuna aittir. Bu sonuç, algoritmanın zaman karmaşasının (time complexity) çok yüksek olduğunu gösterir. Şimdi, en başta sorduğumuz soruya yanıt verebiliriz. Rahipler başladıkları işi ne zaman bitirecekler? Rahipler olağanüstü bir hızla çalışıyor olsunlar. Bir hamleyi (bir diski bir sütundan başka bir sütuna taşıma işlemini) 1 saniyede yaptıklarını varsayalım. Bu durumda 64 diskin yerine ulaşması için gerekli hamle sayısı T8n) = dir. Her hamle 1 saniyede oluyorsa, işin bitmesi için saniye gerekir. Bunu 60*6**24*365 sayısına bölersek, işin kaç yılda biteceğini buluruz. Bu sayı yaklaşık olarak yıl; yani milenyum (bin yıl) olur. 1 T(n) = 2 n -1 eşitliği tümevarım yöntemiyle de ispatlanabilir. 7
Merge Sort Bireşen Sıralama
Merge Sort Bireşen Sıralama Merge sort (bireşen sıralama), diziyi ardışık olarak en küçük alt dizilerine kadar yarılayan sonra da onları sıraya koyarak bireştiren özyineli bir algoritmadır. Yarılama işlemi
DÖNGÜLER BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA DENEY-4 FÖYÜ GİRİŞ LABORATUARI.
DÖNGÜLER Amaçlar: 1. ÇEVRİM OLUŞTURMA (DÖNGÜ) 2. WHILE DEYİMİ 3. DO... WHILE DEYİMİ 4. FOR DEYİMİ Örnek 4-1 Programı yazın ve çalıştırın. Örnek 4-2 Programı yazın ve çalıştırın. Örnek 4-3 Aşağıdaki kodu
Merge (Bireşim) Algoritmayı önce bir örnek üzerinde açıklayalım.
Merge (Bireşim) Her biri kendi içinde artan yönde sıralanmış ve aynı veri tipinden olan a ve b dizileri (array) verilsin. Bu iki diziyi birleştirip sıralı bir dizi yapmak istiyoruz. Tabii, birisini ötekinin
Insertion Sort. (Sokuşturma Sıralaması)
Insertion Sort (Sokuşturma Sıralaması) Bu sıralama Bubble Sort algoritmasının iyileştirilmiş biçimidir. Zaman karmaşası (time complexity) O(n 2 ) dir. Bu algoritmayı açıklayan basit bir örnek verebiliriz.
/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/
Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void
BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI
BİR BOYUTLU DİZİLER Amaçlar: 1. 1 BOYUTLU DİZİLERİ TANIMLAMAK 2. 1 BOYUTLU DİZİ UYGULAMALARI YAPMAK Örnek 5-1 Aşağıdaki program öğrenci notlarını bularak en iyi notu hesaplar. Harf notu şu şekilde hesaplanır:
Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:
Programın Akışının Denetimi Bir program komutların yazıldığı sırada akar. Ama çoğunlukla, bu akışı yönlendirmek gerekir. Bu iş için denetim yapılarını kullanırız. Bunlar iki gruba ayrılabilir: Yönlendiriciler
DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN
DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN GİRİŞ Ekrana «Merhaba Java» şeklinde bir mesajı 100 defa yazmak istediğinizi düşünelim. Aşağıdaki komut satırını 100 kez yazmak sıkıcı
GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9. UYGULAMA
2012-2013 GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9 UYGULAMA ÖRNEK 1: Kullanıcıdan anapara miktarını istedikten sonra 0025, 0050, 0075 ve 0100 dönem faizi değerlerini kullanarak gelecek 10 dönem
Örnek 1: Programı yazın ve çalıştırın.
1 0 Örnek 1: Programı yazın ve çalıştırın import javautilscanner; public class MatrisFaiz1 public static void main(string[] args) Scanner klavye=new Scanner(Systemin); double [][] faiztablo = new double
JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ
JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü [email protected] Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101
GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 6. UYGULAMA
2012-2013 GÜZ DÖNEMİ AKT5 BİLGİSAYAR PROGRAMLAMA DERSİ 6. UYGULAMA ÖRNEK 1: En ve boy uzunluklarını kullanıcıdan isteyen ve yıldızlardan oluşan içi dolu dikdörtgen hazırlayan, ekranda aşağıdaki çıktıyı
BIL101 07/11/2012 Lab5 Programlama Sorulari
BIL101 07/11/2012 Lab5 Programlama Sorulari 1- Bir kişinin banka hesabı üstünden yapacağı para çekme ve yatırma işlemleri sonucu banka hesap bakiyesini hesaplayacak bir program yazınız. Programiniz asagidaki
Ders - 7 while döngüsü
Ders - 7 while döngüsü import java.util.scanner; public class StringKiyaslama { public static void main(string[] args) { Scanner klavye=new Scanner(System.in); Oncelikle Lab icin bir aciklama System.out.println("1.
Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama
Bölüm 39 Binary Search (Yarılama) 39.1 Dizide Bir Öğe Arama İkil aramayı (yarılama yöntemi) sıralı veri kümelerinde sık sık kullanırız. Örneğin, sözlükte bir sözcüğü ararken, sözlüğün bütün sayfalarını
Soru 1: Fahrenheit cinsinden verilen sıcaklığı Kelvin'e çeviren bir program yazınız. Aşağıdaki dönüşüm formülünü kullanabilirsiniz:
Soru 1: Fahrenheit cinsinden verilen sıcaklığı Kelvin'e çeviren bir program yazınız. Aşağıdaki dönüşüm formülünü kullanabilirsiniz: Soru 2: Girilen n adet sayının harmonik ortalamasını bulan bir program
YMT219 VERİ YAPILARI ÖDEV-1
YMT219 VERİ YAPILARI ÖDEV-1 1. İkiliBul yordamı aşağıda verilmiştir. İkiliBul yordamı A dizisi içerisinde 2 tane eşit sayı bulursa true bulamazsa false döndürmektedir. public boolean ikilibul(int[] A){
1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.
1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result
while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO
while(), do-while(), for() Döngü (loop) : Bir koşul sağlandığı (true olduğu) sürece bir veya birden çok komutun tekrarlanması işlemidir. Java Döngüler (loops) While() do-while() for ( ) while ( koşul )
BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN
BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer
Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.
Stack Sınıfı (yığıt) java.util Class Stack java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector java.util.stack Stack (yığıt) sınıfı nesnelerin LIFO (last-input-first-output)
Özyineleme (Recursion)
Özyineleme tanımlamaları Özyineleme çağırma Tail özyineleme Nontail özyineleme Dolaylı (Indirect) özyineleme İçiçe (Nested) özyineleme Yrd.Doç.Dr. M. Ali Akcayol Kendi kendisini doğrudan veya dolaylı olarak
Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )
Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts
Java String İşlemleri
Java String İşlemleri Karakterler (Characters) "char" kelimesi bir karakter tanımlamak için kullanılır. Karakter tek tırnak içine alınmalıdır. Bir char'ın aralığı 0 ile 65536 arasındadır. Char türü işaretsiz
Bir oteliniz var. Otelinizin sonsuz say da odas var. Her odan n
Sonsuz Odal Otel 1 Bir oteliniz var Otelinizin sonsuz say da odas var Her odan n bir numaras var: 1, 2, 3, 4, 5, 6, Böylece sonsuza kadar gidiyor En sonuncu oda yok Sonsuz numaral oda da yok Her odan n
1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)
Çok Boyutlu Diziler gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-101/cok-boyutlu-diziler Kategori : Mobil Lisans : Creative Commons (by-nc-sa) En son 28.04.2016 tarihinde güncellendi Yazar
BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 7 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Java Programlama Dili ve Algoritmadan Kodlamaya Geçiş) Yrd. Doç. Dr. İbrahim Küçükkoç
ÖZYİNELEME RECURSION. Yrd. Doç. Dr. Aybars UĞUR
ÖZYİNELEME RECURSION Yrd. Doç. Dr. Aybars UĞUR Giriş Kendini doğrudan veya dolaylı olarak çağıran fonksiyonlara özyineli (recursive) fonksiyonlar adı verilir. Özyineleme (recursion), iterasyonun (döngüler,
BİL-141 Bilgisayar Programlama I (Java)
1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,
BİL-141 Bilgisayar Programlama I (Java)
1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,
Quick Sort Algoritması (Hızlı Sıralama Algoritması)
Quick Sort Algoritması (Hızlı Sıralama Algoritması) Quick Sort (Hızlı Sıralama) algoritması C.A.R.Hoare tarafından bulunan etkin bir sıralama yöntemidir. Siyaset biliminde çok kullanılan böl ve yönet stratejisine
// hataları işaret eden referans
System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin
Java ile Nesneye Yönelik Programlama (Object Oriented Programming)
Java ile Nesneye Yönelik Programlama (Object Oriented Programming) Giriş Yrd. Doç. Dr. Aybars UĞUR Örnek 1 Bir Yolcu sınıfı, yolcu1 nesnesi oluşturulması ve kullanılması class Yolcu String ad; String soyad;
MAT213 Bilgisayar Programlama I
if Komutu Bir mantıksal (boolean) ifadenin sonucuna göre bazı komutların çalıştırılıp, bazı komutların da çalıştırılmamasını sağlar. Komut(lar) (Doğru) Doğru Yanlış Boolean Komut(lar) (Yanlış) if (boolean
JAVA PROGRAMLAMAYA GİRİŞ
LAB I JAVA PROGRAMLAMAYA GİRİŞ Java Kurulumu Java dili ile programlama yapabilmek için java jdk ve java kodlama yapılabilecek uygun bir geliştirme ortamı kurulmalıdır. Eclips IDE yaygın olarak kullanılan
public static int Toplam int x, int y
static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.
Java da İşleçler, Ders #3 (4 Kasım 2009)
Java da İşleçler, Kontrol Akış ve Döngü Deyimleri BS-515 Nesneye Yönelik Programlama Ders #3 (4 Kasım 2009) İçerikç Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu
Programlama Dilleri 1. Ders 3: Rastgele sayı üretimi ve uygulamaları
Ders 3: Rastgele sayı üretimi ve uygulamaları Ders 3 Genel Bakış Giriş Rastgele Sayı Rastgele Sayı Üreteci rand Fonksiyonunun İşlevi srand Fonksiyonunun İşlevi Monte Carlo Yöntemi Uygulama 1: Yazı-Tura
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;
Java 2 Standart Edition SDK Kurulum ve Java ya Giriş
Kurulum için ilk önce Sun Microsystems in sitesinden uygun J2SE sürümünü indirin. Ben J2SE v1. 4. 2_16 Windows Installer paketini kullandım J2SE SDK Kurulumu aşağıdaki gibi başlayacaktır. 1 Kurulum tamamlandıktan
Beyin Cimnastikleri (I) Ali Nesin
Beyin Cimnastikleri (I) Ali Nesin S eks, yemek ve oyun doğal zevklerdendir. Her memeli hayvan hoşlanır bunlardan. İlk ikisi konumuz dışında. Üçüncüsünü konu edeceğiz. 1. İlk oyunumuz şöyle: Aşağıdaki dört
İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama
İçerik Java da İşleçler, Kontrol Akış ve Döngü Deyimleri Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu ders: Java da işleçler ( operators ) Java da kontrol-akış
ÖZYİNELEME RECURSION. Doç. Dr. Aybars UĞUR
ÖZYİNELEME RECURSION Doç. Dr. Aybars UĞUR GİRİŞ Kendini doğrudan veya dolaylı olarak çağıran fonksiyonlara özyineli (recursive) fonksiyonlar adı verilir. Özyineleme (recursion), iterasyonun (döngüler,
5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi
5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını
M.ilkucar MAKU MYO 1
M.ilkucar 2010 - MAKU MYO 1 7- PROGRAM YAPISAL KOMUTLARI Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz? M.ilkucar 2010 - MAKU MYO 2 7-
BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ
Amaçlar: 1- Arayüzler (Interfaces) 2- Soyut Sınıflar ve Metotlar(Abstract classes and methods) Uygulama-1: interface:cihaz ac() kapat() goster(string) class: TV class: LCD class: Projector... Cihaz adındaki
İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu
İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu SORU 1 Dünyanın en uzun beş nehrini öğeleri olarak kabul eden bir yığıt (stack) yaratınız. Yığıtın üçüncü öğesini bulunuz. Yığıtın üstündeki öğeyi bulunuz ve
YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2
YZM 3207- ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2 Özyineli Olmayan (Nonrecursive) Algoritmaların Matematiksel Analizi En büyük elemanı bulma problemi En Büyük Elemanı Bulma Problemi Girdi
Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.
GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.
D İ Z İ L E R A R R A Y S
D İ Z İ L E R A R R A Y S 1 Örneğin 120 adet öğrencinin adını klavyeden girip, daha sonra bunları ekrandan yazdıralım. Bunun için, her öğrenci için ayrı bir değişken tanımlanmalıdır. String ad1; String
Proje de saga tıklayıp new diyoruz. Normal java classı kullanacağız.swing kullanmayacağız.
Arkadaşlar küçük bir ekran yapalım.swing le yapalım. Programlarımızı süsleyebilmek için Proje de saga tıklayıp new diyoruz. Normal java classı kullanacağız.swing kullanmayacağız. KopekEkran diye bir class
Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN
Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı Öğr. Gör. Cansu AYVAZ GÜVEN NESNE TABANLI PROGRAMLAMA Java Değişkenler ve Veri Tipleri Operatörler JAVA Java Java SUN bilgisayar şirketince
Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.
GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.
Bire-bir Sahiplik İlişkisi ile İlgili Sorular:
Bire-bir Sahiplik İlişkisi ile İlgili Sorular: Soru 1: Bir füzenin kilometre cinsinden menzili ve kilogram cinsinden ağırlığı mevcuttur. Bir füze ya kara hedefleri ya da hava hedefler için tasarlanır.
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Sınıf (Class) Yapılarına Giriş
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Sınıf (Class) Yapılarına Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü [email protected] Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=107
NESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem
BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü
BM-209 Nesne Yönelimli Programlama Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü Java Programlama Dili Java bayt kodları Java Sanal Makineleri üzerinde
5. Salih Zeki Matematik Araştırma Projeleri Yarışması PROJENİN ADI DİZİ DİZİ ÜRETEÇ PROJEYİ HAZIRLAYAN ESRA DAĞ ELİF BETÜL ACAR
5. Salih Zeki Matematik Araştırma Projeleri Yarışması PROJENİN ADI DİZİ DİZİ ÜRETEÇ PROJEYİ HAZIRLAYAN ESRA DAĞ ELİF BETÜL ACAR ÖZEL BÜYÜKÇEKMECE ÇINAR KOLEJİ 19 Mayıs Mah. Bülent Ecevit Cad. Tüyap Yokuşu
GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA
-3 GÜZ DÖNEMİ AKT5 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA ÖRNEK : f() ve g() parçalı fonksiyonları aşağıdaki gibi tanımlanmıştır. değerini kullanıcıdan isteyen ve hesaplamalar sonucunda elde edilecek
BİL132 Bilgisayar Programlama II
BİL132 Bilgisayar Programlama II 8. Olağandışı durumlar (exceptions) Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yüksel Tarhan Olağandışı durum Kütük bulunamadı Diskte yer kalmadı Nesne referans
5.1 - BULMACA BULDURMACA
GENEL BAKIŞ Problem çözmede temel kavramları tanımlayarak problem türlerini açıklar. Verilen bir problemi analiz eder Bilgisayar biliminin matematikle ilişkisini kavrar. MATERYALLER 5.1.C1 Kurt Kuzu Ot
Sunum İçeriği. Programlamaya Giriş 22.03.2011
Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon
BMH-303 Nesneye Yönelik Programlama
BMH-303 Nesneye Yönelik Programlama Kurucu metotlar (constructors) ve statik deyimi Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği Kurucu Metotlar (Constructors) Kurucu metot çeşitleri Varsayılan
DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Prof. Dr. Aybars UĞUR
DATA STRUCTURES Lab II Metotlar, Diziler ve Hata Ayıklama İçerik Debugging konusunun kısaca anlatımı. (10 dk.) F11, F10 ve Durma Noktası denemeleri yapılması ve gözlemlerin not edilmesi. (10 dk.) Örnek2
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10 Konular Kural Dışı Durumlar try ve catch Blokları ve throw Komutu Kural Dışı Durum Sınıfı Tanımlama Bir try Bloğuyla Çok Sayıda catch Kullanımı İç İçe try - catch
Mantıksal çıkarım yapmak. 9 ve üzeri
Aktivite 6 Savaş gemileri Arama algoritmaları Özet Bilgisayarların sıklıkla bir yığın verinin içerisinde bilgi bulmaları gerekir. Hızlı ve verimli yöntemler kullanarak bunu becerirler. Bu aktivitede 3
EMT2226 Nesne Yönelimli Programlamaya Giriş
2017-2018 Bahar Yarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü EMT2226 Nesne Yönelimli Programlamaya Giriş 2 Yrd. Doç. Dr. İbrahim Küçükkoç Web: ikucukkoc.baun.edu.tr Email: [email protected]
C# da basit console uygulamaları. C# da basit console uygulamaları
C# da basit console uygulamaları C# da basit console uygulamaları C# da basit console uygulamaları geliştirdiğimiz sayfamızda bulunmaktasınız. Temel seviyeden başlayıp ileri seviye uygulamalar yazacağız.
ALGORİTMA DERSLERİ. Algoritma Nedir? Belirli bir problemi çözmek ve belli bir sonuca ulaşmak için çizilen yola algoritma denir.
ALGORİTMA DERSLERİ Algoritma Nedir? Belirli bir problemi çözmek ve belli bir sonuca ulaşmak için çizilen yola algoritma denir. Bir Algoritma: 1. Başı olmalı 2. Basit olmalı 3. Problemin çözümünü mümkün
Final Sınavı Örnek Soruları Bahar 2018
Sayfa#1 Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 2116 Veri Yapıları Dersi Final Sınavı Örnek Soruları Bahar 2018 Süre: 70 Dakika Adı ve Soyadı YANIT ANAHTARI Öğrenci Numarası Grubu
Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;
BTEP212 Java DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI Lab7 bazen bir metodun içinde o metodun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt
Karabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com WEB TEKNOLOJİLERİ
WEB TEKNOLOJİLERİ VISUAL STUDIO DA YENİ BİR PROJE OLUŞTURMA Visual Studio (VS) programını çalıştırdığımızda karşımıza boş bir ekran gelir. Yeni bir proje oluştururken File>New>Project yolu kullanılarak
Bİ L 131 Hafta 2. 1) Bilgisayara Java SE Development Kit 7 kurulması
Bİ L 131 Hafta 2 1) Bilgisayara Java SE Development Kit 7 kurulması Bunun için internet tarayıcınızı (örneğin Mozilla Firefox, Google Chrome veya Internet Explorer) açınız ve http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
Uluslararası Caribou Matematik Yarışması
Uluslararası Caribou Matematik Yarışması Caribou Matematik öğrencilerin severek matematik yapmalarını ve problem çözmeye yönelik keyifli vakit geçirmelerini amaçlayan, Kanada merkezli bir organizasyondur.
Java da İstemci Tarafı Uygulamalar
Java da İstemci Tarafı Uygulamalar ( Applets ) BBS-515 Nesneye Yönelik Programlama Ders #7 (7 Aralık 2009) İçerikç Geçen ders: Java da dizi ( array ) ve dizgi ( String ) tanımlama Örnekler Bu ders: 1.
C# Çalışma Örnekleri
C# Çalışma Örnekleri namespace sabittanimlama class program static void main (String [] agrs ) const String s="merhaba "; Console.WriteLine(s); Console.readLine ; merhaba namespace calisma class program
Arasınav Örnek Soruları Bahar 2018
Sayfa#1 Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 2116 Veri Yapıları Dersi Arasınav Örnek Soruları Bahar 2018 Süre: 75 Dakika Adı ve Soyadı YANIT ANAHTARI Öğrenci Numarası Grubu İmza
Pokerin Matematiği açık oyun renk
Pokerin Matematiği atrançta bir oyuncunun bilip de öbür oyuncunun bilmediği bilgi yoktur. Bu tür oyunlara açık oyun diyelim. STavlada da bir oyuncunun bildiğini öbür oyuncu bilir. Birinin öbüründen gizlisi
Sevdiğim Birkaç Soru
Sevdiğim Birkaç Soru Matematikte öyle sorular vardır ki, yanıtı bulmak önce çok zor gibi gelebilir, sonradan saatler, günler, aylar, hatta kimi zaman yıllar sonra yanıtın çok basit olduğu anlaşılır. Bir
THE ENGLISH SCHOOL GİRİŞ SINAVI 2012. Süre: 1 saat ve 30 dakika
THE ENGLISH SCHOOL GİRİŞ SINAVI 2012 MATEMATİK BİRİNCİ SINIF Süre: 1 saat ve 30 dakika Tüm soruları cevaplayınız. Tüm işlemlerinizi gösteriniz ve cevaplarınızı soru kâğıdında ılan uygun yerlere yazınız.
Java Class Yapısında Finalize Metotunun Kullanımı
Java'da finalize() Metodu: Java dili kullanılmayan nesneleri silmek için arka planda çalışan bir sisteme sahiptir. Bu yüzden C++ gibi dillerde dinamik nesne tanımlarında mutlaka yer alması gereken nesneyi
Mantıksal (Logic) Operatörler
Mantıksal (Logic) Operatörler Bilgisayar dillerinin hemen hepsinde, program akışını kontrol edebilmek ve yönlendirebilmek için mantıksal operatörler kullanılır. Java dilinde kullanılan mantıksal operatörler
JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN
JAVADA METOTLAR BMÜ-111 Algoritma ve Programlama Yrd. Doç. Dr. İlhan AYDIN 1 Açık problem Amacımız sırasıyla 1 den 10, 10 dan 20 ye ve 35 ten 45 e kadarki sayıların toplamını bulmak olsun. Ne yapmak gerekir?
Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.
PART 5 5. Denetleyici Türleri Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir. Java Erişim Kontrol Denetleyicileri (Access Control Modifiers) Erişim Harici Denetleyiciler
. [ ] vektörünü S deki vektörlerin bir lineer
11.Gram-Schmidt metodu 11.1. Ortonormal baz 11.1.Teorem: { }, V Öklid uzayı için bir ortonormal baz olsun. Bu durumda olmak üzere. 1.Ö.: { }, de bir ortonormal baz olsun. Burada. vektörünü S deki vektörlerin
Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği
Yrd. Doç. Dr. A. Burak İER Bilgisayar Mühendisliği Algoritma Analizi İçerik: Temel Kavramlar Yinelemeli ve Yinelemesiz Algoritma Analizi Asimptotik otasyonlar Temel Kavramlar Algoritma: Bir problemin çözümüne
Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com
Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Barbara Liskov 1 tarafından geliştirilen bu prensip kısaca
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 11: Metot Kavramı
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 11: Metot Kavramı Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü [email protected] Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101
Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA
Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA Muhammet BAYKARA 1 İlkel Veri Türleri Type Name Kind of Value Memory Used Size Range byte integer 1 byte -128 to 127 short integer 2 bytes -32768
Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals. Module 2:Server Side Internet Programming
The European Union s Making the Labour Market more Inclusive III programme For North Cyprus Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module
Genel Programlama II
Genel Programlama II 08.03.2011 1 Çok Boyutlu Diziler Önceki derslerimizde dizileri görmüştük. Kısaca özetleyecek olursak, belirlediğimiz sayıda değişkeni bir sıra içinde tutmamız, diziler sayesinde gerçekleşiyordu.
Karşılaştırma İşlemleri ve Koşullu İfadeler
Karşılaştırma İşlemleri ve Koşullu İfadeler BİL131 - Bilişim Teknolojileri ve Programlama Hakan Ezgi Kızılöz Karşılaştırma İşlemleri Java'da sayısal veri tiplerinin karşılaştırılması için aşağıdaki karşılaştırma
18.034 İleri Diferansiyel Denklemler
MIT AçıkDersSistemi http://ocw.mit.edu 18.034 İleri Diferansiyel Denklemler 2009 Bahar Bu bilgilere atıfta bulunmak veya kullanım koşulları hakkında bilgi için http://ocw.mit.edu/terms web sitesini ziyaret
Data Structures Lab 1 2012-Güz
Data Structures Lab 1 2012-Güz C# Ortamı Tanıtımı ve Uygulama Geliştirilmesi Visual Studio 2010 Ortamının Temini -NYG'ndan MSDN üyeliği için başvuru dilekçesi alınıp doldurulmalı ve yine NYG'ye teslim
BLM-431 YAPAY ZEKA. Ders-3 Durum Uzayında Arama. Yrd. Doç. Dr. Ümit ATİLA
BLM-431 YAPAY ZEKA Ders-3 Durum Uzayında Arama Yrd. Doç. Dr. Ümit ATİLA [email protected] http://web.karabuk.edu.tr/umitatilla/ Dersin Hedefleri Durum uzayı temsilini öğrenmek ve durum uzayında
Ders 8 Konu Özeti ve Problemler
Ders 8 Konu Özeti ve Problemler C# ve Nesne Yönelimli Programlamanın 3 Prensibi Kapsülleme (Encapsulation) Nesne yönelimli programlamanın ilk prensibi kapsülleme (encapsulation) olarak adlandırılır. Bu
Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.
Class PriorityQueue java.util Class PriorityQueue java.lang.object java.util.abstractcollection java.util.abstractqueue java.util.priorityqueue Parametre tipleri: E - the type of elements held
