1 / 87

การใช้งานภาษาซี

การใช้งานภาษาซี. C Compiler. Linker. Library. Computer. Computer. Object file. Execute file. Source file. รูปที่ 1. 1 แสดงขั้นตอนการคอมไพล์และลิงค์โปรแกรมภาษาซี. ( 1 ) ส่วนอธิบายโปรแกรม( Comments )

hayley
Télécharger la présentation

การใช้งานภาษาซี

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. การใช้งานภาษาซี

  2. C Compiler Linker Library Computer Computer Object file Execute file Source file รูปที่ 1.1 แสดงขั้นตอนการคอมไพล์และลิงค์โปรแกรมภาษาซี

  3. ( 1 ) ส่วนอธิบายโปรแกรม( Comments ) ใช้สำหรับอธิบายการทำงานของโปรแกรมซึ่งข้อความในส่วนนี้เมื่อผ่านการแปลคำสั่ง ตัวแปรคำสั่งจะไม่สนใจว่าเป็นส่วนหนึ่งของโปรแกรม ( 2 ) พรีโปรเซสเซอร์ไดเรกทีฟ ( Preprocessor directives ) เป็นส่วนที่ทุกโปรแกรมต้องมี ใช้สำหรับเรียกไฟล์ที่โปรแกรมต้องการและกำหนดค่าต่างๆ ซึ่งจะต้องเริมต้นด้วยเครื่องหมายไดเรกทีฟ ( # ) และตามด้วยชื่อที่ต้องการกำหนดค่า ( 3 ) ส่วนประกาศ (Global Declaration) ใช้ในการประกาศชื่อตัวแปร หรือฟังก์ชันที่ต้องใช้ในโปรแกรม โดยทุกๆ ส่วนของโปรแกรมสามารถจะเรียกใช้ข้อมูลส่วนนี้ได้

  4. (4) ส่วนฟังก์ชันหลัก (main program) เป็นส่วนที่โปรแกรมภาษาซีทุกโปรแกรมต้องมี ในฟังก์ชัน main จะประกอบด้วยคำสั่งต่างๆ ที่ใช้ในการสั่งงานโปรแกรม เรียงต่อๆ กัน โดยแต่ละประโยคคำสั่งจะจบลงด้วยเครื่องหมาย semi colon (;) (5) ส่วนกำหนดฟังก์ชันขึ้นใช้เอง (User defined function) เป็นการเขียนฟังก์ชันขึ้นใช้งานเองของผู้ใช้ ซึ่งนอกเหนือจากฟังก์ชันโปรแกรมภาษาซีมีไว้ให้

  5. กลุ่มคำในภาษาซีกลุ่มคำที่มีใช้งานในภาษาซีมี 2 ประเภท คือ 1. คำสงวน (Keywords) คือคำที่ภาษาซีกำหนดไว้ก่อนแล้ว เพื่อใช้งาน ตัวอย่างเช่น auto, do, default, float, return, switch, int, char เป็นต้น 2. คำที่ผู้ใช้ตั้งขึ้นใหม่ (User Defines words) คือ กลุ่มอักษรที่นิยามขึ้นใช้ในโปรแกรม โดยผู้เขียนโปรแกรมกำหนดขึ้นเอง มีข้อกำหนดดังนี้ 2.1 ตัวอักษรภาษาอังกฤษตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ภาษาซีถือว่าเป็นคนละตัวกัน เช่น test และ Test เป็นตัวแปรคนละตัวกัน 2.2 ตัวอักษรตัวแรกต้องเป็นตัวอักษรหรือ _ จะเป็นตัวเลขไม่ได้ 2.3 ตัวอักษรที่ไม่ใช่ตัวแรกจะเป็นตัวอักษรหรือ _ หรือตัวเลขก็ได้ 2.4 ก่อนการใช้ชื่อใดๆ ต้องนิยามก่อนเสมอ 2.5 ห้ามตั้งชื่อซ้ำกับคำสงวน 2.6 ภายในกลุ่มคำสั่ง สามารถกำหนดชื่อขึ้นใหม่ได้ ชื่อนั้นจะถูกใช้งานภายในกลุ่มคำสั่ง และกลุ่มคำสั่งที่ย่อยลงไปเท่านั้น หากชื่อในกลุ่มคำสั่งไปซ้ำกับที่นิยามไว้ภายนอก จะถือเอาชื่อที่นิยามใหม่เป็นหลัก

  6. ตัวแปร (Variable) ในภาษาซี ตัวแปร หมายถึงชื่อเรียกแทนพื้นที่เก็บข้อมูลในหน่วยความจำ มีชนิดของข้อมูล หรือแบบของตัวแปรคือ char, int, long, float, double, unsigned int, unsigned long int, 1. การกำหนดตัวแปร ทำได้ 2 แบบ คือ 1.1 กำหนดไว้นอกกลุ่มคำสั่ง หรือฟังก์ชันเรียกตัวแปรนี้ว่า Global Variable กำหนดไว้นอกฟังก์ชัน ใช้งานได้ทั้งโปรแกรม มีค่าเริ่มต้นเป็น 0 (กรณีไม่ได้กำหนดค่าเริ่มต้น) 1.2 กำหนดไว้ในกลุ่มคำสั่ง หรือฟังก์ชัน เรียกตัวแปรนี้ว่า Local Variable กำหนดไว้ภายในฟังก์ชัน ใช้งานได้ภายในฟังก์ชันนั้น และไม่ถูกกำหนดค่าเริ่มต้นโดยอัตโนมัติ 2.การประกาศตัวแปร มีลักษณะดังนี้ ชนิดตัวแปร ชื่อตัวแปร,ชื่อตัวแปร,ชื่อตัวแปร,.....;

  7. 3. ชนิดของข้อมูลในภาษาซี 3.1 ตัวแปรแบบ char เป็นตัวแปรที่ใช้สำหรับเก็บข้อมูลที่เป็นตัวอักษรขนาด 1 ตัว( 1 ไบต์ ) 3.2 ตัวแปรแบบ integer เป็นตัวแปรที่ใช้สำหรับการเก็บค่าตัวเลขที่เป็นจำนวนเต็ม( 2 ไบต์ ) 3.3 ตัวแปรแบบ long เป็นตัวแปรที่เก็บค่าเป็นจำนวนเต็มที่มีจำนวนไบต์เป็น2เท่าของจำนวน 3.4ตัวแปรแบบ float เป็นตัวแปรที่ใช้เก็บข้อมูลที่เป็นเลขทศนิยม ( 4 ไบต์ ) 3.5 ตัวแปรแบบ double เป็นตัวแปรที่เก็บข้อมูลที่เป็นเลขทศนิยมเหมือนกับ float แต่จะใช้พื้นที่ในการเก็บมากกว่าเดิม 2 เท่า ( 8 ไบต์ ) 3.6 ตัวแปรแบบ unsigned แสดงว่าเป็นตัวแปรที่เก็บค่าเป็นจำนวนเต็มแบบไม่คิดเครื่องหมาย (เป็นบวกเท่านั้น) มักจะใช้เป็นคำนำหน้าตัวแปร

  8. ตัวประมวลผลก่อน (Preprocessor) คือ ส่วนที่คอมไพเลอร์จะต้องทำก่อนทำการแปลโปรแกรม คำสั่งของตัวประมวลผลก่อนจะนำหน้าด้วยเครื่องหมาย # มีคำสั่งต่างๆ ต่อไปนี้ #include #define #if #program #endif #error #ifndef #undef #elif #else #ifdef คำสั่งที่น่าสนใจมี 2 คำสั่งคือ 1. #include ทำหน้าที่แจ้งให้คอมไพเลอร์อ่านไฟล์อื่นเข้ามาแปลร่วมด้วย มีรูปแบบดังนี้ #include <filename> หรือ #include “filename ” เช่น #include <dos.h> อ่านไฟล์ dos.h จากไดเร็คทรอรีที่กำหนด #include “sample.h ” อ่านไฟล์ sample.h จากไดเร็คทรอรีปัจจุบันหรือที่กำหนด

  9. 2.#define ทำหน้าที่ใช้กำหนดค่าคงที่ ที่เป็นชื่อแทน คำ นิพจน์ คำสั่งหรือคำสั่งหลายคำสั่ง มีรูปแบบการใช้งานดังนี้ #define ชื่อตัวแปร (ชื่อที่ใช้แทน)ค่าที่ต้องการกำหนด เช่น #define TEN 10 กำหนดตัวแปร TEN แทนค่า 10 #define PI 3.141592654 กำหนดตัวแปร PI แทนค่า 3.141592654 เครื่องหมายดำเนินการ (Operators) ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operators) ตัวดำเนินการทางคณิตศาสตร์เป็นตัวดำเนินการที่คำนวณทางด้านคณิตศาสตร์ให้มีค่าออกมามีชนิดสอดคล้องกับชนิดของตัวถูกกระทำ ประกอบด้วยตัวดำเนินการต่างๆ ดังนี้ ตารางที่ 1.1 แสดงประเภทของตัวดำเนินการทางคณิตศาสตร์

  10. ตารางที่ 1.1 แสดงประเภทของตัวดำเนินการทางคณิตศาสตร์

  11. ตัวดำเนินการเพิ่ม และลดค่า (Increment & Decrement) ตัวดำเนินการเพิ่มและลดค่า เป็นตัวดำเนินการในการเพิ่มหรือลดค่าของตัวแปรโดยตัวดำเนินการเพิ่มค่า ++ จะบวกหนึ่งเข้ากับตัวถูกดำเนินการ ตัวดำเนินการลดค่า -- จะลบหนึ่งออกจากตัวถูกดำเนินการ สาเหตุที่มีตัวดำเนินการนี้ เพราะการดำเนินการเพิ่มหรือลดค่าเกิดขึ้นเสมอ สำหรับตัวดำเนินการ ตัวดำเนินการเพิ่ม และลดค่ามีวิธีใช้งาน 2 แบบคือ ใช้เป็นตัวดำเนินการแบบมาก่อน (prefix) เช่น ++n ใช้ตัวดำเนินการแบบตามหลัง (postfix) ก็ได้เช่น n++ ตัวอย่างเช่นถ้า n มีค่า 5 x = n++; จะเป็นการกำหนดค่า x ให้กับ 5 x = ++n; จะเป็นการกำหนดค่า x ให้กับ 6 ตัวดำเนินการนี้จะใช้ได้กับเฉพาะตัวแปรเท่านั้น

  12. 1. ตัวดำเนินการสัมพันธ์ (Relational Operator) ตัวดำเนินการสัมพันธ์ เป็นเครื่องหมายที่ใช้ในการเปรียบเทียบและตัดสินใจซี่งผลของการเปรียบเทียบจะเป็นได้ 2 กรณีเท่านั้นคือ จริงและเท็จ โดยที่ 1 หรือตัวเลขใดๆ แทนค่าความจริงเป็นจริงและ 0 แทนค่าความจริงเป็นเท็จ (0 เป็นเท็จ ส่วนตัวเลขอื่นๆ ทั้งหมดมีค่าเป็นจริง) เครื่องหมายที่เป็นตัวดำเนินการสัมพันธ์มี 4 ตัวคือ < (น้อยกว่า) > (มากกว่า) <= (น้อยกว่าเท่ากับ) และ>= (มากกว่าเท่ากับ) ตัวอย่างการใช้งาน เช่น a<3 /* ถ้า a มีค่าเป็น 5 ประโยคนี้จะได้ผลลัพธ์เป็น 0 (เท็จ) */ a>b /* ถ้า a=10 b=8 ประโยคนี้จะได้ผลลัพธ์เป็น 1 (จริง) */ ตัวดำเนินการสัมพันธ์และตัวดำเนินการตรรกะ (Relational, Equality, and Logical Operators) ตารางที่ 1.2 แสดงตัวดำเนินการสัมพันธ์และตัวดำเนินการตรรกะ

  13. ตารางที่ 1.2 แสดงตัวดำเนินการสัมพันธ์และตัวดำเนินการตรรกะ

  14. 2. ตัวดำเนินการเท่ากับ (Equality Operator) ตัวดำเนินการเท่ากับ ใช้ในการเปรียบเทียบค่า 2 ค่า ว่ามีค่าเท่า หรือไม่เท่ากัน ผลลัพธ์ที่ได้ จะมีเพียง 2 ค่าเช่นเดียวกับผลลัพธ์ของตัวดำเนินการสัมพันธ์คือ จริง และ เท็จ เครื่องหมายที่เป็นตัวดำเนินการเท่ากับมี 2 ตัวคือ == (เท่ากับ) และ != (ไม่เท่ากับ) ตัวอย่างการใช้งาน เช่น c == ‘A’ /* ถ้าตัวแปร c เก็บค่าอักขระ A ผลลัพธ์จะได้ค่าจริง */ k != -2 /* ถ้าตัวแปร k เก็บค่าตัวเลข –2 ผลลัพธ์จะได้ค่าเท็จ */ x+y == 2 * z – 5

  15. ตัวดำเนินการตรรกะ (Logical Operator) ตัวดำเนินการตรรกะ ใช้ในการเปรียบเทียบ และกระทำทางตรรกะกับค่าตัวเลข หรือค่าที่อยุ่ใน ตัวแปร ผลลัพธ์ที่ได้ จะมีเพียง 2 ค่าเช่นเดียวกับผลลัพธ์ของตัวดำเนินการสัมพันธ์คือ จริง และ เท็จ เครื่องหมายที่เป็นตัวดำเนินการทางตรรกะ มี 3 ตัวคือ ! (นิเสธ) && (และ) และ || (หรือ) ตัวดำเนินการนิเสธต้องการตัวถูกกระทำการเพียง 1 ตัวเท่านั้น ตัวอย่างการใช้งาน !a /* ถ้าค่าความจริงของตัวแปร a มีค่าจริง ผลลัพธ์จากการนิเสธจะได้ค่าเป็นเท็จ */ !(x+7.7) !(a<b || c<d) /* a มากระทำกับ b แล้วเอาผลลัพธ์มา || กับ ผลลัพธ์ระหว่างการกระทำระหว่าง c กับ d จากนั้นนำผลลัพธ์ที่ได้จากการ || มา ทำการนิเสธอีก */

  16. ตัวดำเนินการ && และ ||ต้องการตัวถูกกระทำ 2 ตัว ตัวอย่างการใช้งาน a&&b /* a และ b ถ้าค่าความจริงของ a เป็นจริง และ ค่าความจริง b เป็นจริง ผลลัพธ์ที่ได้จะมีค่าความจริงเป็นจริง */ a||b /* a หรือ b ถ้าค่าความจริงของ a เป็นเท็จ และ ค่าความจริง b เป็นเท็จ ผลลัพธ์ที่ได้จะมีค่าความจริงเป็นเท็จ */ !(a<b) && C /* นำ a มาเปรียบเทียบกับ b แล้วนำผลลัพธ์มานิเสธ จากนั้นมา && กับ C */ 3 && (-2 * a + 7) /* หาค่าภายในวงเล็บก่อน แล้วนำค่าผลลัพธ์ที่ได้มา && กับ 3 */

  17. ตัวดำเนินการประกอบ (Compound Operator) ตัวดำเนินการประกอบ คือ ตัวดำเนินการที่เป็นรูปแบบย่อ ของตัวดำเนินการ+ตัวแปรที่ถูกดำเนินการ โดยตัวดำเนินการประกอบในภาษาซี มีทั้งหมด 10 ตัวดังนี้ += -= /= %= <<= >>= |= ^= ตัวอย่างเช่น i = i + 1; ตัวดำเนินการประกอบคือ i += 1; i = I – a; ตัวดำเนินการประกอบคือ i - = a; i = 1 * (a + 1); ตัวดำเนินการประกอบคือ i = *=a+1;

  18. 2.อินพุตและเอาต์พุต (Input and Output) การเขียนโปรแกรมให้เครื่องคอมพิวเตอร์ประมวลผลข้อมูล จะต้องป้อนข้อมูลเข้าไปในเครื่องคอมพิวเตอร์ผ่านทางอุปกรณ์รับค่าข้อมูลหรืออุปกรณ์อินพุต (input device) อุปกรณ์อินพุตมาตรฐานได้แก่ คีย์บอร์ด สแกนเนอร์หรือเมาส์ เป็นต้น เมื่อเครื่องคอมพิวเตอร์ประมวลผลข้อมูลเสร็จเรียบร้อยแล้ว คอมพิวเตอร์จะแสดงผลการประมวลผลข้อมูลทางอุปกรณ์แสดงผลหรืออุปกรณ์เอาต์พุต (output device) อุปกรณ์เอาต์พุตมาตรฐาน เช่น จอภาพ ลำโพง หรือเครื่องพิมพ์ เป็นต้น

  19. แอสกี (ASCII) แอสกีเป็นรหัสแทนตัวอักษรที่นิยมใช้กันมากที่สุด ย่อมาจาก American Standard Code for Information Interchange รหัสนี้แทนตัวอักษรได้ 128 ตัว นอกจากนั้นยังมีอีก 128 ตัว ซึ่งอยู่ในส่วนที่เรียกว่า Extended ASCII code ในรหัสส่วนนี้ปกติจะเป็นตัวอักษรกรอบ พื้น ลายเส้น และตัวอักษรกรีก-ละติน ประเทศไทยใช้ในการกำหนดเพื่อเก็บตัวอักษรภาษาไทย มาตรฐานที่ใช้กันก็มี รหัส สมอ. และรหัส เกษตร เป็นต้น อักขระหรือตัวอักษร (Characters) คือรหัสที่ใช้แทนภาพหรือเครื่องหมายย่อยที่สุดในการเขียน ใช้ตัวแปรชนิดChar ในการเก็บข้อมูล เช่น “A”หมายถึงอักษร A “4 ” หมายถึงอักษร 4 “\0 ”หมายถึงอักษรที่มีรหัสเป็น 0 “\x7 ”หมายถึงอักษรที่มีรหัสเป็น 7 ในเลขฐานสิบหก สตริง (String) คือกลุ่มข้อมูลที่ประกอบไปด้วยตัวอักขระที่เขียนเรียงกันไป ใช้ตัวแปรชนิด อักขระในการเก็บภาพข้อมูลต่อหนึ่งหน่วยตัวอักษร โดยจะมีเครื่องหมาย “”อัญประกาศ (Double qoute) ล้อมรอบอยู่เสมอ เช่น Hello World! ในภาษาซีต้องเขียนเป็น “Hello World! ”

  20. ฟังก์ชันในการแสดงผลข้อมูลฟังก์ชันในการแสดงผลข้อมูล ฟังก์ชันในการแสดงผลข้อมูลในภาษาซีจะมีฟังก์ชันมาตรฐานในการแสดงผลข้อมูล หรือ ค่าตัวแปรออกมาทางจอภาพ ฟังก์ชันนั้นคือ ฟังก์ชัน printf รูปแบบคำสั่ง printf ( control , argument list ) ; ภายในฟังก์ชันประกอบด้วย 2 ส่วนที่สำคัญคือ 1. ส่วนควบคุม ส่วนควบคุมจะต้องเขียนภายใต้เครื่องหมาย “” ซึ่งสามารถเขียนได้ 2 ลักษณะ คือ 1.1 เป็นข้อความที่ต้องการให้แสดงผลออกมา เช่น printf ( “sum of x = ”);คือ การสั่งให้พิมพ์ข้อความว่า sum of x = ออกมาที่หน้าจอคอมพิวเตอร์ 1.2 เป็นรหัสรูปแบบ (Format Code) ที่ใช้ในการแสดงผลซึ่งทุกรหัสรูปแบบจะต้องอยู่ตามหลังเครื่องหมาย % รหัสรูปแบบที่นิยมใช้แสดงในตารางที่ 2.1

  21. ตารางที่ 2.1 แสดงรหัสรูปแบบที่ใช้ในฟังก์ชัน printf

  22. 2. ส่วนตัวโต้ตอบ (argument list)ส่วนของตัวโต้ตอบเป็นชุดตัวแปร ค่าคงที่ หรือนิพจน์ที่ต้องการนำมาแสดงผล ถ้ามีมากกว่า 1 ค่าจะแยกออกจากกัน โดยใช้เครื่องหมายคอมม่า ( , )ซึ่งส่วนตัวโต้ตอบนี้จะมีก็ต่อเมื่อในส่วนควบคุมมีการใช้รหัสรูปแบบ แต่ถ้าในส่วนควบคุมเป็นการแสดงข้อความธรรมดา ก็ไม่จำเป็นต้องมีตัวโต้ตอบ เอสเคปซีเควน(Escape Sequence) คือรหัสพิเศษที่แทรกลงไปในค่าคงที่สตริง เพื่อใช้ควบคุมการแสดงผลของตัวอักษรในลักษณะต่างๆ โดยการเขียนจะต้องมีเครื่องหมาย \ (Back-Slash) นำหน้า รหัสควบคุมการแสดงผลดูได้จากตารางที่ 2.2

  23. ตารางที่ 2.2แสดงตัว Escape Sequence ต่างๆ ที่มีใช้ในภาษาซี

  24. ฟังก์ชั่นในการรับค่าข้อมูลฟังก์ชั่นในการรับค่าข้อมูล • ฟังก์ชันในการรับค่าข้อมูลในภาษาซีจะมีฟังก์ชันมาตรฐานในการรับค่าข้อมูล หรือ ค่าตัวแปรออกมาทางจอภาพ ฟังก์ชันนั้นคือ ฟังก์ชัน scanf • รูปแบบคำสั่ง scanf ( control , argument list ); 1. ส่วน ควบคุม ส่วนควบคุมเป็นรหัสรูปแบบที่ใช้ในการรับข้อมูลซึ่งจะต้องเขียนอยู่ภายใต้เครื่องหมาย “” และจะมีรหัสรูปแบบเหมือนกับรหัสรูปแบบที่ใช้ในคำสั่ง printf แต่ห้ามมีข้อความใดๆ ในส่วนของ ควบคุม ฟังก์ชัน scanf 2. ส่วนตัวโต้ตอบ ส่วน ตัวโต้ตอบ เป็นตัวแปรที่จะรับค่าจากแป้นพิมพ์มาเก็บไว้ ถ้ามีมากกว่าหนึ่งค่า จะต้องแยกกันด้วยเครื่องหมายคอมม่า ( , ) และ เนื่องจากเป็นการรับข้อมูลมาเก็บในหน่วยความจำแทนการรับค่าจากหน่วยความจำไปแสดง ดังนั้นการใช้ scanf จึงต้องมีอักขระ & นำหน้าตัวแปรเสมอ ยกเว้นการรับข้อความ (string) จะไม่ต้องใช้เครื่องหมายนี้ในฟังก์ชัน scanf จะต้องมีส่วน argumentlist เสมอ

  25. ฟังก์ชันอื่นๆที่ใช้ในการรับและแสดงข้อมูลฟังก์ชันอื่นๆที่ใช้ในการรับและแสดงข้อมูล 1.ฟังก์ชัน getchar ( ) getchar ( )เป็นฟังก์ชันที่ใช้รับข้อมูลเข้ามาทางแป้นพิมพ์ทีละ 1 ตัวอักษร โดยต้องกด enter ทุกครั้งเมื่อสิ้นสุดข้อมูล และข้อมูลที่ป้อนจะปรากฎให้เห็นบนหน้าจอภาพด้วย รูปแบบgetchar ( ) ; 2.ฟังก์ชัน getch ( ) getch ( )เป็นฟังก์ชันที่ใช้รับข้อมูลที่เป็นตัวอักษร 1 ตัว เข้ามาทางแป้นพิมพ์ โดยเมื่อป้อนข้อมูลเสร็จไม่ต้องกดปุ่ม enter และอักษรที่ป้อนเข้ามาจะไม่ปรากฎบนจอภาพ รูปแบบ getch ( ) ;

  26. 3. ฟังก์ชัน gets ( ) gets ( )เป็นฟังก์ชันที่ใช้รับข้อมูลที่เป็นข้อความ (ตัวอักษรจำนวนหนึ่ง) จากแป้นพิมพ์เข้ามาเก็บไว้ในตัวแปร (จำง่ายๆ ว่า gets = get string) รูปแบบ gets ( n ) ; n เป็นชื่อตัวแปรชนิดที่เก็บค่าข้อความ โดยรับค่าข้อความจากแป้นพิมพ์ ฟังก์ชันจะทำการใส่ ‘ \0 ‘ เอาไว้ที่ตัวสุดท้ายของข้อความ เพื่อแสดงการสิ้นสุดของข้อความที่รับเข้ามาเมื่อผู้ใช้กดปุ่ม enter

  27. 4.ฟังก์ชัน putchar( ) putchar( )เป็นฟังก์ชันที่ใช้ให้คอมพิวเตอร์แสดงผลบนจอภาพทีละ 1 ตัวอักษร รูปแบบ putchar ( ) ; 5. ฟังก์ชัน puts ( ) puts ( ) เป็นฟังก์ชันที่ใช้แสดงผลข้อมูลที่เป็นข้อความที่เก็บไว้ในตัวแปรชุดออกมาบนจอภาพ รูปแบบputs ( n ) ; n เป็นตัวแปรชุดที่ต้องการนำค่ามาแสดงผล

  28. 3.การเขียนโปรแกรมควบคุม(Control Statements Programming) โดยปกติคำสั่งในโปรแกรมจะทำงานต่อเนื่องกันไปตามลำดับที่เขียนไว้ในโปรแกรม โดยจะเรียกการทำงานอย่างนี้ว่า การทำงานตามลำดับ (sequential execution) คำสั่งต่าง ๆ ของภาษาซีที่จะได้ศึกษาต่อไปนี้จะทำให้ผู้เขียนโปรแกรมสามารถควบคุมได้ว่า คำสั่งถัดไปที่จะทำงานเป็นคำสั่งใดโดยการควบคุมการไหลของโปรแกรม(control flow program)โดยใช้โครงสร้างควบคุมแบบโครงสร้างทางเลือก (selection structure) และโครงสร้างทำซ้ำ (repetition structure)

  29. คำสั่ง if (The if Statement) คำสั่ง if คือ คำสั่งสำหรับใช้เลือกทำคำสั่งหรือกลุ่มคำสั่ง โดยอาศัยการตรวจสอบจากเงื่อน-ไข ซึ่งมี 3 รูปแบบคือหนึ่งทางเลือก(One Alternative)สองทางเลือก(Two Alternative และหลายทางเลือก(Multiple-Alternative) คำสั่งif หนึ่งทางเลือก(One Alternative) คำสั่ง if ในรูปแบบนี้เป็นคำสั่งให้ไปทำงานยังคำสั่งใดคำสั่งหนึ่งโดยมีเงื่อนไขให้ตัดสินใจอย่างใดอย่างหนึ่งก่อน แล้วจึงไปทำงานโดยผลของการตัดสินใจจะมีโอกาสเป็นไปได้ 2 ทางคือ จริงหมายความว่าไม่เท่ากับศูนย์และไม่จริงหมายความว่ามีค่าเท่กับศูนย์ ซึ่งสามารถเขียนให้อยู่ในรูปโฟล์วชาร์ทได้ดังรูปที่ 3.1

  30. รูปที่ 3.1 โฟล์วชาร์ทของโครงสร้างแบบหนึ่งทางเลือก

  31. คำสั่ง if สองทางเลือก (Two Alternative) คำสั่ง if ในรูปแบบนี้มีสองทางเลือกคือจะทำคำสั่งหรือกลุ่มคำสั่ง กลุ่มที่ 1 เมื่อการตรวจสอบเงื่อนไขแล้วเป็นจริง หรือทำคำสั่งหรือกลุ่มคำสั่งที่ 2 เมื่อการตรวจสอบเงื่อนไขแล้วเป็นเท็จ สามารถเขียนในรูปโฟล์วชาร์ทได้ดังรูปที่ 3.2 คำสั่ง if หลายทางเลือก(MultipleAlternative) ในกรณีที่การตรวจสอบเงื่อนไข ทำให้เกิดทางเลือกของการทำคำสั่งมากกว่า 2 ทางเลือก การโปรแกรมคำสั่ง if สามารถโปรแกรมให้อยู่ในรูปแบบหลายทางเลือกซึ่งมีรูปแบบดังนี้

  32. รูปที่ 3.2 โฟล์ทชาร์ทของโครงสร้างแบบสองทางเลือก

  33. คำสั่ง if (หลายทางเลือก) รูปแบบ : if (condition 1) statement 1; else if (condition 2) statement 2; : : else if (condition n) statement n; else statement;

  34. คำสั่ง switch (The switch Statement) คำสั่ง switch มักจะถูกใช้บ่อยในกรณีของ การเลือกหนึ่งทางเลือกในหลายๆทางเลือก โดยค่าที่ใช้ตรวจสอบ (Controlling Expression) จะต้องเป็นจำนวนเต็ม (int) หรือ ข้อมูลชนิดตัวอักษร(char) แต่จะต้องไม่เป็นจำนวนจริงแบบยาว(double) โดยอาจจะอยู่ในรูปของตัวแปร, นิพจน์ หรือฟังก์ชันก็ได้ รูปแบบ : switch (controlling expression) { case lable_set1 : statements1 break; case label_setท : statementsท break;

  35. break; default : statements; } คำสั่ง break และcontinue(The break and continue Statement) คำสั่ง break และ continue ถูกออกแบบให้ใช้ควบคุมลูปแบบ while,do-while และ for การเพิ่ม break และ continue ทำให้ลูปมีประสิทธิภาพมากขึ้น โดยทั่วไปการออกจากลูปจะต้องออกบริเวณส่วนหัว หรือบริเวณที่ตรวจสอบเงื่อนไข ถ้าเป็นเท็จให้ออกจากลูปได้ คำสั่ง break ทำให้สามารถออกจากลูปจุดไหนก็ได้ โดยไม่ต้องวนกลับไปที่ส่วนหัว ส่วนคำสั่ง continue จะเป็นตัวลัดลูป ทำให้โปรแกรมกลับไปทำลูปใหม่ได้ทันที โดยไม่ต้องเสียเวลาในการทำงานที่เหลืออยู่

  36. 4.การเขียนโปรแกรมทำซ้ำ(Repetitive Statements Programming) โครงสร้างทำซ้ำ (Repetition Structure) โครงสร้างทำซ้ำ ทำให้ผู้เขียนโปรแกรมสามารถระบุให้โปรแกรมทำการกระทำหนึ่งๆ ซ้ำไปเรื่อยๆ ในขณะที่เงื่อนไขบางอย่างยังคงเป็นจริงอยู่ จนกระทั่งเงื่อนไขกลายเป็นเท็จการตทำซ้ำจึงสิ้นสุดลง และจะทำคำสั่งที่อยู่ต่อจากโครงสร้างนี้ต่อไป การวนรอบในโปรแกรมคอมพิวเตอร์เช่นนี้เรียกว่า ลูป (Loop) ซึ่งแปลว่า วงหรือห่วงหากไม่มีการใส่การกระทำที่ทำให้เงื่อนไขกลายเป็นเท็จ ลูปก็จะวนซ้ำต่อไปเรื่อย ๆ ไม่มีที่สิ้นสุดจะเรียกลูปลักษณะนี้ว่า ลูปอนันต์ (Infinite Loop) ในภาษาซีมีคำสั่งทำซ้ำและคำสั่งที่ช่วยให้การเขียนโปรแกรมทำซ้ำมีประสิทธิภาพยิ่งขึ้นอยู่หลายคำสั่ง

  37. คำสั่ง while (The while Statement) คำสั่ง while เป็นคำสั่งที่ใช้ในการวนรอบ ซึ่งจะมีการตรวจสอบค่าเงื่อนไข กรณีไม่เท่ากับศูนย์หมายความว่าเงื่อนไขเป็นจริงจะมีการทำคำสั่งในรอบนั้น กรณีผลลัพธ์เท่ากับศูนย์เ หมายความว่าเงื่อนไขเป็นเท็จ จะไม่ทำกลุ่มคำสั่งนั้น สามารถเขียนโฟล์วชาร์ทได้ดังรูปที่ 3.3 คำสั่ง do-while (do-while Statement) จากการศึกษาคำสั่ง while จะต้องมีการตรวจสอบค่าของเงื่อนไขก่อนว่าเป็นจริงหรือเท็จ ก่อนที่จะทำคำสั่งหรือกลุ่มคำสั่งภายในลูป แต่การทำงานบางลักษณะจะต้องทำคำสั่งภายในลูปก่อนอย่างน้อย 1 ครั้ง ซึ่งการทำงานในลักษณะที่กล่าวนี้สามารถใช้คำสั่ง do-while

  38. รูปที่ 3.3 โฟล์วชาร์ทของคำสั่ง while

  39. รูปแบบ: do statement; while (loop repetition condition); คำสั่ง for (for Statement) คำสั่ง for เป็นคำสั่งที่ใช้ในวนรอบอีกชนิดหนึ่ง ซึ่งการทำงานของการวนรอบ จะขึ้นกับส่วนสำคัญ 3 ส่วนคือ 1.ค่าเริ่มต้นของตัวแปรควบคุมการวนรอบ 2. ส่วนทดสอบเงื่อนไข 3. ส่วนเปลี่ยนแปลงค่าของตัวแปรควบคุมการวนรอบ รูปแบบ :for (initialization expression;loop repetition condition;update expression)

  40. 5.ฟังก์ชัน(Function) โปรแกรมคอมพิวเตอร์ส่วนใหญ่ที่ใช้งานจริงมักจะเป็นโปรแกรมที่มีขนาดใหญ่เกินกว่าที่จะเขียนรวมๆกันในฟังก์ชันหลัก main()การเขียนโปรแกรมโดยแบ่งการทำงานออกเป็นส่วนเล็กๆ หรือโมดูล (Module) เมื่อสร้างและทดสอบโปรแกรมย่อยๆนั้นแล้ว ก็ประกอบขึ้นมาเป็นโปรแกรมใหญ่ที่สมบูรณ์ในขั้นตอนสุดท้าย ซึ่งวิธีการนี้จะเป็นการสร้างโปรแกรมที่มีขนาดใหญ่จากโปรแกรมย่อยๆจึงมีประสิทธิภาพและดำเนินการได้ง่ายกว่าการเขียนโปรแกรมเฉพาะในฟังก์ชันหลัก main() โปรแกรมย่อย (Program Module) ในภาษาซี โปรแกรมย่อยในภาษาซีจะถูกเรียกว่าฟังก์ชัน (Function) ซึ่งสามารถแบ่งตามแหล่งที่มาได้ 2 ประเภทคือ 1. ฟังก์ชันมาตรฐานในภาษาซี (C Standard Function) 2.ฟังก์ชันที่สร้างขึ้นใหม่โดยโปรแกรมเมอร์ (Programmer-Defined Function)

  41. การสร้างฟังก์ชัน รูปแบบของการสร้างฟังก์ชันเขียนได้ดังนี้ return-value-type function-name(parameter-list) { declarations; statements; }

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

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

  44. ตัวแปรอาร์เรย์แบบ1 มิติ ตัวแปรแบบอาร์เรย์ ที่ใช้ในการเก็บข้อมูลโดยมีการอ้างอิงที่ใช้เลขดัชนีเพียงหนึ่งค่าจะเรียกว่า ตัวแปรแบบอาร์เรย์ 1 มิติ เช่น int age[10]; เป็นการประกาศตัวแปรแบบอาร์เรย์เพื่อเก็บข้อมูลอายุของนักศึกษา 10 คน เมื่อต้องการเก็บข้อมูลอายุของนักศึกษาคนที่1 ทำได้ดังนี้ age[1] = 18; การให้ค่าเริ่มต้น (Array Initialization) การกำหนดค่าเริ่มต้นของตัวแปรแบบอาร์เรย์ 1 มิติ สามารถกำหนดได้สำหรับทุกชนิดข้อมูล เช่น int grades[5] = {98,87,92,79,85}; char codes[6] = {‘s’, ‘a’, ‘m’, ‘p’, ‘l’, ‘e’}; การเรียงข้อมูลคือค่าแรกจะถูกกำหนดให้กับอีลีเมนต์ตัวที่ 1 (ดัชนีที่ 0) และค่าที่สองจะถูกกำหนดให้อีลีเมนต์ตัวที่ 2 (ดัชนีที่ 1) และ ถัด ๆ ไป

  45. การส่งผ่านอาร์เรย์ไปยังฟังก์ชันการส่งผ่านอาร์เรย์ไปยังฟังก์ชัน การส่งผ่านค่าอาร์เรย์ไปยังฟังก์ชันสามารถทำได้ สำหรับกรณีการส่งผ่านเฉพาะบางอีลีเมนต์จะสามารถส่งได้โดยค่าของแต่ละอีลีเมนต์ได้โดยตรง เช่น find_min(grades[2], grades[6]); จะเป็นการส่งผ่านค่า grades[2] และ grades[6] ไปยังฟังก์ชัน find_min() กรณีที่ต้องการส่งผ่านค่าของอาร์เรย์ทั้งหมด สามารถกระทำได้ง่ายกว่าเพียงแต่ส่งเฉพาะชื่อของอาร์เรย์มาเท่านั้น เช่น การส่งผ่านอาร์เรย์ grades ไปยังฟังก์ชัน find_max() ได้ดังนี้ find_max(grades); จะทำให้ค่าของ grades สามารถเรียกใช้งานได้ภายใน find_max() ในการส่งผ่านค่าในรูปแบบของตัวแปรทั่วไปจะเห็นว่าจะทำการสำเนาข้อมูลไปให้กับฟังก์ชันนั้น ซึ่งทำให้เสียเวลา แต่ในกรณีของอาร์เรย์ในการส่งผ่านจะทำการอ้างถึงตัวแปรอาร์เรย์โดยตรงนั้นคืออาร์เรย์ภายนอกกับภายในฟังก์ชันจะเป็นตัวเดียวกัน เช่น int nums[5];

  46. เราสามารถเรียกใช้ฟังก์ชัน โดยการส่งผ่านค่าอาร์เรย์ไปได้ดังนี้ find_max(nums); ตัวแปรอาร์เรย์แบบ 2 มิติ ตัวแปรอาร์เรย์แบบ 2 มิติจะเป็นตัวแปรที่มีการอ้างอิงถึงค่าข้อมูลโดยใช้ค่าเลขดัชนี 2 ค่าซึ่งประกอบไปด้วยค่าดัชนีที่ใช้ในการอ้างอิงในแนวแถว (row) และในแนวคอลัมน์ (column) ตัวอย่างเช่น 8 16 9 52 3 15 27 6 14 25 2 10 ซึ่งเรียกอาร์เรย์แบบนี้ว่าอาร์เรย์ 2 มิติของจำนวนเต็ม ซึ่งประกอบด้วย 3 แถว 4 คอลัมน์ การประกาศตัวแปรอาร์เรย์ 2 มิติจะถ้ากับ 1 มิติแต่เพิ่มเติมการกำหนดขนาด ซึ่งจะต้องระบุทั้งในแนวแถวและคอลัมน์ เช่น int val[3][4];

  47. ตัวแปรอาร์เรย์ 2 มิติจะมีลักษณะเช่นเดียวกับตัวแปรอาร์เรย์ 1 มิติที่จะสามารถประกาศใช้งานได้ทั้งในและนอกฟังก์ชัน ซึ่งอาร์เรย์ที่ประกาศไว้ในฟังก์ชันจะเป็นชนิดแบบ “Local” แต่ถ้าประกาศไว้ข้างนอกจะเรียกว่า “Global” การกำหนดค่าเริ่มต้นในตัวแปรอาร์เรย์ 2 มิติสามารถกระทำได้เช่นเดียวกันกับตัวแปรอาร์เรย์ 1 มิติโดยจะเพิ่มส่วนการแบ่งแยกในแต่ละแถวด้วยเครื่องหมาย “{ }” และ “,” เช่น int val[3][4] = {{8,16, 9,52}, {3,15,27,6}, {14,25,2,10}};

  48. อาร์เรย์ที่มากกว่า 2 มิติ (Larger-Dimensional Arrays) การใช้งานส่วนใหญ่ในภาษาซีจะเป็นอาร์เรย์ 1 หรือ 2 มิติ แต่อย่างไรก็ตาม ภาษาซียังสามารถใช้งานอาร์เรย์ที่มีขนาดมากกว่า 2 มิติได้ เช่น การกำหนดตัวแปรอาร์เรย์ 3 มิติ ทำได้ดังนี้ int response[4][10][6]; เป็นการประกาศตัวแปรชื่อ response เป็นตัวแปรแบบอาร์เรย์ 3 มิติ และเก็บข้อมูลชนิดจำนวนเต็ม การเข้าถึงข้อมูลสามารถทำได้เหมือนกับตัวแปรอาร์เรย์ใน 1 และ 2 มิติ โดยการอ้างอิงจะใช้ค่าดัชนีเป็นตัวอ้างอิงเช่น อีลีเมนต์แรกคือ response[0][0][0] และ อีลีเมนต์สุดท้ายคือ response[3][9][5]

  49. การเขียนโปรแกรมภาษาซีจะต้องมีการประกาศตัวแปรก่อนเรียกใช้งานตัวแปรนั้นๆ ตัวแปรแต่ละตัวที่ประกาศจะมีที่อยู่ (address) ของตัวเอง ที่อยู่ของตัวแปรคือหมายเลขของหน่วยความจำขนาดหนึ่งไบต์ ถ้าตัวแปรใดๆต้องการหน่วยความจำมากกว่าหนึ่งไบต์ขึ้นไป ที่อยู่ของตัวแปรก็คือหมายเลขเริ่มต้นที่ตัวแปรใช้ เพื่อให้การเขียนโปรแกรมสะดวกขึ้น โปรแกรมภาษาซีได้กำหนดตัวแปรขึ้นมาชนิดหนึ่งเรียกว่า ตัวแปรพอยน์เตอร์ (pointer) เพื่อใช้สำหรับชี้ตำแหน่งหน่วยความจำที่เก็บข้อมูลนั้นๆ 7.พอยน์เตอร์ ( Pointer )

  50. ตัวแปรแบบพอยน์เตอร์ ตัวแปรแบบพอยน์เตอร์จะมีการประกาศตัวแปรด้วยรูปแบบดังนี้ Type *var_name; โดย type เป็นชนิดข้อมูลของตัวแปรพอยน์เตอร์ var_name เป็นชื่อตัวแปรพอยน์เตอร์และใช้ตัวดำเนินการ * (asterisk) เป็นตัวระบุว่าตัวแปรนั้นเป็นตัวแปรแบบพอยน์เตอร์ ตัวดำเนินการอีกตัวหนึ่งที่ใช้ในการระบุตำแหน่งของตัวแปรพอยน์เตอร์ คือ ตัวดำเนินการ & (ampersand) คณิตศาสตร์ของพอยน์เตอร์ เครื่องหมายคณิตศาสตร์ที่ใช้กับตัวแปรพอยน์เตอร์ได้แก่ +,++,- และ – ตัวแปรหรือค่าคงที่ ที่นำมาบวกหรือลบกับตัวแปรพอยน์เตอร์จะเป็นเลขจำนวนเต็มเท่านั้น การเพิ่มค่าของตัวแปรพอยน์เตอร์โดยการบวกจะหมายถึงการเพิ่มค่าแอดเดรสที่เก็บอยู่ในตัวแปรพอยน์เตอร์ หรือเป็นการเลื่อนพอยน์เตอร์ชี้ไปที่แอดเดรสสูงขึ้น ถ้าตัวแปรพอยน์เตอร์เป็นชนิดเลขจำนวนเต็มเมื่อเพิ่มค่าขึ้น 1 จะทำให้ค่าในแอดเดรสเพิ่มขึ้น 2 ไบท์ ถ้าเป็นชนิดเลขจำนวนจริงค่าของแอดเดรสเพิ่มขึ้น 4 ไบท์

More Related