İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ



Benzer belgeler
İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

ATATÜRK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BIM 205 GÖRSEL PROGRAMLAMA GÜZ DÖNEMİ ÖDEV-1

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

ATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ BAHAR DÖNEMİ ÖDEV-3

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

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.

Java da İstemci Tarafı Uygulamalar

Ders - 7 while döngüsü

Dizi ( Array ) ve Dizgi ( String )

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Programlama Dillerinde Kullanılan Veri Tipleri

Java Programlamada Paket Yapısı Ve Import

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Klavyeden Basit Giriş/Çıkış İşlemleri

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

BİL-141 Bilgisayar Programlama I (Java)

// hataları işaret eden referans

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

D İ Z İ L E R A R R A Y S

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Sunum İçeriği. Programlamaya Giriş

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

HSancak Nesne Tabanlı Programlama I Ders Notları

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

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.

BİL-142 Bilgisayar Programlama II

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

7. HAFTA. Erişim Belirleyiciler

BİL1001 Bilgisayar Bilimlerine Giriş 1

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Üst Düzey Programlama

BİL-141 Bilgisayar Programlama I (Java)

Karşılaştırma İşlemleri ve Koşullu İfadeler

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Nesne Yönelimli Programlama

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

PROGRAMLAMAYA GİRİŞ DERSİ II. ÖDEVİ

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

HSancak Nesne Tabanlı Programlama I Ders Notları

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 18: Formatlı Grafik Kullanıcı Arayüzü Oluşturma

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

JAVADA DİZİ İŞLEMLERİ

Lambda İfadeleri (Lambda Expressions)

Java da İşleçler, Ders #3 (4 Kasım 2009)

YMT219 VERİ YAPILARI ÖDEV-1

C# Çalışma Örnekleri

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

Java da Program Denetimi ve Operatörler

/*int sayi1, sayi2,toplam=0;

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

JAVA PROGRAMLAMAYA GİRİŞ

HSancak Nesne Tabanlı Programlama I Ders Notları

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

EMT2226 Nesne Yönelimli Programlamaya Giriş


Java String İşlemleri

NESNEYE YÖNELİK PROGRAMLAMA

BAĞLAÇLI LİSTELER LINKED LISTS

APPLET KAVRAMI ve GRAFİKSEL ÇİZİM UYGULAMLARI

İÇİNDEKİLER VII İÇİNDEKİLER

BİL132 Bilgisayar Programlama II

İç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

BIL101 07/11/2012 Lab5 Programlama Sorulari

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;

Algoritma ve Programlama: Karar Yapıları ve Döngüler

BAĞLAÇLI LİSTELER LINKED LISTS

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Balon & Banka Teslim tarihi: 17 Kasım 2008

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Transkript:

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 1 hafta ÖDEV NO: 4 1 Kısaca LIFE diye de anılan LIFE GAME İngiliz matematikçi John Horton Conway tarafından 1970 yılında hücresel simülasyon amaçlı olarak tasarlanmış bir hücresel otomattır. (Cellular Automata, Cellular Spaces) Game oyuncusuz bir oyundur. Bunun anlamı temel bir başlangıç durumundan başlayarak, gelişimin iterasyonlar boyunca devam etmesidir. Yani hücrelerin hayatta kalma ve ölüm kurallarına göre dizayn edimiş bir simülasyon aracı olarak tasarlanmıştır. Bu simülasyonda hücrelerin YAŞAM ve ÖLÜM olmak üzere iki durumu söz konusudur. Bu oyunda amaç belli bir başlangıç durumu referans alınarak, belli bir bölge içerisinde, zaman içerisinde hücrelerin hayat ve ölüm durumlarını test edip sonuçları görmektir. LIFE GAME KURALLARI: LIFE GAME nin evreni, her birinin sadece CANLI, ÖLÜ olmak üzere 2 olası duruma sahip olduğu 2 boyutlu karelerden oluşur. Her bir kare bir hücreyi temsil eder. Her hücre yatayda dikeyde ve çaprazda olmak üzere 8 bitişik komşu hücre ile etkileşim içindedir. Her zaman iterasyonunda aşağıdaki kurallara göre bir sonraki durum belli olur: 1 2 canlı hücre hücreden az komşusu olan herhangi bir hücre ölür. 2 2 veya 3 canlı hücre komşusu olan herhangi bir hücre bir sonraki nesilde yaşar. 3 3 den fazla canlı hücre komşusu olan herhangi bir hücre bir sonraki nesilde ölür. 4 3 canlı hücre komşusu olan her hangi bir ölü hücre bir sonraki nesilde yeniden üretilir ve yaşamaya başlar. LIFE GAME evreninin başlangıç deseni sistemin çekirdeğini oluşturur. İlk nesil yukarıdaki kuralları uygulayarak aynı anda çekirdekteki tüm hücrelere aynı anda yaratılır. Ölüm ve yaşam aynı anda meydan gelir. Her bir değişim döngüsüne bir iterasyon denir. Simülasyon yukarıdaki kurallar dahilinde devam eder. BAŞLANGIÇ DESENİ: TAVSİYE EDİLEN JAVA SINIFLARI: Uygulamada 2 adet sınıf olması tavsiye edilir. Sınıflardan birisi ugulamanın görselliğini sağlayan Java Applet tarafını oluşturur. Diğer sınıf ise LIFE GAME in kurallarının yazılacağı sınıftır. Şekil 1: Pulsar deseni Şekil 2: LIFE GAME uygulaması tavsiye edilen java sınıf görünümleri

1. class: public class LifeGameRules: Life Game 18 x 18 lik bir habitat üzerinde simüle edilecektir. Simülasyon başlamadan b önce habitatt şekil 1 de verilen pulsar deseni ile başlayacaktır. Her iterasyon için bir yedek 18 x 18 lik habitat üzerinde yukarıda belirtilen kurallar dahilinde değişiklikler yapılmalı ve sonuç sağlandığında iterasyon sonucuu tekrar anaa habitata aktarılmalıdır. Aktarılan bu yeni habitat değeri applet uygulamasındaa ekranda simüle edilecektir. 2. class: public class AppletLifeGame extends Applet implements Runnable: Bir önceki Applet uygulamasında ekrana çizilen bilginin tekrar tekrar tazelenmesine ihtiyaç duyulmamıştı. Bu Applet uygulamasındaa ise diğerinden farklı olarak her iterasyondan sonra sonucu belli zaman aralıklarıyla tekrar tekrar ekrana basılması, yani devamlı olarak çizimin ç yenilenmesi (repaint) ihtiyacı ortaya çıkmıştır. Bu nedenle java.lang ın altındaki Runable sınıfı Applet uygulamasına eklenmiştir. Bu uygulamaa içinde Thread konusunu barındırır. Threadlar hakkında detaylı bilgi edininiz. Aşağıda size uygulamanızda kullanacağınız 1 er saniye aralıklaa tekrar çizimm yaptırmakk için kurulmuş java kodları ve kod yazılacak boşluklar bırakılmıştır. Uygulamadaa yapılması gereken tek şey 1 er saniye aralıkla tekrar paint() fonksiyonu repaint() ile çağrılarak çalıştırılacağını bilmek ve ona göre kodları yazmak kalacaktır. Kod kısmında ise: Draw.Rect( ) fonksiyonu ile yan yana ve alt alta 188 x 18 lik yan yana kare çizdirmek, Karelerin içlerini başlangıç desenindeki duruma göre ölü ve canlı nesilleri ekrana basmak (ölü hücre: içi boş kare, canlı hücre içi doldurulmuş (fillrect(x, y, width, height)) İçi doldurulmuş yani canlı bir karenin, ölü konumuna geçtiğinde celearrect(..) fonksiyonu ile içi silinmelidir. 1. class tan alınan 18 x 18 lik habitat değeri dizisinin canlı, ölü durumlarına göre burada dolu boş kareler (Şekil 3) oluşturulmalıdır. Şekil 3: Tek bir karenin yanıpp söndürüldüğü Java Applet uygulama çıktısı

ÖRNEK JAVA APPLET UYGULAMA KODLARI: package LifeGame; import java.applet.*; import java.awt.*; import java.util.*; public class AppletLifeGame extends Applet implements Runnable{ Thread t1,t;// Runable altındaki thread tanımı yapıldı final int enboy=10; //karenin en boyu aynı olacağı için globalde tanımlandı final int karesutunsayisi=10; final int karesatirsayisi=10; boolean a; @Override public void start(){ // thread Applet uygulamasının start yordamında nesne t=new Thread(this); // ile birbirine bağlanır ve thread başlatılır t.start(); //runable nin run yordamında her 1 saniyede repaint yapılması sağlanılır public void run() { t1=thread.currentthread(); while (t1==t){ repaint(); try{ t1.sleep(1000); catch(interruptedexception e){ //Applet uygulamasının init yordamı applete giriste 1 kere calısır ve initial işlemleri yapılır public void init(){ a=false; // her repaint işleminde paint yordamı tekrar çalışacaktır. public void paint(graphics g){ for (int y=0;y<karesatirsayisi;y++){ for(int x=0;x<karesutunsayisi;x++){ g.drawrect(10*x, 10*y, enboy, enboy); if (a){ g.fillrect(10, 10, enboy, enboy); a=false; else{ g.clearrect(11, 11, enboy 1, enboy 1); a=true;

2 Java.util.LinkedList; sınıfı Java tasarımcıları tarafından geliştirilmiş ve JAVA ya eklenmiş bir Bağlı Liste sınıfıdır. Bu sınıf içerisinde hazır olarak verilmiş add( ), addfirst( ), addlast( ) gibi fonksiyonlar ile tanımlanan ve bir bağlı liste nesnesine ekleme çıkarma ve listeleme gibi bir çok işlem yapılabilir. Bu ön bilgilere dayanarak bir satranç oyununda karşılıklı olarak 2 oyuncunun yaptıkları hamleleri iki ayrı bağlı listede tutmak istenmektedir. Kullanıcılar A ve B oyuncusu olarak isimlendirilmelidir. Yapılan hamleleri tutacak iki bağlı liste LinkedList sınıfından yararlanarak tanımlanacaktır. Hamleler aşağıda gösterilen hamle formatı şeklinde saklanacak ve main yordamında da yine aynı formatla girdi alınması sağlanacak, bu formatın dışında girilen her girdi değeri bağlı listelere eklenmeyecek ve girdi yapan kişi mesajla girdinin yanlış olduğu konusunda uyarılarak yeni girdi istenecektir. Hamle Formatı: Hamle Satır Sütun: <taş_ismi_kısaltması><hamle_sutun><hamle_satır> şeklinde oluşturulacaktır. Örnek: AH5, SF3,. Taş İsmi Kısaltmaları: Kale: K, At: A, Fil: F, Şah: S, Vezir: V, Piyon: P Satır: 1, 2, 3, 4, 5, 6, 7, 8 Sütun: A, B, C, D, E, F, G, H SINIF BİLGİLERİ: HAMLE FORMATI SINIFI: Bu sınıfta hamle formatında tutulması gereken veriler tanımlanmalı ve LinkedList sınıfına bağlanmalıdır. class HamleFormati{ ANA SINIF: Bu sınıfta LinkedList sınıfları ile iki kullanıcıya özel sınıflar taımlanmalı ve LinkedList sınıfının hazır fonksiyonları* kullanılarak aşağıda tavsiye edilen metodlar yazılmalıdır: hamleeklea(hamleformati hamle) { hamleekleb(hamleformati hamle) { hamlelistelea() {. hamlelisteleb() {. sonhamleyigeriala(){ sonhamleyigerialb(){ sonhamlelerigerialab(){ karsiliklihamlelisteleab(){ Boolean hamleformatiuygunmu(string hamlegirdi){ MAİN METODU: Bu metod içerisinde A ve B oyuncuları içi sırayla karşılıklı hamle girdileri istenecektir. Girdi olarak alınan String ifadeler pars** edilerek her bir karakterin Hamle formatına uygun yapılıp yapılmadığının kontrolü yapan hamleformatiuygunmu() fonksiyonundan uygun değer dönerse hamleyi A veya B oyuncusunun listesine eklemelidir. Uygun değilse girdiyi tekrar istemelidir. Bu işlemler konsol ortamında olmalı ve aşağıdaki formatla kullanıcı ile etkileşimde bulunmalıdır. Girilen komuta göre işlem yapılması sağlanmalıdır. KONSOL EKRANI FORMATI: 1 Oyuncu A için hamle gir * LinkedList sınıfının hazır fonksiyonları hakkında genel 2 Oyuncu B için hamle gir bilgiler için bilgilendirici linkler Web sitesinde verilecektir. 3 Oyuncu A nın hamlelerini listele ** String ifadeleri char dizisine pars etmek için 4 Oyuncu B nin hamlelerini listele char c = s.charat(0); gibi bir fonksiyon kullanılabilir. 5 Oyuncu A nın son hamlesini geri al 6 Oyuncu B nin son hamlesini geri al *** LinkedList sınıfı ile ilgili örnek oluşturacak bir uygulama 7 Oyuncu A ve B nin tüm hamlelerini listele aşağıda verilmiştir. Komut Giriniz:

LinkedList SINIFI ÖRNEK KOD:*** import java.util.linkedlist; class Col{ int i; String g; byte a; public Col(int i, String g,byte a){ this.a=a; this.g=g; this.i=i; public class LinkList { public static void main(string args[]) { // bir bağlı liste oluştur // eğer tek bir temel tip tutulacaksa bağlı liste nesnesi aşağıdaki gibi tanımlanmalı LinkedList<Integer> llint=new LinkedList<Integer>(); LinkedList<String> llstr=new LinkedList<String>(); LinkedList ll=new LinkedList() //eğer birden fazla tip içeren bir liste isteniyorsa bağlı listeye bir sınıf atanabilir: LinkedList<Col> llc = new LinkedList<Col>(); //atanan sınıftan yeni nesne tanımlanır Col c=new Col(65,"fat",(byte) 3); //String de bir sınıftır. tanımlanan string sınıfı bilgi tutan bağlı listeye eleman ekleme: llstr.add("merhaba"); llstr.add("dünya"); System.out.println("String Bağlı listenin tüm içeriğine erişilir: " + llstr); //İnt. temel bir tiptir. tanımlanan int tip tutan bağlı listeye eleman ekleme llint.add(56); llint.add(3); System.out.println("Integer Bağlı listenin tüm içeriğine erişilir: " + llint); // Sınıf ile bağlı listeye ekleme aşağıdaki gibi yapılır llc.add(c); System.out.println("Con sınıfından c nesnesinin g değişkenine ulaşma: " + llc.get(0).g); System.out.println("Con sınıfından c nesnesinin a değişkenine ulaşma: " + llc.get(0).a); System.out.println("Con sınıfından c nesnesinin i değişkenine ulaşma: " + llc.get(0).i);