النطاق

الحدود او النطاق من المسمى نعلم او نفهم ان لها قيمة بداية وقيمة نهاية محدودة وبداخلها ارقام او حروف الخ .

أولا :النطاق :-

يعبر عن الأرقام مثلا الواقعة بين ١ إلى ١٠ أو الأحرف من أ إلى ي ، أي انه مجموعة قيم متسلسلة لها قيمة بداية ولها نهاية ، في تعبيراتنا البرمجية نحتاجها فهي توفر الوقت وتعتبر تعبير ممتاز وسريع .

أمثلة :

لطباعة الأرقام الزوجية من ١ إلى ٢٠ :

var evenNumbers=1..20
for(i in evenNumbers){
     if(i%2==0)
     {
         println(i)
     }
 }
output : 2 4 6 8 10 ..20

البحث عن قيمة ما إذا كانت موجودة في هذا النطاق ام لا :

var evenNumbers = 1..20
var i = 30
 if (i in evenNumbers) {
     println("the value in the range")
 } else {
     println("not found")
 }
not found

تطبيق نفس المثال على السلاسل النصية :

var word:String="Hello , My name is Ahmed"

   var letter:Char='b'
   if(letter in word){
       println("the value in the word")
   } else {
       println("not found")
   }
not found

ثانيا: القفزة أو step :-

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

var numbers= 2..20
 for(i in numbers step 2){
      println(i)
 }
output : 2 4 6 8 10 ..20

ثالثا: التعامل مع النطاق :-

downTo : 

لطباعة عناصر المصفوفة تنازليا ، مثال :

for (i in 10 downTo 0){
     println(i)
 }

until : 

لطباعة العناصر تصاعديا ، مثال :

for (i in 1 until 10){
     println(i)
 }

هنا يبدأ يطبع من رقم ١ ويتوقف عند ٩ ، وذلك لأن until تعني حتى أي كآننا نقول حتى ترى ١٠ فتوقف لو أردنا طباعة الرقم ١٠ فسنجعل الرقم ينتهي عند ١١

دالة جاهزة لو اردنا البحث بداخل النطاق و والقيمة العائدة من البحث منطقية ، مثال :

var letter="A".."Z"

  println(letter.contains("D"))

contains

دالة للتحقق هل النطاق خالي ام لا والقيمة العائدة منطقية ، مثال :

var letter="A".."Z"

  println(letter.isEmpty())

isEmpty

تقوم بطباعة العنصر الذي يبدأ فيه النطاق “نقط؛ البداية”، مثال :

var letter="A".."Z"

  println(letter.start)

start

طباعة اخر عنصر ينتهي عنده النطاق “نقط؛ النهاية”،مثال :

var letter="A".."Z"

  println(letter.endInclusive)

endInclusive

الترميز الخاص بالنطاق نفسه ، مثال :

var letter="A".."Z"

  println(letter.hashCode())

hashCode

للتحقق من مطابقة القيم ، مثال :

var letter="A".."Z"
var newLetter="A".."Z"
 
println(letter.equals(newLetter))

هنا عرفنا متغير اخر له نفس النطاق ، وقمنا بالاختبار هل هم متساويان ام لا .

equals

لطباعة عناصر المصفوفة تنازليا ، مثال :

for (i in 10 downTo 0){
    println(i)
}

downTo

لطباعة العناصر تصاعديا ، مثال :

for (i in 1 until 10){
    println(i)
}

هنا يبدأ يطبع من رقم ١ ويتوقف عند ٩ ، وذلك لأن until تعني حتى أي كآننا نقول حتى ترى ١٠ فتوقف لو أردنا طباعة الرقم ١٠ فسنجعل الرقم ينتهي عند ١١

until