Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Volkan Atasever
Volkan Atasever
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
8 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: bitarray bitlerine bitsel degeri foreach kadir3 kullanimi oldugu oldugunu programlama return sayesinde sinifinin uzunlugu verdigimiz C# / VC#/.NET Volkan Atasever
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 7.5.2006
Okunma Sayısı : 26406
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 29.3.2024
Turhal Temizer
Mac OS/X Removing CUDA 29.3.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 29.3.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 29.3.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
BitArray Sınıfı, Indeksleyiciler ve Özellikler
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu yazımda sizlere BitArray sınıfının kullanımı ve tanımı hakkında bilgiler vereceğim. Bunu yaparken de C# a yeni başlayanlar için indeksleyiciler ve özellikler kavramına da bir göz kırpacağız. BitArray sınıfı, adından da anlaşıldığı gibi bitlerden oluşan bir koleksiyondur. Bitler bilgisayar dünyasının temelini oluşturduğu ve bu bağlamda hayati bir önem taşıdığı için bir çok uygulamamızda kullanabileceğimiz çok faydalı bir sınıftır. Birden fazla kurucusu mevcuttur isterseniz önce bunlara değinelim.
Constructors (Kurucular) Açıklama
public BitArray(bool[] bims) Burada boolean türündeki dizimiz aynen BitArray koleksiyonumuzun elemanları olur.
public BitArray(byte[] bims) Byte türünden dizimizin uzunluğunun 4 olduğunu varsayarsak bims[0] ilk 8 biti bims[1],bims[2] ve bims[3] sırasıyla diğer 8 bitleri temsil eder. Sonuç olarak 32 biti koleksiyonumuzda barındırmış oluruz.
public BitArray(int[] bims) Aynen byte türünden dizi kabul eden kurucumuzdaki gibi aynı mantıkla çalışır bims[0] ilk 32 biti ve sırasıyla diğer 32 bitlik gruplar koleksiyonumuzun elemanı olarak karşımıza çıkar.
public BitArray(int boyut) Burada direkt olarak sınıfımız içindeki bitlerin sayısını belirleyebiliriz. Not: Ilk değer olarak false atandığını unutmamız gerekir.
public BitArray(int boyut,bool xyz) Burada ise direkt olarak boyutunu verdiğimiz gibi ikinci parametre oalrak verdiğimiz bool türünden değişken sayesinde sınıfımıza ilk değeri otomatik değil bizim kontrolümüz altında istediğimiz seçenek atanır. True veya False.
public BitArray(BitArray bims) bims sınıfımızdaki bitler aynen yeni oluşturduğumuz sınıfta da kullanılacaktır. Unutulmaması gereken bir değer kopyalanması olduğu ve referanslarının aynı olmadığıdır.
Kurucularımızı irdeledikten sonra bir uygulama için gerekli olan diğer silahlarımızı kuşanalım ve bunlarda bu sınıfa ait olan üyelerden metotlarımız olsun. Bildiğiniz gibi metotlar, kurucular, özellikler ve indeksleyiciler bir sınıfın vazgeçilmez araçlarıdır.

Yeni başlayanlar ve dah önceden C ile upraşanlar için Not: Metotların C deki karşılığının Fonksiyon olduğunu belirtmeden geçemeyeceğim aşağıdaki metotları eğer C biliyorsanız fonksiyon mantığıyla düşünmeniz işlerinizi eminim çok rahatlatacak. Yeni bir kavram ve C nin NYP(Nesne Yönelimli Programlama (Ingilizce deyimiyle OOP)) eklenmiş hali olarak görmeniz bir adım daha ileri gitmemiz için bir avantaj kazandırır.

Metodlar Kısa Örnek Açıklama
public BitArray And(BitArray isim) BitArray sınıfında kadir1 kadir2 kadir3 olsun.
kadir3=kadir2.And(kadir3);
kadir2 ile kadir3 bitsel ve ye sokulup kadir3 e atanıyor.
BitArray sınıfından isim adlı nesnenin bitlerine ve bu metodun üstünden kullanılan nesnenin bitlerine bitsel ve uygular ardından tekrar geri dönüş değeri olarak kullanır.
public BitArray Not() kadir3=kadir2.Not(); Fazla üstünde durmaya gerek yok sanırım. Üzerinden çağrılan BitArray sınıfını bitlerinin değilini alır ve geri dönüş değeri de bu sonuç içeren BitArray nesnesidir.
public BitArray Or(BitArray isim)   BitArray And() ten tek farkı bitsel ve yerine bitsel or yapmasıdır.
public BitArray Xor(BitArray isim)   Bu da bitsel Xor yapmaktadır kullanımı BitArray Or() veya And() ile aynıdır.
public bool Get(int indeks)
public void Set(int indeks,bool abc)
  Indeksleyicilerden ve özelliklerde kullanılan get ve set den pek de bir farkı olduğu söylenemez. Get metotumuz BitArray sınıfındaki belirttiğimiz indeks deki biti döndürür. Set ise aynen dediğim gibi indeksini belirttiğimiz bite abc değerini koyar.

Yeni Başlayanlara Için:

Makalemizde bahsedilen indeksleyicilerde veya özelliklerdeki Get ve Set in tanımı şöyleydi; en basit tanımıyla get değer döndürür ve set değer atar. Tabi ki çok daha kullanışlı olduğunu belirtmek isterim kısa bir indeksleyici örneği verirsek: dizi adında bir dizi tanımlandığı farzedilmiştir. value atanan değerdir.
 
public int this[indeks]
{
    get{ return dizi[indeks]; };
    set{ dizi[indeks]=value; };
}
Özellikleri gösteren küçük bir örnek: (deger isminde bir int tipinde alanımız olduğu farzedilmiştir.)

public int isim
{
    get{ return deger; }
    set{ deger=value; }
}
Indeksleyicilere ve özelliklere dair böyle bir noktada ufak bir örnek vermemenin tuzsuz bir çorba yapmaktan pek bir farkı olduğunu sanmıyorum. Indeksleyiciler ve özellikler nesne yönelimli programlama mantığının temellerinden biridir öyle ki nesne üzerinden en azından bir diziye bizim verdiğimiz kurallara göre değer atamak ve değer okumak işi kolaylaştıran bir unsurdur en iyisi örneğimizi verelim. Bu aşamada eminim indeksleyicilerin kullanımı size bir çok şey katacaktır. Örneğimiz:

using System;
using System.Text;

namespace indeksleyiciler
{
    class Program
    {
        static void Main(string[] args)
        {
            indexersinifi ind=new indexersinifi(10);
            Console.WriteLine("Özelliğimiz çalışıyor...");
            Console.WriteLine("Dizinin Boyu"+ind.boyut);

            Console.WriteLine("indeksleyici sayesinde sınıfımızın içindeki dizimiz doluyor...");
            for(int i=0;i<10;++i)
                ind[i]=(i+1)*2;
            Console.WriteLine("Get Eden Bölüm Çalışıyor ve sonuçlar...");
            for(int i=9;i>=0;--i)
                Console.WriteLine("Dizinin "+i+". elemanı "+ind[i]);
        }
    }
    class indexersinifi
    {
        int[] dizi;
   
        public indexersinifi(int aa)
        {
            dizi = new int[aa];
        }

        public int this[int index]
        {
            get{
                return dizi[index];
            }
            set{
                dizi[index]=value;
            }
        }
        public int boyut{
            get{
                return dizi.Length;
            }
        }
    }
}
Programımızın Çıktısı:



Metodlar Açıklama
public void SetAll(bool abc) BitArray sınıfının içerdiği bütün bitlere abc değerini atar. Yukarıda anlatılan set mantığının tek bir bite değil sahip olduğu bütün bitlerine uygulanmış bir varyasyonudur. Bu sınıf içinde ayrıca bir indeksleyici ve bir özellik tanımlıdır (Ingilizce karşılıkları indexer ve properties dir).
object this[int indeks] { get; set; }
ve
public int Length { get; set; }
Not: BitArray, ICollection IEnumerable uygular ve IClonable’ı destekler.
Arayüzlere bu makalemde değinmiyorum. Kısaca teknik özelliklerinden bahsedersek interface anahtar kelimesi ile belirtilir. Metot imzalarını taşır ve sınıflar kalıtım yoluyla bir yada birden fazla arayüz alabilir. C# da eksik olan çoklu kalıtımın bir nevi değişik şekillerden gerçekleştirilmesidir. Bu bilgiler ışığında oluşturulmuş olan C# örneğimiz:

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        byte[] bKadir ={ 67 };
        bool[] bKadir2={true,false,false,true,true,false,true,false};
        BitArray BBitler1 = new BitArray(bKadir2);
        BitArray BBitler2 = new BitArray(8, false);
        BitArray BBitler3 = new BitArray(bKadir);
        BBitler2 = BBitler2.Xor(BBitler3);
        BBitler3=BBitler3.Or(BBitler1);
        BitArray BBitler = new BitArray(BBitler2.Not());

        //indeksleyicinin kullanımı
        BBitler3[1] = false;

        BBitler2.SetAll(true);
        Console.WriteLine("BBitler in son degeri");
        foreach (bool xyz in BBitler)
            Console.Write(xyz + " ");
        Console.WriteLine();
        Console.WriteLine("BBitler1 in son degeri");
        foreach (bool xyz in BBitler1)
            Console.Write(xyz + " ");
        Console.WriteLine();
        Console.WriteLine("BBitler2 in son degeri");
        foreach (bool xyz in BBitler2)
            Console.Write(xyz + " ");
        Console.WriteLine();
        Console.WriteLine("BBitler3 in son degeri");
        foreach (bool xyz in BBitler3)
            Console.Write(xyz + " ");
        Console.WriteLine();
        Console.WriteLine("BBitler in uzunluğu "+BBitler.Length);
        Console.WriteLine("BBitler1 in uzunluğu "+BBitler1.Length);
        Console.WriteLine("BBitler2 in uzunluğu "+BBitler2.Length);
        Console.WriteLine("BBitler3 in uzunluğu "+BBitler3.Length);    
    }
}
Çıktımız ise şöyledir:



Başka bir uygulama olarak int[] dizisi ile bir BitArray sınıfı canlandıralım:

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {

        int[] bKadir ={ 960167 };
        BitArray BBitler1 = new BitArray(bKadir);
        BitArray BBitler2=new BitArray(bKadir);
        BBitler1.Not();
        BBitler2.SetAll(true);
        Console.WriteLine("BBitler1 in son degeri");
        foreach (bool xyz in BBitler1)
            Console.Write(xyz + " ");
        Console.WriteLine();
        Console.WriteLine("BBitler2 in son degeri");
        foreach (bool xyz in BBitler2)
            Console.Write(xyz + " ");

        Console.WriteLine();
        Console.WriteLine("BBitler1 in uzunluğu "+BBitler1.Length);
        Console.WriteLine("BBitler2 in uzunluğu "+BBitler2.Length);
    }
}
Çıktımız ise şöyle:



Gördüğünüz gibi hemen hemen bütün metotları, indeksleyicileri ve özellikleri kullanarak kompleks bir BitArray sınıfı uygulaması yaptık. Kurucu metotların değişik varyasyonlarını da rahatlıkla deneyebilirsiniz. C# ın ve Visual Studio.NET in .Net Framework gibi bir bileşenler yumağıyla oluşturduğu çıkış ve desteklediği geniş çaplı ve yapılabilir hemen hemen her şey sayesinde uygulayabileceğiniz her türlü alt seviyeli programlama içinde uygun bir sınıf. Bana kalırsa robotik deneylerinin de bir nevi vazgeçilmezi.

Değişik kalıplar bulup BitArray dizisinin metotlarını kullanarak ilginç sonuçlar elde edebilirsiniz. C# ın hissettiğine inanmıyorum yani şu intellisense olayına çünkü asıl hisseden sizlersiniz ve bu kalıpları bulup kullanırsanız yapacağınız işlemler o kadar kompleks olacaktır. Unutmayın programlama dilleri ve bu yazıyı okuduğunuza göre C# sizin için ana diliniz gibi olmalıdır. 1 ve 0 mantığı her zaman işe yaramaktadır düşünsenize programcı mantığıyla bir 0 dan 1 elde etmek isteseniz yapacağınız şey bir 0’ın içinde kaç tane 0 olduğunu saymaktır. O halde bu BitArray sınıfının önemini kavramak da bizim için zor olmasa gerek. Siz bir adım öne gidin ve çeşitli atraksiyonlarını uygulayın. Yaptığınız programları da mail adresime yollayabilirsiniz. Herhangi bir soru ve yorum için [email protected] adresinden bana ulaşabilirsiniz.

Yazan: Volkan Atasever
[email protected]
Makale:
BitArray Sınıfı, Indeksleyiciler ve Özellikler C#, Visual C# ve .NET Volkan Atasever
  • Yazılan Yorumlar
  • Yorum Yaz
MAY
8
2006
C ile birlikte olmaya karar veren Volkan ın, çok kısa bir sürede böylesi bir sitede insanlara hizmet vermeye başlaması bu işr birlikte başladığı bir hocası olarak beni çok gururlandırdı. Mutlu etti. Kendisine daha da geleceği ileri programcılar hatta analistler seviyeleri için şimdiden başarılar diliyorum. Ve inanıyorum ki ülkemiz de esaslı bir yazılımcı kazanacaktır.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor