550 likes | 801 Views
ความรู้ด้านคอมพิวเตอร์และเทคโนโลยีสารสนเทศ. รองศาสตราจารย์ธีรวัฒน์ ประกอบผล คณะวิทยาศาสตร์ สถาบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบัง Email : kpteeraw@kmitl.ac.th. หัวเรื่องสนทนา จะสอนกันอย่างไรดี. โครงสร้างคอมพิวเตอร์ หน่วยที่ใช้ในระบบคอมพิวเตอร์ ประเภทของคอมพิวเตอร์
E N D
ความรู้ด้านคอมพิวเตอร์และเทคโนโลยีสารสนเทศความรู้ด้านคอมพิวเตอร์และเทคโนโลยีสารสนเทศ รองศาสตราจารย์ธีรวัฒน์ ประกอบผล คณะวิทยาศาสตร์ สถาบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบัง Email : kpteeraw@kmitl.ac.th
หัวเรื่องสนทนา จะสอนกันอย่างไรดี • โครงสร้างคอมพิวเตอร์ • หน่วยที่ใช้ในระบบคอมพิวเตอร์ • ประเภทของคอมพิวเตอร์ • ภาษาและโปรแกรม
โครงสร้างคอมพิวเตอร์ Main Memory CPU Output Input หน่วยความจำสำรอง
หน่วยประมวลผลกลางและหน่วยความจำหลักหน่วยประมวลผลกลางและหน่วยความจำหลัก โครงสร้างบนเมนบอร์ด CPU RAM ROM Main Memory
นำหน่วยความจำแคชมาใช้ด้วยนำหน่วยความจำแคชมาใช้ด้วย โครงสร้างบนเมนบอร์ด CPU Cache Cache controller RAM ROM
ประเภทของคอมพิวเตอร์ • จำแนกตามขนาด ประสิทธิภาพ และลักษณะการใช้งาน ได้ดังนี้ • คอมพิวเตอร์ส่วนบุคคล หรือพีซี (Personal Computer) ที่ใช้กันมี 2 ตระกูลคือ Apple และ PC • คอมพิวเตอร์โน๊ตบุ๊ก (Notebook Computer) ใช้ระบบปฏิบัติการ Windows ใช้ระบบปฏิบัติการ Mac OS
ประเภทของคอมพิวเตอร์ (ต่อ) • คอมพิวเตอร์แบบพกพา (Handheld Computer) เครื่องมีขนาดเล็ก จึงมีการนำ สไตลัส (Stylus) มาใช้งาน • เครื่องคอมพิวเตอร์เซิร์ฟเวอร์
ประเภทของคอมพิวเตอร์ (ต่อ) • คอมพิวเตอร์เมนเฟรม (Mainframe Computer) • ซุปเปอร์คอมพิวเตอร์ (Supercomputer) • คอมพิวเตอร์ฝังตัว (Embedded Computer)
ภาษาคอมพิวเตอร์ • ภาษาระดับต่ำ (Low-level Language) เป็นภาษาที่ใกล้เคียงกับเครื่อง ทำงานได้เร็วที่สุด • ภาษาระดับสูง (High-level Language) เป็นภาษาที่ใกล้เคียงกับภาษามนุษย์
ภาษาสำหรับนักพัฒนาโปรแกรมภาษาสำหรับนักพัฒนาโปรแกรม • ภาษาเบสิก (Basic) มาจากคำว่า Beginner’s Allpurpose Symbolic Instruction Code • ภาษาฟอร์แทรน (FORTRAN) มาจากคำว่า FORmular TRANslator เหมาะสำหรับเขียนโปรแกรมคำนวณ • ภาษาโคบอล (COBOL) เหมาะสำหรับโปรแกรมประยุกต์ทางธุรกิจ
ภาษาสำหรับนักพัฒนาโปรแกรมภาษาสำหรับนักพัฒนาโปรแกรม • ภาษาปาสคาล (PASCAL) ตั้งชื่อตามนักคณิตศาสตร์ • ภาษาซี ( C ) เริ่มต้นให้ใช้ในระบบปฏิบัติการยูนิกซ์ (Unix) • ภาษาซีพลัสพลัส (C++) เขียนโปรแกรมเชิงวัตถุ
ภาษาสำหรับนักพัฒนาโปรแกรมภาษาสำหรับนักพัฒนาโปรแกรม • วิชวลเบสิก (VISUAL Basic) พัฒนาโดยบริษัทไมโครซอฟต์ ปัจจุบันใช้เทคโนโลยี .net • ภาษาจาวา (JAVA) พัฒนาโดยบริษัท Sun Microsystem • ภาษาซีชาฟต์ (C#) พัฒนาโดยไมโครซอฟต์ ปัจจุบันใช้เทคโนโลยี .net
การเขียนโปรแกรมภาษาแอสเซมบลีการเขียนโปรแกรมภาษาแอสเซมบลี โปรแกรมแอสเซมเบอร์ รหัสภาษาเครื่อง โปรแกรมต้นฉบับภาษาแอสเซมบลี
การเขียนโปรแกรมภาษาระดับสูงการเขียนโปรแกรมภาษาระดับสูง โปรแกรมต้นฉบับ รหัสภาษาเครื่อง Interpreter โปรแกรมต้นฉบับ รหัสภาษาเครื่อง Compiler
Source file Source file function function function function function function ขั้นตอนการสร้างโปรแกรมด้วยภาษา C Library file compile link Object file link Execute file link compile Object file
ความซับซ้อนของโปรแกรมความซับซ้อนของโปรแกรม โปรแกรมคอมพิวเตอร์มีความสลับซับซ้อนมากหรือน้อยดูจาก “ขนาด” ของโปรแกรม โดยดูได้สองทางคือ ขนาดโปรแกรมต้นฉบับ และ ขนาดโปรแกรมที่ถูกแปลแล้ว • วินโดว์ส เอ็กซ์พี มีความยาว 40 ล้านบรรทัด • โปรแกรมลินุกซ์บางชุด 200 ล้าน บรรทัด (รวมชุดโปรแกรมด้วย) • ถ้ามนุษย์ถูกโปรแกรมด้วยคอมพิวเตอร์ จะมีความยาวกี่บรรทัด
โปรแกรมประยุกต์ ระบบปฏิบัติการ BIOS ประเภทของโปรแกรม • โปรแกรมระบบปฏิบัติการ (OS : Operating System) • โปรแกรมประยุกต์ ฮาร์ดแวร์หรือตัวเครื่อง
คอมพิวเตอร์ส่วนบุคคล Main Memory CPU Output Input หน่วยความจำสำรอง
หลักการทำงานของคอมพิวเตอร์หลักการทำงานของคอมพิวเตอร์ • ซีพียู (Central Processing Unit) ทำงานตามคำสั่งที่เรียกว่า วงรอบคำสั่ง (machine cycle)โครงสร้างภายในประกอบด้วยหน่วยสำคัญสองหน่วยใหญ่ ๆ คือ หน่วยควบคุม และหน่วยคำนวณและตรรกะ 01 = ยกมือซ้าย 10 = เดินหน้า11 = เตี้ยลง00 = ยืนขึ้น 1010 01 10 11 10 โปรแกรมคอมพิวเตอร์
หน่วยความจำและการจัดเก็บข้อมูลหน่วยความจำและการจัดเก็บข้อมูล • หน่วยความจำแบบไม่สามารถลบเลือนได้ (non volatile memory) • ROM (Read Only Memory) • Flash memory • หน่วยความจำแบบลบเลือนได้ (volatile memory) • RAM (Random Access Memory)
ระบบบัส • ขนาดของบัส (bus width) ส่งครั้งละกี่บิต • ความเร็วบัส จำนวนครั้งที่รับส่งข้อมูลได้ในหนึ่งหน่วยเวลา
ปัจจัยในการเลือกซื้อซีพียูปัจจัยในการเลือกซื้อซีพียู • ผู้ผลิต • ความเร็วของซีพียู • หน่วยความจำแคช • ความเร็วบัส ความเร็วการเข้าถึงข้อมูลสูงสุด แคช L1 ซีพียู แคช L2 แคช L3 แรม
1.2 การพัฒนาโปรแกรม • 5 ขั้นตอนในการพัฒนาโปรแกรม 1. กำหนดและวิเคราะห์ปัญหา(State problem & Problem analysis) 2. เขียนผังงาน(Flowchart) 3. เขียนโปรแกรม(Programming) 4. ทดสอบและแก้ไขโปรแกรม(Testing & debugging) 5. ทำเอกสารและบำรุงรักษาโปรแกรม(Document & maintenance)
1.3 กำหนด&วิเคราะห์ปัญหา • กำหนดขอบเขตของปัญหา(State problem) ให้ชัดเจนว่า จะให้คอมพิวเตอร์ทำอะไร (What?) • วิเคราะห์ปัญหา(Problem analysis) • Input:กำหนดลักษณะข้อมูลเข้า • Process:กำหนดวิธีการประมวลผล (How?) • Output:กำหนดลักษณะข้อมูลออก
ตัวอย่างที่ 1 • ออกแบบโปรแกรมให้คอมพิวเตอร์ทำงานเป็นเครื่องคิดเลขอย่างง่าย โดยรับข้อมูล 2 ค่า (X,Y) และแสดงผลบวกทางจอภาพ • Problem:คำนวณผลบวกของ 2 ค่า • Problem Analysis 1. Input:รับข้อมูล (X, Y) จากคีย์บอร์ด 2. Process: คำนวณ sum = X + Y 3. Output:แสดงผลบวก (sum) ทางจอภาพ
ตัวอย่างที่ 2 • ออกแบบโปรแกรมให้คอมพิวเตอร์รับข้อมูล 3 ค่า คำนวณค่าเฉลี่ยและแสดงค่าเฉลี่ย ทางจอภาพ • Problem:คำนวณค่าเฉลี่ยของ 3 ค่า((X1+X2+X3)/3) • Problem Analysis 1. Input:รับข้อมูล (X1, X2, X3) จากคีย์บอร์ด 2. Process: คำนวณ sum = X1 + X2 + X3 mean = sum/3 3. Output:แสดงค่าเฉลี่ย (mean) ทางจอภาพ
ตัวอย่างที่ 3 • ออกแบบโปรแกรมให้คอมพิวเตอร์รับข้อมูล N ค่า คำนวณค่าเฉลี่ยและแสดงค่าเฉลี่ย ทางจอภาพ • Problem:คำนวณค่าเฉลี่ยของ N ค่า (iN Xi/N) • Problem Analysis 1. Input:รับข้อมูล N และ X (X1,..., XN) จากคีย์บอร์ด 2. Process:loop for (i=1 to N) read X sum = sum + X mean = sum/N 3. Output:แสดงค่าเฉลี่ย (mean) ทางจอภาพ
1.4 การเขียนผังงาน • ผังงาน (Flowchart) เป็นแผนภาพที่ใช้อธิบายการทำงานของโปรแกรมเป็นขั้นตอน • ประโยชน์ของ Flowchart 1. อธิบายลำดับขั้นตอนการทำงานของโปรแกรม 2.ทำให้ตรวจสอบข้อผิดพลาดของโปรแกรมได้ง่าย 3. ทำให้ผู้อื่นสามารถศึกษาการทำงานและแก้ไข โปรแกรมได้ง่าย
1.4.1 ประเภทของผังงาน • ผังงานระบบ (System Flowchart) แสดงขั้นตอนการทำงานภายในระบบงาน โดยจะกล่าวอย่างกว้างๆ • ผังงานโปรแกรม (Program Flowchart) แสดงขั้นตอนของคำสั่งที่ใช้ในโปรแกรม
1.4.2 สัญลักษณ์ในผังงาน การเริ่มต้น และการสิ้นสุดการทำงาน ลูกศรแสดงทิศทางการทำงาน และการไหลของข้อมูล การประมวลผล หรือการคำนวณ การรับข้อมูล หรือแสดงผล (ไม่ระบุชนิดอุปกรณ์) การแสดงผลทางเครื่องพิมพ์ การตรวจสอบเงื่อนไข จุดเชื่อมต่อของผังงาน
1.4.3 รูปแบบของผังงาน • แบบลำดับ(Sequence) • แบบมีทางเลือก(Selection) • การเลือกทำแบบ 1 เส้นทาง • การเลือกทำแบบ 2 เส้นทาง • การเลือกทำแบบหลายเส้นทาง • แบบทำซ้ำ(Looping)
Input statement output end 1.4.3.1 แบบลำดับ • Flowchart แบบลำดับ(Sequence) start แสดงขั้นตอนการทำงานที่เรียงลำดับ ไม่มีการข้ามขั้น หรือย้อนกลับ
check condition no yes statement(s) 1.4.3.2 แบบมีทางเลือก • แสดงการตรวจสอบเงื่อนไขให้โปรแกรมเลือกทำอย่างใดอย่างหนึ่ง ซึ่งมี3 กรณี • 1. การเลือกแบบ 1 เส้นทาง จะทำงานเฉพาะเมื่อเงื่อนไขเป็นจริงเท่านั้น
check condition yes no statement 1 statement2 1.4.3.2 แบบมีทางเลือก • 2. การเลือกแบบ 2 เส้นทาง เมื่อเงื่อนไขเป็นจริงจะทำอย่างหนึ่ง เมื่อเงื่อนไขเป็นเท็จจะทำอีกอย่างหนึ่ง
check condition 1 2 3 n 1.4.3.2 แบบมีทางเลือก • 3.การเลือกแบบหลายเส้นทาง(n) . . . statement1 statement2 statement3 statementn เมื่อเงื่อนไขเท่ากับทางเลือกใดจะทำตามทางนั้น
check condition exit loop no yes statement(s) 1.4.3.3 แบบทำซ้ำ • แสดงการทำซ้ำซึ่งมี3 กรณี • 1.การทำซ้ำแบบเงื่อนไขเป็นจริง ตรวจสอบเงื่อนไขก่อน จะทำงานซ้ำเมื่อเงื่อนไขเป็นจริง (ออกจากทำงานซ้ำเมื่อเงื่อนไขเป็นเท็จ)
statement(s) check condition exit loop yes no 1.4.3.3 แบบทำซ้ำ • 2.การทำซ้ำแบบจนเงื่อนไขเป็นจริง ทำงานก่อนการตรวจเงื่อนไข ทำงานซ้ำจนเงื่อนไขเป็นจริง(จึงออกจากทำงานซ้ำ)
for i=1 to N exit loop i > N i N statement(s) 1.4.3.3 แบบทำซ้ำ • 3.การทำซ้ำตามจำนวนที่ระบุ ทำงานตามรอบที่กำหนด โดยเริ่มจากรอบเริ่มต้น (i=1) ไปยังรอบสุดท้าย (i=N) (ปกติการนับรอบจะเพิ่มที่ละ 1 ค่า (i = i+1))
Read X,Y sum = X+Y sum end 1.4.4 ตัวอย่างผังงาน • ตัวอย่างที่ 1: ออกแบบFlowchartให้คอมพิวเตอร์ทำงานเป็นเครื่องคิดเลขอย่างง่าย โดยรับข้อมูล 2 ค่า (X,Y) และแสดงผลบวกทางจอภาพ start
Read X1,X2,X3 sum=X1+X2+X3 mean = sum/3 mean end 1.4.4 ตัวอย่างผังงาน • ตัวอย่างที่ 2:ออกแบบFlowchartให้คอมพิวเตอร์รับข้อมูล 3 ค่า (X1, X2, X3) คำนวณค่าเฉลี่ยและแสดงค่าเฉลี่ย ทางจอภาพ start
sum = 0 Read X Read N i > N for i=1 to N sum=sum+X mean = sum/N i N mean end 1.4.4 ตัวอย่างผังงาน • ตัวอย่างที่ 3: ออกแบบFlowchartให้คอมพิวเตอร์รับข้อมูล N ค่า X (X1, X2, ..., XN) คำนวณค่าเฉลี่ย (iN Xi/N) และแสดงค่าเฉลี่ย ทางจอภาพ start
N = 0 sum = 0 Read X X > 0 yes mean = sum/N No N = N + 1 sum=sum+X mean end 1.4.4 ตัวอย่างผังงาน • ตัวอย่างที่ 4: ออกแบบFlowchartให้คอมพิวเตอร์รับข้อมูล N ค่า (X1, X2, ..., XN) คำนวณค่าเฉลี่ย (สมมุติไม่ทราบค่า N) start
I = 1 SUM = 0 while I<=100 no yes SUM = SUM+I I = I+1 SUM end 1.4.4 ตัวอย่างผังงาน • ตัวอย่างที่ 5: ออกแบบFlowchartในการบวก 1+2+...+100 • กำหนดให้ I = 1, 2, 3, ..., 100 และ SUM = 1+2+3+...+100 start
grade = ‘G’ grade = ‘P’ yes yes Read X X > 79 X > 49 เงื่อนไข คะแนน 80-100 กลุ่ม G คะแนน 50-79 กลุ่ม P คะแนนต่ำกว่า 50 กลุ่ม F grade = ‘F’ grade end 1.4.4 ตัวอย่างผังงาน • ตัวอย่างที่ 6:ออกแบบFlowchartให้คอมพิวเตอร์รับคะแนนนักศึกษา (X) แล้วนำมาจัดกลุ่มตามเงื่อนไขและแสดงผลทางจอภาพ start
grade = ‘A’ grade = ‘B’ grade = ‘D’ grade = ‘C’ yes yes yes yes Read X X > 59 X > 69 X > 49 X > 79 เงื่อนไข คะแนน 80-100 เกรด A คะแนน 70-79 เกรด B คะแนน 60-69 เกรด C คะแนน 50-59 เกรด D คะแนนต่ำกว่า 50 เกรด F grade = ‘F’ grade end start 1.4.4 ตัวอย่างผังงาน • ตัวอย่างที่ 7: ออกแบบFlowchartให้คอมพิวเตอร์รับคะแนนนักศึกษา (X) แล้วนำมาตัดเกรดตามเงื่อนไขและแสดงผลทางจอภาพ
ข้อผิดพลาดในการเขียนโปรแกรมข้อผิดพลาดในการเขียนโปรแกรม • Syntax Errorหรือ Coding Error • Logic Error
# header ส่วนที่ 1 main( ) { /* เริ่มโปรแกรม */ declaration ส่วนที่ 2 ……… คำสั่งต่าง ๆ ส่วนที่ 3 } โครงสร้างพื้นฐานของภาษาซี
ส่วนที่ 1 เป็นส่วนที่ระบุให้ซีคอมไพเลอร์เตรียมการทำงานที่กำหนด ในส่วนนี้ไว้ โดยหน้าคำสั่งจะมีเครื่องหมาย # เช่น # include <stdio.h> เป็นการระบุให้นำไฟล์ stdio.h มารวมกับไฟล์นี้ เพื่อที่จะ สามารถใช้คำสั่งที่อยู่ในไฟล์นี้มาใช้งานได้ หรือ # define START 0 เป็นการกำหนดค่าคงที่ให้กับตัวแปร START โดยให้มีค่าเป็น 0 หรือ # define temp 37 เป็นการกำหนดให้ตัวแปร temp มีค่าเท่ากับ 37