حل قضية ميتا معرفة 1
التبليط بواسطة وحدة تبليط معطاة
امامنا القطعة التالية التي ستكون وحدة التبليط لدينا:
لبداية التبليط نحتاج معرفة نقطة البداية، من أي مكان سنبدأ بالتبليط؟
بما أن المساحة المعطاة لدينا لتبليطها هي مستطيلة الشكل.
نرى أنه من الأسهل لنا وللقيام بعملية التبليط البدء بزاوية من زوايا المستطيل.
نختار الزواية اليسرى العليا، كما هو مبين في الصورة أدناه:
نقوم بوضع الكائن (الوحدة المعطاة)، في المكان المطلوب.
نستطيع استخدام لبنة إذهب الى الموضع وذلك لتسهيل التعامل عند تشغيل البرنامج كل مرة.
نقوم بتعيين الاحداثيات س وص .
بعد ان قمنا بتحديد مكان الوحدة، نقوم بإستعمال لبنة إطبع للقيام بتليط اول قطعة.
نرى الان اننا بحاجة الى طباعة الوحدة مرة أخرى، نحتاج إزاحة معينة الى اليمين! ما هو مقدار الإزاحة؟
نلاحظ ان الازاحة التي نريدها تعبر عن طول الوحدة.
في حالة كان مقدار الازاحة اقل من طول الوحدة نحصل على ما يلي:
في حالة كان مقدارالازاحة مساوي لطول الوحدة نحصل على التالي:
نحسب ونقدر مقدار الازاحة المطلوبة وندخلها في لبنة تحرك
نلاحظ انه تكون لدينا فراغ بين الوحدتين.
كيف بإمكاننا حل المشكلة؟ هل بإستطاعتنا الاستعانة بالوحدة لتغطية الفراغ، أم نحن بحاجة لطريقة أخرى.
لحل المشكلة نحاول النظر الى الوحجة بشكل مختلف، نستعين بالتحويلات الهندسية.
نقوم بالاستعانة بلبنة إستدر بمقدار معين من الدرجات.
كم مقدار الإستدارة؟ على أي جهة؟
نستعين بلبنة إستدر _ درجة
نستطيع الوصول الى الوضع الذي نريده من خلال الاستدار مقدار 90 درجة.
نلاحظ ان الدوران/ الإستدارة لا تكفي للقيام بالتبليط وحل المشكلة.
نحتاج الى إزاحة معينة، ما هو مقدار الإزاحة.
نلاحظ ان مقدار الازاحة مساوي لنصف طول الوحدة.
نحسب ونقدر مقدار الازاحة المطلوبة وندخلها بلبنة تحرك
نحاول التفكير بطريق أخرى لحل المشكلة، غير التحويلات الهندسية.
نتذكر المظاهر وكيفية انشاءها.
نرى ان المظاهر هنا بإمكانها مساعدتنا للحصول على عدة وضعيات لوحدة التبليط لدينا.
نختار وحدتي التبليط الملائمتين ونستعين بهما لإكمال تبليط المساحة المطلوبة.
في حالة استعمال هذا الطريقة سنحتاج إستعمال اللبنات داخل وحدة المظاهر.
انقر هنا لرؤية المواد المتعلقة بالمظاهر اضغط هنا
الان بالاعتماد على المظاهر، كيف بامكاننا التبليط؟
نريد اعتماد وحدتين، ونلاحظ كما قمنا بفعله سابقا بطباعة الوحدة بمكان البداية ثم استدارة مقدار 90 درجة، ومن ثم ازاحة مقدار نصف طول الوحدة.
او استعمال وحدتين بحيث نطبع المظهر الأول، ومن ثم نقوم بإزاحة مقدار نصف طول الوحدة ونطبع المظهر الثاني.
ينتج لدينا كما يظهر أدناه:
نلاحظ أن طول المستطيل الذي نريد تبليطه مساوي ل 4 أضعاف طول القطعة أعلاه.
نريد تبليط بشكل أفقي، نحتاج هنا للقيام بتكرار 4 مرات لطباعة الكائن أعلاه.
نستعين بلبنة كرر _ مرات من فئة التحكم.
نضع بداخلها الكود البرمجي لطباعة الشكل أعلاه (المستطيل).
ونضع مقدار التكرار الذي نريده.
لتسهيل البرمجة، ولجعل الكود ذو نجاعة، نقوم بالإستعانة ب إنشاء لبنة نسميها المستطيل ونضع فيها الكود البرمجي لإنشاء المستطيل.
بإمكاننا تغيير أرقام المظاهر وفق ما تم القيام به في البرنامج.
مقدار الازاحة هنا هو يعبر عن نصف طول الوحدة.
بعد أن قمنا بإنشاء لبنة المستطيل نضعها داخل لبنة كرر 4 مرات.
نلاحظ عند تشغيل البرنامج انه لم يعطي نتيجة كما توقعنا.
نرى أننا نحتاج إستعمال لبنة تغيير المظهر وذلك لإرجاع مظهر الكائن للمظهر البدائي في كل مرة نقوم بإنشاء مستطيل.
إضافة الى اننا بحاجة الى استعمال لبنة تحرك_ خطوات، وذلك لجعل المستطيلات مجاورة لبعضها وليست على بعضها البعض.
هنا قمنا بتبليط السطر الأول، نحسب ونرى كم سطر نحن بحاجة لتبليطه.
بحساب عرض المستطيل وعلاقته مع طول الوحدة، نرى أننا بحاجة الى تبليط 5 أسطر.
أي أننا بحاجة الى استعمال لبنة كرر _مرات.
ولكن نحتاج الى القيام بعدة أمور أيضا.
نريد أرجاع الكائن بعد إتمامه السطر الى بداية السطر التالي:
نحتاج الى معرفة احداثيات المكان الجديد.
نلاحظ أن قيمة س وقيمة ص تتغير
قيمة س x الجديدة ستكون كما هي في البداية، أي نضع القيمة البدائية نفسها.
أما قيمة ص y فستكون أقل بمقدار معين، وهذا المقدار عبارة عن قيمة طول الوحدة.
نستعين بلبنة غير الموضع ص بمقدار __ ، وبلبنة اذهب الى الموضع: س__ ص__، بالاضافة الى لبنة المتغير ص.
ونضع القيم ثم نضعهن بالشكل التالي داخل الحلقة الثانية:
نستعين بلبنة اختف من فئة المظاهر ونضعها في اخر البرنامج كي نرى التبليط النهائي بصورة افضل.
نحصل على الكود البرمجي النهائي التالي:
نحصل على التبليط التالي:
برنامج الحل: