Our social:

Latest Post

30 Aralık 2013 Pazartesi

C# - ListBox'taki değerlerin toplamını ve ortalamasını bulma

C#'ta listbox içindeki sayıların ortalamasını alan programın nasıl yazılacağını anlatacağım.

Yeni bir form oluşturuyorum ve içine bir ListBox ekliyorum.


Şimdi listbox'a birkaç tane eleman ekliyorum.


Bir buton ekliyorum ve butonun click eventına kodları yazmaya başlıyorum.


Öncelikle int türünde toplam adında bir değişken oluşturuyorum. Başlangıç değerini 0 yapıyorum. double türünde de ortalama adında bir değişken oluşturuyorum. ortalama değişkeninin türünün double olmasının sebebi küsüratlı sayı olabilme ihtimali.

int toplam = 0;
double ortalama;

Daha sonra bir for döngüsü oluşturuyorum. Döngü sıfırdan başlayarak listbox'ın eleman sayısına kadar gidiyor.

Eleman sayısını bulmak için listBox1.Items.Count komutunu kullanıyorum.

for (int i = 0; i < listBox1.Items.Count; i++)

Şimdi yapmam gereken döngü içerisinde elemanları tek tek toplam değişkenine eklemek.

listBox elemanlarını alırken listBox1.Items[i] komutunu kullanıyorum.

for (int i = 0; i < listBox1.Items.Count; i++)
            {
                toplam = toplam + Convert.ToInt32(listBox1.Items[i]);
            }

Toplama işlemini gerçekleştirdim. Artık sadece ortalamayı bulmak kaldı.

ortalama = toplam / listBox1.Items.Count;  koduyla ortalamayı buluyorum.

MessageBox.Show("Ortalama : " + ortalama.ToString()); komutuyla da bulduğum ortalamayı gösteriyorum.

Programı çalıştırıp butona tıkladığımda ortalama gösteriliyor.


Kodun tamamı


private void button1_Click(object sender, EventArgs e)
        {
            int toplam = 0;
            double ortalama;

            for (int i = 0; i < listBox1.Items.Count; i++)
            {
                toplam = toplam + Convert.ToInt32(listBox1.Items[i]);
            }

            ortalama = toplam / listBox1.Items.Count;

            MessageBox.Show("Ortalama : " + ortalama.ToString());
        }

24 Aralık 2013 Salı

Java'da asal sayı kontrolü

Java'da textField'a girilen sayının asal olup olmadığını bulan programı yazacağım.

Öncelikle yeni bir JFrame oluşturuyorum. İçerisine aşağıdaki gibi bir tane JTextField, bir tane de JButton koyuyorum.


Şimdi butona çift tıklıyorum ve kodlarımı yazmaya başlıyorum.

İlk olarak textField'dan gelen değeri sayi adında integer değişkene atıyorum.

int sayi = Integer.parseInt(textField.getText());

Yine integer türünde durum değişkeni oluşturuyorum. Başlangıç değerini 0 yapıyorum. durum adlı değişken 0 ise sayı asal değil, 1 ise sayı asal olacak.

int durum = 0;

Şimdi for döngüsünü oluşturuyorum.

for(int i=2;i<sayi;i++)
{
if(sayi%i==0)
{
durum=0;
break;
}
else
{
durum=1;
}
}
if(durum==0)
{
JOptionPane.showMessageDialog(null, "Sayı asal değil.");
}
else
{
JOptionPane.showMessageDialog(null, "Sayı asal.");
}

Programı çalıştırıyorum ve 5 değerini girip butona tıklıyorum.



Görüldüğü gibi Sayı asal mesajıyla karşılaştım.

Kodun tamamı - asalsayikontolu.java dosyası

22 Aralık 2013 Pazar

Java şifre alanı (password field) kullanımı

Bu yazıda Java'da bulunan password field özelliğinin nasıl kullanıldığını anlatacağım. Password field'ları şifre girilen text field'lar gibi düşünebiliriz.



passwordField = new JPasswordField(); komutuyla password field üretmek mümkün.

Font atamak ya da konum bilgilerini değiştirmek vb. işlemler diğer swing bileşenleri ile aynı şekilde gerçekleştirilebilir.

Örneğin

passwordField.setFont(new Font("Tahoma", Font.PLAIN, 13));

koduyla passwordField alanının yazı tipini Tahoma ve boyutunu da 13 yapabiliriz.

Ya da

passwordField.setBounds(267, 159, 140, 31);

koduyla konumunu ve boyutunu ayarlayabiliriz.

Password fieldlarda dikkat edilmesi gereken nokta String türünden şifreyi almaktır.

passwordField.getPassword(); kodunu kullanarak şifreyi char türünden elde edebiliriz.

Ardından da elde ettiğimiz değeri String'e çevirerek istediğimiz gibi kolaylıkla kullanabiliriz.

char[] input = passwordField.getPassword();
String passString = new String(input);  

Yukarıdaki kod passwordField alanından şifreyi alır ve passString adında bir String değere atar.

20 Aralık 2013 Cuma

C# ile MySQL veritabanına kayıt ekleme (insert)

Daha önce C# ile MySQL bağlantısı kurma işlemini anlatmıştım. Şimd de MySQL veritabanına veri ekleme işlemini anlatacağım.

Yeni bir form oluşturuyorum ve form elemanlarımı ekliyorum.


Daha önceki konuda oluşturduğum DB.cs dosyasına gidiyorum ve veri ekleme fonksiyonumu yazıyorum.

public bool veriekle(string adsoyad, string sifre, string sehir)
        {
            try
            {
                baglanti.Open();
                string komut = "insert into kullanicilar(adsoyad,sifre,sehir) values('" + adsoyad + "', '" + sifre + "', '" + sehir + "')";
                MySqlCommand kmt = new MySqlCommand(komut, baglanti);
                kmt.ExecuteNonQuery();
                return true;
                //Veritabanına veriler eklenirse "true" değeri gönderecek
            }

            catch (Exception)
            {
                return false;
                //Veriler eklenmezse "false" değeri dönecek
            }
        }

Fonksiyonu yazdım. Şimdi oluşturmuş olduğum formda butona çift tıklıyorum ve oraya da aşağıdaki kodları yazıyorum.

private void button1_Click(object sender, EventArgs e)
        {
            DB mysql = new DB();
            bool sonuc = mysql.veriekle(textBox1.Text, textBox2.Text, comboBox1.SelectedItem.ToString());

            if (sonuc == true)
            {
                MessageBox.Show("Eklendi");
            }

            else 
            {
                MessageBox.Show("Hata");
            }
        }

DB sınıfından bir nesne türettim ve veriekle fonksiyonuna girilen bilgileri gönderdim.

Şimdi programı çalıştırıyorum.


Bilgileri girdikten sonra Ekle butonuna tıklıyorum.


Görüldüğü gibi program çalışıyor.



Veritabanına da bilgiler eklendi.




17 Aralık 2013 Salı

Ücretsiz MySQL veritabanı - freemysqlhosting.net



Bazen geliştirdiğimiz masaüstü uygulamalarında Localhost yetersiz kalabilir ve uzak sunucuya bağlanmamız gerekebilir. Ben de Java ile bir proje geliştiriyordum ve programın birkaç farklı bilgisayarda kullanılması, tüm kullanıcıların da ortak bir veritabanına erişmesi gerekiyordu.

İlk olarak ihs.com.tr'deki hostingimde bir MySQL veritabanı oluşturdum ve program ile bağlanmaya çalıştım ancak tüm bilgileri doğru girmeme rağmen bağlantı kuramadım. Destek ekibine durumu bildirdiğimde "Mysql veritabanı servislerine uzaktan erişim desteği sağlanamamaktadır."  cevabını verdiler. Ben de bunun üzerine ücretsiz bir MySQL hesabı aramaya başladım ve freemysqlhosting.net'i buldum.

freemysqlhosting.net'e üye olup, 5 MB'lık MySQL hesabına sahip olabilirsiniz. Ufak çaplı projelerinizde veya ödevlerinizde 5 MB kesinlikle yeterli olacaktır. Aynı zamanda hızı ücretsiz olmasına rağmen yeterli seviyede.

Siteye üye olduktan sonra size sunucu linki, veritabanı adı, kullanıcı adı ve şifre bilgilerinizi e-mail yoluyla bildiriyorlar.

phpmyadmin.co adresinden sunucu bilgisi, kullanıcı adı ve şifrenizle giriş yaparak phpMyAdmin de kullanabiliyorsunuz.

Veritabanınıza uzaktan bağlanabilmek için 3306 numaralı portu da açık halde veriyorlar.

sq13.freemysqhosting.net'in size verdikleri host olduğunu düşünürsek bağlanabilmek için sql3.freemysqhosting.net:3306 olarak kullanmanız yeterli.

İyi çalışmalar...

13 Aralık 2013 Cuma

Huffman Kodlama (Veri sıkıştırma yöntemleri)

Huffman kodlama en çok kullanılan veri sıkıştırma yöntemlerinden biridir.

Sembollerin olasılıklarına göre azalan sırada sıralanmasıyla başlar ve aşağıdan yukarıya her yaprakta bir sembol olacak şekilde ağaç oluşturulur.

Her adımda en düşük olasılıklı iki sembol seçilir ve kısmi ağacın tepesine eklenir, listeden silinir ve her iki sembolü de ifade eden tek bir sembolle yer değiştirir.

Listede tek bir sembol kalana kadar devam eder. Sembollerin kodlarını elde etmek için ağaç bir uçtan diğerine dolaşılır.

ÖRNEK


0.4 , 0.2 , 0.1 , 0.2 , 0.1 olasılıklara sahip veriler verilsin.

Yukarıdan aşağıya doğru olasılıkları büyükten küçüğe sıralıyoruz.

Ardından aşağıdan başlayarak toplayarak ilerliyoruz. Alt tarafa 0, üst tarafa 1 diyoruz.

Aynı işlemi a3 ve a4 + a5 in toplamı için yapıyoruz. Yine alt tarafa 0, üst tarafa 1 diyoruz.


Şimdi 0.2 ile 0.4'ü topluyoruz. Burada alt tarafa yani 0.4'ün olduğu tarafa 1, 0.2'nin olduğu tarafa ise 0 diyoruz. Bunun nedeni de 0.4'ün 0.2'den büyük olması.

Son olarak 0.4 ile 0.6'yı topluyoruz. Yine büyük tarafa 1, küçük tarafa 0 veriyoruz.


1.0 sonucuna ulaştık ve toplama işlemlerimiz bitti. Şimdi sıra sembolleri sıkıştırılmış halde ifade etmeye geldi.

Bunu yapabilmek için 1.0'dan ifade etmek istediğimiz sembole giden yolu takip etmemiz gerekiyor.

a1 için

1.0'dan 0 ile doğrudan a1'e gidilebiliyor.

a1 = 0 olur.

a2 için

a2'ye gidebilmek için önce 0.6'ya 1 ile ardından da 0.2'ye 0 ile gidilebiliyor.

a2 = 10 olur.

a3 için

Önce 1 ile 0.6'ya, sonra 0.6'dan 1 ile 0.4'e, son olarak da 1 ile 0.2'ye gidilebiliyor.

a3 = 111 olur.

a4 için

Önce 1 ile 0.6'ya, sonra 1 ile 0.4'e, sonra 0 ile 0.2'ye, son olarak da 1 ile 0.1'e gidilir.

a4 = 1101 olur.

a5 için

Önce 1 ile 0.6'ya, sonra 1 ile 0.4'e, sonra 0 ile 0.2'ye, son olarak da 0 ile 0.1'e gidilir.

a5 = 1100 olur.

12 Aralık 2013 Perşembe

Java - Eclipse'te JUnit testleri ile MySQL bağlantısı kontrolü

Merhaba arkadaşlar. Yazılarımda Java'ya daha fazla yer vermeye karar verdim ve bu yazımda Eclipse'te JUnit test caselerini kullanarak MySQL bağlantısının kurulup kurulmadığını kontrol edeceğim.

JUnit testleri Java'da çok önemli bir yer tutuyor ve Java ile ilgilenen, kendisini geliştirmek isteyen arkadaşların bu konuda kesinlikle bilgi edinmelerini öneriyorum.

İlk olarak yeni bir Java projesi oluşturuyorum. Ardından src klasörüne sağ tıklayıp resimdeki gibi New -> JUnit Test Case menüsünü seçiyorum.


Ardından karşıma gelen pencerede sınıf adını yazıyorum ve Finish butonuna tıklıyorum.


Sınıfım oluşturuldu.


Şimdi sınıfım içinde kodlarımı yazmaya başlıyorum.


Yazdığım satır hata verdi. Bunun nedeni MySQLSinifi adında bir sınıf ve bu sınıfın içerisinde MySQLKontrolFonksiyonu adında bir fonksiyon olmaması.

Bu sorunu çözmek için hata veren satırın solundaki çarpı işaretine tıklıyorum. Karşıma aşağıdaki gibi bir ekran geliyor ve ilk satıra çift tıklıyorum.


Çift tıktan sonra yeni sınıf oluşturma ekranı geliyor. Hiçbir değişiklik yapmadan Finish butonuna tıklıyorum.


Sınıfım oluşturuldu. Şimdi aynı işlemi tekrar yapıyorum ve hata veren satırın solundaki ikona tıklıyorum. Açılan ufak pencerede ilk satıra çift tıklıyorum ve fonksiyon da oluşmuş oluyor.


Bu işlemlerden sonra kodumda hiçbir hata kalmadı.


Şimdi MySQL bağlantısını kurmak için oluşturmuş olduğum MySQLSinifi adlı sınıfa gidiyorum.

http://bilgisayar-muhendisleri.blogspot.com/2013/05/eclipse-java-mysql-baglanti-kurulumu.html adresindeki yazının ilk bölümlerinde yaptığım işlemleri yapıyorum. Yani jar dosyasını projeme ekliyorum.

Artık kodları yazmaya başlayabilirim.

MySQLSinifi adlı sınıfımın içeriği aşağıdaki gibi oluyor.


Herşey tamam. Şimdi sıra test etmeye geldi. MySQLBaglantiKontrolu.java dosyasına sağ tıklıyorum ve Run As -> JUnit Test seçeneğini seçiyorum.





Son resimde görüldüğü gibi MySQL bağlantımda bir sorun yok.

Sorularınızı iletirseniz yardımcı olurum. İyi çalışmalar ...

11 Aralık 2013 Çarşamba

Java - JFrame arkaplan resmi ekleme

Eclipse'te WindowBuilder ile JFrame oluşturma işlemini http://bilgisayar-muhendisleri.blogspot.com/2013/07/eclipse-form-jframe-olusturma.html linkindeki yazıda anlatmıştım. Bu yazıda JFrame'in arkaplanına resim eklemeyi anlatacağım.

JFrame çalıştırdığımda normalde aşağıdaki gibi bir pencere açılıyor.


Şimdi kod kısmına gidiyorum.

getContentPane().setLayout(new BorderLayout());
JLabel background = new JLabel(new ImageIcon("C:\\Users\\KullanıcıAdı\\Pictures\\arkaplan.jpg"));
getContentPane().add(background);
background.setLayout(new FlowLayout());

Kodunu sayfama ekliyorum.


Şimdi tekrar çalıştırıyorum.


Görüldüğü gibi arkaplan resmi atamayı başardım.

10 Aralık 2013 Salı

Asp.NET CssClass özelliği ve kullanımı

Bu yazıda Asp.NET'te CssClass özelliğini kullanarak sayfamıza eklediğimiz button, textbox gibi kontrolleri CSS kodları yardımıyla görsel açıdan daha güzel hale getirmeyi anlatacağım.

HTML'de nasıl ki inputlar için class parametresini kullanıyorsak, Asp.NET'te de CssClass parametresini kullanıyoruz.

Default.aspx adında bir sayfa oluşturalım ve sayfamıza bir adet textbox ekleyelim.

Kod kısmına baktığımızda

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> şeklinde bir kod görüyoruz.

CssClass="tb" kodunu ekliyorum.

<asp:TextBox ID="TextBox1" CssClass="tb" runat="server"></asp:TextBox>

Sayfamın <title></title> etiketlerinin altına

<style>
        .tb {
            background-color: gray;
            background-image: url(arama.png);
            background-repeat: no-repeat;
            background-position: 5px;
            height: 25px;
            border: 1px solid red;
            padding-left: 35px;
            color: white;
        }
 </style>

kodunu yazıyorum.

Sayfayı tarayıcıda açtığımda aşağıdaki gibi CSS kodlarıyla düzenlenmiş textbox ile karşılaşıyorum.