ฟังก์ชั่น (เรียกอีกอย่างว่าขั้นตอนวิธีการรูทีนย่อยหรือรูทีนย่อย) คือชิ้นส่วนของรหัสที่ออกแบบมาเพื่อทำงานที่เฉพาะเจาะจง ใช้แท็กนี้สำหรับคำถามที่เกี่ยวข้องกับการสร้างหรือเรียกใช้ฟังก์ชันโดยเฉพาะ เพื่อช่วยในการใช้ฟังก์ชั่นในการทำงานให้ใช้ [อัลกอริทึม] หรือแท็กเฉพาะงานแทน

จาก วิกิพีเดีย :

โปรแกรมย่อย (หรือที่เรียกว่าขั้นตอน, ฟังก์ชั่น, โปรแกรมย่อย, วิธีการหรือโปรแกรมย่อย) เป็นส่วนหนึ่งของรหัสในโปรแกรมขนาดใหญ่ที่ทำหน้าที่เฉพาะและค่อนข้างเป็นอิสระจากรหัสที่เหลือ

เนื้อหาของรูทีนย่อยเป็นเนื้อหาของมันซึ่งจะถูกดำเนินการเมื่อเรียกรูทีนย่อยหรือถูกเรียก

รูทีนย่อยสามารถเขียนได้เพื่อให้คาดว่าจะได้รับค่าข้อมูลหนึ่งค่าหรือมากกว่า - รู้จักกันในชื่อพารามิเตอร์หรืออาร์กิวเมนต์ - จากผู้โทร นอกจากนี้ยังสามารถส่งคืนค่าที่คำนวณได้ไปยังผู้เรียก (คืนค่า) หรือให้ค่าผลลัพธ์ที่แตกต่างกันหรือพารามิเตอร์ out (put) อันที่จริงการใช้รูทีนย่อยตามปกติคือการใช้ฟังก์ชั่นทางคณิตศาสตร์ซึ่งวัตถุประสงค์ของรูทีนย่อยคือการคำนวณผลลัพธ์เพียงหนึ่งผลลัพธ์ขึ้นไปโดยที่ค่าต่างๆถูกกำหนดโดยพารามิเตอร์ที่ส่งไปยังรูทีนย่อย (ตัวอย่างอาจรวมการคำนวณลอการิทึมของตัวเลขหรือดีเทอร์มิแนนต์ของเมทริกซ์)

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

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

รูทีนย่อยที่มีเป้าหมายคือการคำนวณฟังก์ชันตรรกะเดี่ยว (นั่นคือเพื่อตอบคำถามใช่ / ไม่ใช่) เรียกว่าเพรดิเคต ในภาษาเชิงตรรกะรูทีนย่อยทั้งหมดมักเรียกว่า "เพรดิเคต" เนื่องจากเป็นตัวกำหนดความสำเร็จหรือความล้มเหลวเป็นหลัก ตัวอย่างเช่นฟังก์ชันประเภทใดก็ได้เป็นรูทีนย่อย แต่ไม่ใช่ main()

นี่เป็นรหัสทั่วไปของภาษาโปรแกรมส่วนใหญ่

ฟังก์ชั่นนี้ยังมี ข้อกำหนดทางคณิตศาสตร์ ซึ่งมีความสำคัญในสาขาวิทยาศาสตร์คอมพิวเตอร์และสถิติ ฟังก์ชันทางคณิตศาสตร์คือความสัมพันธ์แบบหนึ่งต่อหนึ่งโดยที่หนึ่งอาร์กิวเมนต์จะส่งคืนค่าเดิมเสมอ ในภาษาที่ใช้งานได้จริงเช่น Haskell อนุญาตให้ใช้ฟังก์ชันทางคณิตศาสตร์ได้เท่านั้น