Tcl - ขั้นตอน
โพรซีเดอร์ไม่ใช่อะไรนอกจากบล็อกโค้ดที่มีชุดคำสั่งที่ให้ฟังก์ชันการใช้งานซ้ำเฉพาะ ใช้เพื่อหลีกเลี่ยงการใช้รหัสเดียวกันซ้ำในหลายตำแหน่ง ขั้นตอนเทียบเท่ากับฟังก์ชันที่ใช้ในภาษาโปรแกรมต่างๆและมีให้ใช้งานใน Tcl ด้วยความช่วยเหลือของproc คำสั่ง
ไวยากรณ์ของการสร้างขั้นตอนง่ายๆแสดงไว้ด้านล่าง -
proc procedureName {arguments} {
body
}
ตัวอย่างง่ายๆสำหรับขั้นตอนดังต่อไปนี้ -
#!/usr/bin/tclsh
proc helloWorld {} {
puts "Hello, World!"
}
helloWorld
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
Hello, World!
ขั้นตอนที่มีหลายอาร์กิวเมนต์
ตัวอย่างสำหรับขั้นตอนที่มีอาร์กิวเมนต์แสดงอยู่ด้านล่าง -
#!/usr/bin/tclsh
proc add {a b} {
return [expr $a+$b]
}
puts [add 10 30]
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
40
ขั้นตอนที่มีอาร์กิวเมนต์ตัวแปร
ตัวอย่างสำหรับขั้นตอนที่มีอาร์กิวเมนต์แสดงอยู่ด้านล่าง -
#!/usr/bin/tclsh
proc avg {numbers} {
set sum 0
foreach number $numbers {
set sum [expr $sum + $number]
}
set average [expr $sum/[llength $numbers]]
return $average
}
puts [avg {70 80 50 60}]
puts [avg {70 80 50 }]
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
65
66
ขั้นตอนที่มีอาร์กิวเมนต์เริ่มต้น
อาร์กิวเมนต์ดีฟอลต์ใช้เพื่อระบุค่าดีฟอลต์ที่สามารถใช้ได้หากไม่มีการระบุค่า ตัวอย่างสำหรับโพรซีเดอร์ที่มีอาร์กิวเมนต์เริ่มต้นซึ่งบางครั้งเรียกว่าอาร์กิวเมนต์โดยปริยายแสดงไว้ด้านล่าง -
#!/usr/bin/tclsh
proc add {a {b 100} } {
return [expr $a+$b]
}
puts [add 10 30]
puts [add 10]
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
40
110
ขั้นตอนการเรียกซ้ำ
ตัวอย่างสำหรับขั้นตอนการเรียกซ้ำแสดงอยู่ด้านล่าง -
#!/usr/bin/tclsh
proc factorial {number} {
if {$number <= 1} {
return 1
}
return [expr $number * [factorial [expr $number - 1]]]
}
puts [factorial 3]
puts [factorial 5]
เมื่อดำเนินการโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
6
120