การเขียนโปรแกรมภาษาซีเบื้องต้น

Download Report

Transcript การเขียนโปรแกรมภาษาซีเบื้องต้น

การเขียนโปรแกรมภาษาซี
้ น
เบืองต
้
จั ด ทำโดย
ด.ญ.กำนต์ส ิร ิ ท องจี น
เลขที่ 16
เสนอ
อ.สำยฝน
เอกกั น ทำ
้ มั ธ ยมศ ึก ษำปี ที่ 2/10
ชั น
โรงเรี ย นจั ก รคำคณำทร จั ง หวั ด ลำพู น
ปี กำรศ ึก ษำ 2/2555
รู ้จัก กับ ภาษาคอมพิว เตอร ์
้
ก่ อ นที่ จะเขี ย นโปรแกรมภาษา C ขึ นมา
นั้ น สิ่ งแรกที่ ควรทาความเข า้ ใจก็ คื อ
รายละเอี ย ดทั้งหมดของภาษา C เพื่ อเข า้ ใจถึ ง
ที่ มา ความสามารถ รวมถึ ง ลัก ษณะการทางาน
โดยรวมของภาษา เมื่ อศึ ก ษาถึ ง เรื่องใดก็ ต าม
่
้น
การทาความเข า้ ใจถึ ง รากฐานของเรืองนั
้
ย่ อ มจะทาให เ้ รามี พื นฐานพร
อ้ มที่ จะเรีย นรู เ้ นื ้ อหา
ในรายละเอี ย ดต่ อไปได เ้ ป็ นอย่ า งดี
รู ้จัก กับ ภาษาซี
ภาษา C เป็ นภาษาที่ เก่ า แก่ ถ ื อ กาเนิ ดมายาวนาน
้
่ อให เ้ ป็ นภาษา
โดยแต่ เ ดิ ม นั้ นภาษา
C
ถู ก พัฒ นาขึ นเพื
สาหร บ
ั การสร า้ งระบบปฏิ บ ัติ ก ารยู นิ กซ ์ (Unix) เนื่ องจากใน
ขณะนั้ นระบบปฏิ บ ัติ ก ารยู นิ กซ เ์ ขี ย นด ว้ ยภาษาแอสเซมบลิ
่ นภาษาที่ ยึ ด ติ ด กับ ฮาร ์ดแวร ์ของเครื่อง
(Assembly) ซึงเป็
ดัง นั้ น การที่ จะย า้ ยระบบปฏิ บ ัติ ก ารไปใช ก้ ับ เครื่องอื่ นจึ ง เป็ น
่ บ เป็ นข อ้ เสี ย ที่ สาคัญ ของภาษาแอส
เรื่องที่ ลาบากมาก ซึงนั
เซมบลิ
่ นภาษาที่ ไม่ ยึ ด ติ ด กับ
ดัง นั้ น
ภาษา
C
ซึงเป็
้
ฮาร ์ดแวร ์จึ ง ถู ก พัฒ นาขึ นมา
ในปั จ จุ บ ัน C ไม่ ไ ด จ้ ากัด อยู่
เพี ย งแค่ ง านสร า้ งระบบปฏิ บ ัติ ก ารเท่ า นั้ น
แต่ ส ามารถ
นาไปใช ส้ ร า้ งโปรแกรามเพื่ องานในทุ ก ประเภทยกตัว อย่ า ง
เช่น
งานเกี่ยวกับ การคานวณ
ควบคุ ม การทางานของ
อุ ป กรณ์ฮ าร ด์ แวร ์ชนิ ดต่ า ง ๆ การจัด การฐานข อ้ มู ล หรือ
สร า้ งโปรแกรมต่ า ง ๆ เป็ นต น
้
ประวัต
ิ
ข
องภาษาซี
้
้
ภาษา C คิ ด ค น
้ ขึ นมาเป็
นคร งแรกโดย
ั
เดนนิ ส
ริท ชี่ (Dennis Ritchie) ที่ ห อ้ งแล็ บ เบล (Bell Labs)
ในปี ค.ศ. 1972 โดยได แ้ นวคิ ด มาจากภาษา BCPL
่ ฒ นาขึ นโดย
้
ซึงพั
มาร ์ติ น
ริช าร ์ด
(Martin
้
Richards) และภาษา B ที่ เขี ย นขึ นโดย
เคน ทอมพ ์
สัน
(Ken
Thompson)เพื่ อนามาพัฒ นาต่ อ จนได ้
ภาษาใหม่ ที่ มี ป ระสิ ท ธิ ภ าพการทางานสู ง หลัง จากนั้ น
ในปี ค.ศ. 1978 ภาษา C จึ งได ร้ บ
ั การเผยแพร่อ ย่ า ง
เป็ นทางการโดยเคอร ์นิ กแฮน (Kernighan) และเดน
นิ ส ริท ชี่
จุด เด่น ของภาษาซี
• ภาษา C ได ร้ บ
ั การยอมร บ
ั และใช ง้ านกัน อย่ า งกว า้ งขวาง
่
ภาษา C มี โ ครงสร า้ งทางภาษาที่ ดี และเครืองหมายส
าหร บ
ั
ดาเนิ นการ ไม่ ว่ า จะเป็ นการคานวณทางคณิ ตศาสตร ์
ตรรกศาสตร ์ หรือ การเป รีย บเที ย บ ล ว้ นมี ป ระสิ ท ธิ ภ าพก าร
ทางานสู ง
• โดดเด่ น เรื่องการติ ด ต่ อ และควบคุ ม การทางานของฮาร ์ดแวร ์
ถื อ เป็ นจุ ด เด่ น ของภาษา C ที่ ทาได ด
้ ี เ หนื อกว่ า ภาษาอื่ น ๆ
มาก เพราะสามารถเขี ย นคาสั่งได ง้ ่ า ย กลายเป็ นโปรแกรมที่
มี ข นาดเล็ ก กะทัด ร ด
ั ทาให ว้ ิ ศ วกรเลื อ กใช ภ
้ าษานี ้ มากที่ สุ ด
• มี ฟั ง ก ช
์ น
ั สาเร็ จ สาหร บ
ั งานประเภทต่ า ง ๆ ให เ้ ลื อ กใช ้
มากมาย ซึ่งช่ว ยประหยัด เวลาในการเขี ย นคาสั่ง นอกจากนี ้
ถ า้ ฟั ง ก ช
์ น
ั ที่ ภาษา C เตรีย มไว ใ้ ห ใ้ ช ง้ านได ไ้ ม่ ต รงตาม
ต อ้ งการทั้งหมด เราสามารถเขี ย นคาสั่งเพิ่ มเติ ม ลงไปได ้
ด ว้ ย
่งงานคอมพิ
การที่ จะสื่ อสารหรือ บอกความต
อ้ ์ด
งการของเรากั
บ
การสั
ว
เตอร
ว
้
ยโปรแกรม
ใครสัก คน แน่ นอนที่ สุ ด ภาษาที่ ทั้งสองฝ่ ายเข า้ ใจตรงกัน จะ
ถู ก นามาใช เ้ ป็ นสื่ อกลาง การสื่ อสารหรือ สั่งงานกับ
คอมพิ ว เตอร ก์ ็ เ ช่น เดี ย วกัน ภาษาที่ จะนามาใช เ้ ป็ นสื่ อกลาง
่
ก็ คื อ ภาษาที่ เครืองคอมพิ
ว เตอร เ์ ข า้ ใจ ซึ่งเรีย กกัน ว่ า
ภาษาเครื่อง (Machine Language)
ภาษาเครื่องจะอยู่ ใ นรู ป แบบของรหัส เลขฐานสอง
(Binar y Code) ซึ่งประกอบด ว้ ยตัว เลขอยู่ เ พี ย งแค่ 2 ตัว
นั่ นคื อ 0 และ 1 อธิ บ ายได ว้ ่ า เป็ นภาษาที่ ประกอบด ว้ ย
ตัว เลข 0 และ 1 เรีย งลาดับ และต่ อ กัน เป็ นความหมายที่
เครื่องคอมพิ ว เตอร ์เข า้ ใจ เมื่ อลองนึ กภาพตามจะพบว่ า เป็ น
เรื่องยากที่ มนุ ษย จ์ ะสามารถเข า้ ใจในภาษานั้ นได ้
ต่ อ มาจึ ง มี ก ารพัฒ นาภาษาสาหร บ
ั สื่ อสารกับ คอมพิ ว เตอร ท์ ่ี
มนุ ษย เ์ ข า้ ใจ โดยใช ต้ ัว อัก ษรภาษาอัง กฤษมากาหนดเป็ น
่ ว นใหญ่ เ ป็ นคาที่ มี ค วามหมายใน
รู ป แบบคาสั่งซึงส่
ภาษาอัง กฤษ
การเขี ย น
ภาษาซี
เรีย ก Turbo C++
ขึ ้นมาทางาน
ในหนั งสื อ เล่ ม นี ้ จ ะ
เป็ นการฝึ กเขี ย น
โปรแกรมภาษา C
ผ่ า นโปรแกรม
Turbo C++ 4.5
เนื่ องจากเป็ น
โปรแกรม ที่ ติ ด ตั้ ง
และใช ง้ านง่ าย เป็ น
ที่ นิ ยมสู งในหมู่
นั กเรีย น นั กศึ ก ษ า
และผู เ้ ริ่ม ต น
้ หั ด
เขี ย นภาษา C
หลั ง จากติ ด ตั้ ง
โปรแกรม Turbo
C++ ลงในเครื่อง
แล ว้ วิ ธ ี ก ารเรีย ก
หน้ า ต่ า งโปรแกรม
้
ขึ นมาท
างานมี
ขั้ นตอนดั ง นี ้
1.คลิ ก ปุ่ ม star t >
้
2.หน้ า ต่ า งโปรแกรม TURBO C++ จะปรากฏขึ นมาบนหน้
า จอ
ดัง รู ป
ภาษาซี
โปรแกรม
แรก
คาสั่ งภาษา C ที่ เขี ย น
ในโปรแกรมข า้ งต น
้
อธิ บ ายความหมายได ้
ดั ง นี ้
1. คาสั่ งให ต
้ ั ว แป ล
ภาษา C นาไฟล ช
์ ่ือ
stdio.h เข า้ มารวมกับ
โปรแกรม ที่ เรา เขี ย น
ก่ อ นที่ จ ะแปลโป รแกรม
2.จุ ด เริ่ม ต น
้ กา รทางา น
ของโปรแกรมภา ษา C
3.เครื่อง หมา ยสาหร บ
ั
่
เริมต น
้ กา รทางา น
ภายใน main( )
4.คาสั่ งสาหร บ
ั แส ดง ผล
ออกทาง หน้ า จอ โดย
ในตั ว อย่ า งนี ้ print
(“Hello Workdn ”);
เป็ นการสั่ งให แ้ ส ดง
ขอ
้ ความ Hello
World พร อ้ มทั้ งมี ก าร
ใช ้ \n ซึ่งเป็ นการ
โปรแกรม
ทางาน
(RUN)
การสั่ งให ้
โปรแกรม ทา งาน
หรือ ที่ ภา ษา
โปรแกรม
เรีย กว่ า การร น
ั
โปรแกรม (Run)
ก็ คื อ การสั่ งให ้
ตัว แปลภาษา
แปลโปรแกรม ที่
เขี ย นด ว้ ยภา ษา
C เป็ น
ภาษาเครื่อง ที่
คอมพิ ว เตอร ์
เข า้ ใจและทางาน
ได ้ ผลลั พ ธ จ์ าก
การร น
ั จะได ไ้ ฟล ์
นามสกุ ล .exe
(ขั้ นตอนการ
แปลจากภาษา C
ไปเป็ น
ภาษาเครื่อง
สามารถกลั บไป
ทบทวนได ใ้ นบ ท
ที่ 1)
สาหร บ
ั วิ ธ ี ก ารร น
ั
โปรแกรม ด ว้ ย
Turbo C++
นั้ น สามารถทา
สั่งให ้
โปรแกรม
ทางาน
(RUN) II
2.กดปุ่ ม
<Ctrl>
พร อ้ มกับ ปุ่ ม
<F9> บน
คี ย บ
์ อร ์ด ซึง่
เป็ นวิ ธ ี ที่
สะดวกและ
รวดเร็ ว
ถ า้ โปรแกรมที่
เราเขี ย น
ถู ก ต อ้ งตาม
โครงสร า้ งของ
ภาษา C
ปรากฏ
หน้ า ต่ า ง
แสดงผลการ
ทางานของ
โปรแกรม
้
ขึ นมา
โดยใน
หน้ า ต่ า งจะ
บัน ทึ ก
โปรแกรมที่
้
เขี ย นขึ น
เมื่ อเขี ย น
้
โปรแกรมขึ น
มาแล ว้ สิ่ งที่
ควรปฏิ บ ัต ิ ก็
คื อ การบัน ทึ ก
(Save)
โปรแกรมเก็ บ
เป็ นไฟล ไ์ ว ใ้ น
ฮาร ์ดดิ ส ก ์
เพื่ อป้ องกัน
ไม่ ใ ห ้
โปรแกรมที่
เขี ย นนั้ นสู ญ
หาย ในกรณี ที่
เกิ ด ความ
ผิ ด พลาดกับ
่
เครือง
คอมพิ ว เตอร ์
่
(เครืองแฮงค
์
หรือไฟดับ )
โดยวิ ธ ี ก าร
บัน ทึก
โปรแกรมที่
้ II
เขีย นขึน
2.คลิ ก เลื อ ก Source
(*.c;*.cpp,*h,…)
่
3.ตั้งชือไฟล
์
4. คลิ ก เลื อ กไดร ว์ ที่ จะ
Save ไฟล ์
5. คลิ ก เลื อ กโฟลเดอร ์ที่จะ
Save ไฟล ์
6. คลิ ก ปุ่ ม OK
ส่ ว นหัว ของ
โปรแกรม
ส่ ว นหั ว ของ
โปรแกรมจ ะเริ่ม
ตั้ งแต่ บ รรทั ด แรก
ของโปรแกรมจ น
้ ด ที่
มาสิ นสุ
บรรทัด ก่ อ น
main โดยส่ ว น
หั ว ของโปรแกรม
มี ไ ว เ้ พื่ อเขี ย น
คาสั่ งพิ เ ศษ
บางอย่ า งที่
ตอ
้ งการให ้
ทางาน ก่ อ นที่ จ ะ
เข า้ สู่ ก ารทาง าน
ของตัวโปรแกรม
หรือ ที่ เรีย กว่ า
พรีโ พรเซสเซอร ์
ไดเร็ ค ที ฟ
(Preprocessor
directive )
นอกจากนี ้ ส่ ว น
หั ว ของโปรแกรม
ยั ง เป็ นส่ ว นที่ ใช ้
พรี
โพรเซสเซอ
ร ์ไดเร็ ค ที ฟ
รีโ พรเซสเซอร ไ์ ดเร็ ค
ที ฟ คื อ คาสั่ งรู ป แบบ
หนึ่ งของภา ษา C ที่ มี
ความพิ เ ศษ โดยใน
ขั้ นตอนกา รแปล
ความหมายโปรแกรม
ถ า้ ตัว แปลภาษา C
ตรวจพบว่ า มี ก ารใช พ
้ รี
โพรเซสเซอร ภ
์ ายใน
โปรแกรม พรี
โพรเซสเซอร ไ์ ดเร็ ค ที ฟ
เหล่ า นั้ นจะถู ก แป ล
ความหมายเป็ นลา ดับ
แรกก่ อ นคาสั่ งประ เภ ท
อื่ น ๆ
รู ป แบบของ การเขี ย น
คาสั่ งพรีโ พรเซส เซอร ์
้ น
ไดเร็ ค ที ฟ จ ะ ต อ
้ งขึ นต
้
ด ว้ ยเครื่อง หมาย # แต่
ไม่ ต อ
้ งลง ท า้ ยด ว้ ย
เครื่อง หมา ย ; เหมื อ น
คาสั่ งอื่ นทั่ วไป โดย
คาสั่ งที่ จั ด อยู่ ใ นกลุ่ ม
ของพรีโ พรเซสเซอร ์
พรีโ พรเซสเซอร ์ไดเร็ ค ที ฟ (PREPROCESSOR
DIRECTIVE)II
รายละเอี ย ด และ ตัว อย่ า ง การใช ง้ านพรี
โพรเซสเซ อร ไ์ ดเร็ ค ที ฟ บา ง คาสั่ ง ที่ น่ าสนใจ
และต อ
้ งใช ง้ า นเป็ นประจา แสดง ดั ง ต่ อไป นี ้
พรีโ พรเซสเซอร ไ์ ดเร็ ค ที ฟ #include จะใช ้
สาหร บ
ั สั่ งให ต
้ ั ว แป ลภา ษา C นาไฟล ท
์ ่ี กาหนด
ชื่อไว ต
้ ่ อ จาก #include เข า้ มารวมกับ
โปรแกรมก่ อ นที่ จ ะ แป ลภา ษา เนื่ องจากใน
บางกรณี ที่ มี ก า รเรีย กใช ค
้ าสั่ งจา กไฟล อ์ ่ื น
ดั ง นั้ นเรา ต อ
้ ง เขี ย น #include ไว ท
้ ่ี ส่ ว นหั ว
ของโปรแกรม เสม อ
การใช เ้ ครื่อง หมาย < > ระบุ ช ่ือไฟล ์ เพื่ อให ้
ตัว แปลภาษา C เริ่มค น
้ หาไฟล จ์ ากโฟล เด อร ์
่
ที ตั ว แปล ภาษา C กาหนดไว ก
้ ่ อ น (สาหร บ
ั
Turbo C++ จะเป็ นโฟลเดอร ท
์ ี่ ชื่ อ
include ) ถ า้ ไม่ พ บจะกลั บ มา ค น
้ หา ต่ อ ที่
โฟลเดอร ป์ ั จจุ บ ั น (ซึ่งก็ คื อโฟล เด อร เ์ ดี ย วกับ
ที่ บั น ทึ กไฟล โ์ ปรแกรม เอาไว )้
ก า รใ ช เ้ ค รื่ อ ง “ ” ร ะ บุ ชื่ อไ ฟ ล ์ ตั ว แ ป ล ภ า ษ า C จ ะ เ ริ่ ม ค ้น ห า ไ ฟ ล ์จ า กโ ฟ ล เ ด อ ร ป
์ ั จ จุ บั น ก่ อ น
ถ ้า ไ ม่ พ บ จึ ง จ ะ ไ ป ค ้น ห า ต่ อไ ป ใ นโ ฟ ล เ ด อ ร ท
์ ่ี ตั ว แ ป ล ภ า ษ า กา ห น ดไ ว ้
#DEFINE
ก่ อ น ที่ จ ะ อ ธิ บ า ย ถึ ง ห น้ า ที่ ข อ ง พ รี เ ซ ส เ ซ อ ร ไ์ ด เ ร็ ค ที ฟ # D E F I N E เ ร า จา เ ป็ น จ ะ ต ้อ ง รู จ้ ั ก คา
ว่ า ม า โ ค ร ( M A C R O L ) ใ น ภ า ษ า C เ สี ย ก่ อ น
มาโคร (MACRO)
ม า โ ค ร เ ป็ น ชื่ อ ที่ เ ร า ส ร า้ ง ขึ ้น ม า ภ า ยใ นโ ป ร แ ก ร ม พ ร อ้ ม กั บ กา ห น ด ค่ า ห รื อ ค ว า ม ห ม า ยใ ห ้ก ั บ
ม า โ ค ร นั้ น โ ด ย มี ข ้อ กา ห น ด ว่ า ชื่ อ ข อ ง ม า โ ค ร จ ะ ต ้อ ง เ ป็ น ตั ว อั ก ษ ร ตั วใ ห ญ่ แ ล ะ ค่ า ที่ กา ห น ด
ใ ห ้ก ั บ ม า โ ค ร ส า ม า ร ถ เ ป็ นไ ด ้ต ้ั ง แ ต่ ตั ว เ ล ข ข ้อ ค ว า ม ห รื อ คา สั่ ง ที่ ใ ห ้ผ ล ลั พ ธ อ
์ อ ก ม า เ ป็ น
่
ตั ว เ ล ข ( เ ช่ น คา สั ง คา น ว ณ )
ย ก ตั ว อ ย่ า ง เ ช่ น ส ร า้ ง ม า โ ค ร ชื่ อ N U M B E R แ ล ้ว กา ห น ด ค่ า ใ ห ้เ ป็ น 1 5 ห รื อ ส ร า้ ง ม า โ ค ร
ชื่ อ N A M E แ ล ้ว กา ห น ด ค่ า ใ ห ้เ ป็ น ข ้อ ค ว า ม “ D E V B O O K ”
เ มื่ อ มี ก า ร เ รี ย กใ ช ม
้ า โ ค ร ที่ ส ร า้ ง ขึ ้น ที่ ตา แ ห น่ งใ ด ก็ ต า ม ภ า ยใ นโ ป ร แ ก ร ม ตั ว แ ป ล ภ า ษ า C จ ะ
นา ค่ า ข อ ง ม า โ ค รไ ป แ ท น ที่ ใ น ตา แ ห น่ ง นั้ น ป ร ะ โ ย ช น์ ข อ ง ก า รใ ช ม
้ า โ ค ร ที่ เ ห็ นไ ด ้ช ั ด เ จ น ก็ คื อ
ใ น ก ร ณี ที่ เ ร า มี ข ้อ มู ล ซึ่ ง ต ้อ ง เ รี ย กใ ช บ
้ ่ อ ย ค ร ้ังใ นโ ป ร แ ก ร ม ก า ร ส ร า้ ง ม า โ ค ร สา ห ร ับ ข ้อ มู ล นั้ น
ขึ ้น ม า ใ ช ง้ า น จ ะ ส ะ ด ว ก ก ว่ า ก า ร ที่ ต ้อ ง เ ขี ย น ข ้อ มู ล นั้ น ห ล า ย ๆ ค ร ้ัง ซึ่ ง อ า จ จ ะ ทา ใ ห ้เ กิ ด
ค ว า ม ผิ ด พ ล า ด ขึ ้นไ ด ้
ข อ ง พ รี เ ซ ส เ ซ อ ร ไ์ ด เ ร็ ค ที ฟ # D E F I N E ใ ช ส
้ า ห ร ับ ส ร า้ ง ม า โ ค ร แ ล ะ กา ห น ด ค่ า ใ ห ้ก ั บ ม า โ ค ร
นั้ น รู ป แ บ บ ก า ร เ ขี ย น คา สั่ ง ข อ ง พ รี เ ซ ส เ ซ อ ร ไ์ ด เ ร็ ค ที ฟ # D E F I N E แ ส ด ง ดั ง ต่ อไ ป นี ้
ตัว อย่ า งที่ จะแสดงต่ อไปนี ้เป็ นการ
เรีย นใช ข
้ องพรีเ ซสเซอร ไ์ ดเร็ ค ที ฟ
้
#define สร า้ งมาโครขึ นมาพร
อ้ ม
้
ทั้งทดลองนามาโครที่ สร า้ งขึ นไปใช
้
งานในโปรแกรม
ในหน้ า ต่ า งโปรแกรม Turbo C++
้
่ ตัว แปล
จะปรากฏไฮไลท ข
์ ึ นมาตรงที
ภาษา C ตรวจพบข อ้ ผิ ด พลาดส่ ว น
ทางด า้ นล่ า งในหน้ า ต่ า ง Message
จะอธิ บ ายถึ ง สาเหตุ ข องความ
ผิ ด พลาดตรงจุ ด นั้ น
้
่ องจากคาสั่ งที่ เครื่องไม่ ส ามารถประมวลผล
ความผิ ด พลาดที่ เกิ ด ขึ นเนื
ได ้ ในขณะที่ โปรแกรมกาลั ง ทางานจะเรีย กว่ า ความผิ ด พลาดในขณะ
รน
ั (RUN TIME ERROR )
ท่ อ นจบบท
ในบทนี ้ เราเริ่มตั้งแต่ ก ารเขี ย นโปรแกรมภาษา C
ทดลองร น
ั เพื่ อดู ผ ลการทางานของโปรแกรม ทาความรู จ้ ัก
ส่ ว นประกอบของโปรแกรมภาษา C การเขี ย นคาสั่งและ
Comment นอกจากนี ้ ในตอนท้า ยของบทเรายังได ร้ ู จ้ ัก
้
ความผิ ด พลาดที่ อาจเกิ ด ขึ นได
ใ้ นกรณี ที่ ร น
ั โปรแกรมไม่ ผ่ า น
้
่ จาเป็ นในการฝึ กหัด เขี ย น
ซึ่งทั้งหมดนี ้ เป็ นพื นฐานที
โปรแกรมด ว้ ยภาษา C
ความหมายของข อ้ มู ล
ถ า้ ถามว่ า ข อ
้ มู ล คื อ อะไร ก่ อ นอื่ นให พ
้ ิ จ า รณาว่ า เรา เขี ย น
้
่
โปรแกรมขึ นมา เพื ออะไร จุ ด ประสง ค ข
์ องกา รเขี ย นโป รแกรมก็ เพื่ อ
ทางานให ส
้ าเร็ จ ตามวั ต ถุ ป ระส ง ค ท
์ ่ี ตั้ งไว ้ ถ า้ จะเป รีย บ เที ย บให ง้ ่ ายต่ อ การ
ทาความเข า้ ใจ งานที่ จะต อ
้ ง ทาก็ คื อ โจทย ป
์ ั ญหา ส่ ว นโปรแกรมก็ คื อ
การแก โ้ จทย ป
์ ั ญหา ดั ง นั้ น ข อ
้ มู ล ก็ คื อ ทุ ก สิ่ งที่ เกี่ ยวข อ
้ งกั บ ปั ญหา ซึ่ง
จะต อ
้ งนามาใช ใ้ นการแก โ้ จทย ป
์ ั ญหา หรือ นามาใช ใ้ นกา รเขี ย น
่
โปรแกรมนั นเอง
้ เงิ น ฝาก ของ
สมมติ ว่ า เราจ ะเขี ย นโป รแกรมสาหร บ
ั คิ ด ดอกเบี ย
ลู ก ค า้ ธนาคาร ข อ
้ มู ล สาหร บ
ั ปั ญหานี ้ เป็ นได ต
้ ั้ ง แต่ ป ระเภ ท ของบั ญ ชีเ งิ น
ฝาก, อั ต ราดอกเบี ้ย, เงิ น ต น
้ , ระยะเวลา ฝากเงิ น , ชื่อบั ญ ชี, เลขที่ บั ญ ชี
่
และอื น ๆ
จากข อ
้ มู ล ทั้ งหมด ที่ รวบรว มมา ได ้ เราไม่ ไ ด ใ้ ช ใ้ นกา ร
แก ป
้ ั ญหาทั้ งหม ด แต่ จ ะเลื อ กเฉพา ะข อ
้ มู ล ที่ มี ป ระโยชน์ แ ล ะจาเป็ นต อ
้ งใช ้
สาหร บ
ั การเขี ย นโปรแกรมภา ษา C ก็ เ ช่ น กัน เราต อ
้ งศึ ก ษาว่ า ภา ษา C มี
่
่
ขอ
้ มู ล กี ชนิ ด แต่ ล ะชนิ ดมี ร าย ล ะเอี ย ด อย่ า งไร เพื อพิ จ ารณาได ว้ ่ า ปั ญหา
่
ที เราจะต อ
้ ง แก ไ้ ขนั้ นอะไรคื อ ข อ
้ มู ล ที่ จ ะนามา ใช ใ้ นกา รเขี ย นโปรแกรมได ้
บ า้ ง
ขอ
้ มู ล ที่ มี ค วามหมายและใช ง้ านกันในภาษา C แบ่ งได เ้ ป็ น 6 ชนิ ด ดัง
แสดงรายละเอี ย ดต่ อไปนี ้
•
ตัว เลขจานวนเต็ ม (Integer) ก็ ค ื อ ตัว เลขจานวนเต็ ม ปกติ ท่ ัวไป
ซึ่งเป็ นได ต
้ ้ังแต่ จานวนเต็ มบวก จานวนเต็ มศู น ย ์ และจานวนเต็ ม ลบ
ตัว อย่ า งข อ
้ มู ล ชนิ ดจานวนเต็ ม ได แ้ ก่ 19, 1500, 299, -543, 0,
-45000
•
ตัว เลขทศนิ ยม (Float) ก็ ค ื อ ตัว เลขที่ ไม่ ใ ช่ จานวนเต็ ม โดย
อาจจะเป็ นเลขทศนิ ยมชนิ ดคงที่ ทศนิ ยมไม่ รู จ้ บ หรือ ทศนิ ยมที่ อยู่
ในรู ป แบบ e ยกกาลัง ก็ ไ ด ้ ตัว อย่ า งข อ
้ มู ล ชนิ ดตัว เลขทศนิ ยมได แ้ ก่
11.25, -0.58, -178.26, 2.00, -1.512, 2.503,
16.66666..... และ 33.3333...
•
เลขฐานแปด (Octal) นอกจากระบบเลขฐานสิ บ ที่ เราใช ง้ านกัน
เป็ นประจาในชีว ิ ต ประจาวัน แล ว้ คอมพิ ว เตอร ย์ ังใช ร้ ะบบเลข ฐาน
แปดในการทางานด ว้ ย ดัง นั้ น ข อ
้ มู ล ชนิ ดเลขฐานแปดจึ ง มี
ความหมายในภาษา C โดยการเขี ย นเลขฐานแปดทาได โ้ ดยเขี ย น
เลขศู น ย น
์ าหน้ า เลขในระบบฐานะแปด ยกตัว อย่ า งเช่ น 0124,
077, 0113 และ 042
•
เลขฐานสิ บ หก (Hexadecimal) เลขฐานสิ บ หกเป็ นระบบเลขฐาน
อี ก ชนิ ดหนึ่ งที่ คอมพิ ว เตอร ใ์ ช ง้ าน ดัง นั้ น ข อ
้ มู ล ชนิ ดเลขฐานสิ บ
หกจึ ง มี ค วามหมายในภาษา C สาหร บ
ั การเขี ย นข อ
้ มู ล ชนิ ด
เลขฐานสิ บ หกให เ้ ขี ย นเลขศู น ย แ์ ละตัว x (0x) นาหน้ า เลขในระบบ
ฐานสิ บ หก ยกตัว อย่ า งเช่ น 0×17, 0×d, 0×5f, 0×33
•
อัก ขระ (Character) ก็ ค ื อ ตัว อัก ษรหรือ สัญ ลัก ษณ์อ ื่ น ๆ ที่ มี
ความหมายและมี ค วามยาว 1 อัก ขระ (1 byte) ซึ่งสามารถเป็ นได ้
ตั้งแต่ ต ัว อัก ษร A-Z, a-z, 0-9 หรือ สัญ ลัก ษณ์อ ื่ น ๆ ที่ มี
ความหมายอย่ า งเช่ น ( # ๓ & โดยข อ
้ มู ล ชนิ ดอัก ขระจะต อ
้ งเขี ย น
ไว ภ
้ ายในเครื่องหมาย ‘ ’ (single quote) ยกตัว อย่ า งเช่ น ‘C’,
ชนิ ด ของข อ้ มู ลในภาษาซี
ตัว แปรและหน้า ที่ของตัว แปร
เมื่ อเราเตรีย ม ข อ
้ มู ลไว พ
้ ร อ้ ม แล ว้ การจะนาข อ
้ มู ลเข า้ ไปใช ง้ านใน
โปรแกรมเราต อ
้ งทาให ต
้ ัว แปลภาษา C รู จ้ ั ก ข อ
้ มู ล เหล่ า นั้ นเสี ย ก่ อ นจึ ง จ ะใช ง้ านได ้
้
ซึ่งวิ ธ ี ก ารก็ คื อ การสร า้ งตั ว แป รสาหร บ
ั ขอ
้ มู ล เหล่ า นั้ นขึ นมา
ตัว แปร (Variable ) คื อ การจองพื ้นที่ เก็ บ ข อ
้ มู ลในหน่ วย ความจาของ
่
่
เครือง ค อมพิ ว เต อร พ
์ ร อ้ มกั บ กา หนดชื อเรีย กแท นหน่ วย ความจาในตา แหน่ งนั้ น
เป รีย บเที ย บได ก
้ ับ กา รจ องห อ
้ ง ที่ มี เ ลขที่ ประจาห อ
้ งให ก
้ ับ ข อ
้ มู ล เวลาจะใช ง้ านข อ
้ มู ล
่
ใดก็ ใ ห เ้ รีย กผ่ า นชื อ ของ ตั ว แปร
้
ยกตั ว อย่ า งเช่ น ถ า้ เราสร า้ งตั ว แปรขึ นมา
1 ตั ว โดยชื่อว่ า Num สาหร บ
ั
่
้
่
เก็ บ ค่ า ตัว เลข 16 เมื อต อ
้ งกา รนาจา นวน 16 นั นมาใช ง้ าน เราก็ พี ย งแต่ เ รีย กชื อ
Num ตัว แปลภาษา C จะแปลความ หมายถู ก ต อ
้ งว่ า Num ก็ คื อ การนาค่ า ตัว เล ข
่
16 ที เก็ บไว ใ้ นหน่ วย ควา มจามาใช ง้ าน
ชนิ ดของต ว
ั แปรใน ภา ษา C
ตัว แปรในภา ษา C แบ่ ง เป็ น 3 ประเภทใหญ่ ๆ คื อ
· ตัว แปรพื ้นฐาน (Scalar) ซึ่งหมายถึ ง ตั ว แปรที่ เก็ บ ข อ
้ มู ลได เ้ พี ย ง ค่ า เดี ย วในหนึ่ ง
ตัว แปร
· ตัว แปรชุ ด (Array)
· ตัว แปรโครง สร า้ ง (Structure ) ซึ่งก็ คื อ ตั ว แปรที่ สามา รถเก็ บ ข อ
้ มู ลไว ไ้ ด ห
้ ลา ยค่ า
ภายในตัว แปรตัว เดี ย ว
ในบทนี ้ จ ะพู ดถึ ง เฉพา ะตั ว แปรพื ้นฐา น ส่ ว นตั ว แปรชุ ด แล ะ ตั ว แปรโค รง สร า้ งจะพู ดถึ ง
ต่ อไปในบ ท ที่ 7 เรือ งตัว แปรอาร เ์ รย ์ (Array) และบทที่ 11 โครงสร า้ งข อ
้ มู ลใน
ภาษา C
ตั ว แปรพื ้นฐานในภา ษา C ตามาตรฐาน ANSI (American National Standard
Institute ) มี อ ยู่ ช นิ ดด ว้ ยกัน แต่ ล ะชนิ ดจะใช ส้ าหร บ
ั เก็ บข อ
้ มู ลต่ า งปร ะเภ ทกันไป
เช่ น ตัว แปรสาหร บ
ั เก็ บตัว เลขจา นวนเต็ ม ตัว แปรสาหร บ
ั เก็ บตัว เลขท ศนิ ยม หรือ ตัว
่
แปรสาหร บ
ั เก็ บ อั ก ขระ ซึงเราควรเลื อ กใช ต
้ ั ว แปรให เ้ หมา ะสมกับ ชนิ ดของข อ
้ มู ล
ชนิ ดของ ตัว แปรในภาษา C ตามมาตรฐาน ANSI
้ อตั
่ ว แปร
หลัก การตังชื
่ ซึ่งชือนั
่ ้ นไม่ ใ ช่ว่ า
ในการประกาศสร า้ งตัว แปรต อ้ งมี ก ารกาหนดชือ
จะต อ้ งให ส
้ ื่ อความหมายถึ ง ข อ้ มู ล ที่ จะเก็ บ เพี ย งอย่ า งเดี ย วโดยไม่
่ ว แปร
คานึ งถึ ง อย่ า งอื่ น เนื่ องจากภาษา C มี ข อ้ กาหนดในการตั้งชือตั
่ ด หลัก การเหล่ า นี ้โปรแกรมจะไม่ ส ามารถทางานได ้
เอาไว ้ ถ า้ ตั้งชือผิ
่ ว แปรในภาษา C มี ด ัง นี ้
หลัก การตั้งชือตั
้ น
1.ต อ้ งขึ นต
้ ด ว้ ยตัว อัก ษร A- Z หรือ a-z หรือ เครื่องหมาย
_(Underscore) เท่ า นั้ น
่ ว แปรสามารถใช ต้ ัว อัก ษร A-Z หรือ a-z หรือ ตัว เลข
2.ภายในชือตั
0-9 หรือ เครื่องหมาย_
่ า้ มมี ก ารเว น
3.ภายในชือห
้ ช่อ งว่ า งหรือใช ส้ ัญ ลัก ษณ์อ ื่ น
นอกเหนื อจากที่ ระบุไ ว ใ้ นข อ้ 2
่ Cat จะไม่
4.ตัว อัก ษรตัว เล็ ก และตัวใหญ่ มี ค วามแตกต่ า งกัน โดยชือ
เหมื อ นกับ cat หรือ CAT ดัง นั้ นจึ ง ต อ้ งตรวจสอบให ด
้ ี
่ ากั
้ บ คาสงวน (Reser ved word)
5.ห า้ มตั้งชือซ
ที่มา
http://jutamas999.blogspot.com/2011/02/c_09.
html