String de Palindrom Kelime Kontrolü

By Burak TUNGUT - 21.11.2012 - Kategori Java

Bu makalem de bize verilen bir string'i kullanarak kelimenin palindrom olup olmadığını kontrol eden algoritmayı inceleyip, method yazacağız.

Palindrom kavramını inceleyecek olursak genelde sayılar için kullanılsa da tersten değeri ya da kelimeler için okunuşu aynı olan değerlere palindrom denir.
 

Palindrom Kontrolü

Bir sayı ya da kelimenin palindrom olup olmadığını iki şekilde kontrol edebiliriz.
Bunlardan birine kolay yöntem dersek direk gelen değeri bir StringBuilder'e aktararak equals methodu ile kontrolü tek satırda gerçekleştirebiliriz. Kolay olduğu her halinden belli dir ki genellikle sınavlarda bu istenmez smiley 

Diğeri yani zor yöntem der isek ; gelen değerin her harfini bir char a aktararak karşılıklı indislerin değerlerini kontrol edebiliriz. Yada direk charAt methodunu kullanabiliriz.

İlk kod da kolay yöntemi göstereceğim. Bu yöntem ile hem kelime hem de sayıların palindromluk durumunu kontrol edebilirisinz. Ancak sayılar için sınavda istenen yöntemi sonraki makalelerim de dile getireceğim.
İkinci kod da ise zor yöntemi kod ile göstereceğim.

Aslında kolay ya da zor diye ayırmak pek de hoşuma gitmedi, programcılıkta kolay ya da zor diye bir tanımlandırma yapmamak bence en iyisi bu seferlik böyle olsun :)

Devamı

Java Obeb ve Okek Hesaplama

By Burak TUNGUT - 21.11.2012 - Kategori Java

Bu makalem de Java ile girilen iki sayının obeb ve okek değerlerini hesaplayan methodları yazacağız.

En büyük ortak bölen ve en küçük ortak katları yani EBOB (obeb) ile EKOK (okek) değerlerinin nasıl bulunacağını kavradıktan sonra bunları Java ile methodlara dökeceğiz.
 

Obeb ve Okek Hesaplama

Bir önceki makalem de heximal dönüşümü anlatmıştım. Tıpkı ordaki taban aritmatiği konuları gibi obeb ve okek konularını da mutlaka matematik derslerimizden hatırlarız. Açıkçası ne ilkokuldayken ne de lisedeyken bu konuyu sevmezdim çünkü gelen soruların hiç birinde bunu obeb yada okek ile çözeceğiniz söylenmediği gibi bunu bulmak için bazen çok komplex düşünmekde gerekebilirdi smiley

Genel olarak hatırlayacak olursak iki sayıyıda bir kağıda yazar yanına uzun bir çizgi çektikten sonra her iki sayının da bölüneceği sayıları bulup bölümlerine bakar ve katlarını sağ tarafa yazardık. Her ikisinin bölündüklerinin çarpımı bize obeb'i, hepsinin çarpımı ise bize okek değerini verirdi.

Bu olayı kodlara dökecek olursak ; okek bulurken her iki sayıyıda 2 den başlamak üzere bu sayının hesaplanacak diğer iki sayının bölümüne bakacağız ve her ikisinin de ortak olarak bölündüğü en küçük sayıyı bulmaya çalışacağız.

Obeb hesaplamasında ise büyük olan sayıyı kendisine ve diğer sayının bölümünden kalanına bakarız, büyük sayıyı birer birer azaltmak koşuluyla her ikisininde ortak olarak bölündüğü bu sayıda bize obeb değerini verecektir.

Başka sitelerde alakasız kodlar bulabilirsiniz, algoritma karmaşıklığı hakkında pek hesaplama yapmasam da verimsiz bir algoritma olduğu söylenemez!
 

Devamı

Java ile Heximal ve Decimal Dönüşümler

By Burak TUNGUT - 21.11.2012 - Kategori Java

Bu makalemde heximal ve decimal sayıları birbirlerine nasıl çevireceğimizi ve 16'lık sayı sistemini öğreneceğiz.

Derste hocamızın bunu yapmamızı istediğin de aslında 2 satırda iki dönüşümüde yapmıştım, Java'nın bize verdiği sınıflar içersinde ki methodlar ile.Fakat bu sınıfların olmayacağı bir ortam düşünürsek ve yaptığımız işin mantığını anlamak istiyorsak bunu öğrenmemiz şart.

Decimal Nedir ?

İngilizce çevirilerden de bakacak olursak decimal'in sözlük anlamı, "ondalık" olarak geçer. Nitekim günlük hayatta kullandığımız sayıların hepsi zaten onluk sisteme aittir. 
Çeşitli dersler de taban aritmatiği konusunu mutlaka hatırlarız, bu konu da onluk sayıları başka taban da ki sayılara ve tam tersi işlemleri yapmayı öğrenmiştik.
 

Heximal Nedir ?

Heximal ise 16'lık sayı sistemine (tabanına) verdiğimiz isimdir. Ancak doğal olarak 10 adet rakamımız var ise geriye kalan 6 adet rakamı nerden bulacağız. İşte bu konuda bize harfler yardımcı olacak.
Kısacası 16 lık sistem, 10 dan sonraki rakamların yerini harflerin aldığı bir sayı sistemidir. Kullanım alanı çok olmamakla beraber aslında temelde kullandığınız bilgisayarlardan, cep telefonlarına özellikle de PIC programlama da entegrasyonlar heximal olarak yapılmaktadır.
Buna en kolay örnek C de yazdığımız bir elektronik devre temelli kodu PIC e aktacağımız zaman kesinlikle sınıfı heximal'e dönüştürmek zorundayız.
 

Devamı

Diziyi Tersine Çevirme (Reverse Array)

By Burak TUNGUT - 21.11.2012 - 2 Yorum - Kategori Java

Bu yazım da bize verilen herhangi bir türde ki diziyi başka bir dizi kullanmadan indisleri yardımıyla tersine çevireceğiz.

Hocamız bu örneği yapmamızı istediğin de ilk aklıma gelen başka bir dizi kullanmaktı fakat bellekten tasarruf ederek başka dizi tanımlamadan da bu işi yapabiliriz.

Neler yapabileceğimizi düşünelim

Yukarıda da belirttiğim gibi bize verilenin haricinde bir dizi tanımlayarak bunu yapmak çok basit, örneğin 5 elemanlı bir dizide 0. indisi 5. indise tanımlayacak şekilde yapabilirdik fakat özellikle de JVM de bellek yönetimini iyi yapabilmemiz şart.
Bu nedenle tek dizi ile bunu nasıl yapabileceğimizi düşünelim.

Eğer yukarıda verdiğim örnek gibi 5 elemanlı bir dizimiz varsa ve direk bunun üzerinde işlem yapacaksak uzunluğumuzun yarısı kadar dönecek bir döngü tasarlayarak baştan x. elemanı sondan x-1. elemanla yerini standart swap algoritmasıyla değiştirebiliriz.
Bunu yaparken dizi uzunluğunun tek sayı olması bizi korkutmasın, çift sayılarda 2 ye tam bölüneceğinden uzunluğun yarısı kadar iş yapılacak, tek olması durumunda ise en ortada ki elemanın zaten yeri değişmeyecektir.  

Devamı

C# ve Java da Foreach Döngüsü

By Burak TUNGUT - 21.11.2012 - Kategori C#

Bu yazımda C# ve Java da foreach döngüsünü küçük bir integer dizi örneği ile açıklayacağım.

Blog yazarken çokta düzensiz yazmak istemiyorum ama elime bir dil kitabını alıp indexi de takip etme taraftarı değilim :) Fakat temel bilgileride bunun gibi araya sıkıştıracağım.
 

Neden Foreach ?

Aslında neden foreach den önce "Nedir Foreach ?" sorusuna cevap verdiğimiz zaman aynı soruya da yanıtı vermiş olacağız zaten.
Klasik bir tanım yapmaktansa aşşağıda kod ile de göstereceğim gibi bir adet integer dizi düşünelim uzunluğu da 3 olsun ve içeriği sırasıyla 1,2,3 sayılarını içersin.

dizi[0] = 1
dizi[1] = 2
dizi[2] = 3

Şimdi kodlar ile dizi de işlem yaparken for kullanmaktansa foreach kullanmanın syntax kolaylığını görmüş olacağız. Fakat her for kullandığımız yer de foreach kullanamayada biliriz :)

C# ve Java için sıralama alfabetik yapılmıştır :)

Devamı
1 2 3 4
Facebook
Son Yorumlar