The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by ttacademic9, 2020-03-06 04:21:49

2301170-Dittaya-ebook

2301170-Dittaya-ebook

เอกสารประกอบการสอน

2301170 COMP PROG

ฑติ ยา หวานวารี

กรกฎาคม 2559

หากพบข้อผิดพลาด กรณุ าติดต่อ
ฑติ ยา หวานวารี
[email protected]
จำนวน 175 หนา้
• ปรับปรุงครงั้ ที่ 1 เม่อื 26 สิงหาคม 2559 22:20
• รุ่น 1.1 29 สงิ หาคม 2559 16:00

CC BY-SA 3.0
สญั ญาอนุญาตครีเอทฟี คอมมอนสแ์ บบ แสดงท่ีมา-อนุญาตแบบ
เดียวกนั 3.0

กิตติกรรมประกาศ

• ขอขอบคณุ CS@nok ผู้พฒั นาฟอนต์ซีเอสประจาด (CS PraJad) ซึง่ เป็นฟอนตห์ ลกั สำหรบั
เอกสารฉบับนี้
http://www.f0nt.com/release/cs-prajad/

• รูปสญั ลักษณอ์ ุปกรณเ์ ครือข่ายตา่ งๆ จาก CISCO
http://www.cisco.com/c/en/us/about/brand-center/
network-topology-icons.html



สารบญั

กิตตกิ รรมประกาศ ก

สารบัญ ค

สารบัญภาพ ช

สารบัญตาราง ฎ

สารบัญตัวอย่าง ฐ

สารบัญรหัสคำสั่ง ฒ

บทนำ 1

1 คอมพิวเตอร์ทำงานได้อยา่ งไร 3

1.1 วิวฒั นาการของคอมพวิ เตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 เครอ่ื งคอมพวิ เตอร์ทสี่ ำคัญในประวตั ศิ าสตร์ . . . . . . . . . . . . . . . . . . . . . . 8

1.3 ประเภทของคอมพิวเตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4 องคป์ ระกอบและการทำงานของฮารด์ แวร์คอมพวิ เตอร์ในปจั จุบัน . . . . . . . . . . . 13

1.5 ประเภทและการทำงานของซอฟตแ์ วร์ . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.6 การโปรแกรมคอมพิวเตอร์เบือ้ งตน้ . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2 ระบบอนิ เทอรเ์ นต็ 31
2.1 ขา่ ยงานคอมพวิ เตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2 การทำงานของอินเทอรเ์ น็ต . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3 การเช่อื มตอ่ กับข่ายงานอินเทอร์เนต็ . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3 การแทนขอ้ มลู ในคอมพวิ เตอร์ 43

3.1 บติ และไบต์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.2 ขอ้ มูลประเภทจำนวน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

ง สารบญั

3.3 ขอ้ มลู ประเภทข้อความ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4 ขอ้ มูลชนดิ ตรรกะ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.5 ตวั แปร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4 การทำงานแบบลำดับ 53
4.1 ตัวดำเนินการ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2 การออกแบบโปรแกรม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3 การเขยี นและตรวจสอบโปรแกรม . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.4 คำสัง่ พืน้ ฐานในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5 การทำงานแบบทางเลอื ก 67
5.1 โครงสรา้ งการทำงานแบบเง่ือนไขสองทางเลือก . . . . . . . . . . . . . . . . . . . . 67
5.2 เงือ่ นไขซ้อนและการทำงานแบบหลายทางเลือก . . . . . . . . . . . . . . . . . . . . 69
5.3 โครงสรา้ ง if ในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.4 โครงสรา้ ง switch ในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6 การทำงานแบบวนซำ้ 81
6.1 ลกั ษณะและองค์ประกอบของการทำงานแบบวนซำ้ . . . . . . . . . . . . . . . . . . 81
6.2 การทำซำ้ แบบทดสอบกอ่ นทำและทดสอบหลงั ทำ . . . . . . . . . . . . . . . . . . . 82
6.3 ตัวแจงนับ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.4 การออกแบบการทำงานแบบวนซ้ำ . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.5 ภาษาโปรแกรมท่ใี ชใ้ นการวนซ้ำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.6 โครงสร้างการทำซำ้ ในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

7 ตวั แปรแถวลำดบั 95

7.1 การเข้าถึงและการเรยี กใชต้ ัวแปรแถวลำดบั . . . . . . . . . . . . . . . . . . . . . . 95

7.2 แถวลำดับกับการวนซำ้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

7.3 แถวลำดบั สองมติ ิ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

7.4 ตัวแปรแถวลำดบั ในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

7.5 ตัวแปรชนดิ สายอกั ขระในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

8 การเรียกใชฟ้ ังก์ชนั 105

8.1 นิยามและสญั ลักษณ์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

8.2 โครงสรา้ งของฟังก์ชนั และการเรียกใช้ . . . . . . . . . . . . . . . . . . . . . . . . . 106

8.3 การรับส่งคา่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

8.4 ขอบเขตของตัวแปร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

8.5 ลำดับการทำงานของฟงั ก์ชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

สารบัญ จ

8.6 คลังโปรแกรม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

9 ความปลอดภัยและจริยธรรมคอมพิวเตอร์ 113

9.1 ความเสยี หายต่อระบบคอมพวิ เตอร์และขอ้ มลู . . . . . . . . . . . . . . . . . . . . . 113

9.2 อาชญากรรมคอมพวิ เตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

9.3 การเข้าถึงระบบและขอ้ มูลคอมพวิ เตอร์ . . . . . . . . . . . . . . . . . . . . . . . . 115

9.4 การรบกวนระบบและขอ้ มูลคอมพิวเตอร์ . . . . . . . . . . . . . . . . . . . . . . . . 117

9.5 การดักรับข้อมลู . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

9.6 การปลอมแปลงตวั ตน และการสง่ ข้อมลู รบกวนผอู้ นื่ . . . . . . . . . . . . . . . . . . 122

9.7 ทรพั ย์สนิ ทางปญั ญา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

9.8 จริยธรรมคอมพวิ เตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

9.9 ความเป็นสว่ นตวั ของขอ้ มลู สารสนเทศ . . . . . . . . . . . . . . . . . . . . . . . . . 126

A แบบฝึกหดั 129

A.1 Checksum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

A.2 ภาษีและเงินเดอื น . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

A.3 สามเหลีย่ มปาสกาล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

A.4 การหารากทส่ี องด้วยการหารยาว . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

A.5 การคิดคา่ โดยสารรถไฟฟา้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

A.6 การพิมพ์ปฏทิ ิน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165



สารบัญภาพ

1.1 ลกู คดิ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 เครอื่ งคดิ เลขของชิกการด์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 เคร่อื งคิดเลขของปาสคาล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 ตารางลอ็ กและภาพขยายหน้าในหนังสือ . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Difference engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 ชารล์ ส์ แบบเบจ: บิดาของคอมพวิ เตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.7 รีเลย์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.8 หลอดสูญญากาศ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.9 ทรานซิสเตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.10 วงจรรวม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.11 Z1 ท่ีสร้างข้นึ ใหม่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.12 Enigma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.13 เครือ่ ง Bombe ของสหรัฐอเมริกา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.14 Colossus ทส่ี รา้ งข้นึ ใหม่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.15 ENIAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.16 เคร่อื งบรกิ าร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.17 เมนเฟรม IBM Z9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.18 ซูเปอรค์ อมพิวเตอร์ IBM Blue Gene/P . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.19 แผงวงจรหลกั ของคอมพิวเตอรต์ ั้งโต๊ะธรรมดา . . . . . . . . . . . . . . . . . . . . . . . 14
1.20 หน่วยประมวลผลกลางของอินเทลและแอปเปิล . . . . . . . . . . . . . . . . . . . . . . 14
1.21 สถาปตั ยกรรมฟอนนอยมนั น์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.22 ลำดับชน้ั ของหน่วยความจำภายในหนว่ ยระบบ . . . . . . . . . . . . . . . . . . . . . . . 17
1.23 RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.24 HDD และ SSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.25 แผ่นซดี ี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.26 ยเู อสบีแฟลชไดรฟ์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.27 ชปิ ไบออส . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

ซ สารบัญภาพ

1.28 การจัดสรรทรพั ยากรและจดั ลำดับการทำงานโดย Ubuntu . . . . . . . . . . . . . . . . 22
1.29 ส่วนตอ่ ประสานแบบคำสั่ง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.30 ตัวอย่างรนุ่ ของโปรแกรมขับอปุ กรณ์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.31 ภาษาเคร่อื งและภาษาแอสเซมบลี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.32 ข้นั ตอนการทำงานของคอมไพเลอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.33 ขนั้ ตอนการทำงานของอนิ เทอร์พรเี ตอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.1 ขา่ ยงานเฉพาะท่แี ละขา่ ยงานบรเิ วณกว้าง . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2 ARPANET มนี าคม 1977 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 แผนภาพการเชื่อมตอ่ เครือข่ายอนิ เทอรเ์ นต็ ระหวา่ งประเทศ . . . . . . . . . . . . . . . . 33
2.4 ตัวอย่างการทำงานในชุดโพรโทคอลอินเทอรเ์ นต็ . . . . . . . . . . . . . . . . . . . . . . 35
2.5 การทำงานของอินเทอร์เนต็ เปรียบเทยี บกบั ระบบไปรษณยี ์ . . . . . . . . . . . . . . . . . 38
2.6 บรกิ าร DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.7 บรกิ าร DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.1 ผังงานและขั้นตอนวธิ ีสำหรบั ตัวอยา่ ง 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2 ผงั งานและข้นั ตอนวิธสี ำหรับตวั อยา่ ง 4.2 . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.3 ตัวอยา่ งการทำงานของโปรแกรมตรวจแก้จดุ บกพรอ่ ง . . . . . . . . . . . . . . . . . . . 62

5.1 โครงสรา้ งการทำงานแบบเงื่อนไขสองทางเลือก . . . . . . . . . . . . . . . . . . . . . . . 68
5.2 ส่วนของผังงานสำหรบั ตวั อย่างที่ 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3 โครงสรา้ งการทำงานแบบเงื่อนไขซ้อนเงอ่ื นไข . . . . . . . . . . . . . . . . . . . . . . . 69
5.4 ผงั งานสำหรับตัวอย่างที่ 5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 โครงสรา้ งการทำงานแบบเงอื่ นไขต่อเนอ่ื งเพือ่ ตรวจสอบคา่ (1) . . . . . . . . . . . . . . . 71
5.6 โครงสร้างการทำงานแบบเงอื่ นไขตอ่ เนอื่ งเพอื่ ตรวจสอบคา่ (2) . . . . . . . . . . . . . . . 71
5.7 โครงสรา้ งการทำงานแบบเงื่อนไขการตรวจสอบทางเลือก . . . . . . . . . . . . . . . . . 72
5.8 ผังงานแสดงการหาจำนวนวันในหนง่ึ เดอื น . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.9 ผังงานแสดงลำดับการทำงานของคำสงั่ switch แบบไม่มี break . . . . . . . . . . . . 77
5.10 ผงั งานของคำสัง่ switch แบบไม่มี break . . . . . . . . . . . . . . . . . . . . . . . 78

6.1 การหาจดุ สมดลุ ของคาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2 โครงสรา้ งการทำซ้ำแบบทดสอบกอ่ นทำ . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3 สว่ นของผังงานแสดงการเติมสารเคมจี นกวา่ จะเกิดปฏกิ ิริยา . . . . . . . . . . . . . . . . 84
6.4 โครงสรา้ งการทำซำ้ แบบทดสอบหลงั ทำ . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.5 โครงสรา้ งการทำซำแบบใชต้ วั แจงนับ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.6 ส่วนของผังงานแสดงการหาจำนวนที่หารด้วย 3 และ 5 ลงตัวในชว่ ง [1,1000] . . . . . . 86
6.7 การใช้ตวั แจงนับแจกแจงสมาชกิ ในลำดับ . . . . . . . . . . . . . . . . . . . . . . . . . . 87

สารบญั ภาพ ฌ

6.8 ผงั งานแสดงการตง้ั เวลาถ่ายรูปทกุ 1 นาที เปน็ เวลา 24 ช่วั โมง . . . . . . . . . . . . . . 88
88
6.9 ผังงานการแสดงรายช่อื นกั เรียนทกุ คนในลำดบั . . . . . . . . . . . . . . . . . . . . . . . 89
91
6.10 ผังงานการหาผูช้ นะเกมเปา่ ยิง้ ฉบุ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.11 โครงสร้าง for แบบด้งั เดิม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.12 โครงสรา้ ง for แบบใชต้ วั แจงนบั . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.1 เลขดัชนขี องตวั แปรแถวลำดบั . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.2 ส่วนของผังงานสำหรบั การแปลงขอ้ มูลใหอ้ ยใู่ นช่วง [0,1] . . . . . . . . . . . . . . . . . . 98
7.3 แถวลำดับกบั ตวั แปรชนิดตวั ชี้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

8.1 สญั ลกั ษณก์ ารเรียกใช้โปรแกรมยอ่ ยหรือฟงั ก์ชัน . . . . . . . . . . . . . . . . . . . . . . 106

9.1 ตวั อยา่ ง CAPTCHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
9.2 การเขา้ รหัสด้วยกญุ แจอสมมาตร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9.3 ตัวอย่างใบรบั รองดิจทิ ลั . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

A.1 ผังงานการพิมพส์ ามเหลย่ี มปาสกาล . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
A.2 ตวั อยา่ งการหารากทีส่ อง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
A.3 ผงั งานการหารากทีส่ องดว้ ยวิธีการหารยาว . . . . . . . . . . . . . . . . . . . . . . . . . 149
A.4 ผังงานการคิดคา่ โดยสารรถไฟฟา้ BTS . . . . . . . . . . . . . . . . . . . . . . . . . . 158
A.5 แผนภาพเส้นทางและสถานีในระบบรถไฟฟ้า BTS: ภาพจาก www.bts.co.th . . . . . . 159
A.6 ตารางคา่ โดยสารรถไฟฟ้า BTS: ภาพจาก www.bts.co.th . . . . . . . . . . . . . . . . 160
A.7 ผังงานการพมิ พ์ปฏิทนิ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174



สารบญั ตาราง

3.1 จำนวนข้อมลู ทแี่ ทนได้เมอ่ื มพี ้นื ทีใ่ นหน่วยความจำขนาดต่าง ๆ . . . . . . . . . . . . . . . 44
3.2 ตารางรหัสแอสกแี บบขยาย ISO8859-11 . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3 ตัวอยา่ งการเกบ็ ข้อมลู ในหนว่ ยความจำ . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.1 ตวั ดำเนนิ การพีชคณติ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.2 ตัวดำเนนิ การเปรยี บเทยี บ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.3 ตัวดำเนนิ การตรรกะ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.4 สญั ลักษณข์ องผังงานและความหมาย . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5 การตรวจสอบคา่ ตวั แปร สำหรับตัวอยา่ งท่ี 4.1 . . . . . . . . . . . . . . . . . . . . . . . 62
4.6 ชนิดของข้อมูลทีใ่ ช้บ่อยในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.7 รปู แบบขอ้ มูลเข้าและวธิ ีระบุทอ่ี ยู่สำหรบั คำสง่ั scanf . . . . . . . . . . . . . . . . . . . 64

6.1 ตัวอยา่ งการทำงานแบบวนซ้ำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

7.1 รายการตวั แปรสำหรบั การแปลงค่าใหอ้ ยใู่ นช่วง [0,1] . . . . . . . . . . . . . . . . . . . 97
7.2 การอา้ งถงึ แถวลำดบั สองมิติ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

A.1 อัตราภาษเี งินได้บคุ คลธรรมดา . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
A.2 รายการตวั แปรสำหรับการพิมพส์ ามเหลี่ยมปาสกาล . . . . . . . . . . . . . . . . . . . . 141
A.3 รายการตัวแปรสำหรบั การหารากที่สองดว้ ยการหารยาว . . . . . . . . . . . . . . . . . . 148
A.4 รายการตัวแปรสำหรับการคดิ คา่ โดยสาร BTS . . . . . . . . . . . . . . . . . . . . . . . 157
A.5 รายการตวั แปรสำหรับการพมิ พ์ปฏิทิน . . . . . . . . . . . . . . . . . . . . . . . . . . . 173



สารบญั ตัวอยา่ ง

4.1 ตัวอยา่ ง (การบวกเลขสองจำนวน) . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 ตวั อย่าง (การหาค่าเฉลย่ี ของเลขสามจำนวน) . . . . . . . . . . . . . . . . . . . . . 57

5.1 ตวั อย่าง (การหาจำนวนวนั ในหน่ึงปี) . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2 ตวั อยา่ ง (การแปลงเวลาจากระบบ 24 ช่ัวโมงไปเป็นระบบ AM/PM) . . . . . . . . . 69
5.3 ตัวอยา่ ง (การหาจำนวนวันในหนง่ึ เดือนของปี) . . . . . . . . . . . . . . . . . . . . . 70

6.1 ตวั อยา่ ง (การหาจำนวนทง้ั หมดทห่ี ารดว้ ย 3 และ 5 ลงตวั ในช่วง 1-1000) . . . . . . 85
6.2 ตัวอยา่ ง (การต้ังเวลาถ่ายภาพแบบ timelapse ทกุ 1 นาทเี ป็นเวลา  24 ชวั่ โมง) . . 87
6.3 ตวั อย่าง (การแสดงรายชือ่ นักเรียนทุกคนในลำดบั ) . . . . . . . . . . . . . . . . . . 87
6.4 ตวั อย่าง (การหาผู้ชนะเกมเป่าย้งิ ฉบุ ) . . . . . . . . . . . . . . . . . . . . . . . . . 88

7.1 ตวั อยา่ ง (การแปลงค่าใหอ้ ยู่ใชช้ ่วง 0-1 (normalization)) . . . . . . . . . . . . . . 97
7.2 ตวั อย่าง (แถวลำดับสองมิติ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.3 ตัวอย่าง (การแปลงข้อความทั้งหมดใหเ้ ปน็ ตวั พิมพใ์ หญ่) . . . . . . . . . . . . . . . 101

8.1 ตัวอยา่ ง (การเรยี กใชฟ้ งั ก์ชันการหารากท่สี อง) . . . . . . . . . . . . . . . . . . . . 107
8.2 ตัวอยา่ ง (ฟงั กช์ นั แฟกทอเรียลและขั้นตอนการทำงาน) . . . . . . . . . . . . . . . . . 110



สารบญั รหสั คำสั่ง

4.1 การกำหนดคา่ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2 การประกาศตวั แปรในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.3 การกำหนดคา่ ใหต้ ัวแปรในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.4 การประกาศตัวแปรพร้อมกับกำหนดค่าในภาษาซี . . . . . . . . . . . . . . . . . . . 63
4.5 โครงสร้างคำสั่ง scanf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.6 โครงสรา้ งคำส่ัง printf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.7 รหัสคำสงั่ สำหรบั ตวั อย่างท่ี 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.1 โครงสรา้ งคำสัง่ if (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2 โครงสรา้ งคำสั่ง if (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.3 โครงสรา้ งคำสง่ั if แบบเง่ือนไขซ้อน . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.4 โครงสรา้ ง if แบบเงอ่ื นไขต่อเนอ่ื ง (1) . . . . . . . . . . . . . . . . . . . . . . . . 74
5.5 โครงสร้าง if แบบเงื่อนไขต่อเนอื่ ง (2) . . . . . . . . . . . . . . . . . . . . . . . . 74
5.6 โครงสรา้ ง if แบบใช้บลอ็ ก (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.7 โครงสร้าง if แบบใช้บล็อก (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.8 โครงสร้างคำสัง่ switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.9 โครงสร้าง switch แบบไม่มี break . . . . . . . . . . . . . . . . . . . . . . . . 77

6.1 โครงสรา้ ง while-do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.2 โครงสรา้ ง do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.3 โครงสร้าง repeat-until . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.4 โครงสรา้ ง for แบบดง้ั เดิม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.5 โครงสร้าง for แบบใชต้ วั แจงนับ . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.6 โครงสร้าง while-do ในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.7 โครงสร้าง do-while ในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.8 โครงสรา้ ง for ในภาษาซี . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

7.1 การอา้ งถึงตวั แปรแถวลำดบั . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

ณ สารบญั รหสั คำสง่ั

7.2 ตัวอยา่ งการประกาศตวั แปรแถวลำดับในภาษาซี . . . . . . . . . . . . . . . . . . . . 99
7.3 การแปลงขอ้ ความทง้ั หมดให้เป็นตัวพมิ พ์ใหญ่ . . . . . . . . . . . . . . . . . . . . . 101
7.4 ฟงั กช์ ันตา่ งๆ เกยี่ วกบั สายอักขระในภาษาซี . . . . . . . . . . . . . . . . . . . . . . 102

8.1 โครงสรา้ งของฟงั ก์ชัน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
8.2 โปรแกรมแฟกทอเรยี ล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

A.1 โปรแกรมคำนวณ checksum ของเลขประจำตัวประชาชน . . . . . . . . . . . . . . 130
A.2 โปรแกรมคำนวณ checksum ของเลขประจำตัวนิสติ . . . . . . . . . . . . . . . . 132
A.3 โปรแกรมการพิมพ์สามเหลยี่ มปาสกาล . . . . . . . . . . . . . . . . . . . . . . . . 143
A.4 โปรแกรมการคดิ คา่ โดยสาร BTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
A.5 โปรแกรมการพมิ พป์ ฏิทนิ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

บทนำ

วตั ถุประสงคร์ ายวชิ านี้ประกอบดว้ ย

1. อธบิ ายหลกั การทำงานของคอมพิวเตอร์ในระดบั ฮารด์ แวร์ ซอฟต์แวร์ และระบบปฏิบตั กิ าร
2. อธิบายหลกั การทำงานของอนิ เทอรเ์ นต็
3. อธิบายแนวคดิ ของการเก็บข้อมลู ในภาษาโปรแกรม การแทนข้อมลู ในคอมพิวเตอร์ และความแตก

ตา่ งระหว่างขอ้ มูลชนิดตา่ งๆ
4. อธบิ ายการทำงานของโปรแกรมในรูปการทำงานแบบลําดับ แบบทางเลือก แบบวนซำ้ และการใช้

ตวั แปรแถวลาํ าดบั
5. ระบุปจั จัยเสี่ยงเก่ยี วกับความปลอดภยั ของคอมพวิ เตอร์ จรรยาบรรณการใชค้ อมพิวเตอร์ และ

อาชญากรรมบนอินเทอรเ์ น็ต
6. อธิบายการประยกุ ตใ์ ชค้ อมพวิ เตอร์ในศาสตร์ตา่ งๆ

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

เอกสารฉบบั อเิ ล็กทรอนกิ ส์อย่ทู ่ี

http://pioneer.netserv.chula.ac.th/~wdittaya/
CompProg/2301170-Dittaya-ebook.pdf

แผนการสอนของรายวชิ าแบ่งตามวัตถุประสงค์รายวชิ าได้ดังนี้

2 บทนำ

สัปดาหท์ ี่ วัตถปุ ระสงค์ข้อ เนื้อหา

1 1 คอมพวิ เตอร์ทำงานได้อย่างไร

2 2 ระบบอินเทอรเ์ นต็

3 3 การแทนขอ้ มลู ในคอมพวิ เตอร์

4-5 4 พ้นื ฐานการเขียนโปรแกรมแบบลำดบั

6-7 4 การทำงานแบบทางเลือก

สอบกลางภาค

8-10 4 การทำงานแบบวนซ้ำ

11-12 4 ตวั แปรแถวลำดบั

13 5 การรักษาความปลอดภยั ในระบบคอมพวิ เตอร์

14 5 จรรยาบรรณการใช้คอมพวิ เตอร์

15 6 การประยุกตใ์ ช้คอมพวิ เตอร์ในศาสตร์ต่าง ๆ

สอบปลายภาค

บทที่ 1

คอมพวิ เตอรท์ ำงานไดอ้ ย่างไร

วตั ถุประสงคก์ ารเรยี นรู้

อธบิ ายหลักการทำงานของคอมพิวเตอร์ในระดับฮาร์ดแวร์ ซอฟต์แวร์ และระบบปฏบิ ัติการ

1. อธบิ ายววิ ัฒนาการและความเปน็ มาในการพัฒนาคอมพิวเตอร์ได้
2. อธบิ ายโครงสรา้ งคอมพิวเตอร์ส่วนฮาร์ดแวร์ และหนา้ ที่ของแต่ละองคป์ ระกอบได้
3. รู้จกั ซอฟตแ์ วรช์ นดิ ต่างๆ และฮารด์ แวรท์ ม่ี กั พบในคอมพวิ เตอร์ ระบหุ นา้ ทีแ่ ละความสมั พนั ธก์ ับ

ส่วนอ่นื ๆ ของคอมพวิ เตอรไ์ ด้
4. คาดเดาสาเหตขุ องปญั หาการทำงานของคอมพวิ เตอรซ์ ่งึ เกิดจากฮาร์ดแวร์หรือซอฟต์แวรได้

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

1.1 วิวัฒนาการของคอมพิวเตอร์

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

4 บทที่ 1. คอมพิวเตอร์ทำงานได้อย่างไร

รปู ท่ี 1.1: ลกู คดิ รูปท่ี 1.2: เคร่อื งคิดเลขของชกิ การ์ด1

รูปท่ี 1.3: เครื่องคดิ เลขของปาสคาล2

1.1.1 เคร่ืองคดิ เลข

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

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

ความต้องการในการคำนวณทซี่ ับซอ้ นนอกจากงานวิทยาศาสตรใ์ นกลมุ่ ดาราศาสตรแ์ ลว้ การคดิ

1โดย Herbert Klaeren [CC-BY-SA-3.0], ผ่าน Wikimedia Commons
2โดย © 2005 David Monniaux , [CC BY-SA 3.0], ผ่าน Wikimedia Commons

1.1. วิวฒั นาการของคอมพิวเตอร์ 5

content...

รปู ท่ี 1.4: ตารางล็อกและภาพขยายหนา้ ใน รปู ที่ 1.5: Difference engine4
หนงั สอื 3

คำนวณด้านการเงนิ ภาษี ก็จะเปน็ ภาระท่หี นกั เชน่ เดียวกนั แบลร์ ปาสคาล (Blair Pascal) ออกแบบ
และสร้างเคร่ืองคิดเลขข้นึ ใช้ในสำนักงานเพอ่ื คำนวณภาษี เครือ่ งคิดเลขของปาสคาล (รปู ท่ี 1.3) ใชเ้ ฟอื ง
ทดในการบวกลบจำนวน และทำการคณู หารโดยอาศัยการบวกลบ นอกจากปาสคาลจะผลิตเครื่องคิดเลข
เพือ่ ใช้ในสำนกั งานของตนแลว้ ปาสคาลยงั จดสิทธบิ ัตรและสรา้ งเครอ่ื งคิดเลขเพอื่ จำหน่ายเชิงพาณิชย์
อกี ดว้ ย

1.1.2 คอมพวิ เตอรเ์ ชิงกล (Mechanical computer)

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

ในอดีต ตารางเหล่านส้ี รา้ งจากการคำนวณโดยมนษุ ย์ สง่ โรงพมิ พเ์ พอื่ เรยี งพมิ พ์ และพมิ พอ์ อกมาเป็น
เล่ม ซงึ่ มโี อกาสผิดพลาดในขั้นตอนการเรยี งพิมพไ์ ด้มาก เน่ืองจากตารางน้ันมีเฉพาะตวั เลข ไมเ่ หมือนกับ
ข้อความซึ่งสามารถพสิ จู นอ์ ักษรได้ง่ายกว่า ชารล์ ส แบบเบจ (Charles Babbage, รูปท่ี 1.6) จึง
เสนอโมเดลของ Difference engine ซ่ึงเป็นเคร่ืองพิมพ์ทส่ี ามารถพิมพต์ ารางค่าทางคณิตศาสตรไ์ ด้
โดยอัตโนมัติ การทำงานของ Difference engine น้นั ใชห้ ลักการทดรอบของเฟอื งตา่ งๆ ในการคดิ เลข
เรยี กคอมพิวเตอรท์ ีใ่ ช้หลกั การทำงานของกลไกเชงิ กลแบบนว้ี ่า “คอมพวิ เตอรเ์ ชิงกล”

3โดย Georg von Vega, 1794 จาก Science Museum
4โดย Canticle at en.wikipedia [CC-BY-SA-3.0 or GFDL], จาก Wikimedia Commons

6 บทท่ี 1. คอมพิวเตอรท์ ำงานไดอ้ ย่างไร

รูปที่ 1.7: รเี ลย์6

รูปที่ 1.6: ชารล์ ส์ แบบเบจ: บิดาของคอมพิวเตอร์5

Difference engine นนั้ ไมเ่ คยถกู สรา้ งจนสำเรจ็ ใช้งานได้จริงในยคุ ของแบบเบจเนื่องจากข้อจำกัด
ทางด้านงบประมาณและเทคโนโลยี ราวปี 1990 จงึ มกี ารสรา้ ง Difference engine ซ่งึ ทำงาน
ไดจ้ รงิ โดยอาศัยรา่ งแบบของแบบเบจและเปน็ การยืนยนั ว่าแนวคดิ ของแบบเบจนน้ั ใช้งานไดจ้ รงิ ปจั จุบัน
Difference engine ทที่ ำงานไดจ้ ริงตง้ั อย่ทู ี่พิพธิ ภณั ฑว์ ทิ ยาศาสตร์ ณ กรงุ ลอนดอน (รปู ท่ี 1.5) และ
พพิ ิธภณั ฑป์ ระวตั ศิ าสตร์คอมพวิ เตอร์ ณ เมอื งเมาน์เทนวิว สหรัฐอเมริกา

นอกจากโมเดลของ Difference engine แลว้ แบบเบจยงั เสนอโมเดลของ Analytical engine
ซงึ่ ถอื เป็นโมเดลคอมพวิ เตอร์เครื่องแรกทสี่ ามารถโปรแกรมหรอื ส่ังให้ทำงานได้ต่างๆ ได้ตามตอ้ งการ แต่
จนปจั จุบัน ก็ยังไม่มีการสร้างเครือ่ งคอมพวิ เตอรท์ ี่ทำงานได้จริงจากร่างการออกแบบ Analytical en-
gine ของแบบเบจ อยา่ งไรกด็ ี จากผลงานการออกแบบนี้ทำให้แบบเบจได้รับการยกย่องให้เป็น “บดิ า
ของคอมพิวเตอร์”

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

5Public Domain, https://commons.wikimedia.org/w/index.php?curid=15392737
6ดัดแปลงจาก Public Domain, https://commons.wikimedia.org/w/index.php?curid=186888

1.1. ววิ ฒั นาการของคอมพิวเตอร์ 7

1.1.3 คอมพิวเตอร์เชิงไฟฟา้

ปัญหาของเคร่อื งคำนวณเชงิ กลคือความเร็วในการทำงานซงึ่ ติดขอ้ จำกัดทร่ี อบการหมุนของกลไก ทำให้

ทำความเรว็ ไดไ้ มม่ าก จอรจ์ สติบิตซ์ (George Stibitz) จากเบลล์แล็บ (Bell Labs) จึงออกแบบและ

สรา้ งคอมพิวเตอรโ์ ดยใชห้ ลกั การทำงานของรเี ลย์

รเี ลย์ (รปู ท่ี 1.7) เป็นสวติ ชร์ ปู แบบหน่งึ ซ่งึ มีสองสถานะคือ ปิด และ เปดิ ทำงานโดยใช้หลัก

การแมเ่ หล็กไฟฟ้า อย่างไรกด็ ี รเี ลย์กย็ ังมสี ่วนแขนสวิตช์หนา้ สมั ผัส (แขน C ในรูปที่ 1.7) ซงึ่

เป็นการทำงานเชิงกลอยู่ดว้ ย คอมพวิ เตอร์ที่อาศัยรเี ลยใ์ นการทำงานจึงเปน็ คอมพวิ เตอรก์ ่ึงเชงิ กลก่งึ เชงิ

ไฟฟ้า (electro-mechanical computer) สถานะติด (วงจรปดิ -กระแสไหล) และดับ (วงจรเปิด-

กระแสไม่ไหล) ของสวติ ชส์ ามารถแทนไดด้ ้วยเลขฐานสอง 1 หลัก นั่นคือ 0 แทนสถานะปิด และ

1 แทนสถานะเปดิ การออกแบบการคำนวณของคอมพวิ เตอร์ซึ่งอาศยั รเี ลย์ในการทำงานจึงองิ กบั เลขฐาน

สองเปน็ หลัก เรยี กจำนวนขอ้ มลู ทเ่ี กบ็ ดว้ ยเลขฐานสอง 1 หลักนว้ี า่ จำนวน 1 บติ (BInary digiT – bit)

รเี ลยเ์ องยงั มีข้อจำกดั ด้านความเร็วจากชิ้นสว่ นเชิงกลในอุปกรณ์ ทำให้ทำความเรว็ ในการประมวล

ผลไดไ้ มส่ ูง ยุคถดั มาของคอมพิวเตอรจ์ ึงเปลีย่ นจากการใชส้ วิตช์ซงึ่ ทำจากรีเลยม์ าเปน็ หลอดสูญญากาศ

(รูปที่ 1.8) แทน หลอดสูญญากาศน้ันไมม่ ีสว่ นเชงิ กล การทำงานเป็นเชงิ ไฟฟา้ ทั้งหมด จงึ ทำงานได้เรว็

กว่ารีเลย์มาก ตัวอยา่ งของหลอดสญู ญากาศ เชน่ หลอดไดโอด

ขอ้ เสียของหลอดสญู ญากาศคือความรอ้ นสูง กินไฟ อายุ

การใชง้ านส้ัน มีขนาดใหญ่ จึงมกี ารพัฒนาทรานซิสเตอรข์ นึ้

มา ทรานซสิ เตอร์ (รูปท่ี 1.9) มีลกั ษณะการทำงานเป็นสวติ ช์

สองสถานะเช่นเดียวกบั รีเลย์และหลอดสญู ญากาศ มขี นาด

เลก็ กินไฟต่ำ ทำใหก้ ารสรา้ งคอมพิวเตอรข์ นาดใหญท่ ำได้

งา่ ยขน้ึ เทคโนโลยคี อมพิวเตอรจ์ งึ พฒั นาตอ่ มาอยา่ งรวดเร็ว

เทคโนโลยใี นยคุ ถดั ๆ มาจนถึงปัจจบุ ันนัน้ เป็นการลด

ขนาดของทรานซสิ เตอร์ และการรวมทรานซสิ เตอร์หลายๆ

ตัวเข้าเปน็ วงจรรวม (Integrated Circuit: IC) หรือชปิ

(chip) หรอื ไมโครชปิ (microchip) ดังรปู ท่ี 1.10 ซึง่ ทำให้ รปู ท่ี 1.8: หลอดสูญญากาศ7
คอมพิวเตอรม์ ีขนาดเลก็ ลง แต่มสี มรรถนะการคำนวณสงู ข้นึ

ปัจจุบนั นีก้ ย็ งั คงเป็นยุคของเทคโนโลยีทรานซิสเตอร์อยู่

แตอ่ ยู่ในรูปของวงจรรวมขนาดใหญ่ (Very Large Scale

Integration: VLSI) เทคโนโลยีปัจจบุ นั (พ.ศ.2558)

ทำวงจรรวมทใี่ ช้ทรานซิสเตอรข์ นาดหลกั สบิ นาโนเมตร ใน

รูปท่ี 1.9: ทรานซสิ เตอร์ ชปิ หน่งึ ตวั ประกอบดว้ ยทรานซสิ เตอรน์ บั พันลา้ นตวั ทำให้
คอมพวิ เตอร์ปัจจุบนั มขี นาดเล็กกว่าในยคุ แรกในขณะที่มี

ประสทิ ธภิ าพการคำนวณสงู กวา่ มาก ทงั้ นี้ ทรานซิสเตอร์

7โดย Chemical Heritage Foundation [CC-BY-SA-3.0], ผา่ น Wikimedia Commons

8 บทท่ี 1. คอมพวิ เตอร์ทำงานไดอ้ ยา่ งไร

ในวงจรรวมกย็ งั คงทำหนา้ ท่ีเปน็ สวิตช์ปดิ เปดิ เช่นเดียวกับในรเี ลยห์ รือหลอดสูญญากาศในยุคก่อน การ

ทำงานกบั คอมพิวเตอร์จงึ ยงั อาศยั เลขฐานสองเป็นหลักเช่นเดิม

ปัจจบุ ันนข้ี นาดของทรานซิสเตอร์เลก็ ลงเรอ่ื ยๆ แตก่ ำลัง

จะถึงขีดจำกดั ในไม่ช้า เทคโนโลยีการสร้างคอมพวิ เตอร์ท่ี

เร่มิ ไดร้ บั ความสนใจคอื คอมพวิ เตอรค์ วอนตัม โดยอาศัย

หลักการทางควอนตมั ฟสิ กิ ส์ในการทำงาน ซ่งึ แตกต่าง

จากสวิตช์ทีใ่ ชใ้ นคอมพวิ เตอร์เชงิ ไฟฟ้าในปัจจบุ นั จดุ เด่น

ของคอมพิวเตอร์ควอนตมั คือสามารถคำนวณค่าต่างๆ ได้ รปู ท่ี 1.10: วงจรรวม8
รวดเร็วกวา่ ระบบคอมพวิ เตอรใ์ นปจั จบุ ันมาก แตเ่ ทคโนโลยี

ควอนตัมคอมพวิ เตอรป์ จั จบุ ันยังอยใู่ นหอ้ งทดลอง ยังไมพ่ รอ้ มจะนำมาใชง้ านจรงิ

ลองคดิ

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

1.2 เครือ่ งคอมพิวเตอร์ทสี่ ำคญั ในประวตั ิศาสตร์

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

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

1.2.1 Z1

คอนราด ซสู (Konrad Zuse) ออกแบบและสรา้ ง Z1 ซ่ึงเป็นคอมพิวเตอรเ์ ชิงกลทีส่ ามารถโปรแกรมได้
แบบจำกัด Z1 เปน็ คอมพิวเตอรซ์ ึ่งสรา้ งโดยเงนิ สนับสนนุ ของครอบครวั ซสู ซ่งึ ต่างจากเครื่องคอมพิวเตอร์
อน่ื ในยุคสมัยสงครามโลกซ่งึ มักได้รบั การสนบั สนนุ ทางการเงนิ จากรฐั บาลประเทศต่างๆ Z1 นัน้ ถกู ทำลาย
ลงไปในระหว่างสงครามโลกครั้งท่ี 2 อยา่ งไรกต็ าม ซสู สร้าง Z1 ข้นึ ใหมอ่ ีกครั้งหลังสงครามโลก ปจั จุบัน
Z1 ทส่ี ร้างขนึ้ ใหมจ่ ัดแสดงอยทู่ ี่พพิ ิธภัณฑเ์ ทคโนโลยเี ยอรมนั ณ กรุงเบอร์ลิน (รูปท่ี 1.11)

8โดย Zephyris ท่ี en.wikipedia [GFDL หรอื CC-BY-SA-3.0], จาก Wikimedia Commons

1.2. เครอื่ งคอมพิวเตอรท์ ่สี ำคัญในประวัติศาสตร์ 9
รูปท่ี 1.11: Z1 ทีส่ รา้ งข้ึนใหม9่

รปู ท่ี 1.12: Enigma10 รูปท่ี 1.13: เครอ่ื ง Bombe ของสหรฐั อเมริกา

11

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

1.2.2 Bombe กบั Enigma และ Colossus กบั Lorenz SZ

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

ฝา่ ยเยอรมนีออกแบบวธิ กี ารเข้ารหัสและสรา้ งเครือ่ งเข้ารหัสกึง่ ไฟฟา้ กงึ่ เชงิ กลชอื่ Enigma (รูปท่ี
1.12) มีลกั ษณะเปน็ เหมอื นพิมพ์ดดี เมือ่ กดแป้นอกั ขระตามปกติแล้ว จะได้ขอ้ ความทเ่ี ขา้ รหสั แลว้ พิมพ์

9โดย Stahlkocher [GFDL หรอื CC-BY-SA-3.0], ผา่ น Wikimedia Commons
10โดย Greg Goebel (Web page Image) [Public domain], ผา่ น Wikimedia Commons
11จาก CyrptoMusuem.com ที่ http://www.cryptomuseum.com/crypto/bombe/

10 บทที่ 1. คอมพวิ เตอรท์ ำงานได้อยา่ งไร

รูปที่ 1.14: Colossus ทีส่ ร้างข้นึ ใหม1่ 2

ออกมา หลักการเขา้ รหัสของ Enigma คอื การสลับอกั ขระจรงิ กบั อกั ขระอ่นื แต่รปู แบบการสลับนัน้
เปลย่ี นไปเรอ่ื ยๆ ในแต่ละครัง้ ของการส่งข้อมูล การถอดรหสั ด้วยมอื จงึ เป็นเรื่องยุง่ ยากและใช้เวลามาก
อีกทง้ั ยงั มขี อ้ ความใหมๆ่ ที่ต้องถอดรหสั ถกู สง่ มาตลอดเวลา

ฝ่ายสมั พนั ธมติ รจึงพยายามสร้างเครื่องชว่ ยถอดรหัสอัตโนมัติขึ้น เคร่อื ง Bombe เปน็ เครอื่ ง
ถอดรหสั ก่ึงไฟฟา้ กึง่ เชงิ กล ออกแบบโดยอลนั ทวั รงิ (Alan Turing) เพอื่ ใช้ในการถอดรหัส Enigma
หลักการทำงานของเครอื่ ง Bombe คอื ทดลองหาวธิ กี ารสลับอกั ขระของ Enigma ไปเร่อื ยๆ วา่ เปน็ ไป
ไดห้ รือไม่ การหาวธิ กี ารเขา้ รหสั น้ีสามารถทำได้ดว้ ยมอื คนก็จรงิ แต่จะใช้เวลานานมากเนอ่ื งจากจำนวน
รูปแบบที่เป็นไปไดม้ จี ำนวนมาก การใช้ Bombe มาชว่ ยจำลองการเขา้ รหัสเพ่ือทดสอบจะยน่ เวลาการ
หารหสั ที่ถูกต้องได้มาก เครอื่ ง Bombe ถกู สร้างขึน้ หลายเครอ่ื งโดยสมาชกิ ของฝา่ ยสัมพันธมิตร รปู ท่ี
1.13 เป็นตวั อย่างของเครอ่ื ง Bombe ท่ีสร้างโดยสหรัฐอเมริกา

นอกจาก Enigma แลว้ ฝ่ายเยอรมนยี ังมีเครอื่ งเข้ารหัสชุด Lorenz SZ อีกด้วย ซง่ึ เขา้ รหัสดว้ ย
การนำขอ้ ความมา XOR กบั กญุ แจ และถอดรหัสดว้ ยวิธเี ดียวกัน ฝา่ ยสมั พันธมิตรพัฒนาเคร่ือง Colus-
sus ข้นึ เพ่อื ชว่ ยในการถอดรหัสชนิดนี้ โดยที่ Colossus เป็นคอมพวิ เตอร์อิเล็กทรอนิกสเ์ ตม็ ตัว และ
ยงั เป็นคอมพิวเตอรอ์ ิเล็กทรอนกิ สเ์ คร่อื งแรกท่สี ามารถโปรแกรมได้ แม้จะทำได้อยา่ งจำกัดกต็ าม ขอ้ มลู
ของ Colossus ถอื เปน็ ความลับทางการทหาร แผนการออกแบบและตัวเครอื่ ง Colossus สว่ นมาก
จงึ ถูกแยกชนิ้ ส่วนหรอื ทำลายหลังจากจบสงคราม Colossus ถูกสรา้ งขน้ึ ใหมภ่ ายหลงั สงครามสงบ (รปู
ที่ 1.14) ปจั จุบนั จัดแสดงอยทู่ ีพ่ พิ ธิ ภณั ฑ์การคอมพิวเตอรแ์ หง่ ชาติ ณ บกั กิงแฮมเชอร์ สหราชอาณาจกั ร

1.2.3 ENIAC

ENIAC (รปู ที่ 1.15) เปน็ ท่รี ู้จกั ในฐานะคอมพวิ เตอร์อิเล็กทรอนกิ สท์ ี่สามารถโปรแกรมได้โดยสมบรู ณ์
เครอ่ื งแรกของโลก ENIAC ถูกออกแบบมาเพ่ือคำนวณตารางสำหรับการยิงขีปนาวุธในช่วงสงครามโลก

12โดย MaltaGC [GFDL, CC-BY-SA-3.0 หรอื FAL], ผา่ น Wikimedia Commons

1.3. ประเภทของคอมพิวเตอร์ 11

รปู ท่ี 1.15: ENIAC13

คร้ังที่ 2 ส่วนอเิ ลก็ ทรอนิกส์ของ ENIAC เป็นหลอดสญู ญากาศ จงึ ทำใหท้ ำงานได้เรว็ กว่าคอมพิวเตอรร์ นุ่
ก่อนๆ ซง่ึ อาศยั เทคโนโลยีรีเลย์

ท้งั ENIAC และ Colossus เปน็ คอมพิวเตอร์อเิ ล็กทรอนกิ ส์ท่ีสามารถโปรแกรมได้ แต่ Colossus
นัน้ สามารถโปรแกรมได้จำกดั กว่า ENIAC

ลองคิด

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

1.3 ประเภทของคอมพวิ เตอร์

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

1. เครือ่ งบรกิ าร (server) เป็นการเรยี กคอมพวิ เตอรท์ ีท่ ำหนา้ ที่ให้บริการผูใ้ ช้ หรือคอมพิวเตอร์
อน่ื ๆ ที่เช่อื มตอ่ เขา้ มา การให้บริการเปน็ ได้หลากหลายรปู แบบ เชน่ เวบ็ ไซต์ แฟม้ ข้อมูล จดหมาย
อเิ ลก็ ทรอนิกส์ เครอ่ื งบริการหนึ่งเคร่ืองสามารถให้บรกิ ารไดม้ ากกวา่ หนึ่งบรกิ าร เครื่องบริการ

13โดย ชา่ งภาพกองทพั สหรฐั อเมรกิ า, Public Domain, https://commons.wikimedia.org/w/index.php?
curid=978770

12 บทท่ี 1. คอมพิวเตอร์ทำงานไดอ้ ยา่ งไร

รปู ท่ี 1.16: เครือ่ งบริการ14

รปู ท่ี 1.17: เมนเฟรม IBM Z915

สำหรบั บางงาน เชน่ เวบ็ ไซต์ธรรมดา ไม่จำเปน็ ต้องมปี ระสทิ ธิภาพการประมวลผลสูงนกั โดยทั่วไป
ใช้คำว่า “เครอื่ งบรกิ าร” ในสองความหมาย หน่ึงคอื เป็นเครือ่ งที่ใหบ้ ริการ ไม่ว่ารูปลกั ษณ์ของ
เคร่อื งน้ันจะเปน็ คอมพิวเตอรต์ ั้งโต๊ะ หรือรูปแบบอนื่ ก็ตาม อีกความหมายหนง่ึ ของเครอ่ื งบริการ
คือตัวฮาร์ดแวรท์ ี่ออกแบบมาเฉพาะเพอ่ื ใชเ้ ป็นเคร่ืองบรกิ าร เชน่ รปู ที่ 1.16
2. เมนเฟรม (mainframe) หมายถงึ เครื่องคอมพิวเตอร์ขนาดใหญ่ รองรับผ้ใู ชจ้ ำนวนมากได้พรอ้ ม
กัน มคี วามแมน่ ยำเชือ่ ถือไดส้ งู จึงถกู ใช้ในการประมวลผลธรุ กรรมในระบบธนาคารและธรุ กิจ
ขนาดใหญ่ เช่นเครอ่ื ง IBM Z9 (รปู ที่ 1.17) เราอาจมองวา่ เมนเฟรมเป็นเครื่องบริการขนาดใหญ่
ได้ เพราะเมนเฟรมมหี นา้ ที่บริการประมวลผลธรุ กรรมใหผ้ ้ใู ช้ แตข่ นาดของตัวเคร่ืองเมนเฟรมมัก
จะใหญ่กว่าเครื่องบริการโดยทั่วไปมาก
3. ซูเปอรค์ อมพิวเตอร์ (supercomputer) หมายถงึ คอมพวิ เตอรข์ นาดใหญ่ สมรรถนะการประมวล
ผลสงู มาก เช่น IBM Blue Gene/P (รูปท่ี 1.18) ท่ีสถาบันวิจยั แหง่ ชาติอาร์กอนน์ ซูเปอร์
คอมพวิ เตอรม์ ักถูกใช้ในการประมวลผลทางวิทยาศาสตร์และวิศวกรรมศาสตร์ เช่น การพยากรณ์
อากาศ การสรา้ งแบบจำลองทางวิทยาศาสตร์ ซูเปอร์คอมพวิ เตอรเ์ ปน็ เคร่อื งคอมพิวเตอร์ขนาด
ใหญเ่ ช่นเดยี วกับเมนเฟรม แต่จุดมุง่ หมายในการใช้งานต่างกัน เมนเฟรมตอ้ งการรองรบั การทำ
ธรุ กรรมจำนวนมาก จึงมีการติดตอ่ กับส่วนอ่านเขียนข้อมลู สูง รองรับผใู้ ช้จำนวนมาก แต่อาจไม่
จำเปน็ ตอ้ งมกี ารคำนวณมาก ในขณะท่ซี ูเปอร์คอมพิวเตอร์อาจไม่จำเป็นต้องอา่ นเขียนมากนกั แต่
ต้องคำนวณคา่ ได้รวดเร็ว
4. คอมพิวเตอร์ส่วนบคุ คล (Personal Computer – PC) เปน็ คอมพวิ เตอร์เพ่ือใช้งานท่วั ไป
เชน่ คอมพวิ เตอรต์ ้งั โตะ๊ และคอมพิวเตอร์วางตัก มขี นาดไมใ่ หญม่ าก ราคาไม่สงู เหมาะสำหรับ

14โดย Rodzilla ที่ en.wikipedia [GFDL, CC-BY-SA-3.0 หรอื CC-BY-2.5], จาก Wikimedia Commons
15โดย Ing. Richard Hilber (Self-photographed) [Public domain], ผ่าน Wikimedia Commons

1.4. องคป์ ระกอบและการทำงานของฮาร์ดแวร์คอมพิวเตอรใ์ นปจั จบุ ัน 13

รูปท่ี 1.18: ซเู ปอร์คอมพวิ เตอร์ IBM Blue Gene/P16

การใชง้ านคนเดยี ว คอมพิวเตอร์ส่วนบคุ คลแบ่งออกเปน็ สองรปู แบบ ได้แก่ แบบไม่เคล่ือนที่ เช่น
คอมพวิ เตอร์ตงั้ โตะ๊ เน็ตทอ็ ป เป็นต้น และแบบพกพาได้ มกั มีขนาดเลก็ น้ำหนักเบา มีแบตเตอรี
ในตัว เช่น คอมพิวเตอรว์ างตัก (laptop, notebook) แทบ็ เลต็ พีซี (tablet pc) เป็นตน้
5. คอมพวิ เตอร์ฝงั ตวั (embedded computer) เปน็ คอมพวิ เตอร์ขนาดเลก็ ที่ถกู ออกแบบมาเพอ่ื
ทำงานเฉพาะทาง และติดตง้ั อยู่ในอุปกรณ์อน่ื เช่น หนว่ ยควบคมุ เครอ่ื งยนต์ (Engine Control
Unit – ECU) ในรถยนต์ ระบบการทำงานในหมอ้ หุงข้าว ตเู้ ยน็ เป็นต้น

ลองคดิ

สมาร์ตโฟน นับเปน็ คอมพิวเตอรห์ รือไม่ หากเปน็ ควรจดั อยใู่ นหมวดใดข้างต้น หรือควรแยกเป็นหมวด
ใหม่เฉพาะ

1.4 องคป์ ระกอบและการทำงานของฮาร์ดแวร์คอมพวิ เตอรใ์ น
ปจั จบุ ัน

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

16โดย Argonne National Laboratory ท่ี Flickr [CC-BY-SA-2.0], ผ่าน Wikimedia Commons

14 บทที่ 1. คอมพิวเตอรท์ ำงานไดอ้ ย่างไร

รูปท่ี 1.19: แผงวงจรหลกั ของคอมพวิ เตอร์ตัง้ โตะ๊ ธรรมดา17

รปู ที่ 1.20: หน่วยประมวลผลกลางของอนิ เทล (ซ้ายและกลาง18) และแอปเปลิ (ขวา19)
ฮารด์ แวร์ของระบบคอมพิวเตอร์ไม่ว่าจะเป็นขนาดใหญห่ รือเลก็ มกั จะมแี ผงวงจรหลัก (mainboard,
motherboard) เช่นรปู ที่ 1.19 เป็นแกนหลกั แลว้ ประกอบอปุ กรณ์ส่วนตา่ งๆ หรือเช่อื มตอ่ อุปกรณ์
อน่ื ๆ กบั แผงวงจรหลัก อุปกรณท์ ี่สำคญั บนแผงวงจรหลกั ได้แก่ หนว่ ยประมวลผลกลาง และ หน่วยความ
จำหลกั เรียกอปุ กรณ์ทง้ั หมดทปี่ ระกอบเขา้ ดว้ ยกันวา่ หน่วยระบบ (system unit) และเรยี กอุปกรณ์
อน่ื ๆ ท่นี ำมาต่อผา่ นพอรต์ หรือชอ่ งทางการเช่อื มต่อวา่ อุปกรณ์ต่อพว่ งหรืออุปกรณ์รอบขา้ ง (periph-
eral device)

1.4.1 หนว่ ยประมวลผลกลาง (Central Processing Unit – CPU)

หนว่ ยประมวลผลกลาง (รปู ที่ 1.20) เป็นหัวใจในการทำงานของคอมพวิ เตอร์ มหี น้าทคี่ ิดคำนวณตาม
คำสัง่ และควบคมุ การทำงานประสานกันของหนว่ ยตา่ งๆ ในระบบคอมพวิ เตอร์ หน่วยประมวลผลกลางใน

17ดดั แปลงจาก Jonathan Zander [GFDL, CC-BY-SA-3.0 หรือ CC-BY-SA-2.5], ผา่ น Wikimedia Com-
mons

18โดย Eric Gaba [CC-BY-SA-3.0], ผ่าน Wikimedia Commons
19โดย Henriok - Own work, Public Domain, https://commons.wikimedia.org/w/index.php?
curid=22310746

1.4. องคป์ ระกอบและการทำงานของฮารด์ แวร์คอมพวิ เตอรใ์ นปจั จบุ ัน 15

ปัจจบุ ันใชเ้ ทคโนโลยวี งจรรวมขนาดใหญ่ ในชิปหนึง่ ตวั ประกอบดว้ ยทรานซสิ เตอรจ์ ำนวนมากซ่งึ ทำงาน
ร่วมกัน

หนว่ ยประมวลผลกลางประกอบด้วยหนว่ ยการทำงานสองหน่วยยอ่ ย ได้แก่

1. หน่วยควบคุม (Control Unit) มหี น้าทค่ี วบคมุ การทำงานประสานกนั ของหน่วยต่างๆ ในเครื่อง
2. หน่วยคำนวณและตรรกะ (Arithmetic Logic Unit - ALU) มีหนา้ ทคี่ ดิ คำนวณต่างๆ เช่น การ

บวก ลบ คณู หาร เปรยี บเทียบจำนวน มากกวา่ นอ้ ยกวา่ เท่ากบั ไม่เทา่ กบั เป็นต้น

สำหรับเคร่ืองคอมพวิ เตอร์อยา่ งงา่ ยอาจจะมหี น่วยประมวลผลกลางเพยี งหนว่ ยเดียว แต่ในปัจจบุ ัน
ที่การคำนวณต่างๆ ซบั ซ้อนมากขึ้นเร่ือยๆ ความต้องการในการประมวลผลมากขึ้น ในคอมพิวเตอร์
หนึ่งเครอื่ งอาจมีหนว่ ยประมวลผลกลางไดม้ ากกว่าหนง่ึ หน่วย ในแต่ละหนว่ ยอาจมแี กน (core) ในการ
ประมวลผลมากกวา่ หน่งึ แกน

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

• สถาปตั ยกรรม x86 ออกแบบโดย Intel ผลติ โดยผู้ผลติ เช่น Intel และ AMD ใช้กนั ท่วั ไปใน
คอมพวิ เตอร์ส่วนบุคคล

• สถาปตั ยกรรม ARM ออกแบบโดย ARM ผลติ และนำไปดดั แปลงก่อนผลิตโดยผู้ผลิตหลากหลาย
เช่น Samsung Qualcomm Apple มกั ใช้ในอุปกรณ์พกพา สมารต์ โฟน

สถาปตั ยกรรมทต่ี ่างกันนั้นมีวธิ กี ารทำงานที่ตา่ งกัน ซอฟตแ์ วร์ซ่งึ ทำงานบนเครอ่ื งซึง่ มีสถาปัตยกรรม
ท่ตี า่ งกนั นี้ก็จะตา่ งกนั ตามไปด้วย

สถาปัตยกรรมคอมพวิ เตอร์ในปัจจบุ ันส่วนใหญ่เปน็ สถาปตั ยกรรมฟอนนอยมันน์ (Von Neumann
architecture, รูปท่ี 1.21) ซ่งึ ใชห้ นว่ ยความจำหลกั เกบ็ ทัง้ ขอ้ มลู และคำสง่ั ที่ตอ้ งการให้คอมพวิ เตอร์
ประมวลผล

เครอ่ื ง 32 บติ และ 64 บิตคอื อะไร

สำหรบั คอมพวิ เตอร์ในปัจจบุ ัน การทำงานของหนว่ ยประมวลผลกลางคอื การอา่ นคำสัง่ รวมถึงค่าตา่ งๆ
ที่ถูกเก็บไวใ้ นหนว่ ยความจำหลัก แลว้ ทำงานตามคำสง่ั ไปเร่อื ยๆ การเขา้ ถงึ หน่วยความจำหลกั ทำได้
โดยการอา้ งอิงถงึ เลขทีอ่ ยู่ (address) ของข้อมูลนน้ั ๆ ในหนว่ ยความจำ เราจงึ สามารถจำแนกหน่วย
ประมวลผลกลางตามขนาดของเลขที่อยูข่ องหนว่ ยความจำหลกั ของเครอ่ื งน้ันๆ ไดด้ ้วย เชน่ เครื่อง
32 บิต หมายถงึ เคร่ืองนใี้ ช้เลขท่อี ยขู่ องหนว่ ยความจำหลักขนาด 32 บิต (มีพืน้ ทใ่ี นหนว่ ยความจำ
232 ตำแหน่ง) เป็นต้น หากเลขที่อยู่ของหน่วยความจำมขี นาดใหญข่ ้ึน แสดงวา่ หน่วยประมวลผลกลาง
สามารถเข้าถงึ หนว่ ยความจำหลกั โดยตรงได้มากข้ึน หากเปน็ การประมวลผลขอ้ มลู ขนาดใหญ่ เครื่อง
ท่ีเขา้ ถึงทีอ่ ย่จู ำนวนมากไดจ้ ะประมวลผลได้เร็วกว่าเครอ่ื งท่ใี ชท้ ี่อยู่ขนาดเล็กกว่า เนอ่ื งจากหากที่อย่มู ี

16 บทที่ 1. คอมพิวเตอร์ทำงานไดอ้ ยา่ งไร

Control Unit keyboard
Register
ALU RAM printer mouse ...

CPU I/O

System unit

รปู ที่ 1.21: สถาปตั ยกรรมฟอนนอยมันน์

ขนาดเลก็ แล้วจะจำเปน็ ตอ้ งมีการเกบ็ โปรแกรมหรือขอ้ มูลบางส่วนในหนว่ ยความจำภายนอก การเข้าถงึ ก็
จะทำได้ชา้ ลง

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

การวัดความเร็วของคอมพวิ เตอร์

ผู้ใช้มักบอกวา่ คอมพิวเตอรท์ ำงานได้ “เรว็ ” โดยวดั จากความเร็วในการตอบสนองต่อคำส่งั ตา่ งๆ ท่ผี ู้
ใชส้ ั่ง คอมพวิ เตอร์อิเลก็ ทรอนกิ สน์ ้นั ทำงานตามสัญญาณนาฬกิ าของหน่วยประมวลผลกลาง โดยในหน่งึ
รอบของสัญญาณนาฬกิ าอาจจะทำได้หน่งึ คำส่ัง หรอื มากนอ้ ยกว่านนั้ กไ็ ดต้ ามแตก่ ารออกแบบ การวดั
ความเรว็ ในการทำงานของคอมพวิ เตอร์อยา่ งครา่ วๆ อาจเทียบได้จากความเรว็ ของสัญญาณนาฬิกา เช่น
หนว่ ยประมวลผลกลางมีความความถส่ี ญั ญาณนาฬกิ า 2.8GHz หมายถงึ ทำงานได้ 2.8 พันลา้ นรอบ
ต่อวินาที กน็ ่าจะทำงานไดเ้ ร็วกวา่ หน่วยประมวลผลกลางซึ่งมคี วามถ่ีสญั ญาณนาฬิกาน้อยกวา่ นี้ อย่างไร
ก็ตาม จำนวนคำสงั่ ที่หนว่ ยประมวลผลกลางทำงานไดใ้ นหนงึ่ รอบของสัญญาณนาฬกิ าน้ันอาจตา่ งกนั ไป
ตามการออกแบบ ในทางทฤษฎี การวดั ความเรว็ ในการทำงานของคอมพวิ เตอร์จงึ วดั จากจำนวนคำสงั่ ท่ี
หน่วยประมวลผลกลางทำงานในหน่งึ หน่วยเวลา หนว่ ยการวัดสมรรถนะนเ้ี รยี กว่า MIPS (Million In-
structions Per Second) คอื การนบั จำนวนคำสัง่ ท่หี น่วยประมวลผลกลางสามารถทำงานไดใ้ นหน่ึง

1.4. องคป์ ระกอบและการทำงานของฮาร์ดแวรค์ อมพวิ เตอร์ในปจั จุบัน 17

รปู ท่ี 1.22: ลำดบั ชัน้ ของหนว่ ยความจำภายในหน่วยระบบ

วินาที ไมว่ า่ จะเป็นคำสั่งการคำนวณ หรือคำสง่ั อา่ นเขียนข้อมูล
ในคอมพวิ เตอร์ขนาดใหญ่ท่มี ีการประมวลผลสูงมากนั้น งานส่วนใหญ่จะเป็นการคำนวณเลขทศนิยม

การเปรยี บเทยี บสมรรถนะการคำนวณของคอมพิวเตอร์ขนาดใหญ่จงึ มักจะนับเปน็ จำนวนคำสง่ั คำนวณ
เลขทศนยิ มท่ที ำได้ในหน่งึ วนิ าที เรยี กว่า FLOPS (Floating-point Operations Per Second)
แทน

หน่วยประมวลผลกลางของคอมพิวเตอร์ส่วนบคุ คลทั่วไปในปัจจุบนั (พ.ศ. 2558) สามารถทำคำสง่ั
ทศนยิ มได้ 4 คำส่งั ใน 1 รอบสัญญาณนาฬิกา หากมแี กนประมวลผล 1 แกน และความถส่ี ัญญาณนาฬิกา
2.5GHz คอมพวิ เตอร์เครื่องน้จี ะมีประสทิ ธภิ าพในทางทฤษฎี 4 × 2.5 × 109=10 GFLOPS เป็นตน้

ซูเปอร์คอมพวิ เตอรท์ ีม่ ีความเรว็ สูงในปัจจบุ ัน (มิถุนายน 2559) คอื เครื่อง Sunway TaihuLight
ของประเทศจนี ประกอบดว้ ยแกนประมวลผลกวา่ สบิ ลา้ นแกน ทำความเรว็ สงู สดุ ได้ถงึ 93.01 × 1015
FLOPS (93.01 PFLOPS)20

1.4.2 หน่วยความจำภายใน (Internal memory)

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

หน่วยความจำที่เขา้ ถงึ ได้โดยตรงจากหนว่ ยประมวลผลกลางเรยี กว่า หน่วยความจำปฐมภมู ิ หรอื
หนว่ ยความจำภายใน แบง่ ไดเ้ ป็นสองประเภท คอื

1. หน่วยความจำที่อยภู่ ายในหนว่ ยประมวลผลกลาง ไดแ้ ก่ รีจสิ เตอร์ (register) และ แคช (CPU
cache)

2. หน่วยความจำหลกั เปน็ หน่วยความจำท่ีอยู่นอกหนว่ ยประมวลผลกลาง ไดแ้ ก่ แรม (RAM)

20https://www.top500.org/lists/2016/06/

18 บทท่ี 1. คอมพิวเตอรท์ ำงานได้อยา่ งไร

หน่วยความจำทไ่ี ม่สามารถเข้าถงึ ได้โดยตรงจากหนว่ ยประมวลผลกลาง แตย่ ังอยใู่ นหนว่ ยระบบของ

คอมพิวเตอร์ เรียกวา่ หนว่ ยความจำทตุ ยิ ภูมิ นอกจากน้ยี ังมหี นว่ ยความจำสำรองท่ีไมไ่ ด้อยใู่ นหน่วย

ระบบอกี ดว้ ย

ในตอนนี้จะกล่าวถงึ เฉพาะหนว่ ยความจำภายใน การทำงานกบั หน่วยความจำของคอมพวิ เตอร์ทำ

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

เขยี นได้เรว็ ทีส่ ุด แคชมคี วามจมุ ากกวา่ รจี ิสเตอร์ แตก่ ารอา่ นเขียนทำไดช้ า้ กวา่ คอมพิวเตอร์สมยั ใหมอ่ าจ

จะมแี คชได้หลายระดบั เชน่ แคช L1 แคช L2 เป็นต้น โดยท่แี คช L1 (ระดบั 1) จะเขา้ ถงึ ได้เร็วกว่าแคช

ในระดบั ตำ่ กวา่ แรมมีความจมุ ากท่ีสุดในหน่วยความจำสามรูปแบบน้ี แตก่ เ็ ขา้ ถงึ ไดช้ ้าทสี่ ุดเชน่ กัน หาก

ตอ้ งการทำงานให้เรว็ ก็ควรใชร้ จี ิสเตอรใ์ หม้ ากท่สี ดุ แต่หากมีขอ้ มลู มากเกินกว่าจะเกบ็ ได้หมดในรีจสิ

เตอร์ กจ็ ำเป็นตอ้ งใชห้ นว่ ยความจำในลำดบั รองๆ ลงมาเพ่ิมเตมิ การทำงานที่รวดเรว็ ของคอมพิวเตอร์

จงึ ข้ึนอยูก่ ับการใชห้ น่วยความจำทกุ ระดบั ร่วมกันใหไ้ ด้ประสทิ ธิภาพสงู ท่สี ุด

เทคโนโลยีในการผลิตรจี สิ เตอร์ แคช และ แรมน้นั ตา่ งกัน จึงสง่ ผล

ใหม้ ีความจุและความเรว็ ในการเขา้ ถงึ ต่างกัน หน่วยความจำท้งั สามรูป

แบบนเ้ี ปน็ หนว่ ยความจำแบบลบเลอื นได้ (Volatile memory) ซึ่ง

จำเปน็ ตอ้ งมกี ระแสไฟเลี้ยงตลอดเวลาท่เี กบ็ ข้อมลู เมื่อตัดกระแสไฟ

เช่น ปิดเคร่อื ง ข้อมูลทงั้ หมดในหนว่ ยความจำเหลา่ นี้จะหายไป

แรม (Random Access Memory – RAM) หมายถงึ หนว่ ย

รปู ท่ี 1.23: RAM21 ความจำเขา้ ถึงแบบสมุ่ แรมแบง่ ออกเปน็ 2 ชนดิ ตามเทคโนโลยที ี่ใชใ้ น

การผลิตคอื SRAM (Static RAM) และ DRAM (Dynamic RAM) แรมทใี่ ช้ในคอมพิวเตอรส์ ่วน

บคุ คลทวั่ ไปในปจั จบุ ันคอื DDR SDRAM (Double Data Rate Synchronous DRAM) ซึง่ เปน็

DRAM ชนดิ หน่ึง หนว่ ยวดั ความเร็วในการเขา้ ถงึ แรมมกั จะวดั เป็นจำนวนครั้งการถา่ ยโอนขอ้ มลู ในหนงึ่

หน่วยเวลา เชน่ DDR3-800E เปน็ DDR แรมรุน่ ที่ 3 มีอัตราการถา่ ยโอนขอ้ มลู 800 ลา้ นครั้งในหนึง่

วินาที เป็นตน้

1.4.3 หน่วยความจำภายนอก (External memory)

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

• หน่วยเกบ็ แบบจานแม่เหล็ก เช่น ฮารด์ ดสิ ก์ (Hard Disk Drive - HDD, รูปท่ี 1.24 (ซ้าย))
อาศัยทศิ ทางขัว้ แม่เหลก็ ในการเกบ็ ข้อมลู ในการอ่านขอ้ มลู จะมหี ัวอ่านขยบั เล่อื นไป ณ ตำแหนง่ ที่

21Public Domain, https://commons.wikimedia.org/w/index.php?curid=647267

1.4. องค์ประกอบและการทำงานของฮารด์ แวร์คอมพวิ เตอรใ์ นปัจจบุ นั 19

รปู ท่ี 1.24: HDD (ซ้าย) และ SSD รูปที่ 1.25: แผ่นซีดี23 รูปท่ี 1.26: ยูเอสบแี ฟลช
(ขวา) 22 ไดรฟ์24

เกบ็ ข้อมูลและอ่านขวั้ แม่เหล็กท่ีเกบ็ ไว้ ณ ตำแหนง่ นั้น หัวอ่านเปน็ จุดเปราะบางของฮารด์ ดสิ ก์ หาก
ถูกกระแทกอาจเสยี หายได้งา่ ย
• จานแสง (optical disc) เช่น แผ่นซดี ี รปู ท่ี 1.25 แผ่นดวี ดี ี แผ่นบลูเรย์ อาศยั หลักการสะท้อนแสง
ในการเกบ็ ข้อมลู การบันทกึ ข้อมลู ลงไปในแผ่นคือการปรับการสะทอ้ นแสงของพนื้ ผิว ณ บรเิ วณ
นั้น เพือ่ ใหแ้ ทนคา่ บิตทีต่ ้องการ
• รอม (Read Only Memory – ROM) มกั มลี ักษณะเปน็ ชิปทถี่ กู บดั กรตี ิดกบั แผงวงจร
เป็นหน่วยความจำซ่ึงไม่สามารถแก้ไขคา่ ทเี่ ก็บไวไ้ ด้ หรอื ในบางกรณีอาจทำได้แต่ไมง่ ่ายนัก รอม
จงึ มักใชเ้ ปน็ ทีเ่ กบ็ คำสัง่ ที่ใช้ในการเริ่มต้นทำงานเม่ือเปิดเครือ่ ง เป็นท่เี กบ็ เฟริ ม์ แวรซ์ ่ึงเปน็ คำสั่งใน
การจดั การฮาร์ดแวร์ของอปุ กรณน์ ้นั ๆ เปน็ ตน้ รอมในยุคแรกนัน้ ตอ้ งกำหนดคา่ ข้อมูลในรอมขณะ
ผลติ และแกไ้ ขคา่ ไม่ได้ ซง่ึ ไม่สะดวกในการใช้งาน จึงมีการพัฒนาให้ผู้ใช้สามารถบรรจุขอ้ มลู ลงใน
รอมไดค้ ร้งั เดียว เรยี กว่า (Programmable ROM – PROM) จากน้ันพัฒนาตอ่ ให้สามารถ
ลบคา่ ที่เกบ็ ไว้ไดโ้ ดยใชอ้ ปุ กรณ์พเิ ศษ เพอ่ื อำนวยความสะดวกในการแกไ้ ขค่าโดยผ้ใู ช้ (Erasable
PROM - EPROM) และทำใหล้ บค่าท่เี กบ็ ไว้ไดโ้ ดยใช้สญั ญาณไฟฟา้ (Electrically Erasable
PROM – EEPROM) ตามลำดบั สำหรับ EEPROM ถึงแมเ้ ราจะแก้ไขคา่ ได้หลายครัง้ เรายังคง
เรยี ก EEPROM วา่ เปน็ หนว่ ยความจำแบบไมส่ ามารถแก้ไขค่าได้ เน่อื งจากวิธกี ารแกไ้ ขค่าน้นั ค่อน
ข้างซับซ้อน
• หน่วยความจำแบบแฟลช (Flash memory) เป็นหนว่ ยความจำท่ีลบและบนั ทกึ ใหม่ไดเ้ ช่นเดียว
กับ EEPROM แตใ่ ชเ้ ทคโนโลยีท่ตี ่างออกไป รูปแบบของหน่วยความจำแบบแฟลช เชน่

– ยเู อสบีแฟลชไดรฟ์ (USB flash drive) ดงั รูปท่ี 1.26 ซงึ่ มาทดแทนฟล็อปป้ดี สิ ก์ (floppy
disk) ท่ีเป็นหน่วยเกบ็ ขอ้ มูลแบบจานแมเ่ หล็ก เพราะมีความจสุ ูงกว่า และอา่ นเขียนได้เร็ว
กว่า

– เอสดีการด์ (SD card) ใช้มากในการเก็บข้อมลู สำหรบั อุปกรณพ์ กพา กล้องดิจทิ ัล
– โซลิดสเตตไดรฟ์ (Solid State Drive – SSD) เปน็ ดิสก์แบบแฟลช ใช้เปน็ ดิสก์

ทดแทนฮารด์ ดสิ กแ์ บบจานแม่เหล็ก จุดเดน่ ของดิสกแ์ บบแฟลชทเ่ี หนือกวา่ ดสิ ก์แบบจานแม่

23โดย husin.sani [CC-BY-SA-2.0], ผ่าน Flickr
24โดย Ubern00b [GFDL หรือ CC-BY-SA-3.0], ผ่าน Wikimedia Commons
25โดย Ravenperch - camera photograph, CC0, https://commons.wikimedia.org/w/index.php?
curid=19319839

20 บทท่ี 1. คอมพิวเตอร์ทำงานได้อย่างไร

เหล็กคือ การอา่ นข้อมลู ทำได้เร็วกว่ามาก เพราะไมม่ ีสว่ นเชงิ กลแบบหัวอา่ นของฮารด์ ดิสก์
(รูปที่ 1.24) นอกจากน้ยี งั สะดวกแกก่ ารพกพา เน่ืองจากไมม่ สี ่วนเปราะบางแบบหัวอ่าน
ของฮารด์ ดสิ ก์ญฯ แต่ข้อเสยี คือยงั ทำความจขุ ้อมลู ไดไ้ ม่มากเทา่ ดสิ กแ์ บบจานแมเ่ หลก็ และมี
ราคาสงู

1.4.4 ส่วนรบั เข้า/สว่ นส่งออก (Input/Output Unit - I/O Unit)

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

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

ลองคิด

หากไม่มีหน่วยความจำภายนอก มีเฉพาะหนว่ ยประมวลผลกลาง หนว่ ยความจำภายใน และสว่ นรับเข้า/
สว่ นส่งออก คอมพวิ เตอร์จะสามารถทำงานไดห้ รือไม่ จงให้เหตผุ ลประกอบ

1.5 ประเภทและการทำงานของซอฟตแ์ วร์

เนื่องจากความต้องการใหค้ อมพวิ เตอรท์ ำงานนน้ั ซับซ้อนขึน้ เร่ือยๆ การปรับแต่งฮารด์ แวรเ์ ฉพาะสำหรบั
การทำงานแตล่ ะอยา่ งน้นั สนิ้ เปลืองมาก เมอื่ มกี ารออกแบบคอมพิวเตอร์ให้สามารถโปรแกรมไดแ้ ลว้ การ
พฒั นาคอมพวิ เตอร์ให้ทำงานได้ตามความตอ้ งการก็เปลี่ยนไปจากการออกแบบฮารด์ แวรใ์ หม่ ไปเน้นท่ี
การเขยี นชดุ คำส่ังให้คอมพิวเตอรท์ ำงานตามที่ตอ้ งการแทน

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

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

ตวั อยา่ งของซอฟตแ์ วร์ท่ีน่าสนใจมดี งั น้ี

1.5. ประเภทและการทำงานของซอฟต์แวร์ 21

1.5.1 ไบออส

เมอื่ เปิดเครื่องหรอื กดสวิตชร์ เี ซ็ต เรยี กวา่ การทำโคลด์บ๊ตู (cold boot) ซอฟต์แวร์ตัวแรกทีเ่ รมิ่ ทำงานคอื

ไบออส (BIOS) ซึ่งจะเรมิ่ จากการทดสอบหนว่ ยความจำ ส่วนต่อประสาน อปุ กรณ์ตา่ งๆ ของเครอื่ งเมอ่ื

เปดิ เคร่ืองใหม่ เรียกว่า POST (Power-On-Self-Test – POST)

หลังจากทดสอบอุปกรณ์ต่างๆ เรยี บร้อย

ไบออสจะหาอปุ กรณ์ทตี่ ดิ ต้ังระบบปฏิบัติการ แลว้

สง่ั ให้เคร่ืองถา่ ยข้อมลู จากระบบปฏิบตั ิการเขา้ ไป

ในหน่วยความจำ จากนนั้ คอมพิวเตอร์จะเริม่

ทำงานจากระบบปฏบิ ตั ิการ ค่าต่างๆ ของไบออส

ถูกเกบ็ อยใู่ นหน่วยความจำแบบไมล่ บเลือนบน

แผงวงจรหลกั อุปกรณท์ ี่มกั ใช้เก็บไบออสในสมยั

ก่อนนัน้ ใช้เทคโนโลยี CMOS จงึ มกั มีการเรียก

หน่วยความจำท่ใี ชเ้ ก็บไบออสน้วี า่ CMOS ไป

ด้วย รูปท่ี 1.27: ชปิ ไบออส26
สำหรับการส่งั เร่มิ ตน้ ทำงานใหม่ (restart)

ภายในระบบปฏบิ ัติการ เรยี กว่าการทำวอรม์ บู๊ต (warm boot) เมอ่ื เคร่ืองเริม่ ต้นทำงานใหม่ ไบออส

จะไมม่ กี ารทำ POST อกี ซ่งึ จะประหยดั เวลาในการเรม่ิ ตน้ ทำงานใหมจ่ ากการทำโคลดบ์ ๊ตู ลงไปได้พอ

สมควร

1.5.2 ระบบปฏบิ ัติการ

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

• จาก Microsoft มที ้งั รนุ่ สำหรับเครอ่ื งบรกิ าร เครื่องคอมพิวเตอรส์ ่วนบคุ คล และ
อุปกรณ์พกพา

• สำหรับเคร่อื งคอมพิวเตอรส์ ว่ นบุคคลและ สำหรับอุปกรณ์พกพาของ Apple

• ลนิ ุกซ์ (Linux) มีหลากหลายดสิ โทร เชน่ , , ,

• เปน็ ระบบปฏิบตั ิการสำหรับอปุ กรณ์พกพาของ Google ซึง่ มีฐานมาจาก Linux

หน้าท่ีหลกั ของระบบปฏบิ ตั ิกาารคอื การจัดสรรทรัพยากรสำหรบั โปรแกรม หน้าทเ่ี สรมิ อื่นๆ ของระบบ
ปฏิบตั ิการ เช่น การจดั การการเช่ือมต่อเครือขา่ ย การรักษาความปลอดภัย การอำนวยความสะดวกใน
การต่อประสานผู้ใช้ เปน็ ตน้

26โดย Tremaster [CC-BY-SA-3.0], ผา่ น Wikimedia Commons

22 บทที่ 1. คอมพิวเตอรท์ ำงานได้อย่างไร

รปู ที่ 1.28: การจดั สรรทรัพยากรและจัดลำดบั การทำงานโดย Ubuntu

การจัดสรรทรัพยากรสำหรบั โปรแกรม
ทรัพยากรทสี่ ำคญั ในการประมวลผลของคอมพิวเตอร์คอื หนว่ ยประมวลผลกลาง และหน่วยความจำ
ระบบปฏิบัติการบางรปู แบบอาจยอมให้โปรแกรมหลายๆ โปรแกรมทำงานพรอ้ มกนั ได้ (multitasking)
เชน่ การเปดิ เพลงฟงั ในขณะท่พี ิมพ์งานด้วยโปรแกรมประมวลคำ ระบบปฏบิ ัตกิ ารจะแบง่ สว่ นการใชง้ าน
หน่วยประมวลผลกลางและหน่วยความจำใหโ้ ปรแกรมตา่ งๆ ที่กำลงั ทำงานอยู่ โปรแกรมทก่ี ำลังตอบ
สนองตอ่ ผใู้ ชจ้ ะเรยี กวา่ โปรแกรมแอค็ ทฟี (active program) หรือโปรแกรมพ้ืนหน้า (foreground
process) ในขณะทโี่ ปรแกรมซึ่งกำลงั ทำงานแตไ่ ม่ได้ตอบสนองโดยตรงต่อผใู้ ช้ เช่นโปรแกรมเล่นเพลง
ในตวั อย่างขา้ งตน้ เรยี กวา่ โปรแกรมพื้นหลงั (background process) นอกจากนี้ การจัดลำดบั ความ
สำคัญของงานที่ตอ้ งทำเพือ่ ใหโ้ ปรแกรมตา่ งๆ ทำงานได้ลลุ ่วง กเ็ ปน็ หน้าทขี่ องระบบปฏิบัติการเช่นกัน

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

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

1.5. ประเภทและการทำงานของซอฟต์แวร์ 23

ชา้ กวา่ หน่วยความจำภายในมาก และการสับคา่ กต็ ้องใช้เวลา หากจำเปน็ ตอ้ งใชห้ นว่ ยความจำเสมอื น
คอมพิวเตอร์จะทำงานได้ชา้ ลงอย่างเหน็ ได้ชัด

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

การเชอ่ื มตอ่ กับระบบเครอื ข่าย

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

ดแู ลรกั ษาความปลอดภยั

เนือ่ งจากระบบปฏิบัติการเป็นซอฟต์แวร์ทีบ่ รหิ ารจดั การทรัพยากรต่างๆ ของเครื่องโดยตรง ระบบปฏิบตั ิ
การจึงอาจมคี วามสามารถในการอนญุ าต (authorize) การเข้าถงึ ทรพั ยากรต่างๆ เพื่อรักษาความ
ปลอดภยั โดยรวมของระบบอีกดว้ ย การจัดการน้มี ักจะผูกกบั การตรวจสอบและยนื ยนั ตวั ตนของผ้ใู ชง้ าน
(identification and authentication) ว่ามีสทิ ธิ (privilege) ในการเขา้ ถงึ ทรพั ยากรหรือไม่

สนับสนนุ สว่ นต่อประสานผู้ใช้

สว่ นตอ่ ประสานผใู้ ชท้ ำหน้าทร่ี ับคำส่ังต่างๆ จากผูใ้ ช้มาส่งใหส้ ว่ นประมวลผล และแสดงผลลพั ธ์คนื ให้ผู้ใช้
สว่ นต่อประสานผใู้ ชแ้ บง่ ไดเ้ ป็น 2 รูปแบบ ไดแ้ ก่

1. ส่วนต่อประสานแบบกราฟกิ (Graphic User Interface – GUI) ผู้ใชส้ ั่งการผ่านภาพปุม่ ต่างๆ
ข้อดีคอื ใช้งานได้งา่ ย เหมาะสำหรับผใู้ ชท้ ว่ั ไป แตค่ อมพิวเตอรต์ ้องแบ่งทรัพยากรมาใช้ในการสรา้ ง
รูปภาพตา่ งๆ ดว้ ย แทนทจ่ี ะใชเ้ พื่อการคำนวณคา่ เพียงอย่างเดยี ว

2. สว่ นตอ่ ประสานแบบคำสั่ง (Command Line Interface – CLI) ดังตวั อย่างในรปู ท่ี 1.29 ผใู้ ชส้ ั่ง
การผา่ นแป้นพมิ พ์ ขอ้ ดีคอื สง่ั การไดร้ วดเร็ว ปรบั แต่งไดล้ ะเอียด แต่คำส่งั มกั มรี ายละเอียดเฉพาะ
ตวั ทำให้ตอ้ งใชเ้ วลาในการเรม่ิ ต้นเรียนรูม้ าก

24 บทท่ี 1. คอมพิวเตอร์ทำงานไดอ้ ย่างไร

รปู ที่ 1.29: สว่ นตอ่ ประสานแบบคำสัง่

รปู ที่ 1.30: ตัวอยา่ งรุ่นของโปรแกรมขับอุปกรณ์

1.5.3 โปรแกรมขับอปุ กรณ์ (Device driver)

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

1.6. การโปรแกรมคอมพวิ เตอร์เบื้องตน้ 25

1.5.4 ซอฟต์แวร์ทวั่ ไปหรอื โปรแกรมประยุกต์

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

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

ลองคิด

Macbook เครื่องหนึ่งลงระบบปฏบิ ตั ิการ Windows และ OS X ไว้ ในระบบปฏบิ ัตกิ ารทั้งสองมี
Steam ซึ่งเป็นแพลตฟอรม์ สำหรับเล่นเกมอยู่ นิสิตซื้อเกม CIV ซึ่งเล่นได้ใน Windows แบบไม่มีปญั หา
แตเ่ ม่อื เปิดเกมเดยี วกันใน OS X แลว้ กลบั พบปญั หาเกมปดิ ตัวเองอตั โนมตั ิ ภาพกระตุกไมล่ น่ื ไหล และ
อื่นๆ อกี หลายประการ นสิ ติ คดิ วา่ สาเหตขุ องปญั หาเกิดจากอะไร

1.6 การโปรแกรมคอมพิวเตอร์เบื้องต้น

1.6.1 ภาษาโปรแกรม

การควบคมุ คอมพวิ เตอร์ในยคุ แรกทำกบั หนว่ ยประมวลผลกลางโดยตรง ยคุ เรม่ิ ต้นน้นั การปอ้ นคำสัง่ ทำ
โดยภาษาเครอ่ื งเปน็ รหัสเลขฐานสอง ซง่ึ มีโอกาสผดิ พลาดได้งา่ ย รวมถงึ การแกไ้ ขปรับปรุงโปรแกรมก็
ทำไดย้ าก จงึ มกี ารใชค้ ำสัง่ ภาษาแอสเซมบลี (assembly) ซ่ึงเป็นการแทนคำสัง่ ภาษาเคร่อื งตา่ งๆ ด้วย
ตัวอกั ษรภาษาองั กฤษทส่ี ่ือความหมาย ทำใหก้ ารส่ังการง่ายขึน้ รปู ท่ี 1.31 แสดงคำสง่ั ภาษาเครอื่ งของ
เคร่อื ง MIPS32 ในรปู ของเลขฐานสิบหกในกรอบสีแดงทางซา้ ย และคำสง่ั ภาษาแอสเซมบลที ่ีเทียบเทา่
กนั ทางขวา ในการทำงานจรงิ นั้น เครือ่ งจำเปน็ ตอ้ งแปลงคำสง่ั แอสเซมบลใี หก้ ลับไปเป็นเลขฐานสองเพอื่
ทำงานอกี คร้งั อยูด่ ี โปรแกรมแปลงคำสง่ั น้ีเรยี กว่า แอสเซมเบลอร์ (assembler)

ภาษาแอสเซมบลนี ัน้ ไม่เหมาะสำหรบั การเขยี นซอฟต์แวร์ขนาดใหญ่ เนื่องจากมคี ำส่งั นอ้ ย จำเปน็ ต้อง
ใช้หลายคำส่ังในการทำงานอย่างหนงึ่ จึงเกิดภาษาระดับสงู ขึน้ โดยคำสง่ั ต่างๆ จะอยใู่ นรปู แบบคล้ายคลึง
ภาษาองั กฤษ มีชุดคำสงั่ ต่างๆ เตรยี มไวใ้ ห้ เพอื่ ให้สะดวกในการพัฒนาและแก้ไขปรับปรุงโปรแกรม ชุด
ของคำสั่งทเี่ ขยี นเรยี กว่า รหัสตน้ ฉบบั (source code) เมื่อเขียนเสร็จและต้องการนำไปใชง้ าน ก็

26 บทที่ 1. คอมพวิ เตอร์ทำงานได้อย่างไร

รูปท่ี 1.31: ภาษาเครอื่ งและภาษาแอสเซมบลี

ต้องแปลงรหสั ต้นฉบบั เหลา่ นีไ้ ปเป็นภาษาเครอื่ งทเี่ ครือ่ งร้จู กั การแปลรหสั ต้นฉบบั อาศยั ซอฟตแ์ วรร์ ะบบ
ทีเ่ รยี กวา่ ซอฟตแ์ วรแ์ ปลภาษา ซ่ึงกน็ ับเป็นเป็นซอฟตแ์ วรร์ ะบบด้วย

ภาษาโปรแกรมแบง่ ออกเปน็ สองระดบั ได้แก่

1. ภาษาระดับตำ่ เปน็ ภาษาทีต่ ิดต่อกับเครื่องไดโ้ ดยตรงหรือใกลเ้ คยี ง ได้แก่ ภาษาเคร่อื ง และภาษา
แอสเซมบลี

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

ภาษาโปรแกรมทน่ี ่าสนใจ
1. ภาษาซีและภาษาซพี ลัสพลสั (C และ C++)
ภาษาซีเปน็ ภาษาโปรแกรมระดับสูง พัฒนามาต้งั แตป่ ี 1967 โดยเดนนสิ ริทช่ี (Dennis Ritchie)
มีลักษณะเป็นภาษาโปรแกรมเชิงโครงสร้าง ใชก้ นั ทว่ั ไปต้ังแตก่ ารเขียนซอฟตแ์ วร์ระบบไปจนถึง
การเขียนโปรแกรมประยกุ ต์ คอมไพเลอร์สำหรับภาษาซมี ีในแทบทกุ สถาปตั ยกรรมและระบบ
ปฏบิ ตั ิการ ภาษาซีมีคำสัง่ ตา่ งๆ ทใ่ี ชใ้ นการจดั การทรพั ยากรตา่ งๆ ของเคร่ืองโดยตรง จึงมักจะใช้
ในการเขียนซอฟต์แวรร์ ะบบและซอฟต์แวร์ท่ตี อ้ งการปรบั แต่งการใช้ทรพั ยากรต่างๆ ของเครอื่ ง
เอง
ภาษาซพี ลสั พลัสพัฒนาตอ่ จากภาษาซี โดยออกแบบให้เป็นภาษาโปรแกรมเชิงวตั ถุ เพอ่ื ให้สะดวก
ตอ่ การพฒั นาซอฟตแ์ วรม์ ากข้นึ และยังคงมีประสิทธิภาพในการจัดการทรัพยากรของเคร่ืองไดส้ ูง
เช่นเดียวกบั ภาษาซี การใช้ภาษาซพี ลสั พลัสพบมากในงานการประมวลผลภาพ และงานอื่นๆ ท่ี
ตอ้ งการประสิทธิภาพในการคำนวณสงู
2. ภาษาจาวา (Java)

1.6. การโปรแกรมคอมพวิ เตอรเ์ บือ้ งตน้ 27

ภาษาจาวาพัฒนาโดยซันไมโครซสิ เตม็ ส์ (Sun Microsystems) ปจั จบุ นั อยู่ในความดูแลของ
ออราเคิล (Oracle) เปน็ ภาษาโปรแกรมเชิงวัตถุ ซง่ึ เหมาะกบั การออกแบบซอฟต์แวรข์ นาดใหญ่
ปรบั ปรุงแกไ้ ขเพ่มิ เติมไดส้ ะดวก จดุ เดน่ ของภาษาจาวาคอื เม่อื คอมไพล์แลว้ จะไดไ้ บตโ์ ค้ด (byte-
code) แทนทจี่ ะเปน็ คำสัง่ ภาษาเครื่อง ในการทำงาน จะมีซอฟต์แวรส์ ำหรับทำงาน (runtime
environment) ซ่ึงจะแปลไบต์โคด้ เปน็ ภาษาเครื่องซ่ึงจำเพาะกบั แตล่ ะเครือ่ งอีกทหี น่ึง จะเห็น
วา่ โปรแกรมซึง่ เขยี นโดยภาษาจาวา เมอ่ื คอมไพล์แล้วจะไดไ้ บตโ์ ค้ด ซึง่ สามารถนำไปใช้งานใน
เคร่ืองอ่ืนไดโ้ ดยไมต่ อ้ งคอมไพล์ใหม่ โดยไม่จำกดั ทง้ั สถาปตั ยกรรมและระบบปฏิบัติการ ถ้าหากมี
ซอฟต์แวร์สำหรบั ทำงานติดต้ังอยู่
3. ดอ็ ตเน็ตเฟรมเวิร์ก (.NET)
ออกแบบโดยไมโครซอฟตเ์ พอื่ การทำงานบนเคร่ืองหลากหลายระบบปฏบิ ตั ิการ ดอ็ ตเนต็ เฟรม
เวิร์กเปน็ แพลต็ ฟอร์มสำหรับพฒั นาซอฟตแ์ วร์ซ่ึงสนับสนุนภาษาโปรแกรมจำนวนมาก ตวั อยา่ ง
ภาษาดอ็ ตเนต็ ทอ่ี อกแบบโดยไมโครซอฟต์ เชน่ VB.NET C# เป็นต้น ผเู้ ขยี นซอฟต์แวรส์ ามารถ
เขียนรหัสต้นฉบับด้วยภาษาใดกไ็ ด้ทเี่ ฟรมเวิร์กสนับสนนุ คอมไพเลอรจ์ ะแปลรหสั ตน้ ฉบับเปน็
ภาษากลาง (Common Intermediate Language - CIL) แล้วจะมีซอฟตแ์ วร์สำหรับทำงาน
ซง่ึ แปลภาษานไ้ี ปเป็นคำสัง่ สำหรบั เครอื่ งในการทำงานอกี คร้งั ดังนัน้ ด็อตเน็ตเฟรมเวริ ก์ จะเหมอื น
กบั จาวาในแง่ทสี่ ามารถคอมไพล์รหัสตน้ ฉบับแล้วนำไปใชท้ ี่อืน่ ได้โดยไมต่ อ้ งคอมไพลซ์ ำ้ แตม่ ขี ้อดี
กว่าที่ใช้ภาษาใดกไ็ ดท้ ีผ่ ู้เขียนถนัดในการเขียน
4. ภาษาไพธอน (Python) ภาษาไพธอนเป็นภาษาสครปิ ต์ ซงึ่ การทำงานจะอาศยั อินเทอร์พรีเตอร์
ในการแปล ใชไ้ ด้ทงั้ การเขยี นโปรแกรมเชงิ โครงสร้างและเชิงวัตถุ จุดเด่นของไพธอนคอื มีชุดคำสั่ง
สำหรับงานตา่ งๆ หลากหลาย ใช้คำสงั่ เพียงไม่กี่บรรทัดในการสง่ั ใหค้ อมพิวเตอรท์ ำงานเมอ่ื เทยี บ
กับคำสั่งทต่ี ้องใช้ในภาษาซหี รือจาวา เรยี นรูไ้ ด้ง่ายสำหรบั ผเู้ ริม่ ต้น ปัจจุบนั ไพธอนเปน็ ท่ีนยิ มใน
งานวทิ ยาศาสตร์ และงานเว็บไซต์
5. ภาษาอาร์ (R) ภาษาอาร์เปน็ ภาษาสครปิ ต์เช่นเดียวกับไพธอน และอาศยั อนิ เทอรพ์ รเี ตอรใ์ นการ
แปลเช่นเดียวกัน ภาษาอาร์มักใช้ในงานสถิติ จดุ เด่นของภาษาอารค์ ือเรียนรไู้ ดง้ ่าย มีฟังกช์ ันตา่ งๆ
ด้านสถติ ิ และสร้างกราฟต่างๆ จากการคำนวณไดง้ ่ายและสวยงาม

1.6.2 ซอฟตแ์ วร์แปลภาษา

การแปลรหสั ตน้ ฉบับมีสองรปู แบบ แบบแรกคอื แปลท้งั โปรแกรมให้เสร็จเป็นภาษาเครื่องทพ่ี ร้อมใชง้ าน
เราเรียกการแปลโปรแกรมแบบนี้วา่ การคอมไพล์ (compile) และเรียกซอฟต์แวรก์ ารแปลรหสั ตน้ ฉบับ
แบบนวี้ ่า คอมไพเลอร์ (compiler) ตัวอย่างของภาษาโปรแกรมที่ใชค้ อมไพเลอร์แปล เชน่ ซี ปาส
คาล เบสกิ อกี รูปแบบในการแปลรหสั ต้นฉบบั คือการแปลคำสง่ั แลว้ ทำงานเลยทีละคำสงั่ ซอฟตแ์ วรท์ ใ่ี ช้
ในการแปลภาษาแบบนเ้ี รียกว่า อนิ เทอร์พรีเตอร์ (interpreter) การแปลภาษารูปแบบนี้ใช้กบั ภาษาที่มี
ลักษณะเป็นสคริปต์ เชน่ ไพธอน matlab R

ขน้ั ตอนการแปลรหสั ตน้ ฉบบั โดยคอมไพเลอร์สรุปไดด้ ังรปู ท่ี 1.32 โปรแกรมแปลภาษาจะแปลรหสั
ตน้ ฉบับท้งั หมดไปเปน็ ออบเจกตโ์ ค้ด (object code) ซึง่ เปน็ ภาษาเครือ่ ง หากมีขอ้ ผดิ พลาดในรหสั

28 บทที่ 1. คอมพวิ เตอร์ทำงานไดอ้ ย่างไร

ออบเจกตโ์ คด้

รหัสต้นฉบับ คอมไพเลอร์ ออบเจกต์โค้ด โปรแกรมเชื่อมโยง

ออบเจกตโ์ คด้

ขอ้ มลู โปรแกรมท่ีทำงานได้ ผลลพั ธ์
รปู ท่ี 1.32: ข้ันตอนการทำงานของคอมไพเลอร์

รหัสตน้ ฉบับ:1/ข้อมลู ผลลพั ธ:์ 1

รหัสต้นฉบับ:2/ขอ้ มูล อนิ เทอร์พรีเตอร์ ผลลพั ธ:์ 2

รหสั ตน้ ฉบบั :3/ขอ้ มลู ผลลพั ธ:์ 3

รูปท่ี 1.33: ข้ันตอนการทำงานของอินเทอร์พรีเตอร์

ตน้ ฉบับ คอมไพเลอร์จะแสดงข้อผดิ พลาดและใหผ้ ู้เขยี นโปรแกรมแก้ไขใหถ้ ูกตอ้ งก่อนจะนำกลบั มาแปล
ใหม่ เม่ือไม่มีข้อผดิ พลาดแลว้ คอมไพเลอร์จงึ จะแปลรหสั ตน้ ฉบับท้งั หมดจนได้เป็นออบเจกตโ์ คด้ จากน้ัน
โปรแกรมเชอ่ื มโยง (linker) จะเชอื่ มโยงออบเจกตโ์ ค้ดอ่ืนๆ ท่เี กีย่ วข้องทอ่ี าจแปลไว้ลว่ งหน้าแลว้ รวมกัน
เป็นโปรแกรมทส่ี ามารถทำงานได้ (executable program) แล้วจงึ สามารถส่ังทำงาน (execute) ให้
โปรแกรมรับข้อมูลเข้า (ถา้ ม)ี ประมวลผล แลว้ แสดงผลลพั ธ์ (ถ้ามี) ตอ่ ไป

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

1.6.3 เครื่องมือในการพฒั นาซอฟตแ์ วร์

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

หลงั จากออกแบบสว่ นต่างๆ แล้วจะเปลีย่ นการออกแบบใหเ้ ป็นรหัสตน้ ฉบบั ซ่งึ มกั จะมรี ปู แบบของ
รหัสตน้ ฉบบั ทส่ี อดคล้องกับการออกแบบอยู่แลว้ การเขียนรหัสต้นฉบับอาจใชซ้ อฟตแ์ วร์ทว่ั ไปใดๆ ที่
สามารถพิมพข์ ้อความได้ แตใ่ นปจั จบุ ันมเี ครอ่ื งมอื ชว่ ยเหลอื จำนวนมากทช่ี ่วยในการเขยี นรหัสต้นฉบบั
เรียกวา่ เครื่องมอื ชว่ ยในการพัฒนา (Integrated Development Environment - IDE) เช่น

1.6. การโปรแกรมคอมพวิ เตอรเ์ บอ้ื งตน้ 29

Microsoft Visual Studio, Eclipse เปน็ ต้น นอกจาก IDE จะมีความสามารถในการพิมพข์ อ้ ความ
แลว้ ยังมคี วามสามารถในการแสดงความเชือ่ มโยงของส่วนตา่ งๆ ในรหสั ต้นฉบบั และยังมักจะรวม
คอมไพเลอรห์ รืออินเทอรพ์ รีเตอร์เข้าไปในตัว รวมถึงตวั ชว่ ยแสดงคำแนะนำเก่ยี วกบั คำส่งั ตา่ งๆ และ
โปรแกรมในการตรวจสอบจุดบกพรอ่ งอกี ดว้ ย



บทท่ี 2

ระบบอินเทอรเ์ น็ต

วัตถุประสงค์การเรยี นรู้

อธิบายหลกั การทำงานของอินเทอร์เน็ต

1. อธิบายการทำงานของอินเทอรเ์ นต็ ได้
2. อธบิ ายวิธีการเช่อื มต่อกับข่ายงานอินเทอรเ์ น็ต
3. รูจ้ กั อปุ กรณ์พ้ืนฐานต่างๆ ท่ีพบได้ท่ัวไปตามบ้านซึ่งใช้ในการตอ่ อนิ เทอร์เนต็

ใชเ้ วลารวม 3 คาบ
การรบั สง่ ขอ้ มลู ระหว่างเครอื่ งคอมพวิ เตอรใ์ นยุคแรกจะทำโดยเขียนข้อมูลลงหน่วยความจำภายนอก

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

2.1 ขา่ ยงานคอมพวิ เตอร์

ข่ายงานคอมพวิ เตอร์เกิดจากการนำคอมพวิ เตอรห์ ลายๆ เครอ่ื งมาเชอื่ มต่อกนั ให้สามารถรบั สง่ ขอ้ มูล
ระหว่างกันได้ ข่ายงานคอมพวิ เตอรแ์ บ่งไดอ้ อกเป็นสองระดับ คอื ขา่ ยงานบรเิ วณเฉพาะท่ี (Local Area
Network - LAN) และ ข่ายงานบริเวณกว้าง (Wide Area Network - WAN) ดงั รปู ท่ี 2.1

ข่ายงานบรเิ วณเฉพาะทีม่ ักเป็นการเชื่อมต่อคอมพิวเตอรท์ อ่ี ยู่ใกล้กนั ไว้ด้วยกันเป็นข่ายงาน เครื่อง
ทอี่ ย่ใู นขา่ ยงานเดยี วกันจะสามารถตดิ ต่อถงึ กันไดท้ ้งั หมด สว่ นข่ายงานบรเิ วณกว้างจะเป็นการเชือ่ มต่อ
คอมพวิ เตอร์ท่ีอยู่ไกลจากกนั โดยมกั จะเป็นการเชื่อมต่อข่ายงานบริเวณเฉพาะที่หลายๆ ขา่ ยงานเข้าด้วย
กนั

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

32 บทที่ 2. ระบบอินเทอรเ์ นต็
LAN

WAN
LAN

LAN
รปู ท่ี 2.1: ขา่ ยงานเฉพาะทีแ่ ละข่ายงานบรเิ วณกวา้ ง

รูปที่ 2.2: ARPANET มีนาคม 19771
โทคอล (protocol) หรือเกณฑ์วิธี ระบุรูปแบบของขอ้ มลู ที่ใช้ส่ง วธิ ีระบุท่ีอยขู่ องเคร่ือง วิธีการตรวจสอบ
ความผดิ พลาดในการส่ง เป็นต้น

อนิ เทอรเ์ นต็ เป็นขา่ ยงานคอมพิวเตอร์ขนาดใหญ่ ซ่งึ เช่อื มตอ่ คอมพิวเตอรเ์ กือบจะทั่วโลกเข้าด้วยกัน
จุดเร่ิมต้นในการพัฒนาอินเทอรเ์ น็ตน้ันมาจาก ARPANET (Advanced Research Projects
Agency NETwork) ริเรม่ิ โดยกระทรวงกลาโหมของสหรฐั อเมรกิ า เพื่อเชือ่ มต่อข่ายงานคอมพิวเตอร์

1By ARPANET [Public domain], via Wikimedia Commons


Click to View FlipBook Version