Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore คู่มือเขียนโปรแกรมภาษา C

คู่มือเขียนโปรแกรมภาษา C

Published by aazmlifug, 2023-08-13 03:07:16

Description: คู่มือเขียนโปรแกรมภาษา C
เรียบเรียงโดย นาย นภจร เซี่ยงโหล ม6/5 เลขที่ 6

Search

Read the Text Version

บทท่ี 3-1 โครงสรา้ งภาษาซเี บื้องตน้ Basic C Programming Language 1

ประวตั ิภาษาซี ◼ ภาษาซีพัฒนาข้ึนมาในปี 1970 โดย Dennis Ritchie แห่ง Bell Telephone Laboratories, Inc. (ปัจจุบันคือ AT&T Bell Laboratories) ซ่ึงภาษาซีนั้นมี ต้น กาเนิดมาจากภาษา 2 ภาษา คอื ภาษา BCPL และ ภาษา B ◼ ภาษาซีน้ันถูกใช้งานอยู่ เพียงใน Bell Laboratories จนกระท่ังปี 1978 Brian Kernighan และ Ritchie นัน้ เปน็ ทีร่ จู้ ักกนั ในชือ่ ของ \"K&R C\" 2

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

แนะนาภาษาซี ◼ ภาษาซีเป็นภาษาที่เป็นโครงสร้างและใช้ได้กับงานทั่วไป คาสั่งของภาษาซี จะ ประกอบด้วยพจน์ (term) ซง่ึ จะมลี ักษณะเหมือนกับนิพจน์ทางพีชคณิต และมีส่วน ขยายเป็นคาหลกั (keyword) ในภาษาองั กฤษ เช่น if, else, for, do และ while ◼ ดังนั้นภาษาซีเป็นภาษาระดับสูง ภาษา อ่ืน ๆ เช่น ปาสคาล และ ฟอร์เทรน 77 มี ลักษณะเป็นโครงสรา้ งเช่นกัน แต่ภาษาซีกม็ ี คุณสมบตั ิพเิ ศษเพม่ิ ขึ้น น่ันคือสามารถ ใชง้ านในระดบั ต่า (low-level) ได้ ดงั นั้นจึงเปรียบเหมือนสะพานเชื่อมภาษาเคร่ือง เขา้ กับภาษาระดบั สูง จากจุดนี้ ◼ ทาให้ภาษาซีสามารถใช้กับงานด้านโปรแกรมระบบ (system programming) เช่น เขียน โปรแกรมระบบปฏิบัติการ (operating system) หรือใช้กับงานท่ัว ๆ ไป เช่น เขียน โปรแกรมแก้ปัญหาทางคณิตศาสตร์ ท่ีซับซ้อน หรือเขียนโปรแกรมเพื่อออกใบเสร็จให้กับ ลกู คา้ เป็นต้น 4

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

กระบวนการแปลภาษาคอมพิวเตอร์ คอมพิวเตอร์ทางานได้ตอ้ งมกี ารประมวลผลภาษาเคร่ืองเท่านน้ั เพอ่ื ให้การเขยี นโปรแกรม ได้ง่ายขนึ้ จึงพัฒนาเป็นภาษาคอมพิวเตอร์ จงึ ต้องมีโปรแกรมแปลภาษาคอมพิวเตอร์เป็น ภาษาเครอ่ื ง 6 ท่ีมา: https://www.tamemo.com/post/141/learn-intro-compiler-interpreter/

กระบวนการแปลภาษาคอมพวิ เตอร์ 7 ◼ โปรแกรมแปลภาษาเปน็ ภาษาเครือ่ ง มี 2 ประเภท ◼ อินเทอร์พรีเตอร์ (Interpreter) interpreter ◼ คอมไพเลอร์ (Compiler) compiler ข้นั ตอนการแปลภาษาโปรแกรม

กระบวนการแปลภาษาคอมพวิ เตอร์ ◼ อินเตอรพ์ รเี ตอร์ 8 ◼ ขอ้ ดี ▪ อินเตอร์พรีเตอรถ์ กู สร้างขึ้นไดง้ า่ ยกวา่ และมีขนาดเล็ก ทาใหภ้ าษาทใ่ี ช้อินเตอร์ พรีเตอรส์ ามารถทางานขา้ มแพลตฟอร์มได้ ◼ ขอ้ เสยี ▪ ทางานได้ช้ากว่าคอมไพเลอร์ ◼ คอมไพเลอร์ ◼ ข้อดี ▪ ทางานได้เรว็ ▪ ตรวจสอบข้อผดิ พลาดของโปรแกรมซอร์ดโคด้ ในขัน้ ตอนของการคอมไพล์ ◼ ข้อเสยี ▪ ต้องนาโปรแกรมซอร์ดโคด้ มาแปลใหม่เมื่อเปล่ยี นระบบปฏบิ ตั ิการ เนื่องจาก คอมไพเลอรเ์ ปน็ ตัวแปลภาษาท่ีข้นึ อยู่กบั แพลตฟอรม์ (Platform Specific)

โครงสร้างโปรแกรมภาษาซี 1 Preprocessor Directive int main(void) 2 Global Declarations { 3 Main Function 4 User-Defined Functions Local Declarations User-Defined Functions Statements ; } โครงสร้างภาษาซีประกอบดว้ ยหลายส่วน int function () แต่ในการเขียนไมจ่ าเปน็ จะต้องเขียนทุกส่วน { Local Declarations Statements ; } 9

โครงสรา้ งโปรแกรมภาษาซี 1 Preprocessor Directive HeaderPrototype Functions 2 Global Declarations Local Declarations 3 Main Function Body 4 User-Defined Functions

Preprocessor Directive 1 Preprocessor Directive ◼ ทกุ โปรแกรมตอ้ งมี ◼ ใช้เรยี กไฟลท์ โี่ ปรแกรมใชใ้ นการทางานรว่ มกัน ◼ ใช้กาหนดค่าคงท่ใี หก้ ับโปรแกรม ◼ ใช้กาหนดเง่ือนไขในการคอมไพลใ์ หก้ บั โปรแกรม ◼ เริม่ ตน้ ด้วยเครอื่ งหมาย # ◼ Preprocessor Directives พนื้ ฐานท่วั ไปทนี่ ยิ มใช้มดี ังน้ี ◼ #include ใชส้ าหรบั เรียกไฟล์ท่โี ปรแกรมใชใ้ นการทางาน ◼ #define ใชส้ าหรับกาหนดมาโครทีใ่ หก้ ับโปรแกรม #include #define #undef #if #else #elif #ifdef #ifndef #error #pragma 11 #endif #line

การใช้ #include วิธีการใชง้ าน #include <ชอื่ ไฟล์> หรอื #include “ชือ่ ไฟล์” ตัวอยา่ ง #include <stdio.h> (เปน็ การเรยี กใช้ไฟล์ stdio.h เข้ามาในโปรแกรม) #include <mypro.h> (เป็นการเรียกใช้ไฟล์ mypro.h เขา้ มาในโปรแกรม) < > จะเรียกไฟลใ์ น directory ทีก่ าหนดโดยตวั คอมไพลเ์ ลอร์ “ ” จะเรยี กไฟล์ใน directory ทีทางานอยใู่ นปจั จุบนั 12

การใช้ #define วธิ กี ารใชง้ าน #define ช่อื ค่าทีต่ อ้ งการ ตวั อย่าง #define START 10 (กาหนดคา่ START = 10) #define A 3*5/4 (กาหนดคา่ A=3*5/4) #define pi 3.14159 (กาหนดคา่ pi = 3.14159) #define sum(a,b) a+b (กาหนดคา่ sum(ตวั แปรท1่ี , ตัวแปรท2่ี ) = ตัวแปรท1ี่ +ตวั แปรท่ี2 13

Global Declarations 2 Global Declarations ◼ เป็นการประกาศตัวแปรเพอื่ ใชง้ านในโปรแกรม โดยตัวแปรน้ันสามารถใช้ได้ใน ทกุ ทใี่ นโปรแกรม ◼ เป็นส่วนทีใ่ ช้ในการประกาศฟงั กช์ นั ท่ผี ูใ้ ชง้ านสร้างขึ้น (Function Prototype) ของโปรแกรม ◼ สว่ นน้ีในบางโปรแกรมอาจไมม่ กี ็ได้ 1 #include <stdio.h> 14 2 int x; 3 int main() 4{ 5 x = 5; 6 ... 7 Statement ; 8 return(int value); 9}

3 Main Function ฟงั ก์ชันหลักของโปรแกรม (Main Function) ◼ สว่ นน้ีทกุ โปรแกรมจะตอ้ งมี โดยโปรแกรมหลักจะเร่ิมต้นด้วย main() และตามด้วย เครอ่ื งหมายปีกกาเปิด ‘{’ และปีกกาปดิ ‘}’ ◼ ระหวา่ งปกี กาจะประกอบไปด้วยคาสง่ั (Statement) ตา่ งๆ ทีจ่ ะให้โปรแกรมทางาน ◼ แตล่ ะคาสง่ั จะตอ้ งจบดว้ ยเซมิโคลอน ‘;’ (Semicolon) ◼ ตอ้ งมี return(); เสมอ และตอ้ งใสเ่ ลขจานวนเตม็ เช่น 0 = Success , 1 = Failure #include <stdio.h> int main(void) { ... Statement ; return(int value); } 15

4 User Define Function การสรา้ งฟงั กช์ นั ใช้งานเอง (User Define Function) ◼ สรา้ งฟังก์ชนั หรอื คาใหม่ ข้ึนมาใช้งานตามที่เราตอ้ งการ ◼ ระหวา่ งปีกกาจะประกอบด้วยคาส่งั (Statement) ตา่ งๆ ทจี่ ะให้ฟงั กช์ นั ทางาน ◼ สามารถเรยี กใช้ภายในโปรแกรมได้ทกุ ท่ี #include <stdio.h> 16 int function(); int main(void) { ... Statement ; return(int value); } int function() { Statement ; ... return (int value); }

Preprocessor Directive 1 PreprocessorDirective ตัวอย่าง 1 #include <stdio.h> 2 int feet,inches; 3 4 int main(void) 5{ 6 feet = 6; 7 inches = feet * 12; 8 9 printf(\"Height in inches is %d\",inches); 10 return(0); 11 } ผลการทางาน Height in inches is 72 17

2 Global Declarations สว่ นประกาศ (Global Declarations) ตัวอยา่ ง 1 #include <stdio.h> 2 int feet,inches; 3 int main(void) 4 5 { 6 feet = 6; 7 inches = feet * 12; 8 printf(\"Height in inches is %d\",inches); 9 return(0); } ผลการทางาน Height in inches is 72 18

3 Main Function ฟงั ก์ชันหลกั ของโปรแกรม (Main Function) ตวั อยา่ ง 1 #include <stdio.h> 2 int feet,inches; 3 int main(void) 4 5 { 6 feet = 6; 7 inches = feet * 12; 8 printf(\"Height in inches is %d\",inches); 9 return(0); } ผลการทางาน Height in inches is 72 19

4 User Define Function การสรา้ งฟงั ก์ชันใช้งานเอง (User-Defined Function) ตวั อย่าง 1 #include <stdio.h> 2 int FtoI(int); 3 int feet,inches; 4 int main(void) 5{ 6 feet = 6; 7 inches = FtoI(feet); 8 printf(\"Height in inches is %d\",inches); 9 return(0); 10 } 11 int FtoI(int f) ผลการทางาน 12 { 13 return f*12; Height in inches is 72 14 } 20

หลักการต้งั ชื่อตัวแปร ค่าคงที่ และ ฟงั กช์ นั ◼ ต้องข้นึ ต้นดว้ ยตวั อกั ษรภาษาอังกฤษ (ตัวใหญห่ รือเล็กกไ็ ด้) หรือขีดล่าง ‘_’ ◼ ตามด้วยตวั อกั ษรภาษาองั กฤษ ตัวเลข หรอื ขดี ล่าง (Underscore) ‘_’ ◼ ไมม่ ชี ่องว่างหรือตัวอักษรพิเศษอ่นื ๆ เชน่ ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’ เป็นต้น ◼ ตวั พมิ พ์ใหญแ่ ละเล็กจะเปน็ คนละตัวกนั เชน่ NAME, name, Name, NamE ◼ ห้ามซา้ กบั คาสงวน Reserved Words ของภาษา C เชน่ char, do, const, break,… ◼ ห้ามตง้ั ชือ่ ซ้ากบั Function ท่อี ยู่ใน Library ของภาษา C เช่น printf, scanf, … 21

คาสงวน (Reserved Words) ของภาษา C auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile if static while do _cs _ds asm cdecl far _es _ss near pascal huge interrupt _export 22

คาอธิบายของโปรแกรม (Program Comments) ◼ ใช้เขยี นส่วนอธบิ ายโปรแกรม (คอมเมนต์) ◼ ช่วยให้ผู้ศกึ ษาโปรแกรมภายหลงั เขา้ ใจการทางานของโปรแกรม ◼ สว่ นของคาอธบิ ายจะถูกขา้ มเมื่อคอมไพลโ์ ปรแกรม การเขียนส่วนอธิบายโปรแกรม (comments)ทาได้ 2 วธิ คี ือ // สาหรับคาอธิบายไปจนถึงท้ายบรรทัด และ /* คาอธบิ าย */ ลกั ษณะการใช้เหมือนวงเล็บน้นั เอง 23

คาอธิบายของโปรแกรม (Program Comments) ตวั อยา่ ง #include <stdio.h> // Change Feet to Inches int main() // by CPE RMUTT { // Start int feet,inches; feet = 6; // feet  6 inches = feet * 12; // inches  feet * 12 printf(\"Height in inches is %d\", inches); return(0); // write inches } // Stop ผลการทางาน Height in inches is 72 24

คาส่งั printf( ) เป็นคาสัง่ ท่ีใช้ในการแสดงผลออกทางจอภาพ โดยมีรปู แบบการใช้งานดังน้ี printf(“ขอ้ ความ หรือ control หรือ format string”,variable list ); control หรอื format string เป็นส่วนท่ีใส่ข้อความที่จะแสดงผล และส่วนควบคุมลักษณะการแสดงผล รวมท้ังบอกตาแหนง่ ทต่ี ัวแปรจะแสดงผล variable list เปน็ ตัวแปรทตี่ อ้ งการจะแสดงผล ในกรณที ี่ตอ้ งการแสดงขอ้ ความ ไม่จาเป็นต้องมีส่วนนี้ 25

ตัวอย่างโปรแกรม การใช้คาส่ัง printf( ) ชุดคาสัง่ ทีเ่ ก็บอยูใ่ น library ที่ช่อื วา่ stdio.h (standard input-output) โปรแกรม ผลการทางาน 26

ตัวอย่างโปรแกรม การใช้คาส่ัง printf( ) ชุดคาสัง่ ทีเ่ ก็บอยูใ่ น library ที่ชอ่ื วา่ stdio.h (standard input-output) โปรแกรม ผลการทางาน 27

การใชอ้ กั ขระควบคมุ การแสดงผล คาส่ัง printf( ) สามารถควบคุมการแสดงผล ดว้ ยอกั ขระท่มี ี backslash นาหน้า \\n ขึ้นบรรทัดใหม่ \\t เว้นระยะ 1 tab \\a ส่งเสียงป้ิบ \\\\ แสดง \\ \\\" แสดง “ 28

ตวั อย่างโปรแกรม การใชอ้ กั ขระควบคุมการแสดงผล โปรแกรม Backslash n ขน้ึ บรรทัดใหม่ #include <stdio.h> int main() { printf(\"Welcome to RMUTT\\n\"); printf(\" Department of Computer Engineering\"); return(0); } ผลการทางาน Welcome to RMUTT Department of Computer Engineering 29

รหสั ควบคุมลกั ษณะ (Format String) %d พมิ พ์จานวนเตม็ ฐานสบิ %u พิมพ์เลขไมม่ ีเครื่องหมาย %f พมิ พ์เลขทศนิยม %e พิมพ์ในรปู จานวนจริงยกกาลงั %c พมิ พต์ ัวอกั ขระตวั เดียว (Character) %s พิมพช์ ดุ ตวั อักขระ (String) %% พิมพ์เคร่อื งหมาย % %o พิมพเ์ ลขฐานแปด %x พมิ พ์เลขฐานสบิ หก 30

ตัวอย่างโปรแกรม การใชร้ หสั ควบคมุ ลักษณะ โปรแกรม #include <stdio.h> int main() { %5.2f %s\", 12, 20.3, \"Example\"); printf(\"%d return(0); } ผลการทางาน 12 20.30 Example %d %5.2f %s คอื รหัสควบคุม 31

ตัวอยา่ งโปรแกรม การใชร้ หสั ควบคุมลกั ษณะ โปรแกรม %x\", x, x, x, x); #include <stdio.h> int main() { int x ; x=65 ; printf(\"%d %c %o return(0); } ผลการทางาน 65 A 101 41 ผลจากการใชร้ หัสควบคุมลกั ษณะด้วย %c จะไดค้ ่าผลลพั ธ์เปน็ A ซงึ่ เปน็ อักขระลาดบั ที่ 65 ของตาราง ASCII 32

Standard ASCII Characters Dec Hex Oct Char Description 64 40 100 @ Commercial at/At sign 65 41 101 A Latin capital letter A 66 42 102 B Latin capital letter B 67 43 103 C Latin capital letter C 68 44 104 D Latin capital letter D 69 45 105 E Latin capital letter E 70 46 106 F Latin capital letter F 71 47 107 G Latin capital letter G 72 48 110 H Latin capital letter H 73 49 111 I Latin capital letter I อา้ งอิง https://www.techonthenet.com/ascii/chart.php 33

การจัดการหน้าจอด้วยรหสั ควบคุมลักษณะ ในกรณีท่ีตอ้ งการจัดการหนา้ จอแสดงผลสามารถใชต้ วั เลขร่วมกนั กบั รหสั ควบคุมได้ เชน่ %5d หมายถงึ แสดงตวั เลขจานวนเตม็ 5 หลักอย่างต่า %5.2f หมายถึง แสดงตัวเลขจานวนจานวน 5 หลักอย่างต่า และทศนิยม 2 ตาแหนง่ คา่ %d %5d ค่า %f %5.2f 12 12 _ _ _12 1.2 1.200000 _1.20 123 123 _ _123 1.234 1.234000 _1.23 1234 1234 _1234 12.345 12.345000 12.35 12345 12345 12345 123.456 123.456000 123.46 34

คาถามเกยี่ วกับ printf( ) จากส่วนของโปรแกรม yards = 8; feet = yards * 3; printf(\"%d yards is\", yards); printf(\"%d feets \\n\", feet); ผลการทางาน คือ ? 8 yards is24 feets _ 35

คาถามเกี่ยวกบั printf( ) จากส่วนของโปรแกรม yards = 8; feet = yards * 3; printf(\"%d yards is \\n\", yards); printf(\"%d feets\", feet); ผลการทางาน คอื ? 8 yards is 24 feets 36

การใช้ scanf( ) เปน็ คาสงั่ ทใี่ ชใ้ นการรบั ค่า โดยมีรูปแบบการใช้งานดงั น้ี scanf(\"format string\", address list …); format string เป็นสว่ นทีใ่ ช้ในการใสร่ ูปแบบของการรบั ข้อมูล address list เป็นตาแหนง่ ของตวั แปรทต่ี ้องการเกบ็ ขอ้ มูล 37

ตวั อยา่ งโปรแกรม การใช้ scanf( ) โปรแกรม #include <stdio.h> int main() { int x ; scanf(\"%d\",&x); printf(\"%d\",x); return(0); } ผลการทางาน 2563 -1 2563 -1 38

ตัวอย่างโปรแกรม ทม่ี ีการโตต้ อบกบั ผู้ใช้ 1 #include <stdio.h> 2 3 int main() { 4 float b,h,area ; 5 printf(\"Input Base :> \"); 6 scanf(\"%f\",&b); 7 printf(\"Input Height :> \"); 8 scanf(\"%f\",&h); 9 area = 0.5*b*h ; 10 printf(\"Area of triangle is %5.2f\",area); 11 return(0); 12 } Input Base :> 12.0 Input Base :> 3.2 Input Height :> 6.0 Input Height :> 1.2 Area of triangle is 36.00 Area of triangle is 1.92 39

จบบทที่ 3-1 โครงสรา้ งภาษาซเี บือ้ งตน้ Basic C Programming Language 40


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook