1.18k likes | 1.41k Views
235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์. สัปดาห์ที่ 2 การเขียนโปรแกรมภาษาซีเบื้องต้น. Credit: Narongchai.mo Mod: k.Mathiang. objectives. เข้าใจองค์ประกอบ และการทำงานของระบบคอมพิวเตอร์
E N D
235021Computer Programmingการเขียนโปรแกรมคอมพิวเตอร์ สัปดาห์ที่ 2 การเขียนโปรแกรมภาษาซีเบื้องต้น Credit: Narongchai.mo Mod: k.Mathiang
objectives • เข้าใจองค์ประกอบ และการทำงานของระบบคอมพิวเตอร์ • รู้จักและเข้าใจขั้นตอนในการวิเคราะห์ปัญหา และนำปัญหามาเขียนในรูปแบบของแผนผังการไหลของข้อมูล (Flowchart Diagram)ได้ • รู้จักตัวแปรและชนิดของตัวแปร • รู้หลักการในการตั้งชื่อตัวแปรพร้อมทั้งการประกาศตัวแปร • เข้าใจหลักการในการแปลงภาษาซีเป็นโปรแกรม • เข้าใจการเข้าถึงตัวแปรหรือช่วงชีวิตของตัวแปรที่ประกาศ
Outline 1 Introduction to C Programming 2 Flowchart Diagram p 3 Variables and Type of variables Naming and Variable Declaration 4 5 The Environment of C Programming
What is computer? • อุปกรณ์อิเล็กทรอนิกส์อย่างหนึ่ง ที่มนุษย์ประดิษฐ์ขึ้น เพื่อนำมาเสริมความสามารถของมนุษย์ในด้านการรับรู้ การจำ การคำนวณ การเปรียบเทียบตัดสินใจ ในการที่จะสั่งให้เครื่องคอมพิวเตอร์ทำงาน จำเป็นต้องป้อนคำสั่ง และจะต้องเป็นคำสั่งที่เครื่องคอมพิวเตอร์เข้าใจ ได้แก่ภาษาเครื่องหรือที่เรียกเป็นภาษาอังกฤษว่า “Machine Language”ซึ่งประกอบด้วยตัวเลข 0 กับ 1 เท่านั้น
Computer System • ระบบคอมพิวเตอร์ประกอบด้วย 4 ส่วนประกอบ • Hardwareคือส่วนประกอบต่างๆ ของคอมพิวเตอร์ที่สามารถมองเห็นและจับต้องได้ • Softwareคือส่วนที่มีหน้าที่เชื่อมประสานให้ผู้ใช้งานกับคอมพิวเตอร์ให้สามารถทำงานร่วมกันได้ • Peoplewareคือบุคคลที่เข้ามามีส่วนเกี่ยวข้องกับการทำงานโดยใช้คอมพิวเตอร์ • Data andInformation คือข้อมูลที่ต้องป้อนเข้าสู่ระบบคอมพิวเตอร์ เพื่อใช้ในการประมวลผล และรวมไปถึงข้อมูลหลังจากการประมวลผลที่ต้องจัดเก็บ
Hardware • ส่วนประกอบต่างๆ ของคอมพิวเตอร์แบ่งได้เป็น 3 ประเภท คือ • หน่วยประมวลผลกลาง (Central processing unit) • หน่วยความจำ(Memory) • อุปกรณ์รับข้อมูลเข้า (Input device) • อุปกรณ์แสดงผลข้อมูล (Output device) • อุปกรณ์รับข้อมูลเข้าและแสดงผล (Input/Output device)
Central Processing Unit : CPU • หน่วยประมวลผลกลาง (Central Processing Unit) เช่น 80486 Celeron, Pentium, Athon, Duronเป็นต้น
Memory • หน่วยความจำ (Memory) เช่น SDRAM 128 MB, ROM BIOS, ฮาร์ดดิสก์, ซีดีรอม ROM RAM HDD BIOS
Input devices • อุปกรณ์ที่มีความสามารถในการเป็นหน่วยรับข้อมูลเข้า เช่น keyboard, mouse, microphone, scanner เป็นต้น mouse keyboard scanner
Output devices • อุปกรณ์ที่มีความสามารถในการเป็นหน่วยแสดงผลข้อมูล เช่น monitor, printer, speaker เป็นต้น monitor speaker printer
Input/Output devices • อุปกรณ์ที่มีความสามารถในการเป็นทั้งหน่วยรับข้อมูลและหน่วยแสดงผลข้อมูลเช่น Touch screen เป็นต้น Touchscreen
Software(1) • ซอฟท์แวร์เป็นชุดคำสั่งที่ควบคุมการทำงานของคอมพิวเตอร์ โดยชุดคำสั่งเหล่านี้เรียกได้อีกอย่างว่าโปรแกรมคอมพิวเตอร์ โดยทั่วไปแบ่งออกเป็น 2 ประเภท • ซอฟท์แวร์ระบบ (System software)เช่น ซอฟต์แวร์ระบบปฎิบัติการ (Operating system: OS) • ซอฟท์แวร์ประยุกต์ (Application Software) เช่น Browser, Games, Multimedia program, Tools เป็นต้น
Software(2) ซอฟท์แวร์ ซอฟท์แวร์ระบบ ซอฟท์แวร์ประยุกต์ Dos ซอฟต์แวร์สำเร็จ Window ซอฟต์แวร์ใช้เฉพาะงาน Unix Linux
Example of Operating Systems (1) • (Disk Operating System) ปี 1981-1995 เป็นระบบปฏิบัติ การในยุค80 ใช้การสั่งงานผ่านคำสั่ง command line เช่นต้อง การตรวจจำนวนไฟล์ในแผ่นดิสก์ ใช้คำสั่ง dir
Example of Operating Systems (2) • OS2 (Operating System /2) ใช้ในปี1987-2001 เป็นระบบปฏิบัติการที่พัฒนาโดย Microsoft และ IBM ในช่วงแรก และต่อมา IBM เป็นผู้พัฒนาต่อ ภาษาที่ใช้ในการสร้างคือ C/C++
Example of Operating Systems (3) • ยูนิกซ์ (Unix)เป็นระบบปฏิบัติการคอมพิวเตอร์แบบหลายงาน หลายผู้ใช้ ที่เริ่มพัฒนาโดยกลุ่มพนักงานของห้องปฏิบัติการ AT&T Bell Labs โดยกลุ่มนักพัฒนาที่เป็นที่รู้จัก คือ Ken Thompson, Dennis Ritchie และ Douglas McIlroy
Example of Operating Systems (4) • ลินุกซ์ (Linux) และรู้จักในชื่อ กนู/ลินุกซ์ (GNU/Linux) โดยทั่วไปเป็นคำที่ใช้ในความหมายที่หมายถึงระบบปฏิบัติการแบบยูนิกซ์ โดยใช้ลินุกซ์ เคอร์เนล เป็นศูนย์กลางทำงานร่วมกับไลบรารีและเครื่องมืออื่น ลินุกซ์เป็นตัวอย่างหนึ่งในฐานะซอฟต์แวร์เสรี และซอฟต์แวร์โอเพนซอร์สที่ประสบความสำเร็จและมีชื่อเสียง
Example of Operating Systems (5) • ไมโครซอฟท์ วินโดวส์ (Microsoft Windows) เป็นระบบปฏิบัติการ ซึ่งพัฒนาโดยบริษัทไมโครซอฟท์ เปิดตัวเมื่อปี พ.ศ. 2528 (ค.ศ. 1985 โดยรุ่นแรกของวินโดวส์ คือ วินโดวส์ 1.0) และครองความนิยมในตลาดคอมพิวเตอร์ส่วนบุคคล มากกว่า 90%
Software(3) ซอฟท์แวร์ประยุกต์ ซอฟต์แวร์สำเร็จ ซอฟต์แวร์ใช้เฉพาะงาน Word คำนวณเกรด Excel ยืมหนังสือ PPT คิดดอกเบี้ย Network Connection ฟังเพลง
How the computer work? (1) • คอมพิวเตอร์จะทำงานต่างๆ ด้วยซอฟท์แวร์หรือโปรแกรมต่างๆ โดยจะใช้ชุดคำสั่งภาษาเครื่องในการทำงาน แต่ภาษาเครื่องเป็นภาษาที่มนุษย์ยากที่จะจำและเข้าใจการทำงาน ดังนั้นจึงมีการคิดภาษาต่างๆ ที่ใกล้เคียงกับภาษาของมนุษย์ขึ้นมาเพื่อให้มนุษย์ใช้งานในการเขียนสร้างโปรแกรมอื่นๆ • ภาษาทางคอมพิวเตอร์ • ภาษาเครื่องประกอบด้วยเลข 0 กับ 1 สามารถสั่งให้ คอมพิวเตอร์ทำงานได้ทันที ข้อเสียคือเขียนยาก • ภาษา Assembly เป็นกึ่งภาษาเครื่องเขียนเป็นคำสั่ง Neumonicสามารถแปลงเป็นภาษาเครื่องได้ง่าย โดยการเทียบตาราง หรือใช้ Assembler • ภาษาขั้นสูง เป็นภาษาที่ใกล้เคียงกับภาษาของมุนษย์ (ประโยคข้อความส่วนใหญ่เป็นภาษาอังกฤษ) เช่นภาษา C, PASCAL, FORTRAN -> Compiler
How the computer work? (2) • ระบบปฎิบัติการ (Operating System: OS) • Application ไม่ต้องยุ่งการติดต่อกับฮาร์ดแวร์ต่างผู้ผลิต • Application สร้างโดยยึดกับ Operating System • มีการทำงานพื้นฐานเตรียมไว้แล้ว App. OS Hardware App. App.
Programming Language and Development (1) • วงจรชีวิตซอฟต์แวร์ (Software life cycle) • Code design • Code implementation
Programming Language and Development (2) • How the Program Run? • คอมพิวเตอร์จะทำงานกับ Machine Language Program Code / Source Code Translation Machine Code
Programming Language and Development (3) • ตัวแปรภาษา (Program Translator) • Interpreter • ทำการแปลทีละคำสั่ง • แปลเสร็จ load แล้ว execute ได้ผลแล้วจึงแปลต่อ • เช่น java, perl, python, shell script, vb script • Compiler • แปลทั้งหมดแล้วค่อยทำงาน • นำไปประกอบร่วมกับ code ส่วนอื่นๆ ได้ • เช่น c, c++, pascal
Programming Language and Development (4) Interpreter Source Code -------------------------- -------------------------- -------------------------- • ต้องมี Interpreter ทำงานตลอดเวลาเพื่อแปลคำสั่ง • Source Code สามารถทำงานได้เลย (ทีละคำสั่ง) • สะดวกในการแก้ไข Interpreter OS Hardware
Source Code -------------------- -------------------- Compiler Object File---- Library ------------ -------------------- Linker OS Executable File --- Hardware Programming Language and Development (5) • Compiler • มีการแปล Source Code ทั้งหมดก่อนได้ Object File • นำมาประกอบกับ Code บางส่วนที่เตรียมไว้แล้ว (Library) • ได้ผลลัพธ์เป็น machine language (Executable File)
Language Types • High-Level Programming Language • Procedural Language • Fortran, Cobol, Basic, Pascal, C • Object-Oriented Language • C++, Delphi, Visual BASIC, C#, Java • Functional Language • Lisp • Logic Language • Prolog
Example of Language (1) • ภาษาฟอร์แทรน (Fortran: Formula Translation) ภาษาฟอร์แทรน
Advantage-Disadvantage • ภาษาฟอร์แทรน (Fortran: Formula Translation) • เหมาะกับงานด้านวิทยาศาสตร์ วิศวกรรมศาสตร์และคณิตศาสตร์ • ลักษณะของภาษาคล้ายสูตรหรือสมการคณิตศาสตร์ • ไม่เหมาะกับงานพิมพ์หรืองานที่ต้องการเก็บข้อมูล • ปัจจุบันไม่นิยม
Example of Language (2) • ภาษาปาสคาล (PASCAL) ภาษาปาสคาล
Advantage-Disadvantage • ภาษาปาสคาล (PASCAL) • มีโครงสร้างภาษาดีเยี่ยม ทำให้การทำงานของโปรแกรมมีประสิทธิภาพ • สามารถบอกข้อผิดพลาดของการเขียนโปรแกรมเพื่อให้แก้ไขโปรแกรมได้ง่าย • ค่อนข้างจุกจิก มีเครื่องหมายมากมาย ทำให้ลดความคล่องตัวในการใช้งาน
Example of Language (3) • ภาษาเบสิก (Basic: Beginner’s All-purpose Symbolic Instruction Code)
Advantage-Disadvantage • ภาษาเบสิก (Basic: Beginner’s All-purpose Symbolic Instruction Code) • คำสั่งมีน้อย แต่ใช้งานได้อย่างมีประสิทธิภาพ • เป็นภาษาเก่าแก่ เข้าใจง่าย และถูกออกแบบมาให้ใช้กับงานในลักษณะโต้ตอบ (Interactive) • ใช้อินเทอร์พรีทเตอร์ • เหมาะกับผู้เริ่มหัดเขียนโปรแกรม • การเขียนคำสั่งสำหรับการทำงานค่อนข้างยาวทำให้การทำงานโปรแกรมช้า
Example of Language (4) พรีโปรเซสเซอร์ไดเร็คทีฟ #include<file.h> type function_name(type); type variable int main() { type variable; statement-1; ... statement-n; return 0; } type function_name(type variable) { statement-1; ... statement-n; return(var); } ฟังก์ชันโพรโทรไทพ์ ส่วนหัวโปรแกรม ตัวแปรชนิดโกบอล ตัวแปรชนิดโลคอล ฟังก์ชันหลัก คำสั่ง ส่วนตัวโปรแกรม ฟังก์ชันย่อย
Advantage-Disadvantage • ภาษาซี (C language) • เป็นภาษาที่มีโครงสร้างและมีรูปแบบคำสั่งค่อนข้างอิสระ • ไม่ขึ้นกับระบบปฎิบัติการ • ไม่ขึ้นอยู่กับชนิดของเครื่องคอมพิวเตอร์ • มีคำสั่งและฟังก์ชันมาก • คำสั่งจะสั้น ทำให้การทำงานเร็ว • สามารถใช้งานได้หลายประเภท รวมถึงการควบคุมฮาร์ดแวร์ได้ • มีข้อยกเว้นทำให้เป็นผลเสียต่อโครงสร้างโปรแกรม
Evolution of Language ภาษา BCPL มาร์ติน ริชาร์ด (Martin Richards) Basic Combined Programming Language ภาษาซี ภาษา B เคน ทอมพ์สัน (Ken Thompson) 1970 เดนนิส ริทชี่ (Dennis Ritchie) 1972 ที่ Bell Labs เผยแพร่ 1978 เคอร์นิกเฮน (Kernighan) เดนนิส ริทชี่ (Dennis Ritchie)
Number System (1) • ระบบตัวเลขที่มนุษย์ทุกคนคุ้นเคย ที่เห็นได้ชัดเจนที่สุดคือการนับจำนวนสิ่งของต่างๆ ซึ่งพบว่าระบบจำนวนส่วนใหญ่ที่ใช้กันจะมีเลข 0 – 9 แต่ยังมีระบบจำนวนชนิดอื่นอีก เช่น เลขโรมัน • ระบบคอมพิวเตอร์จะใช้เลขเพียง 2 ตัว คือ 0 และ 1ซึ่งไม่เหมือนกับที่มนุษย์ใช้กันปกติ • เราเรียกระบบจำนวนที่มีจำนวนตัวเลขที่ใช้งานต่างกันว่าระบบเลขฐาน เช่น ระบบตัวเลขฐานสิบ ระบบตัวเลขฐานสอง เป็นต้น
Number System (2) • ฐานสิบประกอบด้วย ตัวเลข 0-9 (525)10 = 5102+2101+5x100 • ฐานสองประกอบด้วย ตัวเลข 0 กับ 1 (101)2 = 122+021+120 • ฐานสิบหกประกอบด้วยตัวเลข 0-9 และ A-F (3B2)16 = 3162+ 11161 +2160
Number System (3) • ระบบเลขฐานสิบ MSBLSB 10n10n-1 …….. 102 101 100 • ระบบเลขฐานสอง MSB LSB 2n2n-1 …….. 22 21 20
Number System (4) • ตัวอย่าง จงแปลง 10001112 ไปเป็นเลขฐานสิบ 1 0 0 0 1 1 1 ××××××× 26 25 24 23 22 21 20 64 32 16 8 4 2 1 (1×64)+(0×32)+(0×16)+(0×8) + (1×4) + (1×2)+(1 ×1) = 64+0+0+0+4+2+1 = 71
2 2 2 2 Number System (5) • จงแปลง 45 ฐานสิบ ให้เป็นฐานสอง 45 LSB 2 22 เศษ 1 11เศษ 0 5 เศษ 1 2 เศษ 1 1 เศษ 0 MSB 4510 = 1011012
16 16 16 Number System (6) • จงแปลง 946 ฐานสิบ ให้เป็นฐานสิบหก 946 59 เศษ 2 3 เศษ 11= B 0 เศษ 3 94610 = 03B216
Problem Analysis (1) • ขั้นตอนของการวิเคราะห์ปัญหาสำหรับเตรียมการก่อนลงมือเขียนโปรแกรมคอมพิวเตอร์ มี 5 ขั้นตอนดังนี้ • การทำความเข้าใจกับปัญหา (State the problem clearly) • การพิจารณาลักษณะของข้อมูลเข้าและข้อมูลออก(Describe the input and output) • การทดลองแก้ไขปัญหาด้วยตนเอง (Work the problem by hand for a specific set of data)
Problem Analysis (2) • การเขียนขั้นตอนวิธีการแก้ปัญหา(Develop an algorithm that is general in nature) • เขียนลำดับขั้นตอนวิธีการทำงานทั้งหมดอย่างย่อ • เขียนลำดับขั้นตอนวิธีการทำงานอย่างละเอียด • วิธีการเขียนลำดับขั้นตอนวิธี • Pseudo code เขียนขั้นตอนวิธีด้วยภาษาที่ใกล้เคียงภาษาคอมพิวเตอร์ • Flowcharts เขียนขั้นตอนวิธีด้วยรูปภาพผังงาน • การทดสอบขั้นตอนวิธีการแก้ปัญหา(Test the algorithm with a variety of data sets)
Problem Analysis Example (1) • กรณีศึกษาที่ 1: ขั้นตอนวิธีการแก้ปัญหาด้วยคอมพิวเตอร์ • จงเขียนขั้นตอนวิธีการแก้ปัญหาสำหรับการหาปริมาตรทรงกระบอกโดยรับข้อมูลของความสูง และรัศมีของวงกลมที่เป็นฐานของทรงกระบอก จากนั้นแสดงค่าของปริมาตรทรงกระบอกที่คำนวณได้ r h ปริมาตรทรงกระบอก = ¶ x r2 x h
Problem Analysis Example (2) • ขั้นตอนที่ 1 ทำความเข้าใจกับปัญหา • การคำนวณหาปริมาตรของรูปทรงกระบอก • ขั้นตอนที่ 2 ลักษณะของข้อมูลเข้าและข้อมูลออก • ข้อมูลเข้า คือ ความสูงของทรงกระบอก และรัศมีของวงกลมที่เป็นฐานของทรงกระบอก ชนิดของข้อมูลเข้าความสูง และรัศมีของวงกลมที่เป็นฐานของทรงกระบอกเป็นข้อมูลชนิดตัวเลข • ข้อมูลออก คือ ค่าของปริมาตรทรงกระบอก ชนิดของข้อมูลเป็นข้อมูลตัวเลขเป็นตัวเลขจำนวนเต็มหรือตัวเลขทศนิยมขึ้นอยู่กับวิธีการหาคำตอบ
Problem Analysis Example (3) • ขั้นตอนที่ 3 ทดลองแก้ไขปัญหาด้วยตนเอง • การคำนวณหาปริมาตรทรงกระบอก หาได้จากสูตร ปริมาตรทรงกระบอก = ¶ x รัศมียกกำลัง 2 x ความสูง ถ้า รัศมีของฐาน = 5 เมตร และความสูง = 12 เมตร ปริมาตรทรงกระบอก = 3.14159 x 52 (m2 ) x 12 (m) = 942.48 m3
Problem Analysis Example (4) • ขั้นตอนที่ 4 การพัฒนาลำดับขั้นตอนวิธีการแก้ปัญหา • เขียนอธิบายขั้นตอนวิธีการทำงานทั้งหมดอย่างย่อ 1. เริ่มต้น 2. รับค่าความสูง และรัศมีของฐานทรงกระบอก 3. คำนวณค่าปริมาตรทรงกระบอก ¶ * รัศมีของฐาน2 * ความสูง 4. แสดงค่าของปริมาตรทรงกระบอก 5. จบการทำงาน • เขียนอธิบายขั้นตอนวิธีการทำงานอย่างละเอียด • การคำนวณหาปริมาตรของทรงกระบอก การแก้ปัญหาไม่ได้ซับซ้อนมาก สามารถอธิบายแบบอย่างย่อและได้ครบทุกขั้นตอน