การเขียนโปรแกรม Dev c++

84,200 views

Published on

เอกสารประกอบการเรียนการเขียนโปรแกรมภาษาซี ด้วย Dev C++

Published in: Education
13 Comments
25 Likes
Statistics
Notes
No Downloads
Views
Total views
84,200
On SlideShare
0
From Embeds
0
Number of Embeds
7,353
Actions
Shares
0
Downloads
1,519
Comments
13
Likes
25
Embeds 0
No embeds

No notes for slide

การเขียนโปรแกรม Dev c++

  1. 1. การเขียนโปรแกรมภาษาซี หนา 1 1. ความรูเ บื้องตนเกี่ยวกับภาษาซี ภาษาซีเปนภาษาระดับสูง( High-Level-Language) และภาษาโปรแกรมที่โปรแกรมเมอรนิยมใชกันมาก เนื่องจากเปนภาษาที่มีความเร็วในการทํางานสูงใกลเคียงกับภาษาเครื่อง มีโครงสรางที่ชัดเจนเขาใจงาย สามารถเขียนโปรแกรมเพื่อติดตอกับฮารดแวรของเครื่องคอมพิวเตอรไดอยางดี ภาษาซีเกิดขึ้นในป ค . ศ .1972 ผูคิดคนคือนายเดนนีส ริทชี (Dennis Ritchi) การศึกษาภาษาซีถือวาเปนพื้นฐานในการศึกษาภาษาใหม ๆ ไดขั้นตอนการพัฒนาโปรแกรมภาษาซี ขั้นตอนที่ 1 เขียนโปรแกรม (source code) ใช editor เขียนโปรแกรมภาษาซีและทําการบันทึกไฟลตนฉบับใหมีนามสกุลเปน .Cpp หรือ.C จากนั้นใหคอมไพลโปรแกรมก็จะไดไฟลออบเจ็กตโคดที่มีนามสกุลเปน .OBJ เมื่อทําการเชื่อมโยงไฟลเขากับไลบรารีคําสั่งดวย Link ก็จะไดไฟลที่มีนามสกุลเปน .EXE ที่พรอมทํางานไดบนเครื่องคอมพิวเตอร editor คือ โปรแกรมที่ใชสําหรับการเขียนโปรแกรม โดยตัวอยางของ editor ที่นิยมนํามาใชในการเขียนโปรแกรมไดแก Notepad, Edit ของ Dos ,Text Pad และ Edit Plus เปนตน ผูเขียนโปรแกรมสามารถเลือกใชโปรแกรมใดในการเรียนโปรแกรมก็ได แลวแตความถนัดของแตละบุคคล ขั้นตอนที่ 2 คอมไพลโปรแกรม (compile) นํา source code จากขั้นตอนที่ 1 มาทําการคอมไพล เพื่อแปลจากภาษาซีที่มนุษยเขาใจไปเปนภาษาเครื่องที่คอมพิวเตอรเขาใจได ในขั้นตอนนี้คอมไพเลอรจะทําการตรวจสอบ source code วาเกิดขอผิดพลาดหรือไม • หากเกิดขอผิดพลาด จะแจงใหผูเขียนโปรแกรมทราบ ผูเขียนโปรแกรมจะตองกลับไปแกไขโปรแกรม และทําการคอมไพลโปรแกรมใหมอีกครั้ง • หากไมพบขอผิดพลาด คอมไพเลอรจะแปลไฟล source code จากภาษาซีไปเปนภาษาเครื่อง (ไฟลนามสกุล .obj) เชนถาไฟล source code ชื่อ work.c ก็จะถูกแปลไปเปนไฟล work.obj ซึ่งเก็บภาษาเครื่องไวเปนตน compile เปนตัวแปลภาษารูปแบบหนึ่ง มีหนาที่หลักคือการแปลภาษาโปรแกรมที่มนุษยเขียนขึ้นไปเปนภาษาเครื่อง โดยคอมไพเลอรของภาษาซี คือ C Compiler ซึ่งหลักการที่คอมไพเลอรใชเรียกวา คอมไพล (compile) โดยจะทําการอานโปรแกรมภาษาซีทั้งหมดตั้งแตตนจนจบ แลวทําการ แปลผลทีเดียว จัดทําโดยครูเนาวรัตน ใจการุณ
  2. 2. การเขียนโปรแกรมภาษาซี หนา 2 นอกจากคอมไพเลอรแลว ยังมีตัวแปลภาษาอีกรูปแบบหนึ่งที่เรียกวา อินเตอรพรีเตอร การอานและ แปลโปรแกรมทีละบรรทัด เมื่อแปลผลบรรทัดหนึ่งเสร็จก็จะทํางานตามคําสั่งในบรรทัดนั้น แลวจึงทําการแปลผลตามคําสั่งในบรรทัดถัดไป หลักการที่อินเตอรพรีเตอรใชเรียกวา อินเตอรเพรต(interpret ) ขอดีและขอเสียของตัวแปลภาษาทั้งสองแบบมีดังนี้ ขอดี ขอเสีย คอมไพเลอร • ทํางานไดเร็ว เนื่องจากทําการแปลผล • เมื่อเกิดขอผิดพลาด ทีเดียว แลวจึงทํางานตามคําสั่งของ ขึ้นกับโปรแกรมจะ โปรแกรมในภายหลัง ตรวจสอบหาขอผิดพลาด • เมื่อทําการแปลผลแลว ในครั้งตอไปไม ไดยาก เพราะทําการแปล จําเปนตองทําการแปลผลใหมอีก เนื่องจาก ผลทีเดียวทั้งโปรแกรม ภาษาเครื่องที่แปลไดจะถูกเก็บไวที่ หนวยความจํา สามารถเรียกใชงานไดทันที อินเตอรพรีเตอร • หาขอผิดพลาดของโปรแกรมไดงาย • ชา เนื่องจากที่ทํางานทีละ เนื่องจากทําการแปลผลทีละบรรทัด บรรทัด • เนื่องจากทํางานทีละบรรทัดดังนั้นจึงสั่ง ใหโปรแกรมทํางานตามคําสั่งเฉพาะจุดที่ ตองการได • ไมเสียเวลารอการแปลโปรแกรมเปน เวลานานขั้นตอนที่ 3 เชื่อมโยงโปรแกรม (link) การเขียนโปรแกรมภาษาซีนั้นผูเขียนโปรแกรมไมจําเปนตองเขียนคําสั่งตาง ๆ ขึ้นใชงานเองเนื่องจากภาษาซีมีฟงกชั่นมาตรฐานใหผูเขียนโปรแกรมสามารถเรียกใชงานได เชน การเขียนโปรแกรมแสดงขอความ “Lampangkanlayanee” ออกทางหนาจอ ผูเขียนโปรแกรมสามารถเรียกใชฟงกชั่นprintf() ซึ่งเปนฟงกชั่นมาตรฐานของภาษาซีมาใชงานได โดยสวนการประกาศ (declaration) ของฟงกชั่นมาตรฐานตาง ๆ จะถูกจัดเก็บอยูในเฮดเดอรไฟลแตละตัว แตกตางกันไปตามลักษณะการใชงาน ดวยเหตุนี้ภาษาเครื่องที่ไดจากขั้นตอนที่ 2 จึงยังไมสามารถนําไปใชงานได แตตองนํามาเชื่อมโยงเขากับ library กอน ซึ่งผลจากการเชื่อมโยงจะทําใหได executable program ( ไฟลนามสกุล.exe เชน work.exe) ที่สามารถนําไปใชงานได จัดทําโดยครูเนาวรัตน ใจการุณ
  3. 3. การเขียนโปรแกรมภาษาซี หนา 3ขั้นตอนที่ 4 ประมวลผล (run) เมื่อนํา executable program จากขั้นตอนที่ 3 มาประมวลผลก็จะไดผลลัพธ (output) ของโปรแกรมออกมา ( ถามี ) จัดทําโดยครูเนาวรัตน ใจการุณ
  4. 4. การเขียนโปรแกรมภาษาซี หนา 4 กิจกรรมที่ 1 ขั้นตอนการพัฒนาโปรแกรมภาษาซีคําชี้แจง จงเติมคําตอบใหถูกตองและสมบูรณ1. จงพิจารณาขอความตอไปนี้ จัดอยูในขั้นตอนการทํางานอะไร # include <stdio.h> # include <conio.h> main() { printf(“Hello! This is my first program.n”); printf(“I love C programming.n”); getch(); }....................................................................................................................................................................................................................................................................................................................................2. ภาพตอไปนี้ จัดอยูในขั้นตอนการทํางานใด................................................................................................................................................................................................................................................................................................................................3. การทํางานในขั้นตอนใดเมื่อเสร็จสิ้นการทํางานจะไดไฟลที่มีนามสกุล .OBJ..............................................................................................................................................................................................................................................................................................................................4. การทํางานในขั้นตอนใดเมื่อเสร็จสิ้นการทํางานจะไดไฟลที่มีนามสกุล .cpp..............................................................................................................................................................................................................................................................................................................................5. การทํางานในขั้นตอนใดเมื่อเสร็จสิ้นการทํางานจะไดไฟลที่มีนามสกุล .EXE.............................................................................................................................................................................................................................................................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
  5. 5. การเขียนโปรแกรมภาษาซี หนา 5 2. การใชโปรแกรม Bloodshed Dev-C++การเรียกโปรแกรมภาษาซี ชุดพัฒนาหรือเครื่องมือที่ชวยในการพัฒนาโปรแกรม ภาษาอังกฤษเรียกวา IDE (IntregalDevenlopment Environment) เปนโปรแกรมที่ออกแบบมาเพื่อชวยใหผูที่ทําการเขียนโปรแกรมใชในการสรางโปรแกรม โดยจะมี อีดิเตอร (Editor) สําหรับเขียนโคดของโปรแกรมและมีตัวแปลภาษามาใหพรอมปจจุบันมีการออกชุดพัฒนามาหลายรุน และเปลี่ยนแปลงรวดเร็วมาก เชน Turbo C++ , Borland C++ ,Microsoft C/C++ , Microsoft Visual C++ , Microsoft Visual C# , Microsoft Visual C++ .NET ซึ่งชุดพัฒนาแตละตัวมีวิธีการนําไปใชงานที่แตกตางกัน เพราะมันเปนผลิตภัณฑที่พัฒนามาจากบริษัทตางกันแตอยางไรก็ตามการเขียนโปรแกรมภาษาซีไมวาจะเปน IDE ใด ก็มีหลักการและวิธีการในการเขียนที่คลายคลึงกัน จะตางกันบางตรงรายละเอียดบางอยางที่เพิ่มขึ้น หรือพัฒนาใหงายในการเขียนโปรแกรม ที่จะกลาวถึงตอไปนี้ เปน IDE ของ Bloodshed Dev-C++ ซึ่งเปนชุดพัฒนาขึ้นมาเพื่อใชเปนฟรีแวรและทํางานภายใตระบบปฏิบัติการ Windows ใชไดกับ Windows ทุกรุน ซึ่งมีวิธีการเรียกโปรแกรมขึ้นมาใชงานไดดังนี้ 1. คลิกที่ Start 2. เลื่อนเมาสไปที่ Bloodshed Dev-C++ 3. คลิกที่ Dev-C++ จัดทําโดยครูเนาวรัตน ใจการุณ
  6. 6. การเขียนโปรแกรมภาษาซี หนา 6หนาตาของโปรแกรม Bloodshed Dev-C++ เมื่อเรียกโปรแกรม Bloodshed Dev-C++ ขึ้นมาใชงานแลวจะมาหนาตาดังรูปซึ่งโปรแกรมจะมีสวนประกอบดังนี้1. Titlebar คือ แถบที่อยูบนสุดของโปรแกรม มีสีน้ําเงิน และจะมีชื่อของชุดพัฒนาโปรแกรมภาษาซีคือ Dev-C++2. Menubar ประกอบดวยเมนูตาง ๆ 11 รายการคือFile Edit Search View Project Execute Debug Tools CVS Window Help3. Tool bars เปนสวนของเครื่องมือ ที่ชวยอํานวยความสะดวกในการเขียนและพัฒนาโปรแกรม4. Project/Class Browser เปนสวนที่อยูทางดานซายของโปรแกรม ใชเพื่อแสดง Project หรือ Classตางๆ ของโปรแกรม5. Editor สวนที่อยูทางดานขวา ใชเพื่อเขียนโคดภาษาซี6. Statusbar สวนที่อยูลางสุด ใชเพื่อบอกสถานะตาง ๆ ในขณะที่กําลังพัฒนาโปรแกรม เชน จํานวนบรรทัดมั้งหมด หรือสถานะการพิมพแทรก/พิมพทับ จัดทําโดยครูเนาวรัตน ใจการุณ
  7. 7. การเขียนโปรแกรมภาษาซี หนา 7 เมนูของโปรแกรม Bloodshed Dev-C++เมนู File มีเมนูยอยที่ควรรูดังนี้New เพื่อสรางไฟลใหมOpen Project or File เพื่อเปดไฟลหรือโปรเจ็กซที่ไดทํางาน และบันทึกไวแลวSave เพื่อบันทึกไฟลSave As เพื่อบันทึกไฟลเปนชื่อใหม หรือเพื่อบันทึกลงในโฟลเดอรอื่นSave All เพื่อบันทึกไฟลหรือโปรเจ็กซทั้งหมด ที่เปดทํางานอยูClose เพื่อปดไฟลที่กําลัง Active อยูClose All เพื่อปดไฟลหรือ โปรเจ็กซทั้งหมด ที่เปดอยูExit เพื่อปดโปรแกรม Bloodshed Dev-C++ จัดทําโดยครูเนาวรัตน ใจการุณ
  8. 8. การเขียนโปรแกรมภาษาซี หนา 8เมนู Edit มีเมนูยอยที่ควรรูดังนี้Undo เลิกทําหรือยกเลิกการทํางานRedu ใหทําซ้ํางานที่เพิ่งทําผานไปCut ตัดขอความที่ทําแถบสีนําไปไวใน คลิปบอรดCopy คัดลอกขอความที่ทําแถบสีนําไปไวใน คลิปบอรดPaste ใหวาง ปะ หรือ แปะ ขอความที่ได Cut หรือ Copy ไวแลว มาวางลงในตําแหนงของ เคอรเซอรInsert ทําการแทรก 1. วันที่ (Date/Time) ลงใน Editor 2. Comment header สวนที่เปน หมายเหตุในการพัฒนาโปรแกรมลงบนสวนหัวของ EditorSelect All เลือกโคด หรือขอความทั้งหมด ที่อยูใน Editor จัดทําโดยครูเนาวรัตน ใจการุณ
  9. 9. การเขียนโปรแกรมภาษาซี หนา 9เมนู Search มีเมนูยอยที่ควรรูดังนี้Find คนหาคํา หรือขอความใน EditorSearch Again ใหคนซ้ํา หรือคนหาตอไปอีกReplace ใหแทนที่คําที่คนหา ดวยคําใหม จัดทําโดยครูเนาวรัตน ใจการุณ
  10. 10. การเขียนโปรแกรมภาษาซี หนา 10เมนู View มีเมนูยอยที่ควรรูดังนี้Project/Class Browser เพื่อแสดงหรือไมแสดง Project/Class BrowserStatusbar เพื่อแสดงหรือไมแสดง StatusbarToolbars เพื่อแสดงหรือไมแสดง Toolbars ตาง ๆ ซึ่งประกอบดวย Main Toolbar Edit Toolbar Search Toolbar Compile and run Toolbar Project Toolbar Options Toolbar Special Toolbar Class Toolbar จัดทําโดยครูเนาวรัตน ใจการุณ
  11. 11. การเขียนโปรแกรมภาษาซี หนา 11เมนู Project จัดทําโดยครูเนาวรัตน ใจการุณ
  12. 12. การเขียนโปรแกรมภาษาซี หนา 12เมนู Execute มีเมนูยอยที่ควรรูดังนี้Compile (Ctrl+F9) สั่งใหทําการ Compile ซอรสโคด เมื่อ Compile แลวจะไดไฟลใหมที่มีสวนขยายเปน .exeRun (Ctrl+F10) สั่งใหโปรแกรมทํางานCompile & Run (F9) ใหทําการ Compile และ Run โปรแกรมRebuild All (Ctrl+F11) ใหสรางไฟล .exe ใหม แทนที่ไฟลเดิม จัดทําโดยครูเนาวรัตน ใจการุณ
  13. 13. การเขียนโปรแกรมภาษาซี หนา 13เมนู Debug จัดทําโดยครูเนาวรัตน ใจการุณ
  14. 14. การเขียนโปรแกรมภาษาซี หนา 14เมนู Tools มีเมนูยอยที่ควรรูดังนี้Editor Options เปนการตั้งคาสภาพแวดลอมใหกับ Editor เชน ใหมีหมายเลขบรรทัดเปนตน จัดทําโดยครูเนาวรัตน ใจการุณ
  15. 15. การเขียนโปรแกรมภาษาซี หนา 15เมนู CVS จัดทําโดยครูเนาวรัตน ใจการุณ
  16. 16. การเขียนโปรแกรมภาษาซี หนา 16เมนู Windows มีเมนูยอยที่ควรรูดังนี้Close All ปดวินโดวส ของ Editor ทั้งหมดFull Screen Mode ใหวินโดวสแสดงแบบเต็มจอ ถาตองการยกเลิกแบบ Full Screen ให click ที่เพื่อปดวินโดวสNext ใหแสดงวินโดวสของ Editor ถัดไปPrevious ใหแสดงวินโดวสของ Editor กอนหนา จัดทําโดยครูเนาวรัตน ใจการุณ
  17. 17. การเขียนโปรแกรมภาษาซี หนา 17เมนู Help สวนใหญเปนเมนูเกี่ยวกับการขอความชวยเหลีอการสรางแฟมโปรแกรม การสรางแฟมโปรแกรม ทําไดโดยเลือกเมนู File -> Source File หรือกด Ctrl + Nการปอนโปรแกรมภาษาซี การปอนโปรแกรมในหนาตาง Editor สามารถทําไดเชนเดียวกับการปอนขอความในโปรแกรมจัดพิมพเอกสารทั่วไป จัดทําโดยครูเนาวรัตน ใจการุณ
  18. 18. การเขียนโปรแกรมภาษาซี หนา 18 แบบฝกกิจกรรมที่ 11. ใหเรียกเขาสูโปรแกรม Dev-C++ และปอนโปรแกรมตอไปนี้ #include <stdio.h> ผลการรัน #include <conio.h> ……………………………………………. main() ……………………………………………. ……………………………………………. { ……………………………………………. printf("Hello world"); ……………………………………………. getch(); ……………………………………………. } …………………………………………….การบันทึกโปรแกรม (Save) ในการบันทึกโปรแกรมใหม ทําไดโดยเลือกเมนู File -> Save หรือกด Ctrl + S จะไดหนาตางดังรูป 1 3 2 1. เปลี่ยนไดรฟ เปลี่ยนโฟลเดอร 2. พิมพชื่อไฟล 3. คลิกปุม Save จัดทําโดยครูเนาวรัตน ใจการุณ
  19. 19. การเขียนโปรแกรมภาษาซี หนา 19การแปลโปรแกรม (Compile) การเรียกใชคอมไพลเลอร ทําไดโดยเลือกเมนู Execute -> Compile หรือกด Ctrl + F9 รูป แสดงหนาตาง Compiling ที่ทํางานเสร็จสมบูรณ ในกรณีที่พิมพโปรแกรมผิดจะแสดงรายการขอผิดพลาดที่ตรวจพบ ดังรูป สวนที่บอกวาผิดอะไรบาง รูป แสดงโปรแกรมที่ผิดพลาด จัดทําโดยครูเนาวรัตน ใจการุณ
  20. 20. การเขียนโปรแกรมภาษาซี หนา 20การสั่งใหโปรแกรมทํางาน (Run) เมื่อโปรแกรมไดถูกแปลเปนโปรแกรมภาษาเครื่องเรียบรอยแลว ผูใชสามารถสั่งใหโปรแกรมที่แปลแลวกระทําการ โดยเลือกคําสั่ง Execute -> Run หรือกด Ctrl + F10การเปดแฟมโปรแกรม ผูใชสามารถเปดแฟมโปรแกรมขึ้นมาแสดงบนหนาตางโปรแกรมเพื่อแกไข แปลหรือสั่งใหกระทําการ โดยเลือกคําสั่ง File -> Open Projector or File จะไดหนาตางดังรูป 1 3 2 1. เปลี่ยนไดรฟ เปลี่ยนโฟลเดอร 2. พิมพชื่อไฟล หรือคลิกเลือกชื่อไฟล 3. คลิกปุม Open จัดทําโดยครูเนาวรัตน ใจการุณ
  21. 21. การเขียนโปรแกรมภาษาซี หนา 21 กิจกรรมที่ 2 การใชโปรแกรม Bloodshed Dev-C++คําชี้แจง เขียนตอบลงในชองที่เวนไว1. จงบอกวิธีการเรียกโปรแกรม Bloodshed Dev-C++ ......................................................................... ..........................................................................................................................................................2. จงบอกชื่อสวนตาง ๆ ของโปรแกรม Bloodshed Dev-C++ 2.1 หมายเลข 1 คือ .......................................................................................................................... 2.2 หมายเลข 2 คือ ......................................................................................................................... 2.3 หมายเลข 3 คือ .......................................................................................................................... 2.4 หมายเลข 4 คือ .......................................................................................................................... 2.5 หมายเลข 5 คือ .......................................................................................................................... 2.6 หมายเลข 6 คือ ..........................................................................................................................3. การเขียนโคดภาษาซีตองเขียนลงในสวนใด .......................................................................................4. การสรางไฟลใหม(Source file) ตองทําอยางไร .................................................................................5. จงบอกขั้นตอนการบันทึกโปรแกรม..................................................................................................6. จงบอกขั้นตอนการคอมไพลโปรแกรม ..............................................................................................7. จงบอกขั้นตอนการสั่งใหโปรแกรมทํางาน.........................................................................................8. จงบอกขั้นตอนการเปดแฟมโปรแกรม................................................................................................ จัดทําโดยครูเนาวรัตน ใจการุณ
  22. 22. การเขียนโปรแกรมภาษาซี หนา 22 3. โครงสรางของภาษาซีโครงสรางของโปรแกรมภาษาซีแบงออกเปน 2 สวน1. สวนหัวของโปรแกรม (Head) สวนหัวของโปรแกรมนี้เรียกวา Preprocessing Directive ใชระบุเพื่อบอกใหคอมไพเลอรกระทําการใด ๆ กอนการแปลผลโปรแกรมในที่นี่คําสั่ง #include <stdio.h> ใชบอกกับคอมไพเลอรใหนําเฮดเดอรไฟลที่ระบุคือ stdio.h เขารวมในการแปลโปรแกรมดวย โดยการกําหนด preprocessingdirectives นี้จะตองขึ้นตนดวยเครื่องหมาย # เสมอ คําสั่งที่ใชระบุใหคอมไพเลอรนําเฮดเดอรไฟลเขารวมในการแปลโปรแกรม สามารถเขียนได2 รูปแบบ คือ #include < ชื่อเฮดเดอรไฟล > คอมไพเลอรจะทําการคนหาเฮดเดอรไฟลที่ระบุจากไดเรกทอรีที่ใชสําหรับเก็บเฮดเดอรไฟลโดยเฉพาะ ( ปกติคือไดเรกทอรีชื่อ include) #include “ ชื่อเฮดเดอรไฟล ” คอมไพเลอรจะทําการคนหาเฮดเดอรไฟที่ระบุ จากไดเร็คทอรีเดียวกันกับไฟล source code นั้น แตถาไมพบก็จะไปคนหาไดเร็คทอรีที่ใชเก็บ เฮดเดอรไฟลโดยเฉพาะ2. สวนของฟงกชั่นหลัก (Main Function) ฟงกชั่นหลักของภาษาซี คือ ฟงกชั่น main( ) ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะตองมีฟงกชั่นนี้อยูในโปรแกรมเสมอ จะเห็นไดจากชื่อฟงกชั่นคือ main แปลวา “ หลัก ” ดังนั้น การเขียนโปรแกรมภาษาซีจึงขาดฟงกชั่นนี้ไปไมได โดยขอบเขตของฟงกชั่นจะถูกกําหนดดวยเครื่องหมาย { และ }กลาวคือ การทํางานของฟงกชั่นจะเริ่มตนที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟงกชัน main() จะตองเขียนในรูปของ int main() ซึ่งเปนรูปแบบตามมาตรฐานของ Ansistandard C ซึ่งหมายความวาฟงกชัน main() จะไมมีการรับคาใด ๆ เขามาประมวลผล แตจะสงคา int จัดทําโดยครูเนาวรัตน ใจการุณ
  23. 23. การเขียนโปรแกรมภาษาซี หนา 23กลับไป ( int หมายถึง integer ซึ่งเปนเลขจํานวนเต็มที่ไมมีทศนิยม) ดังจะเห็นวา บรรทัดรองสุดทายกอนจบ จะเขียนวา return 0; การสงคากลับใหฟงกชัน main() ถา return 0; หมายความวา โปรแกรมทํางานเสร็จสิ้นสมบูรณไมมีขอผิดพลาดใด ๆ เกิดขึ้น แตถา return 1; หรือ return <คาอื่น ๆ ที่ไมใช 0>; หมายความวาโปรแกรมจบไมสมบูรณ มีการขามการทํางานบางขั้นตอนเพื่อใหโปรแกรมสิ้นสุดลงพรีโพรเซสเซอร ไดเร็กทีฟ (Preprocessor directive) สวนนี้ทุกโปรแกรมตองมี จะใชสําหรับเรียกคําสั่งหรือฟงกชันที่โปรแกรมตองการในการทํางานและกําหนดคาตาง ๆ โดยคอมไพเลอรจะกระทําตามคําสั่ง กอนที่จะคอมไพลโปรแกรม ซึ่งจะตองเริ่มตนดวยเครื่องหมาย ไดเร็กทีฟ (#) และตามดวยชื่อโปรแกรมหรือชื่อตัวแปรที่ตองกําหนดคาดังตัวอยางตามตาราง Directive การใชงาน #include Include text from a file #define Define a macro #undef Undefine a macro #if Test if a compile-time condition holde #ifdef Test if a simple is defined #ifndef Test if a simple is not defined #else Indicate alternatives if a test fails #elif Combination of #if and #else #endif End a preprocessor condition #line Give a line number for compiler messages #error Terminate processing early #pragma Implementation dependent directiveสําหรับ directive ที่ใชบอย ๆ ไดแก#include เปนการแจงใหคอมไพเลอรอานไฟลอื่นเขามาคอมไพลรวมดวย รูปแบบการใชจะทําโดยเขียน#include แลวตามดวยชื่อไฟล เชน#include <stdio.h> หมายความวา อานไฟล stdio.h เขามาดวย#include "mypro.h" หมายความวา อานไฟล mypro.h จาก folder หรือ directory ที่กําลังทํางานเขามาดวย จัดทําโดยครูเนาวรัตน ใจการุณ
  24. 24. การเขียนโปรแกรมภาษาซี หนา 24 การกําหนดชื่อไฟลตามหลัง #include นั้นจะใชเครื่องหมาย < > ครอมชื่อไฟลก็ได ซึ่งจะเปนการอานไฟลจากไดเร็กทอรี หรือโฟลเดอรที่กําหนดไวกอนแลว โดยปกติจะเปนโฟลเดอร include แตถาใชเครื่องหมาย " " เปนการอานไฟลจาก folder หรือ directory ที่กําลังติดตออยู และไฟลที่จะinclude เขามานี้จะตองไมมีฟงกชัน main() โดยมากแลวจะประกอบดวยโปรแกรมยอย คาคงที่ หรือขอความตางๆ#define เปนการกําหนดคานิพจนตาง ๆ ใหกับชื่อของตัวคงที่ โดยมีรูปแบบดังนี้#define NAME VALUE เชน#define SCHOOL thungsoung //กําหนดชื่อ SCHOOL ใหเก็บคําวา thungsoung เอาไว#define PROVINCE nakornsitammarat //กําหนดชื่อ PROVINCE ใหเก็บคําวา nakornsitammarat เอาไวStatement หรือคําสั่ง คําสั่ง (Statement) หมายถึงประโยคที่เขียนขึ้นเพื่อใหโปรแกรมทํางาน ประกอดวยตัวแปรหรือนิพจนตาง ๆ เพื่อใชประกาศตัวแปร กําหนดคาเริ่มตน กําหนดเงื่อนไข และใชในคําสั่งควบคุมนิพจนหรือตัวแปรที่เขียนขึ้นเปนประโยคคําสั่งในภาษาซีจะใชเครื่องหมาย ; (Semicolon) ปดทายคําสั่ง คําสั่งในภาษาซีสามารถแยกใหเห็นชัดเจนได 5 กลุม คือ 1) คําสั่งสําหรับอธิบาย (Comment Statements) 2) คําสั่งกําหนดชนิดตัวแปร (Declaration Statements) 3) คําสั่งกําหนดคา (Assignment Statements) 4) คําสั่งควบคุม (Control Statements) 5) คําสั่งที่อยูในรูปฟงกชัน เชน คําสั่งรับขอมูล คําสั่งแสดงผลขอมูล เปนตน ในโปรแกรมภาษาซีโปรแกรมหนึ่งๆอาจประกอบดวยคําสั่งทั้ง 5 กลุมหรือมากกวากันก็ได เพื่อความเขาใจคําสั่งแตละกลุมในหัวขอนี้ จะขออธิบายเฉพาะคําสั่งสําหรับอธิบาย คําสั่งกําหนดชนิดตัวแปรและ คําสั่งกําหนดคาใหกับตัวแปรเทานั้น1) คําสั่งสําหรับอธิบาย (Comment Statements) คําสั่งสําหรับอธิบายหรือคอมเมนต (comment) ในภาษาซี คือสวนที่เปนหมายเหตุของโปรแกรม มีไวเพื่อใหผูเขียนโปรแกรมใสขอความอธิบายกํากับลงไปใน source code ซึ่งคอมไพเลอรจะขามการแปลผลในสวนที่เปนคอมเมนตนี้ คอมเมนตในภาษาซีมี 2 แบบคือ • คอมเมนตแบบบรรทัดเดียว ใชเครื่องหมาย // • คอมเมนตแบบหลายบรรทัด ใชเครื่องหมาย /* และ */ จัดทําโดยครูเนาวรัตน ใจการุณ
  25. 25. การเขียนโปรแกรมภาษาซี หนา 25 ตัวอยาง การคอมเมนตในภาษาซี //Comment only one line คอมเมนตแบบบรรทัดเดียว #include <stdio.h> ไมแปลผลในสวนนี้ #include <conio.h> main() { /*comment คอมเมนตแบบหลายบรรทัด many ไมแปลผลในสวนนี้ line*/ }2) คําสั่งกําหนดชนิดตัวแปร (Declaration Statements) คําสั่งกําหนดชนิดตัวแปรนี้มักจะอยูในสวนตนของโปรแกรม ตัวแปรทุกตัวแปรกอนนําไปใชตองประกาศตัวแปร พรอมชนิดขอมูลของตัวแปรนั้น และอาจกําหนดคาเริ่มตนใหกับตัวแปรนั้นๆดวยดังรูปแบบตอไปนี้รูปแบบ <Type> <var1> [=const1][,<var2>[=conts2]]. . . ; Type หมายถึง ชนิดตัวแปร เชน int float char long double เปนตน var1,var2 หมายถึง ชื่อตัวแปร ซึ่งตองตั้งตามกฏการตั้งชื่อ const1,const2 หมายถึง คาคงที่ ที่กําหนดคาใหกับตัวแปรตัวอยางint value , count , x ;char more ;หมายถึง มีการประกาศตัวแปรจํานวน 4 ตัว โดยใหตัวแปร 3 ตัวแรกคือ value count และ x เปนชนิดจํานวนเต็ม สวนประกาศตัวแปร more ใหเปนตัวแปรชนิดตัวอักขระ จัดทําโดยครูเนาวรัตน ใจการุณ
  26. 26. การเขียนโปรแกรมภาษาซี หนา 263) คําสั่งกําหนดคา (Assignment Statements) คําสั่งกําหนดคาในภาษาซีจะใชตัวดําเนินการ " = " เพื่อกําหนดคาใหกับตัวแปร คําสั่งกําหนดคานี้อาจใชในการกําหนดคาเริ่มตนใหกับตัวแปร หรือใชในการคํานวณนิพจนดานขวาของตัวดําเนินการ " = " แลวนําคาที่ไดไปกําหนดคาใหกับตัวแปรดานซายของตัวดําเนินการ "= " หรืออาจใชในการคัดลอกคาของตัวแปรหนึ่งไปใหกับอีกตัวแปรหนึ่ง โดยรูปแบบคําสั่งดังนี้รูปแบบ <var1> [ = <var2>]. . . = <expression> ; var1,var2 หมายถึง ชื่อตัวแปรที่จะถูกกําหนดคา expression หมายถึง นิพจน ซึ่งอาจเปนตัวแปร คาคงที่ หรือเปนการดําเนินการระหวาง ตัวแปร หรือ คาคงที่ = หมายถึง ตัวดําเนินการกําหนดคา โดยใหนําคานิพจนดวยขวาของตัว ดําเนินการ " = " ไปกําหนดคาใหกับตัวแปร ที่อยูดานซาย ของตัวดํา เนินการ " = " หมายเหตุ คําสั่งทุกคําสั่งจะตองปดดวเครื่องหมาย ; (อานวา Semicolon)ตัวอยาง value = 0; count = 1; x = 100; more = y;หมายถึง ใหตัวแปร value มีคา = 0 count มีคา = 1 x มีคา = 100 และ more มีคา = y4) คําสั่งควบคุม (Control Statements) คําสั่งควบคุมเปนคําสั่งที่เขียนขึ้นมาเพื่อควบคุมการทํางานของโปรแกรม ไดแกคําสั่งIf, switch, while, for ซึ่งจะอธิบายในรายละเอียด ในเรื่องของคําสั่งโครงสรางหรือคําสั่งควบคุม5) คําสั่งที่อยูในรูปฟงกชัน (Control Statements) เปนการนําฟงกชันมาตรฐานของภาษาซีมีใชในการเขียนโปรแกรมเชนคําสั่ง printf , scanf โดยจะกลาวถึงเฉพาะคําสั่งประเภทนี้ในหัวขอ การรับและการแสดงผลขอมูล จัดทําโดยครูเนาวรัตน ใจการุณ
  27. 27. การเขียนโปรแกรมภาษาซี หนา 27 กิจกรรม 3 โครงสรางภาษาซีตอนที่ 1 จงเติมคําถามตอไปนี้ ใหถูกตองสมบูรณ1. โครงสรางของภาษาซีในสวนของคําสั่งพรีโพรเซสเซอร ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................2. ในภาษาซี ฟงกชันหลักที่ทุกโปรแกรมตองมี คือฟงกชันอะไร...............................................................................................................................................................3. การเขียนคําสั่งพรีโพรเซสเซอร ตองเริ่มตนดวยเครื่องหมายอะไร...............................................................................................................................................................4. คําสั่งพรีโพรเซสเซอร #include ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................5. คําสั่งพรีโพรเซสเซอร #define ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................6. ประโยคคําสั่งในภาษาซี ตองจบดวยเครื่องหมายอะไร...............................................................................................................................................................7. ประโยชนของการเขียนหมายเหตุไวในโปรแกรม คืออะไร..............................................................................................................................................................................................................................................................................................................................8. การเขียนหมายเหตุในภาษาซี มีหลักการเขียนอยางไร..............................................................................................................................................................................................................................................................................................................................9. รูปแบบการเขียนคําสั่ง #include<ชื่อไฟล> มีความหมายอยางไร..............................................................................................................................................................................................................................................................................................................................10. รูปแบบการเขียนคําสั่ง #include “ชื่อไฟล” มีความหมายอยางไร.............................................................................................................................................................................................................................................................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
  28. 28. การเขียนโปรแกรมภาษาซี หนา 28 4. กฏการตั้งชื่อ (Identifier) ชื่อ หรือ Identifier คือการประกาศ หรือการตั้งชื่อใหกับตัวแปร คาคงที่ ฟงกชัน หรือ class ซึ่งจะอยูภายในสวนตาง ๆของโปรแกรม สําหรับในภาษาซีมีหลักเกณฑในการตั้งชื่อดังนี้ 1. ตองขึ้นตนดวยตัวอักษรในภาษาอังกฤษ หรือเครื่องหมาย _ (Underscore) 2. ตองไมเปนชื่อเดียวกับคําสงวน (Reserve word) หรือคํามาตรฐานที่คอมไพเลอรรูจัก 3. ชื่ออาจตามดวยตัวเลขได แตหามขึ้นตนดวยตัวเลข 4. หามใชเครื่องหมายพิเศษตาง ๆ ในการตั้งชื่อ เชน @ ! # $ ^ & * + - / 5. หามเวนชองวาง 6. ชื่อในภาษาซี มีความแตกตางกันระหวางตัวพิมพเล็กและตัวพิมพใหญ เชน Name จะไมเหมือนกับ nameคําสงวน (Reserve word) คําสงวน หมายถึง ชื่อหรือคําที่คอมไพเลอร สงวนไวเพื่อเปนคําเฉพาะในภาษาซี หามนําคําสงวนนี้ไปใชในการตั้งชื่อ ประกอบดวยคําตาง ๆ ดังตอไปนี้ asm default for pascal switch _ds auto do goto register typedef _es break double huge return union _ss case else if short unsigned cdecl enum int signed void char extern interrupt sizeof volatile const far long static while continue float near struct _csตัวอยางการตั้งชื่อ ชื่อที่ถูก ชื่อที่ผิด เหตุที่ผิด StudentName Student Name มีเครื่องหมายวรรค Part_Number Part-Number มีเครื่องหมาย – firstNAME 1stName เริ่มดวยตัวเลข NumberOfPage #Ofpage มีเครื่องหมาย # จัดทําโดยครูเนาวรัตน ใจการุณ
  29. 29. การเขียนโปรแกรมภาษาซี หนา 29ขอสังเกตเกี่ยวกับการตั้งชื่อ1. ควรตั้งชื่อใหมีความหมายและเขาใจไดงาย ดังตัวอยางตอไปนี้ Length มีความหมายและเขาใจไดงายกวา L2. ควรตั้งใหเห็นสวนประกอบตาง ๆ ไดงาย ดังตัวอยางตอไปนี้ StudentName เห็นสวนประกอบตาง ๆ ไดงายกวา studentname Part_Number เห็นสวนประกอบตาง ๆ ไดงายกวา PARTNUMBER3. เนื่องจากชื่อสวนมากที่มีอยูในคอมไพเลอรมักนิยมเริ่มดวยเครื่องหมายขีดเสนใต ( _ ) ดังที่เราไดเห็นตัวอยางมาแลวจากคําสงวน (Reserve word) เพราะฉะนั้นถาเปนไปได เราควรหลีกเลี่ยงการตั้งชื่อที่เริ่มตนดวยเครื่องหมายขีดเสนใต จัดทําโดยครูเนาวรัตน ใจการุณ
  30. 30. การเขียนโปรแกรมภาษาซี หนา 30 กิจกรรมที่ 4 ชื่อ (Identifiers) และคําสงวน (Reserved Word)คําสั่ง จงพิจารณาวา ชื่อ (Identifier) ตอไปนี้ ถูกหรือผิดโดยการทําเครื่องหมาย  ลงในชองถูก และ กา  ลงในชอง ผิด และบอกเหตุผลดวยวาผิดเพราะเหตุใด ชื่อ (Identifier) ถูก ผิด สาเหตุที่ผิด%employeebirth datestudentnamelongnumber 1student#idconstchr’s5marchbaser*rint จัดทําโดยครูเนาวรัตน ใจการุณ
  31. 31. การเขียนโปรแกรมภาษาซี หนา 31 5. ชนิดของขอมูลและตัวแปรชนิดของขอมูล ในการเขียนโปรแกรมคอมพิวเตอร หากมีการประกาศตัวแปรขึ้นมา ใชงานแลว ผูเขียนโปรแกรมตองกําหนดชนิดของขอมูลใหกับตัวแปรนั้น ในแตละภาษาก็จะมีชนิดของขอมูลที่ไมคอยแตกตางกันมากนัก สําหรับในภาษาซีมี 4 ชนิดคือ 1. ขอมูลชนิดซิมเพิล (simple type) 2. ขอมูลชนิดสตริง (string type) 3. ขอมูลประเภทโครงสราง (structure type) 4. ขอมูลประเภทพอยเตอร (pointer type)ในการเขียนโปรแกรมภาษาซีเบื้องตนนี้จะกลาวถึงขอมูลชนิดซิมเพิล และขอมูลชนิดสตริงเทานั้นขอมูลชนิดซิมเพิล (simple type) ขอมูลชนิดซิมเพิล แบงไดเปนขอมูลประเภทที่มีลําดับ (ordinal type) และขอมูลประเภทจํานวนจริง (real data type) โดยขอมูลประเภทมีลําดับเปนขอมูลที่มีคาลําดับที่แนนอน เชนตัวอักษรA B C ... Z ตัวเลขที่ใชในการนับ ซึ่งในภาษาซียังแบงขอมูลประเภทลําดับ ออกไดหลายประเภทไดแก 1. ขอมูลประเภทจํานวนเต็ม (Integer data type) 2. ขอมูลประเภทจํานวนจริง (Real data type) 3. ขอมูลประเภทตัวอักขระ (Character data type) 4. ขอมูลประเภทตรรกะ (ฺBoolean data type)ขอมูลประเภทจํานวนเต็ม (Integer data type) ขอมูลประเภทนี้ใชเก็บตัวเลขที่เปนจํานวนเต็ม โดยคอมพิวเตอรจะใชหนวยความจําในการเก็บขอมูล ในรูปของเลขฐานสอง เชนถาหากคอมพิวเตอร ใชหนวยความจํา ในการเก็บขอมูล จํานวน 8 บิตหรือ 1 ไบต จะแทนคาขอมูลได เทากับ 2^ 8 (2 ยกกําลัง 8) หรือเทากับ 256 คา ซึ่งถาเขียนอยูในรูปเลขฐานสิบ จะแทนคาไดตั้งแต 0 ถึง 255 ขอมูลชนิดจํานวนเต็ม ยังแบงออกไดเปนหลายประเภท ขึ้นอยูกับขนาดของหนวยความจําที่คอมพิวเตอรใชเก็บขอมูล โดยขอมูลประเภทตาง ๆ แสดงไดดังตารางตอไปนี้ จัดทําโดยครูเนาวรัตน ใจการุณ
  32. 32. การเขียนโปรแกรมภาษาซี หนา 32ตารางขอมูลชนิดจํานวนเต็มและชวงขอมูลที่เก็บไดชนิดของตัวแปร ขนาด (bit) ชวงของขอมูลที่เก็บได การใชงาน short 16 -32,768 ถึง 32,767 เก็บขอมูลชนิดจํานวนเต็มแบบสั้น ติด เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 16 bit ( 2 Byte) unsigned short 16 0 ถึง 65,535 เก็บขอมูลชนิดจํานวนเต็มแบบสั้น ไมติด เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 16 bit ( 2 Byte) int 32 -2,147,483,648 ถึง เก็บขอมูลชนิดจํานวนเต็มแบบติดเครื่องหมาย 2,147,483,648 + - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte) unsigned int 32 0 ถึง 4,294,967,296 เก็บขอมูลชนิดจํานวนเต็มแบบไมติด เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte) long 32 -2,147,483,648 ถึง เก็บขอมูลชนิดจํานวนเต็มแบบยาว ติด 2,147,483,648 เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte) unsigned long 32 0 ถึง 4,294,967,296 เก็บขอมูลชนิดจํานวนเต็มแบบยาว ไมติด เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte)การประกาศตัวแปรชนิดจํานวนเต็มขอมูลชนิด intรูปแบบ int <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง int a , b ; // ประกาศตัวแปรชื่อ a และ b โดยไมกําหนดคาเริ่มตน int x=5 , b=10 ; // ประกาศตัวแปรชื่อ x และ b โดยมีคาเริ่มตนเปน 5 และ 10 int c=10.5 ; // ประกาศตัวแปรชื่อ c โดยมีคาเริ่มตนเปน 10 (ไมเอาทศนิยม)ขอมูลชนิด longรูปแบบ long <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง long p , q ; // ประกาศตัวแปรชื่อ p และ q โดยไมกําหนดคาเริ่มตน int e=50000 , f=100000 ; // ประกาศตัวแปรชื่อ e และ f โดยมีคาเริ่มตนเปน 50000 และ 100000 จัดทําโดยครูเนาวรัตน ใจการุณ
  33. 33. การเขียนโปรแกรมภาษาซี หนา 33ขอมูลประเภทจํานวนจริง (Real data type) ขอมูลประเภทนี้จะเปนจํานวนจริงหรือทศนิยม ขอมูลประเภทนี้จัดลําดับกอนหลังไดยาก จึงไมจัดเปนขอมูลประเภทที่มีลําดับ เนื่องจากทศนิยม มีไดหลายตําแหนง ขอมูลชนิดจํานวนจริงนี้ยังแบงออกไดเปนหลายประเภท โดยแตละประเภท จะใชหนวยความจํา ในการเก็บแตกตางกัน ทําใหเก็บขอมูล ไดแตกตางกัน ดังตารางตอไปนี้ตารางขอมูลชนิดจํานวนจริงและชวงขอมูลที่เก็บได ชนิดของ ขนาด ชวงของขอมูลที่เก็บได การใชงาน ตัวแปร (bit)float 32 1.754 E -38 ถึง 3.402 E +38 เก็บขอมูลชนิดจํานวนทศนิยม ใชพื้นที่ หนวยความจํา 32 bit (4 Byte) โดยเก็บคา ทศนิยม 6 ตําแหนงdouble 64 2.225 E -308 ถึง 1.797 E เก็บขอมูลชนิดจํานวนทศนิยม ใชพื้นที่ +308 หนวยความจํา 64 bit (8 Byte) โดยเก็บคา ทศนิยม 12 ตําแหนงlong double 96 3.4 E -4923 ถึง 1.1 E +4923 เก็บขอมูลชนิดจํานวนทศนิยม ใชพื้นที่ หนวยความจํา 96 bit (16 Byte) โดยเก็บคา ทศนิยม 24 ตําแหนงหมายเหตุ 3.4 E -38 มีคาเทากับ และ 3.4 E +38 มีคาเทากับการประกาศตัวแปรชนิดจํานวนจริง (เลขทศนิยม)ขอมูลชนิด floatรูปแบบ float <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง float r , s ; // ประกาศตัวแปรชื่อ r และ s โดยไมกําหนดคาเริ่มตน float x=5.5 , y=100.0 ; // ประกาศตัวแปรชื่อ x และ y โดยมีคาเริ่มตนเปน 5.5 และ 100.0ขอมูลประเภทตัวอักขระ (Character data type) ขอมูลประเภทนี้จะเปนอักขระหนึ่งตัว ซึ่งเปนไปตามตารางรหัส ASCII ประกอบดวยขอมูลที่เปนตัวอักษร ตัวเลข และอักขระพิเศษ ขอมูลประภทนี้จะเปนขอมูลประเภทที่มีลําดับ เนื่องจากเรียงตามลําดับตามตาราง ASCII ขอมูลประเภทนี้จะใชเนื้อที่หนวยความจําในการเก็บขอมูล 1 Byte และตองเขียนใหอยูในเครื่องหมาย (single quotation) เชน ‘A’ , ‘b’ จัดทําโดยครูเนาวรัตน ใจการุณ
  34. 34. การเขียนโปรแกรมภาษาซี หนา 34การประกาศตัวแปรชนิด charขอมูลชนิด charรูปแบบ char <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง char ch1 , ch2; // ประกาศตัวแปรชื่อ ch1 และ ch2 โดยไมกําหนดคาเริ่มตน char ans=y , more = n; // ประกาศตัวแปรชื่อ ans และ more โดยมีคาเริ่มตนเปน y และ nขอมูลประเภทตรรกะ (Boolean data type) ฺ จะเปนคาทางลอจิก ไดแก จริง (true) กับเท็จ (false ) จะใชในคําสั่งควบคุมเพื่อตัดสินใจการทํางาน ในการเรียงลําดับจะใหคาที่เปนเท็จ มากอนคาที่เปนจริง ซึ่งในการเขียนโปรแกรมดวยภาษาซี จะแทนคาที่เปนเท็จดวย 0 และ แทนคาที่เปนจริงดวย 1 การประกาศตัวแปร ใชการประกาศแบบจํานวนเต็ม (int) หรือ อักขระ (char) เพื่อใหไดคา 0 ซึ่งก็คือเปนเท็จขอมูลชนิดสตริง (string type) ขอมูลประเภทนี้ไมเปนชนิดขอมูลในภาษาซีโดยตรง แตเปนการนําขอมูลชนิดอักขระ (chardata type) มาเรียงตอกันในลักษณะของตัวแปรลําดับ (array) ตั้งแตหนึ่งตัวขึ้นไป จนถึง 255 ตัวอักษรโดยอักขระตองอยูในเครื่องหมาย " " (double quotation) ในการเขียนโปรแกรมภาษาซี จะมีการเติมตัวอักษรวาง (0) เปนตัวสุดทายของสตริงโดยอัตโนมัติ เชน การเก็บสตริงคําวา "C COMPILER" จะใชเนื้อที่หนวยความจํา ในการเก็บจํานวน 11 Byte โดยแตละ Byte เปนดังนี้การประกาศขอมูลชนิด stringรูปแบบ char <ชื่อตัวแปร> [เลขจํานวนเต็ม] [= คาเริ่มตนที่กําหนด] , [<ชื่อตัวแปร> [เลขจํานวนเต็ม] [= คาเริ่มตนที่กําหนด] ;ตัวอยาง char st1[15] , st2[20] ; // ประกาศตัวแปรชื่อ st1 และ st2 โดยไมกําหนดคาเริ่มตน char name[15]="Prapan" ; // ประกาศตัวแปรชื่อ name โดยมีคาเริ่มตนเปน "Prapan"ขอมูลชนิดโครงสราง (structure type) ขอมูลชนิดโครงสราง (structure type) คือ โครงสรางขอมูลที่ประกอบดวยสมาชิก หรือตัวแปรที่มีชนิดขอมูลที่แตกตางกัน เก็บรวมกันไวภายใตชื่อของตัวแปรเดียว โดยขอมูลที่เก็บนั้น จะตองมีความเกี่ยวเนื่องและสัมพันธกัน เชน โครงสราง นักเรียนจะประกอบดวย เลขประจําตัวนักเรียน ชื่อนามสกุล เพศ วันเดือนปเกิด เปนตน จัดทําโดยครูเนาวรัตน ใจการุณ
  35. 35. การเขียนโปรแกรมภาษาซี หนา 35ขอมูลชนิดพอยเตอร (pointer type) พอยเตอรเปนชนิดขอมูลประเภทหนึ่ง ที่สรางขึ้นจากชนิดขอมูลแบบพื้นฐานทั่วไป โดยชนิดขอมูลแบบพอยเตอร จะแตกตางจากขอมูลชนิดพื้นฐานตรงที่ ชนิดขอมูลพื้นฐาน จะเก็บและดึงคาขอมูลจากตัวแปรโดยตรง แตขอมูลชนิดพอยเตอร จะเก็บคาที่อยู (Address) ของตัวแปร และใชคาที่อยูนี้ ชี้อางอิงไปยังขอมูล ที่เก็บอยูในตัวแปรนั้น อีกที่หนึ่ง เพื่อทําการเก็บและดึงคาขอมูลของตัวแปรโดยอาศัยที่อยูนั้น ซึ่งอาจสรุปไดวา ขอมูลพื้นฐาน จะเก็บและดึงขอมูลจากตัวแปรโดยตรง แตพอยเตอร จะทํางานกับตัวแปรโดยออม คือทํางานผานตําแหนงที่อยูของตัวแปรที่มันชี้อยูนั้นเอง จัดทําโดยครูเนาวรัตน ใจการุณ
  36. 36. การเขียนโปรแกรมภาษาซี หนา 36 กิจกรรมที่ 5 ชนิดของขอมูลตอนที่ 1 เขียนตอบลงในชองที่เวนไว1. ขอมูลชนิด Simple แบงเปนกี่ประเภทอะไรบางแบงเปน ............ ประเภท คือ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................2. ขอมูลชนิดจํานวนเต็ม หมายความวาอะไร ...................................................................................... .........................................................................................................................................................3. ขอมูลชนิดจํานวนเต็มแบงออกเปนกี่ชนิด อะไรบางแบงออกเปน ............ ชนิด คือ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................4. จงอธิบายวาทําไมขอมูลชนิด short ที่ใชหนวยความจําขนาด 8 bit จึงเก็บขอมูลได 256 คา.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................5. ขอมูลตอไปนี้ ใชหนวยความจําขนาดเทาไร และเก็บขอมูลไดในชวงใด ชนิดขอมูล ขนาดหนวยความจํา ชวงขอมูล int short long unsigned int unsigned short unsigned long char จัดทําโดยครูเนาวรัตน ใจการุณ
  37. 37. การเขียนโปรแกรมภาษาซี หนา 376. ขอมูลชนิดจํานวนจริง มีลักษณะเดนอยางไร .....................................................................................7. จงบอกขนาดหนวยความจําและชวงของขอมูลชนิดจํานวนจริงตามตารางตอไปนี้ ชนิดของขอมูล ขนาดหนวยความจํา ชวงของขอมูล ตําแหนงของทศนิยม float double long double8. จงเขียนเลขตอไปนี้ใหอยูในรูปของเลขฐานสิบ 8.1. 2.13E+03 เทากับ .......................................................................................................... 8.2. 52.42E-02 เทากับ .......................................................................................................... 8.3. 1.25E+00 เทากับ ..........................................................................................................9. ขอมูลชนิด char นิยมใชเก็บขอมูลลักษณะใด...................................................................................................................................................................10. ขอมูลชนิด char เก็บตัวเลขจํานวนเต็มไดหรือไม อยางไร......................................................................................................................................................................................................................................................................................................................................11. ขอมูลชนิด boolean เปนขอมูลที่มีลักษณะอยางไร...................................................................................................................................................................12. คา 1 และ 0 ของขอมูลชนิด boolean หมายถึงอะไร......................................................................................................................................................................................................................................................................................................................................13. ขอมูลชนิด string มีลักษณะเดนอยางไร......................................................................................................................................................................................................................................................................................................................................14. ขอมูลชนิด string ตองเขียนอยูในเครื่องหมาย ...........................อานวา ............................................. สวนขอมูลชนิด char ตองเขียนอยูในเครื่องหมาย ......................อานวา .............................................ตอนที่ 2 จงบอกชนิดของขอมูลที่กําหนดตอไปนี้1. “computer” เปนขอมูลชนิด .......................................................................................2. ความจริง/เท็จ เปนขอมูลชนิด .......................................................................................3. เกรดเฉลี่ย เปนขอมูลชนิด .......................................................................................4. จํานวนนักเรียน เปนขอมูลชนิด .......................................................................................5. ‘y’ เปนขอมูลชนิด ....................................................................................... จัดทําโดยครูเนาวรัตน ใจการุณ
  38. 38. การเขียนโปรแกรมภาษาซี หนา 38 6. ตัวแปรและคาคงที่ ตัวแปร คือ ชื่อของหนวยความจําที่ใชเก็บคาไว เพื่อนํากลับมาใชงานภายหลัง อาจแบงกลุมประเภทของตัวแปรตามชนิดของคาคงที่ ที่เก็บไวในตัวแปรนั้นไดดังนี้ 1. ตัวแปรตัวเลข (Numeric variables) เปนตัวแปรที่เก็บคาที่เปนตัวเลขที่สามารถนําไปคํานวณได 2. ตัวแปรสายอักขระ (String variables) ตัวแปรที่เก็บคาคงที่ ที่ไมใชในการคํานวณ 3. ตัวแปรโครงสราง (Structure variables) เปนชื่อของกลุมตัวแปรที่ถูกกําหนดขึ้นมาเพื่อใชแทนตัวแปรทั้งกลุมนั้น เชนตัวแปรโครงสรางชื่อ student ประกอบดวยกลุมตัวแปร id, name, lname,sex, birthdate โดยให id แทนเลขประจําตัวนักเรียน name แทน ชื่อนักเรียน, lname แทน นามสกุลsex แทน เพศ, birthdate แทน วันเดือนปเกิด 4. ตัวแปรพอยเตอร (Pointer variables) เปนตัวแปรพิเศษในภาษาซี ทําหนาที่เก็บตําแหนงที่อยู(Address) ของตัวแปรชนิดอื่น ๆ ที่อยูในหนวยความจํา แทนที่จะเก็บขอมูลเหมือนกับตัวแปรพื้นฐานชนิดอื่น ๆ การตั้งชื่อตัวแปร จะตองตั้งตาม กฎการตั้งชื่อความสัมพันธระหวางตัวแปรและชนิดขอมูล ความสัมพันธระหวางตัวแปรและชนิดขอมูล จะแสดงออกมาในรูปของ การประกาศตัวแปรซึ่งในการประกาศตัวแปรใด ๆ ขึ้นมาใชงาน จะตองกําหนดขึ้นมาดวยวาตัวแปรที่ประกาศนั้นจะเก็บขอมูลชนิดใด การจะกําหนดชนิดขอมูลใหกับตัวแปรใด ๆ จะตองพิจารณาใหดีวา จะเก็บขอมูลในลักษณะใด แลวเลือกชนิดขอมูลใหเหมาะสม เพราะถาเลือกชนิดขอมูลที่มีขนาดเล็กเกินไป ก็อาจจะเกิดการ Overflow ซึ่งทําใหเกิดความผิดพลาดในการคํานวณ และถาหากเลือกชนิดขอมูลที่ใหญเกินไป ก็จะทําใหสิ้นเปลืองหนวยความจําโดยเปลาประโยชน เ฀-!

×