วันพฤหัสบดีที่ 8 มีนาคม พ.ศ. 2555

วันศุกร์ที่ 2 มีนาคม พ.ศ. 2555

1. แนวคิดการสอนเขียนโปรแกรม
หลายครั้งที่ผมต้องเริ่มสอนเขียนโปรแกรม ให้นักเรียนกลุ่มใหม่ และก็ต้องบอกเล่า
ด้วยประโยคเดิมทุกครั้งว่า "การเขียนโปรแกรม ทุกภาษานั้นเหมือนกัน" สิ่งที่แตกต่างกัน
ของแต่ละภาษาคือ syntax แต่สิ่งที่เหมือนกันของทุกภาษาคือ การใช้ประสบการณ์จากภาษาหนึ่ง
ไปใช้ในอีกภาษาหนึ่งได้ ด้วยการซึมซับ เรื่องของ Structure Programming จนเข้าใจ เพื่อควบคุม
ในสิ่งที่คล้าย ๆ กันคือ input, process และ output ซึ่งหมายความว่า ถ้าท่านเขียนโปรแกรมอะไร
ในภาษาหนึ่งได้แล้ว การเขียนโปรแกรมแบบนั้น ในภาษาอื่นย่อมไม่ใช่เรื่องยากอีกต่อไป
 เพียงแต่ต้องศึกษาถึง syntax หรือ รูปแบบการเขียนของภาษาใหม่นั้นเพิ่มเติม แล้วนำประสบการณ์
ที่เคยเขียน ไปสั่งให้ภาษาใหม่ทำงานตามต้องการ ผมจึงมักสนับสนุนให้นักเรียน ได้ศึกษาภาษา
ที่ไม่มีตัวช่วยมาก เพื่อให้เข้าใจในหลักการ และขั้นตอนการทำงาน อย่างละเอียดชัดเจน
จากการทำงานของตัวแปรภาษาที่มีตัวช่วยน้อย ทำงานบน dos สามารถแปลเป็น exe
และ นำไปใช้ได้โดยไม่ยุ่งยาก เช่น c, pascal, basic, fox... หรือ clipper เป็นต้น



2. ความหมายของ Structure Programming


การโปรแกรมแบบมีโครงสร้าง หรือ การโปรแกรมโครงสร้าง คือ การกำหนดขั้นตอน
ให้เครื่องคอมพิวเตอร์ทำงานโดยมีโครงสร้างการควบคุมพื้นฐาน 3 หลักการ ได้แก่
การทำงานแบบตามลำดับ(Sequence) การเลือกกระทำตามเงื่อนไข(Decision) และ การทำซ้ำ(Loop)
ตำราหลายเล่มจะขยายความออกไปว่า Decision แยกเป็น If และ Case ส่วน Loop
แยกเป็น While และ Until ถ้าแยกให้ละเอียดก็อาจได้ถึง 5 หลักการ แต่ในที่นี้ขอนำเสนอไว้เพียง
3 หลักการ ดังนี้


2.1 การทำงานแบบตามลำดับ(Sequence) คือ การเขียนให้ทำงานจากบนลงล่าง
เขียนคำสั่งเป็นบรรทัด และทำทีละบรรทัดจากบรรทัดบนสุดลงไปจนถึงบรรทัดล่างสุด
สมมติให้มีการทำงาน 3 กระบวนการคือ อ่านข้อมูล คำนวณ และพิมพ์ จะเขียนเป็นผังงาน
(Flowchart) ในแบบตามลำดับได้ตามภาพ
2.2 การเลือกกระทำตามเงื่อนไข(Decision) คือ การเขียนโปรแกรมเพื่อนำค่าไปเลือกกระทำ
โดยปกติจะมีเหตุการณ์ให้ทำ 2 กระบวนการ คือเงื่อนไขเป็นจริงจะกระทำกระบวนการหนึ่ง
 และเป็นเท็จจะกระทำอีกกระบวนการหนึ่ง แต่ถ้าซับซ้อนมากขึ้น จะต้องใช้เงื่อนไขหลายชั้น
เช่นการตัดเกรดนักศึกษา เป็นต้น ตัวอย่างผังงานนี้ จะแสดงผลการเลือกอย่างง่าย
เพื่อกระทำกระบวนการเพียงกระบวนการเดียว
2.3 การทำซ้ำ(Repeation or Loop) คือ การทำกระบวนการหนึ่งหลายครั้ง โดยมีเงื่อนไข
ในการควบคุม หมายถึงการทำซ้ำเป็นหลักการที่ทำความเข้าใจได้ยากกว่า 2 รูปแบบแรก
เพราะการเขียนโปรแกรมแต่ละภาษา จะไม่แสดงภาพอย่างชัดเจนเหมือนการเขียน
ผังงาน(Flowchart) ผู้เขียนโปรแกรมต้องจินตนาการ ถึงรูปแบบการทำงาน และใช้คำสั่ง
ควบคุมด้วยตนเอง ตัวอย่างผังงานที่นำมาแสดงนี้เป็นการแสดงคำสั่งทำซ้ำ(do while)
ซึ่งหมายถึงการทำซ้ำในขณะที่เป็นจริง และเลิกการทำซ้ำเมื่อเงื่อนไขเป็นเท็จ
Sequence
Decision
Repeation


รายละเอียดเพิ่มเติมที่ http://www.thaiall.com/flowchart



3. การเริ่มต้นเขียนโปรแกรม


เริ่มต้นเขียนโปรแกรม เริ่มต้นตรงไหน : สำหรับผม เมื่อได้มาทำหน้าที่สอนหนังสือ
โดยเฉพาะการเขียนโปรแกรมทุกภาษา ผมจะสอนให้นักศึกษาเขียนโปรแกรมควบคุมตัวเลข
เช่นการพิมพ์ 1 ถึง 10 หรือ สูตรคูณ หรือปิรามิดของตัวเลข ที่ต้องฝึกใช้
Structure Programming ให้ชำนาญ และปัญหาก็เกิดขึ้นทุกครั้ง คือ "นักเรียนบ่นว่าไม่ชอบเขียน
ไม่มีประโยชน์" หรือ "เขียนไม่ได้ ถึงเขียนได้ ก็ไม่รู้จะเขียนไปทำไม" แล้วผมก็ต้องกลับ
ไปอธิบายอีกครั้งว่า การเริ่มต้นแบบนี้ "จะทำให้รู้จักควบคุมโปรแกรม ตามหลักการของ
โปรแกรมแบบมีโครงสร้างได้ชำนาญขึ้น รู้จักเรียนรู้ และแก้ปัญหาด้วยตนเอง
รวมทั้งรู้จักแก้ไข Syntax พื้นฐานไม่ให้ผิดพลาด เมื่อสามารถเขียนโปรแกรมในระดับต่อ ๆ ไปได้"
    เริ่มต้นเขียนโปรแกรมทำอย่างไร (จากหนังสือ พื้นฐานเว็บมาสเตอร์บทที่ 17)
  1. เลือกภาษา สำหรับนักเรียน นักศึกษานั้นง่ายที่จะเลือก เพราะอาจารย์คอยชี้แนะ
  2. หาแหล่งข้อมูลอ้างอิงจากห้องสมุด ถ้าท่านไม่มีอะไรอยู่ในมือเลย คงนึกโครงสร้างภาษาไม่ออกเป็นแน่
  3. หาตัวแปลภาษา ทุกภาษาต้องมีตัวแปลภาษา มีหลายภาษาที่ถูกสร้างเป็น Free compiler ต้องหาดู
  4. เขียนโปรแกรมตัวแรกที่ง่าย เช่น พิมพ์เลข 5 เป็นต้น
  5. ศึกษาการทำซ้ำ และการเลือกตามเงื่อนไข เช่นพิมพ์สูตรคูณ หรือพิมพ์ 1 ถึง 10 เป็นต้น
  6. ติดต่อแฟ้มข้อมูล เพื่ออ่านมาแสดงผล หรือปรับปรุงข้อมูลได้
  7. เขียนเมนู เพื่อเลือกกระทำโปรแกรมตามตัวเลือก
  8. ทำรายงานจากการเชื่อมแฟ้มหลายแฟ้ม โดยกำหนดได้หลายตัวเลือก
  9. เขียนโปรแกรมเพิ่มข้อมูล เช่น ซื้อ ขาย ยืม คืน หรือโปรแกรมลงทะเบียนนักศึกษาแต่ละภาคเรียนเป็นต้น
  10. สร้างโปรแกรมขึ้นมาระบบหนึ่งให้สมบูรณ์ (ความสมบูรณ์ก็คือการสนองทุกความต้องการของผู้ใช้)


4. ตัวอย่างโปรแกรมภาษา Java Script


ได้รับ mail จากคุณ surasak boonarch <putter_@yahoo.com>
ว่าเขียน ปิรามิดด้วย java ได้ไหม อย่างไร ผมจึงเขียนไว้ให้ดูเป็นตัวอย่างดังข้างล่างนี้
รหัสต้นฉบับ (Source Code)ผลลัพธ์ (Output)


<body><font face="fixedsys" size=0>
<script language="JavaScript" type="text/javascript">
<!--
var k = 5;
for(i=1;i<=k;i++) {
  document.write( i + "<br>")
}
// -->
</script>
</body>


1
2
3
4
5

รหัสต้นฉบับ (Source Code)ผลลัพธ์ (Output)


<html><title>teachp02.htm</title>
<body><font face="fixedsys" size=0>
<script language="JavaScript" type="text/javascript">
<!--
var k = 5;
for(i=1;i<=k;i++) {
  document.write( i + " - ")
  for(j=1;j<=i;j++) {
    document.write( 11 - j - i )
  }
  document.write("<br>")
}
// -->
</script>
</body></html>


1 - 9
2 - 87
3 - 765
4 - 6543
5 - 54321

รหัสต้นฉบับ (Source Code)ผลลัพธ์ (Output)


<html><title>teachp01.htm</title>
<body><font face="fixedsys" size=0><pre>
<script language="JavaScript" type="text/javascript">
<!--
var k = 9;
for(i=1;i<=k;i++) {
  for(j=1;j<=k-i+1;j++) { document.write( " " ) }
  for(j=1;j<=i;j++) { document.write( j ) }
  document.write( i )
  for(j=i;j>=1;j--) { document.write( j ) }
  document.write("<br>")
}
// -->
</script>
</body></html>


        111
       12221
      1233321
     123444321
    12345554321
   1234566654321
  123456777654321
 12345678887654321
1234567899987654321



5. แบ่งระดับการเขียนโปรแกรม 4 ระดับ
    ระดับในการเขียนโปรแกรมมีหลายระดับ
  1. เขียนตามที่ครูสอน ( ระดับต้น )
  2. เขียนโครงงานส่งครู ( ระดับกลาง )
  3. เขียนโปรแกรมประยุกต์ไว้ใช้งาน ( ระดับสูง )
  4. เขียนโปรแกรมเชิงวัตถุให้ถูกเรียกใช้ภายหลัง ( ระดับมืออาชีพ )
         นักเรียนบางคนเก่งกว่าอาจารย์อีกครับ เพราะศาสตร์ด้านคอมพิวเตอร์นั้น ปฏิบัติง่ายกว่าทฤษฏีเยอะ หมายความว่า การลงมือปฏิบัติด้วยตนเอง จะเข้าใจได้ทันที โดยไม่ต้องมีคำอธิบาย การฟังบรรยาย จะได้เพียงแนวคิด แต่จะไม่ทำให้เกิดความชำนาญ และนำไปประยุกต์ใช้ได้ ดังนั้นเมื่อฟังบรรยายในห้องเรียนแล้ว จะต้องนำไปทดลองปฏิบัติด้วยตนเอง จึงจะเกิดผล ให้เห็นชัดเจน - ไม่ใช่เรื่องแปลก ที่นักเรียนมากมายศึกษาด้วยตนเอง ฝึกปฏิบัติอย่างจริงจัง และมีความรู้มากมายได้ลึกซึ้งกว่าอาจารย์ผู้สอน .. โดยเฉพาะผู้สอนที่ไม่พยายามหาประสบการณ์เพิ่มเติมจากการปฏิบัติจริง ...



6.แบบฝึกหัดสำหรับสอนการเขียนโปรแกรมเบื้องต้น


เนื่องจากนักศึกษาที่ผมสอน ทำข้อสอบกลางภาคไม่ได้ เพราะไม่ได้ใช้เวลาที่บ้านฝึกฝน แม้จะให้การบ้านไปทำ แต่ก็ไม่ได้ไปลงเครื่องให้เกิดความชำนาญ จึงต้องให้งาน 60 โปรแกรมนี้ใหม่ เป็นโปรแกรมที่ง่าย เพราะถ้ายังลอกอีก ก็จะไม่ผ่านการสอบปากเปล่า ในการถามจุดผิดพลาดว่าโปรแกรมที่เขียนมาผิดจุดใด
    กลุ่ม 1 พิมพ์ข้อมูลอย่างง่าย
  1. พิมพ์ รหัสนักศึกษา
  2. พิมพ์ ชื่อตนเอง
  3. พิมพ์ ตัวเลข จากตัวแปร
  4. พิพม์ ชื่อ และสกุล คนละบรรทัด
  5. พิพม์ รหัส ชื่อ และสกุล คนละบรรทัด
  6. พิมพ์ ผลบวก ของเลข 2 จำนวน
  7. พิมพ์ ผลบวก ลบ คูณ หาร ของเลข 2 จำนวน
    กลุ่ม 2 รับข้อมูลมาคำนวณ
  8. พิมพ์ ตัวเลข ที่รับมาจากแป้นพิมพ์
  9. พิมพ์ อักษร ที่รับมาจากแป้นพิมพ์
  10. พิมพ์ ผลบวก ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
  11. พิมพ์ ผลบวก และลบ ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
  12. พิมพ์ ผลคูณ และหาร ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
  13. พิมพ์ ผลบวก ของเลข 3 จำนวน ที่รับมาจากแป้นพิมพ์
    กลุ่ม 3 รับข้อมูล และเลือกพิมพ์
  14. รับตัวเลขจากแป้นพิมพ์ 2 จำนวน แต่พิมพ์ตัวหลังก่อนตัวแรก
  15. รับตัวเลขจากแป้นพิมพ์ 2 จำนวน ให้พิมพ์ตัวที่มากกว่า
  16. รับตัวเลขจากแป้นพิมพ์ 2 จำนวน ให้พิมพ์ตัวที่น้อยกว่า
  17. รับตัวเลขจากแป้นพิมพ์ ถ้ามากกว่า 5 ให้พิมพ์คำว่า wow
  18. รับตัวเลขจากแป้นพิมพ์ ถ้าน้อยกว่า 5 ให้พิมพ์คำว่า oho
  19. รับตัวเลขจากแป้นพิมพ์ 3 จำนวน ให้พิมพ์ตัวที่มากที่สุด
  20. รับตัวเลขจากแป้นพิมพ์ 3 จำนวน ให้พิมพ์ตัวที่น้อยที่สุด
    กลุ่ม 4 ทำซ้ำอย่างง่าย
  21. พิมพ์ 1 ถึง 10 ด้วย for
  22. พิมพ์ 1 ถึง 10 ด้วย while
  23. พิมพ์ 10 ถึง 1 ด้วย for
  24. พิมพ์ 10 ถึง 1 ด้วย while
  25. พิมพ์ 10 ถึง 20 ด้วย for
  26. พิมพ์ 10 ถึง 20 ด้วย while
  27. พิมพ์ 20 ถึง 10 ด้วย for
  28. พิมพ์ 20 ถึง 10 ด้วย while
  29. พิมพ์เลขคู่ระหว่าง 1 ถึง 10
  30. พิมพ์เลขคี่ระหว่าง 1 ถึง 10
    กลุ่ม 5 ทำซ้ำซ้อนกัน
  1. พิมพ์สูตรคูณแม่ 2
  2. พิมพ์สูตรคูณแม่ 3
  3. พิมพ์สูตรคูณแม่ 2 จนเสร็จ แล้วพิมพ์แม่ 3 ต่อ
  4. พิมพ์สูตรคูณแม่ 2 และ 3 คนละ Column
  5. พิมพ์ตัวเลขแบบ for ซ้อนด้วย for
  6. พิมพ์ตัวเลขแบบ for ซ้อนด้วย while
  7. พิมพ์ตัวเลขแบบ while ซ้อนด้วย for
  8. พิมพ์ตัวเลขแบบ while ซ้อนด้วย while
    กลุ่ม 6 อาร์เรย์
  9. อ่านข้อมูลจากอาร์เรย์แบบตัวเลข 3 สมาชิกมาพิมพ์ ไม่ใช้ for
  10. อ่านข้อมูลจากอาร์เรย์แบบตัวอักษร 3 สมาชิกมาพิมพ์ ไม่ใช้ for
  11. อ่านข้อมูลจากอาร์เรย์แบบตัวเลข 3 สมาชิกมาพิมพ์ ใช้ for
  12. อ่านข้อมูลจากอาร์เรย์แบบตัวอักษร 3 สมาชิกมาพิมพ์ ใช้ for
  13. รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่
  14. รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่ เฉพาะมากกว่า 10
  15. รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่ เฉพาะน้อยกว่า 10
    กลุ่ม 7 คำนวณเบื้องต้น
  16. พิมพ์ค่าสูงสุด จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
  17. พิมพ์ค่าต่ำสุด จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
  18. พิมพ์ค่าผลรวม จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
  19. พิมพ์ค่าเฉลี่ย จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
  20. พิมพ์ค่าสูงสุด จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
  21. พิมพ์ค่าต่ำสุด จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
  22. พิมพ์ค่าผลรวม จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
  23. พิมพ์ค่าเฉลี่ย จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
    กลุ่ม 8 แฟ้มข้อมูล หรือฐานข้อมูล
  24. อ่านข้อมูลจากแฟ้มข้อมูล มาแสดงทางจอภาพ
  25. อ่านข้อมูลจากแฟ้มข้อมูล มาแสดงทางจอภาพ โดยมีเลขลำดับกำกับ
  26. อ่านข้อมูลจากแป้นพิมพ์ แล้วเขียนลงแฟ้มข้อมูล
  27. อ่านข้อมูลจากแฟ้มข้อมูล เขียนลงแฟ้มใหม่อีกแฟ้มหนึ่ง
  28. เพิ่มข้อมูลในแฟ้มข้อมูล เมื่อได้รับข้อมูลจากแป้นพิมพ์
  29. ลบข้อมูล แบบต่าง ๆ
  30. แก้ไขข้อมูล แบบต่าง ๆ
งานที่มอบหมายให้นักศึกษาไปฝึก หรือทำแก้ตัวหลังสอบกลางภาค
A. จากโจทย์แต่ละข้อ ให้เขียนโปรแกรมที่ถูกต้อง และที่ผิดอย่างละโปรแกรม โดยบอกว่าที่ผิด ผิดอย่างไร
B. ให้แต่ละข้อทำที่ถูกมา 1 ครั้ง และให้ทำที่ผิดมา 2 โปรแกรม โดยแยกเฉลยจุดผิดออกจากกัน
C. ให้นักศึกษาสลับกัน หาจุดผิดพลาดในโปรแกรมของเพื่อน
D. ตัวอย่างจุดผิดพลาดที่แนะนำนักศึกษา
- เขียนคำสั่งผิด เช่น class เป็น ClaSs เป็นต้น
- ลืมเครื่องหมาย เช่น . , ; ( { = เป็นต้น
- ลืมประกาศตัวแปร หรือ ประกาศตัวแปรซ้ำ
- ใช้งานผิดประเภท เช่น ตัวเลข เป็นตัวอักษร หรือไม่เปลี่ยนประเภทก่อนนำมาประมวลผล
- ลืมประกาศ include หรือ IOException หรือ อื่น ๆ
- จำนวน { ไม่เท่ากับ }
- Compile ไม่ผ่าน แต่พยายามเรียกใช้งาน
- ผิดพลาดขณะแปลอย่างไร หรือประมวลผล หรือตรวจสอบระหว่างประมวลผลผิดพลาด



7. เปรียบเทียมหาค่ามากกว่า


การเขียนโปรแกรมต้องมีตัวแปลภาษา ตัวอย่างชุดนี้เป็น javascript ที่ประมวลผลได้ทันทีใน Internet Explorer ถ้ามีข้อสงสัยเรื่อง javascript เพิ่มเติมให้เปิดจาก thaiall.com/java สำหรับตัวอย่าง 10.2 ถึง 10.4 มี 2 แบบคือ หาเฉพาะค่า max และเรียงลำดับค่ามากไปน้อย ซึ่งมีหลักการคล้ายกัน
10.1 เปรียบเทียบค่าคงที่ 2 ค่า
: ใช้ if เลือกค่าที่มากกว่ามาแสดงผล
<script>
var a = 5;
var b = 6;
if(a > b) 
  document.write(a + "" + b);
else
  document.write(b + "" + a);
</script>
. โปรแกรมเมอร์คนแรกของโลก 


:: Augusta Lovelace Ada คือ โปรแกรมเมอร์คนแรกของโลก
:: Edsger Wybe Dijkstra ใช้คำว่า โปรแกรมเมอร์ (Programmer) กับโลกของคอมพิวเตอร์เป็นคนแรก [ อ้างอิง ]


Do not try to change the world. Give the world the opportunity to change itself
Edsger Wybe Dijkstra เป็น theoretical physicist และเสียชีวิตด้วยโรคมะเร็ง 6 ส.ค. 2002 (อายุ 72 ปี)

ภูมิปัญญาไทยกับวิถีการกินอาหารของคนไทย


ภูมิปัญญาไทยกับวิถีการกินอาหารของคนไทย


ค่านิยมการบริโภคของคนไทยในปัจจุบันส่วนใหญ่ มีวิถีชีวิตการกินอาหารประเภทอาหาร จานด่วน ( fast food ) เลียนแบบการกินแบบตะวันตก ซึ่งมีความเสี่ยงสูงในการที่จะทำให้เกิดโรคภัยไข้เจ็บ เช่น ไขมันในเส้นเลือด โรคเก๊า โรคอ้วน ฯลฯ อาหารเป็นปัจจัยหลักในการดำรงชีพของมนุษย์ ทุกสังคมจึงดำเนินชีวิตไปเพื่อ ? การทำมาหากิน ? ด้วยรูปแบบแตกต่างกัน ในปัจจุบันสามารถจำแนกอาหารไทยได้เป็น ๒ รูปแบบคือ

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

- อาหารพื้นเมือง คือ อาหารประจำภูมิภาคต่าง ๆ ที่แตกต่างกันตามลักษณะพืชพันธุ์ และสภาพภูมิประเทศ

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

ข้าวไทยเป็นข้าวเอเซียสายพันธุ์ oriza sative จากการศึกษาโบราณคดีในประเทศไทยได้พบเมล็ดข้าวที่ปลูกโดยมนุษย์สำหรับกินเป็นอาหาร มาตั้งแต่สมัยก่อนประวัติศาสตร์ เมื่อราว ๕,๐๐๐ปีที่ผ่านมา จากการศึกษาลักษณะเมล็ดข้าวจากแหล่งโบราณคดีในประเทศไทย พบว่าคนในสมัยสมัยก่อนประวัติศาสตร์จนถึงสมัยประวัติศาสตร์ยุคต้นปลูกข้าวเหนียวชนิดเมล็ดใหญ่ ( javanica ) และ ชนิดเมล็ดป้อม ( japonica ) เป็นอาหาร ในสมัยทวารวดี (พ.ศ.๑๒๐๐ ? ๑๖๐๐) จึงเริ่มนิยมกินข้าวชนิดเมล็ดยาวรี ( indica ) จากแถบอ่าวเบงกอล ที่นำเข้ามาโดยพ่อค้าชาวอินเดีย นักโบราณคดีเชื่อว่าคนระดับเจ้าผู้ครองนครเป็นผู้รับวัฒนธรรมการกินข้าวชนิดนี้เข้ามาก่อนที่จะนิยมกันในหมู่คนทั่วไป จึงเรียกชื่อข้าวประเภทใหม่นี้ว่า ? ข้าวเจ้า ? หรือข้าวของเจ้านาย

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

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

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

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

- ภูมิปัญญาแห่งผลสำเร็จในการแปรรูปอาหาร เพื่อถนอมรักษาให้เก็บไว้บริโภคยาวนาน ก่อให้เกิดอาหารหลายชนิด

อาหารไทยเป็นวัฒนธรรมแห่งการผสมผสาน บนพื้นฐานของการรับเพื่อทดลองเมื่อเห็นว่าดีจึงประยุกต์เข้ากับรูปแบบอาหารแบบดั้งเดิม กลิ่นไออาหารต่างชาติทั้งมอญ ลาว จีน อินเดีย ญี่ปุ่น และชาติแถบตะวันตก จึงกรุ่นอยู่ในอาหารไทยที่ยังคงรูปแบบเป็นตัวของตัวเอง แต่คนไทยในยุคปัจจุบัน ได้เปลี่ยนวิถีแห่งการผสมผสานนี้เป็นการรับการเอามาปฏิบัติตามเต็มรูปแบบด้วยความเข้าใจว่าทันสมัย สะดวก รวดเร็วกว่าอาหารไทย อาหาร Junk Food หรืออาหารขยะแบบตะวันตก จึงเข้ามาแพร่หลายในสังคมไทย ทั้งที่มีราคาแพง อุดมด้วยไขมัน น้ำตาล สารสงเคราะห์ที่ไม่จำเป็นต่อร่างกายชาวเมืองร้อน อย่างคนไทย จนส่งผลให้เกิดโรคอันเนื่องมาจากการสะสมอาหารเหล่านี้ เช่น โรคมะเร็ง โรคหัวใจ

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

? การพัฒนา ปรับปรุงพันธุ์พืชให้มีผลผลิตได้ตลอดปี

? การศึกษา พัฒนาอาหารไทยให้มีคุณค่าทางอาหารปลอดสารพิษ

? การพัฒนา ส่งเสริมอาหารไทยเข้าสู่ระบบอาหารจานด่วน ที่สะอาด หาซื้อง่ายแต่คงความอร่อยและคุณค่าทางอาหาร

? การพัฒนาผลิตภัณฑ์เครื่องปรุงอาหารสำเร็จรูป สำหรับคนไทยที่มีเวลาจำกัดในการปรุงอาหาร เป็นการลดความซับซ้อนในการปรุงอาหารไทย


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

ดั้งนั้น ภูมิปัญญาวิถีการกินอาหารของคนไทยที่ถูกสุขลักษณะตามแบบวัฒนธรรมไทย คือการสร้างค่านิยม อุปนิสัยการกิน ให้เลือกกินอาหารที่มีคุณภาพ ไม่เน้นการหวังผลกำไรทางเศรษฐกิจจนไม่เห็นความสำคัญของผลิตภัณฑ์อาหาร อีกทั้งการกินเป็นเวลา ไม่กินพร่ำเพรื่อ เพราะนิสัยช่างกินของคนไทยเสียเวลากับการกินมาก บางคนจะต้องเข้าไปในสถานที่มีดนตรี มีคนป้อน มิฉะนั้นจะกินไม่ลง การกินแบบตามสบายจึงใช้เวลามาก การงานจึงเสียไปด้วย เพราะวัฒนธรรมการกินเป็น ๑ ในปัจจัย ๔ ของมนุษย์ ภูมิปัญญาวิถีการกินของคนไทยเป็นแบบอย่างให้เยาวชนรุ่นต่อ ๆ ไป สืบทอดวัฒนธรรมไทยที่ถูกต้องอีกสาขาหนึ่ง