جمل التحكم الشرطية في برمجة كوتلين Kotlin Control Flow

جمل التحكم الشرطية في برمجة كوتلين 

Kotlin Control Flow

جمل التحكم الشرطية في برمجة كوتلين Kotlin Control Flow

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

If - Else

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

fun main(args: Array<String>) {
   val a:Int = 5
   val b:Int = 2
   var max: Int
   
   if (a > b) {
      max = a
   } else {
      max = b
   }
   print("Maximum of a or b is " +max)
 
   // As expression 
   // val max = if (a > b) a else b
}

تعطي الشفرة المذكورة أعلاه المخرجات التالية كنتيجة للمتصفح.  يحتوي مثالنا أيضًا على سطر آخر من التعليمات البرمجية ، والذي يوضح كيفية استخدام عبارة "If" كتعبير.
Maximum of a or b is 5

Use of When

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

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1 -> print("x = = 1")
      2 -> print("x = = 2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

تعطي الشفرة المذكورة أعلاه المخرجات التالية في المتصفح.
x is neither 1 nor 2
في المثال أعلاه ، يتطابق برنامج التحويل البرمجي Kotlin مع قيمة x مع الفروع المحددة.  إذا لم يكن مطابقًا لأي من الفروع ، فسيتم تنفيذ الجزء الآخر.  عمليا ، عندما يكون ما يعادل كتلة إذا متعددة.  توفر Kotlin مرونة أخرى للمطور ، حيث يمكن للمطور توفير فحوصات متعددة في نفس السطر من خلال توفير "،" داخل الاختبارات.  دعونا تعديل المثال أعلاه على النحو التالي.

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1,2 -> print(" Value of X either 1,2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

قم بتشغيل نفسه في المستعرض ، مما سيؤدي إلى الإخراج التالي في المستعرض.
x is neither 1 nor 2

For Loop

حلقة مثل هذا  الذي يوفر المرونة للتكرار من خلال أي نوع من بنية البيانات.  مثل لغات البرمجة الأخرى ، توفر Kotlin أيضًا أنواعًا كثيرة من منهجية Looping ، ومع ذلك ، تعتبر "For" هي الأكثر نجاحًا.  تنفيذ واستخدام For loop يشبه من الناحية النظرية Java for loop.  يوضح المثال التالي كيف يمكننا استخدام نفس الشيء في أمثلة واقعية.

fun main(args: Array<String>) {
   val items = listOf(1, 2, 3, 4)
   for (i in items) println("values of the array"+i) list t.
values of the array1
values of the array2
values of the array3
values of the array4

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

fun main(args: Array<String>) {
   val items = listOf(1, 22, 83, 4)
   
   for ((index, value) in items.withIndex()) {
      println("the element at $index is $value")
   }
}

بمجرد أن نقوم بتجميع وتنفيذ الشفرة المذكورة أعلاه في قاعدة الترميز الخاصة بنا ، فسوف ينتج عنها المخرجات التالية في المتصفح.
the element at 0 is 1
the element at 1 is 22
the element at 2 is 83
the element at 3 is 4

While Loop and Do-While Loop

حلقة  while بينما و Do-While بالطريقة نفسها تمامًا كما هو الحال في لغات البرمجة الأخرى.  الفرق الوحيد بين هاتين الحلقتين هو أنه في حالة حلقة العمل ، سيتم اختبار الحالة في نهاية الحلقة.  يوضح المثال التالي استخدام حلقة While.

fun main(args: Array<String>) {
   var x:Int = 0
   println("Example of While Loop--")
   
   while(x< = 10) {
      println(x)
      x++
   } 
}
تعطي الشفرة المذكورة أعلاه المخرجات التالية في المتصفح.

Example of While Loop--
0
1
2
3
4
5
6
7
8
9
10

 Kotlin لديه أيضا حلقة أخرى تسمى
Do-While loop, 
حيث سيتم تنفيذ جسم الحلقة مرة واحدة ، عندها فقط سيتم فحص الحالة.  يوضح المثال التالي استخدام حلقة العمل.

fun main(args: Array<String>) {
   var x:Int = 0
   do {
      x = x + 10
      println("I am inside Do block---"+x)
   } while(x <= 50)
}

تعطي الشفرة المذكورة أعلاه المخرجات التالية في المتصفح.  في الكود أعلاه ، سوف يقوم برنامج التحويل البرمجي Kotlin بتنفيذ كتلة DO ، ثم سيتم التحقق من الحالة أثناء حظرها.
I am inside Do block---10
I am inside Do block---20
I am inside Do block---30
I am inside Do block---40
I am inside Do block---50
I am inside Do block---60 

Use of Return, Break, Continue استخدام جملة الإرجاع  والتوقف والاستمرار 
إذا كنت معتادًا على أي لغة برمجة ، فيجب أن يكون لديك فكرة عن الكلمات الرئيسية المختلفة التي تساعدنا على تطبيق تدفق تحكم جيد في التطبيق.  فيما يلي الكلمات الأساسية المختلفة التي يمكن استخدامها للتحكم في الحلقات أو أي أنواع أخرى من تدفق التحكم.
Return − Return هي كلمة أساسية تقوم بإرجاع بعض القيمة إلى دالة الاستدعاء من الوظيفة التي تم استدعاؤها.  في المثال التالي ، سننفذ هذا السيناريو باستخدام أرضية تشفير Kotlin الخاصة بنا.

fun main(args: Array<String>) {
   var x:Int = 10
   println("The value of X is--"+doubleMe(x))
}
fun doubleMe(x:Int):Int {
   return 2*x;
}

في الجزء المذكور أعلاه من الكود ، ندعو إلى وظيفة أخرى ونضرب المدخلات في 2 ونعيد القيمة الناتجة إلى الوظيفة المدعوة وهي وظيفتنا الرئيسية.  يحدد Kotlin الوظيفة بطريقة مختلفة سننظر إليها في فصل لاحق.  في الوقت الحالي ، يكفي أن نفهم أن الكود أعلاه سوف يولد المخرجات التالية في المتصفح.
The value of X is--20
استمرار وكسر - متابعة وكسر هي أهم جزء من مشكلة منطقية.  الكلمة الأساسية "فاصل" تنهي تدفق وحدة التحكم في حالة فشل بعض الشروط و "المتابعة" تفعل العكس.  كل هذه العملية تحدث مع وضوح فوري.  Kotlin أكثر ذكاءً من لغات البرمجة الأخرى ، على الرغم من أن المطور يمكنه تطبيق أكثر من علامة واحدة على أنها رؤية.  يوضح الجزء التالي من التعليمات البرمجية كيف ننفذ هذه التسمية في Kotlin.

fun main(args: Array<String>) {
   println("Example of Break and Continue")
   myLabel@ for(x in 1..10) { // appling the custom label
      if(x = = 5) {
         println("I am inside if block with value"+x+"\n-- hence it will close the operation")
         break@myLabel //specifing the label
      } else {
         println("I am inside else block with value"+x)
         continue@myLabel
      }
   }
}

تعطي الشفرة المذكورة أعلاه المخرجات التالية في المتصفح.
Example of Break and Continue
I am inside else block with value1
I am inside else block with value2
I am inside else block with value3
I am inside else block with value4
I am inside if block with value5
-- hence it will close the operation

كما ترون ، تستمر وحدة التحكم في الحلقة حتى وما لم تكن قيمة x هي 5. بمجرد أن تصل قيمة x إلى 5 ، تبدأ في تنفيذ كتلة if وبمجرد الوصول إلى عبارة الفاصل ، ينهي تدفق التحكم بالكامل البرنامج  إعدام