2013/01/26

الدرس الثاني المتغيرات و المعرفات و الثوابت في لغة البرمجة سي شارب.نت C#.net C Sharp.net

الدرس الثاني : تعريف المتغيرات و الثوابت و أنواعها في لغة البرمجة سي شارب.نت C Sharp.net

تعريف المتغيرات و المعرفات Variable and Identifier: 

       المتغيرات في لغة البرمجة هي المساحة التي نحتاجها في الذاكرة لكي نخزن فيها قيمة متغيرة، تستطيع أن تتخيل أن المتغير هو عبارة عن علبة في الذاكرة ،  تحتوي على معلومات مؤقتة يمكن أن نغيرها في أي لحظة . كما يمكنك اعطاء اسم لكل متغير و يجب أن تكون أسماء المتغيرات مختلفة عن بعضها البعض.
variables in C#.net المتغيرات في سي شارب . نت

الطريقة الصحيحة و شروط تسمية المتغيرات في لغة البرمجة سي شارب . نت C#.net C Sharp.net:

عند تعريف أي متغير في لغة البرمجة سي شارب . نت C#.net CSharp.net يجب مراعاة شروط تسمية هذه المتغيرات لكي تتجنب أخطاء البرمجة :
  • يجب أن تختار أسماء ذات معنى ترمز للمتغير نفسه لكي يستطيع أي شخص فهم برنامجك و تستطيع فهم برنامج اذا أردت الإطلاع عليه بعد فترة طويلة ، يفضل أيضا استعمال التعليقات التي سنتحدث عنها لا حقا.
  • لا تبدأ سم المتغير بعلامة التسطير ( _ ) under-scroll  .
  • أسماء المتغيرات حساسة لحالة الأحرف مثلا myName لا يساوي MyNAME .
  • تجنب استعمال الاسماء تختلف فقط في حالة الأحرف فقط لأنها ستختلط عليك بسهولة.
  • من الأفضل أن تبدأ اسماء المتغيرات بحروف صغيرة مثلا age.
  • في المتغيرات ذات اسم يتكون من كلمتين يستحسن بدأ الكلمة الثانية بحرف كبير مثلا familyName.
  • يجب ان لا يكون اسم المتغير من الكلمات المحجوزة في لغة البرمجة سي شارب . نت .

الكلمات المحجوزة في لغة البرمجة سي شارب .نت C#.net C Sharp.net:

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


abstract event new struct
as explicit null switch
base extern object this
bool false operator throw
break finally out true
byte fixed override try
case float params typeof
catch for private uint
char foreach protected ulong
checked goto public unchecked
class if readonly unsafe
const implicit ref ushort
continue in return using
decimal int sbyte virtual
default interface sealed volatile
delegate internal short void
do is sizeof while
double lock stackalloc
else long static
enum namespace string

انشاء المتغيرات التعامل معها في لغة البرمجة سي شارب .نت C#.net C Sharp.net:

   للمتغيرات أنواع تختلف على حسب حاجتك لها ، فهناك متغيرا من نوع أعداد حقيقية و أخرى صحيحة و متغيرات من نوع نص و العديد.

أنواع المتغيرات في لغة البرمجة سي شارب .نت C#.net C Sharp.net:

الأنواع الحجم في الذاكرة مجال الأعداد التي يشملها المتغير
sbyte 8bit -128 الى127
byte 8bit 0 الى 255
short 16bit -32768 الى 32767
ushort 16bit 0 الى 65535
int 32bit -2147483648 الى 2147483647
uint 32bit 0 الى 4294967295
long 64bit -9223372036854775808 الى 9223372036854775807
ulong 64bit 0 الى 18446744073709551615
char 16bit 0 الى 65535
الأنواع الحجم في الذاكرة الدقة مجال الأعداد التي يشملها المتغير
float 32bit 7 ارقام بعد الفاصلة 1.5 x 10-45 الى 3.4 x 1038
double 64bit 15-16 ارقام بعد الفاصلة 5.0 x 10-324 الى  1.7 x 10308
decimal 128bit يحتوي من 28 او 29 رقم و هو أكبر عدد ممكن  1.0 x 10-28 الى 7.9 x 1028


الأنواع  الفائدة من المتغير
String يستعمل في النصوص
Bool يستعمل للعبارات لمنطقية  و له قيمتين إما صحيح أو خاطيء True , False 
object يستعمل لبرمجة الكائنات سنتطرق له بالتفصيل في الدروس القادمة

أولوية المعاملات او العمليات في لغة البرمجة سي شارب .نت C#.net C Sharp.net:

جدول الأولويات حسب الأكبر أولوية من الأعلى الى  الأسفل و من اليمين الى اليسار :
Operators
() [] . new typeof
! ~ + - ++ -- (cast)
* / %
+ -
< <= > >= is as
== !=
&
^
|
&&
||
?:
= *= /= %= += -= &= ^= |= <<= >>=

التعليقات في لغة البرمجة سي شارب .نت C#.net C Sharp.net:

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

مثال على التعليقات و طريقة استخدامها:

ضع هذا الرمز/ مرتين بعد الكود الذي تريد التعليق عليه مثال:

Console.WriteLine("hello");        // هنا يكتب التعليق أكتب ما تشاء كوصف للكود
Console.WriteLine("hello");        //  هذا الكود لإظهار الكلمة  في الشاشة  

 ملاحظة : التعليقات لا تظهر في البرنامج بعد تنفيذه فهي فقط لشرح الكود.

بعض الأمثلة البرمجية عن المتغيرات و التعليقات في لغة البرمجة سي شارب .نت C#.net C Sharp.net:

أولا افتح مشروع جديد ، اذا لا تعرف كبف تفتح مشروع جديد تابع الشرح في  الدرس الأول : مقدمة الى تعلم لغة البرمجة سي شارب.نت c# sharp.net.

ثم طبق معي هذه الأمثلة:

مثال حول برنامج لإظهار الإسم أو أي نص من نوع String .

أكتب الكود التالي داخل البرنامج مثل الدرس الأول:
string myName = "ahmed";
Console.WriteLine("My name is "+myName);
Console.ReadLine();
السطر الأول انشاء متغير جديد اسمه myName من نوع نص أي String  و يجب وضع النصوص دائما بين هذين العلامتين "النص هنا" في حين أن اسماء المتغيرات تكتب بدونها.
لا تنسى كل سطر برمجي ينتهي بعلامة الفاصلة المنقوطة ; .
السطر الثاني يقوم بإظهار النص My name is في الشاشة و يقوم باستبدال المتغير myName بما يساويه و الذي هو في مثالنا هذا ahmed .
استخدمنا علامة +  للجمع بين محتوى المتغير myName و النص الذي كتبناه معا.
السطر الثالث لكي يبقى البرنامج مفتوحا بعد تنفيذه حتى تضغط على مفتاح Enter من لوحة المفاتيح.
بعد اضافة كل الأسطر يصبح البرنامج كالتالي:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string myName = "ahmed";
            Console.WriteLine("My name is "+myName);
            Console.ReadLine();
        }
    }
}

مثال حول برنامج لإظهار العمر أي عدد من نوع int.

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int age=18;
            Console.WriteLine("I have "+age+"years old");
            Console.ReadLine();
        }
    }
}
لدينا في هذا المثال متغير اسمه age يدل على العمر سمه كما تحب مثلا myAge الى آخره ، هذا المتغير من نوع int أي من الأعداد الصحيحة لا توجد به فاصلة.

مثال حول برنامج لإظهار المعدل أو أي عدد يحتوى على فاصلة يكون من نوع Float.

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
           float Mark = 15.6F;
           Console.WriteLine("the averaget is "+average);
           Console.WriteLine("the averaget is {0}",average);  // طريفة اخرى لإظهار في الشاشة
           Console.ReadLine();
        }
    }
}

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

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string yourName;
            int yourAge;
            float yourAverage;

            Console.WriteLine("Enter name:");  // سطر يطلب من المستخدم ادخال الإسم
            yourName = Console.ReadLine();   // قراءة الإسم من لوحة المفاتيح و حفظه في المتغير
            Console.WriteLine("Enter age:");
            yourAge = int.Parse(Console.ReadLine());
            Console.WriteLine("Enter average:");
            yourAverage = float.Parse(Console.ReadLine());
            Console.WriteLine();
            Console.WriteLine("Your name is {0} and you have {1} Years old ",yourName,yourAge);
            Console.WriteLine();
            Console.WriteLine("the average is {0}",yourAverage);
            Console.WriteLine();
            Console.WriteLine("Program Work Perfectly :) Press Enter to exit ");
            Console.ReadLine();

        }
    }

شرح الدالة Console.ReadLine تستعمل لقراءة المدخلات من نوع نص String من لوحة المفاتيح .

لذا عندما نريد ان نقرأ عددا من لوحة المفاتيح و نريد حفظه في متغير رقمي مثلا من نوع int  فيجب اضافة الدالة int.Parse ووظيفتها تحويل المدخلات من نص الى رقم ، بالنسبة لنا نراه نفس العدد لكن لنرى المثال التالي:

string x = "20";

int y = 20;

من المثل السابق فان X لا يساوي Y لأن X من نوع نص و Y من نوع رقمي.و لاستخراج قيمة X كعدد نستعمل الدالة Parse :

string x = "20"; 

int z = int.Parse(x);

int y = 20;

حولنا قيمة X من نص الى رقم و قمنا بتخزينها في المتغير Z ، و بذلك أصبح Z = Y .


و في الأخير أتمنى أن أكون وفقت في الشرح ، فإن أبت فبتوفيق من الله و إن أخطأت فمن نفسي.

و الآن لنفرض أنه طُلب منك برمجة برنامج لأعمار الأشخاص .مع العلم أن البرنامج يجب أن يحسب الأعمار تلقائيا ، مثلا اذا كان عمر شخص ما 10 سنوات في سنة 2013 ففي سنة 2014 يجب أن يظهر في البرنامج أن عمره 11 سنة.

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

-- توضيح بخصوص float هي نوع الأعداد العشرية. أي مثل 5,6    16,99   56,5   كل هذه أعداد عشرية نوعها float . ولا يمكن  أن يكون مثلا العدد  56.5 من نوع int لآن int يقبل الأعداد الطبيعية فقط أي من دون فاصلة و يقبل الأعداد السالبة.

22 تعليقات :

  1. غير معرف27/1/13 19:16

    درس في المستوى ............مشكور اخي على هذا المجهود

    ردحذف
    الردود
    1. ان شاء شاء الله تستفيدوا أكثر فأكثر من الدروس القادمة

      حذف
  2. غير معرف28/1/13 01:19

    baraka allahoo fik akhi

    ردحذف
  3. غير معرف28/1/13 13:54

    baraka allaho fika,we want the next cours plz

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

      حذف
  4. بارك الله فيك

    ردحذف
  5. و فيك بارك الله ^^

    ردحذف
  6. بارك الله فيك اخي على هذا المجهود

    استفدت بشكل كبير لكن مشكلة صغيرة اعتقد ..!!

    مثال حول برنامج لإظهار المعدل أو أي عدد يحتوى على فاصلة يكون من نوع Float.

    يوجد خطأ بسيط في هذا السطر

    Console.WriteLine("the averaget is "+average);

    اعتقد يجب ان يكتب هكذا ..

    Console.WriteLine("the averaget is "+Mark);

    تم الاستفادة من الدرس الاول والثاني وجاري الانتقال للدرس الثالث

    تحياتي اخي العزيز .. ^_^

    ردحذف
    الردود
    1. و فيك بركة أخي الكريم
      هذه طريقة أخرى لكتابة المتغيرات في الجملة .
      أما بخصوص الخطأ فلا يوجد خطأ البرنامج مجرب و يعمل :).
      اما المتغير Mark الذي تحدثت عنه فلم نستعمله في برنامجنا هذا بل استعملنا المتغير youAverage لحساب المعدل.
      لكن يمنك تسميته في برنامجك كما تشاء فهذا مجرد مثال
      اتمنى أني أزلت عنك الغموض.

      حذف
    2. غير معرف19/8/13 08:02

      الاخ عمرو يقصد المثال حول المتغير float وبالفعل هناك التباس.
      مشكور مشكور اخي دروس مفيدة :)

      حذف
    3. تم اضافة توضيح في آخر الموضوع حول float

      حذف
  7. غير معرف20/8/13 17:27

    ihave problem in float

    ردحذف
    الردود
    1. تم اضافة توضيح في آخر الموضوع حول float

      حذف
  8. غير معرف12/9/13 16:24

    thank you teacher

    ردحذف
  9. غير معرف21/12/13 18:38

    شكرا لمجهودك

    ردحذف
  10. غير معرف13/5/14 14:43

    Danke du

    ردحذف
  11. غير معرف26/8/14 14:55

    اولا شكرا ع المجهود
    و احب اشارك معاكم ف الكورس

    ردحذف
  12. غير معرف26/8/14 14:56

    ده تقريبا اللى عرفت اعمله يا رب يكون صح

    int year, yourage, old , result;

    Console.WriteLine("whats your age now");
    yourage = int.Parse(Console.ReadLine());

    Console.WriteLine("what is a year now ");
    old = int.Parse(Console.ReadLine());

    Console.WriteLine("whats a years want ");
    year = int.Parse(Console.ReadLine());

    result = yourage + (year - old);
    Console.WriteLine("Your Age Will be " + result + " after " + (year - old) + " Years");
    Console.ReadLine();

    ردحذف
  13. غير معرف14/5/15 13:14

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    int year;
    int born;
    int age;

    Console.WriteLine("enter year");
    year = int.Parse(Console .ReadLine ());
    Console.WriteLine("enter born");
    born = int.Parse(Console.ReadLine());
    age = year-born ;
    Console.WriteLine("you age is " + age);
    Console.ReadLine();

    }
    }
    }

    ردحذف
  14. جزاك الله خيرا

    ردحذف
  15. using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    //year of birth
    Console.WriteLine("when were you born?");
    int date =int.Parse(Console.ReadLine());
    //current year
    Console.WriteLine("What's the current year?");
    int year = int.Parse(Console.ReadLine());
    int sum = year - date;
    Console.WriteLine("you are " + sum + " years old.");
    Console.ReadKey();

    }
    }
    }

    ردحذف