บทที่ 8 ฟังก์ชัน
จบบทนี้ น้องจะแบ่งโปรแกรมยาวๆ ออกเป็นฟังก์ชันเล็กที่แต่ละตัวทำงานเดียว เช่น is_prime gcd max_of_array print_row แล้วประกอบกันใน main ให้อ่านเหมือนลำดับขั้นตอน โจทย์ TOI Zero ระดับ A2 ส่วนใหญ่มีหลายขั้นตอนซ้อนกัน เช่น ตรวจจำนวนเฉพาะของเลขที่กลับหลักแล้ว นับวันระหว่างสองวันที่ หรือวาดรูปจากชิ้นส่วนซ้ำๆ ถ้าเขียนกองรวมใน main จะยาวและหาบั๊กยาก บทนี้ยังอธิบายว่าทำไมฟังก์ชันแก้ตัวแปรที่ส่งเข้าไปไม่ได้ แต่แก้อาเรย์ได้ และตัวแปร global ที่ชื่อซ้ำกันทำให้คำตอบผิดเงียบๆ ได้อย่างไร
ในบทนี้
| หน้า | ได้อะไร |
|---|---|
| 8.1 เขียนและเรียกฟังก์ชัน | ทำไมต้องแบ่งโค้ด void พารามิเตอร์ return ลำดับการทำงานตอนเรียก และ prototype |
| 8.2 ส่งค่าแบบสำเนา | เห็นกับตาว่าแก้พารามิเตอร์แล้วตัวแปรข้างนอกไม่เปลี่ยน คืนค่าแทน และชนิดที่ถูกแปลงตอนส่ง |
| 8.3 ส่งอาเรย์และสตริงให้ฟังก์ชัน | ส่งความยาวไปด้วย ฟังก์ชันแก้อาเรย์ได้ ชุดฟังก์ชัน read_array max_of_array อาเรย์สองมิติ และสตริง |
| 8.4 ขอบเขตของตัวแปร | local global static ชื่อซ้ำกัน และบั๊กจากตัวแปร global ที่เจอบ่อยในโค้ดแข่งขัน |
| 8.5 math.h และฟังก์ชันคณิตศาสตร์ที่ใช้บ่อย | sqrt pow fabs กับดักของ pow กับจำนวนเต็มใหญ่ is_prime และ gcd |