‏إظهار الرسائل ذات التسميات advance-csharp. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات advance-csharp. إظهار كافة الرسائل

برمجة متقدمة سي شارب القائمة المرتبة C# - SortedList Class

 القائمة المرتبة C# - SortedList Class

برمجة متقدمة سي شارب القائمة المرتبة C# - SortedList Class

ماهي القائمة  المرتبة؟

القائمة المرتبة تمثل مجموعة من زوج يحتوي على القيمة value والمفتاح key ويمكن الوصول اليها بالفهرس أو المفتاح.القائمة المرتبة هي مزيج بين جدوال التجزئة والمصفوفات في حال استخدمت الفهرس للوصول الي عناصرالقائمة المرتبة  فهي اذن مصفوفة قائمة وفي حال استخدمت المفتاح للوصول لعناصر القائمة المرتبة فهي اذن جدول التجزئة.


دوال وخصائص القائمة المرتبة

اولا خصائص القائمة المرتبة

الخاصيةالوصف
Capacityكتابة او قراءة سعة القائمة المرتبة
Countقراءة عدد العناصر التي تحتويها القائمة المرتبة
IsFixedSizeقراءة القيمةالتي تشير هل القائمة المرتبة ذات حجم ثابت
IsReadOnlyقراءة القيمةالتى تشير هل ان القائمة المرتبة للقراءة فقط
Itemقراءة وكتابة القيمة المرتبطة مع المفتاح المحدد  في القائمة المرتبة
Keysقراءة المفاتيح في القائمة المرتبة
Valuesقراءة القيم في القائمة المرتبة

دوال القائمة المرتبة

التسلسلالدالة والوصف
1public virtual void Add( object key, object value ); اضافة عنصر حسب المفتاح والقيمة المعطاة الى القائمة المرتبة
2public virtual void Clear(); حذف كل العناصر من القائمة المرتبة
3public virtual bool ContainsKey( object key ); تحديد اذا ماكانت القائمة المرتبة تحتوي على المفتاح المحدد ام لا
4public virtual bool ContainsValue( object value ); تحديد إذا ماكانت القائمة المرتبة  تحتوي على القيمة المحددة
5public virtual object GetByIndex( int index ); قراءة القيمة حسب الفهرس المعطى في القائمة  المرتبة
6public virtual object GetKey( int index ); قراء قيمة المفتاح حسب الفهرس المعطى في القائمة المرتبة
7public virtual IList GetKeyList(); 
قراءة المفاتيح في القائمة المرتبة
8public virtual IList GetValueList(); قراءة القيم في القائمة المرتبة
9public virtual int IndexOfKey( object key ); تعيد قيمة صفر اعتماد على اساس الفهرس لقيمة المفتاح المحدد القئمة المرتبة
10public virtual int IndexOfValue( object value ); تعيد قيمة صفر اعتماد على اساس الفهرس لاول قيمة يجدها للقيمة المحدد في القائئمة المرتبة
11public virtual void Remove( object key ); ازالة العنصر حسب قيمة المفتاح الممرر في القائمة المرتبة
12public virtual void RemoveAt( int index ); ازالة العنصر حسب قيمة الفهرس المرر للقائمة المرتبة
13public virtual void TrimToSize(); تحديد سعة العناصر حسب الرقم في القائمة المرتبة

مثال على القائمة المرتبة

using System;
using System.Collections;

namespace CollectionsApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         SortedList sl = new SortedList();

         sl.Add("001", "Zara Ali");
         sl.Add("002", "Abida Rehman");
         sl.Add("003", "Joe Holzner");
         sl.Add("004", "Mausam Benazir Nur");
         sl.Add("005", "M. Amlan");
         sl.Add("006", "M. Arif");
         sl.Add("007", "Ritesh Saikia");

         if (sl.ContainsValue("Nuha Ali"))
         {
            Console.WriteLine("This student name is already in the list");
         }
         else
         {
            sl.Add("008", "Nuha Ali");
         }

         // get a collection of the keys. 
         ICollection key = sl.Keys;

         foreach (string k in key)
         {
            Console.WriteLine(k + ": " + sl[k]);
         }
      }
   }
}

ناتج مثال القائمة المرتبة

001: Zara Ali
002: Abida Rehman
003: Joe Holzner
004: Mausam Banazir Nur
005: M. Amlan 
006: M. Arif
007: Ritesh Saikia
008: Nuha Ali







Ahmed Ata Almahallawi
Freelancer
IT Help Desk,
SEO Expert ,PHP,C#,ASPX,SQL
Al alami st
gaza -jabaliaGaza Strip
Palestine
DOB: 05/10/1984
20/1/2014

برمجة متقدمة سي شارب المجموعات أو التجميعات C# - Collections

 المجموعات أو التجميعات C# - Collections

برمجة متقدمة سي شارب المجموعات أو التجميعات C# - Collections

ماهي المجموعات أوالتجميعات؟

المجموعات أو التجميعات هي عبارة عن فئات خاصة تستخدم لتخزين واستعادة البيانات. وهذه الفئات تدعم كل من المكدسات والطوابير والقوائم وتجزئة الجداول. ومعظم فئات المجموعات تقوم بتنفيذ نفس الواجهة.
والمجموعات أو التجميعات تستخدم للوصول الى مواقع الذاكراة الديناميكية والوصول لعناصر القائمة اعتمادا على اساس الفهرس.
والى اخره من الاستخدمات.
وهذه المجموعات تنشء مجموعة من الكائنات لمجموعة من الفئات وهي أساس لكل أنواع البيانات في السي شارب.

أنواع فئات المجموعات أو التجميعات واستخدامها

جميع فئات المجموعات أو التجميعات  تستخدم فضاء الاسماء system.collections .

الفئةوصف واستخدام المجموعات
ArrayList
تمثل لمجموعة مرتبة لكان يمكن فهرسته فردا فرد
وهي في الاساس بديل للمصفوفات ومع ذلك في لا تشبه المصفوفات حيث يمكنك اضافة وحذف العناصر من القائمة في  الموقع المحدد باستخدام الفهرس وحيث المصفوفة تقوم بتغير حجم المصفوفة بنفسها تلقائيا.كما أنها تسمح بتخصيص المساحة في الذواكر الديناميكية وتضيف وتبحث وترتيب العناصر في القائمة.
Hashtable
تستخدم مفتاح للوصول للعناصر في المجموعات
الجدول المجزء يستخدم عندما نجناتج للوصول للعناصر باستخدام المفتاح وبامكانك تعريف قيمة مفتاحية تستخدمها.وكل عنصر في الجدول المجزء له زوج من المفتاح وقيمته.حيث المفتاح  يستخدم للوصول للمجموعة
SortedList
تستخدم المفتاح مثلما يستخدم الفهرس للوصول لعناصر القائمة
القائمة المرتبة هي عبارة عن تركيب أو خليط من المصفوفات وجداول المجزئة. تحتوي على قائمة من العناصر التي يمكن الوصول اليها بالمفتاح أو الفهرس . إذا أردت الوصول للعناصر بواسطة الفهرس فانه يستخدم مصفوفات القوائم وفي حال استخدم المفتاح للوصول للعناصر فانه يستخدم جدول التجزئة.دائما يتم ترتيب العناصر بواسطة قيمة المفتاح
Stack

انها تمثل الداخل أخيرا خارج أولا لكائن المجموعة ويعرف بالمكدس


تستخدم عندما نحتاج للوصول لعناصر نريدها الداخل أخيرا خارج  أولا.وعندما نحتاج أضافة عنصر فانها تسمى 
PUSHING
وعندما نريد حذف عنصر تسمى
popping

Queue
الطابور ويمثل الداخل أولا خارج أخيرا  لكائن المجموعة

تستخدم عندما نحتاج للوصول لعناصر الداخل أولا خارج أخير . عندما تستخدم لاضافة عنصر في القائمة فانها تستدعي 
enqueue
وعندما تريد حذف عنصر تستدعي
deque

BitArray
مصفوقة البث هي مصفوفة تمثل بالنظام الثنائي أما بقيمة 0 أو 1

تستخدم عندما تريد تخزين البثات وانت لا تعرف عدد البثات عموما. يمكنك الوصول للعناصر مصفوفة البتات للمجموعة باستخدام الفهرس العدد الصحيح ويبدا من الصفر














Ahmed Ata Almahallawi
Freelancer
IT Help Desk,
SEO Expert ,PHP,C#,ASPX,SQL
Al alami st
gaza -jabaliaGaza Strip
Palestine
DOB: 05/10/1984
18/1/2014

برمجة متقدمة سي شارب الأحداث C# - Events

برمجة متقدمة سي شارب الأحداث C# - Events

ماهي الاحداث؟

الاحداث هي تفاعل المستخدم مع الحاسوب أو البرنامج. فالضغط على لوحة المفاتيح يسمى بحدث الضغط . تحريك الفارة يسمى بحدث تحريك الفارة.فاي شيء من العتاد الحاسوبي الذي يمكن للمستخدم التفاعل معه ومع برنامج يسمى بالاحداث لانه نتيجة ذلك يتم وقوع الحدث وعلى سبيل المثال في حدث الضغط على مفاتيح لوحة المفاتيح نجد ان المستخدم قام بالحدث وهو الضغط وهناك حدث عكسه وهو رفع الضغط عن المفاتيح.
برمجة متقدمة سي شارب الأحداث C# - Events


استخدام التفويض مع الاحداث

يصرح عن الاحداث وتطلق من الفئة بالتعاون مع مقبض الحدث event handler باستخدام التفويض اما من داخل الفئة نفسها او فئات اخرى.

 الفئة التي تحتوي على الحدث تستخدم لنشر الحدث تسمى بالفئة الناشرة publisher class. والفئة التي تستخدم الحدث تسمى بالفئة المشتركة subscriber. الاحداث تستخدم النموذج الناشر المشترك. 

الناشر عبارة عن كائن يحتوي على الاحداث والتفويضات. تفويض الحدث المساعد ايضا يعرف داخل الكائن. الفئة الناشرة تستدعي الحدث وتعلم الكائنات الاخرى.
المشترك عبارة عن كائن يستقبل الحدث وهو يزود بمقبض الحدث . التفويض في كائن الناشر يقوم باستدعاء مقبض الحدث من كائن المشترك.

الاعلان أو التصريح عن الاحداث

للتصريح عن الاحداث اولا يجب التصريح عن التفويض ونوعه والباراميتر الذي يمرره اي بمعنى يطابق الحدث او الاحداث.

التصريح عن التفويض للحدث.


public delegate void BoilerLogHandler(string status);

التصريح عن الاحداث باستخدام الكلمة المحجوزة event

//تعريف حدث مبني على التفويض السابق
public event BoilerLogHandler BoilerEventLog;

مثال الاول على الاحداث

using System;
namespace SimpleEvent
{
   using System;

   public class EventTest
   {
      private int value;

      public delegate void NumManipulationHandler();

      public event NumManipulationHandler ChangeNum;

      protected virtual void OnNumChanged()
      {
         if (ChangeNum != null)
         {
            ChangeNum();
         }
         else
         {
            Console.WriteLine("Event fired!");
         }

      }
      public EventTest(int n )
      {
         SetValue(n);
      }
      public void SetValue(int n)
      {
         if (value != n)
         {
            value = n;
            OnNumChanged();
         }
      }
   }
   public class MainClass
   {
      public static void Main()
      {
         EventTest e = new EventTest(5);
         e.SetValue(7);
         e.SetValue(11);
         Console.ReadKey();
      }
   }
}

ناتج مثال الاول على الاحداث

Event Fired!
Event Fired!
Event Fired!


مثال الثاني على الاحداث

using System;
using System.IO;

namespace BoilerEventAppl
{

   // boiler class
   class Boiler
   {
      private int temp;
      private int pressure;
      public Boiler(int t, int p)
      {
         temp = t;
         pressure = p;
      }

      public int getTemp()
      {
         return temp;
      }
      public int getPressure()
      {
         return pressure;
      }
   }
   // event publisher
   class DelegateBoilerEvent
   {
      public delegate void BoilerLogHandler(string status);

      //Defining event based on the above delegate
      public event BoilerLogHandler BoilerEventLog;

      public void LogProcess()
      {
         string remarks = "O. K";
         Boiler b = new Boiler(100, 12);
         int t = b.getTemp();
         int p = b.getPressure();
         if(t > 150 || t < 80 || p < 12 || p > 15)
         {
            remarks = "Need Maintenance";
         }
         OnBoilerEventLog("Logging Info:\n");
         OnBoilerEventLog("Temparature " + t + "\nPressure: " + p);
         OnBoilerEventLog("\nMessage: " + remarks);
      }

      protected void OnBoilerEventLog(string message)
      {
         if (BoilerEventLog != null)
         {
            BoilerEventLog(message);
         }
      }
   }
   // this class keeps a provision for writing into the log file
   class BoilerInfoLogger
   {
      FileStream fs;
      StreamWriter sw;
      public BoilerInfoLogger(string filename)
      {
         fs = new FileStream(filename, FileMode.Append, FileAccess.Write);
         sw = new StreamWriter(fs);
      }
      public void Logger(string info)
      {
         sw.WriteLine(info);
      }
      public void Close()
      {
         sw.Close();
         fs.Close();
      }
   }
   // The event subscriber
   public class RecordBoilerInfo
   {
      static void Logger(string info)
      {
         Console.WriteLine(info);
      }//end of Logger

      static void Main(string[] args)
      {
         BoilerInfoLogger filelog = new BoilerInfoLogger("e:\\boiler.txt");
         DelegateBoilerEvent boilerEvent = new DelegateBoilerEvent();
         boilerEvent.BoilerEventLog += new 
         DelegateBoilerEvent.BoilerLogHandler(Logger);
         boilerEvent.BoilerEventLog += new 
         DelegateBoilerEvent.BoilerLogHandler(filelog.Logger);
         boilerEvent.LogProcess();
         Console.ReadLine();
         filelog.Close();
      }//end of main

   }//end of RecordBoilerInfo
}

ناتج مثال الحدث

Logging info:

Temperature 100
Pressure 12

Message: O. K


Ahmed Ata Almahallawi
Freelancer
IT Help Desk,
SEO experience,PHP,C#,ASPX,SQL
Al alami st
gaza -jabaliaGaza Strip
Palestine
DOB: 05/10/1984
by +Ahmed Almahallawi 
12/1/2014