The Structured Program Theorem


คนที่เล่นดนตรีเป็น จะรู้ว่าคอร์ดที่ใช้บ่อยมีเพียงแค่ประมาณ 10 คอร์ดเท่านั้นเอง Coding ก็คล้ายกันครับ แถมยังง่ายกว่าการเล่นดนตรีด้วยซ้ำ เพราะมีแค่ 3 โครงสร้างเท่านั้น บทความนี้จะอธิบายเรื่องสำคัญที่ควรรู้ในการเขียน Code
ภาษาคอมพิวเตอร์อย่าง C, Java, JavaScript และอีกหลายภาษา มีโครงสร้างสำคัญอยู่เพียง 3 อย่าง ไม่ว่าโค้ดจะสลับซับซ้อนขนาดไหน ก็สามารถเขียนให้อยู่ในรูปโครงสร้าง 3 อย่างนี้ได้เสมอ ทฤษฎีนี้เรียกว่า Structured Program Theorem

1. โครงสร้างแบบ Sequence

โครงสร้างนี้ไม่มีอะไรมาก เป็นการนำคำสั่งมาเขียนต่อกัน ทำงานตามลำดับบนลงล่าง ซ้ายไปขวา บางภาษาแยกแต่ละคำสั่งโดยใช้เครื่องหมาย ; หรือ Semicolon บางภาษาใช้การขึ้นบรรทัดใหม่แทน ในภาษา Java ถ้าต้องการสั่งให้หุ่นยนต์เดินหน้า 2 ก้าว แล้วเลี้ยวซ้าย เดินไปอีก 1 ก้าว ก็ใช้คำสั่งตรงมาตรงไป
forward();    // เดินหน้า
forward();    // เดินหน้า
turnLeft();   // เลี้ยวซ้าย
forward();    // เดินหน้า

2. โครงสร้างแบบ Iteration

จากหุ่นยนต์ตัวเดิมถ้าต้องการสั่งให้เดินหน้า 100 ก้าว จะใช้คำสั่ง forward() ไป 100 ครั้งก็ใช้ได้ แต่จะยาวไปหน่อย ต้องใช้โครงสร้างแบบที่ 2 มาช่วย คือ Iteration เริ่มต้นให้ i = 0 จากนั้นให้ทำไปเรื่อยๆ ตราบที่ i < 100 หรือ ภาษา Java คือ while (i < 100)
int i = 0;
while (i < 100) {
	forward();
	i = i + 1;
}

3. โครงสร้างแบบ Condition

โครงสร้างนี้จะทำงานก็ต่อเมื่อเงื่อนไขเป็นจริง ตัวอย่างโค้ดให้หุ่นยนต์เดินเป็นจตุรัสขนาด 25 ก้าวตามเข็มนาฬิกา หลักการคือให้หุ่นยนต์เดินหน้าไปเรื่อยๆ เมื่อ i หารด้วย 25 ลงตัวก็ให้เลี้ยวขวา เขียนเป็นภาษา Java คือ if (i % 25 == 0)
int i = 1;
while (i <= 100) {
	forward();
	if (i % 25 == 0) {
		turnRight();
	}
	i = i + 1;
}

ขอแถมอีกอย่างนึงเป็นโครงสร้างที่ทำให้เขียนโค้ดได้สะดวกยิ่งขึ้นนั่นคือ Subroutine หรือ Function หรือ Method แล้วแต่จะเรียกในแต่ละภาษา ตัวอย่างในภาษา Java คือ
int sum(int n) {
	int sum = 0;
	int i = 0;
	while (i <= n) {
		if (i % 2 == 0) {
			sum += i;
		}
		i = i + 1;
	}
	return sum;
}

ตัวอย่างข้างบนนี้คือ Method ชื่อ sum สำหรับหาผลบวกเลขคู่ตั้งแต่ 1 ถึง N การเรียกคำสั่ง sum(100) จะได้ผลบวกเลขคู่ตั้งแต่ 1-100 สังเกตว่ามีการใช้โครงสร้างทั้ง 3 อย่าง คือ Sequence, Iteration และ Condition รวมทั้งใช้ Method เพื่อให้เขียนโค้ดสะดวกยิ่งขึ้น
ในภาษาอย่าง Java หรือ C# มี Method อยู่นับแสน ไม่มีใครรู้ทุกอย่าง คนทั่วไปรู้แค่ 10% ก็สามารถสร้างผลงานดีๆได้แล้ว มีหลายคนที่รู้ภาษา C ถึง 100% แต่เวลาใช้จริงใช้แค่ 50% เพราะอีก 50% นั้นแทบไม่มีใครใช้ อ่านบทความนี้จบ ทุกคนก็พร้อมแล้วที่จะสร้างผลงานระดับโลก ไม่แน่เหมือนกัน Mark Zuckerberg คนต่อไปอาจเป็นคุณก็ได้