الثلاثاء، 16 يوليو 2013

دورة الدوت نت الدرس(7):صنع القرار...الجزء الثاني-تكوين الشروط


دورة الدوت نت
الدرس(7):صنع القرار...الجزء الثاني-تكوين الشروط
بسم الله الرحمن الرحيم

 تكوين الشروط (Condition)

 تحدثنا في الفصل السابق عن الجزء الأول من صنع القرار ..ألا وهو الجمل الشرطية.
ا

 وفي هذا الموضوع ان شاء الله سنتحدث عن الجزء المكمل وهو كيف نكتب الشروط...
 وهذا الدرس ابسط من سابقه كثيرا ان شاء الله

 بشكل عام
 الشروط يمكن أن تكون مفردة أو مزدوجة
 كيف ؟
 جميع الحالات السابق كنا نقوم بفحص صحة شرط وحيد فقط لكن ماذا عن التحقق من شرطين أو أكثر ؟
 يمكن وبكل سهولة بواسطة الروابط المنطقية And Or Not ..إلخ
 (تذكر أنك تتحدث مع الحاسوب وهو يفهمك قدر بلاغتك)

 أولا: المعامل(And)
 عندما نريد تطبيق تعليمة مرتبطة بشرطين فيمكننا ذلك عبر المثال التالي:
If Condition1 And Condition2 Then
 Statement
End If
كما نرى فان التعليمة تنفذ ففي حال صحة الشرطين وفشل أحدهما يعطي نتيجة خاطئة لمجمل الشرطين(ارجع لجدول الصحة)
 أي انه بفشل الشرط الأول فالبرغم من صحة الثاني فإن المجمل خاطئي ولا تطبق التعليمة والعكس صحيح
 وبصحة الشرطين فان يكون المجمل صحيح وتطبق التعليمة

Truth Table For (And Logical Operator)
 ________________________________
Condition1-------Condition2-------Result
________________________________
 True-------------True--------------True
 True-------------False-------------False
 False------------True--------------False
 False----------- False------------- False
 ________________________________
ثانيا:المعامل Or
 عندما نريد تطبيق تعليمة مرتبطة بصحة واحد على الاقل من شرطين فاننا نستخدم المعامل Or
 أي أنه يكفي صحة أحد الشرطين فقط لتطبيق التعليمة
 أنظر جدول الصحة الخاص بالمعامل Or
Truth Table For (Or Logical Operator)
 ________________________________
 Condition1-------Condition2-------Result
 ________________________________
 True-------------True--------------True
 True-------------False-------------True
 False------------True--------------True
 False----------- False------------- False
________________________________
كما نرى فان فشل الشرطين معا يؤدي لفشل المجمل بالكامل

 ثالثا: المعامل Not
 عندما مريد تطبيق تعليمة مرتبطة بفشل الشرط نستخدم المعامل Not
 أي أن مجمل الشرط صحيح عندما يكون الشرط داخل Not خاطئ
 انظر جدول الصحة الخاص يالمعامل Not
Truth Table For (Not Logical Operator)
 ____________________
 Condition-------Result
 ____________________
 True-------------False
 False-------------True
 ____________________
رابعا:المعامل AndAlso

 لا تختلف عن المعامل And كثيرا لكن هناك فرق جوهري بينهما
 المعامل And بالرغم من فشل الشرط الأول فانه يتحقق من الشرط الثاني والنتيجة عرفت مسبقا بالفشل وبهذا عملية اضافية لا داعي لها
 المعامل AndAlso عندما يفشل الشرط الأول فانه يتخطى الشرط الثاني معلنا فشل المجمل بالرغم من نتيجة الشرط الآخر

 خامسا:المعامل OrElse
 لا تختلف عن المعامل Or كثيرا لكن هناك فرق جوهري بينهما
 المعامل Or بالرغم من صحة الشرط الأول فانه يتحقق من الشرط الثاني والنتيجة عرفت مسبقا بصحة المجمل وبهذا عملية اضافية لا داعي منها
 المعامل OrElse عندما يتأكد من صحة الشرط الأول فانه يتخطى الشرط الثاني معلنا صحة المجمل بالرغم من نتيجة الشرط الثاني


 مسألة أخيرة:
 هل لاحظت يوما في أحد المصادر الكود التالي:
If x Then statement
فقد راينا أن الشرط هنا لا يحمل معنى المقارنة اذن كيف يتم التحقق من صحة الشرط من فشله
 دعنا نرجع قليلا الى المتغيرات وانواعها: كما نعرف فان هناك متغيرات من النوع Boolean(منطقي)
 والآن أيضا دعنا نركز في الشروط التي شرحناها مسبقا فكل الشروط تخرج بنتيجة True او False
 وهذا ما حدث مع المتغير X فقد تم الاعلان عنه كمتغير منطقي وبهذا تكون قيمته اما True او False(هونها بتهون..!!)
 ===================================
 نرجو ان نكون قد افدناكم
 مع تحياتي .
abdalkader Al-badani
 انتظروا الدرس القادم

الدرس 7- التعامل مع الملفات c#


دورة السي شارب
الدرس 7- التعامل مع الملفات

السلام عليكم ورحمة الله
في درسنا هذا سوف نتعلم التعامل مع الملفات مع مثال صغير يشرح ذلك...


أولا:
خلال تعاملنا مع الملفات أقضل أن نستورد المجال التالي:
System.IO لأنه هو المجال السؤول عن ذلك ولإستيراده كما ذكر سابقا.
.كود:
using System.IO;
والان لنبدأ بصنع مفكرة بسيطة...
أولا قم بوضع 2 TextBox و 1 Button
2- أكتب في الكود الخاص بالحدث Click لل Button ما يلي:
كود:

File.WriteAllText(textBox1.Text, textBox2.Text);
ملاحظة : في حال لم تستورد المجال System.IO سوف يكون عليك كتابة الكود بالشكل التالي
كود:
System.IO.File.WriteAllText(textBox1.Text, textBox2.Text);
وجرب البرنامج واكتب في ال textBox1 عنوان الملف مثلا:
c:\myfolder\mytext.txt
(( في حال إستخدمت هذا العنوان يجب عليك التأكد من وجود مجلد في القرص c يدعى myfolder))

ثم أكتب ما تشاء في ال textBox2 واضغط على ال Button ولاحظ....

لقد تم إنشاء ملف في العنوان المكتوب وكتب به ما كتبت في ال textBox2
لأنه الأمر WriteAllText يقوم بكتابة ملف على الطريقة التالية:كود:
File.WriteAllText("FileURL","MyText");
                      إنشاء المجلدات... ( تأكد أنك مازلت مستورد للمجال System.IO)
لأنشاء مجلد ما نتبع الطريقة التالية:
كود:
Directory.CreateDirectory("c:\\myfolder");
أنتبه,,, في حال كنت تقوم بكتابة الرابط كما في الشكل أعلاه فيجب أن تكتب ال \ على الشكل \\
أو / لأن الحرف \ في لغة ال سي شارب كلمة محجوزة سوف نأخذ إستخداماتها في ما بعد

وللتحقق من وجود ملف ما:

كود:
MessageBox.Show(File.Exists("c:\\myfolder\\fx.txt").ToString());
حيث سوف تعود لنا هذه الدالة بالقيمة true إذا كان موجود و false إن لم يكن...

للتحقق من وجود مجلد ما:

كود:
MessageBox.Show(Directory.Exists("c:\\myfolder").ToString());
وللحذف بالأمر Deleteكود:
Directory.Delete("c:\\myfolder", true);
نلاحظ أننا في قد وضعنا في الإعطاء الثاني القيمة true وتعني أن يتم حذف أيضا كل مافي المجلد
ونفس الأمر بالنسبة للملفات

وأما عن نسخ الملفات فذلك باستخدام الأمر Copy كالتالي:

كود:
File.Copy("FileURL","Copied File URL");

والان سوف نأتي إلى القراءة من ملف....

للقراءة من ملف نصي هناك الكثير من الطرق سوف أتطرق إلى أبسطها وهي باستخدام الأمر ReadAllText

أولا ضع TextBox و Button
2- أكتب في الحدث Click الخاص بال Button ما يلي:
كود:
textBox1.Text = System.IO.File.ReadAllText("C:\\Users\\TD\\Documents\\y.txt");
                    سوف تلاحظ ظهور الكتابة المكتوبة في الملف في ال TextBox
                                         
أرجو أن أجد تفاعل على هذا الدرس كما في الدروس السابقة...
مع تحياتي .abdalkader Al-badaani
وإلى اللقاء في الدرس القادم إن شاء الله...

الاثنين، 15 يوليو 2013

الدرس 6- المصفوفات والتعامل معها وشرح التراكيب Structures


دورة السي شارب
الدرس 6- المصفوفات والتعامل معها وشرح التراكيب Structures
السلام عليكم ورحمة الله

 المصفوفات:
 أولا كيف يتم تعريف المصفوفات:

 1- المصفوفات أحادية البعد:
 يتم تعريف المصفوفات أحادية البعد على الشكل:

كود:
int[] MyArr = new int[50]; 
حيث يكون في الكود هذا لدينا مصفوفة بالأسم MyArr تحوي على 50 حقل حيث يمكنك تعبئت حقولها على الشكل:
كود:
MyArr[0] = 5;
هنا أصبحت الخانة الأولى للمصفوفة = 5

 جرب معي المثال التالي:
 أولا عرف المصفوفة كما فعلنا أعلاه وأبقيها على نفس الإسم ولكن حدد خاناتها ب 5 كالتالي:

كود:
int[] MyArr = new int[5]; 
                            أنتبه هنا الخانة MyArr[5] خارج مجال المصفوفة وذلك لأن العد يبدأ من الصفر
 والان ضع Button وفي الحدث Click الخاص به أكتب:

كود:
int[] MyArr = new int[5];
            MyArr[0] = 1;
            MyArr[1] = 2;
            MyArr[2] = 3;
            MyArr[3] = 4;
            MyArr[4] = 5;
            MessageBox.Show(MyArr[0].ToString() + MyArr[1] + MyArr[2] + MyArr[3] + MyArr[4]); 
ولاحظ...
 قد ظهرت رسالة كتب بها 12345 وذلك لأننا قمنا باستدعاء كل من خانات المصفوفة على التتالي
 بعد تحديد القيمة لكل واحدة منهم...
 مثال: ( هنا سوف نستخدم الحلقة التكرارية for إذا كنت لا تعرفها فقد تم شرحها في الدرس 5)
 ضع Button و TextBox واكتب في الحدث Click لل Button ما يلي:
كود:
int[] MyArr = new int[26];
            for (int x = 0;x < 26;x++)
            {
                MyArr [x] = x;
            }
            foreach (int x in Arr)
            {
                textBox1.Text += " " + x.ToString();
            } 
جرب الكود ولاحظ
 سوف تكون النتيجة أن ال textBox1 أصبح بداخله كالتالي:
 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
 شرح الكود:

 أولا قمنا بتعريف مصفوفة
 ثانيا:
 في حلقة التكرار كان المتغير x يزيد 1 في كل مرة ينفذ فيها الكود
 وكانت الخانة الموافقة للمتغير x في المصفوفة MyArr تصبح تساوي x
 مما سوف يشكل لنا في النهاية أن خانات MyArr سوف تكون من 0 إلى 25
 وهذا ما حصل...

 _____________________ المصفوفات متعددة الأبعاد _____________________________

 يتم تعريف هذا النوع من المصفوفات كالتالي:


كود:
int[,] MyArr = new int[5,5]; 
مثلا بالمصفوفة التي تم تعريفها في الأعلى ( Arr وليس matrix )
 في الواقع هي تحتوي على 25 خانة

 يتم القراءة من المصفوفات عن طريق الحلقة التكرارية foreach
 على الشكل:


كود:
foreach (int x in MyArr)
{
MessageBox.Show(x.ToString());
} 
خصائص المصفوفات:
 Rank : تحدد عدد الأبعاد في المصفوفة
 ToString : تحويل المصفوفة إلى متغير من نوع String كما ورد في الدروس السابقة
 Reverse : تقوم بعكس العناصر التي في داخل المصفوفة
 Sort : ترتيب عناصر المصفوفة
 Length : تحديد طول عناصر المصفوفة


 أظن أنه قد أصبح لديك معلومات جيدة عن المصفوفات والتعامل معها والان لنبدأ بالقسم الثاني من الدرس وهو :
 _____________________________ التراكيب Structures ________________________

 إن ال Structures تسهل كثيرا من العمل في حال كنا نود إضافة كائنات جديدة مثل تعريف نوع بإسم
 (كتاب)
 ملاحظة : لا تكتب ال Structures في داخل أمر ما وإنما تكتب في داخل Classes أو NameSpaces
 يعني سوف نكتب ال Structures:


كود:
namespace WindowsFormsApplication6
{
هنا ممكن
    public partial class Form1 : Form
    {
  هنا ممكن
        public Form1()
        {
            InitializeComponent();
            هنا لا يمكن
        }

        private void button1_Click(object sender, EventArgs e)
        {
هنا غير ممكن
        }
هنا ممكن
    }
} 
وحتى لو كتبتها بعد ما تم إستيراد المجالات ممكن ولو كانت خارج ال NameSpace الخاص بالرنامج !!!

 مثال :

 قم بكتابة struct كالتالي:

كود:
struct Book
    {
       public string BookName;
       public int BookPrice;
       public string BookWriter;
    } 
والان جرب في أمر جديد تعريف متغير ككتاب:

كود:
private void mybooktest()
        {
            Book Mybook = new Book();
            Mybook.BookName = "C# Language";
            Mybook.BookPrice = 200;
            Mybook.BookWriter = "tarek aldwire";
       

والان سوف نرى كيف يمكن إنشاء دوال داخل ال struct

 سوف نأخذ المثال السابق بعد التعديل إنظر كيف سوف يصبح:


كود:
struct Book
    {
       public string BookName;
       public int BookPrice;
       public string BookWriter;
       public void RenameBook(string NewName)
       {
           BookName = NewName;
       }
    } 

حيث هنا أصبح بإمكاننا إعادة تسمية الكتاب...


 إلى اللقاء في الدرس القادم إن شاء الله....