كود تفعيل العضوية - الابلاغ عن روابط لاتعمل - صيانة التلفزيون - الحاسبة - الأعضاء المتميزين - البرامج و المخططات - بث مباشر للقنوات الفضائية - إذاعة - تردد القنوات - بحث
|
التسجيل | اجعل كافة المشاركات مقروءة |
منتدى الإلكترونيات قسم الالكترونكس لمناقشة الافكار والمعلومات المتعلقة بالهندسة الالكترونية للمبتدئين والهواة والفنيين - Electronics |
![]() |
|
أدوات الموضوع |
![]() |
#1 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 333
|
![]() بدء تعلم البرمجة مع تطبيق ربومايند RoboMind
مقدمة Introduction "الروبو" ROBO هي لغة برمجة programming language تعليمية جديدة وبسيطة للغاية ستطلعك على أساسيات علوم الكمبيوتر. سيتم تقديمك أيضًا إلى تقنيات البرمجة الشائعة ، وستكتسب نظرة ثاقبة في مجالات مثل الروبوتات والذكاء الاصطناعي. سيتم اكتساب هذه المهارات من خلال إنشاء برامج للروبوت. الانسان الالي "الربوت" The robot الروبوت قادر على أداء العديد من الإجراءات (الافعال). يمكنه القيادة (الحركة) drive والنظر حوله look around ونقل العناصر move items والطلاء paint. يمكن القيام بكل هذا في بيئات مختلفة تتكون من كتل blocks . لغة البرمجة"روبو" The ROBO programming language تم تصميم ROBO بحيث يمكنك البدء في الاستكشاف والبرمجة على الفور. تمت كتابة لغة خاصة تتكون من مجموعة موجزة من القواعد rules وتهدف إلى برمجة الروبوت. نتيجة لذلك ، هناك الكثير من الفرص لإنشاء برامجك الخاصة وتجربة المبادئ التي تكمن في صميم معظم لغات البرمجة الأخرى. مقارنة مع لغة LOGO في الماضي ، كانت لغة LOGO تستخدم بشكل أساسي للأغراض التعليمية. في LOGO ، يمكن تحريك سلحفاة عبر الشاشة لعمل رسومات. نظرًا لقلة التفاعل بين السلحفاة وبيئتها ، فقط يمكن عمل برامج مملة . أكثر من ذلك ، عانت معظم تطبيقات LOGO من عدم وجود بيئة برمجة سهلة الاستخدام. نتيجة لذلك ، أصبح بناء جملة ROBO مألوفا أكثر في هذه الأيام ، من LOGO ، الذي يعود إلى عام 1967. لإعطائك انطباعًا(فكرة)عن برنامج في ROBO ، يرجى إلقاء نظرة على النص "الاسكريبت" script أدناه ، والذي سيبرمج الروبوت لرسم مربع square. كود:
# Draw a square paintWhite() repeat(4) { forward(2) right() } stopPainting() من الناحية الفنية (التقنية) ، ROBO هي لغة برمجة أمرية (أمر-إلزام) / إجرائية (إجراء) imperative/procedural ، والتى تشكل الغالبية العظمى في علوم الكمبيوتر. تتكون اللغة من عدد من التعليمات الأساسية basic instructions للتحكم في الروبوت ، وحلقات التكرار , repetition loops ، وعبارات الشرطية conditional if...then...else ، وإمكانية تحديد التعليمات بنفسك من خلال إنشاء الإجراءات procedures . يُسمح بتعريف الإجراءات بشكل متكرر recursively. الجمهور المستهدف Target audience من المفترض أن يكون RoboMind أول مقدمة للأتمتة automation والبرمجة دون متطلبات مسبقة. نظرًا لأنه يمكن إجراء العديد من التمارين المختلفة ، يمكن تخصيص مستوى الصعوبة للجمهور. يمكن للطلاب في التعليم الابتدائي التعرف على أوامر الكتابة لتوجيه(تنقل) navigate الروبوت عبر بيئته ، وتحظى هياكل البرمجة بالمدارس الثانوية بمزيد من الاهتمام وتركز الجامعات على الجوانب النظرية لنظرية الأتمتة مثل آلات تورينج Turing machines . بيئة تطوير RoboMind المتكاملة توفر بيئة تطوير RoboMind كل ما تحتاجه لكتابة البرامج واختبارها وتنفيذها بنجاح. [IMG] ![]() البرمجة "الأمرية-إلزامية) " imperative تعني أن الكمبيوتر يحصل على قائمة بالأوامر وينفذها بالترتيب ، فى حين تسمح "البرمجة الإجرائية"“procedural programming” (وهو أمر إلزامي أيضًا) بتقسيم هذه التعليمات إلى إجراءات (أو وظائف). موقع تحميل تطبيق الربومايند : https://www.robomind.net/en/download.html
__________________
مقالات المهندس فتح الله عبدالعزيز التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 14-10-2022 الساعة 11:47 AM. |
![]() |
![]() |
اعلانات |
![]() |
#2 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 333
|
![]() بيئة تطوير الروبومايند The RoboMind development environment
أهلا وسهلا (مرحبا) Welcome Robo هي لغة برمجة بسيطة تتيح لك التعرف (مدخل)على مبادئ برمجة الكمبيوتر. إلى جانب مقدمة لهياكل structures التحكم الشائعة ، ستكتسب نظرة ثاقبة في مجالات الروبوتات والذكاء الاصطناعي. للتأكد من أنه يمكنك البدء بسرعة في الموضوعات التي تهمك حقًا ، تم تقديم لغة برمجة جديدة تسمى Robo. إنها لغة شاملة مكرسة لبرمجة الروبوت. لا تزال قويًة بما يكفي لإنشاء الكثير من البرامج المثيرة للاهتمام. كما أن المبادئ التي ستواجهها تشكل جوهر معظم لغات البرمجة الأخرى. تتيح لك بيئة تطوير RoboMind كتابة البرامج التي سيتم تنفيذها بواسطة روبوت المحاكاة. هذه البيئة تتكون من الأجزاء التالية: [IMG] ![]() 1- لوحة الاسكريبت (البرنامج النصى ) Script panel في منطقة النص text هذه ، يمكنك كتابة مهمتك في شكل نص (سكريبت) script يقوم الروبوت بأدائه . 2- لوحة العالم World panel هنا ترى الوضع الحالي للروبوت في بيئته. لأن هذه هي البيئة التي يعيش فيها الروبوت ، سنسميها العالم world . 3- لوحة التشغيل Run panel بمجرد أن تقرر ما هو النص script ، يمكنك هنا السماح للروبوت بالبدء (أو إيقافه). من الممكن أيضًا ضبط السرعة التي يعمل بها الروبوت . 4- لوحة الرسائل Message panel في حال كان البرنامج النصي غير ملائم ، ستتلقى أخطاء الترجمة هنا. إنه أيضًا المكان الذي قد يُخطِر فيه الروبوت بأحداث معينة . بيئة تطوير The RoboMind development environment RoboMind هو ببساطة كل ما تحتاجه من أجل كتابة واختبار وتنفيذ برامج ROBO. وبالتالي ، تمتلك ROBO بيئة تطوير متكاملة (IDE) تتيح لك مراقبة البرنامج النصي script الخاص بك بنقرة واحدة فقط. تتميز واجهة المستخدم بالمرونة ، ولكنها أيضًا تحافظ على بساطتها. في معظم بيئات البرمجة الأخرى ، قد تواجه أدوات وأدوات من شأنها أن تعقد الأمور فقط ، ولكن تم حذفها هنا من أجل تحسين سهولة استخدام RoboMind بشكل كامل. [IMG] ![]() محرر النص The text editor في الواقع ، كل نصوص scripts ROBO هي مجرد ملفات نصية عادية. هذا يعني أنه يمكنك استخدام أي محرر نصوص (مثل المفكرة) لكتابة برامجك. يمكنك بعد ذلك تحميلها في RoboMind. ومع ذلك ، يوفر محرر النصوص المدمج وظائف إضافية تجعل كتابة البرامج بسيطة قدر الإمكان. تشمل هذه الميزات: • إبراز highlighting (تمييز)بناء الجملة Syntax : تلوين الجوانب المختلفة من اللغة بشكل مختلف لسهولة القراءة (المتغيرات variables ، التعليمات الأساسية , basic instructions ، الإجراءات , procedures ) [IMG] ![]() • إكمال الكود Code completion: لتقليل الكتابة وإدخال الأوامر بسرعة ، هناك إكمال للكود: فقط اكتب الأحرف الأولى من الأمر وسيقوم [Ctrl] + [Space] بإنهائه تلقائيًا نيابة عنك. إذا كان غامضًا ، يتم عرض قائمة منبثقة. [IMG] ![]() • تضمن أرقام الأسطر Line numbers إمكانية العثور على الأخطاء في برنامجك بشكل أسرع. [IMG] ![]() • تظهر الرسائل Messages في الهامش. • تراجعات undo غير محدودة. • وظيفة البحث والاستبدال المتقدمة التي تسمح بالتعبيرات العادية. • سيشير السهم إلى الأمر الذي يتم تنفيذه في برنامجك في الوقت الحالي. [IMG] ![]() الشاشة The monitor الشاشة هي الشاشة التي يتم فيها رؤية(مشاهدة)الروبوت وعالمه. يمكن استكشاف البيئة بسهولة عن طريق سحب الخريطة بالماوس. يمكنك أيضًا التكبير لضبط مستوى التفاصيل وفقًا لتفضيلاتك. يمكن للكاميرا تتبع الروبوت تلقائيًا. لاحظ أن فى الإصدار 1.0 تم جعل الشاشة قابلة للضبط skinnable (تغيير جلدها) . هذا يعني أنه يمكنك تخصيص مظهر الروبوت الخاص بك وعالمه وفقًا لرغباتك الخاصة. بجانب كل هذا ، يمكنك حتى التقاط لقطات شاشة للوضع الحالي. يمكن تخزين صور jpg هذه تلقائيًا في مجلد معين مسبقًا (راجع: ملف> إعدادات> عام> لقطات File > Settings > General > Snapshots ). تم أيضًا إنشاء معظم الصور على هذا الموقع باستخدام هذه الوظيفة ، فقط لتوضيح فائدتها. في الواقع ، هذه الميزة مفيدة بشكل خاص للمعلمين للمساعدة في توضيح التمارين. [IMG] ![]() تنفيذ البرامج Execution of programs لا يتعين عليك اتخاذ أي إجراء خاص لمراقبة كيفية عمل برنامجك. يمكن تنفيذ البرامج النصية scripts الصحيحة بنقرة واحدة فقط ، مما يحسن التفاعل في دورة التصميم / الاختبار. في بعض التطبيقات الأخرى ، قد تحتاج إلى تجميع (ترجمة) compile نصوصك يدويًا. مع الأخذ في الاعتبار أنك لن تكون سعيدًا بالأخطاء (الأخطاء bugs) التي ارتكبتها في برنامجك ، فمن المفضل أن تتمكن من اكتشاف هذه الأخطاء في مرحلة مبكرة. هذا هو السبب في أنك سوف تكون على دراية بالأخطاء قبل أن يتم تنفيذ البرنامج. ستظهر هذه التنبيهات أسفل الشاشة. أثناء تحليل سلوك برنامجك ، من المفيد ضبط وتيرة التنفيذ(سرعة خطوة السير). يمكن تغيير وتيرة الروبوت ببساطة عن طريق تحريك شريط التمرير. لفحص تدفق التحكم بشكل أكثر دقة ، تسمح بيئة التطوير بتنفيذ تعليمةواحدة خطوة بخطوة. بيئات متغيرة Variable environments لن تكون الأشياء ممتعة للغاية إذا كانت البيئة ستظل دائمًا كما هي. هذا هو السبب في أنه يمكن تحميل مجموعة متنوعة من الخرائط maps ليقوم الروبوت باللعب فيها. سيتوفر عدد متزايد من الخرائط بمرور الوقت لزيادة حداثة تجربة ROBO. أيضًا مع القليل من الاختراق hacking من جانبك ، يمكنك إنشاء خرائط بنفسك.
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها ) | |||
|
![]() |
#3 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 333
|
![]() التعليمات الأساسية Basic instructions
يوجد في كل مجال عدد ثابت من التعليمات الأساسية التي يمكنك استخدامها لكتابة برنامج. يُسمح لك فقط باستخدام هذه التعليمات مباشرةً عند كتابة نص البرنامج script . بالنسبة إلى الروبوت الخاص بنا ، توجد التعليمات الأساسية التالية: [IMG] ![]() 1- تعليمات الحركة Move : • تحرك n من الخطوات للأمام : forward(n) • تحرك n من الخطوات للخلف : backward(n) • الدوران يسارا بمقدار 90 درجة : left • الدوران يمينا بمقدار 90 درجة : Right • الدوران شمالا والحركة n خطوة للأمام : north(n )• الدوران جنوبا والحركة n خطوة للأمام : south(n) • الدوران شرقا والحركة n خطوة للأمام : east(n) • الدوران غربا والحركة n خطوة للأمام : west(n )2- تعليمات الطلاء Paint • ضع الفرشاة ذات الطلاء الأبيض على الأرض : paintWhite • ضع الفرشاة ذات الطلاء الأسود على الأرض : paintBlack • توقف عن الرسم ، قم بإخفاء الفرشاة : stopPainting 3- تعليمات الكلاب (الماسك) Grab : • احصل (التقط) على المنارة أمام الروبوت : Pickup • ضع المنارة أمام الروبوت : putdown 4- تعليمة تقليب (فر) العملة Flip coin : flipCoin 5- تعليمات الرؤية (المشاهدة) See : Left Front Right leftIsObstacle leftIsClear leftIsBeacon leftIsWhite leftIsBlack frontIsObstacle frontIsClear frontIsBeacon frontIsWhite frontIsBlack rightIsObstacle rightIsClear rightIsBeacon rightIsWhite rightIsBlack [IMG] ![]() [IMG] ![]() مثال 1: اكتب اسمك Write your name نظرًا لأن الروبوت قادر على الرسم ، يمكنك إنشاء برامج رسم بسيطة. باستخدام التعليمات paintWhite and stopPainting ، يمكنك توجيه (أمر) الروبوت لوضع الفرشاة على الأرض أم لا. عندما تترك الروبوت يتحرك ، فإنه سيترك خطاً على الأرض. بهذه الطريقة يمكنك كتابة أحرف مثل 'A' . في الخريطة openArea.map سيكون لديك مساحة كافية لإنشاء قطعة فنية جميلة. حاول استخدام جهاز التحكم عن بعد من القائمة Run > Remote control للسماح للروبوت بالطلاء. راجع تعليمات الحركة move والطلاءpaint . [IMG] ![]() كود:
#character 'A' paintWhite forward(2) right forward(1) right forward(2) backward(1) right forward(1) stopPainting التمرين الثانى : كتابة كلمة robo على الأرض استخدم لوحة التحكم من القائمة Run >> remote control الخريطة المستخدمة : map: default.map كود:
# Writes the word 'robo' on the ground. # The script was created using the remote control. # map: default.map # letter r paintBlack forward(1) right forward(1) stopPainting forward(1) # letter o paintBlack forward(1) right forward(1) right forward(1) right forward(1) stopPainting right forward(1) forward(1) left right right backward(1) # letter b paintBlack forward(1) forward(1) left forward(1) left forward(1) left forward(1) stopPainting backward(1) backward(1) right right # letter o paintBlack forward(1) right forward(1) right forward(1) right forward(1) stopPainting right forward(1) forward(1)
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
#4 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 333
|
![]() هياكل البرمجة Programming structures
ستجد هنا الهياكل النحوية structures المسموح بها لتحديد سلوك الروبوت. • Comment • Loops • If-structures • Logical expressions • Procedures • Arithmetic • Variables • End • التعليق • الحلقات • هياكل If • التعبيرات المنطقية • الإجراءات • العمليات والمعاملات لحسابية • المتغيرات • النهاية 1- التعليقات Comments كود:
# free text that will not be evaluated 2- الحلقات Loops (التكرار) • الهيكل : كود:
repeat(n){...instructions...} هذا الهيكل يكرر repeat التعليمات instructions بين الأقواس المتعرجة n مرة بالضبط . كود:
Example1: # a square of 2x2 repeat(4) { forward(2) right } • الهيكل : كود:
repeat{...instructions...} فقط يحافظ على تكرار repeat التعليمات instructions بين الأقواس المتعرجة إلى الأبد. كود:
Example2: # just goes forward # (but eventually will stay hitting a wall) repeat { forward(1) } • الهيكل : كود:
repeatWhile(condition){...instructions...} يكرر التعليمات instructions. بين الأقواس المتعرجة طالما أن الشرط condition صحيح (صواب –متحقق). يجب أن يكون هذا الشرط عبارة عن تعليمة ملاحظة perception / رؤية seeing على سبيل المثال ، frontIsClear) كود:
Example3: # keeps going forward, # but stops when it can't go any further repeatWhile(frontIsClear) { forward(1) } • التعليمة كود:
Break كسر (فصل)Break تسمح لك بالقفز خارج الحلقة (مثل قسم التكرار repeat) بحيث يتوقف عن تنفيذ التعليمات بين الأقواس المتعرجة. سيستأنف الروبوت تنفيذ التعليمات المتبقية بعد قوس الإغلاق المتعرج للحلقة. كود:
Example4: # keep going forward, until you can't go any further repeat { if(frontIsObstacle) { break } else { forward(1) } }
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
#5 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 333
|
![]() 3- هياكل If :
• الهيكل : كود:
if(condition){...instructions...} سيتم تنفيذ التعليمات instructions بين الأقواس المتعرجة ، فقط في حالة صواب (متحقق) الشرط condition. عدا ذلك ، يخطو الروبوت فورًا إلى التعليمات المكتوبة بعد قوس الإغلاق المتعرج. يجب أن يكون الشرط عبارة عن تعليمة ملاحظة / رؤية (على سبيل المثال: frontIsClear) كود:
Example5: # if you see white paint on your left, make it black if(leftIsWhite) { left forward(1) paintBlack stopPainting backward(1) right } • الهيكل : كود:
if(condition){...instructions...}else{...instructions...} سيتم تنفيذ التعليمات بين الزوج الأول من الأقواس المتعرجة ، فقط إذا كان الشرط condition صواب (متحقق). عندئذ لن ينفذ تعليمات كتلة else (تعليمات الزوج الثاني من الأقواس المتعرجة ). عندما لا يتم تحقيق (خطأ) الشرط ، سيقوم الروبوت فقط بتنفيذ التعليمات بين الزوج الثاني من الأقواس المتعرجةالخاصةبالأمر else . بعد تنفيذ إحدى كتلتى التعليمات ، سيقرأ التعليمات بعد آخر قوس مجعد. يجب أن يكون الشرط عبارة عن تعليمات ملاحظة / رؤية على سبيل المثال: frontIsClear) كود:
Example6: # if you see white paint on your left, make it black # else drive a few steps forward if(leftIsWhite) { left forward(1) paintBlack stopPainting backward(1) right } else { forward(3) }
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
#6 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 333
|
![]() 4- التعبيرات المنطقية Logical expressions
شروط هياكل if- و repeatWhile- هي ما يسمى بالتعبير المنطقي logical expression . سينتج عن تقييم هذا التعبير القيمة صواب truأو خطأ false ، والتي تُستخدم بعد ذلك لاتخاذ قرار بالانتقال إلى الجزء المناسب من الكود لاستئناف التنفيذ. يمكن أن يكون التعبير المنطقي تعليمة ملاحظة perception instruction، على سبيل المثال: leftIsWhite. قد تتكون التعليمات الأساسية أيضًا من العوامل المنطقية boolean operators وهى not, and, or . كود:
Example7: if(leftIsWhite) { left forward(1) } ومع ذلك ، يمكن أيضًا تحسين الشرط للإشارة بشكل أكثر دقة إلى متى يجب تنفيذ التعليمات المقابلة باستخدام (مجموعة من) العوامل التالية. [IMG] ![]() [IMG] ![]() [IMG] ![]() يمكن أيضًا تطبيق القيم صواب true وخطأ false مباشرةً كما لو كانت تعليمات ملاحظة perception instruction . ترتيب العوامل operators مهم (تمامًا مثل ضرب وجمع الأرقام). العملية not ترتبط بقوة(أولوية التقييم أوالتنفيذ) ويتبعها andويتبعها or . يمكن استخدام الأقواس للتأثير على ترتيب التقييم. كود:
Example8: repeatWhile(not frontIsClear and (leftIsWhite or rightIsWhite)){ forward(1) } if(flipCoin and not rightIsWhite) { right backward(1) } if(true and false){ # this instruction is never executed forward(1) } • مقارنة الأرقام Comparing numbers نوع آخر من التعبيرات المنطقية هو مقارنة الأرقام. بعد ذلك يمكنك اتخاذ قرار بناءً على قيمة معينة. على سبيل المثال ، انتقل إلى اليمين فقط إذا كان متغير معين أقل من 5. كود:
Example9: forward maybeToRight(8) forward procedure maybeToRight(n){ if(n < 5){ right } } هذه هي القائمة الكاملة للمقارنات (عوامل المقارنة). [IMG] ![]()
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
#7 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 333
|
![]() مثال : البحث عن البقعة البيضاء Find the white spot
في الخريطة findSpot1.map التي يمكنك العثور عليها في مجلد الخريطة mapsالافتراضي ، ستجد في مكان ما على اليسار ركنًا يحتوي على بقعة بيضاء. افترض أنك لا تعرف مسبقًا المسافة التي تقع عليها هذه الزاوية. كيف يتمكن الروبوت من العثور عليها إذا بدأ في مكان ما بمحاذاة الجدار؟ بالطبع يمكنك حساب عدد الخطوات التي يجب على الروبوت أن يتحركها بنفسه ، ولكن هناك طرقًا أفضل. دع الروبوت يخطو خطوة واحدة للأمام في فى كل مرة ، ودعه يتحقق مما إذا كان check if قد رأى البقعة على يساره left بالفعل. إذا رأى البقعة ، فعليه أن يقف عليها ثم ينتهي. عدا ذلك Else ، يجب أن يخطو خطوة أخرى للأمام ويتحقق مرة أخرى مما إذا كان قريب بالفعل من المكان. يمكن تكرار ذلك في حلقة loop. انظر أيضًا: التعليمات الأساسية basic instructions: تحريك ، النظر move, see ، هياكل البرمجة programming structures : الحلقات ، هياكل if ، النهايةloops, if-structures, end . كود:
repeat{ if(leftIsWhite){ # There's a white spot on your left left forward(1) end } else{ # There's no white spot yet forward(1) } } [IMG] ![]() الطريقة الأخرى التي تظهر نفس النتائج هي البرنامج النصي التالي script. هنا يكرر الروبوت التحرك للأمام حتى لا يرى الجدار بعد الآن (لذلك يجب أن يكون هو الركن الذي نبحث عنه). ثم يستدير الروبوت ويتحرك للأمام ليهبط على البقعة المطلوبة . كود:
repeatWhile(leftIsObstacle){ forward(1) } left forward(1) مثال : عداء المتاهة Maze runner كيف تهرب (تفر) من المتاهة بشكل عام؟ يبدو أن هذا السؤال الصعب له حل بسيط . من خلال اتباع الجدار دائمًا على الجانب الأيمن (أو دائمًا اتباع الحائط على الجانب الأيسر) ستجد المخرج exit بالتأكيد. النص التالي script يجعل الروبوت يعثر على المنارة beacon في الخريطة maze1.map على سبيل المثال. انظر أيضًا: التعليمات الأساسية: تحريك ، انظر ، basic instructions:move, see هياكل البرمجة: الحلقات ، هياكل if ، النهاية programming structures: loops, if-structures, end [IMG] ![]() كود:
repeat{ if(rightIsObstacle){ if(frontIsClear){ forward(1) } else{ left } } else{ right forward(1) } if(frontIsBeacon){ pickUp end } }
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
#8 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 333
|
![]() 5- الإجراءات Procedures
العبارة (صيغة التعريف) التالية : كود:
procedure name(par1, par2, ... , parN){...instructions...} تقوم بتعريف إجراء (برنامج فرعى) جديد new procedure بالاسم name الذي تريده. يمكن أن يحتوي الإجراء على صفر أو أكثر من المعلمات (البارامترات) parameters (توجد فى تعريف الإجراء) ، والتي قد تعطي أسماء مفيدة أيضًا. هنا يطلق عليهم par1 ، par2 ،. . . ، parN . هذه هي المتغيرات التي يمكنك استخدامها في التعليمات بين الأقواس المتعرجة. لن يتم تنفيذ الكود في الإجراء تلقائيًا ، عليك كتابة "استدعاء إجراء" 'procedure call' في كل مرة تريد فيها تنفيذ التعليمات الواردة في التعريف . نصيحة : قم بإنشاء إجراء جديد عندما تستخدم سلسلة من التعليمات أكثر من مرة. كود:
Example10: # define how to draw a rectangle procedure rectangle(width, height) { paintWhite repeat(2) { forward(height) right forward(width) right } stopPainting } • عبارة (صيغة) استدعاء الإجراء : كود:
name(arg1, arg2, . . . , argN) هي عبارة استدعاء الإجراء بالاسم name المطابق ونفس المقدار من المعلمات (البارامترات) parameters كما هو الحال لديك. تسمى الحجج (الأدلة) arguments هنا arg1 و arg2 و. . . ، argN ، وهي القيم الخاصة التي سيتم استخدامها (تمريرها) في تعريف الإجراء.(لاحظ أنه فى عبارة إجراء جديد استخدمنا بارامترات parameters أما فى عبارة إستدعاء الإجراء فإنه يتم استخدام أدلة arguments) كود:
Example11: # these instructions will be performed forward(1) rectangle(3,2) # a call to the 'rectangle' procedure forward(3) rectangle(1,4) # another call with other arguments # this is the definition of 'rectangle' procedure procedure rectangle(width, height) { paintWhite repeat(2) { forward(height) right forward(width) right } stopPainting } • الأمر إرجاع (رجعة) Return لإيقاف تنفيذ إجراء قبل أن يصل إلى النهاية ، استخدم الإرجاع return من داخل تعريف الإجراء procedure. يستمر البرنامج في تنفيذ الأوامر بعد الاستدعاء المقابل. كود:
Example12: # these instructions will be performed toWall() # no arguments right forward # go forward until you reach a wall procedure toWall() # no parameters { repeat { if(frontIsObstacle) { # stop "toWall" procedure, # continue with right and forward return } else{ forward } } } • عبارة الإرجاع : كود:
return(arg) بشكل افتراضي ، يقوم الإجراء بإرجاع القيمة صفر. يمكنك تغيير هذا عن طريق إرجاع تعبير expression . كود:
Example13: # this instruction will be performed forward(double(3)) # double the given amount procedure double(n) { return(2 * n) } العودية Recursion يمكن تعريف الإجراءات بشكل متكرر recursively. هذا يعني أنك تستخدم الإجراء procedure الذي تعرفه في تعريف الإجراء نفسه ، من خلال إستدعاؤه . يستغرق الأمر بعض الوقت لفهمه ، لكن اتضح أنها أداة قوية. كود:
Example14: # these instructions will be performed toWall() right forward # go forward until you reach a wall procedure toWall() { # notice that no loops are used if(frontIsObstacle) { # stop "toWall" procedure return } else{ # do one step forward # and do a recursive call! toWall() } }
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
![]() |
العلامات المرجعية |
أدوات الموضوع | |
|
|