BLM307 YAZILIM LAB I Proje 2 Proje: Multithread Yöntemi ile Asal Sayıların Bulunması - - Proje kaynak kodları (sourcecode) CD içerisinde raporla beraber teslim edilecektir. Proje ile alakalı sorularınız için 1. öğretimler Hikmetcan ÖZCAN’ a (hikmetcan.ozcan@kocaeli.edu.tr) ve 2. öğretimler Mehmet Ali ALTUNCU’ ya (mehmetali.altuncu@kocaeli.edu.tr) ulaşabilirsiniz. Proje grupları en fazla 2 kişi olabilir. Grup oluşturmak için son tarih 27/11/2015 Cuma günü saat 17:00’ye kadardır. Grup oluşturucak kişiler dokümana isimlerini yan yana yazmaları gerekmektedir. Grup linki aşağıdaki gibidir. https://docs.google.com/spreadsheets/d/15R1YoSbxz8c8M7T9pN09AP0zagLF8_2QcRndheaJfo/edit?usp=sharing Projenin Amacı: - Projenin amacı multuthread kullanarak 2 den başlayıp N e kadar olan asal sayıların bulunup veri tabanına kaydedilmesidir. Ön Bilgi, Proje Tanımı ve Yapmanız Gerekenler Ön Bilgi 2 ile kendisinin karekökü arasındaki asal sayılara kalansız bölünmüyorsa bu sayılara asal sayı denir. Örneğin; 17 sayısının karekökü 4,123… tür. Sayı 2 ve 3 e tam bölünmediği için asal sayıdır. Sayının asal olduğu doğrulandıktan sonra SQL veri tabanındaki tabloya kaydetmesi gerekmektedir. Projede gerçeklenmesi beklenen adımlar aşağıdaki gibidir. 1. Sayının karekökünün bulunarak tavan sayının bulunması 17.163 sayısının kare kökü 131,00763… tür. Bu sebeple tavan sayısı 131 dir. 2. Asal sayı kontrolü için kullanılacak thread sayısının bulunması Kullanılacak thread sayısı aşağıdaki gibi hesaplanmalıdır. SQL tablosunda tuutlan taban ve tavan sayıları arasındaki eleman sayısı 100 ün altında ise 2 thread, 100 ün üzerinde ise; Thread Sayısı = (int)(eleman sayısı /100 )+1 Örneğin : Eleman sayısı 146 ise, (146/100) +1 = 2 , (221/100)+1 =3 thread olarak belilenmelidir. 3. Threadlerin başlangıç ve bitiş noktalarının belirlenmesi Threadlere başlangıç ve bitiş noktalarının belirlenmesi işlemi Resim 1 de görüldüğü gibidir. 17.163 sayısının kare kökü 131,00763… tür. Bu sebeple tavan sayısı 131 dir. SQL tablosunda 2 den 131 e kadar olan kayıtların sayısı 100 den düşük olduğu için 2 tane thread kullanılmıştır. Thread 0, 2 den 53 e kadar Thread 1 ise 131 den 59 a kadar başlangıç ve bitiş noktaları atanmıştır. Kullanılacak son thread, (bu örnekte Thread 1) asallık kontrolünü tavan sayısından bitiş sayısına kadar yapması gerekmektedir. Resim 1 : Thread’lere baslanıç ve bitiş noktalarının atanması 4. Her bir thread için asal sayı kontrolünün yapılması Threadlerin her biri asal sayı kontrolü işlemini tamamlaması gerekmektedir. Eğer araştıralacak sayı threadlerin içerisindeki bir sayıya tam olarak bölünüyorsa asal sayı değildir. Eğer tüm threadlerin içerisindeki sayılar test edilip tam bölünemediği belirlenirse sayı ASAL sayıdır. 5. Asal sayı ise veri tabanına kayıt edilmesi Asal sayıları veri tabanına kaydetmek için ayrıca bir thread tanımlanması gerekmektedir. Thread veri tabanı ile bağlantı kuracak ve SQL tablosuna kaydedecektir. SQL Tablosundan veri çekme işlemi Main Thread içerisinde gerçekleştirelecektir. Proje Tanımı Projenin bir masaüstü uygulaması (Form Application) şeklinde geliştirilmesi beklenmektedir. Uygulamada multithread kullanılarak asal sayıların hızlı bir şekilde bulunması amaçlanmıştır. Başlangıçta SQL veri tabanındaki tabloda 2,3,5,7,11,13 sayıları bulunmaktadır. Asal sayı kontrolü “15” sayısından itibaren başlamaktadır. Çift sayılara asallık kontrolü yapılmayacaktır. Programın tek bir arayüzü bulunmaktadır(Resim 2). Resim 2: Uygulama arayüzü Uygulama ekranında araştırılacak sayı SQL tablosunda bulunan son asal sayıdan sonraki ilk tek sayı ile başlayacaktır. Örneğin 127 sayısı SQL tablosundaki son asal sayı olsun. Program tekrar açıldığında araştırılan sayı 129’dan itibaren kontrol işlemine başlayacaktır. Resim 2’de “BASLA” butonuna basıldığı anda araştırılan sayı ekranda belirecek ve sayı için kullanılan thread sayısı, başlangıç ve bitiş noktaları belirtilecektir. False değeri, thread içerisindeki sayıların hiçbirinin araştırılan sayıyı tam bölmediğini göstermektedir. True değeri ise thread içerisindeki asal sayılardan birinin araştırılan sayıyı tam olarak böldüğünü belirtmektedir. Resim 2 deki örnekte araştırılan sayı 817.265 tir. Sayı thread 0’ da bulunan 5 asal sayısına tam olarak bölündüğü için True değeri dönmüş ve sonuç ekranında sayının asal olmadığı bilgisi nedeniyle birlikte gösterilmiştir. Programda ”BİTTİ” butonuna basıldığında o anki araştırılan sayının asal olup olmadığı kontrolü yapılacak ve sonucu ekrana gösterdikten sonra program durdurulacaktır. Not: Geliştirme dili olarak istediğiniz yüksek seviyeli dillerden birini kullanabilirsiniz. Demo Günü Teslim Etmeniz Gerekenler: Kodlama ve uygulamayı yaptığınız ortam (IDE) hakkında sorulacak olan sorulara hazırlıklı olmanız beklenmektedir. Demo günü teslim edilecekler: - Programınızın CD'si. CD içinde kodunuz, programınızın çalıştırabilmesi için gerekli olan instructionlar (readme.txt) ve raporunuz (Ek’e göre hazırlamalısınız). - Proje'nin rapor çıktısı (hard-copy).