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

Benzer belgeler
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.

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. Ö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İ

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

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

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

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

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

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

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Prof. Dr. Aybars UĞUR

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

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Doç. Dr. Aybars UĞUR

YMT219 VERİ YAPILARI ÖDEV-1

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Programlama Dili Prensipleri. Lab Notları 4

MAT213 Bilgisayar Programlama I

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

Java String İşlemleri

Temel Veri Türü İşlemleri

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Lambda İfadeleri (Lambda Expressions)

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

JAVADA DİZİ İŞLEMLERİ

YAPAY SİNİR AĞLARI. Araş. Gör. Nesibe YALÇIN BİLECİK ÜNİVERSİTESİ

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

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

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

3.Hafta. . Kontrol Deyimleri/İfadeler

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

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

Dizi ( Array ) ve Dizgi ( String )

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

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

NESNEYE YÖNELİK PROGRAMLAMA

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

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

4.Hafta. this Anahtar Sözcüğü

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

BİL-141 Bilgisayar Programlama I (Java)

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

ALGORTMA ve PROGRAMLAMA - II (C# Sürümü) DERS NOTLARI

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

BMH-303 Nesneye Yönelik Programlama

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

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

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

// hataları işaret eden referans

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:

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

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

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

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 3

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

ALGORİTMA VE PROGRAMLAMA I

HSancak Nesne Tabanlı Programlama I Ders Notları

Yapay Sinir Ağları. (Artificial Neural Networks) DOÇ. DR. ERSAN KABALCI

AVRASYA UNIVERSITY. Dersin Verildiği Düzey Ön Lisans (X ) Lisans ( ) Yüksek Lisans( ) Doktora( )

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

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

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

KONTROL YAPILARI JAVADA UC TURLU KONTROL YAPISI VARDIR BUNLAR İF ELSE İF ELSE İF SWİTCH YAPILARIDIR. IF ELSE YAPISI if (deger) { }else {

MAT213 Bilgisayar Programlama I Dersi Dönem Sonu Sınavı ( )

Diziler İndisli Değişkenler

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

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

7. HAFTA. Erişim Belirleyiciler

Programlama Dillerinde Kullanılan Veri Tipleri

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Ders - 7 while döngüsü

BİLG Dr. Mustafa T. Babagil 1

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

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

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

Java da Program Denetimi ve Operatörler

Görsel Programlama 1

Java Programlama Örnekleri. Doç. Dr. Aybars UĞUR

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

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

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

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

11- FONKSİYONLAR (FUNCTIONS)

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.

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Transkript:

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ AD SOYAD : TESLİM TARİHİ : OKUL NO : TESLİM SÜRESİ : 1 hafta Ödev No : 5 1. ve 2. sorular sayfa çıktıları üzerinde el ile çözümleme yapılacaktır. Ekran çıktıları hesaplanarak altlardaki boşluklara yazılacaktır. 3. soru araştırma ödevi olup çalışma şeklinin anlatıldığı şekilsel anlatım el yazısı ile, kodlar ise lab da ECLIPSE ortamında teslim edilecektir. Uygulama programları olan 4. ve 5. soruları ise ECLIPSE editöründe kodlanarak laboratuvar dersinde laboratuvar görevlisi asistanlara sunulacaktır. 1- Aşağıda statik metod ve değişkenlerle ilgili verilen kod parçaları çalıştığında oluşacak ekran çıktılarını altlarındaki boşluğa çözümleme yaparak el yazısı ile doldurunuz. Eğer kodlarda Hata varsa alttaki boşluğa ok işareti ile hatalı satırı göstererek doğrusunu yazınız. Eksik satır varsa ok işareti ile hangi aralığa nereye ekleneceğini göstererek alttaki boşluğa eklenmesi gereken satırı ekleyiniz. Hatalar düzeltildikten sonraki ekran çıktısını yazınız. class Languages { class Difference { display(); static void display() { System.out.println("JAVA favori programlama dilim"); t.display(); Difference t = new Difference(); show(); static void display() { System.out.println("Programlama yapmak harika"); void show(){ System.out.println("JAVA harika bir dil"); class StaticBlock { System.out.println("Ana metod devrede"); static { System.out.println("ilk Statik bloklar çalışır"); System.out.println(" kullanıyorsunuz"); static { String os = System.getenv("OS");//DİKKAT!! System.out.print("işletim sistemi olarak " + os); public static int abs(int x) { if (x < 0) return -x; else return x; System.out.println(fr.abs(-5)); fre fr = new fre(); System.out.println(fr.abs((int)-5.4)); public static int abs(int x) { if (x < 0) return -x; else return x; public double abs(double x) { if (x < 0) return -x; else return x; System.out.println(abs(-54)); fre fr = new fre(); System.out.println(abs(-521.412));

public static boolean asalsayimi(int N) { if (N < 2) return false; for (int i = 2; i <= N / i; i++) if (N % i == 0) return false; return true; int N=6; if(asalsayimi(n)) System.out.print(N+" asal bir sayıdır.."); else System.out.print(N+" asal değildir"); public static int max3(int a, int b, int c) { int max = a; if (b > max) max = b; if (c > max) max = c; return max; public static double max3(double a,double b,double c){ double max = a; if (b > max) max = b; if (c > max) max = c; return max; System.out.println(max3(4, 7, 1)); System.out.println(max3(4.0, 6.6, 9.1)); public static String duplicate(string s) { String t = s + s; return t; String s = "Merhaba "; s = duplicate(s); String t = "Bay "; t = duplicate(duplicate(duplicate(t))); System.out.println(s + t); int count = 0; public void increment() { count++; fre obj1 = new fre(); fre obj2 = new fre(); obj1.increment(); obj2.increment(); System.out.println("Obj1in sayısı= " + obj1.count); System.out.println("Obj2nin sayısı= " + obj2.count); int count = 0; public static int increment() { return count++; System.out.println("count= " +increment()); System.out.println("count= " +increment()); static int count = 0; int sayi = 8; public int increment(int sayi) { this.sayi += sayi; return count++; fre obj1 = new fre(); fre obj2 = new fre(); System.out.println("count= " + obj1.increment(4)); System.out.println("sayi= " + obj1.sayi); System.out.println("count= " + obj2.increment(2)); System.out.println("sayi= " + obj2.sayi);

static int num; static String mystr; static { System.out.println("Static Block 1"); num = 68; mystr = "Block1"; static { System.out.println("Static Block 2"); num = 98; mystr = "Block2"; System.out.println("num'ın değeri= " + num); System.out.println("myStr'nin değeri= " + mystr); static int i; static String s; fre obj = new fre(); obj.i++; obj.s = "merhaba "; System.out.println("i: " + obj.i); System.out.println("s: " + obj.s); i++; s += "arkadas"; System.out.println("i: " + i); System.out.println("s: " + s); int i = 5; String s = "JAVA çok harika bir dil"; static void display() { System.out.println("i: " + i); System.out.println("s: " + s); static int count = 0; int sayi = 8; public static int foob(int sayi) { count += sayi; return count++; display(); count++; fre obj1 = new fre(); fre obj2 = new fre(); System.out.println("count= " + foob(4)); System.out.println("sayi= " + obj1.sayi); System.out.println("count= " + foob(2)); System.out.println("sayi= " + obj2.sayi); 2- Aşağıda JAVA da değişken dizileri, nesne dizileri ile ilgili verilen kod parçalarını el yordamı ile çözerek altlarındaki boşluklara alınması gereken ekran çıktılarını alınız. String[][] isimler = { { "Mr. ", "Mrs. ", "Ms. ", { "Smith", "Jones" ; System.out.println(isimler[0][0] + isimler[1][0]); System.out.println(isimler[0][2] + isimler[1][1]); char[] cpyden = { 'd', 'e', 'k', 'a', 'h', 'v', 'e', 'i', 'n', 'a', 't', 'e', 'd' ; char[] cpy = new char[7]; System.arraycopy(cpyden, 2, cpy, 2, 5); System.out.println(new String(cpy));

int[] intdizi = new int[3]; intdizi[0] = 1; intdizi[1] = 2; intdizi[2] = 3; for (int i = 0; i<intdizi.length; i++) { System.out.println(intDizi[i]); int[] intdizi = new int[3]; intdizi[0] = 1; intdizi[1] = 2; intdizi[2] = 3; int i=0; while(i < intdizi.length) { System.out.println(++intDizi[i++]); int[] intdizi = new int[3]; int dizi[]={5, 6, 7, 8; intdizi[0] = 1; intdizi[1] = 2; intdizi[2] = 3; int i=0; dizi=intdizi; while(i < dizi.length) { System.out.println(dizi[i++]); static String[] strdizi; String dizi[]={"java ","çok ","harika ","bir ","dildir"; int i=0; strdizi=dizi; while(i < strdizi.length) { System.out.println(strDizi[i++]); int[] a = { 1, 2, 3 ; int[] b = { 1, 2, 3 ; if(a == b) System.out.println("Eşit"); else System.out.println("Eşit değil"); static String[] strdizi; int[] a = { 1, 2, 3 ; int[] b = { 1, 2, 3 ; int N=a.length; for (int j = 0; j < N; j++) System.out.println(++b[--a[j]]); static int fool(int[] val) { int mi = 0; for (int i = 1; i < val.length; i++) { if (val[i] < val[mi]) { mi = i; return mi; int Z[] = { 5, 2, 6, 1 ; System.out.print(fool(Z)+Z[0]); public int sool(int[] noos, int toot) { for (int i = 0; i < noos.length; i++) { if (noos[i] == toot) return i; return -1; int Z[] = new int[]{ 4, 6, 2, 8, 7, 0 ; JavaArray ja = new JavaArray(); System.out.print(ja.sool(Z, 5));

class Calisan { int id; String isim; public void setdata(int id, String isim) { this.id = id; this.isim = isim; public void displaydata() { System.out.println("Calisan ID : " + this.id); System.out.println("Calisan İsmi : " + this.isim); Calisan[] emp = new Calisan[2]; emp[0]=new Calisan(); emp[1]=new Calisan(); emp[0].setdata(1, "ABC"); emp[1].setdata(2, "XYZ"); emp[0].displaydata(); emp[1].displaydata(); class Calisan { int id; String isim; public Calisan(){ System.out.println("yeni bir çalışan oluşturuldu.."); int N=5; Calisan[] emp = new Calisan[N]; for(int i=0;i<n;i++) emp[i]=new Calisan(); class Calisan { int id; String isim; class Calisan { int id; String isim; public Calisan(int i){ System.out.println(i +". yeni çalışan oluşturuldu"); int N=5; Calisan[] emp = new Calisan[N]; for(int i=0; i<emp.length; i++) emp[i] = new Calisan(i); public Calisan(int id) { this.id = id; System.out.println(id + " id'li çalışan oluşturuldu"); int N = 5; Calisan[] emp = new Calisan[] { new Calisan(5), new Calisan(14), new Calisan(50) ; int suit, rank; String objn; public JavaArray() { this.suit = 0; this.rank = 0; System.out.println("parametresiz yapılandırıcı"); public JavaArray(int suit, int rank) { this.suit = suit; this.rank = rank; System.out.println("2 parametreli yapılandırıcı"); JavaArray ja1[] = new JavaArray[] { new JavaArray(), new JavaArray(1, 3), new JavaArray(), new JavaArray(3, 5) ; public JavaArray(String objn) { this.objn = objn; System.out.println(objN +" isimli nesne üretildi"); String[] suits = { "JAVA", "C#", "Delphi", "C++" ; JavaArray ja1[] = new JavaArray[suits.length]; for (int i=0;i<ja1.length;i++) ja1[i]=new JavaArray(suits[i]);

String objn; String objn; public JavaArray(String objn) { this.objn = objn; String getobjname(javaarray ja) { return ja.objn; void yazdir(string N){ System.out.println(N); String[] ss={"java","c#","delphi","c++"; JavaArray ja1[] = new JavaArray[ss.length]; for (int i = 0; i < ja1.length; i++) { ja1[i] = new JavaArray(suits[i]); ja1[i].yazdir(ja1[i].getobjname(ja1[i])); public JavaArray(String objn) { this.objn = objn; System.out.println(objN +" yazılım platformu"); String[] ss ={"JAVA","C#","Delphi","C++"; JavaArray ja1[] = new JavaArray[ss.length]; JavaArray ja2[] = ja1; for (int i = 0; i < ja2.length; i++) ja2[i] = new JavaArray(ss[i]); 3- ARAŞTIRMA ÖDEVİ: 8 VEZİR PROBLEMİ Bu araştırmada, 8 vezir problemini daha önce verilmiş olan araştırma ödevlerinden Back Tracing algoritması ile çözümü yapılacaktır. İnternet ortamında 8 vezir problemini Back Tracing algoritması ve permutasyon yöntemi ile çözen JAVA kodlarını araştırıp ECLIPSE editöründe kodlayınız. Yazılan kodları dikkatli bir şekilde inceleyiniz. Kodun hangi parçasının ne amaç ile yazıldığını anlayınız. Programın genel çalışma şeklini şekilsel olarak modelleyerek çiziniz. KLASİK 8 VEZİR PROBLEMİ: 8 veziri bir 8x8 satranç tahtası üzerinde iki vezir aynı satır, sütun veya çapraz gelmeyecek şekilde (vezirler birbirini yemeyecek şekilde..) yerleştirilmesini sağlama problemidir. İki vezirin aynı satır veya sütunda yer alamayacağı 8! = 40.320 ihtimal vardır. Back tracing algoritması ve permutasyon uygulaması ile her bir satıra (0-7) arasındaki en uygun yerleşim seçilir. ÖRNEK EKRAN ÇIKTISI: * * * V * * * * * * * * V * * * * V * * * * * * * V * * * * * * * * * * * * V * * * * V * * * * * * V * * * * * * * * * * * V * * * * * * V * * * * V * * * * * * * * * * * * V * * * * * * * V * * * * V * * * * * * * * V * * V * * * * * * * V * * * * * * * Bu uygulama kodları laboratuvar dersinde incelenecek ve sorular sorulacaktır. Kodlar çıktı alınmayacak sadece ECLIPSE ortamında olacaktır. Kodların çalışma mekanizmasını anlatan çizimler laboratuvar günü teslim edilecektir.

4- YAPAY SİNİR HÜCRESİ TASARIMI 2: Daha önceki YSH probleminde 4 girişli bir Yapay Sinir Hücresinin tasarımını yapılmıştı. Bu uygulamada ise girdi sayısı ve ağırlıkları sınırsız olan bir çok girişli YSH sınıfı yazılacaktır. Bu sınıf kendisine parametre olarak verilen istenen büyüklükteki girdileri ve ağırlıklarını alarak gerekli çıktıyı üretmesi gerekmektedir. Yazılması tavsiye edilen yordamlar ANA KOD GÖVDESİ kısmında verilmiş ayrıca UML diyagramıyla da sınıf yapısı modellenmiştir. Sınıfın çalıştığını anlamak için, Ana Kod Gövdesindeki main metodu çalıştığında programın İSTENEN EKRAN ÇIKTILARI üretmesi gerekmektedir. KISA TANITIM YAPAY SİNİR AĞLARI (YSA) (Artificial Neural Network (ANN)) Yapay Sinir Ağları (YSA) insan beyninin özelliklerinden olan öğrenme yolu ile yeni bilgiler türetebilme, yeni bilgiler oluşturabilme ve keşfedebilme gibi yetenekleri herhangi bir yardım almadan otomatik olarak gerçekleştirmek amacı ile geliştirilen bilgisayar sistemleridir. Bu yetenekleri klasik programlama yöntemleri ile gerçekleştirmek oldukça zor veya mümkün değildir. O nedenle Yapay Sinir Ağları programlaması çok zor veya mümkün olmayan olaylar için geliştirilmiş bir bilgisayar bilim dalıdır. YAPAY SİNİR HÜCRESİ (YSH) Biyolojik Sinir Sistemleri sinir hücrelerinden oluşması gibi Yapay Sinir Ağları da Yapay Sinir Hücrelerinden meydana gelir. YSH nin genel yapısı şekil-1 de verilmiştir. YSH 5 temel elemandan oluşur. Bunlar Girdiler, Ağırlıklar, Toplama Fonksiyonu (NET), Aktivasyon Fonksiyonu (F(NET)) ve Çıktıdır. Girdiler: YSH ne dış dünyadan gelen bilgilerdir. Ağırlıklar: Bir yapay hücreye gelen bilginin önemini ve hücre üzerinde etkisini gösterir. Ağırlık 1, Girdi 1 in hücre üzerindeki etkisini gösterir. Toplama Fonksiyonu (NET()): bu fonksiyon hücreye gelen net bilgiyi hesaplar. Bu işlemi ağırlıklı toplamı bularak yapar. Bu metot; her gelen Girdiyi kendi Ağırlığı ile çarparak toplama yöntemi ile elde edilir. (, ) = G i : i. girdi değeri A i : i. girdiye ait ağırlık n: toplam girdi adedi Aktivasyon Fonksiyonu (F(NET)): Bu fonksiyon, hücreye gelen net girdiyi işleyerek hücrenin girdilere karşılık üreteceği çıktıyı hesaplar. En yaygın kullanılan aktivasyon fonksiyonu Sigmoid Fonksiyonudur: ( ) = + Girdi 1 Ağırlık 1 Girdi 2 Ağırlık 2 Girdi 3 Ağırlık 3 Girdi 4 Ağırlık 4 Toplama Fonksiyonu (NET) NET Aktivasyon Fonksiyonu F(NET) Çıktı g1=0.5 a1= - 0.2 g2=0.6 a2=0.6 g3=0.2 a3=0.2 g4=0.7 a4= - 0.1 NET(g,a)=0.23 NET F(NET) Çıktı=0.56 Şekil-1: YSH genel yapısı NET= 0.5* -0.2 + 0.6*0.6 + 0.2*0.2 + 0.7* -0.1 NET= 0.23 ( ) = +. =. Şekil-2: Bir YSH çalışma örneği

ÇOK GİRİŞLİ YAPAY SİNİR HÜCRESİ SINIFI (public class YSH_MultiInput) UML DİYAGRAMI + girdiler: double[] + agirliklar: double[] YSH_MultiInput + YSH_MultiInput(girdiler: double[], agirliklar :double[]) + NET(): double + F(NET: double): double ANA KOD GÖVDESİ: public class YSH_MultiInput { double girdiler[];// çok girişli YSH için girdi dizisi double agirliklar[];// çok girişli YSH girdilerine ait ağırlık değerleri dizisi public YSH_MultiInput(double girdiler[], double agirliklar[]) { // 1- yukarıda referans olarak açılan girdi ve ağırlık dizileriburada gereken boyutla oluşturulmalıdır // 2- Yapılandırıcı içerisinde dışarıdan gelen girdi ve ağırlık dizileri // sınıfın girdi ve ağırlıklarına yüklenmelidir double NET() { // verilen NET toplama fonksiyonu ile tüm girdi ve ağırlıkları için NET çıkışı hesaplanmalı // sonuç geri döndürülmelidir double NET = 0; return NET; double F(double NET) { // NET() fonksiyonunda elde edilen NET değeri ile // F(NET) hesabı sigmoid fonksiyonuna göre hesaplanmalı // ve değer döndürülmelidir // YSH sınıfına Girdi ve Ağırlıkları gönderilmektedir double girdiler[] = { 0.5, 0.6, 0.2, 0.7 ; double agirliklar[] = { -0.2, 0.6, 0.2, -0.1 ; YSH_MultiInput ysh_mi = new YSH_MultiInput(girdiler, agirliklar); double NET = ysh_mi.net(); System.out.println("NET(g,a)= " + NET); System.out.print("F(NET)= " + ysh_mi.f(net)); İSTENEN EKRAN ÇIKTILARI: NET(g,a)= 0.23000000000000004 F(NET)= 0.5572478545985556

5- Bu uygulamada bir dizi büyütme sınıfı (public class MatrisBuyutme) yazılacaktır. Bu sınıfa ait UML sınıf diyagramı ve ANA KOD BLOĞU aşağıda verilmiştir. Sınıfın yapacağı işlem aşağıdaki şekilsel gösterimde anlatılmıştır. Mainde verilen örnek girdiye göre; 3x3 lük bir matris ve 2 kat büyütüleceği sınıf yapılandırıcısına girdi olarak verilmiş ve oluşan ekran çıktısı aşağıda verilmiştir. Bu işlemi yerine getirmesi için yazılması tavsiye edilen yordam ve sınıf değişkenleri UML diyagramında gösterilmiştir. Bu ekran çıktısını sağlayacak programı JAVA dilinde kodlayınız ve ECLIPSE platformunda çalışır hale getiriniz. MATRİS BÜYÜTME ŞEKİLSEL GÖSTERİM 5 3 2 4 x 2 5 3 2 4 5 5 3 3 5 5 3 3 2 2 4 4 2 2 4 4 2 x 2 matris 2 x 2 lik matrisi 2 kat büyüt büyük matrisi doldur BÜYÜK MATRİSE DEĞER YERLEŞTİRME (buyukmatriseyerlestir()) İÇİN BAZI YÖNTEMLER 1- satır satır tarama yaparken kat değeri adet gelen matrisin her hücresi büyük matrise kopyalanabilir. Bu işlem kat kadar sütuna uygulanır. 2- sutun sutun tarama yaparak kat değeri adet gelen matrisin her hücresi büyük matrise kopyalanabilir. Bu işlem kat kadar satıra uygulanır. (tavsiye edilen uygulama yöntemi) MATRİS BÜYÜTME SINIFI UML DİYAGRAMI MatrisBuyutme + gelenmatris: int[][] + buyukmatris: int[][] + MatrisBuyutme(gelenMatris : int[][], kat: int) + buyukmatriseyerlestir() : void + matrisyazdir(matris : int[][]): static void ANA KOD BLOĞU public class MatrisBuyutme { //sınıf değişkenlerinin referansları oluşturuluyor int[][] gelenmatris; int[][] buyukmatris; int kat; public MatrisBuyutme(int[][] gelenmatris, int kat) { //yapılandırıcı içerisinde referans sınıf değişkenleri parametre olarak gelen değişkenlerin büyüklüğüne göre oluşturulacak //gelen matrisin referansı sınıfa ait gelen matris referansına bağlanacak //buyuk matris için gelen matris x 2 katlık yeni matris oluşturulacak

void buyukmatriseyerlestir() { //oluştutulan büyük matrisin içerisinin gelen matris değerlerine göre doldurulması burada yapılacaktır. //bu doldurma işlemi çok farklı yöntemlerle yapılabilir public static void matrisyazdir(int[][] matris) { // herhangi bir n x m lik matrisi matris formatına uygun olarak ekrana basar int[][] a = new int[][] { { 1, 2, 3, { 4, 5, 6, { 1, 4, 2 ; MatrisBuyutme mb = new MatrisBuyutme(a, 2); mb.buyukmatriseyerlestir(); matrisyazdir(mb.buyukmatris); ÖRNEK GİRDİ İÇİN ALINAN EKRAN ÇIKTISI: 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3 4 4 5 5 6 6 4 4 5 5 6 6 4 4 5 5 6 6