بسم الله الرحمن الرحيم
الحلقات التكرارية :
تحتوي لغة Go على عدد اقل من بنى التحكم من لغة C , فمثلا لا وجود للحلقة التكرارية while , كما تم أضافة الحلقة range للتعامل مع المصفوفات .
و سنبدأ الدرس بالحلقة التكرارية for و أستخدمتها في لغة Go , بأستخدام هذا المثال :
package main
import "fmt"
func main(){
for i := 0;i<10 ;i++ {
fmt.Println(i)
}
}
import "fmt"
func main(){
for i := 0;i<10 ;i++ {
fmt.Println(i)
}
}
سيقوم مثلنا بطباعة الأرقام من 0 إلى 9 , و يجب أن أنبه أن الأقواس "{ } " إجبارية في الحلقة التكرارية for , و تم الأستغناء على القوسين " ( ) " الذي يكونان بعد الكلمة المفتاحية for , حتى أنه لم يعد أستخدمهما أختياري .
و هذا شرح التصريح الخاص بـ"for" في هذه الحالة :
for i := 0;i<10 ;i++
- for : الكلمة المفتاحية الخاصة بالجملة التكرارية .
- i :=0 : التصريح عن المتغيرات الخاصة بالعدادت , و التي تستخدم كشرط للمقارنة , و من الممكن التصريح عن القيمة المستخدمة كعداد في سطر مختلف كالتالي :
i := 0
for ;i<10 ;i++
- i<10 : شرط أستمرار الحلقة التكرارية , حيث أن قيمة المتغير i أصغر من 10 , و في حالة أنتهاء الحالة سوف يتم أيقاف الحلقة التكرارية .
- ++i : المؤثر على متغير العداد , و في حالتنا سوف يتم زيادة قيمة i بواحد في كل دورة للحلقة التكرارية .
و في المثال التالي سوف نحول الحلقة for لما يشابه الحلقة while في لغة C :
package main
import "fmt"
func main() {
sum := 1
for ; sum < 1000; {
sum += sum
}
fmt.Println(sum)
}
sum := 1
و تصريح المؤثر على متغير العداد في داخل الحلقة التكرارية و قمنا بترك المكان المخصص لها في تصريح الحلقة التكرارية for فارغ و أكتفينا بتصريح الشطر لأستمرار دوارن الحلقة التكرارية فقط :
for ; sum < 1000; {
sum += sum
}
أذا سبق أن برمجة باللغة C فلابد أنك لاحظت الشبه بين هذه الحلقة و الحلقة While , كما يمكنك أختصار التصريح التالي بحذف ";" من الحلقة ليصبح كالتالي :
sum := 1
for sum < 1000 {
sum += sum
}
في بعض الحالة يريد المبرمج صنع حلقة تكرارية غير محدودة , أي أنها تتكرر بشكل غير محدود , لذا في لغة Go كل ما يلزم هو ترك الحلقة التكرارية for من دون معاملات كالتالي :
package main
func main() {
for ; ; {
}
}
func main() {
for ; ; {
}
}
كما في مثالنا السابق تستطيع حذف الحرف ";" كالتالي :
package main
func main() {
for {
}
}
func main() {
for {
}
}
و الأن إلى شرح الخاصية range الخاصة بالمصفوفات في لغة Go , و لكن سوف نتطرق إلى هذا المثال البسيط للحصول على عناصر من مصفوفة معرفة في لغة Go بأستخدام الحلقة for العادية :
package main
import "fmt"
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
func main() {
for i:=0;i<7;i++ {
fmt.Printf("%d)%d\n",i,pow[i])
}
}
قمنا بأستخدام المتغير i في الحلقة التكرارية للحصول على جميع العناصر في المصفوفة pow :
for i:=0;i<7;i++ {
fmt.Printf("%d)%d\n",i,pow[i])
}
و الأن إلى نفس المثال بأستخدام range كالتالي :
package main
import "fmt"
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
func main() {
for i, v := range pow {
fmt.Printf("%d)%d\n", i, v)
}
}
import "fmt"
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
func main() {
for i, v := range pow {
fmt.Printf("%d)%d\n", i, v)
}
}
for i, v := range pow {fmt.Printf("%d)%d\n", i, v) }
و هذا مثال أخر عن الدالة range و أستخدمتها , حيث سنتيتخدمها للتعامل مع متغير من النوع string الذي هو في الحقيقة عبارة عن مصفوفة من الحروف :
package main
import "fmt"
func main() {
var i string ="Hello,World!"
for _,a := range i {fmt.Printf("%c\n",a)}
}
import "fmt"
func main() {
var i string ="Hello,World!"
for _,a := range i {fmt.Printf("%c\n",a)}
}
تلاحظ أننا أسمينا المتغير الخاص برقم العنصر في المصفوفة بـ"_" , و الذي يرمز في اللغة للمتغيرات التي لا تحتاجها و التي تعيدها الدوال مثل range و سيتم تجاهلها في وقت الترجمة:
for _,a := range i {fmt.Printf("%c\n",a)}
و هذه نهاية الدرس الخامس و أن شاء الله تعالى في الدرس السادس سوف نتعلم جمل أتخاذ القرار في لغة GO .
ليست هناك تعليقات:
إرسال تعليق