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