BLM307 YAZILIM LAB I Proje 2

advertisement
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
([email protected]) ve 2. öğretimler Mehmet Ali ALTUNCU’ ya
([email protected]) 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).
Download