English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستتعلم كيفية إنشاء دوائر while و repeat...while في برمجة Swift.
في المقال السابق، تعرفنا علىدائرة for-inيؤدي مجموعة من المهام المعدة لعدد محدد من المرات. في هذا المقال، ستتعلم كيفية استخدام while و repeat..while كخيارات بديلة للدائرة for-in عند عدم معرفة عدد التكرارات المطلوبة.
ي�行ر دائرة تعليمات حتى يصبح الشرط كـ false. من الأفضل استخدام هذا النوع من الدوائر عندما تكون عدد التكرارات غير معروف عند بدء التكرار الأول.
يحلل هذا الدائرة في بداية كل دورة.
جملة cycle while تكون:
while (TestExpression) { // تعليمات }
TestExpression هو تعبير منطقي.
إذا تم حساب TestExpression كـ true،
سيتم تنفيذ التعليمات داخل cycle while.
ويتم حساب TestExpression مرة أخرى.
استمر في هذا العمل حتى يتم حساب TestExpression كـ false. إذا تم حساب TestExpression كـ false، فإن cycle while ينتهي.
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) { // لعب اللعبة if (gameCompleted) { print("لقد نجحت في مستوى \(currentLevel)") currentLevel += 1 } } print("خارج cycle while")
عند تشغيل هذا البرنامج، الناتج سيكون:
لقد نجحت في مستوى 0 لقد نجحت في مستوى 1 لقد نجحت في مستوى 2 لقد نجحت في مستوى 3 لقد نجحت في مستوى 4 لقد نجحت في مستوى 5 خارج cycle while
في البرنامج المذكور أعلاه، تم تعيين المتغيرين currentLevel و finalLevel إلى 0، والمعلمة gameCompleted إلى true.
في كل دورة من cycle while، سيقوم بفحص شرط الحكم currentLevel <= finalLevel. إذا كان الشرط يعود بـ true، فإنه يستمر في تنفيذ التعليمات داخل cycle while، وإلا يتم إنهاء الدائرة.
التحويل | الشرط (currentLevel <= finalLevel) | الإخراج |
---|---|---|
1 | 0 <= 5 (صحيح) | لقد نجحت في مستوى 0 |
2 | 1 <= 5 (صحيح) | لقد نجحت في مستوى 1 |
3 | 2 <= 5 (صحيح) | لقد نجحت في مستوى 2 |
4 | 3 <= 5 (صحيح) | لقد نجحت في مستوى 3 |
5 | 4 <= 5 (صحيح) | لقد نجحت في مستوى 4 |
6 | 5 <= 5 (صحيح) | لقد نجحت في مستوى 5 |
7 | 6 <= 5 (خطأ) | خارج cycle while |
يحلل هذا الدائرة في نهاية كل دورة. يشبه cycle ... while دائرة ولكن هناك فرق رئيسي. يتم تنفيذ جسم cycle ... while مرة واحدة قبل فحص تعبير التحقق.
جملة cycle .. while تكون:
repeat { // تعليمات ... }
يكرر ... بينما يتم تنفيذ جسم الدائرة مرة واحدة (قبل فحص تعبير التحقق). فقط بهذا الشكل، يتم فحص تعبير التحقق.
إذا كان testExpression يُحسب كـ true، يتم تنفيذ الأوامر داخل الدائرة، ثم يتم حساب testExpression مرة أخرى. يستمر هذا حتى يكون testExpression خطأ.
تتوقف دائرة repeat... while عند أن يكون testExpression خطأ.
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true repeat { // لعب اللعبة if (gameCompleted) { print("لقد نجحت في مستوى \(currentLevel)") currentLevel += 1 } } print("خارج دائرة repeat while")
عند تشغيل هذا البرنامج، الناتج سيكون:
لقد نجحت في مستوى 0 لقد نجحت في مستوى 1 لقد نجحت في مستوى 2 لقد نجحت في مستوى 3 لقد نجحت في مستوى 4 لقد نجحت في مستوى 5 خارج دائرة repeat while
في المثال السابق، يتم تنفيذ الأوامر داخل الدائرة لأول مرة. للإعادة التالية، يتم فحص الشرط currentLevel <= finalLevel.
إذا كان الشرط يعود بـ true، يتم تنفيذ الأوامر داخل دائرة while، وإلا يتم إنهاء الدائرة.
الإعادة | شرط (currentLevel <= finalLevel) | Output |
---|---|---|
1 | 0 <= 5 (صحيح) | لقد نجحت في مستوى 0 |
2 | 1 <= 5 (صحيح) | لقد نجحت في مستوى 1 |
3 | 2 <= 5 (صحيح) | لقد نجحت في مستوى 2 |
4 | 3 <= 5 (صحيح) | لقد نجحت في مستوى 3 |
5 | 4 <= 5 (صحيح) | لقد نجحت في مستوى 4 |
6 | 5 <= 5 (صحيح) | لقد نجحت في مستوى 5 |
7 | 6 <= 5 (خطأ) | خارج دائرة repeat while |
على الرغم من أن دوائر repeat و repeat while لها نفس الخطوات التنفيذية، إلا أن شرط currentLevel <= finalLevel في دائرة repeat... while، يتم حسابه فقط بعد تنفيذ الأوامر الموجودة داخلها.
لكن في while، يتم التحقق من شرط currentLevel <= finalLevel قبل بدء تنفيذ الشروط.
إذا لم يتم حساب تعبير الاختبار كـ false أبدًا، يتم تنفيذ جسم while و دورة repeat..while مرة بعد مرة دون انتهاء.
while (true) { print("مرحبًا، عالم!") }
repeat { print("مرحبًا، عالم!") }} while (true)
عند تشغيل هذا البرنامج، الناتج سيكون:
مرحبًا، عالم! مرحبًا، عالم! . . .
عندما تقوم بتشغيل البرنامج، ستنفذ دورات while و repeat..while مرة بعد مرة دون انتهاء. لذلك، يمكنك رؤية النتائج المتكررة في وحدة التحكم.