مشاركة: الكامل في السي شارب
أحب أقول لكم إخواني والله (( ولا أقسم عبثاً ))
أنكم لن تجدوا أحد يعلمكم السي شارب مثلي أبداً لأني أتلقاه من أبرع وأول إنسان عربي يحصل على ثلاث شهادات خبرة من مايكروسوفت وأول إنسان عربي يحصل على شهادة التميز في لغة السي بلس بلس وأنا حالياً آخذ منه السي شارب
وأحاول أعصره لأنوا يمتلك خبرة عالية جداً إسمه (( معن الجيتاوي ))
إذا حد بحب يتأكد من أقوالي ...
إنتظروا الدرس القادم ...
مشاركة: الكامل في السي شارب
المحاضرة الثانية :
الأربعاء 16 – 2 - 2005
مفهوم وفلسفة البرمجة هدفية الغرض ( الكائنية ) Object Oriented ( OOP ) :
- كما قلنا وتحدثنا سابقاً في المحاضرة الأولى من أنه لا بد من وجود معيار ومقياس لبرمجة وكتابة الكود من طرف المبرمجين ولنخرج جيل ذو خبرة عالية ومرونه وسهولة . وبسبب هذه الفلسفة ظهر ما يعرف ببرمجة الكائنات الموجهه Object Oriented ( OOP ) والتي تستند إلى إستخدام المكتبات Library وإستخدام الدوال Function والتي عرفناها قبل ذلك بالبرمجة التركيبية Structured Programming والتي ظهر مفهوم البرمجة بواسطة الكائنات الموجهه على إثرها .
- والآن ما معنى البرمجة الموجهه بالكائنات وكيف نستطيع الحكم على لغة بأنها OOP أو لا ؟
- قبل أن أبدأ أريد أن أسرد لكم نهفة سريعة حدثت مع معلمي الأستاذ (( معن الجيتاوي )) فعندما كان يشتغل في شركة WinWord الموجودة هنا في الأردن والتي تعتبر رقم 1 في الشركات البرمجية والتي بواسطتها تم إدخال علم الحاسوب ونظم المعلومات الحاسوبية في المدارس والجامعات . وبصفته Project Manager في تلك الشركة جاءه شخص من شركة IBM الرائدة في عالم الحاسوب . وأراد أن يسأله وكونه ذو الخبرة العالية في السي بلس بلس وهو في المقابلة فقام بسؤاله السؤال التالي :
هل لغة C++ تعتبر OOP أم لا ؟ قال له لا تعتبر مع العلم أن الجميع يقولون بنعم (( تعتبر OOP )) فتنبه هذا الشخص الى ذكاء أستاذي ومعلمي فقال له إنتهت المقابلة بنجاح .
والسبب في ذلك (( لغة الـ C++ )) ليست لغة برمجة موجهة بالكائنات التالي :
فلكي نتكلم عن لغة أنها Full OOP يجب أن تتوافر فيها الشروط الأربعة التالية :
1 – Encapsulation
2 – Abstraction
3 – Inheritance
4 – Polymorphizen
ولنأتي الى الشروط الأربعة بالتفصيل الممل :
الشرط الأول : Encapsulation
ومعناه هو تجميع أشياء ووضعها كاملة بمكان ما . ومن إسمها تستطيع تمييز ذلك فمعناها الكبسولة
ولتعريفها جزئين :
الجزء الأول : هي تعريف مكان (( Class )) ونضع فيه كل المتغيرات والدوال التي لها علاقة ببعضها ومن ثم نسند إليه إسماً
الجزء الثاني : هذا المكان لا يستطيع أحد الدخول إليه إلا بصلاحيات تحدد من قِبل المبرمج فيوجد قسمان رئيسيان لها وهما الـ Public وهو القسم العام والـ Private وهو القسم الخاص .
الشرط الثاني : Abstraction
وهي إضافة دالة عامة Function داخل الـ ( Class ) لا أقوم بتحديد التفصيلات لها إلا في قسم البرنامج الرئيسي .
فمثلاً :
نريد صنع عدة كائنات (( Class )) أو Modules في جامعة معينة فينتج من ذلك كائن للدكتور وكائن للطالب وكائن للمدير وكائن للعامل و ... إلخ وأردنا أن نجري بحث في من خلال البرنامج الرئيسي
فأتت مجموعتان أول مجموعة قامت بتعريف 100 متغير و100 دالة لهذا الغرض فكتبت في كل كائن دالة للبحث في خاصية معينة فمثلاً دالة لبحث حسب الإسم ودالة أخرى لبحث الرقم ودالة أخرى لبحث الرقم والإسم معاً وهنا تكون المجموعة الأولى قد أطالت من برنامجها وقللت من كفاءة البرنامج التي صنعته . وتأتي المجموعة الثانية فتستخدم 30 متغير و 30 دالة وتؤدي نفس الغرض فهي هنا إستخدمت دالة خاصة بالبحث في كل كائن بدلاً من عدة دوال وهي هنا لم تحدد البحث بواسطة ماذا ولكنها عند تشغيل البرنامج تقوم وبناءاً على طلب المستخدم بالبحث عن أي خاصية يريدها .
وكمثال ثانٍ :
نفترض أن عندنا شركة مشروبات غازية تقوم بإضافة علبة خامة (( قياسية )) فتأتي شركة أ وتطلب مئة عبوة هنا تستخدم الشركة العبوة الخامة وتقوم بالتعديل وإضافة الإعلانات الخاصة بشركة أ على العلب المطلوبة وتأتي شركة ب وتطلب 300 عبوة فتصنع كما صنعت مع شركة أ
ولنتوقف عند هنا المثال قليلاً ونسأل أنفسنا : ماذا لو قمنا بالأصل بتصميم العلب للشركة أ وقامت الشركة ب بالطلب ؟؟
ستحدث خسارة في الوقت والجهد
فهنا يكون معنى الـ Abstraction قد توضح لنا ورسم في مخيلتنا .
الشرط الثالث : Inheritance
لو سألنا أنفسنا ما معنى هذه الكلمة لأجبنا أنفسنا بالسرعة معناها التوارث (( طيب )) وماذا يعني ذلك ؟؟!!
العديد من المبرمجين يفهموا هذا المفهوم فهماً خاطئاً كالتالي :
إذا كان عندنا أربع أو خمس كائنات تحتوي جميعها على خاصية موحدة أو خاصيتان أو عدة خواص فإننا نقوم بإنشاء كائن جديد نضع فيه الخواص المتشابهة في كل كائن ونقول لأنفسنا أن جميع الكائنات الأخرى هي عبارة عن Inheritance أي متوارثة من الكائن الأصلي (( الجديد )) وهذا بمفهومه المنطقي صحيح ولا غبار عليه . ولكن النظرة من الجانب العملي لها وجهة خاصة فعندما نقوم بتصفية الخواص المشتركة ووضعها في كائن جديد لم يعد للكائن الجديد معنى . وإليك المثال التالي لتسهيل الفهم :
لنفترض أننا نمتلك الكائنات التالية : الطالب و الدكتور والعامل والسكرتير و ... إلخ
كل الكائنات السابقة لها خاصيتان متشابهتان وهما الإسم والرقم .
فلو قمنا بفصل هذين الخاصيتين وجعلناها في كائن واحد ثم قمنا بإعطاءه دور الأب وإعطاء الكائنات التالية دور الإبن فهنا يمكننا القول بأن الكائنات الأخرى هي Inheritance أي متوارثة من الكائن الأصلي (( الجديد )) وهذا كما قلت منطقياً مقبول . ولكن !!!
ماذا لو أخذنا الكائن الجديد على حدة وسألنا أنفسنا ماذا يمثل ؟؟!! لا شيء وليس له معنى لأنه عندما كانت هذين الخاصيتين في كائن الطالب كانت هناك تفاصيل أكثر دقة تفسر الكائن وتدل على أنه كائن الطالب . وبعد أخذهما على حده فلا يمكننا التمييز ما هو ؟؟!! .
سؤال يجب طرحه هنا : ما الفرق بين ال(( Class)) الكائن وبين ال (( Object )) ؟؟!!
سؤال محير أليس كذلك !! إليك الفرق :
الـ Class هو شيء نظري غير موجود على الواقع فهو عبارة عن تعريفات لشيء معين نظرياً .
الـ Object وهو الكائن النظري عند تطبيقه على أرض الواقع ليصبح عنصراً وكائناً عملياً .
الشرط الرابع : Polymorphizen
يمكن تقسيمه إلى نوعين وهما الـ Overload والـ Override . وإليك تبييناً لكلاهما :
Overload : وهي عبارة عن دوال لهم نفس الإسم ولكن تختلف في عدد الباراميتر (( الوسائط التي تأخذها )) أو نوعها
Operator Overload : فمثلاً نريد إشارة الزائد + في المعادلة التالية 1+1=2 أن نحوله الى حرف وصل (( & )) فبإمكاننا تعريف نفس الإسم ولكن أغير في النوع والكود لتصبح المعادلة التالية 1 & 1 = 11 .
Override : وهي عبارة عن كتابة نفس الدالة الأصلية طبق الأصل عنها ولكن أغير في الكود فمثلاً
نعرف الجملة التالية X = 3 ثم نقوم بعدها بتعريف الجملة التالية X = 7 فيقوم الحاسوب بحذف الأولى وتطبيق الثانية . هذا بالنسبة للمتغيرات
أما بالنسبة للدوال فإذا عرفنا دالة في كائن معين ثم قمنا بإعادة كتابة الدالة ولكن غيرنا في الكود فيقوم الحاسوب بحذف الأولى وإعتماد الثانية .
إذن يحق لي كمبرمج إستعمال الدالة Function أكثر من مرة بإضافة تغييرات في النوع أو الباراميتر أو بإعادة تعريفه .
إذن :
Overload : تغيير النوع أو عدد الباراميتر لدالة معينة
Override : تغيير الكود فقط ولا تغيير على النوع أو الباراميتر
مشاركة: الكامل في السي شارب
احسنت صنعا اخي وصدق معلمك :-)
اود فقط ان انبهك ان لاترى الفئات Classes كاوعية للاحتواء، وانما كاصناف. كلما تعين فئتا او صنفا، انك لا تحجز اي ذاكرة وانما توسع مفهومك عن عالم المسالة التي انت بصدد حلها.
حجز الذاكرة يتم فقط حين تنشاء او تكون Instantiate عنصرا من ذلك النوع.
على سبيل المثال، عندما تخترع لعبة اطفال جديدة ولديك العينة الاولى كانك تعين او تعرف فئة او صنف جديد Class Defenition. ولكن حين ترسل اللعبة الى مصنع في العقبة، يتم صنع الالاف منها، انت بحق تكون عناصرا من فئة و تستهلك مود الصنع، اما بلاستيك في حالة اللعبة او ذاكرة حاسوب عند الفئات.
مشاركة: الكامل في السي شارب
كلامك جميل أخوي وأهديك الدرس التالي للسي شارب خصوصاُ
وللأعضاء عموماً
:biggthump
مشاركة: الكامل في السي شارب
المحاضرة الرابعة :
الإثنين 23 – 2 - 2005
أنواع البيانات وجملة الإدخال والإخراج – قسم الـ Console :
كما تعلمنا سابقاً في جملة الطباعة أنه يمكننا الطباعة حسب المواقع Indexes .
سنقوم اليوم بالتوسع في صيغة جملة الإخراج والتعرف على جملة الإدخال وكذلك معرفة أنواع البيانات التي تتيحها لنا لغة السي شارب . لنبدأ الآن :
يمكن تعريف نوع من المتغيرات بالطريقتين التاليتين :
كود:
Data Type Var Name ;
Data Type Var Name = Value ;
سنقوم الآن بتعريف الأنواع كالتالي :
ظهر مفهوم المتغيرات ( Variables )جديداً في عالم البرمجة مما أحدث تغييراً عميقاً في هذا المجال
ويمكن تعريف المتغير بأنه إسم يحمل قيمة قابلة للتغيير في وقت لاحق في المشروع . ويخضع لشروط تسمية ويحمل نوع معين . أما بالنسبة للشروط فهي :
1 – أن تبدأ بحرف
2 – يجوز إستخدام الرمز _ في البداية أو النهاية
3 – يجوز إستخدام الأرقام في جميع الخانات ما عدا أول خانة
4 – أن لا تكون من الكلمات المحجوزة للبرنامج
5 – لغة السي شارب لغة حساسة أي (Age, AGE, aGE , AgE ) كلها متغيرات لا يشبه بعضها بعضاً
- سؤال : أي الجمل التالية برمجياً صحيحية . ولماذا؟
(جاوب عليها وأرسل الجواب على الإيميل الخاص بي مع ذكر الإسم )
كود:
int idnumber;
int transaction_number;
int __my_phone_number__;
float 4myfriend;
float its4me;
double VeRyStRaNgE;
float while;
float myCash;
int CaseNo;
int CASENO;
int caseno;
أما بالنسبة للأنواع فهي كالتالي :
- تسمح لغة السي شارب بتعريف المتغيرات التالية :
Boolean , character, float , integer , double , decimal , string ,
object , long , short , byte
الأنواع باللون الأحمر ( تحته خط ) هي أنواع جديدة في لغة السي شارب حيث لم تكن موجودة في لغة السي ++ , وأود إعلامك أخي العزيز إلى ضرورة كتابة الأنواع كلها بحروف صغيرة وأنت تعرف لماذا .
حسناً سأقوم الآن بشرح الأنواع جميعها :
1 – يعرف المتغير البولياني Boolean بالكلمة المحجوزة bool ويحتوي إحدي القيمتين true أو false صحيح أو خاطىء وإليك أخي الكريم مثالأ على ذلك :
كود:
bool myStatus = true;
bool yourStatus = false;
وكما رأينا في المثال السابق يمكن وضع قيمة إفتراضية في جملة التعريف أو في جملة لاحقة .
ويجب التنبيه هنا بأنه لا يمكن إستخدام الأرقام 0 أو 1 كما في الإصدارات السابقة .
2 – يعرف المتغير العددي الصحيح Integer بالكلمة المحجوزة int وهاذا النوع هو من أكثر الأنواع إنتشاراً وإستعمالاً إليك أمثلة هاذا النوع :
كود:
int count;
int number_of_students = 30;
وننبه هنا أن المتغير الذي يحمل نوع ال integer يأخذ قيمة عدد صحيح أي أننا إذا أسندنا إليه قيمة مثل 5.3 أو 5.9 فإنه سوف يعتبرها 5 .
3 – يعرف المتغير العددي العشري Float بالكلمة المحجوزة float وهو يشبه النوع السابق ولكن يسمح بالفاصلة العشرية مثال 3.33333333 . ومن هنا يمكننا إشتقاق النوع Double وهو النوع العشري ولكن يسمح بطول 32 قبل وبعد الفاصلة أيضاً النوع Decimal مشابه له . ومثال على النوع float :
كود:
float owned = 0.0f;
float owed = 1234567.89f;
هنا يجب التنويه إلى أمر وهو أن لغة السي شارب تعتبر النوع الأصل هو الـ Double فإذا أردت أن تعرف متغير من هذا النوع ما عليك سوى كتابة جملة التعريف له ثم قم بإعطاءه قيمة وأنهي الجملة بفاصلة منقوطة . ولكن ...
مع الأنواع الأخرى مثل الـ Float والـ Decimal يجب أن تزيد حرف بعد التعريف فإذا أردت أن تعرف متغير من النوع Float عليك بكتابته كالتالي :
حيث أن الحرف f يدل على أن هذا الرقم ليس من النوع Double وإنما من النوع Float
أيضاً إذا أردت أن تعرف متغير من النوع Decimal عليك بكتابة التالي :
حيث أن الحرف m يدل على أن هذا الرقم ليس من النوع Double وإنما من النوع Decimal وهنا الحرف ميم للتمييز بينه وبين حرف الـفاء للنوع Float .
4 – يعرف المتغير الخاني ( خانات ) Character بالكلمة المحجوزة char ( لفظها كار وليس شار ) ومن خلال هذا النوع الذي يحمل خانة واحدة فقط تستطيع تعريف أي خانة أو أي رمز من رموز لوحة المفاتيح أو الرموز الأمريكية المشفرة ASCII وإليك بعض الأمثلة على هذا النوع :
كود:
char firstInitial = 'J';
char secondInitial = 'K';
ومن هنا أيضاً يمكن أن نعرف النوع الجديد وهو الـ String وهو عبارة عن نوع كامل يحتوي على جمل ونصوص كتابية .
هنا يجب التنويه إلى أمر وهو أن لغة السي شارب تميز بين النوع Char والنوع String بالفاصلة
حيث تعطي النوع Char فاصلة واحدة ( ' ) والنوع String بفاصلة مزدوجة ( " ) وكما قلت لك النوع الأول يأخذ خانة واحدة فقط .
5 - النوع الأخير وهو الـ Object وهو عبارة عن نوع يحمل جميع أي قيمة من القيم السابقة أي أنه يمكن أن يحتوي عدد صحيح أو خاني أو من نوع بولياني ... إلخ . ها هو مثال ذلك :
كود:
object x=313.22222m;
object x=313.22222f;
object x = 'a'
object x = "Hello"
ونهايةً أريد أن أذكر أننا عندما نعرف متغير من نوع ما فإن أول قيمة له هي مكانه في الذاكرة فمثلاً لو أننا قمنا بتعريف متغير من نوع صحيح وعملنا له إخراج كالتالي :
كود:
static void Main(string[] args)
{
int x;
Console.WriteLine(x);
}
فإننا سوف نحصل على Error أي خطأ في كتابة الكود . حيث أن لغة السي شارب لا تسمح بطباعة مكان موقع المتغير في الذاكرة لذلك يجب أن نعطي له قيمة بداية كما في المثال التالي :
كود:
static void Main(string[] args)
{
int x = 124;
Console.WriteLine(x);
}
كذلك يمكنك تعريف المتغيرات بالأنواع بإستخدام مكتبة الـ System كالتالي :
System.Int16 x=121; --> 16 character
System.Int32 x=121; --> 32 character
System.Int64 x=121; --> 64 character
أو أي نوع من الأنواع السابقة مثل :
كود:
System.String x="RTAQ";
الآن لنتعرف أكثر على جمل الإدخال والإخراج :
تعلمنا طباعة المتغيرات بطريقة الـ Indexes فمثلا :
كود:
int x=432;
Console.WriteLine("The Value Of X Is : {0}",x);
سأذكر في هذه الجملة أنه لا يجوز طباعة متغيران فقط مثل :
كود:
Console.WriteLine(x,y);
فهذه الجملة خاطئة ويجب أن تبتدأ بنص وتصحيح الجملة السابقة كالتالي :
كود:
Console.WriteLine("The Value Of X & Y Is : {0} {1}",x,y);
سيقوم بطباعة قيمة x .
الآن يمكننا وبواسطة جملة الإخراج التحكم في صيغة المخرج فمثلاً يمكننا إخراج المتغير على شكل عملة أو عدد صحيح أو بفاصلة عشرية أو حتى بالـ Exponential كالتالي :
كود:
Console.WriteLine("The Value Of X : {0:E}",x);
لاحظ هنا أننا قمنا بزيادة {0:E} أي موقع المتغير ثم الصيغة المطلوبة وحرف الـ E هنا يعني Exponential وهو متغير رياضي معروف .
حسناً إليك سرداً بقائمة الصيغ وما تعني والمخرجات بجانبه (( يجب أن يكون الحرف كبير )) :
على إفتراض أن قيمة x تساوي 52.19f .
كود:
Console.WriteLine("The Value Of X : {0:C}",x); --> $ 52.190
Console.WriteLine("The Value Of X : {0:D}",x); --> Error
Console.WriteLine("The Value Of X : {0:E}",x); --> 5.219000E+001
Console.WriteLine("The Value Of X : {0:F6}",x); --> 52.190000
Console.WriteLine("The Value Of X : {0:G}",x); --> 52.19
الشرح :
في الجملة الأولى إستخدمنا الحرف C لإضافة تأثير العملة أي علامة الدولار والحرف C مأخوز من إسم العملة بالإنجليزي وهي Currency .
في الجملة الثانية إستخدمنا الحرف D ومعناها Decimal وهي لا تنفع إلا مع النوع Integer فإذا عرفنا متغير من نوع عدد صحيح ثم أسندنا له القيمة 25 ثم نفذنا الجملة التالية لكان الناتج :
كود:
Console.WriteLine("The Value Of X : {0:D6}",x); --> 000025
أي أنه أخذ 6 خانات للرقم x بوضع أصفار إلى اليسار لتصبح بعدد الخانات التي أدخلتها .
في الجملة الثالثة إستخدمنا الحرف E لإضافة تأثير المتغير الرياضي Exponential .
في الجملة الرابعة إستخدمنا الحرف F للدلالة على عدد الفاصلة (( الرقم بعد الحرف مباشرة )) .
في الجملة الخامسة إستخدمنا الحرف G ومه مأخوذ من كلمة General ولا يقوم بالتغيير بشيء .
هنا نكون أنهينا جملة الإخراج لنبدأ بجملة الإدخال :
- في لغة السي شارب لا تُقرأ الكلمة المدخلة إلا String أي أن هذه اللغة تقوم بتحويل ناتج الإدخال إلى نص فقط وإذا أردنا نوع آخر نقوم بالتغيير حسب جمل محددة وإليك تبيان ذلك :
جملة الإدخال والصيغة العامة :
كود:
Var Name = Console.ReadLine();
لاحظ هنا أننا قمنا بإسناد المدخل من لوحة المفاتيح إلى المتغير الذي قبل إشارة المساواة ويجب أن يحمل المتغير النوع String وإلا فسيظهر معك خطأ في تنفيذ المشروع .
إليك الأمثلة :
كود:
string x;
x = Console.ReadLine();
Console.WriteLine("You Entered : {0}",x);
سيقوم بإسناد قيمة المدخل إلى المتغير x كقيمة String .
حسناً لعلك تتسائل كيف أقوم بإدخال رقم ؟؟!!
سأقوم بالرد عليك حالأ وأقول لك يجب هنا أن تستخدم النوع أو دالة الـ Convert الموجودة في المكتبة System كالتالي :
يمكنك أن تحول قيمة نص إلى رقم بإستعمال النوع ثم إتبعه بنقطة ثم كلمة Parse :
كود:
Integer Var = Type.Parse(String Var) ;
وإليك مثال ذلك :
كود:
static void Main(string[] args)
{
string x;
int y;
x = Console.ReadLine();
y = int.Parse(x) ;
Console.WriteLine("Square Number : {0}",y*y);
}
في المثال السابق قمنا بتحويل المتغير x من نوع String إلى المتغير y من نوع Integer .
أيضاً يمكنك فعل السابق بالدالة Convert كالتالي :
كود:
y = Convert.ToInt16(x) ;
وهذا الكائن يحتوي على جميع الأنواع .
ويمكنك دمج الخطوتان السابقتان في واحدة كالتالي :
كود:
static void Main(string[] args)
{
int x;
x = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("Square Number : {0}",x*x);
}
وهنا يرجع الأمر للمبرمج ولطريقة التفكير لديه ولكفاءته .
3 مرفق
مشاركة: الكامل في السي شارب
المحاضرات بواسطة ملفات بي دي إف
الدروس الأول والثاني والثالث والرابع على شكل بي دي إف للتنزيل
بالصورة والألوان :) :lol:
1 مرفق
مشاركة: الكامل في السي شارب
من الآن وصاعداً سأقوم بتحويل الملفات إلى بي دي إف للضرورة
وهنا الدس الخامس
مشاركة: الكامل في السي شارب
السلام عليكم ياجماعة
الفزعة اريد مشروع في .net عبارة عن جمع عددين على سبيل المثال .لكن المسألة تكمن في ان يكون مكتوب بجميع لغات .net
في برنامج واحد.
(الرجاء بسرعة لان آخر موعد لتسليم الواجب يوم السبت وأيضًا عليه 10درجات)
مشاركة: الكامل في السي شارب
بطل انت يا OMS بحق السماء!
احسنت صنعا.
مشاركة: الكامل في السي شارب
السلام عليكم
أخوي ابو يسرى أنا آسف بس أنا الآن شاهدت الموضوع
وأنا الآن خارج (( ما عندي الدوت نيت على الجهاز ))
:(
مشاركة: الكامل في السي شارب
كود PHP:
[right]Console.WriteLine("\nThank U So Much Man\nAm Very Happy Cuz Of U \nPlzzzz CUNT !!");[/right]
[right][/right]
1 مرفق
مشاركة: الكامل في السي شارب
الدرس السادس
وشكراً للإطراء والتعليق
مشاركة: الكامل في السي شارب
اقتباس:
المشاركة الأصلية كتبت بواسطة oms
الدرس السادس
وشكراً للإطراء والتعليق
ممتاز.
اود فقط ان اقول بانك قد تسارعت في الحديث عن المصفوفات ذي الابعاد العدة. معظم المبرمجين الجدد لايستوعبون المصفوفات ذي اكثر من بعد واحد. هناك فعلا لغات لاتدعمن سوى بعد واحد, لاننا يمكننا تمثيل ذللك مستخدمين بعا و احدا فقط.
ايضا, قد تفسر الابعاد قليلا مستخدما جدول ضرب او لوحة شطرنج, مثلا, لتوضيح مانعني بمصفوفة ثنائية البعد, او ربما بطولة او دوري كرة قطم او جدول للحصص المدرسية ...
قد يسئم الطالب من التعامل مع الارقام, لذا يستحب تدريس طريقة التعامل مع النصوص و الطباعة مبكرا: text input and output.
كالعادة, ممتاز. انا شخصيا تعلمت منه, لاني لااعرف السي شارب بعد. تكرم عزيزي.