![]() |
خواطر 2013 "عالم الكمبيوتر" أ/ علي محمد علي
مازلت مصمماً على الفكرة .... لا أريد الإنخراط في تفاصيل المنهج .... فالمذكرات كفيلة بذلك والأعمال كثيرة .... إنما أنا هنا أود التوجه لإخواننا المدرسين .... وخصوصاً (ولن ندفن رؤسنا في الرمال ) ونقول حديثى العهد بالمنهج .... أو الجدد الذين وجدوا أنفسهم أمام منهج لم يستشاروا فيه أو يأخذ حتى رأيهم فيه .... كإجراء طبيعي هو أحد أهم دعائم الإستراتيجية التعليمية المثلى .... ولم ينالوا التدريب الكافي والذي في بعض الأحيان كمادتنا هذه يجب أن يكون تدريباً مستمراً نظراً للتغيرات المتلاحقة في عالم الأتمتة والتكنولوجيا .... وبدون الدخول في تفاصيل ... فكرتي هنا من البداية هي إختراع وسائل وأساليب جديدة للشرح فنحن من يصنع الأفكار (المدرس) فإذا فهم مدرس .... فهذا = فهم مدرسة كاملة على الأقل . فهذا الموضوع مخصص للمدرسين فقط والجادين فقط المبدعين فقط .... فهيا نتبادل الأفكار والخبرات حول موضوع واحد " كيف نوصل المعلومة للطالب بشكل أفضل وسهل ومبتكر" فأنا أرى أن المدرس المصري وبدون تعصب هو من أقوى المدرسين في العالم حيث بأقل الإمكانات يستطيع أن يصنع المستحيل ....
كنت قد بدأت بفكرة وهي أن ندخل مباشرة في الموضوع ونقوم بعرض مثال عملي ثم تفكيكه للطالب وذلك بعد تنفيذه طبعاً وكنت قد اقترحت برنامج " حساب مساحة ومحيط دائرة " وقلت أن هذا البرنامج نستطيع من خلاله شرح جميع جزئيات الفصل الأول دون استثناء .... وقلت لابد من إشراك الطالب معك واستخراج الخطوات من الطالب خطوة بخطوة هكذا تعلمنا البرمجة ..... وأضيف ... لابد أن يوضح المدرس أن أولى خطوات البرمجة والعمل مع visual basic.net هي التصميم ...فالتصميم الجيد للبرنامج هو قطع نصف الشوط في البرنامج وهو مفتاحك للدخول إلى الكود ..... ( وهنا ياحضرة المدرس اربط بين مانتكلم عنه وبين خطوات حل المشكلة في التيرم الأول فاكرينها؟ عموماً نحن هنا في المرحلة أو الخطوة الثالثة من خطوات حل المشكلة وهي " تصميم وكتابة البرنامج " هل لاحظت أن التصميم يسبق التكويد .... طيب بعد ماتخلص التصميم مباشرة شغل البرنامج وأدخل نصف قطر ثم اضغط على زر المساحة .... ستجد لاشيء أنت صنعت جسد بلا روح ..... والروح هنا هي الأكواد الأوامر التعليمات التي ستكتبها بطريقة معينة وفقاً لشروط خاصة في أماكن مخصصة حتى تترجم للكمبيوتر وينفذ ماطلبته أنت ( أوليس هذا تعريف لغة البرمجة ؟ ) تعالو نجعل الحياة تدب في هذا التصميم الميت !!!!!! طيب لي هنا سؤال من أين نبدأ الكود ؟ فالبدايات الصحيحة تؤدي بنا إلى نهايات صحيحة على أي حال .... وهنا أجيبك أرجع الى تصميمك السابق وقل لي أين سيقع الحدث (الفعل من المستخدم ) ستقول على زر المساحة حيث أنه سوف يدخل نصف القطر في مربع النص ثم سيضغط على زر المساحة .... هذا هو مدخلنا لنافذة الكود ..... وأنا هنا أصور لطلبتي شيئ قد يبدو غريب بعض الشيء للوهلة الأولى .... أقول لهم نافذة الكود تشبه الاستاد الرياضي والذي يضم ملاعب صغيرة لجميع الألعاب .... فهل يجوز لك بمجرد دخولك من باب الاستاد أن تخلع ملابسك وتعوم في النجيلة ...... بالطبع لا .... سوف تسأل عن حمام السباحة داخل الإستاد ثم تذهب هناك وتمارس هوايتك وهناك ستجد سباحين مثلك ومدربين وربما جمهور للعبة ...... والله هذا نفس حال نافذة الكود بها أماكن مخصصة لكل الألعاب ولايجوز أن تلعب في المكان الخاطئ ... هذه قوانين تسمى قواعد لغة syntax ..... ولابد من الإعلان عن من سيلعب داخل نفس المكان المخصص (الإعلان عن المتغيرات و الثوابت داخل معالج الحدث event handler يعني ماتجبش لاعب كرة قدم يلعب سلة .... إنت عرفت انا بتكلم عن إيه ؟ ... عن نطاق الإعلان عن المتغيرات والثوابت هاتقول طيب فين الإعلان العام عن المتغيرات والثوابت على مستوى التصنيف .... أقولك مش فيه في الاستاد حاجة اسمها المقصورة الرئيسية كل الملاعب بتشوفها .... وهي بتشوف كل الملاعب في الاستاد .... خلاص اعلن جواها عن فريقك .... إطلق لخيالك وخيال طالبك العنان ياأخي الموضوع بالفعل محتاج خيال ..... الموضوع بالفعل مش سهل أن أحاول هنا خلق تشويق في مناخ جامد اسمه البرمجة .... لكل لعبة داخل الاستاد قواعد وقوانين ....... سنكمل المرة القادمة ..... فحلمنا هو الوصول لكأس العالم ... تصبحون على خير ... هو إنته ماعندكش فكرة جديدة ليه ... أوعدك لو عجبتني هاقولها للطلبة عندي وأكيد هاشكرك عليها . |
جزاك الله خيرا مستر على محمد على
|
بارك الله في حضرتك أستاذي الفاضل علي محمد
|
جهد طيب
جهد طيب شكرا لك
|
الأخطاء
هناك علاقة تفاعلية بين ثلاثة " المبرمج " و "المستخدم" و "البرنامج" .... والسؤال من يخطئ في هؤلاء ؟
" البرنامج" هو بناء هيكلي متكامل تم تجريبه وغالباً لايأتي الخطأ من ناحيته .... إذن الخطأ دائماً يأتي من البشر "المبرمج" أو " المستخدم" .... أخطاء يرتكبها "المبرمج" وتصنيفها وكيفية التعامل معها وتصحيحها ؟ 1- الأخطاء في قواعد اللغة (syntax error ) وهي أخطاء تحدث من المبرمج نتيجة لعدم إلتزامه بالقواعد .... وهذا النوع من الأخطاء لن يسمح بها البرنامج وسيخط خطاً أزرقاً تحت هذه النوع من الأخطاء ولن يسمح بالطبع بتشغيل البرنامج ... وعلاجه هو تتبعه ومن ثم تصحيحه (وفي الحقيقة هناك أكثر من طريقة للتبع ) يوفرها البرنامج ويعطيك نصائح حول تصحيحها ولكن لن نخوض فيها أكثر من ذلك . 2- أخطاء منطقية (logic error ) وهي أخطاء خبيثة لايكتشفها البرنامج وغالباً ماتحدث في جمل التخصيص الخاطئة .... وفيها ينسى المبرمج ويضرب بدلاً من أن يقسم أو يجمع بدل الطرح وهكذا .... وعلاجها بسيط جداً .... وهو إختبار صحة البرنامج عن طريق مدخلات معروف نتائجها مسبقاً . ثم مراجعة وتصحيح الكود . أخطاء يرتكبها "المستخدم" وهي أخطاء التشغيل ( runtime error ) وهي أخطاء يقع فيها المستخدم نتيجة إدخالات خاطئة أو استخدام خاطئ للبرنامج ولايستطيع المترجم فهم مايقصده المستخدم وهنا وجب على المبرمج إنقاذ الموقف ولا يترك المستخدم فريسة لرسائل البرنامج المعقدة ويرسل رسائل ذات معنى محدد يفهمها مستخدمه ..... عن طريقين أولهما جملة (try catch) وثانيهما التصميم الجيد واستخدام الأدوات التي توفرها بيئة التطوير المتكاملة والتي تجعل المستخدم لايكتب كثيرا وإنما فقط يختار خيارات محددة وهذا يعتمد على شطارة المبرمج في استخدام الأدوات .... |
تحية للأفكار ...
قال لي طالب :
عارف يا أستاذ حكاية المتغيرات دي عاملة زي مخزن كبير للسلع المتنوعة .... كل مكان مخصص لسلعة من نوع معين ومكتوب عليه من برة يافطة باسمها ..... هكذا فهم طالبي ونقلت عنه بالنص . |
جزاكم الله خيرا |
اقتباس:
جزاكم الله كل خير ولعل نجد عندكم الاجابةماذا ستقول للطالب عند حل النموذج الثاني السؤال الثاني رقم 2 والاجابة الموجودة بالسؤال خطأ في نوع متغير الحلقة رغم انه لن يضع خطأ ازرق تحت نوع المتغير ورغم اننا لم نشرح له قط خطأ فى نوع متغير الحلقة وبماذا تفسر له الرسالة التى تظهر مع الخط الازرق تحت الرقم 500 والتى تقول انه لا يناسب مع النوع وان الخطأ في القيمة الثابتة وليس نوع متغير الحلقة هل نقول له احفظها كدا لو جاءت بالامتحان |
اقتباس:
أستاذ سيف أسعدني تواجدكم ومروركم الكريم ..... أنا أكره الحفظ .... كرهي للشيطان .... وأبداً لن أقول لأبنائي احفظوها كده فهذه حجة من لايعمل عقله ..... وللإجابه على خواطرك بخصوص السؤال رقم 3 في النموذج الثاني ... أقول : - تعالى أولا نتفق أن هناك العديد من الإجابات الخاطئة الواردة بحلول موقع الوزارة . - لماذا لم يضع خطاً أزرقاً تحت المتغير ..... لأنه عرف المتغير بشكل صحيح والتزم بقواعد التعريف وبالتالي لم يعترض البرنامج على المتغير في ذاته ... - أما الخطأ الحقيقي فوقع هنا بالفعل في قواعد اللغة عند وضع قيمة End داخل الحلقة وهي قيمة ثابتة برقم تجاوز نوع بيان المتغير وهي هنا تعتبر overflow تجاوزت حدود نوع البيان ولو قمنا بتغيير نوع البيان إلى integer مثلا لانتهت المشكلة وسيعمل البرنامج بشكل سليم . - أما بخصوص نوع الخطأ "نوع متغير الحلقة" هو هنا يريد تفصيل التفصيل .... كان أولى أن يقول خطأ من النوع "syntax" .... وتقول الرسالة أن التعبير الثابت "500" لايتناسب مع نوع البيان "Byte" - وأخيرأً هو حضرتك لم تلاحظ أنه أنهي الحلقة التكرارية For ....Next بـــ Loop ...... ماذا تسمي هذا ؟ |
char
سألني أحد طلابي سؤال :
هو النوع char مش بيخزن حرف واحد وأنت قلت لنا الحرف الواحد يخزن في خلية واحدة من خلايا الذاكرة يعني 1Byte... طيب ليه بيأخذ خليتين من خلايا الذاكرة لو أعلنا عن بيان نوعه char ؟ ..... قلت له : هو يمثل حرف واحد فقط من حروف Unicode لذلك لا يمكن أن تحمل قيمة حرفيه تزيد عن حرف واحد، كما يشرط استخدام حرف الذيل "C" حتى تميز القيمة الحرفية من النوع "char" عن النوع "String" مثال : Dim A as char A="D"C هو الذيل ده C مش عاوز خلية زيادة يتخزن فيها ؟؟؟ وبمناسبة هذا النوع من البيانات .... هو إحنا متى نحتاجه وما الجدوى منه أساساً رغم إمكانياته المحدودة..؟؟؟ السبب ببساطة السرعة في التنفيذ والاقتصاد في استهلاك مصادر النظام. حيث أن المتغيرات من نوع char هي متغيرات من النوع ذات القيمة Value Type Variables وهي تمحى من الذاكرة مباشرة بعد نهاية عمر المتغير بينما المتغيرات من النوع String هي متغيرات مرجعية Reference Type Variables وفي الحقيقة لا تتم عملية إزالة قيمها من الذاكرة مباشرة بعد نهاية عمرها الافتراضي، فهي تتطلب عملية تسمى إفراغ المصادر . أيوة أنا أضطررت للخروج عن المنهج لأفسر وأشرح لطالبي ما أراد ربما يكبر يوماً ويعمل مبرمجاً محترفاً ويتذكر كلامي .... فأنا لا أستطيع أن أقول له الموضوع ده صعب عليك ومش هاتفهمه .... طالما أنه هو الذي سأل .... ومن يدري ربما فهم كلامي أو جزء منه . |
اقتباس:
والمشكلة الاكبر تكبر الوزارة وعدم الاعتراف بالخطأ والمشكلة الاخطر استمرارها في الخطأ جزاكم الله كل خير |
اقتباس:
تقصد Runtime وليس syntax بالنسبة ل Loop تصحيحها Next شكرا لك |
اقتباس:
|
اقتباس:
Garbage Collection الشكر الجزيل لك .... أعول عليك في مساعدتي في وضع خواطر وأمثلة وأفكار جديدة تشرح وتوضح المنهج لإخواننا حتى تعم الفائدة . |
اقتباس:
لا أنا أقصد syntax فالخطأ هنا حدث في القواعد حيث أتى بنهاية الحلقة overflow عن نوع البيان .... أعلم أنها next ولكني كنت أستغرب على الكتاب . أرجوا منك تكثيف مشاراكاتك في موضوعي . |
معلومة جايز تهمك .
Public و Freind و Dim و Private و Static ..... كلها كلمات تستخدم للإعلان عن المتغيرات .....
|
Public , friend , private , protected , protected friend يطلق عليها Access Modifier
اقتباس:
الاعلان عن الثوابت يكون باستخدام Const تستخدم Static لإطالة عمر المتغير المعلن داخل معالج حدث بحيث يبقى بالذاكرة رغم انهاء إجراء الحدث حيث ما يعلن داخل معالج الحدث ينشأ في الذاكرة ثم يموت بعد انتهاء استدعاء معالج الحدث بعد تنفيذ End sub أما Public , friend , private , protected , protected friend يطلق عليها Access Modifier من خلالها نستطيع تحديد مدى سماحية استخدام العنصر خارج نطاق إعلانه Public تجعل العنصر element متاح على مستوى الحل Solution friend تجعل العنصر element متاح على مستوى المشروع Project private تجعل العنصر element متاح على مستوى نطاق إعلانه فقط protected تجعل العنصر element متاح عند وراثته على مستوى الحل Solution protected friend جعل العنصر element متاح عند وراثته على مستوى المشروع Project مثال محرر الكود يقوم بحذف كلمة Dim عند استخدام أي مما سبق لكنها من صميم تركيب جملة الاعلان عن المتغير مثلا Public x As Integer تم الإعلان عن متغير من النوع Integer متاح استخدامه على مستوى الحل (كافة المشاريع المعلنة داخل الحل بما فيها المشروع الحالي ويتم ذلك بعمل Reference للمشروع الذي به هذا المتغير عند المشاريع الأخري ثم عمل Object للتصنيف الذي يحوى هذا المتغير) الأمر هام جدا جدا جدا |
No declaration
Option Explicit Off Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load x = 5 y = x sum = x + y (MsgBox(sum End Sub End Class لقد اتخذت قراراً ولن أعلن عن المتغيرات .... وسوف أستخدمها مباشرة لاتقل لي .... Dim ولا private ولا حتى Friend ... بدون استخدام ( محددات الوصول )Access Modifier ....... Access Specifiers ومشكلة هذا القرار تكمن في (كل المتغيرات هاتكون Object - الأخطاء الإملائية في كتاية المتغيرات ) على فكرة أنا خايف الناس يعتبرونا خوارج . |
راااااااااااائع جزاك الله خيرا
|
مجهود رائع
|
الاقصر
:friendsxs3: شكرا
|
الخطوط الحمراء
اللون الأخضر تحت الكلمة يعني تحذير،
اللون الأحمر يعني أن هناك خطأ في الأمر البرمجي Syntax Error ، اللون الأزرق يعني أن المترجم الـــــ Compiler حدد الخطأ، اللون الأرجواني Purple فيعني أن هناك خطأ آخر. |
يااااااااااااه بسم الله ماشاء الله شئ رائع للغاية اعانكم الله
|
اقتباس:
|
استاذى العزيز هل درست ansi code وهو ان الحرف الكبير captial يكون اصغر من الحروف الصغيرة فمن اجل هذا الحروف الكبيرة تاخذ خليه واحد اما الحروف الصغيرة تاخذ خليتان
|
هناك فرق بين شفرة ANSI و شفرة Unicode
نوع البيانات لشفرة ANSI هو char و نوع البيانات لشفرة Unicode هو WCHAR حجم char على الذاكرة كحجم أصغر نوع بيانات و الذي هو BYTE و حجمهما 1byte حجم WCHAR يساوي 2byte الفرق الأول عند العمل على شفرة ANSI فنحن نستخدم نصف حجم الذاكرة و التي نعمل بها على شفرة Unicode الفرق الثاني خلاصته أن شفرة Unicode تدعم Characters أكثر من دعم شفرة ANSI لــــ Characters بمعنى الحروف و الأرقام العربية و بعض الإضافات مدعومة على الشفرتين إلا أن هناك بعض من الـ Characters لا يدعم إلا على شفرة Unicode و هي Characters إضافية و منها ما يتعلق بالرموز القرآنية كعلامة السجدة و الحزب و بعض الرموز بعلم الرياضيات . ....... بالله عليك هو الأخوة هنا ناقصين الكلام ده .... أدخل في المنهج وساعدنا أكرمك الله . فأنا لم أقصد الخروج عن المنهج إلى هذا الحد . |
بسم الله ما شاء الله
معلومات قيمة الله يبارك فيكوا هل من مزيد |
خواطر 2013 "عالم الكمبيوتر" أ/ علي محمد علي وبارك الله فيك على هذا الموضوع الاكثر من رائعجزاك الله خيرا |
اقتباس:
|
اقتباس:
|
الفصل الثاني
جملة التفرع التالية :
If X = 5 Then If Y =10 Then X = 20 End If Else Y = 7 End If هل من الممكن كتابتها بهذا الشكل ......؟؟ If X = 5 Then If Y = 10 Then X = 20 Else Y = 7 |
هل من مشارك .... هل من محاور ؟؟؟
|
If X = 5 and Y =10 Then X = 20 Else Y = 7 End If |
اقتباس:
|
مشكووووووووووووووووووووووووووووووووووووووووووووووو ر
|
جزاك الله كل اخير
|
طلبت من طلابي أفكاراً جديدة لبرامج بمناسبة إنتهاء الفصل الثاني ... فإذا بطالب ...اسمه حسن منصور ... يقول لي ... أنا حاولت أعمل برنامج يختبر هل العدد أولي أم لا ؟ فإذا كان أولي يخرج رسالة بذلك ... وإن كان غير أولي يرسل رسالة بذلك .... ... ..
في الحقيقة أنا عملت الفكرة دي بس باستخدام جملة تكرار موجودة بالفصل الثالث ... كما يلي : Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim I, N As Integer N = TextBox1.Text For I = 2 To N - 1 If N Mod I = 0 Then ("MsgBox("THE NUMBER IS NOT A PRIME NUMBER Exit Sub End If Next ("MsgBox("THE NUMBER IS A PRIME NUMBER End Sub End Class ...... فهل فكر معي أحدكم لتخليص هذا الكود من جملة for next اللعينة حيث لم أشرحها بعد ... وبقائنا بالفصل الثاني فقط مع جملة if أو حتى select case .... |
اقتباس:
|
صمم برنامج لعرض الأعداد الزوجية ؟
|
حقيقى فكرة جميلة ورائعة وياريت المزيد من اسألت الطلاب وطريق الشرح باستخدام الامثلة الحياتية
|
ممكن تذود على هذا الكلام ان مع هذا المتغير يمكن عمل برنامج للاطفال نضع الحرف كبتل ونتظر الاجابة بصمول
ارجو ان اكون اضفت لك شئ |
اقتباس:
|
جزاكم الله خيراً
|
منذ مدة طويلة لم تكتب خواطر جديدة
لعل المانع خيراً أستاذ / على |
اقتباس:
|
جميع الأوقات بتوقيت GMT +2. الساعة الآن 11:38 PM. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.