القرية الإلكترونية - الكترونيات - كمبيوتر - هاردوير - خدمات المواقع - كهرباء - فضائيات - جوال - اتصالات - تكييف وتبريد - اجهزة الانتاج الزراعي - كهرباء السيارات

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


لوحة مفاتيح عربية

العودة   منتدى القرية الإلكترونية > القسم الالكتروني > منتدى الإلكترونيات
التسجيل       اجعل كافة المشاركات مقروءة

منتدى الإلكترونيات قسم الالكترونكس لمناقشة الافكار والمعلومات المتعلقة بالهندسة الالكترونية للمبتدئين والهواة والفنيين - Electronics

رد
 
أدوات الموضوع
قديم 14-10-2022, 11:38 AM   #1
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 333
افتراضي بدء تعلم البرمجة مع تطبيق ربومايند RoboMind السهل الممتع

بدء تعلم البرمجة مع تطبيق ربومايند 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][/IMG]



البرمجة "الأمرية-إلزامية) " imperative تعني أن الكمبيوتر يحصل على قائمة بالأوامر وينفذها بالترتيب ، فى حين تسمح "البرمجة الإجرائية"“procedural programming” (وهو أمر إلزامي أيضًا) بتقسيم هذه التعليمات إلى إجراءات (أو وظائف).
موقع تحميل تطبيق الربومايند : https://www.robomind.net/en/download.html


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 14-10-2022 الساعة 11:47 AM.
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
اعلانات
قديم 14-10-2022, 06:03 PM   #2
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 333
افتراضي

بيئة تطوير الروبومايند The RoboMind development environment

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

للتأكد من أنه يمكنك البدء بسرعة في الموضوعات التي تهمك حقًا ، تم تقديم لغة برمجة جديدة تسمى Robo. إنها لغة شاملة مكرسة لبرمجة الروبوت. لا تزال قويًة بما يكفي لإنشاء الكثير من البرامج المثيرة للاهتمام. كما أن المبادئ التي ستواجهها تشكل جوهر معظم لغات البرمجة الأخرى.

تتيح لك بيئة تطوير RoboMind كتابة البرامج التي سيتم تنفيذها بواسطة روبوت المحاكاة. هذه البيئة تتكون من الأجزاء التالية:

[IMG][/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][/IMG]


محرر النص The text editor
في الواقع ، كل نصوص scripts ROBO هي مجرد ملفات نصية عادية. هذا يعني أنه يمكنك استخدام أي محرر نصوص (مثل المفكرة) لكتابة برامجك. يمكنك بعد ذلك تحميلها في RoboMind.
ومع ذلك ، يوفر محرر النصوص المدمج وظائف إضافية تجعل كتابة البرامج بسيطة قدر الإمكان. تشمل هذه الميزات:


• إبراز highlighting (تمييز)بناء الجملة Syntax : تلوين الجوانب المختلفة من اللغة بشكل مختلف لسهولة القراءة (المتغيرات variables ، التعليمات الأساسية , basic instructions ، الإجراءات , procedures )

[IMG][/IMG]

• إكمال الكود Code completion: لتقليل الكتابة وإدخال الأوامر بسرعة ، هناك إكمال للكود: فقط اكتب الأحرف الأولى من الأمر وسيقوم [Ctrl] + [Space] بإنهائه تلقائيًا نيابة عنك. إذا كان غامضًا ، يتم عرض قائمة منبثقة.

[IMG][/IMG]

• تضمن أرقام الأسطر Line numbers إمكانية العثور على الأخطاء في برنامجك بشكل أسرع.

[IMG][/IMG]

• تظهر الرسائل Messages في الهامش.
• تراجعات undo غير محدودة.
• وظيفة البحث والاستبدال المتقدمة التي تسمح بالتعبيرات العادية.
• سيشير السهم إلى الأمر الذي يتم تنفيذه في برنامجك في الوقت الحالي.

[IMG][/IMG]


الشاشة The monitor
الشاشة هي الشاشة التي يتم فيها رؤية(مشاهدة)الروبوت وعالمه. يمكن استكشاف البيئة بسهولة عن طريق سحب الخريطة بالماوس. يمكنك أيضًا التكبير لضبط مستوى التفاصيل وفقًا لتفضيلاتك. يمكن للكاميرا تتبع الروبوت تلقائيًا.

لاحظ أن فى الإصدار 1.0 تم جعل الشاشة قابلة للضبط skinnable (تغيير جلدها) . هذا يعني أنه يمكنك تخصيص مظهر الروبوت الخاص بك وعالمه وفقًا لرغباتك الخاصة.

بجانب كل هذا ، يمكنك حتى التقاط لقطات شاشة للوضع الحالي. يمكن تخزين صور jpg هذه تلقائيًا في مجلد معين مسبقًا (راجع: ملف> إعدادات> عام> لقطات File > Settings > General > Snapshots ). تم أيضًا إنشاء معظم الصور على هذا الموقع باستخدام هذه الوظيفة ، فقط لتوضيح فائدتها. في الواقع ، هذه الميزة مفيدة بشكل خاص للمعلمين للمساعدة في توضيح التمارين.


[IMG][/IMG]



تنفيذ البرامج Execution of programs
لا يتعين عليك اتخاذ أي إجراء خاص لمراقبة كيفية عمل برنامجك. يمكن تنفيذ البرامج النصية scripts الصحيحة بنقرة واحدة فقط ، مما يحسن التفاعل في دورة التصميم / الاختبار. في بعض التطبيقات الأخرى ، قد تحتاج إلى تجميع (ترجمة) compile نصوصك يدويًا.

مع الأخذ في الاعتبار أنك لن تكون سعيدًا بالأخطاء (الأخطاء bugs) التي ارتكبتها في برنامجك ، فمن المفضل أن تتمكن من اكتشاف هذه الأخطاء في مرحلة مبكرة. هذا هو السبب في أنك سوف تكون على دراية بالأخطاء قبل أن يتم تنفيذ البرنامج. ستظهر هذه التنبيهات أسفل الشاشة.

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


بيئات متغيرة Variable environments
لن تكون الأشياء ممتعة للغاية إذا كانت البيئة ستظل دائمًا كما هي. هذا هو السبب في أنه يمكن تحميل مجموعة متنوعة من الخرائط maps ليقوم الروبوت باللعب فيها. سيتوفر عدد متزايد من الخرائط بمرور الوقت لزيادة حداثة تجربة ROBO. أيضًا مع القليل من الاختراق hacking من جانبك ، يمكنك إنشاء خرائط بنفسك.


F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  
قديم 15-10-2022, 11:41 AM   #3
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 333
افتراضي

التعليمات الأساسية Basic instructions
يوجد في كل مجال عدد ثابت من التعليمات الأساسية التي يمكنك استخدامها لكتابة برنامج. يُسمح لك فقط باستخدام هذه التعليمات مباشرةً عند كتابة نص البرنامج script . بالنسبة إلى الروبوت الخاص بنا ، توجد التعليمات الأساسية التالية:


[IMG][/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]

[IMG][/IMG]


مثال 1: اكتب اسمك Write your name
نظرًا لأن الروبوت قادر على الرسم ، يمكنك إنشاء برامج رسم بسيطة. باستخدام التعليمات paintWhite and stopPainting ، يمكنك توجيه (أمر) الروبوت لوضع الفرشاة على الأرض أم لا. عندما تترك الروبوت يتحرك ، فإنه سيترك خطاً على الأرض. بهذه الطريقة يمكنك كتابة أحرف مثل 'A' .
في الخريطة openArea.map سيكون لديك مساحة كافية لإنشاء قطعة فنية جميلة. حاول استخدام جهاز التحكم عن بعد من القائمة Run > Remote control للسماح للروبوت بالطلاء.
راجع تعليمات الحركة move والطلاءpaint .

[IMG][/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)
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 15-10-2022, 07:04 PM   #4
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 333
افتراضي

هياكل البرمجة Programming structures
ستجد هنا الهياكل النحوية structures المسموح بها لتحديد سلوك الروبوت.
• Comment
• Loops
• If-structures
• Logical expressions
• Procedures
• Arithmetic
• Variables
• End


• التعليق
• الحلقات
• هياكل If
• التعبيرات المنطقية
• الإجراءات
• العمليات والمعاملات لحسابية
• المتغيرات
• النهاية

1- التعليقات Comments

كود:
# free text that will not be evaluated
لن يتم تفسير كل النص الذي يظهر بعد علامة الهاش "#" على أنه تعليمات . سيستمر الروبوت في قراءة السطر التالي في البرنامج النصي script . استخدم هذه الإمكانية لإضافة تعليق توضيحي لأجزاء من البرنامج النصي ، لنفسك فقط ، كتوثيق حول كيفية عمل هذه الأجزاء.


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)
	}
}

F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 16-10-2022, 10:50 AM   #5
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 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)
}

F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 16-10-2022, 05:50 PM   #6
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 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][/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][/IMG]
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 16-10-2022, 05:59 PM   #7
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 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][/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][/IMG]


كود:
repeat{
    if(rightIsObstacle){
        if(frontIsClear){
            forward(1)
        }

        else{
            left
        }
    }

    else{
        right
        forward(1)
    }

    if(frontIsBeacon){
        pickUp
        end
    }
}
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 17-10-2022, 10:50 AM   #8
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 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()
      }
}
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
رد

العلامات المرجعية

أدوات الموضوع

تعليمات المشاركة
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع إلى

الساعة الآن: 02:21 PM


Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025
Feedback Buttons provided by Advanced Post Thanks / Like (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
القرية الإلكترونية