Advertisement
  1. Code
  2. Coding Fundamentals
  3. Workflow

توفيرا للوقت والجهد مع تكرار AppleScript الحلقات

Scroll to top
Read Time: 10 min

() translation by (you can also view the original English article)

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


المزيد من الدروس AppleScript كبيرة

قبل أن نبدأ بالتعلم عن تكرار الحلقات، تأكد من التحقق من بعض من الدروس السابقة لدينا AppleScript.


كرر الفرح السبر

إذا فعلت ذلك بشكل صحيح في المرة الأولى ، ألا يكفي مرة واحدة؟

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

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


هيكل حلقة تكرار

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

[ابليسكريبت]
كرر 3 مرات
- أوامر لتكرار
نهاية تكرار
[/ ابليسكريبت]

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

The structure of a repeat loopThe structure of a repeat loopThe structure of a repeat loop
بنية تكرار الحلقة.

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

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


أنواع تكرار الحلقات

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

واحد حلقة لا نهائية

النوع الأول من التكرار هو حلقة لا نهائية. يحدث هذا إذا كنا ببساطة نستخدم كتلة مكررة بدون معدِلات من أي نوع.

[ابليسكريبت]
ضبط x إلى "monotony"
كرر
مربع حوار العرض x
نهاية تكرار
[/ ابليسكريبت]

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

كرر عدد محدد من الأوقات

تم عرض النوع التالي من التكرار في المثال الأول من التعليمات البرمجية أعلاه. هذا هو المكان الذي نوضح فيه تحديدًا عدد المرات التي نرغب فيها في تكرار جزء من الشفرة. إليك مثال على ذلك:

[ابليسكريبت]
كرر مرتين
مربع حوار العرض "مرحبًا!"
نهاية تكرار
[/ ابليسكريبت]

في هذا الرمز ، نستدعي مربع حوار يحتوي على رسالة بسيطة. يتم تعيين كتلة تكرار لتنفيذ هذا مرتين ، وذلك بمجرد أن يقوم المستخدم بالنقر فوق أحد الأزرار في مربع الحوار الأول ، سوف ينبثق آخر في مكانه.

The structure of a repeat loopThe structure of a repeat loopThe structure of a repeat loop
سوف يطفو على الإطار نفسه مرتين.

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

[ابليسكريبت]
ضبط theMessages إلى {"مرحبًا!" ، "دعنا نتعرف على AppleScript!"}
ضبط x إلى 1

كرر مرتين
مربع حوار العرض (العنصر x من الرسائل)
ضبط x إلى (x + 1)
نهاية تكرار
[/ ابليسكريبت]

قد يبدو هذا مربكًا بعض الشيء ، ولكن لا تقلق ، فهو بسيط جدًا. نبدأ بإعلان القائمة. تتيح لك القائمة التفاف أجزاء متعددة من البيانات في متغير واحد. هنا أخذنا سلسلتين مختلفتين وقذفناهم في "theMessages". يمكننا الوصول إلى كل عنصر قائمة برقمه. لذلك "مرحبًا بكم!" هو " item 1 of theMessages " و "دعونا نتعرف على AppleScript!" هو " item 2 of theMessages ".

وبعد ذلك، يمكننا أن نستفيد من مقولة أساسية بالغة الأهمية: عداد. هذا هو سر صنع تكرار القيام بشيء مختلف في كل مرة أنه يعمل. على سبيل المثال، وضعنا x يساوي 1، ثم يمكننا زيادة x في نهاية التكرار. بهذه الطريقة، في كل مرة يتم فيها تشغيل التكرار، زيادة قيمة x بأحد.

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

This time, two different messages are displayed.This time, two different messages are displayed.This time, two different messages are displayed.
هذه المرة، يتم عرض رسائل مختلفة اثنين.

تلميح: لاحظ أننا لن نستخدم رقمًا (2) في تكرار محدد ، لن يتم التهجئة على تكرار شيء "مرتين".

كرر مع مجموعة عدد

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

[applescript]
ضبط theMessages إلى {"مرحبًا!" ، "كيف حالك؟" ، "دعنا نتعرف على AppleScript!"}

كرر مع n من 1 إلى 3
مربع حوار العرض (البند n من رسائل الرسائل)
نهاية تكرار
[/ ابليسكريبت]

كما ترون ، هذه المرة لدينا ثلاث رسائل للتنقل عبرها. لاحظ أنه تم تبسيط التعليمات البرمجية الخاصة بنا بالفعل بالرغم من ذلك. لقد جردنا إنشاء وتغيير متغير ، وبدلاً من ذلك أخبرنا الكتلة المتكررة بـ "نكرر بـ n من 1 إلى 3".

ما يفعله هذا هو إنشاء متغير n ، ثم زيادته بمقدار واحد في كل مرة تتكرر فيها الكتلة. يتم تحديد أرقام البداية والنهاية بواسطة الجزء "من 1 إلى 3". لذا في المرة الأولى التي يتم تشغيلها ، يساوي n 1 ، ثم 2 في المرة التالية ، وأخيرًا 3 في المرة الأخيرة.

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

كرر مع القائمة

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

[ابليسكريبت]
ضبط theMessages إلى {"مرحبًا!" ، "كيف حالك؟" ، "دعنا نتعرف على AppleScript!"}

كرر الرسالة في رسائل
رسالة حوار العرض
نهاية تكرار
[/ ابليسكريبت]

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

كرر بينما

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

[ابليسكريبت]
ضبط س إلى صحيح
ضبط ص إلى 0

كرر بينما س
إذا ص> 10 ثم
ضبط x إلى false
آخر
ضبط y إلى y + 1
إنهاء إذا
نهاية تكرار
[/ ابليسكريبت]

في هذا البرنامج النصي ، سيتم تكرار كتلة التعليمات البرمجية بشكل لا نهائي طالما كان x صحيحًا. ومع ذلك ، داخل التكرار ، نقوم بتعيين x إلى false إذا كان y أكبر من 10 ، وقمت بزيادة ذلك بطريقة أخرى. هذا يعني أن التعليمة البرمجية يمكن تكرارها عدة مرات فقط لأن y سيحصل في النهاية على 10 ثم يتوقف تكرارها.

لاحظ أنه كان بإمكاني استخدام هذا الهيكل أيضًا:

[ابليسكريبت]
كرر بينما x صحيح
- رمز لتكرار نهاية
تكرار
[/ ابليسكريبت]

هذا الرمز يعمل على ما يرام ، ولكن "صحيح" ليست ضرورية. السبب في هذا يحصل في جوهر ما هو منطقي وماذا يفعل. المتغير x في مثالنا يساويtrue ، وهما واحدان واحدان.

الآن ، إذا كنت تريد تشغيل هذا على رأسه ، يمكنك تكرار شيء حتى يصبح منطقيك صحيحًا. هذا يعمل مثل:

ابليسكريبت]
كرر بينما x غير صحيح
- رمز لتكرار
نهاية تكرار
[/ ابليسكريبت]

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

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

[ابليسكريبت]
ضبط الإجابة على الرقم العشوائي من 1 إلى 5
حدد التخمين إلى 0
كرر في حين أن التخمين لا يساوي الإجابة
ضبط التخمين على النص الذي تم إرجاعه (مربع حوار العرض "تخمين مرة أخرى! اختر رقمًا من 1 إلى 5" إجابة افتراضية "1") كرقم
نهاية تكرار
مربع حوار العرض "هذا صحيح" والإجابة & "هي الإجابة!"
[/ ابليسكريبت]

The structure of a repeat loopThe structure of a repeat loopThe structure of a repeat loop
تسمح هذه النافذة للمستخدم بتخمين رقم وسيتكرر حتى يكون التخمين صحيحًا.

كرر حتى

ليس من السهل جدًا قراءة الكود "تكرار بينما التخمين ليس مساويًا للإجابة" .السلبية (لا تساوي) تجعلها مربكة. يمكننا تبسيط ذلك قليلاً إذا تخلصنا من التكرار أثناء الحلقات وبدلاً من ذلك ننظر إلى تكرار حتى حلقة. وهنا لعبة تخمين عدد إعادة كتابة:

[ابليسكريبت]
ضبط الإجابة على الرقم العشوائي من 1 إلى 5
حدد التخمين إلى 0

كرر حتى (guess = الجواب)
ضبط التخمين على النص الذي تم إرجاعه (مربع حوار العرض "تخمين مرة أخرى! اختر رقمًا من 1 إلى 5" إجابة افتراضية "1") كرقم
نهاية تكرار

مربع حوار العرض "هذا صحيح" والإجابة & "هي الإجابة!"
[/ ابليسكريبت]

كما ترون ، هذا التكرار مقتضب وأكثر سهولة في القراءة. ضع في اعتبارك أن هذا لن يكون هو الحال دائمًا ، وأحيانًا تكون التكرار هو الذي يوفر لك الشفرة.

كلنا معاالان

يا للعجب! هناك الكثير من أنواع مختلفة من تكرار الحلقات ليست فظيعة؟ إذا كنت تشعر بالإرهاق ، لا تكن كذلك. انهم جميعا بسيطة إلى حد ما ، وسوف يفاجأ مدى تكرار الصياغة الصحيحة هو أول ما يدخل في رأسك. فقط لإبقائك على الطريق الصحيح ، إليك قائمة سريعة ببعض أمثلة التكرار المختلفة:

  • كرر 5 مرات
  • تكرار n مرات
  • كرر مع n من 1 إلى 5
  • كرر مع listItem في القائمة
  • كرر بينما x
  • كرر بينما y صحيح
  • كرر بينما x غير صحيح
  • رر حتى y
  • كرر حتى ( x > y )

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

يسجل من داخل منطقة المرمى

يجب أن تكون الآن خبيرًا في تكرار حلقات AppleScript. من خلال الاستفادة من هذه الاقتراحات بالتزامن مع البيانات التي تعلمناها من قبل ، ستتمكن من سحب بعض النصوص المعقدة والمفيدة بشكل لا يصدق.

في الواقع ، في مقالنا التالي في AppleScript سوف نأخذ استراحة من النظرية ونضع بعض هذه المعرفة لاستخدامها مع نص برمجي عملي يمكنك تنفيذه على نظامك على الفور. تأكد بعد قليل!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.