Overview of C Programming กราบเรียนท่านอาจารย์ และสวัสดีเพื่อนๆ
ทำไมต้องเขียนโปรแกรมคอมพิวเตอร์ 1. เครื่องคอมพิวเตอร์เป็นอุปกรณ์อิเล็กทรอนิกส์อย่างหนึ่ง โดยการให้เครื่องคอมพิวเตอร์ทำงานจะต้องป้อนคำสั่งให้กับมัน และต้องเป็นคำสั่งที่เครื่องคอมพิวเตอร์เข้าใจ 2. การนำคำสั่งมาเรียงต่อกันให้ทำงานอย่างใดอย่างหนึ่งเรียกว่า โปรแกรม เมื่อโปรแกรมถูกป้อนเข้าไปในเครื่องคอมพิวเตอร์ ตัวเครื่องจะทำงานทีละคำสั่ง 3. สำหรับการใช้คำสั่งสั่งงานให้คอมพิวเตอร์ทำงานนั้นจะต้องใช้ภาษาที่คอมพิวเตอร์รหัสเลขฐานสอง เมื่อมีการป้อนภาษานี้เข้าไปในเครื่องคอมพิวเตอร์ รหัสเลขฐานสองจะถูกเปลี่ยนเป็นสัญญาณทางไฟฟ้าที่คอมพิวเตอร์เข้าใจ
ภาษาคอมพิวเตอร์ การออกแบบตัวอักษรภาษาอังกฤษให้แทนคำสั่งรหัสเลขฐานสอง เรียกว่า รหัสนีโมนิก เลขฐานสอง ภาษาระดับต่ำ ได้แก่ ภาษาแอสเซมบลี ภาษาระดับสูง ได้แก่ ภาษาเบสิก ภาษาซี ภาษาปาสคาล โคบอล เป็นต้น ภาษาสมัยใหม่ ได้แก่ VisualBasic, Visual C, Java, PHP , Paul
ประวัติความเป็นมาภาษา ซี BCPL ภาษา B ภาษา C Basic Combined Programming Language บนเครื่อง PDP-7 (UNIX) พ.ศ. 2513 พ.ศ. 2515 โดย เดนนิช ริทชี่
ภาษาซี (C Language) คุณสมบัติ เป็นภาษาระดับสูง ไม่ขึ้นกับระบบปฏิบัติการ (OS) ไม่ขึ้นกับชนิดของเครื่องคอมพิวเตอร์ เป็นภาษาโครงสร้าง (Structure Language) กราบเรียนท่านอาจารย์ และสวัสดีเพื่อนๆ
โครงสร้างของโปรแกรมภาษาซี โครงสร้างประกอบด้วย ส่วนประมวลผลก่อน ส่วนประกาศส่วนกลาง ส่วนของฟังก์ชัน ส่วนต้นแบบฟังก์ชัน 1. ส่วนประมวลผลก่อน 2. ส่วนประกาศส่วนกลาง 3. ส่วนต้นแบบฟังก์ชั่น 4. ส่วนของฟังก์ชั่น กราบเรียนท่านอาจารย์ และสวัสดีเพื่อนๆ
ส่วนประมวลผลก่อน #include <stdio.h> #define START 0 ส่วนที่ 1 เป็นส่วนที่ระบุให้ซีคอมไพเลอร์เตรียมการทำงานที่ กำหนดในส่วนนี้ไว้ โดยหน้าคำสั่งจะมีเครื่องหมาย # เช่น เป็นการระบุให้นำไฟล์ stdio.h มารวมกับไฟล์นี้ เพื่อที่จะสามารถใช้คำสั่งที่อยู่ในไฟล์นี้มาใช้งานได้ หรือ เป็นการกำหนดค่าคงที่ให้กับตัวแปร START โดยให้มีค่าเป็น 0 เป็นการกำหนดให้ตัวแปร temp มีค่าเท่ากับ 37 #include <stdio.h> #define START 0 #define temp 37
ส่วนประกาศส่วนกลาง char name; ส่วนที่ 2 declaration เป็นการกำหนดชนิดข้อมูลที่จะใช้ใน โปรแกรมซึ่งตัวแปรหรือข้อมูลต่าง ๆ นั้นจะต้องถูกประกาศ ในส่วนนี้ก่อน จึงจะสามารถนำไปใช้ในโปรแกรมได้ เช่น เป็นการกำหนดว่าตัวแปร name เป็นข้อมูลชนิดตัวอักษร หรือ ข้อความ เป็นต้น char name;
ส่วนประกาศส่วนกลาง int stdno; float score; หรือ interger ซึ่งอาจได้แก่ค่า 0,4,-1,-3,…. เป็นต้น เป็นการกำหนดว่าตัวแปร score เป็นข้อมูลชนิดเลขมีจุด ทศนิยม (floating point)ซึ่งอาจมีค่า 0.23, 1.34 เป็นต้น int stdno; float score;
ส่วนประกาศต้นแบบฟังก์ชั่น ส่วนที่ 3 เป็นส่วนที่ใช้กำหนดว่ามีฟังก์ชั่นอะไรบ้าง และมีการประกาศพารามิเตอร์อย่างไร เช่น เป็นการประกาศฟังก์ชั่นต้นแบบสำหรับฟังก์ชั่นชื่อ main เป็นการประกาศฟังก์ชั่นต้นแบบสำหรับพังก์ชั่นชื่อ main โดยมีค่าที่ส่งกลับเป็นชนิด interger และไม่มีการส่งค่าเข้าไปในฟังก์ชั่นนี้ main ( ) int main ( void );
ส่วนประกาศฟังก์ชั่น int main ( void ) { printf ( “Hello World \n” ); ส่วนที่ 4 เป็นส่วนที่ใช้กำหนดรายละเอียดของแต่ละฟังก์ชั่น ว่ามีลักษณะการทำงานเป็นอย่างไรบ้าง รับค่าใดเข้าไปในฟังก์ชั่นบ้าง และส่งค่ากลับเป็นอะไร เช่น เป็นการประกาศฟังก์ชั่นชื่อ main ตามฟังก์ชั่นต้นแบบ สำหรับฟังก์ชั่น main นี้ไม่มีการรับค่าเข้าในฟังก์ชั่น แต่เมื่อทำงานเสร็จแล้วจะส่งค่ากลับมาเป็น 0 int main ( void ) { printf ( “Hello World \n” ); return (0); }
กฎเกณฑ์ของโปรแกรมภาษาซี กฎเกณฑ์ (Rules) ประกอบด้วยส่วนย่อย ๆ โดยใช้ปีกกา ({ }) เป็นตัวกำหนดขอบเขต ฟังก์ชั่นแรกต้องเป็น main() เสมอ ใช้เครื่องหมาย ; (semi colon) เป็นตัวกำหนดการ สิ้นสุดของคำสั่ง ใช้อักษรตัวเล็กในการเขียนโปรแกรม ใช้เครื่องหมาย , (comma) เป็นตัวคั่นตัวแปรและ พารามิเตอร์ ใช้เครื่องหมาย /* */ เป็นการกำหนดข้อความ ที่ไม่ ต้องการให้คอมไพเลอร์ปฏิบัติงาน กราบเรียนท่านอาจารย์ และสวัสดีเพื่อนๆ
//Program name file.c #include <stdio.h> โครงสร้างโปรแกรม //Program name file.c #include <stdio.h> #include <stdlib.h> type variable; main () { ..............; system(“pause”); }
ชนิดและแบบของข้อมูลในภาษาซี แบบข้อมูลหรือชนิดของตัวแปรต่าง ๆ ที่กำหนดไว้ในภาษาซีประกอบด้วย char ชนิดของตัวอักษรหรืออักขระ int ชนิดจำนวนเต็มปกติ short ชนิดจำนวนเต็มปกติ long ชนิดจำนวนเต็มที่มีความยาวเป็น 2 เท่า unsigned ชนิดของเลขที่ไม่คิดเครื่องหมาย float ชนิดเลขมีจุดทศนิยม double ชนิดเลขที่มีจุดทศนิยมความยาว เป็น 2 เท่า
ตารางแสดงเนื้อที่ในหน่วยความจำของชนิดข้อมูล
ชนิดและแบบของข้อมูลในภาษาซี ในการเขียนโปรแกรม แบบข้อมูลที่ใช้จะแบ่งออกเป็น 4 กลุ่มใหญ่ ๆ ดังนี้ ข้อมูลและตัวแปรชนิดอักขระ ข้อมูลและตัวแปรชนิดจำนวนเต็ม ข้อมูลและตัวแปรชนิดเลขมีจุดทศนิยม ข้อมูลและตัวแปรแบบสตริง
ชนิดข้อมูลชนิดอักขระ อักขระแทนด้วย char โดยอยู่ภายในเครื่องหมาย ‘ ’ เช่น ‘a’ , ‘A’ , ‘9’ อักขระพิเศษบางตัวไม่สามารถให้ค่าได้โดยตรง แต่ จะให้ค่าเป็นรหัส ASCII ซึ่งจะเขียนในรูปของเลข ฐานแปด เช่น รหัส BELL แทนด้วย ASCII 007 เขียนแทนด้วย BELL=‘\007’ หรือรหัสควบคุมการ ขึ้นบรรทัดใหม่ ตัวอักขระที่กำหนดให้กับรหัส คือ n สามารถกำหนดเป็น newline = ‘\n’;
ชนิดข้อมูลของเลขจำนวนเต็ม จำนวนเต็มในภาษาซีสามารถใช้แทนได้ 4 รูปแบบ คือ int, short, long และ unsigned การกำหนดตัวแปรแบบ unsigned คือจำนวนเต็ม ที่ไม่คิดเครื่องหมาย ซึ่งจะต้องใช้ควบคู่กับรูปแบบ ข้อมูลจำนวนเต็มชนิดอื่น คือ int , short หรือ long เช่น unsigned int unsigned short
ชนิดข้อมูลของเลขมีจุดทศนิยม การกำหนดขนิดข้อมูลเลขจุดทศนิยมสามารถ กำหนดได้ 2 แบบ คือ float , double โดย double เก็บค่าได้เป็น 2 เท่าของ float ตัวเลข แบบนี้นิยมใช้กับงานทางวิทยาศาสตร์ที่ต้องการ ความละเอียดในการเก็บค่า การเก็บข้อมูลในรูปแบบนี้ คือ เก็บแบบเอ็กโพเนนซ์ ดังตัวอย่างต่อไปนี้ ตัวเลข แสดงแบบเอ็กโพเนนซ์ แสดงแบบวิทยาศาสตร์ 9,000,000,000 9.0*109 9.0e9 345,000 3.45*105 3.45e5 0.00063 6.3*10-4 6.3e-4 0.00000924 9.24*10-6 9.24e-6
ชนิดข้อมูลแบบสตริง สตริงหมายถึงการนำตัวอักขระหลายตัวมาประกอบ กันเป็นข้อความ จะเรียกว่า array หรือแถวลำดับของตัวอักขระ นั่นเอง ในการใช้งานชนิดข้อมูลแบบสตริงนั้นอักขระตัว สุดท้ายจะเก็บรหัส null คือ \0 หมายถึงจุดจบของ ข้อความ เช่น H e l o \0 1 2 3 4 5 6
ตัวแปรในภาษาซี ตัวแปร คือ การจองเนื้อที่ในหน่วยความจำและตั้งชื่อไว้ เพื่อเรียกใช้งานในขณะปฏิบัติงาน การกำหนดชื่อตัวแปร มีหลักการดังนี้ 1. ต้องขึ้นต้นด้วยตัวอักษร 2. ห้ามใช้เครื่องหมายทางคณิตศาสตร์ในชื่อ ตัวแปร 3. สามารถใช้เครื่องหมาย underline ‘_’ ได้ 4. ห้ามใช้ reserved words เช่น int, float,etc.
การประกาศตัวแปรในภาษาซี การประกาศชื่อตัวแปรในภาษาซีสามารถทำได้ดังนี้ <ชนิดข้อมูล> <ชื่อตัวแปร>; ตัวอย่างเช่น char ch; double height; int num; unsigned int a; float width; long int b;
การเขียนประโยคคำสั่ง การเขียนประโยคคำสั่งในภาษาซี แต่ละคำสั่งจะ ประกอบด้วย ตัวระบุ (Identifier) คำสงวน ตัวแปร ชื่อฟังก์ชั่น และตัวดำเนินการ (operator) ต่าง ๆ แต่ละคำสั่งจบลงด้วยเครื่องหมายอัฒภาค (;) เช่น printf ( “Hello” ); printf ( “ C \n” ); อาจเขียนในบรรทัดเดียวกันก็ได้ เช่น printf ( “Hello” );printf ( “ C \n” ); ทั้งสองแบบให้ผลลัพธ์เหมือนกัน
การแสดงผลลัพธ์ในภาษาซี การแสดงผลลัพธ์ในภาษาซีจะใช้ฟังก์ชั่น printf โดยที่ฟังก์ชั่น printf มีรูปแบบดังนี้ ส่วนควบคุมการพิมพ์ จะเป็นข้อความและรูปแบบ ของการพิมพ์โดยอยู่ในเครื่องหมาย “ ” อาร์กิวเมนต์ เป็นส่วนที่จะนำข้อมูลมาพิมพ์ ตามรูปแบบที่กำหนดมาในส่วนควบคุมการพิมพ์ printf( ส่วนควบคุมการพิมพ์, อาร์กิวเมนต์, …)
รูปแบบที่ใช้กำหนดการพิมพ์ใน printf รูปแบบการพิมพ์สำหรับตัวเลขมีดังนี้ %d พิมพ์ข้อมูลจำนวนเต็มด้วยเลขฐานสิบ %o พิมพ์ข้อมูลด้วยเลขฐานแปด %x พิมพ์ข้อมูลด้วยเลขฐานสิบหก %u พิมพ์ข้อมูลด้วยเลขฐานสิบแบบไม่คิด เครื่องหมาย %e พิมพ์ข้อมูลด้วยตัวเลขแบบวิทยาศาสตร์ เช่น 2.13e45 %f พิมพ์ข้อมูลด้วยตัวเลขมีจุดทศนิยม %g พิมพ์ข้อมูลด้วยรูปแบบ %e หรือ %f โดยเลือกแบบที่สั้นที่สุด
รูปแบบที่ใช้กำหนดการพิมพ์ใน printf รูปแบบการพิมพ์สำหรับสตริงมีดังนี้ %c พิมพ์ด้วยตัวอักษรตัวเดียว %s พิมพ์ด้วยข้อความ ตัวอย่างการคำสั่ง printf เช่น printf ( “%d %f %s“ , 20 , 25.5 , “Hello” ); คู่ที่ 1 คู่ที่ 2 คู่ที่ 3
เครื่องหมายปรับเปลี่ยนรูปแบบข้อมูล เครื่องหมายสำหรับปรับเปลี่ยนรูปแบบของข้อมูล ในการแสดงผล เครื่องหมายลบ ให้พิมพ์ข้อมูลชิดขอบซ้าย (ปกติข้อมูลทั้งหมดจะพิมพ์ชิดขวา) สตริงตัวเลข ระบุความกว้างของฟิลด์ จุดทศนิยม เป็นการกำหนดความกว้างของ จุดทศนิยม ตัวอย่างการใช้เครื่องหมายปรับเปลี่ยนรูปแบบของ การแสดงผล printf ( “%3d %-6.0f “ , 20 , 25.5 );
การรับข้อมูลเข้าในภาษาซี การรับข้อมูลเข้ามาใช้งานในภาษาซีจะใช้ฟังก์ชั่น scanf รูปแบบของ scanf ( ) ส่วนควบคุมข้อมูล เป็นการกำหนดรูปแบบ ข้อมูลในเครื่องหมาย “ ” อาร์กิวเมนต์ เป็นส่วนที่จะนำข้อมูลมาเก็บ (ในตัวแปร) ซึ่งชนิดของข้อมูลต้องตรงตาม รูปแบบที่กำหนดในส่วนควบคุมข้อมูล scanf( ส่วนควบคุมข้อมูล, อาร์กิวเมนต์,...)
การรับข้อมูลเข้าในภาษาซี การกำหนดลักษณะอาร์กิวเมนต์มีได้ 2 แบบดังนี้ ถ้าข้อมูลนั้นอาจจะนำไปใช้ในการคำนวณ จะใส่เครื่องหมาย & หน้าตัวแปร ถ้าข้อมูลนั้นเป็นข้อความที่จะนำไปเก็บไว้ในตัว แปรเลยไม่จำเป็นต้องใส่เครื่องหมาย & หน้า ตัวแปร ตัวอย่างการใช้ฟังก์ชั่น scanf scanf ( “%d “,&num); scanf ( “%s “,str);
เครื่องหมายที่ใช้คำนวณในภาษาซี เครื่องหมายที่ใช้คำนวณในภาษาซีเรียกว่า ตัวดำเนินการ (Operator) มีดังนี้ ตัวดำเนินการ ความหมาย ตัวอย่าง ผลลัพธ์ + การบวก 6 + 8 14 - การลบ 7 – 5 2 * การคูณ 3 * 4 12 / การหาร 8/2 4 ลบ (ยูนารีเครื่องหมายลบ) -5 % โมดูลัส (หาเศษเหลือจากการหาร) 7 % 2 1 4 % 2
การเปลี่ยนชนิดของข้อมูล ทำได้โดยระบุชนิดที่ต้องการเปลี่ยนภายใน เครื่องหมาย ( ) แล้ววางหน้าตัวแปรหรือข้อมูล ที่ต้องการเปลี่ยนแปลงชนิด ตัวอย่าง ถ้าในโปรแกรมภาษาซีมีการประกาศ ตัวแปรเป็น ต้องการเปลี่ยนตัวแปร float ไปเป็น integer ทำได้ดังนี้ float money; (int) money;
นิพจน์กำหนดค่า นิพจน์กำหนดค่า (Assignment expression) เครื่องหมายที่ใช้กำหนดค่าคือ = โดยเป็นการ กำหนดค่าทางขวาของเครื่องหมาย ให้กับตัวแปร ที่อยู่ทางซ้าย เช่น j = 7+2; หรือ k = k + 4;
นิพจน์กำหนดค่า สัญลักษณ์ ความหมาย > มากกว่า < น้อยกว่า >= มากกว่าหรือเท่ากับ <= น้อยกว่าหรือเท่ากับ == เท่ากับ != ไม่เท่ากับ
นิพจน์กำหนดค่า ความแตกต่างของเครื่องหมาย = และ == เครื่องหมาย = เป็นตัวกำหนดค่า เครื่องหมาย == เป็นเครื่องหมายเปรียบเทียบ ตัวอย่างเช่น หมายถึง เป็นการกำหนดค่าให้กับตัวแปร point ให้มีค่าเท่ากับ 44 หมายถึง เป็นการตรวจสอบว่าค่า point มีค่าเท่ากับ 44 หรือไม่ point = 44; point == 44;
เครื่องหมายและนิพจน์แบบตรรกศาสตร์ เครื่องหมายและนิพจน์เปรียบเทียบแบบ ตรรกศาสตร์ && หมายถึง และ (and) | | หมายถึง หรือ (or) ! หมายถึง ไม่ (not) ตัวอย่างเช่น จะได้ค่าความจริงเป็นจริงก็ต่อเมื่อ a และ b เป็นจริงทั้งคู่ จะได้ค่าความจริงเป็นเท็จก็ต่อเมื่อ a และ b เป็นเท็จทั้งคู่ a && b a || b
การเพิ่มค่าและลดค่าตัวแปร สามารถใช้เครื่องหมายต่อไปนี้แทนการเพิ่มหรือ ลดค่าของตัวแปร ++ เป็นการเพิ่มค่าให้กับตัวแปรทีละ 1 -- เป็นการลดค่าตัวแปรทีละ 1 ตัวอย่างเช่น ++n เป็นการเพิ่มค่า n อีก 1 --n เป็นการลดค่า n ลง 1 ความแตกต่างระหว่าง n++ และ ++n เช่น n = 5; x = n++; จะได้ค่า x เท่ากับ 5 แล้วค่า n เท่ากับ 6 แต่ถ้า x = ++n; จะได้ค่า x เท่ากับ 6
END Department of Computer Science