29 Ağustos 2013 Perşembe

C# : Olasılık Hesabı - 1

          Bir torbanın içinde 60 tane topumuz var. Bunların 10 tanesi kırmızı, 50 tanesi de mavidir. Bu torbanın içerisinden her bir top geri atılmak koşulu ile 5 kez top alınacaktır. Topların kırmızı gelme olasılığı nedir?

İpucu: 5 defa random ile 1 ile 60 arasında bu sayılar dahil olmak üzere sayı seçilecektir. Tabi biz 60 kadar olan sayılardan ardışık 10 sayıyı kırmızı topumuz olarak alacağız(12-21,1-10, vb.)

Kod


Başlıca Yapılanlar:


  • Kırmızı toplarımızın sayısını tutacak bir değişken tanımlıyoruz.
  • rast_sayi adında 1'den 60'a kadar olan sayılardan rastgele bir değer seçmesi için random değişken tanımlıyoruz. 
  • Torbanın içerisinden 5 kez top seçileceği için 5 kez dönen bir for döngüsü tanımlıyoruz.
  • Her bir adımda 1'den 60'a kadar rastgele bir sayı seçilip top değişkenine atılıyor. Kırmızı toplar için belirlediğim 1 ile 10 arasındaki aralıkta olup olmadığı kontrol ediliyor. Eğer ki istenilen aralıkta ise kırmızı topların sayısı 1 artıyor.
  • Sonucumu da kırmızı topların sayısını tutan değişkeni 5' e bölerek olasılığımı hesaplıyorum ve console üzerine yazdırıyorum.
NOT:  Olasılık hesabı olduğu için kodlar her çalıştırıldığında farklı sonuçlar gelecektir.

İpucu:

          Olasılık hesaplarında sonuç 0 ile 1 arasında olduğundan ondalıklı değerler çıkmaktadır. Fakat bizim değerleri tuttuğumuz değişkenler tam sayı türündeki integer değerlerdir. Double ya da ondalık değer yazacak bir değişken türü kullanmadan olasılık hesabımda virgülden sonraki kaç değeri görmek istiyorsam nokta koyup bir o kadar da sıfır koymalıyız. 

Ekran Görüntüsü




11 Ağustos 2013 Pazar

C# : XML Dosyasından Veri Alma


          Visual Studio üzerinde C# ile hazırlayacağımız uygulamalara dışarıdan veri çekmek için kullandığımız yöntemlerden biri de XML dosyasından veri çekmektir. XML dosyasından veri almak için öncelikle XML dosyasının nasıl oluşturulduğunu ve hazırlanan projeler kapsamında nasıl kullanıldığını göreceğiz. Bunun için programlama dersi kapsamında gördüğüm örnek üzerinden XML dosyasının bir proje üzerinde kullanımını göstereceğim.

         Basit bir resimli sözlük uygulaması üzerinden gideceğiz. Öncelikle aşağıdaki şekilde formumuzu tasarlıyoruz.


          Tasarımımızı tamamladıktan sonra projemize Project menüsünden Add New Item seçeneği ile XML File seçeneğini tıklayarak ve isim vererek dahil ediyoruz. Bunu Solution penceresinde.xml uzantılı bir dosya olarak görebiliriz. Fakat oluşturduğunuz bu XML dosyasını debug klasörü içine de kopyalayacağız. Ya da var olan XML leri projemize dışarıdan ekleyerek de kullanabiliriz.


          Karşımıza aşağıdaki şekilde boş bir XML dosyası açılacaktır.


          Sözlükte kullanacağımız her bir kelimenin türkçe, ingilizce ve resim adını kelime adında bloklar adında XML dosyası içerinde gruplayacağız. Kelime blogu adı altında türkçe kelimeleri turkce blogundan, resimlerin isimlerini resim blogu adı altında, ingilizce kelimeleri ingilizce blogu adında toplayacağız.

Not: Bloglar arasında veri eklerken boşlukların da dikkate alındığı unutulmamalıdır. Özellikle de yol belirten verilerin yazımında sorun çıkabilir.


          Projemizde ekli olan bu XML dosyasını kullanmak için projemize XML kütüphanesini dahil edeceğiz.


          XML dosyasını XML kütüphanesinin sınıfları olan  XmlDocument, XmlNodeList sınıfları ile projemizde kullanacağız. XmlDocunent ile XML nesnemizi oluşturuyoruz. XmlNodeList ile de aynı etiketteki blogları tutmak için bir liste oluşturur. Ayrıca kelimelerin gösteriminde listedeki konumunu tutması için global bir sira değişkeni tanımladık.


          Projemizde uygulama çalıştığı anda XML üzerinden işlem yapılacağı için Public Form1( ) blogu içinde yapılması gerekenleri yazacağız. XmlDocunent.Load ile kullanacağımız XML dosyasını belirteceğiz. XmlDocunent.SelectNodes özelliği ile de hangi etiket altındaki blogları kelimeler listesine atayacağımızı belirtiyoruz. Form açıldığında XML dosyası üzerinde yer alan ilk kelime olacağı için buton ile geri alınacak bir kelime olmadığı için geri al butonunu pasif yapıyoruz. XML dosyası üzerinden sıradaki çağrılan  kelimeyi getiren show adında oluşturduğumuz metotu çağırıyoruz.


          XML dosyasındaki verilerin form üzerindeki nesnelere yerleştirilmesi için bir show adında bir metot oluşturduk. Burada yapılanları açıklayacak olursak; daha sonradan ilk ve son kelime olduğunu belirten kontrolümüzü yaptığımız için öncelikle her iki butonumuzu da aktif yapıyoruz. XmlNode sınıfında dugum adında kelime gruplarının bir alt blokları olan resim, turkce ve ingilizce bloklarındaki verileri tutmak için bir değişken oluşturuyoruz. Sırası ile resim, ingilizce, turkce bloklarındaki verileri çekip bunları XmlNode.InnerText komutu ile form üzerindeki atamak istediğimiz nesnelere atıyoruz. Son olarak XML dosyasından çekilen kelimenin ilk ya da son kelime olup olmadığını kontrol eden bir if yapısı ile kontrol yapıyoruz. Kontrol sağlandığında da butonların pasif olmasını sağlıyoruz.


         Ardından ileri ve geri butonlarımızda oluşturduğumuz show metodunu çağrıyoruz. Onun öncesinde geriyse sıramızı azaltıyor ileriyse artırıyoruz ve ona göre XML dosyasındaki indeksini belirliyoruz.
Not: Verileri çekeceğimiz XML dosyasının, kullanacağımız resimlerin debug altında tek bir klasörde bulunmasına dikkat etmeliyiz.


Ekran Görüntüsü


Kodların Tamamı


6 Ağustos 2013 Salı

C de Dizinin En Küçük Elemanını Bulma

Bir dizi şeklinde bize verilen sayılar içinde en küçük elemanı bulmak için şu yolları izleriz:


Öncelikle derleyicimize kullanacağımız diziyi tanımlarız. Burada örnek amaçlı 6 elemanlı bir dizi tanımladık. Daha sonra da döngüde kullanacağımız değişkeni ve minimum elemanı hafızada tutmak için kullanacağımız tampon bir değişken tanımlıyoruz. Diziyi doldurmak için for döngüsü içerisinde gerekli bildirimleri ve elemanları alma işlemlerini yapıyoruz. Kullanıcıdan dizimizi aldıktan sonra ilk elemanı en küçük elemanmış gibi düşünüyoruz. Bu işlemi dizinin herhangi bir elemanı da yapabiliriz fakat  for döngüsü kullandığımız için ilk elemanı minimum gibi düşünüp 1 döngü kâr elde ederiz. Tampon değişkenimize atama yaptıktan sonra kalan tüm diziyi tarama yapmalıyız. Bu kısımda da for döngüsü içerinde if kontrolünü kullanacağız. Kalan her eleman için tampon değişkenimizi karşılaştırıyoruz. Eğer karşılaştırdığımız eleman bizim minimum eleman olarak hafızada tuttuğumuz elemandan –yani min_sayi değişkeninden- küçükse minimum elemanımızı artık değiştirmemiz gerekmektedir. Bu işlemi tüm diziyi tarayarak yaptıktan sonra artık geriye minimum elemanı tuttuğumuz değişkeni ekrana çıktı olarak  yazdırmak kalıyor.

Programın Kodu:


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int dizi[6];
    int min_sayi,i;
    printf("Dizinin elemanlarini giriniz\n");
    for(i=0;i<6;i++){
        printf("Dizinin %d. elemaninini giriniz :\n",i);
        scanf("%d",&dizi[i]);
    }
    min_sayi=dizi[0];
    for(i=1;i<6;i++){
        if(min_sayi>dizi[i]){
            min_sayi=dizi[i];
        }
    }    
    printf("Dizideki minimun eleman %d dir!!",min_sayi);    
    return 0;
}


Ekran Çıktıları:







4 Ağustos 2013 Pazar

C# : Metoda Diziden Veri Alma


          Metotlarda dışarıdan dizi alınarak işlem yapılması gerekebilir. Fakat gerek metot yazımında gerekse bu metodun kullanımında kullanılacak dizinin yazımı normal veri türlerinin yazımına göre farklılık gösterecektir.

         Öncelikle metot üzerinde dizinin kullanımına bakacak olursak metotta kullanılacak diziyi normalde kod kısmında hangi veri türünde olacağını belirterek tanımlıyorsak aynısını burada da yapacağız.


          İçinde dizi içeren metotların kullanımında da sadece dışarıdan alınacak dizinin ismi yazılır.


          Örnek üzerinde bunu göstermemiz anlaşılması bakımında daha verimli olacaktır.

          Öncelikle bir dizinin içerisindeki elemanları karıştıran yani yer değiştiren bir metot yazıyoruz.


İpucu: Dizilerimizi metot içerisinde yer alan for döngüsündeki kullanımı ile karıştırabiliriz. Öncelikle dizi içerisinde var olan değerimizi bir a değişkende tutuyoruz. Ardından bu değişkenimize dizi boyutu neyse o sayıya göre rastgele bir indeks seçecek ve dizimiz o indeksteki diziyi öncesinde atama yaptığımız belirli indeksteki aynı diziye atıyoruz. Tabi seçilen bu rastgele sayımızı da farklı bir b değişkeninde tutuyoruz. b değişkenimize atadığımız sayıyı dizimizin indeksi olarak kullanacağız ve b indeksli dizimize a değişkenimizdeki değeri atayarak takas işlemi yani belirli aynı iki dizin değerinin yer değiştirmesi sağlanacaktır.

          Daha sonra konsol ile kullanıcının 5 tane sayı girmesini istiyoruz ve bu sayıları oluşturduğumuz int türünde bir diziye aktarıyoruz.. Oluşturduğumuz metodu yazarak bu metodun parametresini de girdiğimiz sayıların dizisinin adını kullanacağız. foreach döngüsü ile de karıştırdığımız dizideki değerleri görmek için konsol ekranına yazdırıyoruz.

Kodun Tamamı


Ekran Çıktısı


C# : foreach Kullanımı


         Yazdığımız programlarda yaptırdığımız işlemlerden dolayı dizilerde tuttuğumuz verilerin tümünü kullanıcıya aktarma gereği duyabiliriz. Bu yüzden dizilerdeki tüm verileri sıralamak için foreach kullanılmaktadır. foreach komutu kullanmadan da verilerin ekrana ya da farklı nesnelere aktarılarak sıralanması da mümkündür. Çeşitli program dillerinde sık yapılan işlemler gerek metot gerekse farklı bir özellik olarak sınıflarına eklenmiştir. foreach ise dizelerdeki verilerin sıralanması için geliştirilmiş bir döngüdür.

         foreach yapısının karşımıza çıkan aşağıdaki şekilde bir yapısı vardır:


          var: Yazdıracağımız dizinin hangi veri türünde olursa olsun yazdırılması için kullanılır fakat kullandığımız dizinin türü biliniyorsa var yerine onu belirtmek daha doğru olacaktır.
          collection: Kullanacağımız dizinin adını yazarak kullanılacak dizi belirtilir.
          item: Kullanacağımız dizinin foreach döngüsü içerisinde kullanımında temsili bir isim vermemiz gerekmektedir. 

Örnek Kod Parçası:

          Bu örnek kullanımında string türünde sehir dizinindeki verilerin console üzerinde alt alta yazılmasını sağlayacaktır.

Örnek Kullanımı:


Ekran Çıktısı




2 Ağustos 2013 Cuma

JAVA da döküm(casting) işlemleri

Döküm(Casting) işlemi bir sayıyı kendi tipinden alıp başka bir sayı tipine dönüştürmektir.


  • Bir sayısal tipin değerinin aynı tipten başka bir değişkene  atanması söz konusu olabilir. Burada casting işlemi yapılmaz.

Örnek Kod:

Sayısal tiplerin hafızadan kullandıkları alanları küçükten büyüğe doğru sıralamak istersek:


Byteà short à int àlongàfloatàdouble

Bu sıralamayı göz önünde bulundurursak cast işlemleri ile ilgili şunları söyleyebiliriz:
  •      Okların solunda bulunan tiplerden , sağında bulunan-yani daha yüksek alanlı – tiplere dönüşümü direk atama olarak yapılabilir. Bunda derleyicimiz hata vermez.

Örnek kod


Okların sağında bulunan tiplerden , solunda bulunan-yani daha düşük alanlı – tiplere dönüşümü direk atama olarak yapılamaz.İşte burada devreye döküm(casting) işlemleri giriyor. Bu şekilde olan atamalarda derleyicimiz hata verecektir bu yüzden burada casting işlemi kullanmamız gerekiyor.

Hatalı Kod!!!



Doğru Casting Kodu!!