บทความ: การใช้งาน `return` และ `yield` ในภาษา C
ภาษา C เป็นภาษาโปรแกรมมิ่งที่มีมาอย่างยาวนานและถูกใช้สำหรับเขียนโปรแกรมในระดับที่ต้องการความเร็วและการควบคุมที่ดีต่อระบบคอมพิวเตอร์ ในการเขียนโปรแกรมเรามักจะใช้คำสั่ง `return` เพื่อส่งค่ากลับจากฟังก์ชั่น วันนี้เราจะมาดูการใช้งาน `return` และนำเสนอการใช้งาน `yield` ซึ่งไม่เป็นที่นิยมหรือไม่มีตรงๆใน C แต่สามารถจำลองการทำงานได้ผ่านการใช้ co-routines หรือ generators ที่มีในภาษาอื่นๆเพื่อให้เข้าใจการทำงานหลัก ๆ ของมัน
คำสั่ง `return` ในภาษา C ใช้สำหรับส่งค่ากลับจากฟังก์ชั่นไปยังจุดที่ได้เรียกใช้ฟังก์ชั่นนั้น ๆ และยังใช้สำหรับจบการทำงานของฟังก์ชันนั้นทันที ตัวอย่างเช่น:
ในตัวอย่างนี้เมื่อเราเรียก `sum(3, 4)` นั่นคือเรากำลังส่งค่า 3 และ 4 เข้าไปในฟังก์ชัน `sum` และในฟังก์ชั่นนั้นเราใช้คำสั่ง `return` เพื่อส่งผลลัพธ์ของการบวกกลับมายังฟังก์ชั่น `main`.
หากต้องการจำลองการทำงานของ `yield` เราต้องใช้ concept ของ co-routines ซึ่งไม่มีอยู่แบบ built in ใน C แต่เราสามารถทำได้ด้วยการใช้สิ่งที่เรียกว่า "state machine" และตัวแปร static เพื่อจดจำสถานะการทำงานล่าสุด ตัวอย่างเช่น:
ตัวอย่างโค้ดข้างต้นเป็นการสร้างฟังก์ชันที่จำลองการทำงานของ `yield` โดยมันจะแสดงการนับเลขทีละตัวตามจำนวนครั้งที่เราเรียกฟังก์ชันนั้นๆ
`return` มีใช้ในทุกสิ่งที่เกี่ยวข้องกับการส่งค่ากลับจากฟังก์ชัน ไม่ว่าจะเป็นการคำนวณค่า, การตรวจสอบเงื่อนไข หรือการส่งค่ากลับเมื่อเจอกับสถานการณ์เฉพาะ
ในทางกลับกัน `yield` นั้นมีประโยชน์ในการสร้าง sequences ที่สามารถสร้างได้ตามลำดับหรือสถานการณ์ที่มีการประมวลผลที่ต้องการทำในแต่ละช่วงเวลาโดยไม่จำเป็นต้องทำจนเสร็จสิ้นทันที สามารถนำไปใช้ในการจัดการกับข้อมูลที่เข้ามาเป็น stream หรือการสร้าง algorithms ที่ใช้ lazy evaluation
การเข้าใจ `return` และ `yield` มีความสำคัญในการสร้างโปรแกรมที่มีโครงสร้างที่ดีและการจัดการ control flow ที่ชัดเจน แม้ภาษา C จะไม่มีคำสั่ง `yield` โดยตรง แต่การเรียนรู้และเข้าใจ concept นี้จะช่วยให้คุณสามารถคิดและจัดการกับโปรแกรมของคุณในแนวทางที่หลากหลายมากขึ้น
หากคุณสนใจที่จะเรียนรู้และฝึกฝนการเขียนโปรแกรมอย่างลึกซึ้งไม่ว่าจะเป็นภาษา C หรือภาษาโปรแกรมมิ่งอื่นๆ Expert-Programming-Tutor พร้อมที่จะทำให้คุณเป็นโปรแกรมเมอร์มืออาชีพ พบกับคอร์สเรียนที่ทั้งสนุกและสร้างสรรค์ความรู้ให้กับคุณอย่างไม่จำกัด!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM