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
Ahmet Faruk Nacaroğlu
Ahmet Faruk Nacaroğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
40 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:  C# / VC#/.NET Ahmet Faruk Nacaroğlu
 
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 : 17.6.2003
Okunma Sayısı : 45075
Yorum Sayısı : 0     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 30.4.2024
Turhal Temizer
Mac OS/X Removing CUDA 30.4.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 30.4.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 30.4.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
C#'da Sıra (Queue) Sınıfı ve kullanımı
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bir önceki yazımızda genel olarak yığın (Stack) veri yapısının çalışma modeline ve C#'ta kullanabileceğimiz yığın sınıfını ve bu sınıfın metodları üzerinde durmuştuk. Şimdi burada ise, diğer önemli veri yapısı olan sıra (queue) veri yapısını inceleyeceğiz. Queue veri yapısının mantığını anladıktan sonra .NET sınıf kitaplıklarında bulunan Queue sınıfını öğreneceğiz.

Queue veri tipi ve .NET'in sınıf kütüphanesinde bulunan Queue sınıfı, yığın (stack) sınıfına çok benziyor. Bu veri tipleri çalışma mantığı olarak tam tersi gibi görünmelerine rağmen bir çok metodları ve özellikleri birebir örtüşüyor. Bu durumda birazdan okayacağınız makalenin formatı yığın makalemizdekine çok benzediğini göreceksiniz.
1. Queue(sıra) veri Yapısının Çalışma Şekli

Sıralar (queue) İlk Giren İlk Çıkar (FIFO) prensibi ile çalışan veri yapısı şekinde bilinirler. Bir sıraya ilk giren eleman ilk olarak çıkar. Sıralara örnek olarak bir markette alışverişini yapan müşterilerin, aldıkları ürünlerin ücretlerini ödemek için kasada sıraya geçmeleri verilebilir. Marketteki sırada sıraya ilk giren müşterinin işi ilk önce biter. Daha sonra ikinci ve üçüncü müşterilerin işleri yapılır.

Sıralar bilgisayar programlamada sık sık başvurulan veri yapılarıdır. Mesela, işletim sisteminde yapılması gereken işleri bir sıra veri yapısı ile tutarız. Herhangi bir anda yeni bir iş geldiği zaman bu iş sıraya (Queue) girer. Sırası gelen iş yapılır ve sonraki işe geçilir gibi. Queue veri yapıları ayrıca simulasyonlarda da sık sık kullanılır.

2. .NET Sınıf Kütüphanesi Sıra Sınıfı (Queue)

.NET sınıf kütüphanesinde sıra veri yapısını kullanmak için Queue sınıfını kullanırız. NET'in yığın (Stack) sınıfını kullanmak için pogram kodunun baş tarafına using System.Collections; eklememiz gerekir. Yani sıra sınıfı System.Collections isim alanında bulunuyor.

C# veya herhangi bir dilde yazılan yığın veri yapılarında Enqueue(), Dequeue, Peek(), Clear() fonksiyonları ve Count, özelliği vadır. Bunların yanında Clone(), CopyTo(), ToArray(), Contains() ve Equals() metodları .NET'in yığın sınıfında yeralır.

Sıra sınıfının Enqueue() metodu sıraya yeni bir eleman ekler. Dequeue() metodu ile yığının en öndeki elemanı sıradan siler ve silinen elemanı geriye dönderir. Eğer sıranın tepesindeki elemanı öğrenmek istersek Peek() medotunu işimize yarar. Bu metod sıranın başındaki nesneyi dödürür ama bu nesneyi sıradan silmez.

using System;
using System.Collections; // Queue sınıfı bu isim alanı içinde bulunur.

class Sira_Ornek1
{

   public static void Main()
   {

      // Queue sınıfından bir nesne oluşturalım:
      Queue sira = new Queue();

      // Nesnemize Enqueue metodu ile değerler girelim:
      sira.Enqueue("Ahmet");
      sira.Enqueue("Ferit");
      sira.Enqueue("Hasan");
      sira.Enqueue("Hüseyin");

      // sira isimli nesnemizin eleman sayısı:
      Console.WriteLine( "\n sira nesmemizin eleman sayısı: " + sira.Count);

      // sira isimli nesnemizin elemanları:
      Console.WriteLine( "\n sıra nesmemizin elemanları: " );
      DegerleriYaz( sira );

      //sira isimli nesmemizden bir eleman alalım:
      string eleman= (string)sira.Dequeue();
      Console.WriteLine(" \n Sıramizin başından şunu aldık: " + eleman);

      //şimdi ise siranin en başındaki nesneyi öğrenelim.
      // Ama onu ıiradan çıkartmayacağız:
      eleman= (string)sira.Peek();
      Console.WriteLine(" \n Sıramızın başındaki eleman " + eleman);

   }

   public static void DegerleriYaz( IEnumerable kolleksiyon )
   {
      System.Collections.IEnumerator Enum = kolleksiyon.GetEnumerator();

      while ( Enum.MoveNext() )
         Console.Write( "\t{0}", Enum.Current );

      Console.WriteLine();
   }
}

Yukarıdaki örnek programda önce Queue sınıfından sıra isimli bir nesne oluşturuyoruz. Sonraki altı satırda sıramıza "Ahmet", "Ferit", "Hasan", ve "Hüseyin" değerlerini Enqueue metodu ile ekliyoruz. Degerleri() ismini verdiğimiz static fonksiyonumuz ile sıramızdaki eleman sayısını ve elemanları ekrana yazdırıyoruz. Daha sonra sıramızdan bir tane elemanı Deuque() metodu yardımıyla alıyor ekrana yazdırıyoruz. Programın son kısmında ise Peek() metodunu kullanrak sıranın en üstündeki elemanın ne olduğunu öğreniyoruz ve bu eleman sırada kalıyor.

Sıra sınıflarında bulunan diğer iki temel fonksiyonlar olan Count özelliği ve Clear() metodlarıdır. Bunlardan Count, sıra nesnesinde bulunan elemanların sayısını geriye dönderen bir özelliktir. Özellikler C# dilinde sınıflarda bulunan üye değişkenlerin değerlerini öğrenmemize ve onların değerlerini değiştirmemize yarayan bir tür fonksiyonlardır. Count özelliği eleman sayısını int tipinde dönderir ve sadece okunabilen (readonly) yapıdadır. Özellikler program içinde çağrılırken parantezleri kullanmayız. Eğer sırayı boşaltmak/temizlemek istersek Clean() metodu işimizi yarayacaktır. Clean() metodu hiçbir parametre almaz ve hiçbirşey döndermez. Herhangi bir sıra nesnesinin içinde bir elemanın olup olmadığını anlamak için Contains() metodu kullanılır. Bu metod aranacak nesneyi alır ve geriye true veya false değerlerini dönderir. İsterseniz aşağıdaki programda Contains() ve Clear() metodları ile Count özelliklerini nasıl kullanabileceğimizi görelim:

using System;
using System.Collections; // Queue sınıfı bu isim alanı içinde bulunur.

class Sira_Ornek2
{

   public static void Main()
   {

      // Queue sınıfından bir nesne oluşturalım:
      Queue sira = new Queue();

      // Nesnemize Enqueue metodu ile değerler girelim:
      sira.Enqueue(12);
      sira.Enqueue(3);
      sira.Enqueue(18);
      sira.Enqueue(7);
      sira.Enqueue(20);

      // sıra isimli nesnemizin eleman sayısı:
      Console.WriteLine( "\n sira nesmemizin eleman sayısı: " + sira.Count);

      // sira isimli nesnemizin elemanları:
      Console.WriteLine( "\n sıra nesmemizin elemanları: " );
      DegerleriYaz( sira );

      //Contains metodunun kullanımı:
      int sayi=7;

      if(sira.Contains(7))
         Console.WriteLine("Sıramızda " + sayi + " var.");
      else
         Console.WriteLine("Sıramızda " + sayi + " yok.");

      // sıramızın içindeki elemanları silelim:
      sira.Clear();

      // Sıramızı temizledikten sonra kaç tane
      //eleman bulunduğunu bulup yazalım.
      int elemanSayisi= sira.Count;

      Console.WriteLine("\n Sıramizda şu anda {0} tane eleman vardır.", elemanSayisi);

   }

   public static void DegerleriYaz( IEnumerable kolleksiyon )
   {
      System.Collections.IEnumerator Enum = kolleksiyon.GetEnumerator();

      while ( Enum.MoveNext() )
         Console.Write( "\t{0}", Enum.Current );

      Console.WriteLine();
   }
}

Yığında makalemiz Clone(), ToArray() ve Equals() metodlarının aynıları Queue sınıfı içinde bulabiliriz. Sizlerin yığın makalesindeki en son örneğini sıra veri tipi için de yazıp kendinizi denemenizi tavsiye ederim. Herkese iyi çalışmalar.

Makale:
C#'da Sıra (Queue) Sınıfı ve kullanımı C#, Visual C# ve .NET Ahmet Faruk Nacaroğlu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
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