Bu yazımda algoritma analizi dersimizde yaptığım metni iki yana yaslama programını sizlerle paylaşacağım. Metni iki yana yaslama problemini iki yöntemle ayrı ayrı yapmış bulunmaktayım. Bu yöntemler greedy(aç gözlü yaklaşım) ve dinamik programlamadır.
Greedy yöntemi düz mantıkla çalışır şöyleki metindeki kelimeleri bir bir sırası ile işleme alır. Bu sıraya görede çıktı metnini oluşturur.
Dinamik programlama yönteminde tüm kelimeler bir algoritma dahilinde işleme alınır ve kelimeler için en uygun yer belirlenir. Amaç her satırda en az boşluk olmasıdır.
Dinamik programlama algoritmasının anlatımını youtube adresinde bulabilirsiniz.
Kodlara ulaşmak için github adresine gidin
Bir Sıfır Gücü |
”Bismillahirrahmanirrahim” Resûlullah (sallâllahü aleyhi ve sellem) buyurdu ki: "Ağızların tadını kaçıran [lezzetleri yıkan] ölümü, çokça hatırlayın."(Tirmizi 2307) |
Yazılım,hayallerini elektronların akışına bırakmaktır.
11 Mayıs 2016 Çarşamba
4 Mayıs 2016 Çarşamba
Adisyon Otomasyonu
Bu yazımda proje ödevi olarak yaptığımız lokanta adisyon programını sizlerle paylaşıyorum.
Projenin kodlarını java swing kullanarak yazdık.Veritabanı olarak postgresql kullandık.
Projenin yapılış amacıda veritabanı ile proje yapmayı öğrenmekti.
Projeyi ve projenin kodlarını anlatmayacağım kodları indirip incelediğinizde anlayacağınızı sanıyorum. Projenin kullanılışı vs. Rapor.pdf dosyasında mevcuttur.
Proje dosyalarına github adresinden ulaşabilirsiniz.
Projenin kodlarını java swing kullanarak yazdık.Veritabanı olarak postgresql kullandık.
Projenin yapılış amacıda veritabanı ile proje yapmayı öğrenmekti.
Projeyi ve projenin kodlarını anlatmayacağım kodları indirip incelediğinizde anlayacağınızı sanıyorum. Projenin kullanılışı vs. Rapor.pdf dosyasında mevcuttur.
Proje dosyalarına github adresinden ulaşabilirsiniz.
Etiketler:
Algoritma,
Java,
postgresql,
proje,
swing,
veritabanı
24 Mart 2016 Perşembe
JavaDoc nedir?
JavaDoc nedir?
Projelerimizde yazmış olduğumuz sınıfların başkaları tarafından kolay anlaşılmasını sağlamak için kullanılan bir yapıdır. Özellikle jar haline getirilmiş APIlerin kullanımında kullanıcıyı bilgilendirmek için çok önemlidir.
JavaDoc bize dökümantasyon yazmak için bir format sunar.Bu formatta HTML etiketleri kullanılabileceği gibi JavaDoc'a ait etiketlerde mevcuttur. JavaDoc dokümantasyonunu, class, interface ya da enum tiplerinden önce, nesne ve sınıf değişkenlerinden önce ve constructorlar dahil olmak üzere metotlardan önce, /** */ formatında yazılır.
Dökümantasyonu yapılmış kodu HTML dökümantasyonu haline getirmek için jdk ile gelen javadoc aracı ile şu şekilde yapabilirsiniz.
Böylelikle sınıfımızın dokümantasyonunu "documentation" isimli bir dosyaya çıkarmış oluyoruz. Bir başka yolu kullandığınız IDE'lerin generate javadoc özelliğini kullanabilirsiniz.
JavaDoc'un etiketleri
@author -> Geliştiren kişi
@param -> Parametre tipi ve anlamı
@throws ,@exception -> İstisna durumları ve anlamları
@return -> Dönüş tipi
@see -> Başka bir yere referans sağlar
@since -> Hangi sürüm ile eklendiği
@version -> Son güncellendiği sürüm
{@code} -> Kodu belirtmek için
@deprecated -> Artık kullanılmaması istemi
{@value} -> Statik alanın doc açıklamada kullanıldığı zaman, o sabitin değerini gösterir.
{@link} -> Başvurulan sınıfın belirtilen paket, sınıf veya üye adı belgelere işaret görünür .
{@linkplain} -> Bağlantının etiketine hariç {@link}, Özdeş kod yazı daha düz metin olarak görüntülenir.
@serial -> Varsayılan serializable alan için doc yorumda kullanılır.
@serialData -> writeObject () veya writeExternal tarafından yazılmış verileri belgelemektedir
@serialField -> Bir ObjectStreamField bileşeni belgelemektedir.
{@inheritDoc} -> En yakın kalıtsal sınıf veya uygulanabilir arayüz gösterir.
{@docRoot} -> Üretilen her sayfa üretilen belgenin kök dizinine göre yolunu gösterir.
{@literal} -> literal metni belirtir. kapalı metin, HTML biçimlendirme veya iç içe javadoc etiketleri içermeyen olarak yorumlanır.
Küçük bir örnek ise şöyle verilebilir.
Alışkanlık edinmek JavaDoc'u bundan sonraki yazılarımda kullanmaya çalışacağım.
Daha detaylı olarak JavaDoc resmi sitesinden öğrenebilirsiniz.
Başka bir kaç yer ingilizce olarak tutorialpoints veya türkçe olarak Akin Kaldiroglu hocamızın yazılarından faydalanabilirsiniz.
Projelerimizde yazmış olduğumuz sınıfların başkaları tarafından kolay anlaşılmasını sağlamak için kullanılan bir yapıdır. Özellikle jar haline getirilmiş APIlerin kullanımında kullanıcıyı bilgilendirmek için çok önemlidir.
JavaDoc bize dökümantasyon yazmak için bir format sunar.Bu formatta HTML etiketleri kullanılabileceği gibi JavaDoc'a ait etiketlerde mevcuttur. JavaDoc dokümantasyonunu, class, interface ya da enum tiplerinden önce, nesne ve sınıf değişkenlerinden önce ve constructorlar dahil olmak üzere metotlardan önce, /** */ formatında yazılır.
Dökümantasyonu yapılmış kodu HTML dökümantasyonu haline getirmek için jdk ile gelen javadoc aracı ile şu şekilde yapabilirsiniz.
javadoc -d documentation sınıf.java
Böylelikle sınıfımızın dokümantasyonunu "documentation" isimli bir dosyaya çıkarmış oluyoruz. Bir başka yolu kullandığınız IDE'lerin generate javadoc özelliğini kullanabilirsiniz.
JavaDoc'un etiketleri
@author -> Geliştiren kişi
@param -> Parametre tipi ve anlamı
@throws ,@exception -> İstisna durumları ve anlamları
@return -> Dönüş tipi
@see -> Başka bir yere referans sağlar
@since -> Hangi sürüm ile eklendiği
@version -> Son güncellendiği sürüm
{@code} -> Kodu belirtmek için
@deprecated -> Artık kullanılmaması istemi
{@value} -> Statik alanın doc açıklamada kullanıldığı zaman, o sabitin değerini gösterir.
{@link} -> Başvurulan sınıfın belirtilen paket, sınıf veya üye adı belgelere işaret görünür .
{@linkplain} -> Bağlantının etiketine hariç {@link}, Özdeş kod yazı daha düz metin olarak görüntülenir.
@serial -> Varsayılan serializable alan için doc yorumda kullanılır.
@serialData -> writeObject () veya writeExternal tarafından yazılmış verileri belgelemektedir
@serialField -> Bir ObjectStreamField bileşeni belgelemektedir.
{@inheritDoc} -> En yakın kalıtsal sınıf veya uygulanabilir arayüz gösterir.
{@docRoot} -> Üretilen her sayfa üretilen belgenin kök dizinine göre yolunu gösterir.
{@literal} -> literal metni belirtir. kapalı metin, HTML biçimlendirme veya iç içe javadoc etiketleri içermeyen olarak yorumlanır.
Küçük bir örnek ise şöyle verilebilir.
/**
* Merhaba, Dünya!
* Bu program javaya ilk başladığımızda yazacağımız programdır.
* Çıktı olarak konsol ekranına Merhaba,Dünya! yazar.
*
*
* @author Eren Çetinkaya Cruz
* @version 1.0
* @since 2016-03-24
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Alışkanlık edinmek JavaDoc'u bundan sonraki yazılarımda kullanmaya çalışacağım.
Daha detaylı olarak JavaDoc resmi sitesinden öğrenebilirsiniz.
Başka bir kaç yer ingilizce olarak tutorialpoints veya türkçe olarak Akin Kaldiroglu hocamızın yazılarından faydalanabilirsiniz.
5 Mart 2016 Cumartesi
Kurtul Oyunu (Html5)
Bu yazımda pekiştirmek ve pratik yapmak için yazdığım ikinci oyunumu tanıtacağım.Bu oyunun yapımında da html5-JavaScript-JQuery kodlarını kullandım. Kısaca karakterimiz olan bir top nesnesi ile üzerimize gelen basamaklar dediğim çubuklardan kurtularak oyun alanının üzerine çıkmaya çalışıyoruz.
Oyunumuzun görüntüsü şu şekildedir.
Bu oyunları yazmamım en büyük nedenleri analitik düşünme ve algoritma kurma becerilerimi geliştirmektir. Topun duvarlar ile çarpışması veya basamaklar ile çarpışmaları olsun , basamakların uzunlukları ve çıktıkları konumları olsun bunların ayarlanması gerçekten ufkunuzu açıyor.
Örneğin basamakların ilk oluşturulduğu kod parçası şu şekildedir.
Karakterimizin hareket kodları şu şekildedir.
Kodlara ulaşmak için github adresine gidin.
Oyunumuzun görüntüsü şu şekildedir.
Bu oyunları yazmamım en büyük nedenleri analitik düşünme ve algoritma kurma becerilerimi geliştirmektir. Topun duvarlar ile çarpışması veya basamaklar ile çarpışmaları olsun , basamakların uzunlukları ve çıktıkları konumları olsun bunların ayarlanması gerçekten ufkunuzu açıyor.
Örneğin basamakların ilk oluşturulduğu kod parçası şu şekildedir.
function basamaklariOlustur() {
var indis;
var x, en;
var y = 0;
for (indis = 0; indis <= basamakSayisi; indis++) {
do {
x = 10 + Math.random() * 300;
en = 75 + Math.random() * 200;
} while (x + en > alanG - 10);// konumu + eni sağdan fazla olmamasını sağlıyoruz
//2 ve 3 katlarında köşelerden çıkmayı garanti ediyoruz
if ((indis % 2) == 0 && !(x > 10 && x < karakterBoyutu - 2)) {
do {
x = 10 + Math.random() * 300;
} while (!(10 < x && x < karakterBoyutu - 2));//
} else if ((indis % 3) == 0 && !(x + en > alanG - karakterBoyutu - 8 && x + en < alanG - 10)) {
do {
x = 10 + Math.random() * 300;
en = 75 + Math.random() * 200;
} while (!(x + en > alanG - karakterBoyutu - 8 && x + en < alanG - 10));//
}
y -= 70;//her basamak arasına uzaklık koyuyoruz
basamaklar[indis] = new BasamakNesnesi(x, y, en, basamakBoyu);
}
}
Karakterimizin hareket kodları şu şekildedir.
function karakterHareket() {
if (btnSol) {
karakter.x += -karakterHareketpx;
} else if (btnSag) {
karakter.x += +karakterHareketpx;
}
// soldan çıkmaz
if (karakter.x < 10 && btnSol) {
karakter.x = 10;
}// sağdan çıkmaz
else if (karakter.x > alanG - 10 - karakterBoyutu && btnSag) {
karakter.x = alanG - 10 - karakterBoyutu;
}
carpismaKontrol();
}
Kodlara ulaşmak için github adresine gidin.
3 Mart 2016 Perşembe
Masa Hokey Oyunu (Html5)
Devamı gelirmi bilmiyorum ama bu yazımda Html5 Css3 JavaScript JQuery öğrendikten sonra pratik yapmak için yazdığım masa hokeyi oyununu tanıtacağım.
Oyunum görüntüsü şu şekildedir.
Örneğin ortadaki yeşil yuvarlağın kodları şu şekildedir.
Örneğin kalelerin kenarları ile çarpışma kodları şu şekildedir.
Oyunum görüntüsü şu şekildedir.
Bu oyunu geliştirirken html5'in canvas elemanını kullandım. JQuery metodlarını kullandım.Oyunun içindeki bileşenler top nesnesi hariç canvasın kendi grafik elamanlarıdır. Top nesnesi ise 50x50 png formatında resimdir.
Örneğin sol taraftaki kale nesnesinin kodları şu şekildedir.
BobContext.beginPath();
BobContext.fillStyle = 'red';
BobContext.rect(0, 100,5,200);
BobContext.fill();
BobContext.lineWidth = 1;
BobContext.stroke();
BobContext.closePath();
Örneğin ortadaki yeşil yuvarlağın kodları şu şekildedir.
BobContext.beginPath();
BobContext.arc(BobContext.canvas.width/2, BobContext.canvas.height/2, BobContext.canvas.width/20, 0, 2 * Math.PI, false);
BobContext.fillStyle = 'green';
BobContext.fill();
BobContext.lineWidth = 2;
BobContext.stroke();
BobContext.closePath();
Örneğin kalelerin kenarları ile çarpışma kodları şu şekildedir.
//kale 1 üst çarpişma
if(objBob.x == 0 && (objBob.y<100)){
objBob.dx = -objBob.dx ;
}//kale1 alt çarpişma
if(objBob.x == 0 && (objBob.y > 300)){
objBob.dx = -objBob.dx ;
}//kale 2 üst çarpişma
if(objBob.x == areaW-5 && (objBob.y<100)){
objBob.dx = -objBob.dx ;
}//kale 2 alt çarpişma
if(objBob.x == areaW-5 && (objBob.y > 300 )){
objBob.dx = -objBob.dx ;
}
Kodlara ulaşmak için github adresine gidin.
Kaydol:
Kayıtlar (Atom)

