مقرر E - الدوال 1 - الدوال البسيطة للبطل الخارق

يقدم هذا الدرس مفهوم "الدوال".

  • Computer science
  • functions
Print lesson
  • الأعمار 9+
  • 65+ دقائق
  • MakeCode Editor

المقدمة

يعرض هذا الدرس مفهوم "الدوال". الدوال هي أجزاء من التعليمات أو التعليمات البرمجية التي نعلم أننا سنستخدمها. حيث نستبدل النسخ واللصق باستخدام الدوال. نقوم باعطاء اسم لكتلة التعليمة البرمجية وفي اي وقت نستطيع ببساطة استدعاء التعليمة البرمجية من خلال استدعاء الدالة التي قمنا بتسميتها.

في هذا الدرس ، سنستدعي دالة بسيطة ونستخدم الأزرار لإنشاء إجراءات قد يفعلها البطل خارق.

هناك فوائد عديدة عند استخدام الدوال حيث انه في اي وقت نريد تكرار التعليمة البرمجية او حلقات التكرار فأننا نستخدام الدوال.

اولاً, تساعدنا الدوال في تكرار اي تعليمة برمجية في مواقع مختلفة من التطبيقنا البرمجي. نحن فقط نحتاج الى كتابتها مرة واحدة ثم استدعائها بواسطة الدالة التي قمنا بتسميتها. هذة الفوائد سوف تتضح اكثر في الدرس التالي من سلسلة FUNCTIONS FOR A DIGITAL PET'.

و بسبب عدم تكرار التعليمة البرمجية كثيراً, فان الدالة تسمح لنا بكتابة تعليمة برمجية مشابة في الحجم وسهلة القراءة مع امكانية التعديل.

استخدم المثال التالي لتوضيح سهولة إجراء التغييرات على الدوال.


let KilometersRan = 0
input.onButtonPressed(Button.A, () => {
    Run_FasterThan_A_Speeding_Bullet()
    Run_FasterThan_A_Speeding_Bullet()
    Run_FasterThan_A_Speeding_Bullet()
    Run_FasterThan_A_Speeding_Bullet()
    Run_FasterThan_A_Speeding_Bullet()
})
input.onButtonPressed(Button.B, () => {
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
})
function Run_FasterThan_A_Speeding_Bullet()  {
    KilometersRan = 5
    basic.showNumber(KilometersRan)
    basic.clearScreen()
    basic.pause(100)
}
 
Text
Xpath: /div[2]/div/pre/code

هنا الزرين يفعلان نفس الشيء بالضبط. إذا قمت بالضغط على A أو B فسيظهر كلاهما وامضًا 5. أخبر الطلاب بإظهار الوميض 3 بدلاً عن ذلك. ما عدد التغييرات التي نحتاجها لإجراءها على الزر A؟ (تغيير واحد) كم عدد التغييرات التي نحتاجها لإجراءها على الزر B؟ (5 تغييرات!) كان تغيير الدالة أسهل بكثير من تغيير الكتلة البرمجية الكبيرة.

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

قد يقوم المدربون بما يلي مع الدرس الأول حول الدوال.

  1. التركيز على الملاحظة في البداية. يشاهد ويستمع الطلاب. (التفسير الأولي للكود البرمجي / التحدي 1)
  2. يستمر المعلم في القيام بمعظم الدرس ويقوم الطلاب بمساعدته. يعطي تغذية فورية على المساعدة. (التحدي 2 - الممارسة المستقلة)

للدرس الثاني ، "وظائف من أجل PET DIGITAL" ، يمكن للمدربين بعد ذلك إما تكرار ما ورد أعلاه أو التحرك ببطء للسماح لمزيد من المسؤولية للمتعلمين.

وبالطبع سيعتمد ذلك على الطلاب ، يمكن للسقالات التعليمية تسهيل فهم هذه المفاهيم.

صممت دروسنا لدورة المايكروبيت ( Micro:bit) لتطبيق المعرفة المكتسبة من أساسيات علوم الحاسب و نظام البرمجة Code.org CS. قبل أن يبدأ الطلاب هذه الدورة ،نحن نشجعهم أولاً على إكمال كل أساسيات علوم الحاسب كشرط مسبق. كما ينبغي على الطلاب أن يكونوا على دراية بالدوال من أساسيات علوم الحاسب و Code.org.

الخلفية

يُشجع الطلاب أولاً و بشكل كبير على إكمال التالي:

يشجع المعلم الطلاب على قراءة الجزء التالي وإكماله:

دليل المعلم

افتح افتح teacher resources

نشاط

ما ستحتاج إليه

  • ١- مايكرو:بت (micro:bit)
  • ١- سلك USB
  • ١-AAA مجموعة بطاريات (اختياري)
  • ٢-AAA بطاريات (اختياري)

التوضيحات


function doSomething()  {
    basic.showString("Hello!")
}

doSomething()
            

الدالة

دالة تتيح لك إنشاء جزء من التعليمات البرمجية يمكنك استخدامها في برنامجك الخاص.

basic.showIcon(IconNames.Heart)

أيقونة العرض

يعرض الرمز المحدد على شاشة LED


input.onGesture (Gesture.Shake، () => {

})
            

onGesture

بدء تشغيل معالج حدث (جزء من البرنامج الذي سيتم تشغيله عندما يحدث شيء) يعمل هذا المعالج عند القيام بحركة (مثل هز المايكروبيت).


({}<= ()input.onButtonPressed(Button.A
            

عند ضغط زر التشغيل

ابدأ بتشغيل معالج الحدث (جزء من البرنامج الذي سيتم تشغيله عندما يحدث شيء، مثل عند الضغط على زر)

4 خطوات

الممارسة الموجهه

سنجعل التعليمات أو التعليمات البرمجية عبر الإنترنت للغة مايكروبيت (micro:bit). بعد ذلك ، انتقل إلى: makecode.microbit.org

let KeepRunning = false
let KilometersRan = 0
let XRunningPosition = 0
let YRunningPosition = 0
input.onButtonPressed(Button.A, () => {
    Run_FasterThan_A_Speeding_Bullet()
})
function Run_FasterThan_A_Speeding_Bullet()  {
    KilometersRan = 0
    KeepRunning = true
    XRunningPosition = 0
    YRunningPosition = 0
    for (let YRunningPosition = 0; YRunningPosition <= 5; YRunningPosition++) {
        for (let XRunningPosition = 0; XRunningPosition <= 5; XRunningPosition++) {
            led.plot(XRunningPosition, YRunningPosition)
            led.unplot(XRunningPosition - 1, YRunningPosition - 1)
            basic.pause(70)
        }
    }
}
input.onButtonPressed(Button.B, () => {
    MagicUsedToConjure()
})
function Object_Your_Superhero_Can_Conjure()  {

}
function MagicUsedToConjure()  {
    for (let index = 0; index <= 4; index++) {
        Object_Your_Superhero_Can_Conjure()
        basic.clearScreen()
        basic.pause(150)
    }
}
 
Text
XPath: /div[2]/div[3]/div[3]/div/pre/code

يستدعي هذة التعليمة البرمجية بعض الدوال المعقدة نوعًا ما (Run_FasterThan_A_Speeding_Bullet ، Magic-Used-To-Conjure) ولكن تفاصيل كيفية عمل هاتين الدالتين ليست مهمة حالياً في هذا الدرس. يُعد وضع المكالمات إلى تلك الدوال بمثابة جوهر هذا الدرس. أين وكيف نستدعي هذه الدالة؟ أين يجب أن تبدأ كتل معينة من الكود البرمجي؟

من أمثلة هذا الدرس أيضًا رؤية مثال حول كيفية مساعدة الدوال في تنظيم مشاكل الكود البرمجي.

في هذا الدرس ننظر إلى البطل الخارق.

الضغط باستدعاء الدالة Run_FasterThan_A_Speeding_Bullet. وهذا يبين ان المصابيح "قيد التشغيل عبر الشاشة". ويمكنه نقل بطلنا.

الضغط على زر B وهز المايكرو:بت (micro:bit)اسيجعل البطل يقوم بقوى خارقة اخرى. هذا ما يحتاجه الطلاب للمساعدة من اجل تطوير التحديات. يؤدي الضغط على زر B إلى استحضار البطل الخارق أو إنشاء كائن. يجب أن يكون رمزًا أو صورة وامضة تم إنشاؤها باستخدام مؤشرات LED أو أيقونة إظهار. وتتمثل المهمة في أن يقوم الطلاب بتحديد ما يمكن أن يستحضره البطل ، وأن يقوم الطلاب أيضًا بإنشاء قصة تخبرهم لماذا يستخدم البطل الخارق هذه القدرة. تحدي الأهتزاز مشابه.

التعليمة البرمجية النهائية هنا .

تحدي الدوال البسيطة

التحدي رقم ١

هل يمكنك جعل البطل الخارق يستحضر كائن؟ أنشئ قصة مرتبطة بهذه الفكرة.

تلميح: ضع شيئًا في الدالة Object_Your_Superhero_Can_Conjure. أظهر ما يمكنهم إنتاجه بطريقة سحرية.

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

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

let YRunningPosition = 0
let XRunningPosition = 0
let KeepRunning = false
let KilometersRan = 0
input.onButtonPressed(Button.B, () => {
    MagicUsedToConjure()
})
function MagicUsedToConjure()  {
    for (let index = 0; index <= 4; index++) {
        Object_Your_Superhero_Can_Conjure()
        basic.clearScreen()
        basic.pause(150)
    }
}
function Object_Your_Superhero_Can_Conjure()  {
    basic.showIcon(IconNames.Ghost)
}
input.onButtonPressed(Button.A, () => {
    Run_FasterThan_A_Speeding_Bullet()
})
function Run_FasterThan_A_Speeding_Bullet()  {
    KilometersRan = 0
    KeepRunning = true
    XRunningPosition = 0
    YRunningPosition = 0
    for (let YRunningPosition2 = 0; YRunningPosition2 <= 5; YRunningPosition2++) {
        for (let XRunningPosition2 = 0; XRunningPosition2 <= 5; XRunningPosition2++) {
            led.plot(XRunningPosition2, YRunningPosition2)
            led.unplot(XRunningPosition2 - 1, YRunningPosition2 - 1)
            basic.pause(70)
        }
    }
}
input.onGesture(Gesture.Shake, () => {

})
 
Text
XPath: /div[2]/div[3]/div[3]/div[2]/div/pre/code

كود الانتهاء متاح هنا

التحدي رقم ٢

يمكنك أن تجعل البطل الخارق يفعل شيئا آخر عندما نحن يهز الميكرو:بت (micro:bit) ؟ انشاء قصة مرتبطةبهذه الفكرة.

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

مثال - سوف تختلف الإجابات.... المثال يحوي على مايكرو:بت يظهر رمز.يفاجأ البطل عند اهتزازه من قبل اي شخص.

let YRunningPosition = 0
let XRunningPosition = 0
let KeepRunning = false
let KilometersRan = 0
input.onButtonPressed(Button.B, () => {
    MagicUsedToConjure()
})
function MagicUsedToConjure()  {
    for (let index = 0; index <= 4; index++) {
        Object_Your_Superhero_Can_Conjure()
        basic.clearScreen()
        basic.pause(150)
    }
}
function Object_Your_Superhero_Can_Conjure()  {
    basic.showIcon(IconNames.Ghost)
}
input.onButtonPressed(Button.A, () => {
    Run_FasterThan_A_Speeding_Bullet()
})
function Run_FasterThan_A_Speeding_Bullet()  {
    KilometersRan = 0
    KeepRunning = true
    XRunningPosition = 0
    YRunningPosition = 0
    for (let YRunningPosition2 = 0; YRunningPosition2 <= 5; YRunningPosition2++) {
        for (let XRunningPosition2 = 0; XRunningPosition2 <= 5; XRunningPosition2++) {
            led.plot(XRunningPosition2, YRunningPosition2)
            led.unplot(XRunningPosition2 - 1, YRunningPosition2 - 1)
            basic.pause(70)
        }
    }
}
input.onGesture(Gesture.Shake, () => {
    basic.showIcon(IconNames.Surprised)
})
 
Text
XPath: /div[2]/div[3]/div[3]/div[2]/div[2]/pre/code

التعليمات البرمجية الابتدائية متاحة هنا

التطبيق الفردي

انشى باستخدام ( micro:bit)بطلك الخارق بتعديل بعض الدوال في الكتلة البرمجية السابقة ومعالجة الأحداث. على بطلك الخارق ان ينفذ 3 قوى جديدة. تغيير الرموز او LEDs يمكن ان ينتج بطل خارق جديد. كن على استعداد لأخبار قصة عن البطل الخارق الجديد ولماذ يقوم بعمل الاجراءات التي اخترتها.

يمكن ان تجد التعليمة البرمجية للبدء هنا.

اختبار قصير

أجب على هذه الأسئلة لتظهر مدى استيعابك للأنشطة و الصعوبات السابقة.

السؤال ١

ماهي فوائد استخدام الدوال؟

اظهر الاجابة

أي من هذه هي إجابة مقبولة

  1. تتيح لنا الدوال تكرار الكود البرمجي دون إعادة كتابتها بحيث يصبح الكود أصغر.
  2. إذا احتجنا إلى إجراء تغييرات ، فلا يتعين علينا سوى تغيير الكود البرمجي في مكان واحد.
  3. تسمح لنا الدوال بتنظيم الكود بشكل أفضل.

السؤال ٢

ما هو الحدث الذي يبدأ / يستدعي داله في هذا الكود ؟

اظهر الاجابة
on shake
on button A pressed
on button B pressed

السؤال ٣

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

إظهار الإجابة
Game Console Functions
Start Game
Show Menu
Save Game
etc

مثال اخر صنع قمع الآيس كريم.

Making Ice Cream Cone Functions
Choose Flavor
Grab Cone
Scoop Ice Cream
Put Scoop on Cone
EAT!!!
Selecting this opens external content from our support system, which adheres to their privacy policy.