การเขียนโปรแกรมเบื้องต้น
พูดคุยกันก่อน
เมื่อพบใคร ๆ ที่สนใจการโปรแกรม (Programming) และเป็นผู้เริ่มต้น (Beginner) มีคำถามสำคัญที่ผมมักจะถามย้อนกลับไปว่าอยากเขียนโปรแกรมบน แพลตฟอร์ม (Platform) ใด ที่มีให้เลือก คือ Windows, Linux, Android, iOS ถ้าเลือกตามแหล่งที่ใช้โปรแกรมก็จะเลือกได้ง่ายกว่า คือ Windows, Website หรือ Application แล้วเลือกใช้ภาษาใด อาทิ PHP, JAVA, C, ASP, VB, Python บางภาษาพัฒนาแล้ว สามารถนำไปใช้ได้ในหลายแพลตฟอร์ม ถ้าท่านเป็นผู้เริ่มต้นก็จะมีคำถาม 3 ข้อข้างต้น ให้พิจารณาก่อนเริ่มต้นกับการโปรแกรม ส่วนที่คำถามที่ว่าเขียนไปทำไม (Why) มีอะไรเป็นเครื่องมือ (Tool) ก็เป็นคำถามที่ต้องตอบให้ได้ก่อนสามคำถามข้างต้น

การโปรแกรม คือ การกำหนดขั้นตอนให้กับคอมพิวเตอร์ทำงานตามลำดับและรูปแบบที่กำหนด
ถ้ารักจะเป็นนักคอมพิวเตอร์ .. ต้องพยายามแบบ ..
ฝนทั่งให้เป็นเข็ม
sharpen an anvil to create a pin #
.. นักศึกษาของผม .. เวลาสอบตก จะพูดว่า ถ้าพยายามจริง ๆ คงทำได้ดีกว่านี้
ผมก็จะถามว่า กั๊กความพยายมของตน .. ไว้ทำไม
สารบัญ
    สารบัญ (Contents)
  1. แนวคิดการสอนเขียนโปรแกรม
  2. ความหมายของ Structure Programming
  3. การเริ่มต้นเขียนโปรแกรม
  4. การบ้านคือ บันไดสู่ประสบการณ์
  5. ตัวอย่างปิรามิด คือแบบฝึกหัดที่ยาก
  6. ตัวอย่างโปรแกรมภาษา Pascal
  7. ตัวอย่างโปรแกรมภาษา Java Script
  8. แบ่งระดับการเขียนโปรแกรม 4 ระดับ
  9. แบบฝึกหัดสำหรับสอนการเขียนโปรแกรม
  10. โปรแกรมเมอร์คนแรกของโลก
    (Augusta Lovelace Ada)
  11. 143 ภาษาคอมพิวเตอร์
  12. ภาษาคอมพิวเตอร์ (Time Line)
    ขั้นตอนการเรียนรู้ เพื่อเป็น Programmer
  1. เลือกเขียนโปรแกรมหนึ่งภาษา ( Programming Language )
  2. เข้าใจโครงสร้างข้อมูล ( Data Structures )
  3. เขียนร่วมกับระบบฐานข้อมูล ( Database System )
  4. การวิเคราะห์และออกแบบระบบ ( System Analysis and Design )
  5. มีโครงงานเป็นของตนเอง ( Student Project ) เพื่อฝึกปฏิบัติจริง
1. แนวคิดการสอนเขียนโปรแกรม
หลายครั้งที่เริ่มสอนเขียนโปรแกรม ให้นักเรียนกลุ่มใหม่ และก็ต้องบอกเล่า ด้วยประโยคเดิมทุกครั้งว่า "การเขียนโปรแกรม ทุกภาษานั้นคล้ายกัน" สิ่งที่แตกต่างกัน ของแต่ละภาษา คือ วากยสัมพันธ์ (Syntax) หรือ โครงสร้างทางไวยกรณ์ หรือ กฎเกณฑ์ของภาษา แต่สิ่งที่เหมือนกันของทุกภาษา คือ โครงสร้าง (Structure) เราสามารถใช้ประสบการณ์จากภาษาหนึ่ง ไปใช้ในอีกภาษาหนึ่งได้ ด้วยการฝึกฝนเรื่องของการโปรแกรมโครงสร้าง (Structure Programming) เพื่อสามารถควบคุมในสิ่งที่คล้ายกัน คือ input, process และ output นั่นหมายความว่า ถ้าเขียนโปรแกรมทำหน้าที่อะไร ในภาษาหนึ่งได้แล้ว การเขียนโปรแกรมแบบนั้น อีกภาษาย่อมไม่ใช่เรื่องยากอีกต่อไป เพียงแต่ต้องศึกษาถึง Syntax ของภาษานั้นเพิ่มเติม แล้วนำประสบการณ์ที่เคยเขียน ไปสั่งกำหนดขั้นตอนการทำงานให้เป็นไปต้องการ จึงมักสนับสนุนให้ผู้เรียนรู้ได้ศึกษาภาษาที่ไม่มีตัวช่วยมาก เพื่อให้เข้าใจในหลักการ และขั้นตอนการทำงานในเบื้องต้นก่อน แล้วขยับขึ้นไปพัฒนาโปรแกรมที่เป็นวิชวลต่อไป

2. ความหมายของ Structure Programming
การโปรแกรมแบบมีโครงสร้าง หรือ การโปรแกรมโครงสร้าง คือ การโปรแกรมที่ประกอบด้วยกระบวนการ 3 รูปแบบ ได้แก่ การทำงานแบบตามลำดับ(Sequence) การเลือกกระทำตามเงื่อนไข(Decision) และ การทำซ้ำ(Loop) มีตำราหลายเล่มแยกการเลือกตามเงื่อนไขเป็น if กับ select case หรือ การทำซ้ำแยกได้เป็น do while กับ do until แต่ก็ยังนับได้ว่าการเขียนโปรแกรมโครงสร้างมีกระบวนการเพียง 3 รูปแบบ และมีแนวคิดใหม่ว่าการโปรแกรมไม่จำเป็นต้องใช้ Structure Programming หากศึกษาในรายละเอียดก็พบว่าทุกภาษายังจำเป็นต้องมีกระบวนการ 3 รูปแบบนี้อยู่เป็นพื้นฐาน เช่น Microsoft Access ที่มีการใช้งาน Tool หรือ wizard ให้ใช้ แต่ก็ยังต้องมีการลง code ใน module ซึ่งต้องมีประสบการณ์ในการโปรแกรมแบบ Structure Programming เพื่อควบคุม Object ให้ทำงานประสานกันได้
การโปรแกรมแบบมีโครงสร้าง หรือ การโปรแกรมโครงสร้าง คือ การกำหนดขั้นตอนให้เครื่องคอมพิวเตอร์ทำงานโดยมีโครงสร้างการควบคุมพื้นฐาน 3 หลักการ ได้แก่ การทำงานแบบตามลำดับ (Sequence) การเลือกกระทำตามเงื่อนไข (Decision) และ การทำซ้ำ (Loop)
2.1 การทำงานแบบตามลำดับ(Sequence) คือ การเขียนให้ทำงานจากบนลงล่าง เขียนคำสั่งเป็นบรรทัด และทำทีละบรรทัดจากบรรทัดบนสุดลงไปจนถึงบรรทัดล่างสุด สมมติให้มีการทำงาน 3 กระบวนการคือ อ่านข้อมูล คำนวณ และพิมพ์ จะเขียนเป็นผังงาน(Flowchart) ในแบบตามลำดับได้ตามภาพ
var a = 1;
a = a + 2 * 3; // operator rule
document.write(a);
// tryit.asp
2.2 การเลือกกระทำตามเงื่อนไข(Decision) คือ การเขียนโปรแกรมเพื่อนำค่าไปเลือกกระทำ โดยปกติจะมีเหตุการณ์ให้ทำ 2 กระบวนการ คือเงื่อนไขเป็นจริงจะกระทำกระบวนการหนึ่ง และเป็นเท็จจะกระทำอีกกระบวนการหนึ่ง แต่ถ้าซับซ้อนมากขึ้น จะต้องใช้เงื่อนไขหลายชั้น เช่นการตัดเกรดนักศึกษา เป็นต้น ตัวอย่างผังงานนี้ จะแสดงผลการเลือกอย่างง่าย เพื่อกระทำกระบวนการเพียงกระบวนการเดียว
var i = 1;
if(i == 1) i = 2;  
else if(i > 1) { i = 3; }
document.write( i );
2.3 การทำซ้ำ(Repeation or Loop) คือ การทำกระบวนการหนึ่งหลายครั้ง โดยมีเงื่อนไขในการควบคุม หมายถึงการทำซ้ำเป็นหลักการที่ทำความเข้าใจได้ยากกว่า 2 รูปแบบแรก เพราะการเขียนโปรแกรมแต่ละภาษา จะไม่แสดงภาพอย่างชัดเจนเหมือนการเขียนผังงาน(Flowchart) ผู้เขียนโปรแกรมต้องจินตนาการ ถึงรูปแบบการทำงาน และใช้คำสั่งควบคุมด้วยตนเอง ตัวอย่างผังงานที่นำมาแสดงนี้เป็นการแสดงคำสั่งทำซ้ำ(do while) ซึ่งหมายถึงการทำซ้ำในขณะที่เป็นจริง และเลิกการทำซ้ำเมื่อเงื่อนไขเป็นเท็จ
var i = 1;
while (i < 3) { i = i + 1; }
do { i = i + 1; } while (i  < 3);
document.write( i );
Sequence
Decision
Repeation
รายละเอียดเพิ่มเติมที่ http://www.thaiall.com/flowchart

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

เริ่มต้นตรงไหน : เริ่มต้อง learning by doing ที่ไม่ไปเน้นกับ syntax หรือ structure แต่ยกตัวอย่างให้เห็นภาพโปรแกรมที่สั้น เข้าใจง่าย นั่นคือ การพิมพ์ 1 ถึง 10 หรือ สูตรคูณ หรือ ปิรามิดของตัวเลข ที่ต้องฝึกใช้ Structure Programming ให้ชำนาญ ส่วน syntax นั้นให้ไปอ่านเพิ่มเติมในรายละเอียดด้วยตนเอง บ่อยครั้งที่ feed back คือ "เสียงบ่นว่าไม่ชอบเขียน ไม่มีประโยชน์" หรือ "เขียนไม่ได้ ถึงเขียนได้ ก็ไม่รู้จะเขียนไปทำไม จึงไม่เขียน" แล้วก็ต้องอธิบายย้ำว่า การเริ่มต้นแบบนี้ "ทำให้รู้จักควบคุมโปรแกรม กำหนดขั้นตอนการทำงานตามหลักการโปรแกรมแบบมีโครงสร้างได้ดีขึ้น รู้จักเรียนรู้ และแก้ปัญหาด้วยตนเอง รวมทั้งรู้จักแก้ไข Syntax พื้นฐานไม่ให้ผิดพลาด เพื่อเตรียมความพร้อมสู่การเขียนโปรแกรมในระดับต่อไปได้"
    เริ่มต้นเขียนโปรแกรมทำอย่างไร (จากหนังสือ พื้นฐานเว็บมาสเตอร์บทที่ 17)
  1. เลือกภาษา สำหรับนักศึกษานั้นง่ายที่จะเลือก เพราะอาจารย์คอยชี้แนะ
  2. หาแหล่งข้อมูลอ้างอิงจากห้องสมุด ถ้าท่านไม่มีอะไรอยู่ในมือเลย คงนึกโครงสร้างภาษาไม่ออกเป็นแน่
  3. หาตัวแปลภาษา ทุกภาษาต้องมีตัวแปลภาษา บางภาษามี Free compiler
  4. เขียนโปรแกรมตัวแรกที่ง่าย เช่น พิมพ์ hello world
  5. ศึกษาการทำซ้ำ และการเลือกตามเงื่อนไข เช่น พิมพ์สูตรคูณ หรือพิมพ์ 1 ถึง 10
  6. ติดต่อแฟ้มข้อมูล เพื่ออ่านมาแสดงผล หรือปรับปรุงข้อมูลได้
  7. เขียนเมนู เพื่อเลือกกระทำโปรแกรมตามตัวเลือก
  8. ทำรายงานจากการเชื่อมแฟ้มหลายแฟ้ม โดยกำหนดได้หลายตัวเลือก
  9. เขียนโปรแกรมเพิ่มข้อมูล เช่น ซื้อ ขาย ยืม คืน หรือ ระบบทะเบียนสมาชิก
  10. สร้างโปรแกรมขึ้นมาหนึ่งระบบที่ตอบความต้องการของผู้ใช้
    ขั้นตอนการพัฒนาโปรแกรม (Steps in Program Development) #
  1. ศึกษาความต้องการของโปรแกรม (Program Requirements)
  2. การออกแบบโปรแกรม (Program Design)
  3. การเขียนโปรแกรม (Program Coding)
  4. การตรวจสอบข้อผิดพลาด และแก้ไขโปรแกรม (Program Debugging)
  5. การทดสอบโปรแกรม (Program Testing)
  6. การบำรุงรักษาโปรแกรม (Program Maintenance)

4. การบ้านคือ บันไดสู่ประสบการณ์

การบ้าน (Project) : การสั่งงานให้นักเรียนได้ทำ เป็นสิ่งที่สำคัญมาก ผมได้เรียนแบบอาจารย์ที่เคยสอนผมเสมอ คือ สั่งงานเกือบทุกชั่วโมงเรียน ยกเว้นเทศกาล หรือวันหยุดราชการ ที่เว้นให้นักเรียนได้พักบ้าง สำหรับ project จะต้องใช้หลักการที่สำคัญทั้งหมดที่ได้เรียนมา หรือที่ศึกษาค้นคว้าเพิ่มเติม ด้วยตนเอง และต้องใหญ่พอที่จะใช้เวลาทำทั้งสัปดาห์ไม่เสร็จ แต่จะต้องใช้เวลาทำอย่างต่อเนื่อง ตลอดทั้งภาคเรียน การยอมรับคำวิงวอนให้ลดงานของนักเรียนนั้น อาจทำได้ตามความเหมาะสม กับบทเรียนที่ได้สอนไป แต่ขนาดงานก็ไม่ควรน้อยกว่า การทำให้นักศึกษา ได้ฝึกฝน และใช้เวลาศึกษาด้วยตนเอง (Self learning) อย่างน้อย 1 สัปดาห์ เพื่อทำให้โครงงานสำเร็จลุล่วง และในบางวิชาของการเขียนโปรแกรม ควรมีโครงงานทั้งก่อนสอบกลางภาค และปลายภาค คือมี Project 2 ชิ้น ในวิชานั้น และที่สำคัญที่สำคัญที่สุดสำหรับหลักการสั่งงานของผมคือ งานชิ้นใหญ่จะต้องเป็นงานเดี่ยว เพื่อให้ทุกคนได้มีโอกาสทำด้วยตนเอง มีความภูมิใจในความสำเร็จ และเป็นผู้รับผิดชอบขั้นตอนทั้งหมดด้วยตนเอง ผมจะไม่มอบ project ชิ้นใหญ่เป็นงานกลุ่ม เพราะไม่ต้องการให้นักเรียนคนใดเลย พลาดขบวนการเรียนรู้ แม้แต่ขั้นตอนเดียว และอาจารย์จะต้องมีเวลาที่จะตอบข้อซักถามเสมอ เพราะบ่อยครั้งที่อาจจะสอนผิด สั่งงานผิด นักเรียนนั่งหลับ นักเรียนจดผิด หนังสืออ้างอิงเขียนผิด หรือแม้แต่การตรวจงานผิดของอาจารย์ ก็เป็นได้
กรกฎาคม 2545 หลังจากผมสอนมาสิบปี พบว่าการมอบหมายงานให้นักศึกษาไปทำงานในคอมพิวเตอร์ที่บ้าน โดยให้ฝึกปฏิบัติด้วยตนเอง ประสบความล้มเหลวมาโดยตลอด เพราะมีนักศึกษาส่วนหนึ่ง ไม่มีคอมพิวเตอร์ ไม่สนใจที่จะเขียนโปรแกรม ไม่ต้องการที่จะคิด และยอมแพ้ ทุกครั้งที่ให้เขียนโปรแกรมง่าย ๆ ทั้ง ๆ ที่มีโปรแกรมยาก ๆ รออยู่อีกมากมาย แต่นักศึกษาทำไม่ได้ จึงนึกการให้งานแบบล่าสุดออกคือ การให้ลอกโปรแกรมด้วยมือ เช่น มีโปรแกรมง่าย ๆ หรือควรรู้อยู่ 15 โปรแกรม จึงมอบหมายให้ลอกลงกระดาษ 4 รอบ และให้เสร็จใน 1 สัปดาห์ ผลที่ได้คือนักศึกษาได้อ่านหนังสือ จดจำรูปแบบภาษาได้มากขึ้น งานที่ให้ลอกไม่ได้หยุดที่ 60 โปรแกรม แต่มากขึ้น หรือน้อยลงขึ้นกับความเข้าใจ และเนื้อหาที่สอน การทำให้นักศึกษา คิดเป็น และแก้ปัญหาโจทย์ได้ เป็นอีกปัญหาหนึ่งที่ต้องสอนในห้องปฏิบัติการ ส่วนการจำรูปแบบคำสั่งไม่ได้ แก้ไขได้ด้วยการสั่งให้ลอกโปรแกรมเท่านั้น ความคาดหวังของผู้สอนว่านักศึกษาจะตั้งใจเรียน แล้วกลับไปทำคอมพิวเตอร์ที่บ้าน โดยไม่ลอกเพื่อนเพียงอย่างเดียว ผมทำมา 10 ปี แต่ไม่ได้ผลเลย

5. ตัวอย่างโจทย์ปิรามิด คือแบบฝึกหัดที่ยาก
ตัวอย่างปิรามิดที่มอบหมายให้นักศึกษาไปเขียน (ผมใช้สอนในทุกภาษาที่ผมสอนทีเดียว)
1.
11******11
 22****22
  33**33
   4444
Source Code .java
2.
123***
234****
345*****
456******
Source Code .java
3.
15*****
26******
37*******
48********
Source Code .java
4.
*1
**212
***32123
****4321234
Source Code .java
5.
   11
  2**2
 3****3
4******4
 3****3
  2**2
   11
6. (java % and /)
1010101010101
 10101010101
  101010101
   1010101
    10101
     101
      1
7.
      111
     12221
    1233321
   123444321
  12345554321
 1234566654321
123456777654321
8.
123**
 234***
  345****
   456*****
    567******
     678*******
      789********
9.
111111111
 2222222
  33333
   444
    5
10.
    151
   12421
  1233321
 123424321
12345154321
11.
    11
   2 2
  3  3
 4   4
5    5
12.
123456789
 2345678
  34567
   456
    5
13.
987654321
  7654321
    54321
      321
        1
14.
12        21
 23      32
  34    43
   45  54
    5665
15. (2 * i - 1)
11111 11111
2222   2222
333     333
44       44
5         5
16.
1        *
21      **
321    ***
4321  ****
54321*****
17.
19191919
28282828
37373737
46464646
55555555
18.
1*1*****9
2**2****8
3***3***7
4****4**6
5*****5*5
19.
1*********5
2******** 4
3*******  3
4******   2
5*****    1
20.
1*1
22**22
333***333
4444****4444
55555*****55555
21.
*******1*7
******2**6
*****3***5
****4****4
***5*****3
22.
*111111111*
* 2222222 *
*  33333  *
*   444   *
*    5    *
23.
1******1
2***** 2
3****  3
4***   4
5**    5
24.
1*1111111111
2***22222222
3*****333333
4*******4444
5*********55
25.
****5*****
***444****
**33333***
*2222222**
111111111*
26.
11111*
2222**
333***
44****
5*****
27.
1 *
2  **
3   ***
4    ****
5     *****
28.
54321*12345
5432***2345
543*****345
54*******45
5*********5
29.
1*3***
2*4****
3*5*****
4*6******
5*7*******
30.
*********1
 *******21
  *****321
   ***4321
    *54321
31.
11111*****
2222  ****
333    ***
44      **
5        *
32.
1234567***3
123456****4
12345*****5
1234******6
123*******7
33.
    *
   ***
  *****
   ***
    *
34.
    *
   *2*
  *232*
   *2*
    *
35.
   1*1*2
   2*3*4
   3*5*6
   4*7*8
   5*9*10
36.
123*321
23***32
3*****3
23***32
123*321

6. ตัวอย่างโปรแกรมภาษา Pascal

ได้รับ mail จากคุณ ditthapong itthiwatthawong <ryojung@samart.co.th>
ว่าเขียน ปิรามิดด้วย pascal แบบเลือกตัวอักษรได้ เขียนอย่างไร ผมจึงเขียนไว้ให้ดูเป็นตัวอย่างดังข้างล่างนี้
โปรแกรมนี้รอรับตัวอักษรจากแป้นพิมพ์ แล้วนำไปใช้กำหนดเงื่อนไขในการพิมพ์
เช่น ส่งอักษร D ก็จะพิมพ์บรรทัด A ถึง บรรทัด D และถ้าส่งอักษร E ก็จะพิมพ์บรรทัด A ถึง บรรทัด E เป็นต้น
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
var
   i,j : integer;
   c : char;
begin
   writeln ('What is your english character?');
   readln (c);
   c := upcase(c);
   writeln ('======');
   for i := 65 to ord(c) do
   begin
      for j := 65 to i do  write(chr(j));
      writeln;
   end;
   readln;
end.
What is your english character?
F
======
A
AB
ABC
ABCD
ABCDE
ABCDEF
    เมื่อเช้านี้น้องเค้า mail ถึงผมอีกว่า ใช้ function ที่ครูยังไม่สอน
    ผมจึงเขียนใหม่แบบที่ไม่ต้องใช้ function รู้สึกง่ายกว่าเดิมอีกครับ
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
var c,d,g : char;
begin
   writeln ('What is your english character?');
   readln (g);
   for c := 'A' to g do
   begin
     for d:= 'A' to c do write(d);
     writeln;
   end;
   readln;
end.
What is your english character?
D
A
AB
ABC
ABCD

7. ตัวอย่างโปรแกรมภาษา 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

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

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

เนื่องจากนักศึกษาที่ผมสอน ทำข้อสอบกลางภาคไม่ได้ เพราะไม่ได้ใช้เวลาที่บ้านฝึกฝน แม้จะให้การบ้านไปทำ แต่ก็ไม่ได้ไปลงเครื่องให้เกิดความชำนาญ จึงต้องให้งาน 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 ไม่ผ่าน แต่พยายามเรียกใช้งาน
- ผิดพลาดขณะแปลอย่างไร หรือประมวลผล หรือตรวจสอบระหว่างประมวลผลผิดพลาด

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

การเขียนโปรแกรมต้องมีตัวแปลภาษา ตัวอย่างชุดนี้เป็น 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>

10.2 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 1
: ใช้ if และ and เปรียบเทียบพร้อมกันทั้ง 3 ค่า ทุกกรณี
: สัญลักษณ์ && คือ and ในภาษา javascript
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b && a > c) document.write(a);
if(b > a && b > c) document.write(b);
if(c > a && c > b) document.write(c);
</script>
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b && b > c) document.write(a + "" + b  + "" + c);
if(a > c && c > b) document.write(a + "" + c  + "" + b);
if(b > a && a > c) document.write(b + "" + a  + "" + c);
if(b > c && c > a) document.write(b + "" + c  + "" + a);
if(c > a && a > b) document.write(c + "" + a  + "" + b);
if(c > b && b > a) document.write(c + "" + b  + "" + a);
</script>

10.3 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 2
: ใช้ if เปรียบเทียบค่าที่ละคู่ตามเงื่อนไข
: ผลการเปรียบเทียบจึงใช้ if else หลายกรณี
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b) 
  if (b > c) document.write(a);
  else {if(c > a) document.write(c);}
else if(b > c) document.write(b);
  else document.write(c);
</script>
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b) 
  if (b > c) document.write(a + "" + b  + "" + c);
  else if(a > c) document.write(a + "" + c  + "" + b);
     else document.write(c + "" + a  + "" + b);
else if (a > c) document.write(b + "" + a  + "" + c);
  else if(b > c) document.write(b + "" + c  + "" + a);
     else document.write(c + "" + b  + "" + a);
</script>

10.4 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 3
: ใช้การสลับที่ของ 2 ตัวแปร ผ่านตัวแปร t
<script>
var a = 5;
var b = 7;
var c = 6;
var t = a;
if(b > t) t = b;
if(c > t) t = c;
document.write(t);
</script>
<script>
var a = 5;
var b = 7;
var c = 6;
var t;
if(b > a) { t = a; a = b; b = t; }
if(c > b) { t = c; c = b; b = t; }
if(b > a) { t = a; a = b; b = t; }
document.write(a + "" + b  + "" + c);
</script>

10.5 เปรียบเทียบค่าในอาร์เรย์ด้วย Bubble Sort
: การจัดเรียงข้อมูลที่ง่ายที่สุดวิธีหนึ่ง
: bubble แปลว่าฟอง หลักการนี้แสดงการลอยขึ้นของค่าทีละตัว
<script>
var a = new Array ();
a = [5,6,8,2,1,3,4,7,9];
var tmp;
for(i=0;i<a.length;i++)
  for(j=0;j<=i;j++)
    if (a[j] < a[j + 1]) {
       tmp = a[j];
       a[j] = a[j + 1];
       a[j + 1] = tmp;
       j-=2;
    }  
for(i=0;i<a.length;i++)
document.write(a[i]);
</script>

11. โปรแกรมเมอร์คนแรกของโลก
:: 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 ปี)
http://www.twoguru.com/playground/article/dijkstra.htm
http://www.cs.utexas.edu/users/dahlin/Classes/GradOS/papers/p341-dijkstra.pdf

12. 143 ภาษาคอมพิวเตอร์
:: ข้อมูลจาก http://www.thaiall.com/language
:: ข้อมูลจาก http://dmoz.org/Computers/Programming/Languages/ 143 ภาษา
:: ข้อมูลจาก http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm 2500 ภาษา
:: ข้อมูลจาก http://www.levenez.com/lang/ 50 ภาษา (Computer Languages Timeline)
:: เป็นนักคอมพิวเตอร์ ไม่จำเป็นต้องรู้ทุกภาษาหรอกครับ .. บางคน รู้แค่ภาษาเดียว ก็มีชีวิตในสังคมได้อย่างมีความสุขแล้ว .. แล้วคุณรู้ภาษาอะไร
  1. ABC (4)
  2. Ada (335)
  3. ADL (1)
  4. Algol 60 (15)
  5. Algol 68 (30)
  6. APL (75)
  7. AppleScript@ (36)
  8. Assembly (188)
  9. Awk (21)
  10. BASIC (231)
  11. Befunge (13)
  12. BETA (9)
  13. Bigwig (1)
  14. Bistro@ (6)
  15. Blue (4)
  16. Brainfuck (14)
  17. C (264)
  18. C++ (831)
  19. Caml@ (3)
  20. Cecil (3)
  21. CHILL (3)
  22. Clarion (42)
  23. Clean (3)
  24. Clipper (28)
  25. CLU (4)
  26. Cobol (125)
  27. CobolScript (2)
  28. Cocoa (3)
  29. Component Pascal@ (10)
  30. C-sharp (148)
  31. Curl (36)
  32. D (48)
  33. DATABUS (7)
  34. Delphi (450)
  35. DOS Batch@ (118)
  36. Dylan (20)
  37. E (4)
  38. Eiffel (71)
  39. ElastiC (2)
  40. Erlang (268)
  1. Euphoria (26)
  2. Forth (202)
  3. Fortran (886)
  4. Fortress (4)
  5. FP (2)
  6. Frontier (46)
  7. Goedel (3)
  8. Groovy@ (22)
  9. Haskell (61)
  10. HTML@ (316)
  11. HTMLScript@ (63)
  12. HyperCard@ (16)
  13. ICI (3)
  14. Icon (8)
  15. IDL (15)
  16. Intercal (16)
  17. Io (10)
  18. Jal@ (10)
  19. Java (2,952)
  20. JavaScript (566)
  21. Jovial (8)
  22. LabVIEW (85)
  23. Lagoona@ (1)
  24. LaTeX@ (117)
  25. Leda (4)
  26. Limbo (6)
  27. Lisp (445)
  28. Logo@ (59)
  29. Lua (20)
  30. m4 (2)
  31. Maple@ (26)
  32. Mathematica@ (53)
  33. MATLAB@ (146)
  34. Mercury (4)
  35. Miranda (11)
  36. Miva (63)
  37. ML (52)
  38. Modula-2 (27)
  39. Modula-3 (8)
  40. Moto (4)
  1. Mumps (22)
  2. Oberon (65)
  3. Objective Caml@ (25)
  4. Objective-C (21)
  5. Obliq (4)
  6. Occam (20)
  7. Oz (8)
  8. Pascal (79)
  9. Perl (925)
  10. PHP (1,495)
  11. Pike (7)
  12. PL (14)
  13. Pliant (9)
  14. PL-SQL (50)
  15. POP-11 (11)
  16. PostScript@ (39)
  17. PowerBuilder@ (98)
  18. Prograph (24)
  19. Prolog (69)
  20. Proteus (2)
  21. Python (469)
  22. R@ (21)
  23. REBOL (145)
  24. Refal (7)
  25. Rexx (210)
  26. Rigal (3)
  27. RPG (16)
  28. Ruby (223)
  29. SAS (51)
  30. Sather (11)
  31. Scheme@ (144)
  32. Self@ (16)
  33. SETL (6)
  34. SGML@ (29)
  35. Simkin (5)
  36. Simula (8)
  37. Sisal (11)
  38. S-Lang (2)
  39. Smalltalk (309)
  40. Snobol (6)
  1. SQL (41)
  2. Squeak@ (94)
  3. Tcl-Tk (113)
  4. Tempo (2)
  5. TeX@ (402)
  6. TOM (2)
  7. TRAC (4)
  8. Transcript (25)
  9. Turing (8)
  10. T3X (3)
  11. UML@ (177)
  12. VBScript@ (19)
  13. Verilog@ (16)
  14. VHDL@ (28)
  15. Visual Basic (464)
  16. Visual DialogScript (4)
  17. Visual FoxPro (67)
  18. Water (11)
  19. XML@ (749)
  20. XOTcl@ (5)
  21. YAFL (2)
  22. Yorick (8)
  23. Z (28)

13. การใช้ scratch สร้างโปรแกรมพิมพ์ 1 ถึง 5 ทราบข่าวว่า google สนับสนุนให้เด็กที่สหรัฐ เรียนรู้ วิทยาการคอมพิวเตอร์ (Computer Science) มีคลิ๊ปและรายละเอียดที่ cs-first.com เคยสนใจเรื่องพิมพ์ตัวเลข จึงลองใช้ scratch ที่ scratch.mit.edu สร้างโปรแกรม เพื่อพูด (say) 1 ถึง 5 แบบทำซ้ำ
พูด 1 จำนวน 1 ครั้ง คั่นด้วย , ทุกครั้ง แล้วเลื่อนเป็น 2
พูด 2 จำนวน 2 ครั้ง คั่นด้วย , ทุกครั้ง แล้วเลื่อนเป็น 3
ไปถึง 5
พูด 5 จำนวน 5 ครั้ง คั่นด้วย , ทุกครั้ง แล้วหยุด
ตัวอย่างการใช้ randomnumber กับภาษาจาวา
+ simplerandomnumbers.pdf

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

เริ่มต้นกับ Scratch ก็ดีครับ ไม่ยาก ไม่ต้องเขียน code
คลิ๊กไม่กี่ที่ก็ Program ได้แล้ว
"ด้วย Scratch ท่านสามารถเขียนโปรแกรมด้วยตัวท่านเอง
ทั้งแบบโต้ตอบได้ เขียนเกม หรือหนังการ์ตูน
แล้วยังแชร์ผลงานให้ใคร ๆ ในชุมชนออนไลน์ได้อีกด้วย
Scratch ช่วยให้คนรุ่นใหม่เรียนรู้ที่จะคิดอย่างสร้างสรรค์
มีระบบคิดอย่างมีเหตุผล และทำงานร่วมกัน
เป็นทักษะที่จำเป็นสำหรับใช้ชีวิตในศตวรรษที่ 21"
เปลี่ยนสายอาชีพ จากเศรษฐศาสตร์ ไป โปรแกรมเมอร์
เรื่อง "อยากเป็นโปรแกรมเมอร์ละอ่อนใน 3 เดือน" พบแชร์ใน ProgrammerThai
จบเศรษฐศาสตร์ แต่เบนเข็มไปเป็นโปรแกรมเมอร์ เรียนด้วยตัวเองผ่าน MOOC และบลา ๆๆๆ
โดย @TiMeFF เขียน blog ที่ medium.com
https://www.facebook.com/programmerthai/posts/1762001597423017
การทำงานของอาร์เรย์กับเลขคู่เลขคี่ด้วย python
numbers = [12, 37, 5, 42, 8, 3]
even = []
odd = []
while len(numbers) > :
  number = numbers.pop()
  if(number % 2 == 0):
    even.append(number)
  else:
    odd.append(number)
ยุคใหม่ของวิทยาการคอมพิวเตอร์ (itinlife537)
โอบาม่ากล่าวผ่าน whitehouse.gov ที่เผยแพร่เมื่อ 30 มกราคม 2559 ว่า “ในเศรษฐกิจยุคใหม่ วิทยาการคอมพิวเตอร์ (Computer Science) จะไม่เป็นเพียงทักษะทางเลือก แต่จะเป็นทักษะพื้นฐาน” ที่มีทั้งการอ่าน การเขียน และการคำนวณ แล้วเขาจะหางบ 4 พันล้านเหรียญมาผลักดันหลักสูตรวิทยาการคอมพิวเตอร์ให้มีการเรียนในระดับประถมศึกษาถึงมัธยมศึกษา ซึ่งเดิมจะเน้นให้อ่านออกเขียนได้ แต่ยุคใหม่ต้องให้การคำนวณเป็นทักษะพื้นฐานของเยาวชนทุกคน แม้ว่าหางบประมาณก้อนใหญ่ไม่ได้ ก็ยังหน่วยงาน National Science Foundation ได้เตรียมงบ 135 ล้านเหรียญไว้อบรมพัฒนาครูผู้สอนให้มีความสามารถทางวิทยากรคอมพิวเตอร์ไว้แล้ว
อเมริกาเป็นผู้นำด้านเทคโนโลยีที่ถือเป็นจุดแข็ง เพราะเป็นประเทศที่ประสบความสำเร็จอย่างชัดเจน มีผลงานของคนในประเทศ อาทิ Facebook.com, Microsoft.com, Google.com, Apple.com, Oracle.com ดังนั้นการเสริมจุดแข็งจึงเป็นสิ่งที่ตอกย้ำความสำเร็จว่าเดินไปถูกทาง โดยมองไปที่การพัฒนาการศึกษาที่บูรณาการกับวิทยาการคอมพิวเตอร์สำหรับเด็กตั้งแต่เริ่มอ่านออกเขียนได้ ในอนาคตเศรษฐกิจของทุกประเทศทั่วโลกจะยึดโยงกับเทคโนโลยีสารสนเทศอย่างหลีกเลี่ยงไม่ได้ ที่ประเทศจีนมีคุณแจ็ค หม่า ที่ทำ Alibaba.com บริการ B2B ก็ขึ้นอันดับหนึ่งของคนรวยที่สุดในจีนแล้ว ที่ประเทศอังกฤษในอดีตมีคุณอลัน ทัวริ่ง ผู้คิดค้นเครื่องถอดรหัสเครื่อง Enigma ของเยอรมันจนทำให้สงความยุติลงเร็วกว่าที่ควรจะเป็น ถือเป็นผลงานที่ต้องจดจำ และได้รับการยกย่องให้เป็นบิดาแห่งวิทยาการคอมพิวเตอร์
จากการสำรวจทักษะคนงานไทยเพื่อเตรียมออกไปทำงานในประเทศกลุ่มอาเซียน พบว่า ทักษะภาษาอังกฤษน่าเป็นห่วงมากที่สุด และทักษะด้านเทคโนโลยีสารสนเทศเป็นปัญหารองลงมา เราคงไม่ต้องถามว่าแข่งกับใครอย่างไร คงต้องถามว่าจะพัฒนาคนไทยอย่างไรมากกว่า เพราะปัญหาความเข้าใจในเทคโนโลยีสารสนเทศของคนไทยมีกันในทุกระดับ ตั้งแต่ปัญหาโรงเรียนเล็กที่มีเด็กไม่ถึง 60 คน ส่งผลถึงจำนวนครูในโรงเรียน และส่งผลถึงงบประมาณทุกด้าน ปัญหาการให้ความสำคัญของภาครัฐและเอกชนที่จะใช้และให้บริการสารสนเทศอย่างจริงจัง ปัญหาผู้บริหารที่จะใช้เทคโนโลยีสารสนเทศในการบริหารจัดการในองค์กร เพราะถ้าเด็กในปัจจุบันขาดทักษะไอทีก็เชื่อได้ว่าทักษะของผู้ใหญ่ในปัจจุบันก็ต้องอ่อนแอถึงอ่อนมากเป็นธรรมดา
+ http://tinyurl.com/js9ssod


ม.3 ของไทยก็เรียน C# นะครับ
ได้อ่านหนังสือวิชา เทคโนโลยีสารสนเทศและการสื่อสาร สำหรับ ม.3 มีบทที่ 3 การพัฒนาโปรแกรม หน้า 39 – 68 มีเนื้อหาสอนการใช้โปรแกรมประเภท IDE คือ Sharpdevelop


Try Html Basic


"Imagination is more important than knowledge" - Albert Einstein
http://goo.gl/72BPC