التحكم بالتدفق

مكتمل

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

دعنا نفحص بنيات التحكم في التدفق هذه لنرى ما يمكن إجراؤه:

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

  • التحكم بتدفق التنفيذ. تضمن التقنية السابقة حصولك على بيانات إدخال معقولة وصحيحة. تدور هذه التقنية أكثر حول تحديد كيفية تشغيل التعليمات البرمجية. يمكن لمجموعة القيم أن تحدد أي مجموعة عبارات يجري تشغيلها.

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

    إشعار

    يقع التكرار عبر الصفائف خارج نطاق هذه الوحدة. هناك العديد من البنيات لمعالجة التحكم في التدفق في PowerShell. لا يمكننا ذكرها جميعًا، لكننا سنتحدث عن بعض البنيات المهمة التي من المحتمل أن تواجهها في النصوص التي تقرأها أو تكتبها.

إدارة تدفق الإدخال والتنفيذ باستخدام If وElseIf وElse

يمكنك استخدام بنية If لتحديد ما إذا كان تعبير ما True أم False. اعتمادًا على ذلك التحديد، قد تشغل العبارة التي تحددها البنية If. يبدو بناء الجملة لـ Ifعلى النحو التالي:

If (<expression that evaluates to True or False>) 
{
  # Statement that runs only if the preceding expression is $True.
}

العوامل

تحتوي PowerShell على معلمتين مُتضمنتين لتحديد ما إذا كان تعبير ما True أم False:

  • $True تشير إلى أن تعبير ما هو True.
  • $False تشير إلى أن تعبير ما هو False.

يمكنك استخدام عوامل التشغيل لتحديد ما إذا كان تعبير ما بالقيمة True أو False. هناك عدد قليل من عوامل التشغيل. تتمثل الفكرة الأساسية عادةً في تحديد ما إذا كان هناك شيء ما على الجانب الأيسر من عامل التشغيل يتطابق مع شيء ما على الجانب الأيمن، بالنظر إلى حالة عامل التشغيل. يمكن أن يعبر عامل التشغيل عن شروط مثل ما إذا كان الشيء يساوي شيئًا آخر، أو أكبر من شيء آخر، أو يطابق تعبيرًا عاديًا.

وفيما يلي مثال على استخدام عامل التشغيل. يحدد عامل التشغيل -le ما إذا كانت القيمة الموجودة على الجانب الأيمن من عامل التشغيل أقل من القيمة الموجودة على الجانب الأيسر منه أو مساويةً لها:

$Value = 3
If ($Value -le 0) 
{
  Write-Host "Is negative"
}

لن تعرض هذه التعليمة البرمجية أي شيء لأن قيمة التعبير هي False. من الواضح أن القيمة 3 إيجابية.

Else

تشغل البنية Ifعبارات فقط إذا جرى تقييمها إلى True. ماذا لو كنت ترغب في التعامل مع الحالات التي يقيموها إلى False؟ هذا عندما تستخدم البنية Else. If تعبر عن "إذا كانت هذه الحالة المحددة صحيحة، فقم بتشغيل هذه العبارة." Else لا يأخذ تعبيراً. إنها تسجل جميع الحالات حيث تُقيم العبارة If إلى False. عند دمج If مع Else، تشغل التعليمات البرمجية العبارات في إحدى البنيتين. لنعدل التعليمات البرمجية السابقة لتضمين بنية Else:

$Value = 3
If ($Value -le 0) 
{
  Write-Host "Is negative"
} Else {
  Write-Host "Is Positive"
}

لأننا وضعنا Else بجوار قوس النهاية لـ If، فقد أنشأنا بنية مشتركة تعمل كبنية واحدة. إذا شغلت هذه التعليمات البرمجية في وحدة التحكم، سترى أن المطبوعات Is Positive. وذلك لأن If تقيم إلى False، ولكن Else تقيم إلى True. لذا تطبع Else عبارتها.

إشعار

يمكنك استخدام Else فقط إذا كانت هناك بنية If محددة مباشرة فوقها.

ElseIf

تعمل If مع Else على نحوٍ رائع لتغطية جميع المسارات التي يمكن أن تتخذها التعليمات البرمجية. ElseIf هي بنية أخرى يُمكن أن تكون مفيدةً. ElseIf من المفترض أن تُستخدم مع If. تقول "سيتم تقييم التعبير في هذا البناء إذا تم تقييم العبارة If السابقة إلى False." مثل If، يمكن أن تأخذ ElseIf تعبيراً، لذلك فإنه يساعد على التفكير في ElseIf كـ If ثانوية.

فيما يلي مثال يستخدم ElseIf:

# _FullyTax.ps1_
# Possible values: 'Minor', 'Adult', 'Senior Citizen'
$Status = 'Minor'
If ($Status -eq 'Minor') 
{
  Write-Host $False
} ElseIf ($Status -eq 'Adult') {
  Write-Host $True
} Else {
  Write-Host $False
}

من الممكن كتابة هذه التعليمات البرمجية بطريقة أكثر اختصاراً، ولكن هذه الطريقة تظهر استخدام ElseIf. إنها تظهر كيف تُقيم If أولًا، ثم ElseIf ثم Else.

إشعار

كما هو الحال مع Else، لا يمكنك استخدام ElseIf إذا كنت لا تحدد If أعلاها.