 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:
|
|
17-10-2022, 01:50 PM
المشاركة 8
|
|
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
}
}
}
• عبارة الإرجاع :
بشكل افتراضي ، يقوم الإجراء بإرجاع القيمة صفر. يمكنك تغيير هذا عن طريق إرجاع تعبير 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()
}
}
|