Biri Etkinlik Mi Dedi ; Woman Developers Day, Nam-ı Diğer #WDD

Merhaba Arkadaşlar

Bu yazımda sizlere bir efsanenin, bir uyanışın hikayesinden bahsedeceğim. Adı PAÜ Özgür Yazılım Topluluğu olan bu küçük ailenin başardığı Denizli’nin daha önce görmediği ama artık sık sık göstermeyi umduğumuz Woman Developers Day’i sizlere anlatacağım. Öyle noktalardan buraya geldik ki inanın düşündükçe gülüyorum.

Daha resmiyetinin 2. ayını doldurmamış bu aile öyle sorunlar atlattı ki tarifi gerçekten zor. O kadar çok taş, fırtına, çamur yolumuza geldi. Tabi tökezledik. Düştük, dizimiz kanadı belki ama birbirimizin elinden tutup daha inançlı yola devam ettik. Biz bir üniversitede, bir ülkede; bir akım, bir düşünce oluşturmak istiyoruz. Tabi zorlanacağız ama bunu başaracağız. Ailecek buna çok inanıyoruz. Ve bu inancın ilk meyvesinide 3 Mayıs 2014 Cumartesi günü Woman Developers Day etkinliğinde aldık. O gün tekrar inandık gücümüze. Biz farklıyız bunu biliyoruz. 🙂

10304349_284622035039017_1391524511262317242_n

Bu büyük etkinlik ateşine ilk kıvılcım 15 Mart’ta gönderilen bir maille atıldı. Tabi o zaman etrafta hep soru işaretleri acaba? Bir ara öyle bi’ noktaya geldik ki gizlice etkinlik iptal kararı bile alınmıştı. Ama biz aile fertleri olarak düşen dizi kanayan dostumuzu tuttuk yerden aldık ve koşturduk. Düşündük düşündük hep düşündük ne yapabiliriz. Büyük etkinlikte neler olmalı. Biz bi’ etkinlikte olsak ne görmek isterdik hepsini düşündük. Başka üniversitelerde etkinliklere gittik her şeyi hesap etmeye çalıştık. Yapılacaklar listesi oluşturulduktan görev dağılımları yapıldı. Araya vize sınavları da girdi ama tüm ekip görevlerimizi vakitlice bitirdi.

Birçok sponsor görüşmesi, destekçi bulmak için mail trafikleri her şey halledildi. Konuşmacılar,katılımcılar, baskılar, afişler, pasta, börek, çay, kahve ve hediyeler derken artık her şey hazırdı. Hele bir destek vardı ki mükemmel bir şeydi bu. Süleyman Demirel Üniversitesi Yazılım Kulübü etkinliğimize 45 kişiden fazla bir grupla katıldı. İnanılmaz mutlu olduk ekipçe. Kapılarda karşıladık onları. 🙂

10297633_441271329351326_6355111507113804124_n

Gelelim etkinlik günü yaşananlara. Sabah uyandığımda gayet sakindim ama salona gelince birden haber geldi Isparta ekibinden “9:30’da oradayız” diye. Yani bu sadece 50 dakikamız olduğunu gösteriyordu. İnanılmaz bir telaş sardı beni. Ama dönüp arkama bir baktım inanılmaz bir ekip hazır bekliyor. Arı gibi çalışmaya başladık. Standları kurduk, pastaları hazırladık salonu düzenledik. Masaları yerleştirdik. Artık her şey hazırdı. Ama ne bileyim bir şeylerin ters gidebileceği ihtimali hep aklımdaydı. Bir kişi, beş kişi derken salon yavaş yavaş dolmaya başladı, Süleyman Demirel Üniversitesi’nden gelen misafirlerimiz salona teşrif edince  artık iyice rahatladım. Ama bu seferde bu kadar katılımcıyı memnun edebilecek miydik acaba 🙂

İlk sunum PostgreSql konusu ile Gülçin Yıldırım’ındı. Kesinlikle çok eğlenceli ve bilgilendirici bir sunumdu. PostgreSql çok güzel. 🙂 Sunumdan sonra çekiliş yapıldı şanslı isimler hediyeleri kaptı:) tabi ki benim elim yine boş kaldı. 🙂 İlk molada yoğun ilgiyi sevgili NAO (robot olur kendileri) üzerinde toplamıştı, dans ederken tüm ilgiyi aldı biz kenarda öylece kalakaldık. 🙂 Çerçevelerimiz dolaşıyor fotoğraflar çekiliyor, çay içip sohbet ediliyordu ve herkes halinden memnundu. Görevli arkadaşlardan birinin kulak misafiri olduğu konuşmada “Çok teknik ama çok eğlenceli çok memnunum” şeklinde bir cümle geçmiş. Bu cümle bizim motivasyonumuzu daha da arttırdı. Ayrıca Kadın Yazılımcı ekibi o kadar iyi ki onlarla tanışmak harikaydı.

10157141_654580524595815_3812072909371691435_n

Birbirini izleyen saatlerde Nesrin Kalender sunumu esnasında gerçekten çok eğlendik. Bir sunum içerisinde günlük goygoy dozunu aldırdı bizlere. Sass benim gibi Front seven kişilerin kafasında şimşekler patlattı sanırım. Merve Selçuk Milli işletim sistemimiz Pardus’tan bahsetti, Armağan Ersöz harika bir teknik birikim ile Django’yu tanıttı bizlere, Burcu Sözay ile Coğrafi Bilgi Sistemleriyle tanıştık, bizlere yeni bir sektör tanıttı. Bir çok arkadaşın kulağına su kaçırdı belki 🙂 Seval Ünver Java EE anlatınca bi’ hoş oldum 🙂 In Java we trust yani 🙂 Sunumlar devam ederken bir yandan da eş zamanlı atölyeler gerçekleşiyordu. Android atölyesi Vildan İlki, Java atölyesi Zeynep Nur Dilek,  PHP atölyesi Cemile Sarıcaoğlu, Ruby on Rails atölyesi Kader Sucuk başlangıç düzeyinden başlayarak meraklısına bilgisini aktarıyordu. Sosyal atölyeye olan yoğun talepten ötürü tüm oturumlar bittikten sonra konferans salonunda Sosyal Atölye gerçekleşti. Kadın Yazılımcı ekibi, yazılımcı adaylarının sorularını cevapladı. Gün sonunda yapılan büyük çekiliş ile hediyeler sahiplerine kavuştu. 🙂 Ama bana yine bir şey yok 🙂

Bu etkinlikte emeği geçen arkadaşlarım:

Necati Kartal, Setenay Ceren Avci, Tuğçe Çokay, Onur Yurttürk, Ecem Eroğlu, Kemal Kanok, Dila Özçelik, Tuba Naz, Özgür Halil İnce,Mehemmed Ş-ev, Mehmet Dik, Kendal Bozkurt, Said Altıntop, Oğuzhan Taşçı, Mehmet Fidan, Ezgi Özen, Esra Betül Özeyranlı, Meltem Karakurt, Erdem Gençoğlu, Yunus Emre Erken, Ömer Gedikli, Oğuzhan Ural, Huri Uraz, Büşra Teoman, İbrahim Arslan, Derya Demirer.

Fahri Danışmanımız Hüseyin Mert’e, bizlere her zaman yol gösteren, aramızda bir okyanus olmasına rağmen yardımlarını asla esirgemeyen, Amerika fatihi Recep Erol’a, Danışman hocamız ve belki de okulumuzdan tek destekçimiz Selahattin Akkaş’a sonsuz teşekkürler sunuyoruz 🙂

Kendinize iyi bakın, esenlikle.

Bir sonraki yazıda görüşmek üzere.

Servlet Request Örneği

Merhaba Arkadaşlar,

Bu yazımda sizlerle ServletRequest sınıfı için basit bir örnek paylaşacağım.Öncelikle yeni bir paket ve servlet oluşturup tanımlarını yapalım.

Paket adı : Request

Servlet içerisinde ki sınıfın adı : RequestGetForm

RequestGetForm.java

package Request;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class RequestGetForm extends HttpServlet {
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
    	// servlet içinde döndüreceğimiz parametreler
    	String isim = request.getParameter("isim");
        String soyisim = request.getParameter("soyisim");
        String cinsiyet = request.getParameter("cinsiyet");
        String medenidurum = request.getParameter("medenidurum");
        String takim = request.getParameter("takim");
        String[] pdilleri = request.getParameterValues("pdilleri");//birden fazla programlama dili seçilir
        isim=ilkharf(isim);
        PrintWriter yazici = response.getWriter();
        
        yazici.print("<html><body> ");
        
        
        yazici.print("Adi : " + ilkharf(isim) + "<br>");
        yazici.print("Soyadi : " + soyisim.toUpperCase() + "<br>");
        yazici.print("Cinsiyeti : " + cinsiyet + "");
        yazici.print("Medeni Hali : " + medenidurum + "<br>");
        yazici.print("Tuttugu takim : "+takim + "<br>");
        // Programlama dillerinde birden fazla seçilme ihtimaline karşılık yapıldı.
        if (pdilleri != null) {
        	yazici.print("<br>");
        	yazici.println("Bildigi Programlama Dili (Dilleri)  :");
        	 yazici.print("<br>");
            for (String str : pdilleri) {
                yazici.print(str + "<br>");               
            }
        }
        yazici.print("</body> </html>");
 
       /* Enumeration paramNames = req.getParameterNames();
        while (paramNames.hasMoreElements()) {
            String paramName = paramNames.nextElement();
            System.out.println(paramName);
        }*/
 
    }
    public static String ilkharf (String isim){    
    	    if(isim.length() == 0)
    	        return isim;
    	    return isim.substring(0, 1).toUpperCase() + isim.substring(1).toLowerCase();
    	  	 
    }
}

Projemize yeni HTML dosyası ekleyeceğiz.Bunun için projemize sağ tıklayıp New–>Html File yolunu izliyoruz.

formGet.html

<html>
<body> 
    <form id="form1" action="requestgetform" method="get">
    <div>              
    </div> 
    <table id="table1" cellspacing="5px" cellpadding="5%";>
       <tr>
              <td align="right">Isim:</td>
              <td><input type="text" name="firstName" /></td>
       </tr>
       <tr>
              <td align="right">Soy Isim:</td>
              <td><input type="text" name="lastName" /></td>
       </tr>
        <tr>
              <td align="right">Cinsiyet</td>
              <td>
                    <select name="gender">
                        <option value="Bay" selected="selected">Bay</option>
                        <option value="Bayan">Bayan</option>
                     </select>
                </td>
       </tr>
       <tr>
              <td align="right">Medeni Hal</td>
              <td>
                    <input type="radio" name="marital status" value="Bekar" />Bekar
                    <input type="radio" name="marital status" value="Evli" /> Evli
                    <input type="radio" name="marital status" value="Dul" />Dul
                    <input type="radio" name="marital status" value="Javaci" />Javaci :)
            </td>
       </tr>
 
        <tr>
              <td align="right">Diller</td>
              <td>
                    <input type="checkbox" name="lang" value="Java" /> Java
                    <input type="checkbox" name="lang" value="C" />C
                    <input type="checkbox" name="lang" value="C++" />C++
                </td>
       </tr>        
        <tr>
                <td> 
                    <input type="submit" value="Submit"/> 
                </td>
        </tr>
</table> 
    </form>
</body>
</html>

Sınıfımızın servlet tanımlarını web.xml dosyamıza ekleyelim.

web.xml

<servlet>
    <servlet-name>RequestGetForm</servlet-name>
        <servlet-class>Request.RequestGetForm</servlet-class>
    </servlet>
    <servlet-mapping>
   <servlet-name>RequestGetForm</servlet-name>
   <url-pattern>/requestgetform</url-pattern>       
</servlet-mapping>

Kendinize iyi bakın.

Esenlikle kalın.

Bir sonraki yazıda görüşmek üzere.

Merhaba Servlet Dünyası

Merhaba Arkadaşlar,

Bu yazımda sizlere Eclipse üzerinde “Dynamic Web Project” nasıl oluşturulur ve ilk uygulamamız olan “HelloServlet”in yapım aşamalarını anlatacağım.

Öncelikle sizlere bu uygulamaları yapabilmek için Eclipse IDE for JAva EE Developers versiyonunu indirmiş olmanız gerektiğini hatırlatmak istiyorum. Servlet Container olarak kullandığımız Apache Tomcat kurulumunu başarıyla gerçekleştirdikten sonra yeni proje oluşturuyoruz.

Bunun için File –> New –> Project yolunu izliyoruz.

proje oluşturma-1

Next dedikten sonra proje ismimizi giriyoruz. Yapılmamış ise Tomcat ayarlarımızı yapıyoruz. İki defa Next butonuna bastıktan sonra;

proje oluşturma-2

 

Gelen ekranda boş checkbox’a tıklıyoruz ve web.xml’i projemize dahil ediyoruz. Finish  dedikten sonra Eclipse’in Project Explorer kısmı aşağıdaki gibi olacaktır.

proje oluşturma-3

 

web.xml dosyamızı otomatik olarak oluşturmuştuk. web.xml dosyasına Deployment Descriptor ( Dağıtım Açıklayıcısı ) denilmektedir.Şimdi ilk uygulamamıza başlayabiliriz. İlk önce bir paket ve sınıf oluşturuyoruz.

Paket adı: HelloServletWorld 
Sınıf adı: HelloServletWorldClass

HelloServletWorldClass.java

package HelloServletWorld;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class HelloServletWorldClass extends HttpServlet {
	
	
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //eğer methodta exception varsa fırlat demek
        PrintWriter pw = resp.getWriter();
        Date today = new Date();
        String msg = "Merhaba Servlet Dunyasi";
 
        pw.print(msg);
        pw.print("Bilgisayarin Tarihi:" + today);
        pw.print("Blogum (WordPress):  ");       
 
    }    
 
}

Sınıfımız HttpServlet sınıfını kalıtmaktadır. HttpServlet sınıfı da yine GenericServlet sınıfını kalıtmaktadır. Olusturdugumuz Servlet’in tanimlamasini web.xml dosyamizda gerceklestirelim.

web.xml

<servlet>
    <servlet-name>HelloServletWorld</servlet-name>
        <servlet-class>HelloServletWorld.HelloServletWorldClass</servlet-class>
    </servlet>
    <servlet-mapping>
   <servlet-name> HelloServletWorld </servlet-name>
   <url-pattern>/helloservletworld</url-pattern>       
</servlet-mapping>

<web-app etiketindeki uzun etikete takılmayalım, burada önemli olan <servlet> ve <servlet-mapping> etiketleridir.

<servlet> etiketi içerisinde <servlet-name> etiketi yer almaktadır. <servlet-name> tagı içerisine istediğiniz ismi verebilirsiniz.

<sevlet-class> etiketi yardımı ile paket + sınıf ismini yazıyoruz. Burada bir hata yapılırsa Servlet Container , sınıfımızı bulamayacaktır.

<servlet-mapping> etiketinde <servlet-name> alanına url tanımlaması yapacağımız Servlet ismini veriyoruz. Burada dikkat ederseniz önceki tanımladığımız <servlet-name> etiketindeki isim ile ayni isme sahiptir.

<url-pattern> etiketi yardımı ile Servlet’in url tanımlamasını yapıyoruz. / ile başladığına dikkat edelim.

Şimdi sınıfımıza sağ tıklayarak Run as –> Run on Server diyerek çalıştırıyoruz.

blog

Karşımıza gelen menüde Finish i tıklayalım ve Servlet dünyasına giriş yapalım.

blog2

Ve artık Servlet Dünyasına Merhaba dedik.

Bir sonraki yazımda görüşmek üzere.

Kendinize iyi bakın.

Esenlikle kalın.

KISSADAN HİSSE SERVLET

Merhaba Arkadaşlar,

Bu yazı dizimde kısa kısa notlar ve yaptığım uygulamalar üzerinden sizlere Java Servlet’i anlatmaya çalışacağım.Önce sizlere temel kavramlar üzerinden Servlet’i tanıtacağım.

Öncelikle “Servlet nedir?” ondan başlayalım. Servlet, Java EE‘de bir java sınıfı olup HTTP istemlerine cevap vermek için kullanılır. Servlet sınıfı içerinde yer alan GET ve POST methodları bunu sağlayan methodlardandır.

scenario2

 

GET methodunun temel amacı; Sunucuya (server) istenen kaynağı sormak ve varsa bu kaynağı getirmektir. POST methodunun temel amacı ise; sunucuya (server) “form” dosyası göndermektir.

O kadar server dedik sunucu dedik gelin birazda sunucudan bahsedelim. Sunucu, istemcinin (client) isteğini (request) karşılar (handle). Bu isteğe karşılık gelen cevabı (response) geri gönderir. Bunun yanında istemci ile servlet arasında etkileşimi sağlayan bir diğer araç olarak Servlet Motoru (Servlet Container,Servlet Engine) vardır. Ben yapacağım çalışmalarda Container olarak (aynı zamanda server) APACHE TOMCAT, işletim sistemi olarak da UBUNTU kullanacağım.

sevjafjr

Son olarak Servlet Motoru’nun görevlerine değinecek olursak;

  • İletişimi sağlar (İstemci-Server)
  • Yaşam Döngüsü (lifecycle) Yönetimi sağlar.
  • Çoklu kullanım desteği sağlar.
  • Bildirimsel güvenlik sağlar (web.xml)
  • JSP desteği sağlar.

Bu kadar tanım bu aşamada yeterli sanırım 🙂 Gelecek yazımda sizlerle yazılım dünyasının vazgeçilmez ilk uygulamasını “Hello World ” yapacağız.

Kendinize iyi bakın.

Esenlikle kalın.

Bir sonraki yazıda görüşmek üzere.

Özgür Yazılım ve Pau Free Software Community

Merhaba arkadaşlar

Bu yazımda sizlerle bugün düzenlemiş olduğumuz ve Pau Free Software Community isimli yeni oluşumumuzun ilk etkinliğini paylaşmak istiyorum.Topluluğumuz az zamanda çok ve büyük işler başardı. Şuan yaklaşık 30 kişilik bir ekibiz ve her geçen gün büyüyor ve gelişiyoruz. Büyük hedefler uğruna çalışmalarımızı artırak devam ediyoruz.Bize hedeflerimizi ve yolumuzu gösteren Sayın Recep Erol hocamıza da buradan saygı ve sevgilerimi bir kez daha dile getirmek istiyorum.

Bi1Z9rnIcAE3kdf

Bi1cy7jIcAATo22

Bu etkinlik topluluğumuzn ilk etkinliğiydi. En yakın sürede yeni ve daha büyük etkinlikler yapmak istiyoruz. Etkinliğimizin içeriğinden bahsedecek olursak. Etkinliğe önce topluluğumuzun iki güzide bayan arkadaşımızın özgür yazılım nedir sorusuna güzel bir cevap niteliği kazanan sunumlarıyla başladık. Ardından ben sazı elime alarak 🙂 Pau Free Software Community oluşumunu dilim döndükçe anlatmaya çalıştım. Topluluğun nasıl oluştuğunu bu düzeye nasıl geldiğini anlattım. Düzenlemiş olduğumuz keyifli etkinlikleri komik ama çok anlamlı fotoğraflarla anlatmaya çalıştım.

Düzenlediğimiz etkinlikler içerisinde en çok önem verdiğimiz etkinliğimiz Pau TechTalks ismiyle markalaştırmak istediğimiz bir etkinliğimizdir. TechTalks biz öğrenciler için bence bulunmaz bi nimettir ve çok güzel bir fikir paylaşım etkinliğidir.Ayrıca düzenlediğimiz etkinliklerin yanında planlarımızıda açıkladı ve iki kısma önemle değindik. Birincisi Women Developers Days…
Women Developers Days bizim en büyük projemizdir. Biz Ege Bölgesinin en büyük WDD sini Denizlide yapmak istiyoruz. Bunun yanında çekirdekten başlayarak özgür yazılımcılar yetiştirmek için okulumuz hazırlık öğrencilerine de bu tanıtımı yapmak istiyoruz.

Tüm bunları anlattıktan sonra sahneyi çok değerli hocamız Sayın Hüseyin Mert’e bıraktık. Kendisi bize önce Servis Tabanlı mimarileri anlatmaya çalıştı. Tüm salonla diyalog kurabildi. Harika bir enerjiye sahipti. Teorik kısım anlatıldıktan sonra belirlenen bir proje üzerinden çalışmaya başladık. Bana kontrol mühendisliği görevi geldi.Bu görev kapsamında proje yöneticisi arkadaşlarımın katkısıyla önce ayrılan 3 grubu takip edilebilir niteliği kazandırmaya çalıştık. Sonra dökümantasyonlara uygun ölçme işleminden geçirdik. Ben tüm grupların methodlarını,parametrelerini ve dönüş değerlerini kontrol etmeye çalıştım. Ölçülendirebilme aşamasından sonra ise projeye ara vermek zorunda kaldık. Projenin kalan senkronizasyon ve entegrasyon kısmını ise en yakın sürede gerçekleştirilip proje tamamlanacaktır.

Etkinliğimizi tamamladıktan sonra Hüseyin Mert hocamızdan etkinlik değerlendirmesi ve hediye dağıtımını gerçekleştirdik. Ben bu etkinlik sonunda Hüseyin Mert hocamızdan bir BeagleBone kazandım.Kazanılan bu hediye sonunda kendimize bir proje daha bulduk bunu hayata geçirmeyi planlıyoruz.

Sizde eğer topluluğumuzu takip etmek istiyorsanız bu adresten takip edebilirsiniz.

Ayrıca sunumuza  bu adresten ulaşabilirsiniz.

Kendinize iyi bakın.

Esenlikle kalın.

Bir sonraki yazıda görüşmek üzere.

JAVA İLE SIRALAMA ALGORİTMALARI ( SORTING ALGORITHMS WITH JAVA )

Merhaba Arkadaşlar

Bu yazımda sizlere sıralama algoritmaları ile alakalı bilgi vereceğim. Yazı içerisinde 5 farklı Sıralama Algoritması yer almaktadır.

–>Seçmeli Sıralama(İngilizcesi Selectionsort)
–>Eklemeli Sıralama (İngilizcesi: Insertion Sort),
–>Kabarcık Sıralaması(İngilizcesi: Bubblesort)
–>Hızlı Sıralama (İngilizcesi: Quicksort)
–>Kabuk Sıralaması (İngilizcesi: Shell sort)

–> Seçmeli Sıralama(Selectionsort) <–

Algoritmanın çalışma şekli
Bu sıralama algoritmasında düzensiz dizi tek tek ele alınır ve sıralama şekline göre yerleştirilir.Örneğin,listedeki en küçük değerli öğe bulunur.İlk konumdaki öğeyle(0 ıncı indis) bulunan en küçük değerli öğenin yeri değiştirtirilir. Yukarıdaki adımları listenin ilk elemanından sonrası için (ikinci elemandan başlayarak) yinelenir.Dizi kontrol edilip sıralı olduğu anlaşılınca sıralama sonra erer.

Sıralamanın nasıl yapıldığını görsel olarak bu adresten bulabilirsin.

–>Eklemeli Sıralama (Insertion Sort)<–

Algoritmanın çalışma şekli
Bu sıralama algoritması düzensiz dizi elemanlarını tek tek ele alarak her birini dizinin sıralanmış kısmındaki uygun yerine yerleştirme esasına dayanır. Genellikle günlük hayatımızda farketmeden(örneğin iskambil kağıtlarının sıralanması) sıkça kullandığımız bir çözüm yöntemidir. 2. elemandan başlayarak elemanın kendinden önceki elemanlarla karşılaştırılması suretiyle büyük elemanlar dizide sağa doğru kaydırılır. Böylelikle açılan uygun pozisyona o anda sıralanmakta olan eleman yerleştirilir.

Sıralamanın nasıl yapıldığını görsel olarak bu adresten bulabilirsin.

–> Kabarcık Sıralaması(Bubblesort) <–

Algoritmanın çalışma şekli
Sıralanacak belirli elemandaki dizinin ilk eleman alınır. Eğer kendinden sonrakinden büyükse yerleri değiştirilir.(Yani algoritma gereği çift olarak karşılaştırılır.) Sonraki elemana geçilir ve aynı işlem tekrarlanır. İlk turda dizinin sonuna varıldığında en büyük eleman sonda yer almış olur. Dizinin başına dönerek bu işlem sondan birinci elemana kadar tekrarlanır. Her adımda bir eleman daha azaltılarak devam eden algoritmada bütün elemanların yerini bulmasıyla sonlanır.

Sıralamanın nasıl yapıldığını görsel olarak bu adresten bulabilirsin.

–>Hızlı Sıralama (Quicksort)<–

Algoritmanın çalışma şekli
Sayı dizisinden herhangi bir sayıyı pivot eleman olarak seçilir.Sayı dizisini pivottan küçük olan tüm sayılar pivotun önüne, pivottan büyük olan tüm sayılar pivotun arkasına gelecek biçimde düzenlenir. (pivota eşit olan sayılar her iki yana da geçebilir) Bu bölümlendirme işleminden sonra eleman sıralanmış son dizide olması gerektiği yere gelir. Algoritmanın bu aşamasına bölümlen-dirme aşaması denir.Pivotun sol ve sağ yanında olmak üzere oluşan iki ayrı küçük sayı dizisi, hızlı sıralama algoritması bu küçük parçalar üzerinde yeniden çağrılarak sıralanır.Algoritma içinde sayı kalmayan (eleman sayısı sıfır olan) bir alt diziye ulaştığın-da bu dizinin sıralı olduğunu varsayılır.

Sıralamanın nasıl yapıldığını görsel olarak bu adresten bulabilirsin.

–>Kabuk Sıralaması (Shell sort)<–

Algoritmanın çalışma şekli
Bu sıralama algoritması dizi elemanlarını dizinin uzunluğuna göre belirlenen atlama payına(dizi büyüklüğünün yarısı) göre karşılaştırır. Atlama payını da dizi büyüklüğüne göre biz belirliyoruz. Mesela n elemanlı dizimiz olsun. n/2 bizim dizideki atlama payımızdır. 7 elemanlı ise 7 / 2 = 3.5 = 3’er 3’er atlatacağız. Mesela 0. eleman ile 3. elemanı karşılaştırır. 0. eleman büyükse yer değiştirirler. Ta ki atlama payi 1’den küçük kalana kadar. Her döngüden sonra n /= 2 ile yeni atlama miktarı belirliyoruz.
3 / 2 = 1.5 = 1. Bu adımdan sonra elemanlar arasında birer birer atlama yapar. Bu döngüden sonra bir sonraki atlama payı 1’den küçük olacağı için sıralama sonlandırılır.

Sıralamanın nasıl yapıldığını görsel olarak bu adresten bulabilirsin.

Ayrıca sizinle tüm sıralama algoritmaları ile oluşturduğum bir uygulamayı paylaşacağım.Bu program kişiye 999 elemanlı bir diziyi istediği sıralama algoritmasıyla sıralamasını sağlar ve sıralama sonunda sıralama işleminin kaç milisaniye sürdüğünü gösterir.Böylece hangi sıralama algoritmasının daha hızlı olduğunu görme şansımız olacaktır.Aşağıda sıralama algoritmalarının nasıl bir algoritma kullanıldığı anlatılmıştır.

Bu programın kaynak kodlarına buradan ulaşabilirsiniz…

Labirent Oyunu (Maze Game)

Merhaba Arkadaşlar

Bu yazımda sizlerle Java programlama dili ile yaptığım labirent oyununu paylaşacağım

mazegame

Oyunumda geliştirilecek bir çok yönünün olduğu düşünüyorum. Kendi düşüncelerimi ve geliştirilecek yönlerini, kaynak kodlarımızın README dosyasında bulabilirsiniz.

Oyunumuz .jar uzantılıdır. Yani bilgisayarında Java yüklü olan herkes bu basit (şimdilik) labirent oyununu oynayabilir. Oyunumuzu bilgisayarınıza indirmek için tıklayınız…

Oyunumuzun kaynak kodlarına ve geliştirme seçeneklerine ulaşmak için tıklayınız…

Kendinize iyi bakın.

Esenlikle kalın.

Bir sonraki yazıda görüşmek üzere.