1. الهيكل الدائري
يمكن لبيان الحلقة تنفيذ جزء معين من التعليمات البرمجية مرارًا وتكرارًا عند استيفاء حالة الحلقة. يسمى هذا الرمز المتكرر بيان جسم حلقة. عندما يتم تنفيذ هيئة الحلقة هذه بشكل متكرر ، يجب تعديل حالة حكم الحلقة إلى خطأ في الوقت المناسب لإنهاء الحلقة ، وإلا فإن الحلقة ستستمر في تنفيذها ، وتشكيل حلقة ميتة.
تكوين بيانات الحلقة:
بيان التهيئة: واحد أو أكثر من العبارات ، تكمل هذه العبارات بعض عمليات التهيئة.
البيان الشرطي للقرار: هذا تعبير منطقي ، يمكنه تحديد ما إذا كان سيتم تنفيذ جسم الحلقة.
بيان الحلقة والجسم: هذا الجزء عبارة عن بيان للجسم ، وهو ما يتعين علينا القيام به عدة مرات.
بيان حالة التحكم: يتم تنفيذ هذا الجزء قبل تنفيذ حالة حكم الدورة التالية بعد نهاية جسم الدورة. عن طريق التحكم في المتغيرات في حالة الحلقة ، تنتهي الحلقة في الوقت المناسب.
على سبيل المثال: عندما يتم إخراج "HelloWorld" 10 مرات على وحدة التحكم ،
بيان التهيئة: تحديد التهيئة على أنها المرة الأولى.
البيان الشرطي للحكم: لا يمكن أن يتجاوز عدد المرات 10 مرات.
بيان جسم الحلقة: إخراج بيان "HelloWorld".
بيان حالة التحكم: يتغير عدد المرات إلى المرة القادمة.
2. بنية الحلقة (لبيان الحلقة)
لتنسيق بيان الحلقة:
لـ (بيان التهيئة ، البيان الشرطي للحكم ؛ التحكم في البيان الشرطي) {
بيان الجسد حلقة
}
عملية التنفيذ:
ج: تنفيذ بيان التهيئة
ب: تنفيذ البيان الشرطي للحكم لمعرفة ما إذا كانت النتيجة صحيحة أو خاطئة: إذا كانت خاطئة ، تنتهي الحلقة ؛ إذا كان هذا صحيحًا ، فاستمر في التنفيذ.
ج: تنفيذ بيان جسم الحلقة
D: تنفيذ بيان حالة التحكم
E: العودة إلى B ومتابعة
مخطط التدفق:
ملحوظات:
(1) نتيجة البيان الشرطي للحكم هو نوع منطقي
(2) إذا كان عبارة الحلقة عبارة عن بيان واحد ، فيمكن حذف الأقواس ؛ إذا كانت عبارات متعددة ، فلا يمكن حذف الأقواس. يوصى بعدم حذفه.
(3) بشكل عام: إذا كان هناك دعامة يسارية ، فلا يوجد فاصلة فنية ، إذا كان هناك فاصلة فاصلة ، فلا يوجد دعامة يسارية.
رمز المثال:
1. ابحث عن مجموع الأرقام بين 1-100:
/* المتطلبات: ج: العثور على مجموع 1-100. ب: ابحث عن مجموع الأرقام الزوجية بين 1-100*/class fortest1 {public static void main (String [] args) {// ابحث عن مجموع 1-100. int sum1 = 0 ؛ لـ (int x = 1 ؛ x <= 100 ؛ x ++) {sum1+= x ؛ } system.out.println ("1-100 IS:"+sum1) ؛ System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // الطريقة 2 int sum3 = 0 ؛2. ابحث عن عازف 5:
/* المتطلبات: العثور على عازف 5. ما هو العامل؟ ن! = N*(N-1)! القاعدة ن! = N*(N-1)*(N-2)*...*3*2*1 Sum Ideology. العثور على الفكر العامل. */class fortest2 {public static void main (string [] args) {// تحديد المتغير النهائي int jc = 1 ؛ // يمكن أن تبدأ x هنا مباشرة من 2 // لـ (int x = 1 ؛ x <= 5 ؛ x ++) لـ (int x = 2 ؛ x <= 5 ؛ x ++) {jc *= x ؛ } system.out.println ("1-5 factorial is:"+jc) ؛ }}3. إخراج جميع "رقم النرجس" في وحدة التحكم:
/* المتطلبات: إخراج جميع "أرقام Narcissus" على تحليل وحدة التحكم: لا نعرف ما هي "أرقام Narcissus" ، ماذا تطلب مني أن أفعل؟ تشير أرقام النرجس المزعومة إلى رقم مكون من ثلاثة أرقام ، ويساوي مجموع المكعب من أرقامها الرقم نفسه. على سبيل المثال: 153 هو النرجس البري. 153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153 A: يخبرنا الرقم المكون من ثلاثة أرقام بالفعل النطاق. ب: من خلال الحلقة ، يمكننا الحصول على كل رقم ثلاثي الأرقام ، ولكن المشكلة هي كيفية الحصول على بيانات رقم الرقم الثلاثي ، عشرة ، ومئات. كيف نحصل على بيانات البيانات ، عشرة ، ومئات؟ افترض أن هناك بيانات: 153 GE: 153 ٪ 10 = 3 SHI: 153/10 ٪ 10 = 5 BAI: 153/10/10 ٪ 10 = 1 QIAN: X/10/10/10 ٪ 10 WAN: X/10/10/10 ٪ 10 ... C: دع GE*GE+SHI*SHI+BAI*BAI*Bai*Bai* */class fortest3 {public static void main (string [] args) {// الرقم الثلاثي يخبرنا النطاق بالفعل. لـ (int x = 100 ؛ x <1000 ؛ x ++) {int ge = x ٪ 10 ؛ int shi = x/10 ٪ 10 ؛ int bai = x/10/10 ٪ 10 ؛ // دع ge*ge*ge+shi*shi*shi+bai*bai*bai قارن بالبيانات إذا (x == (ge*ge+shi*shi+bai*bai)) {// إذا كان ذلك ، إخراج البيانات الموجودة على وحدة التحكم. system.out.println (x) ؛ }}}}3. بنية الحلقة (بينما بيان الحلقة)
بينما تنسيق بيان الحلقة:
بينما (البيان الشرطي للحكم) {
بيان الجسد حلقة
}
// بيان تهيئة التنسيق الموسع ؛
بينما (البيان الشرطي للحكم) {
بيان الجسد حلقة
بيان حالة التحكم ؛
}
مخطط التدفق:
الفرق بين حلقة وحلقة الوقت:
بالنسبة لبيانات الحلقة ، وبينما يمكن تحويل عبارات الحلقة بشكل متساوٍ ، ولكن لا تزال هناك بعض الاختلافات الصغيرة.
(1) الاختلافات في الاستخدام:
لا يمكن الوصول إلى المتغير الذي يتحكم فيه العبارة الشرطية للسيطرة بعد نهايات الحلقة ، ويمكن الاستمرار في استخدامها بعد انتهاء الحلقة. إذا كنت ترغب في الاستمرار في استخدامه ، فاستخدمه ، وإلا فإنه يوصى باستخدامه. والسبب هو أن نهايات الحلقة والمتغير يختفي من الذاكرة ، مما يمكن أن يحسن كفاءة استخدام الذاكرة.
(2) اختلاف المشهد:
للحلقة مناسبة للتشغيل لحكم المدى بينما حلقة مناسبة للتشغيل لعدد غير واضح من الأحكام
رمز المثال:
أعلى جبل في بلدنا هو جبل إفرست: 8848 متر. لدي الآن ورقة كبيرة بما يكفي بسماكة: 0.01m. هل لي أن أسأل ، كم مرة أضعها للتأكد من أن سمك لا يكون أقل من ارتفاع جبل إفرست؟
/* أعلى جبل في بلدنا هو جبل إفرست: 8848 متر. لدي الآن ورقة كبيرة بما يكفي بسماكة: 0.01m. هل لي أن أسأل ، كم مرة أطي ، يمكنني التأكد من أن السمك ليس أقل من ارتفاع جبل إفرست؟ التحليل: A: تحديد متغير إحصائي ، القيمة الافتراضية هي 0 B: أعلى قمة هي Mount Everest: 8848m هذا هو السُمك النهائي. لديّ الآن قطعة كبيرة بما يكفي من الورق ، بسمك: 0.01M هذا هو السماكة الأولية C: كم مرة أطي ، يمكنني التأكد من أن سمك ليس أقل من ارتفاع جبل إفرست؟ ما هي التغييرات التي ستحدث إذا طيته مرة واحدة؟ وهذا هو ، فإن سمك هو ضعف سميكة كما كان من قبل. D: طالما أن سمك كل تغيير لا يتجاوز ارتفاع جبل إفرست ، سيتم طيه ، متغير إحصائي ++ E: الإخراج المتغيرات الإحصائية. */class whileTest01 {public static void main (string [] args) {// تحديد متغير إحصائي ، القيمة الافتراضية هي 0 int count = 0 ؛ // أعلى قمة هو جبل إفرست: 8848m هذا هو السُمك النهائي // لدي الآن ورقة كبيرة بما يكفي ، مع سمك: 0.01M هذا هو السماكة الأولية // للبساطة ، لقد تحولت 0.01 إلى 1 ، والطريقة نفسها التي أصبحت 8848 884800 int end = 884800 ؛ int start = 1 ؛ بينما (ابدأ <end) {// طالما أن سمك كل تغيير لا يتجاوز ارتفاع جبل Everest ، طيه ، والمتغير الإحصائي ++ count ++ ؛ //ما هي التغييرات التي ستحدث إذا تم طيها مرة واحدة؟ هو أن سمك هو ضعف واحد السابق. ابدأ *= 2 ؛ System.out.println ("th"+count+"سماكة"+start) ؛ } // إخراج المتغيرات الإحصائية. System.out.println ("to exed"+count+"time") ؛ }}4. بنية الحلقة (افعل ... أثناء بيان الحلقة)
التنسيق الأساسي:
يفعل {
بيان الجسد حلقة
} بينما ((البيان الشرطي للحكم) ؛ [/code]
التنسيق الممتد:
بيان التهيئة ؛
يفعل {
بيان الجسد حلقة
بيان حالة التحكم ؛
} بينما ((البيان الشرطي للحكم) ؛ [/code]
مخطط التدفق:
5. الاختلافات والاحتياطات للهيكل الدوري:
يمكن أن تكمل عبارات الحلقة الثلاثة فعليًا نفس الوظيفة ، مما يعني أنه يمكن تحويلها بشكل متساوٍ ، ولكن لا تزال هناك اختلافات صغيرة:
Do ... بينما ستنفذ الحلقة جسم الحلقة مرة واحدة على الأقل. للحلقة وبينما ستنفيذ الحلقة فقط جسم الحلقة عندما تكون الحالة صحيحة
1. ملاحظات:
عند كتابة البرامج ، يجب أن تعطي الأولوية لـ For Loop ، ثم ضع في اعتبارك الحلقة ، وفي النهاية فكر في DO ... أثناء الحلقة.
الرمز التالي عبارة عن حلقة ميتة:
بينما (صحيح) {}
ل(؛؛){}
2. الاستخدام المتداخل للحلقات: جسم الحلقة لبيان الحلقة نفسه هو بيان حلقة
(1) السؤال 1: الرجاء إخراج نمط نجم (*) مع 4 صفوف و 5 أعمدة:
نصيحة: عدد الصفوف التي تتحكم فيها الحلقة الخارجية ، وعدد الأعمدة التي تتحكم فيها الحلقة الداخلية
/*المتطلبات: يرجى إخراج الشكل التالي*** **** **** *** ** *** TIP: تتحكم الحلقة الخارجية في عدد الصفوف ، تتحكم الحلقة الداخلية في عدد الأعمدة*/class forfortest01 {public static void main (string [] أعمدة لـ (int x = 0 ؛ x <5 ؛ x ++) {for (int y = 0 ؛ y <5 ؛ y ++) {system.out.print ("*") ؛ } system.out.println () ؛ } System.out.println ("-------------------------------------------------------------------------------------------- y = 0 ، y <= 1 ، y ++ // الصف الثالث: 3 العمود y = 0 ، y <= 2 ، y ++ // الصف الرابع: 4 العمود y = 0 ، y <= 3 ، y ++ // الصف الخامس: 5 العمود y = 0 ، y <= 4 ، y ++ // عند النظر إلى تغيير x في loop الخارجي ، يحدث ذلك إلى x = 0،1،2،4. لـ (int x = 0 ؛ x <5 ؛ x ++) {for (int y = 0 ؛ y <= x ؛ y ++)(2) السؤال 2: إخراج جدول الضرب تسعة تسعة على وحدة التحكم:
/* المتطلبات: إخراج جدول الضرب تسعة تسعة في وحدة التحكم. أولاً ، نكتب جدول الضرب التسعة: 1*1 = 1 1*2 = 2 2*2 = 4 1*3 = 3 2*3 = 6 3*3 = 9 1*4 = 4 2*4 = 8 3*4 = 12 4*4 = 16 ... 1*9 = 9 2*9 = 18 3*9 = 27 ... ********* ********* ********* ملاحظة: '/x' x يعني أي ، تسمى هذه الطريقة أحرف النقل. "/t" موضع حرف علامة التبويب (مفتاح tabtab) '/r' enter '/n' break */class forfortest02 {public static void main (string [] args) {for (int x = 0 ؛ x <9 ؛ x ++) {for (int y = 0 ؛ y <= x ؛ y ++) {system.pint.print (" *") ؛ } system.out.println () ؛ } system.out.println ("-------------------") ؛ // لاستخدام البيانات ، نبدأ من 1 لـ (int x = 1 ؛ x <= 9 ؛ x ++) {for (int y = 1 ؛ y <= x ؛ y ++) {system.out.print (y+"*"+x+"="+y*x+"/t") ؛ } system.out.println () ؛ }}}تأثير الجري:
6. بيان التحكم في القفز:
كما قلنا من قبل ، فإن Goto في Java هي كلمة محفوظة ولا يمكن استخدامها في الوقت الحاضر. على الرغم من عدم وجود بيان GOTO لتعزيز أمان البرنامج ، إلا أنه يجلب أيضًا الكثير من الإزعاج. على سبيل المثال ، أريد أن أنهي عندما تعرف حلقة معينة خطوة معينة ، ولا يمكنني القيام بذلك الآن. من أجل تعويض هذا العيب ، توفر Java استراحة ، والمتابعة والعودة للتحكم في القفزات ومقاطعات البيانات.
استراحة مقاطعة
يكمل
يعود
1. بيان التحكم في القفز (استراحة):
استخدم سيناريوهات الكسر:
~ في عبارة التبديل لاختيار الهيكل
~ في بيان الحلقة (إذا تمت إضافة الحكم إلى بيان الحلقة)
ملاحظة: لا معنى لها ترك سيناريو الاستخدام
وظيفة الاستراحة:
ج: الخروج من حلقة الطبقة الواحدة
ب: الخروج من حلقة متعددة الطبقات
لتحقيق هذا التأثير ، يجب أن تعرف شيئًا. بيان مع العلامة. يجب أن تتوافق أسماء العلامات لقواعد تسمية Java
شكل:
اسم العلامة: بيان
رمز المثال:
/* بيان القفز التحكم: الفاصل: مقاطعة متابعة: متابعة: إرجاع: استراحة الإرجاع: سيناريو استخدام معنى المقاطعة: A: بيان التبديل ب: بيان الحلقة. (إذا تمت إضافة الحكم إلى بيان الحلقة) ملاحظة: من غير المعقول ترك المشهدين أعلاه. كيف تستخدمه؟ ج: الخروج من حلقة واحدة من الطبقات ب: الخروج من حلقة متعددة الطبقات لتحقيق هذا التأثير ، يجب أن تعرف شيئًا. بيان مع العلامة. التنسيق: اسم العلامة: بيان */class creymdemo {public static void main (string [] args) {// Offset Outside Outside أو loop // break ؛ // Offset حلقة طبقة واحدة لـ (int x = 0 ؛ x <10 ؛ x ++) {if (x == 3) {break ؛ } system.out.println ("HelloWorld") ؛ } system.out.println ("Over") ؛ System.out.println ("---------------") ؛ . كسر WC ؛ } system.out.print ("*") ؛ } system.out.println () ؛ }}}في السطر 38 ، نضيف علامة إلى الحلقة الخارجية تسمى WC ، ثم نقفز من هذه العلامة في السطر 42.
تأثير الجري:
ملاحظة: في التطوير الفعلي ، يكاد يكون من المستحيل استخدام وظيفة القفز على حلقة متعددة الطبقات.
2. بيان التحكم في القفز (متابعة):
استخدم السيناريوهات للاستمرار:
لا فائدة من ترك سيناريو الاستخدام في بيان حلقة
الفرق بين المتابعة والكسر:
كسر كسر من حلقة الطبقة واحدة تستمر في الخروج من حلقة ويدخل التنفيذ التالي.
الآثار هي كما يلي:
أسئلة المقابلة:
لـ (int x = 1 ؛ x <= 10 ؛ x ++) {if (x ٪ 3 == 0) {// املأ الكود هنا} system.out.println ("Java Learning") ؛ }املأ السطر 4 من الكود أعلاه لتلبية الشروط التالية:
أريد الإخراج مرتين في وحدة التحكم: "Java Learn" Break ؛
أريد الإخراج 7 مرات في وحدة التحكم: "التعلم Java" يستمر ؛
أريد الإخراج 13 مرة في وحدة التحكم: "Java Learning" System.out.println ("Java Learning") ؛
3. بيان التحكم في القفز (العودة)
الكلمة الرئيسية للعودة هي عدم القفز من جسم الحلقة. الوظيفة الأكثر استخدامًا هي إنهاء طريقة ، أي الخروج من الطريقة والقفز إلى الطريقة التي تسمى في الطبقة العليا.
لوضعها بصراحة: وظيفة الإرجاع هي عدم إنهاء الحلقة ، ولكن لإنهاء الطريقة.
الآثار هي كما يلي:
تمارين بيانات الحلقة مع الاستراحة:
سؤال المقابلة: والدة Xiaofang تمنحها 2.5 يوان في اليوم ، وسوف تنقذه. ومع ذلك ، كلما كان هذا اليوم هو اليوم الخامس من الادخار أو مضاعف 5 ، ستنفق 6 يوان. كم يوم يمكن أن يحفظه Xiaofang إلى 100 يوان.
تنفيذ الكود:
/* المتطلبات: والدة Xiaofang تمنحها 2.5 يوان في اليوم ، وسوف تنقذه. ومع ذلك ، كلما كان هذا اليوم هو اليوم الخامس من الادخار أو مضاعف 5 ، ستنفق 6 يوان. كم يوم يمكن أن يحفظه Xiaofang إلى 100 يوان. التحليل: A: والدة Xiaofang تمنحها 2.5 يوان في اليوم ، Double Daymoney = 2.5 ؛ ب: ستوفر أيامًا مزدوجة = 0 ؛ C: Store Int DayCount = 1 من اليوم الأول ؛ D: كم يوما سيوفر Xiaofang 100 يوان. نتيجة مزدوجة = 100 ؛ E: إذا كان هذا اليوم هو اليوم الخامس من الادخار أو مضاعف 5 ، فستقضي 6 يوان ، مما يشير إلى أنها بحاجة إلى الحكم على قيمة المواعيد النهارية. إذا تم تقسيم 5 ، سيتم طرح 6 يوان. Daysum -= 6 ؛ هذا يعني أيضًا وجود مشكلة ، أي إذا لم يكن مضاعفًا لمدة 5 أيام ، فيجب تجميع الأموال Daysum += DayMoney ؛ F: لأنني لا أعرف عدد الأيام ، أستخدم حلقة ميتة. بمجرد أن تتجاوز 100 يوان ، سأخرج من الحلقة. */class whiledemo {public static void main (string [] args) {// الأموال المراد تخزينها كل يوم هي 2.5 يوان daymoney = 2.5 ؛ // قيمة التهيئة للحفظ هي 0 Double Daysum = 0 ؛ // Storage Int DayCount = 1 من اليوم الأول ؛ // التخزين النهائي لا يقل عن 100 ونتيجة int = 100 ؛ // لأنني لا أعرف عدد الأيام ، أستخدم حلقة ميتة ، بينما (صحيح) {// تراكم الأموال Daysum += DayMoney ؛ // بمجرد أن تتجاوز 100 يوان ، أخرج من الحلقة. if (daysum> = result) {system.out.println ("إنفاق ما مجموعه 100 يوان في التخزين في المجموع") ؛ استراحة؛ } if (daycount ٪ 5 == 0) {// قضاء 6 أيام yuan -= 6 ؛ System.out.println ("الأشياء"+DayCount+"إنفاق 6 يوان في المجموع") ؛ } // عدد الأيام التي يتغير فيها DayCount ++ ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.