الدوال - المهارات الرقمية - ثاني متوسط
الفصل الدراسي الأول
الوحدة الأولى: جمع المعلومات
الوحدة الثانية: مخطط المعلومات البياني
الوحدة الثالثة: البرمجة باستخدام لغة بايثون
الفصل الدراسي الثاني
الوحدة الأولى: تحليل البيانات
الوحدة الثانية: التواصل عبر الإنترنت
الوحدة الثالثة: البرمجة مع بايثون
الفصل الدراسي الثالث
الوحدة الأولى: إنتاج مقطع فيديو
الوحدة الثانية: المخططات البيانية
الوحدة الثالثة: برمجة الروبوت
216 الدرس الثالث الدوال رابط الدرس الرقمي www.ien.edu.sa الدالة (Function) مجموعة من الأوامر التي يتم تجميعها في مكان واحد مع إعطائها اسمًا (تعريفًا) ، ويتم تنفيذها من خلال استدعائها عند الحاجة لها. ويحتوي البايثون على مجموعة من الدوال الجاهزة والتي سبق لك استخدامها، مثل دالة الطباعة (()print)، ودالة الطول (()len) ، ودالة النطاق (()range) ودالة الإدخال (()input). في هذا الدرس ستتعلم كيفية إنشاء دوال جديدة لتساعدك في بعض المهام والمشكلات المتكررة. إنشاء الدوال الخاصة بك في بايثون، يُعرّف الجزء الأول من الدالة باستخدام الكلمة الأساسية def ويحتوي هذا الجزء على تعريف الدالة (function definition) ، ثم يأتي الجزء الثاني وهو اسم الدالة .(name). في نهاية رأس الدالة function header)، هناك نقطتان (colon) للإشارة إلى أن ما يلي عبارة عن مجموعة من المقاطع البرمجية، ويجب وضع مسافة بادئة لها. بعد ذلك، يتبع محتوى الدالة function body) والذي في هذا المثال، يطبع الرسالة فقط. الآن ستحدد دالة تطبع رسالة مرحبًا. استدعاء دالة اسم الدالة. لاستدعاء دالة استخدم اسم الدالة متبوعا بأقواس. ومن الأمثلة على الدالة ما يلي: مرحبًا def my_function(): ( "مرحبا")print def my_function(): ) "مرحبا")print # function call my_function( ) يخبر def جهاز الحاسب أنك تريد تعريف دالة جديدة. الميزة الرئيسة للدوال هي أنه يمكنك استدعاؤها مرارا وتكرارًا من المقطع البرمجي الرئيس. وزارة التعليم Ministry of Education 2024-1446
المُعاملات والوسائط المتغيرات التي يمكنك الإعلان عنها في الدالة تُسمى المعاملات Parameters) ، وتُستخدم هذه المتغيرات داخل الدالة. ونظرًا لأنه لا يمكن الوصول للمعاملات إلا من خلال الدالة فإنه يُشار إليها باسم المتغيرات المحلية Local Variables)، كما يُشار إلى المتغيرات التي تم تمريرها إلى الدالة لتنفيذها على أنها وسائط (Arguments). وتتلقى المتغيرات المحلية للدالة قيم الوسائط كمدخلات ثم تتابع تنفيذ الدالة. ألق نظرة على المثال الآتي، حيث تحدد دالة تسمى printMax مع معاملين a و b وتجد أكبر عدد باستخدام جملة if else الشرطية، ثم تطبع هذا العدد باستخدام دالة الطباعة (()print). المعاملات يتم تحديد المعاملات داخل الأقواس في تعريف الدالة ويتم فصلها بواسطة فاصلة. عندما تستدعي الدالة أدخل القيم بنفس الطريقة. def printMax(a, b): if a > b: elif a == b: ( " هو الأكبر." ,printa b," يساوي " ,printa else: ( " هو الأكبر." ,print(b (" الوسائط 4 هو الأكبر. جرب المقطع البرمجي التالي واكتب النتيجة التي تظهر على الشاشة. def profileMessage(age, name): (age,عمري,name, "اسمي")print profileMessage(15,"") printMax(3, 4) جرب بنفسك وزارة التعدد Ministry of Education 2024-1446
عبارة الإرجاع في بايثون، تُستخدم عبارة الإرجاع (Return statement) لإنهاء تنفيذ استدعاء الدالة وإرجاع قيمة التعبير. يؤدي ظهور عبارة الإرجاع في أي نقطة من محتوى الدالة إلى إنهاء تنفيذ أوامر الدالة وإعادة المقطع البرمجي إلى النقطة التي تلي أمر استدعائه مباشرة. لا يمكن استخدام عبارة الإرجاع خارج الدالة. def squareRoot(a): return a*a المقطع البرمجي الرئيس # final Number = squareRoot(5) print(finalNumber) تعطي عبارة الإرجاع return قيمة ما أو ردًا على مستخدم الدالة، بينما ينتج عن أمر الطباعة print نصًا مطبوعًا. 25 في المثال أدناه، تُرجع دالة الحد الأقصى (maximum) أكبر القيم التي تم إدخالها ، وللقيام بذلك تُستخدم جملة If else الشرطية للعثور وزارة التعليم Ministry of Education 2024-1446 في حال عدم إضافة عبارة إرجاع إلى دالتك فإن الدالة لا تعيد أي شيء. def maximum(x, y): if x > y: return x elif x == y: "الأرقام متساوية." return else: return y print(maximum (2, 3)) 3 على القيمة الأعلى ثم إرجاع تلك القيمة. 218
جرب المقطع البرمجي التالي واكتب النتيجة التي تظهر على الشاشة. def f(x): return 5 * X print(f(2)) print(f(5)) print(f(6)) جرب بنفسك الوسائط الافتراضية في بعض الدوال قد ترغب في جعل بعض المعاملات اختيارية واستخدام القيم الافتراضية إذا كان المستخدم لا يريد إعطاء قيم لهذه المعاملات. يمكن تحقيق ذلك بمساعدة قيم الإعداد الافتراضي إذا لم يتم تمرير قيمة أخرى أثناء تسمية الدالة فستأخذ وسائط الدالة قيم الإعداد الافتراضية. يمكنك تعيين وسائط افتراضية (Default arguments) للمعاملات عن طريق وضع عامل الإحالة () متبوعا بالقيمة الافتراضية بعد تسمية المعاملات في تعريف الدالة. القيمة افتراضية إذا تم استدعاء الدالة بدون وسائط تُستخدم القيمة الافتراضية. إذا كنت ترغب في وضع قيمة مختلفة، يمكنك القيام بذلك كما هو موضح. : ( " مرحبًا " = def helloFunction(message print(message) helloFunction() "مرحبًا من بايثون = helloFunction message مرحبا مرحبا من بايثون وزارة التعو21 Ministry of Education 2024-1446
المتغيرات المحلية والعامة عند تحديد المتغيرات داخل تعريف الدالة، فإنها لا تؤثر ولا تتأثر بالمتغيرات الأخرى التي تحمل نفس الاسم والتي يتم استخدامها خارج تلك الدالة يسمى جزء المقطع البرمجي الذي يُمكن الوصول إلى المتغير واستخدامه بنطاق المتغير، المتغيرات المحلية (Local Variables نطاقها داخل الدالة حيث تم التصريح عنها ، وتبدأ من تعريف اسم الدالة، وتنتهي عند توقف الدالة عن التنفيذ. في المثال التالي دالة استخدمت لأول مرة معامل يسمى ، يستخدم بايثون قيمة المعامل المعلن داخل تلك الدالة. ثم ستسند القيمة 2 إلى ، والاسم x هو متغير محلي لدالتك. لذلك، عندما تغيرت قيمة x في الدالة، فإن x المحددة في الجزء الرئيس لن تتأثر. في الاستدعاء الأخير لدالة الطباعة، ستُطبع قيمة x في القسم الرئيس وتؤكد على أنها لم تتأثر. X = 50 def func(x): print("x= ", x) = X 2 x, لقد غيرت x إلى")print func(x) "لا تزال print("=x x) x= 50 لقد غيرت x إلى 2 لا تزال 50 =x إذا كنت ترغب في تعيين قيمة لاسم محدد في المستوى الأعلى من جزء المقطع البرمجي أي ليس ضمن نطاق معين مثل الدوال أو الفئات)، فأنت بحاجة إلى إخبار بايثون أن الاسم ليس محليًا (local) ولكنه عام (global). يتم ذلك باستخدام المتغيرات العامة وزارة التعليم Ministry of Education 2024-1446 .(Global Variables) 220
في المثال التالي يستخدم فيه الأمر العام (global) للإشارة إلى أن x هو متغير عام، حيث يؤدي إسناد قيمة إلى x داخل الدالة لتغيير قيمة x في الجزء الرئيس. , x) قيمة x هي 50 ☑ = 50 def func(): global x x, قيمة x هي")print X = 2 , "لقد غيرت x العامة إلى ")print لقد غيرت x العامة إلى 2 قيمة x هي 2 المقطع البرمجي الرئيس x) func() , قيمة x هي")print المتغير العام دالة المتغير المحلي وزارة التعداد Ministry of Education 2024-1446
222 لنطبق معًا تدريب 1 اكتب ناتج المقطع البرمجي التالي: الناتج total = 0; تعريف الدالة هنا # def sum( arg1, arg2 ): total = arg1 + arg2; (total, المجموع داخل الدالة: ")print return total; المقطع البرمجي الرئيس # sum( 10, 20 ); (total المجموع خارج الدالة: ")print وزارة التعليم Ministry of Education 2024-1446
تدريب 2 • المقطع البرمجي التالي غير مكتمل. عليك أن تكتب دالة لإيجاد متوسط الأعداد الثلاثة التي أدخلتها في المقطع البرمجي الرئيس. تدريب 3 def المقطع البرمجي الرئيس # ( ) "أدخل الرقم الأول: ")floatinput ) ( أدخل الرقم الثاني: ")floatinput ) ( أدخل الرقم الثالث: ")floatinput num1 = num2 = num3 = result = find_average(num1, num2, num3) (result," متوسط الأرقام هو: ")print اشرح الفرق بين المتغيرات المحلية والعامة. وزارة التعد22 Ministry of Education 2024-1446
224 تدريب 4 اكتب دالة في بايثون تقبل ثلاثة أرقام وتعيد الرقم الأكبر من بين هذه الأرقام. تدريب 5 • اكتب مقطعًا برمجيًا ودالة من أجل طباعة رسالة، على سبيل المثال، "مرحبًا بك في المدرسة يا خالد". اسم المستخدم هو معامل البرنامج. أنشئ المقطع البرمجي الرئيس الذي يحدد قيمة الوسائط والدالة التي تطبع الرسالة. > أنشئ مقطعًا برمجيا آخر يُدخل فيه المستخدم قيمة المعاملات في الدالة، ويطبع المقطع البرمجي الرئيس الرسالة. تدريب 6 • اكتب مقطعًا برمجيًا يسأل الطالب عن درجاته في أربع مواد، ثم أنشئ دالة تأخذ هذه الدرجات كوسائط ويحسب ما إذا كان الطالب قد اجتاز الفصل أم لا. لاجتياز الفصل، يجب أن يكون لدى الطالب متوسط أعلى من 12. يجب أن تكون الدرجات أعدادًا صحيحة أكبر من 0 وأقل من 21 وزارة التعليم Ministry of Education 2024-1446