يستخدم أبسط نمط من برنامج كاريل النص لتحديد سلسلة من الأوامر المدمجة التي ينبغي تنفيذها عندما يكون البرنامج run . النظر في البرنامج كاريل بسيط أدناه. النص على اليسار هو البرنامج. تظهر حالة كاريل على اليمين:
اضغط على زر "تشغيل" لتنفيذ البرنامج. تتم كتابة البرامج عادة في تطبيق خاص يسمى بيئة التطوير المتكاملة (IDE) ومعظم برامج كاريل مكتوبة في IDE تسمى Eclipse . مثل IDE ، يمتلك هذا القارئ القدرة على تنفيذ البرامج من أجل مساعدتكنرىكيف تعمل الأشياء كما تتعلم.
يتكون البرنامج من عدة أجزاء. الجزء الأول يتكون من الأسطر التالية:
/* * ملف: أولكاريل * ------------ * يعرف برنامج run طريقة " run " بثلاثة أوامر. هذه ال * أوامر تسبب كاريل إلى move إلى الأمام كتلة واحدة، و * التقاط مخروط ثم move قدما إلى الزاوية القادمة. */
هذه الخطوط هي مثال على أ تعليق وهو ببساطة نص مصمم لشرح تشغيل البرنامج للقراء البشر. تبدأ التعليقات في كل من كاريل و Java بالأحرف /* وتنتهي مع الشخصيات */ . هنا ، يبدأ التعليق في السطر الأول وينتهي بعدة أسطر لاحقًا. النجوم على الأسطر الفردية التي تشكل نص التعليق ليست مطلوبة ، ولكن تسهل على القراء من البشر رؤية مدى التعليق. في برنامج بسيط ، قد تبدو التعليقات المستفيضة سخيفة لأن تأثير البرنامج واضح ، لكنها مهمة للغاية كوسيلة لتوثيق تصميم برامج أكبر وأكثر تعقيدًا. الجزء الثاني من البرنامج هو الخط:
import stanford.كاريل.*;
يطلب هذا السطر إدراج جميع التعاريف من stanford.كاريل مكتبة. تحتوي هذه المكتبة على التعريفات الأساسية اللازمة لكتابة برامج كاريل ، مثل تعريفات العمليات القياسية move() و pickBeeper() . نظرًا لأنك تحتاج دائمًا إلى الوصول إلى هذه العمليات ، فإن كل برنامج كاريل تكتبه سيتضمن أمر الاستيراد هذا قبل كتابة البرنامج الفعلي.
يتكون الجزء الأخير من البرنامج كاريل من تعريف البرنامج التالي:
public class أولكاريل extends كاريل {
public void run() {
move();
pickBeeper();
move();
}
}
لفهم هذا التعريف ، من المفيد أن ننظر بعناية أكبر في هيكله. تعريف برنامج أولكاريل يتكون من السطر الذي يبدأ بـ public class ويشمل كل شيء بين قوس مجعد في نهاية هذا الخط ودعامة إغلاق المقابلة في السطر الأخير من البرنامج. الخط الوحيد الذي يقدم الصف الجديد يسمى رأس من التعريف ؛ الكود بين الأقواس يسمى الجسم .
في البرمجة ، يكون من المفيد للغاية التفكير في تعريف معين وجسمه كأفكار قابلة للفصل. في هذا المثال ، يحتوي تعريف أولكاريل على النموذج التالي ، حيث يمكن وضع نص التعريف بالكامل في الاعتبار في الوقت الحالي:
public class أولكاريل extends كاريل {
نص تعريف البرنامج
}
يخبرك سطر العنوان في الجزء العلوي قليلاً عن برنامج أولكاريل ، حتى قبل أن تنظر لمعرفة ما يحتويه الجسم. الجملة public class يبدأ تعريف البرنامج. الجملة extends كاريل يستخدم للإشارة إلى ذلك أولكاريل هو برنامج كاريل .
الآن دعنا ننظر إلى نص برنامج أولكاريل. يتكون هذا الجسم من الأسطر التالية:
public void run() {
move();
pickBeeper();
move();
}
هذه السطور تمثل تعريف جديد طريقة ، الذي يحدد تسلسل الخطوات اللازمة للرد على أمر. كما هو الحال في برنامج أولكاريل نفسه ، يتكون تعريف الطريقة من جزأين يمكن اعتبارهما منفصلين: السطر الأول يشكل رأس الطريقة والرمز بين الأقواس المعقوفة هو نص الطريقة. إذا تجاهلت النص الآن ، فإن تعريف الطريقة يبدو كما يلي:
public void run() {
نص تعريف الطريقة
}
أول كلمتين في رأس الأسلوب ، public و void ، جزء من بنية جافا النحوية ، ويجب أن تشعر بحرية تجاهلها في هذه المرحلة. تحدد الكلمة التالية في سطر الرأس اسم الطريقة الجديدة ، والتي في هذه الحالة هي الطريقة run . يعني تعريف الطريقة أن كاريل يمكنه الآن الاستجابة إلى أمر جديد بهذا الاسم. ال run يلعب الأمر دورًا خاصًا في برنامج كاريل . عند بدء تشغيل برنامج كاريل يقوم بإنشاء مثيل كاريل جديد ، ويضيف ذلك كاريل إلى عالم تحدده ، ثم يصدر الأمر run . يتم تحديد تأثير البرنامج جري بواسطة run طريقة run ، وهو عبارة عن سلسلة من الأوامر التي run الروبوت بالترتيب. على سبيل المثال ، run طريقة run لبرنامج أولكاريل هو:
move();
pickBeeper();
move();
وهكذا ، إذا كانت الحالة الأولية للعالم تتطابق مع المثال الوارد في الفصل 1 ، كاريل أول move ثانية للأمام في الزاوية التي تحتوي على مخروط ، تلتقط تلك مخروط ، وأخيراً move ثانية للأمام إلى الزاوية قبل الجدار مباشرةً ، كما هو موضح في الرسم البياني التالي قبل وبعد:
برنامج أولكاريل المحدد أعلاه لا يفعل الكثير حتى الآن. دعونا نحاول جعلها أكثر إثارة للاهتمام قليلا. لنفترض أن الهدف ليس مجرد الحصول على كاريل لالتقاط مخروط ولكن إلى move مخروط من موقعها الأولي في العمود الثاني والصف الأول إلى مركز الحافة. وبالتالي ، فإن مهمتك التالية هي تحديد برنامج كاريل جديد يحقق المهمة الموضحة في هذا المخطط:
الأوامر الثلاثة الأولى في البرنامج الجديد - move للأمام ، والتقاط مخروط ، ثم move حتى الحافة - هي نفسها كما كانت من قبل:
move();
pickBeeper();
move();
من هنا ، فإن الخطوة التالية هي الاتجاه نحو اليسار لبدء تسلق الحافة. هذه العملية سهلة ، لأن كاريل لديه أمر انعطفلليسار في ذخيرته القياسية. يؤدي تنفيذ أمر انعطفلليسار في نهاية التسلسل السابق للأوامر إلى ترك كاريل الشمال عند زاوية الصف الأول والعمود الثالث. إذا قام كاريل بتنفيذ أمر move ، move إلى الشمال move للوصول إلى الموضع التالي:
من هنا ، الشيء التالي الذي عليك القيام به هو كاريل إلى الاستدارة يمينًا بحيث يواجه الشرق مرة أخرى. في حين أن هذه العملية سهلة من الناحية النظرية تمامًا مثل تحويل كاريل إلى اليسار ، إلا أن هناك مشكلة بسيطة: كاريل لغة كاريل على turnLeft القيادة ، ولكن لا turnRight أمر. يبدو الأمر كما لو كنت قد اشتريت نموذج الاقتصاد واكتشفت الآن أنه يفتقد إلى بعض الميزات المهمة.
في هذه المرحلة ، لديك أول فرصة لبدء التفكير كمبرمج. لديك مجموعة واحدة من الأوامر ، ولكن ليس بالضبط المجموعة التي تحتاج إليها. ما الذي تستطيع القيام به؟ هل يمكنك إنجاز تأثير أمر انعطفيمينا باستخدام القدرات التي لديك فقط؟ الجواب ، بالطبع ، هو نعم. يمكنك تحقيق تأثير الانعطاف يمينًا عن طريق الدوران الأيسر ثلاث مرات. بعد ثلاث لفات كاريل ، سوف يواجه كاريل في الاتجاه المطلوب. من هنا ، كل ما عليك فعله هو البرنامج من كاريل إلى move إلى مركز الحافة ، واسقاط مخروط ثم move إلى الأمام إلى الموضع النهائي. هنا هو التنفيذ الكامل ل خطوةللأعلى البرنامج الذي ينجز المهمة بأكملها: