คำสั่งวนซ้ำ ในภาษา Ruby

คำสั่งวนซ้ำ (Looping statement) คือคำสั่งที่ใช้ควบคุมโปรแกรมให้ทำงานซ้ำๆ ภายในเงื่อนไขที่กำหนด คำสั่งวนซ้ำนั้นมีประโยชน์มากในการเขียนโปรแกรม ลองจินตนาการว่าคุณต้องการหาจำนวนเฉพาะ 100 ตัวแรก หรือส่งอีเมลให้กับคนอื่นเป็นจำนวนมาก คำสั่งวนซ้ำสามารถทำงานเหล่านี้ได้อย่างง่ายดาย และในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับคำสั่งวนซ้ำประเภทต่างๆ ในภาษา Ruby

คำสั่ง while loop

คำสั่ง while เป็นคำสั่งวนซ้ำที่ใช้ควบคุมให้โปรแกรมทำงานบางอย่างซ้ำๆ ในขณะที่เงื่อนไขเป็นจริง นี่เป็นรูปแบบการใช้งานของคำสั่ง while

while condition do
    statements
end

ในขณะที่เงื่อนไข condition เป็นจริง โค้ดที่อยู่ระหว่างบล็อคคำสั่ง do และ end จะถูกประมวลผล และโปรแกรมจะหยุดทำงานในลูปเมื่อเงื่อนไขจะเป็นเท็จ

ต่อไปเป็นตัวอย่างการใช้งานคำสั่ง while ในภาษา Ruby เราจะเขียนโปรแกรมเพื่อแสดงตัวเลข 1 - 10 ออกทางหน้าจอ

i = 1
while i <= 10 do
    print i, " "
    i = i + 1
end
puts "end"

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

1 2 3 4 5 6 7 8 9 10 end

ในตัวอย่าง ตอนแรกเราได้ประกาศตัวแปร i และมีค่าเป็น 1 หลังจากนั้นเราสร้าง while loop โดยมีเงื่อนไขเป็น i <= 10 นั่นหมายความว่าในขณะที่ค่าของตัวแปร i น้อยกว่าหรือเท่ากับ 10 โค้ดที่อยู่ระหว่าง do และ end จะถูกประมวลผล ซึ่งในแต่ละรอบจะแสดงค่าในตัวแปรออกมา

i = i + 1

นอกจากนี้ เราได้เพิ่มค่าในตัวแปร i ขึ้น 1 ในแต่ละรอบของการทำงานในลูป ดังนั้นเมื่อค่าในตัวแปรมีค่าเป็น 11 นั่นจะทำงานเงื่อนไข i <= 10 ไม่เป็นจริงอีกต่อไป และ loop ได้จะจบการทำงานลง และโปรแกรมทำงานคำสั่งอื่นนอกลูปต่อไป

การใช้งานคำสั่งวนซ้ำมีข้อที่ควรระวังคือ คุณต้องตรวจสอบให้แน่ว่าโปรแกรมจะสามารถจบการทำงานของ loop ได้ ไม่เช่นนั้นจะทำให้เกิด Infinite loop ซึ่งโปรแกรมจะทำงานใน loop ตลอดไป และจากตัวอย่างของเราคำสั่ง i = i + 1 นั้นเป็นการยืนยันว่าค่าของตัวแปร i จะถูกเพิ่มขึ้นเพื่อทำให้เงื่อนไขเป็นเท็จในรอบที่สิบนั่นเอง

คำสั่ง until loop

คำสั่ง until loop จะทำงานจนกว่าเงื่อนไขเป็นจริง กล่าวคือมันจะทำงานในขณะที่เงื่อนไขเป็นเท็จนั่นเอง ซึ่งตรงกับข้ามกับคำสั่ง while loop ซึ่งทำงานในขณะที่เงื่อนไขเป็นจริง นี่เป็นรูปแบบการใช้งาน

until condition do
    statements
end

รูปแบบการใช้งานนั้นจะเหมือนกับคำสั่ง while แต่สิ่งทึ่แตกต่างกันคือคำสั่ง until loop จะทำงานจนกว่าเงื่อนไข condition จะเป็นจริง โค้ดที่คุณต้องการให้โปรแกรมทำงานนั้นจะอยู่ระหว่าง do และ end เช่นเดียวกัน

ต่อไปมาดูตัวอย่างการใช้งานคำสั่ง until loop มันเป็นตัวอย่างสำหรับนาฬิกานับถอยหลัง

i = 10
until i == 0 do
    print i, " "
    i = i - 1
end
puts "end"

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

10 9 8 7 6 5 4 3 2 1 end

ในตัวอย่าง เป็นโปรแกรมแสดงนาฬิกานับถอยหลังโดยเริ่มจาก 10 ในแต่ละรอบของการทำงานโปรแกรมจะตรวจสอบเงื่อนไข i == 0 และทำงานในลูปถ้าหากเงื่อนไขเป็นเท็จ (ค่าของตัวแปร i ไม่เท่ากับ 0) ในแต่ละรอบของการทำงานใน loop เราได้แสดงค่าในตัวแปรออกมา และลดค่าในตัวแปรลงหนึ่งค่าด้วยคำสั่ง

i = i - 1

การทำเช่นนนี้จะทำให้ค่าในตัวแปร i ลดลงมาเรื่อยๆ จนถึง 0 และทำให้ loop จบการทำงานเนื่องจากเงื่อนไข i == 0 เป็นจริง

คำสั่ง for loop

คำสั่งวนซ้ำ for เป็นคำสั่งที่มักใช้กับการวนซ้ำที่มีจำนวนรอบที่แน่นอน หรือวนซ้ำในออบเจ็คที่สามารถวนซ้ำได้ (Iterable) ยกตัวอย่างเช่น อาเรย์ หรือ Range นี่เป็นรูปแบบการใช้งานของคำสั่ง for loop ในภาษา Ruby

for i in iterable do
    statements
end

โดยที่ i นั้นเป็นตัวแปรสำหรับรับค่าสมาชิกในออบเจ็ค iterable ของการวนในแต่ละรอบ คำสั่งที่คุณต้องการให้โปรแกรมทำงานนั้นจะอยู่ในระหว่างบล็อค do และ end เช่นเคย ต่อไปมาดูตัวอย่างการใช้งานคำสั่ง for สำหรับแสดงตัวเลขจาก 1 - 10

for i in (1..10) do
    print i, " "
end

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

1 2 3 4 5 6 7 8 9 10

ในตัวอย่าง เป็นการใช้งานคำสั่ง for เพื่อวนอ่านค่าตัวเลขในข้อมูลประเภท Range (1..10) Range นั้นเป็นออบเจ็คที่สร้างลำดับของตัวเลขที่สามารถวนซ้ำได้ ในกรณีนี้ เราได้สร้างลำดับของตัวเลขจาก 1 - 10 และใช้คำสั่ง for เพื่อวนเอาค่าเหล่านั้นมาแสดงผล

อย่างไรก็ตาม Range ในภาษา Ruby นั้นมีอยู่สองประเภทคือ Inclusive-range และ Exclusive-range นี่เป็นตัวอย่าง

p (1..10).to_a  # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
p (1...10).to_a # => [1, 2, 3, 4, 5, 6, 7, 8, 9]

Inclusive-range จะใช้เครื่องหมายสองจุด (..) ในการสร้าง โดยชุดของตัวเลขที่ได้จะรวมตัวเลขหลังจุดด้วย ในขณะที่ Exclusive-range จะใช้เครื่องหมายสามจุด (..) ในการสร้าง และตัวเลขที่ได้จะไม่รวมตัวเลขหลังจุด เราใช้เมธอด to_a เพื่อแปลง Range ให้เป็นอาเรย์ของตัวเลขเพื่อให้คุณเห็นภาพ

คุณจะได้เรียนรู้เกี่ยวกับ Range อย่างละเอียดอีกครั้งในบทของ Range เอง

อีกตัวอย่างหนึ่งสำหรับการใช้งานคำสั่ง for คือเราสามารถใช้มันเพื่อวนอ่านค่าในอาเรย์ได้

numbers = [1, 2, 3, 4, 5]
for i in numbers do
    puts i
end

languages = ["Ruby", "PHP", "Python", "Java", "C++"]
for i in languages do
    puts i
end

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

1
2
3
4
5
Ruby
PHP
Python
Java
C++

ในตัวอย่าง เราใช้คำสั่ง for เพื่อวนอ่านข้อมูลในอาเรย์ของตัวเลขและอาเรย์ของ String และแสดงค่าเหล่านั้นออกมาทางหน้าจอ

อีกการใช้งานหนึ่งของคำสั่ง for คือการใช้สร้าง Index ของอาเรย์เพื่อเข้าถึงข้อมูลในอาเรย์

numbers = [1, 2, 3, 4, 5]
languages = ["Ruby", "PHP", "Python", "Java", "C++"]

puts "INDEX\tNUMBERS\tLANGUAGES"
for i in (0..4) do
    puts "#{i}\t#{numbers[i]}\t#{languages[i]}"
end

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

INDEX   NUMBERS LANGUAGES
0       1       Ruby
1       2       PHP
2       3       Python
3       4       Java
4       5       C++

ในตัวอย่าง เราได้มีสองอาเรย์ที่มีสมาชิก 5 ตัว ดังนั้นเราจึงสร้าง Range ที่มีค่าระหว่าง 0 - 4 เพื่อเข้าถึงตัวแปรอาเรย์ทั้งสองตัว (index ของอาเรย์เริ่มจาก 0 เสมอ)

Modifier while

คำสั่ง modifier while เป็นคำสั่ง while แบบสั้นที่สามารถใช้เพื่อควบคุมการทำงานในหนึ่งบรรทัดของโปรแกรมได้ นี่เป็นตัวอย่างการใช้งาน

n = 1
n += 1 while n <= 10
puts n

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

11

ในตัวอย่าง เป็นการใช้คำสั่งกำหนดการทำงาน while เพื่อควบคุมการทำงานของโปรแกรมในบรรทัดที่กำหนด และอย่างที่คุณเห็นคำสั่ง n += 1 จะทำงานในขณะที่ค่าในตัวแปร n ยังน้อยกว่าหรือเท่ากับ 10

ในการประยุกต์ใช้คำสั่ง modifier while กับบล็อค คุณสามารถสร้างคำสั่ง do-while เหมือนกับในภาษาอื่นๆ ได้ ซึ่งจะทำให้คำสั่ง while loop จะทำงานอย่างน้อยหนึ่งรอบก่อนตรวจสอบเงื่อนไข หรือกล่าวอีกนัยหนึ่งคือเงื่อนไขจะถูกตรวจสอบในตอนท้ายของลูป นี่เป็นตัวอย่าง

n = nil
begin
    print "Enter a number or 0 to exit: "
    n = gets.chomp.to_i
    puts "You entered #{n}"
end while n != 0

puts "Program terminated"

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

Enter a number or 0 to exit: 4
You entered 4
Enter a number or 0 to exit: 9
You entered 9
Enter a number or 0 to exit: 2
You entered 2
Enter a number or 0 to exit: 0
You entered 0
Program terminated

ในตัวอย่าง เป็นโปรแกรมรับค่าตัวเลขจากทางคีย์บอร์ดและแสดงผลตัวเลขดังกล่าวออกมา ค่าที่รับเข้ามานั้นได้ถูกเก็บไว้ในตัวแปร n และนำไปตรวจสอบเงื่อนไขในตอนท้ายนั่นคือ n != 0 นั่นหมายความว่าในขณะที่ค่าที่รับมานั้นยังไม่เท่ากับ 0 โปรแกรมจะวนให้ใส่ค่าตัวเลขแบบนี้ตลอดไป

จากในตัวอย่างแสดงให้เห็นว่ามันเข้าท่าที่เราจะตรวจสอบเงื่อนไขในตอนท้ายของลูป เนื่องจากว่าการรับค่านั้นเกิดขึ้นภายในลูปนั่นเอง

Modifier until

Modifier until ใช้ควบคุมให้โปรแกรมทำงานในบรรทัดที่กำหนดจนกว่าเงื่อนไขจะเป็นจริงหรือทำงานในขณะที่เงื่อนไขเป็นเท็จนั่นเอง นี่เป็นตัวอย่างการใช้งาน

a = 0
a += 1 until a == 10
puts a

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

10

ในตัวอย่างเราได้ประกาศตัวแปร a ที่มีค่าเป็น 0 ในบรรทัดถัดมาเป็นการใช้งานคำสั่ง modifier until เพื่อควบคุมให้โปรแกรมเพิ่มค่าในตัวแปรขึ้นไปทีละ 1 จนกว่าค่าของตัวแปร a จะเท่ากับ 10

คำสั่ง break

คำสั่ง break นั้นเป็นคำสั่งที่ใช้สำหรับบังคับให้ลูปจบการทำงานในทันที โดยไม่สนใจว่าเงื่อนไขจะเป็นอย่างไร คุณสามารถใช้มันได้กับคำสั่งวนซ้ำทุกประเภท นี่เป็นตัวอย่างการใช้งาน

for i in (1..10)
    break if i == 5
    print i, " "
end
puts "end"

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

1 2 3 4 end

ในตัวอย่าง เป็นโปรแกรมสำหรับแสดงตัวเลข 1 - 10 ออกทางหน้าจอเหมือนกับที่คุณเห็นในตัวอย่างของการใช้งานคำสั่ง for

break if i == 5

ในตอนนี้เราได้มีการเรียกใช้งานคำสั่ง break เมื่อค่าในตัวแปร i นั้นเท่ากับค่า 5 สิ่งที่เกิดขึ้นคือลูปจบการทำงานทันทีโดยไม่ต้องวนจนกว่าค่าของ i จะเป็น 10

และแน่นอนคุณสามารถใช้คำสั่ง break ภายในบล็อคของเมธอดที่สามารถวนซ้ำได้

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers.each { |item|
    break if item == 5
    print item, " "
}
puts "end"

คำสั่ง next

คำสั่ง next นั้นเป็นคำสั่งที่ใช้สำหรับข้ามการทำงานของลูปในรอบปัจจุบันเพื่อให้ทำงานรอบถัดไปในทันที นี่เป็นตัวอย่างการใช้งาน

for i in (1..10)
    next if i == 5
    print i, " "
end
puts "end"

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

1 2 3 4 6 7 8 9 10 end

ในตัวอย่าง เป็นโปรแกรมแสดงตัวเลขเช่นเดียวกับตัวอย่างก่อนหน้า แต่ในครั้งนี้เราได้ใช้คำสั่ง next แทน

next if i == 5

เมื่อค่าในตัวแปร i มีค่าเท่ากับ 5 เราได้เรียกใช้คำสั่ง next ผลลัพธ์คือโปรแกรมข้ามไปทำงานในรอบถัดไปทันที โดยที่ไม่ทำงานในคำสั่งที่เหลือ ในที่นี้คือ print i, " ";

คำสั่ง redo

คำสั่ง redo เป็นคำสั่งที่ใช้บังคับให้โปรแกรมเริ่มต้นทำลูปรอบปัจจุบันใหม่อีกครั้ง มาดูตัวอย่างการใช้งาน

names = []
count = 0
while count < 5 do
    print "[#{count + 1}] Enter name: "
    n = gets.chomp
    if not /^[a-zA-Z]+$/.match(n)
        puts "Name must only contain a-z or A-Z" 
        redo
    end
    names.push(n)
    count += 1
end
p names

ในตัวอย่าง เป็นโปรแกรมสำหรับรับชื่อจากทางคีย์บอร์ดมาเก็บไว้ในตัวแปรอาเรย์เป็นจำนวน 5 ชื่อ แต่มีเงื่อนไขอยางหนึ่งในการกรอกชื่อคือมันต้องประกอบไปด้วยตัวอักษรภาษาอังกฤษ a-z หรือ A-Z เท่านั้น

while count < 5 do
    ...

เราได้ประกาศตัวแปร count เพื่อมานับจำนวนของชื่อที่ได้กรอกถูกต้องไปแล้ว และลูปจะทำงานในขณะที่เรายังได้ชื่อไม่ครบ 5 ชื่อ

if not /^[a-zA-Z]+$/.match(n)
    puts "Name must only contain a-z or A-Z" 
    redo
end

หลังจากนั้นเรารับชื่อเข้ามาเก็บไว้ในตัวแปร n และตรวจสอบชื่อที่รับเข้ามาด้วย Regular expression โดยรูปแบบ /^[a-zA-Z]+$/ นั้นหมายความว่าชื่อเป็นตัวอักษรภาษาอังกฤษทั้งหมดหรือไม่ เราเรียกใช้คำสั่ง redo เพื่อให้โปรแกรมกลับไปทำงานใหม่อีกครั้ง ถ้าหากไม่ใช่

[1] Enter name: Mateo
[2] Enter name: Danny
[3] Enter name: Andy
[4] Enter name: Marco.M
Name must only contain a-z or A-Z
[4] Enter name: Marco
[5] Enter name: Nathan
["Mateo", "Danny", "Andy", "Marco", "Nathan"]

นีเป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเรากรอกชื่อเป็นจำนวน 5 ชื่อ สังเกตในตอนกรอกชื่อครั้งที่สี่ เราได้ใส่ชือที่มีเครื่องหมายจุดด้วย "Marco.M" ดังนั้นโปรแกรมเริ่มทำงานในรอบนั้นใหม่ จนกว่าเราจะกรอกถูกต้อง

ต่อไปมาดูตัวอย่างการใช้งานคำสั่งวนซ้ำกับการแก้ปัญหาทางคณิตศาสตร์กัน

ตัวอย่างการหาตัวประกอบของจำนวนเต็ม

เราจะเขียนโปรแกรมสำหรับหาตัวประกอบของจำนวนเต็มที่รับมาจากคีย์บอร์ด โดยการแสดงผลรายการของตัวประกอบทั้งหมดและบอกว่าตัวเลขดังกล่าวเป็นจำนวนเฉพาะหรือไม่ นี่เป็นโค้ดของโปรแกรม

print "Enter a number: "
n = gets.chomp.to_i

factors = []
for i in (1..n) do
    factors.push(i) if n % i == 0
end

puts "Factors of #{n} includes:"
puts factors.inspect

โปรแกรมของเรานั้นเริ่มจากการรับค่าตัวเลขจำนวนเต็มมาเก็บไว้ในตัวแปร n และเราประกาศตัวแปรอาเรย์ factors สำหรับไว้เก็บตัวประกอบทั้งหมดที่สามารถหาได้

for i in (1..n) do
    factors.push(i) if n % i == 0
end

เพื่อหาตัวประกอบทั้งหมดของค่าที่รับเข้ามา เราจำเป็นต้องสร้างคำสั่ง for เพื่อวนซ้ำจาก 1 - n เพื่อหาตัวเลขทั้งหมดที่หารจำนวนดังกล่าวลงตัว กล่าวคือถ้าหากจำนวนเต็ม i หารจำนวนเต็ม n ลงตัว จะกล่าวได้ว่า i เป็นตัวประกอบของ n

Enter a number: 64
Factors of 64 includes:
[1, 2, 4, 8, 16, 32, 64]

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเรากรอกตัวเลขเป็น 64

ตัวอย่างเกมทายตัวเลขปริศนา

สำหรับตัวอย่างต่อไปจะเป็นตัวอย่างการใช้งานคำสั่ง modifier while ร่วมกับบล็อค begin end เราจะมาเขียนเกมทายตัวเลขปริศนาโดยการรับค่าตัวเลขที่ต้องการทายมาจากคีย์บอร์ด นี่เป็นโค้ดของโปรแกรม

puzzle_number.rb
prng = Random.new
secret = prng.rand(100)
puts "A secret number has been generated"

count = 0

begin

    if count >= 10
        puts "Game over! you have guessed 10 times"
        break
    end

    print "Enter a number: "
    guess = gets.chomp.to_i
    count += 1

    puts "You guessed #{guess}"
    if guess > secret
        puts "A secret number is smaller"
    elsif guess < secret
        puts "A secret number is greater"
    else
        puts "Nice! the secret number is #{secret}"
    end

end while secret != guess

puts "You have guessed #{count} times"

จากในโค้ดตัวอย่างนั้น เป็นเกมสำหรับทายตัวเลขปริศนาที่โปรแกรมจะสุ่มขึ้นมาเพียงหนึ่งตัวเลข หลังจากนั้นผู้เล่นจะต้องทายตัวเลขดังกล่าวให้ถูกต้อง

prng = Random.new
secret = prng.rand(100)

ในตอนแรก เราสร้างออบเจ็คจากคลาส Random เพื่อให้ในการสุ่มตัวเลขปริศนาเพื่อให้ผู้เล่นเกมได้ทาย เมธอด rand นั้นใช้สำหรับสุ่มค่าตัวเลขระหว่าง 0 - 100 ที่เราใส่เป็นอาร์กิวเมนต์ของเมธอด

if count >= 10
    puts "Game over! you have guessed 10 times"
    break
end

หลังจากนั้นเป็นการสร้างลูปด้วย modifier while ขึ้นมา ภายใน while loop สิ่งแรกที่เราทำก็คือตรวจสอบว่าค่าในตัวแปร count นั้นมากกว่า 10 หรือไม่ ถ้าหากใช่เราจบการทำงานของลูปด้วยคำสั่ง break เนื่องจากว่าเกมของเรานั้นมีเงื่อนไขอยู่ว่าผู้เล่นต้องทายให้ถูกภายใน 10 ครั้งเท่านั้น

print "Enter a number: "
guess = gets.chomp.to_i
count += 1

ถัดมาเป็นการรับค่าตัวเลขที่ต้องการทายเข้ามาจากทางคีย์บอร์ด และตรงนี้เองเป็นการที่ให้ผู้เล่นให้ตัวเลขที่ต้องการทายเข้ามา และสิ่งที่พวกเขาต้องทำก็คือพยายามทายตัวเลขให้ตรงกับตัวเลขปริศนาที่เก็บไว้ในตัวแปร secret

puts "You guessed #{guess}"
if guess > secret
    puts "A secret number is smaller"
elsif guess < secret
    puts "A secret number is greater"
else
    puts "Nice! the secret number is #{secret}"
end

และทุกครั้งที่ใส่ตัวเลขเข้ามาโปรแกรมจะทำการบอกใบ้ว่าตัวเลขที่ใส่เข้ามานั้นน้อยกว่า มากกว่า หรือตรงกันกับตัวเลขปริศนา ถ้าหากตรงกันก็หมายความว่าพวกเขาได้รับชัยชนะ และเกมจบลงพร้อมกับบอกว่าได้ทายไปกี่ครั้งแล้ว

begin
    ...
end while secret != guess

อย่างไรก็ตาม จากเงื่อนไข secret != guess ถ้าหากทายตัวเลขยังไม่ถูกต้อง โปรแกรมจะเริ่มให้ทายโดยใส่ตัวเลขเข้ามาใหม่ ในรอบถัดไปพวกเขาจะทายได้ง่ายขึ้นจากคำบอกใบ้ที่ได้รับไปก่อนหน้า และในแต่ระรอบของการทายนั้นเราจะทำการนับไว้ในตัวแปร count ด้วย เพื่อใช้เป็นเงื่อนไขในการจบเกมถ้าหากทายมากกว่า 10 ครั้งแล้ว

A secret number has been generated
Enter a number: 34
You guessed 34
A secret number is greater
Enter a number: 65
You guessed 65
A secret number is smaller
Enter a number: 50
You guessed 50
A secret number is smaller
Enter a number: 40
You guessed 40
A secret number is greater
Enter a number: 49
You guessed 49
Nice! the secret number is 49
You have guessed 5 times

และนี่เป็นผลลัพธ์การทำงานของโปรแกรม เราใช้จำนวนในการทายทั้งหมด 5 ครั้งจนกว่าจะทราบว่าตัวเลขปริศนาคือ 49

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการใช้งานคำสั่งวนซ้ำประเภทต่างๆ ซึ่งแต่ละคำสั่งนั้นก็มีวัตถุประสงค์หรือความเหมาะสมในการใช้งานทึ่แตกต่างกัน นอกจากนี้ เรายังพูดถึงคำสั่งควบคุมการทำงานของลูปอย่างคำสั่ง คำสั่ง break next และ redo