102
การเขียนโปรแกรมภาษาซี หนา 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) โดยจะทําการอานโปรแกรมภาษาซีทั้งหมดตั้งแตตนจนจบ แลวทําการ แปล ผลทีเดียว

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

Embed Size (px)

Citation preview

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

การเขียนโปรแกรมภาษาซี หนา 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) โดยจะทําการอานโปรแกรมภาษาซีทั้งหมดต้ังแตตนจนจบ แลวทําการ แปลผลทีเดียว

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

การเขียนโปรแกรมภาษาซี หนา 2

จัดทําโดยครูเนาวรัตน ใจการุณ

นอกจากคอมไพเลอรแลว ยังมีตัวแปลภาษาอีกรูปแบบหน่ึงที่เรียกวา อินเตอรพรีเตอร การอานและ แปลโปรแกรมทีละบรรทัด เมื่อแปลผลบรรทัดหน่ึงเสร็จก็จะทํางานตามคําสั่งในบรรทัดน้ัน แลวจึงทําการแปลผลตามคําสั่งในบรรทัดถัดไป หลักการที่อินเตอรพรีเตอรใชเรียกวา อินเตอรเพรต(interpret )

ขอดีและขอเสียของตัวแปลภาษาทั้งสองแบบมีดังน้ี

ขอดี ขอเสีย

คอมไพเลอร • ทํางานไดเร็ว เน่ืองจากทําการแปลผลทีเดียว แลวจึงทํางานตามคําสั่งของโปรแกรมในภายหลัง• เมื่อทําการแปลผลแลว ในคร้ังตอไปไมจําเปนตองทําการแปลผลใหมอีก เน่ืองจากภาษาเคร่ืองที่แปลไดจะถูกเก็บไวที่หนวยความจํา สามารถเรียกใชงานไดทันที

• เมื่อเกิดขอผิดพลาดขึ้นกับโปรแกรมจะตรวจสอบหาขอผิดพลาดไดยาก เพราะทําการแปลผลทีเดียวทั้งโปรแกรม

อินเตอรพรีเตอร • หาขอผิดพลาดของโปรแกรมไดงายเน่ืองจากทําการแปลผลทีละบรรทัด• เน่ืองจากทํางานทีละบรรทัดดังน้ันจึงสั่งใหโปรแกรมทํางานตามคําสั่งเฉพาะจุดที่ตองการได• ไมเสียเวลารอการแปลโปรแกรมเปนเวลานาน

• ชา เน่ืองจากที่ทํางานทีละบรรทัด

ข้ันตอนท่ี 3 เชื่อมโยงโปรแกรม (link)การเขียนโปรแกรมภาษาซีน้ันผูเขียนโปรแกรมไมจําเปนตองเขียนคําสั่งตาง ๆ ขึ้นใชงานเอง

เน่ืองจากภาษาซีมีฟงกชั่นมาตรฐานใหผูเขียนโปรแกรมสามารถเรียกใชงานได เชน การเขียนโปรแกรมแสดงขอความ “Lampangkanlayanee” ออกทางหนาจอ ผูเขียนโปรแกรมสามารถเรียกใชฟงกชั่นprintf() ซึ่งเปนฟงกชั่นมาตรฐานของภาษาซีมาใชงานได โดยสวนการประกาศ (declaration) ของฟงกชั่นมาตรฐานตาง ๆ จะถูกจัดเก็บอยูในเฮดเดอรไฟลแตละตัว แตกตางกันไปตามลักษณะการใชงาน

ดวยเหตุน้ีภาษาเคร่ืองที่ไดจากขั้นตอนที่ 2 จึงยังไมสามารถนําไปใชงานได แตตองนํามาเชื่อมโยงเขากับ library กอน ซึ่งผลจากการเชื่อมโยงจะทําใหได executable program ( ไฟลนามสกุล.exe เชน work.exe) ที่สามารถนําไปใชงานได

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

การเขียนโปรแกรมภาษาซี หนา 3

จัดทําโดยครูเนาวรัตน ใจการุณ

ข้ันตอนท่ี 4 ประมวลผล (run)เมื่อนํา executable program จากขั้นตอนที่ 3 มาประมวลผลก็จะไดผลลัพธ (output) ของ

โปรแกรมออกมา ( ถามี )

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

การเขียนโปรแกรมภาษาซี หนา 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..............................................................................................................................................................................................................................................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 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. คลิกที่ Start2. เลื่อนเมาสไปที่ Bloodshed Dev-C++3. คลิกที่ Dev-C++

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

การเขียนโปรแกรมภาษาซี หนา 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 สวนที่อยูลางสุด ใชเพื่อบอกสถานะตาง ๆ ในขณะที่กําลังพัฒนาโปรแกรม เชน จํานวนบรรทัดมั้งหมด หรือสถานะการพิมพแทรก/พิมพทับ

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

การเขียนโปรแกรมภาษาซี หนา 7

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนูของโปรแกรม Bloodshed Dev-C++เมนู File มีเมนูยอยท่ีควรรูดังน้ี

New เพื่อสรางไฟลใหมOpen Project or File เพื่อเปดไฟลหรือโปรเจ็กซที่ไดทํางาน และบันทึกไวแลวSave เพื่อบันทึกไฟลSave As เพื่อบันทึกไฟลเปนชื่อใหม หรือเพื่อบันทึกลงในโฟลเดอรอ่ืนSave All เพื่อบันทึกไฟลหรือโปรเจ็กซทั้งหมด ที่เปดทํางานอยูClose เพื่อปดไฟลที่กําลัง Active อยูClose All เพื่อปดไฟลหรือ โปรเจ็กซทั้งหมด ที่เปดอยูExit เพื่อปดโปรแกรม Bloodshed Dev-C++

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

การเขียนโปรแกรมภาษาซี หนา 8

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู Edit มีเมนูยอยท่ีควรรูดังน้ี

Undo เลิกทําหรือยกเลิกการทํางานRedu ใหทําซ้ํางานที่เพิ่งทําผานไปCut ตัดขอความที่ทําแถบสีนําไปไวใน คลิปบอรดCopy คัดลอกขอความที่ทําแถบสีนําไปไวใน คลิปบอรดPaste ใหวาง ปะ หรือ แปะ ขอความที่ได Cut หรือ Copy ไวแลว มาวางลงในตําแหนงของ เคอรเซอรInsert ทําการแทรก

1. วันที่ (Date/Time) ลงใน Editor2. Comment header สวนที่เปน หมายเหตุในการพัฒนาโปรแกรมลงบนสวนหัวของ Editor

Select All เลือกโคด หรือขอความทั้งหมด ที่อยูใน Editor

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

การเขียนโปรแกรมภาษาซี หนา 9

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู Search มีเมนูยอยท่ีควรรูดังน้ี

Find คนหาคํา หรือขอความใน EditorSearch Again ใหคนซ้ํา หรือคนหาตอไปอีกReplace ใหแทนที่คําที่คนหา ดวยคําใหม

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

การเขียนโปรแกรมภาษาซี หนา 10

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู View มีเมนูยอยท่ีควรรูดังน้ี

Project/Class Browser เพื่อแสดงหรือไมแสดง Project/Class BrowserStatusbar เพื่อแสดงหรือไมแสดง StatusbarToolbars เพื่อแสดงหรือไมแสดง Toolbars ตาง ๆ ซึ่งประกอบดวย

Main ToolbarEdit ToolbarSearch ToolbarCompile and run ToolbarProject ToolbarOptions ToolbarSpecial ToolbarClass Toolbar

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

การเขียนโปรแกรมภาษาซี หนา 11

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู Project

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

การเขียนโปรแกรมภาษาซี หนา 12

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู Execute มีเมนูยอยท่ีควรรูดังน้ี

Compile (Ctrl+F9) สั่งใหทําการ Compile ซอรสโคด เมื่อ Compile แลวจะไดไฟลใหมที่มีสวนขยายเปน .exeRun (Ctrl+F10) สั่งใหโปรแกรมทํางานCompile & Run (F9) ใหทําการ Compile และ Run โปรแกรมRebuild All (Ctrl+F11) ใหสรางไฟล .exe ใหม แทนที่ไฟลเดิม

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

การเขียนโปรแกรมภาษาซี หนา 13

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู Debug

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

การเขียนโปรแกรมภาษาซี หนา 14

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู Tools มีเมนูยอยท่ีควรรูดังน้ี

Editor Options เปนการต้ังคาสภาพแวดลอมใหกับ Editor เชน ใหมีหมายเลขบรรทัดเปนตน

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

การเขียนโปรแกรมภาษาซี หนา 15

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู CVS

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

การเขียนโปรแกรมภาษาซี หนา 16

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู Windows มีเมนูยอยท่ีควรรูดังน้ี

Close All ปดวินโดวส ของ Editor ทั้งหมดFull Screen Mode ใหวินโดวสแสดงแบบเต็มจอ ถาตองการยกเลิกแบบ Full Screen ให click ที่เพื่อปดวินโดวสNext ใหแสดงวินโดวสของ Editor ถัดไปPrevious ใหแสดงวินโดวสของ Editor กอนหนา

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

การเขียนโปรแกรมภาษาซี หนา 17

จัดทําโดยครูเนาวรัตน ใจการุณ

เมนู Help

สวนใหญเปนเมนูเกี่ยวกับการขอความชวยเหลีอ

การสรางแฟมโปรแกรมการสรางแฟมโปรแกรม ทําไดโดยเลือกเมนู File -> Source File หรือกด Ctrl + N

การปอนโปรแกรมภาษาซีการปอนโปรแกรมในหนาตาง Editor สามารถทําไดเชนเดียวกับการปอนขอความใน

โปรแกรมจัดพิมพเอกสารทั่วไป

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

การเขียนโปรแกรมภาษาซี หนา 18

จัดทําโดยครูเนาวรัตน ใจการุณ

แบบฝกกิจกรรมที่ 11. ใหเรียกเขาสูโปรแกรม Dev-C++ และปอนโปรแกรมตอไปน้ี

การบันทึกโปรแกรม (Save)ในการบันทึกโปรแกรมใหม ทําไดโดยเลือกเมนู File -> Save หรือกด Ctrl + S จะได

หนาตางดังรูป

1. เปลี่ยนไดรฟ เปลี่ยนโฟลเดอร2. พิมพชื่อไฟล3. คลิกปุม Save

#include <stdio.h>#include <conio.h>main(){printf("Hello world");getch();}

ผลการรัน…………………………………………….…………………………………………….…………………………………………….…………………………………………….…………………………………………….…………………………………………….…………………………………………….

1

2 3

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

การเขียนโปรแกรมภาษาซี หนา 19

จัดทําโดยครูเนาวรัตน ใจการุณ

การแปลโปรแกรม (Compile)การเรียกใชคอมไพลเลอร ทําไดโดยเลือกเมนู Execute -> Compile หรือกด Ctrl + F9

รูป แสดงหนาตาง Compiling ท่ีทํางานเสร็จสมบูรณ

ในกรณีที่พิมพโปรแกรมผิดจะแสดงรายการขอผิดพลาดที่ตรวจพบ ดังรูป

รูป แสดงโปรแกรมท่ีผิดพลาด

สวนที่บอกวาผิดอะไรบาง

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

การเขียนโปรแกรมภาษาซี หนา 20

จัดทําโดยครูเนาวรัตน ใจการุณ

การสั่งใหโปรแกรมทํางาน (Run)เมื่อโปรแกรมไดถูกแปลเปนโปรแกรมภาษาเคร่ืองเรียบรอยแลว ผูใชสามารถสั่งใหโปรแกรม

ที่แปลแลวกระทําการ โดยเลือกคําสั่ง Execute -> Run หรือกด Ctrl + F10

การเปดแฟมโปรแกรมผูใชสามารถเปดแฟมโปรแกรมขึ้นมาแสดงบนหนาตางโปรแกรมเพื่อแกไข แปลหรือสั่งให

กระทําการ โดยเลือกคําสั่ง File -> Open Projector or File จะไดหนาตางดังรูป

1. เปลี่ยนไดรฟ เปลี่ยนโฟลเดอร2. พิมพชื่อไฟล หรือคลิกเลือกชื่อไฟล3. คลิกปุม Open

1

2 3

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

การเขียนโปรแกรมภาษาซี หนา 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. จงบอกขั้นตอนการเปดแฟมโปรแกรม................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 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

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

การเขียนโปรแกรมภาษาซี หนา 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 ที่กําลังทํางานเขามาดวย

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

การเขียนโปรแกรมภาษาซี หนา 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 แบบคือ

• คอมเมนตแบบบรรทัดเดียว ใชเคร่ืองหมาย //• คอมเมนตแบบหลายบรรทัด ใชเคร่ืองหมาย /* และ */

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

การเขียนโปรแกรมภาษาซี หนา 25

จัดทําโดยครูเนาวรัตน ใจการุณ

ตัวอยาง การคอมเมนตในภาษาซี

//Comment only one line#include <stdio.h>#include <conio.h>main(){/*comment

manyline*/

}

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 ใหเปนตัวแปรชนิดตัวอักขระ

คอมเมนตแบบบรรทัดเดียวไมแปลผลในสวนน้ี

คอมเมนตแบบหลายบรรทัดไมแปลผลในสวนน้ี

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

การเขียนโปรแกรมภาษาซี หนา 26

จัดทําโดยครูเนาวรัตน ใจการุณ

3) คําสั่งกําหนดคา (Assignment Statements)คําสั่งกําหนดคาในภาษาซีจะใชตัวดําเนินการ " = " เพื่อกําหนดคาใหกับตัวแปร คําสั่ง

กําหนดคาน้ีอาจใชในการกําหนดคาเร่ิมตนใหกับตัวแปร หรือใชในการคํานวณนิพจนดานขวาของตัวดําเนินการ " = " แลวนําคาที่ไดไปกําหนดคาใหกับตัวแปรดานซายของตัวดําเนินการ "= " หรืออาจใชในการคัดลอกคาของตัวแปรหน่ึงไปใหกับอีกตัวแปรหน่ึง โดยรูปแบบคําสั่งดังน้ีรูปแบบ

<var1> [ = <var2>]. . . = <expression> ;

var1,var2 หมายถึง ชื่อตัวแปรที่จะถูกกําหนดคาexpression หมายถึง นิพจน ซึ่งอาจเปนตัวแปร คาคงที่ หรือเปนการดําเนินการระหวาง

ตัวแปร หรือ คาคงที่= หมายถึง ตัวดําเนินการกําหนดคา โดยใหนําคานิพจนดวยขวาของตัวดําเนินการ

" = " ไปกําหนดคาใหกับตัวแปร ที่อยูดานซาย ของตัวดําเนินการ " = "หมายเหตุ คําสั่งทุกคําสั่งจะตองปดดวเคร่ืองหมาย ; (อานวา Semicolon)

ตัวอยางvalue = 0;count = 1;x = 100;more = 'y';

หมายถึง ใหตัวแปร value มีคา = 0 count มีคา = 1 x มีคา = 100 และ more มีคา = y

4) คําสั่งควบคุม (Control Statements)คําสั่งควบคุมเปนคําสั่งที่เขียนขึ้นมาเพื่อควบคุมการทํางานของโปรแกรม ไดแกคําสั่ง

If, switch, while, for ซึ่งจะอธิบายในรายละเอียด ในเร่ืองของคําสั่งโครงสรางหรือคําสั่งควบคุม

5) คําสั่งท่ีอยูในรูปฟงกชัน (Control Statements)เปนการนําฟงกชันมาตรฐานของภาษาซีมีใชในการเขียนโปรแกรมเชนคําสั่ง printf , scanf โดย

จะกลาวถึงเฉพาะคําสั่งประเภทน้ีในหัวขอ การรับและการแสดงผลขอมูล

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

การเขียนโปรแกรมภาษาซี หนา 27

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรม 3 โครงสรางภาษาซีตอนท่ี 1 จงเติมคําถามตอไปน้ี ใหถูกตองสมบูรณ

1. โครงสรางของภาษาซีในสวนของคําสั่งพรีโพรเซสเซอร ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................2. ในภาษาซี ฟงกชันหลักที่ทุกโปรแกรมตองมี คือฟงกชันอะไร...............................................................................................................................................................3. การเขียนคําสั่งพรีโพรเซสเซอร ตองเร่ิมตนดวยเคร่ืองหมายอะไร................................................................................................................................................... ............4. คําสั่งพรีโพรเซสเซอร #include ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................5. คําสั่งพรีโพรเซสเซอร #define ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................6. ประโยคคําสั่งในภาษาซี ตองจบดวยเคร่ืองหมายอะไร...............................................................................................................................................................7. ประโยชนของการเขียนหมายเหตุไวในโปรแกรม คืออะไร..............................................................................................................................................................................................................................................................................................................................8. การเขียนหมายเหตุในภาษาซี มีหลักการเขียนอยางไร..............................................................................................................................................................................................................................................................................................................................9. รูปแบบการเขียนคําสั่ง #include<ชื่อไฟล> มีความหมายอยางไร..............................................................................................................................................................................................................................................................................................................................10. รูปแบบการเขียนคําสั่ง #include “ชื่อไฟล” มีความหมายอยางไร..............................................................................................................................................................................................................................................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 28

จัดทําโดยครูเนาวรัตน ใจการุณ

4. กฏการตั้งช่ือ (Identifier)ชื่อ หรือ Identifier คือการประกาศ หรือการต้ังชื่อใหกับตัวแปร คาคงที่ ฟงกชัน หรือ class ซึ่ง

จะอยูภายในสวนตาง ๆของโปรแกรมสําหรับในภาษาซีมีหลักเกณฑในการตั้งชื่อดังน้ี1. ตองขึ้นตนดวยตัวอักษรในภาษาอังกฤษ หรือเคร่ืองหมาย _ (Underscore)2. ตองไมเปนชื่อเดียวกับคําสงวน (Reserve word) หรือคํามาตรฐานที่คอมไพเลอรรูจัก3. ชื่ออาจตามดวยตัวเลขได แตหามขึ้นตนดวยตัวเลข4. หามใชเคร่ืองหมายพิเศษตาง ๆ ในการต้ังชื่อ เชน @ ! # $ ^ & * + - / \5. หามเวนชองวาง6. ชื่อในภาษาซี มีความแตกตางกันระหวางตัวพิมพเล็กและตัวพิมพใหญ เชน Name จะไม

เหมือนกับ name

คําสงวน (Reserve word)คําสงวน หมายถึง ชื่อหรือคําที่คอมไพเลอร สงวนไวเพื่อเปนคําเฉพาะในภาษาซี หามนําคํา

สงวนน้ีไปใชในการต้ังชื่อ ประกอบดวยคําตาง ๆ ดังตอไปน้ีasm default for pascal switch _dsauto do goto register typedef _esbreak double huge return union _sscase else if short unsignedcdecl enum int signed voidchar extern interrupt sizeof volatileconst far long static whilecontinue float near struct _cs

ตัวอยางการตั้งชื่อชื่อท่ีถูก ชื่อท่ีผิด เหตุท่ีผิดStudentName Student Name มีเคร่ืองหมายวรรคPart_Number Part-Number มีเคร่ืองหมาย –firstNAME 1stName เร่ิมดวยตัวเลขNumberOfPage #Ofpage มีเคร่ืองหมาย #

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

การเขียนโปรแกรมภาษาซี หนา 29

จัดทําโดยครูเนาวรัตน ใจการุณ

ขอสังเกตเกี่ยวกับการตั้งชื่อ1. ควรต้ังชื่อใหมีความหมายและเขาใจไดงาย ดังตัวอยางตอไปน้ี

Length มีความหมายและเขาใจไดงายกวา L2. ควรต้ังใหเห็นสวนประกอบตาง ๆ ไดงาย ดังตัวอยางตอไปน้ี

StudentName เห็นสวนประกอบตาง ๆ ไดงายกวา studentnamePart_Number เห็นสวนประกอบตาง ๆ ไดงายกวา PARTNUMBER

3. เน่ืองจากชื่อสวนมากที่มีอยูในคอมไพเลอรมักนิยมเร่ิมดวยเคร่ืองหมายขีดเสนใต ( _ ) ดังที่เราไดเห็นตัวอยางมาแลวจากคําสงวน (Reserve word) เพราะฉะน้ันถาเปนไปได เราควรหลีกเลี่ยงการต้ังชื่อที่เร่ิมตนดวยเคร่ืองหมายขีดเสนใต

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

การเขียนโปรแกรมภาษาซี หนา 30

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 4 ช่ือ (Identifiers) และคําสงวน (Reserved Word)

คําสั่ง จงพิจารณาวา ชื่อ (Identifier) ตอไปน้ี ถูกหรือผิดโดยการทําเคร่ืองหมาย ลงในชองถูก และกา ลงในชอง ผิด และบอกเหตุผลดวยวาผิดเพราะเหตุใด

ชื่อ (Identifier) ถูก ผิด สาเหตุท่ีผิด%employeebirth datestudentnamelongnumber 1student#idconstchr’s5marchbaser*rint

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

การเขียนโปรแกรมภาษาซี หนา 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 ขอมูลชนิดจํานวนเต็ม ยังแบงออกไดเปนหลายประเภท ขึ้นอยูกับขนาดของหนวยความจําที่คอมพิวเตอรใชเก็บขอมูล โดยขอมูลประเภทตาง ๆ แสดงไดดังตารางตอไปน้ี

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

การเขียนโปรแกรมภาษาซี หนา 32

จัดทําโดยครูเนาวรัตน ใจการุณ

ตารางขอมูลชนิดจํานวนเต็มและชวงขอมูลท่ีเก็บได

ชนิดของตัวแปร ขนาด (bit) ชวงของขอมูลที่เก็บได การใชงานshort 16 -32,768 ถึง 32,767 เก็บขอมูลชนิดจํานวนเต็มแบบสั้น ติด

เคร่ืองหมาย + - โดยใชพื้นที่หนวยความจํา 16bit ( 2 Byte)

unsigned short 16 0 ถึง 65,535 เก็บขอมูลชนิดจํานวนเต็มแบบสั้น ไมติดเคร่ืองหมาย + - โดยใชพื้นที่หนวยความจํา 16bit ( 2 Byte)

int 32 -2,147,483,648 ถึง2,147,483,648

เก็บขอมูลชนิดจํานวนเต็มแบบติดเคร่ืองหมาย+ - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte)

unsigned int 32 0 ถึง 4,294,967,296 เก็บขอมูลชนิดจํานวนเต็มแบบไมติดเคร่ืองหมาย + - โดยใชพื้นที่หนวยความจํา 32bit ( 4 Byte)

long 32 -2,147,483,648 ถึง2,147,483,648

เก็บขอมูลชนิดจํานวนเต็มแบบยาว ติดเคร่ืองหมาย + - โดยใชพื้นที่หนวยความจํา 32bit ( 4 Byte)

unsigned long 32 0 ถึง 4,294,967,296 เก็บขอมูลชนิดจํานวนเต็มแบบยาว ไมติดเคร่ืองหมาย + - โดยใชพื้นที่หนวยความจํา 32bit ( 4 Byte)

การประกาศตัวแปรชนิดจํานวนเต็มขอมูลชนิด intรูปแบบ int <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง int a , b ; // ประกาศตัวแปรชื่อ a และ b โดยไมกําหนดคาเร่ิมตน

int x=5 , b=10 ; // ประกาศตัวแปรชื่อ x และ b โดยมีคาเร่ิมตนเปน 5 และ 10int c=10.5 ; // ประกาศตัวแปรชื่อ c โดยมีคาเร่ิมตนเปน 10 (ไมเอาทศนิยม)

ขอมูลชนิด longรูปแบบ long <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง long p , q ; // ประกาศตัวแปรชื่อ p และ q โดยไมกําหนดคาเร่ิมตน

int e=50000 , f=100000 ; // ประกาศตัวแปรชื่อ e และ f โดยมีคาเร่ิมตนเปน 50000 และ 100000

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

การเขียนโปรแกรมภาษาซี หนา 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’

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

การเขียนโปรแกรมภาษาซี หนา 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)ขอมูลประเภทน้ีไมเปนชนิดขอมูลในภาษาซีโดยตรง แตเปนการนําขอมูลชนิดอักขระ (char

data 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) คือ โครงสรางขอมูลที่ประกอบดวยสมาชิก หรือตัว

แปรที่มีชนิดขอมูลที่แตกตางกัน เก็บรวมกันไวภายใตชื่อของตัวแปรเดียว โดยขอมูลที่เก็บน้ัน จะตองมีความเกี่ยวเน่ืองและสัมพันธกัน เชน โครงสราง นักเรียนจะประกอบดวย เลขประจําตัวนักเรียน ชื่อนามสกุล เพศ วันเดือนปเกิด เปนตน

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

การเขียนโปรแกรมภาษาซี หนา 35

จัดทําโดยครูเนาวรัตน ใจการุณ

ขอมูลชนิดพอยเตอร (pointer type)พอยเตอรเปนชนิดขอมูลประเภทหน่ึง ที่สรางขึ้นจากชนิดขอมูลแบบพื้นฐานทั่วไป โดยชนิด

ขอมูลแบบพอยเตอร จะแตกตางจากขอมูลชนิดพื้นฐานตรงที่ ชนิดขอมูลพื้นฐาน จะเก็บและดึงคาขอมูลจากตัวแปรโดยตรง แตขอมูลชนิดพอยเตอร จะเก็บคาที่อยู (Address) ของตัวแปร และใชคาที่อยูน้ี ชี้อางอิงไปยังขอมูล ที่เก็บอยูในตัวแปรน้ัน อีกที่หน่ึง เพื่อทําการเก็บและดึงคาขอมูลของตัวแปรโดยอาศัยที่อยูน้ัน ซึ่งอาจสรุปไดวา ขอมูลพื้นฐาน จะเก็บและดึงขอมูลจากตัวแปรโดยตรง แตพอยเตอร จะทํางานกับตัวแปรโดยออม คือทํางานผานตําแหนงที่อยูของตัวแปรที่มันชี้อยูน้ันเอง

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

การเขียนโปรแกรมภาษาซี หนา 36

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 5 ชนิดของขอมูลตอนท่ี 1 เขียนตอบลงในชองท่ีเวนไว1. ขอมูลชนิด Simple แบงเปนกี่ประเภทอะไรบางแบงเปน ............ ประเภท คือ.................................................................................................................................................. ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................2. ขอมูลชนิดจํานวนเต็ม หมายความวาอะไร ......................................................................................

..................................................................................................................................... ....................3. ขอมูลชนิดจํานวนเต็มแบงออกเปนกี่ชนิด อะไรบางแบงออกเปน ............ ชนิด คือ.......................................................................................................................................................... ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................4. จงอธิบายวาทําไมขอมูลชนิด short ที่ใชหนวยความจําขนาด 8 bit จึงเก็บขอมูลได 256 คา.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................5. ขอมูลตอไปน้ี ใชหนวยความจําขนาดเทาไร และเก็บขอมูลไดในชวงใด

ชนิดขอมูล ขนาดหนวยความจํา ชวงขอมูลintshortlongunsigned intunsigned shortunsigned longchar

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

การเขียนโปรแกรมภาษาซี หนา 37

จัดทําโดยครูเนาวรัตน ใจการุณ

6. ขอมูลชนิดจํานวนจริง มีลักษณะเดนอยางไร .....................................................................................7. จงบอกขนาดหนวยความจําและชวงของขอมูลชนิดจํานวนจริงตามตารางตอไปน้ี

8. จงเขียนเลขตอไปน้ีใหอยูในรูปของเลขฐานสิบ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’ เปนขอมูลชนิด .......................................................................................

ชนิดของขอมูล ขนาดหนวยความจํา ชวงของขอมูล ตําแหนงของทศนิยมfloatdoublelong double

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

การเขียนโปรแกรมภาษาซี หนา 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 ซึ่งทําใหเกิดความผิดพลาดในการคํานวณ และถาหากเลือกชนิดขอมูลที่ใหญเกินไป ก็จะทําใหสิ้นเปลืองหนวยความจําโดยเปลาประโยชน เชน ถาตองการประกาศตัวแปร ใหเก็บขอมูลที่มีคาตัวเลขที่อยูในชวง -32768 ถึง 32767 ก็ควรประกาศตัวแปรใหเปนชนิด int ซึ่งใชหนวยความจําเพียง16 bit แตถาหากประกาศใหเปนขอมูลชนิด long ก็จะตองใชหนวยความจําถึง 32 bit ซึ่งเปนการสิ้นเปลืองโดยเปลาประโยชน ในทํานองกลับกัน ถาประกาศตัวแปรใหเปนชนิด short ซึ่งสามารถเก็บขอมูลไดในชวง -32768 ถึง 32767 แตเมื่อเขียนโปรแกรมที่ตองเก็บขอมูลเกินกวา 32767 ก็จะทําใหการคํานวณผิดพลาด เพราะเกิดการ Overflow ของขอมูล

ประเภทของตัวแปรตัวแปรที่ประกาศขึ้นมาเพื่อใชในการเขียนโปรแกรมแบงตามขอบเขตในการใชงานไดเปน 2 ชนิด

ใหญ ๆ คือ

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

การเขียนโปรแกรมภาษาซี หนา 39

จัดทําโดยครูเนาวรัตน ใจการุณ

1. ตัวแปรแบบโกลบอล (Global Variable)เปนตัวแปรที่กําหนดหรือประกาศไวนอกฟงกชันใด ๆ ตัวแปรประเภทน้ีฟงกชันทุก

ฟงกชันสามารถนําตัวแปรประเภท global น้ีไปใชงานได เพราะเปนการประกาศในลักษณะสาธารณะ2. ตัวแปรแบบโลคอล (Local Variable)

เปนตัวแปรที่กําหนดหรือประกาศไวในฟงกชันใดฟงกชันหน่ึง สามารถนําตัวแปรประเภทน้ีไปใชไดเฉพาะในฟงกชันที่ประกาศตัวแปรชนิดน้ีเทาน้ัน ฟงกชันอ่ืน ๆ ไมสามารถนําตัวแปรประเภทน้ีไปใชงานได เราะเปนการประกาศในลักษณะสวนตัว หรือเฉพาะที่

หมายเหตุ ในภาษาซี สามารถประกาศชื่อตัวแปรที่เปนตัวแปรแบบ global และ local ดวยชื่อที่ซ้ํากัน หรือชื่อเดียวกันได และจะถือวา ตัวแปรทั้งสองตัวน้ันเปนตัวแปรคนละตัวกัน เพราะใชพื้นที่หนวยความจําในตําแหนงที่แตกตางกัน แตเมื่อนําตัวแปรที่ชื่อซ้ํากันน้ีไปใช C compiler จะนําตัวแปรประเภท local ไปใชกอน ดังตัวอยาง

แบบฝกกิจกรรมท่ี 2แสดงการประกาศตัวแปรทั้งแบบ global variable และแบบ local variable

อธิบายโปรแกรมบรรทัดที่ 4 ประกาศตัวแปร a เปนประเภท global และมีคาเร่ิมตน = 2 (ประกาศนอกฟงกชัน)บรรทัดที่ 6 ฟงกชัน mainบรรทัดที่ 8 ประกาศตัวแปร b เปนประเภท local และมีคาเร่ิมตน = 10 (ประกาศในฟงกชัน main)บรรทัดที่ 9 ประกาศตัวแปร c เปนประเภท localบรรทัดที่ 10 ใหตัวแปร มีคา c มีคา = b หารดวย 2บรรทัดที่ 11 แสดงผลคาของตัวแปร cบรรทัดที่ 12 หยุดรอการกดแปน Enterบรรทัดที่ 13 คืนคาใหฟงกชัน main

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

การเขียนโปรแกรมภาษาซี หนา 40

จัดทําโดยครูเนาวรัตน ใจการุณ

คาคงที ่(Constant)คาคงที่แบงเปน 3 ประเภท คือ Literal constant , Defined constant และ Memory constant

1. Literal constant คือ คาคงที่ซึ่งเปนขอมูลที่แนนอน คาคงที่ประเภทน้ี ไมจําเปนตองมีตัวแปรมารองรับ สามารถกําหนดเขามาในโปรแกรมไดโดยตรง เชน

ภาพที่ 1 แสดงคาคงที่แบบ literal2. Defined constant คือคาคงที่ซึ่งกําหนดไวที่สวนหัวของโปรแกรมในลักษณะของ PreprocessingDirectives เชน

#define MAX_STUDENTS 3000เปนการกําหนดคาคงที่แบบ Defined constant ใหกับชื่อ MAX_STUDENTS มีคาเทากับ 3000

ดังน้ัน ตลอดทั้งโปรแกรมที่เขียนขึ้นมาน้ัน จะเปลี่ยนแปลงคาของ MAX_STUDENTS ใหเปนคาอ่ืนไมได จะมีคาเทากับ 3000 ตลอดทั้งโปรแกรม

แบบฝกกิจกรรมท่ี 3โปรแกรมแสดงการกําหนดคาคงที่แบบ Defined constant เพื่อคํานวณหาพื้นที่วงกลมที่มีรัศมี 7 หนวย

1 #include <stdio.h>2 #include <conio.h>3 #define PI 3.141594 int main()5 {6 float radial = 7.0;7 float circle_area;8 circle_area=PI*radial*radial;9 printf("circle area = %f",circle_area);10 getch();11 return 0;12 }อธิบายโปรแกรม

บรรทัดที่ 3 กําหนดให PI เก็บคา 3.14159 เปนคาคงที่แบบ Defined constantบรรทัดที่ 6 ประกาศตัวแปร radial เปนแบบ float มีคาเทากับ 7.0

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

การเขียนโปรแกรมภาษาซี หนา 41

จัดทําโดยครูเนาวรัตน ใจการุณ

บรรทัดที่ 7 ประกาศตัวแปร circle_area เปนแบบ float ไมไดกําหนดคาเร่ิมตนบรรทัดที่ 8 คํานวณหาคา circle_area ดวยสูตร PI*radial*radial;บรรทัดที่ 9 แสดงผลการคํานวณหาพื้นที่วงกลม ดวยขอความ circle area = 153.937912บรรทัดที่ 10 หยุดรอการกดแปน Enter

3. Memory constant เปนการกําหนดคาคงที่ใหกับตัวแปร โดยใชคํา const ซึ่งเมื่อทําการกําหนดคาในลักษณะน้ีแลว ตัวแปรที่ถูกกําหนดคา จะมีคาน้ันตลอดทั้งโปรแกรม ไมสามารถทําการเปลี่ยนคาของตัวแปรน้ันเปนคาอ่ืนได เชน

const int MAX_STUDENTS = 3000 ;แบบฝกกิจกรรมท่ี 4

โปรแกรมแสดงการกําหนดคาคงที่แบบ Memory constant เพื่อคํานวณหาพื้นที่วงกลมที่มีรัศมี 7 หนวย1 #include <stdio.h>2 #include <conio.h>3 int main()4 {5 const float PI=3.14159;6 float radial = 7.0;7 float circle_area;8 circle_area=PI*radial*radial;9 printf("circle area = %f",circle_area);10 getch();11 return 0;12 }อธิบายโปรแกรม

บรรทัดที่ 5 ประกาศตัวแปร PI เก็บคา 3.14159 เปนคาคงที่แบบ Memory constant การประกาศตัวแปรและคาคงที่

จากตัวอยางที่ 1.1 ถึง 1.3 จะเห็นวา ในโปรแกรมจะมีสวนประกาศ ซึ่งอยูตอจากสวนชื่อโปรแกรม ยกเวนการประกาศคาคงที่แบบ Defined constant ที่ตองประกาศไวในสวนของpreprocessing ตามที่กลาวมาแลวในหัวขอกอนหนาน้ี อยางไรก็ตามในสวนประกาศน้ี อาจจะไมมีในบางโปรแกรมก็ได แตถาหากตองประกาศตัวแปร หรือคาคงที่ จะตองประกาศดังน้ี

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

การเขียนโปรแกรมภาษาซี หนา 42

จัดทําโดยครูเนาวรัตน ใจการุณ

การประกาศคาคงที่การประกาศคาคงท่ีแบบ Defined constant จะตองประกาศ ไวตรงสวน preprocessing คือ

ประกาศกอนการประกาศฟงกชันใด ๆ โดยมีรูปแบบการประกาศดังน้ี

#define <identifier> value

โดยที่ #define เปน directive หรือคําบังคับ ตองเร่ิมดวยเคร่ืองหมาย # และตามดวยคําวาdefine และตองพิมพติดกัน

<identifier> หมายถึง ชื่อของตัวแปรที่จะเก็บคาคงที่ ตองพิมพดวยตัวพิมพใหญทั้งหมดvalue หมายถึง คาคงที่ ที่ตองการนําไปเก็บไวใน <identifier> โดยที่ value น้ี

ถาเปนจํานวนตัวเลข ไมตองอยูในเคร่ืองหมาย ' ' (single quote) หรือ " " (double quote) เชน#define NUMBER 5 เปนการประกาศให NUMBER ใหเก็บเลข 5

ถาเปนขอมูลชนิด char จะตองเขียนอยูในเคร่ืองหมาย ' ' (single quote) เชน #define CH1 'n'เปนการประกาศ CH1 ใหเก็บตัวอักษร n

ถาเปนขอมูลชนิด string จะตองเขียนอยูในเคร่ืองหมาย " " (double quote) เชน#define PROVINCE "Lopburi" เปนการประกาศ PROVINCE ใหเก็บตัวชุดอักขระคําวา "Lopburi"

หมายเหตุ การประกาศคาคงที่แบบ Defined constant น้ี ประกาศไดคร้ังละ 1 ตัวเทาน้ัน ถาตองการประกาศ 2 ตัว จะตอง Defined constant สองคร้ังดังน้ี

#define SCHOOLNAME "Piyabut school"#define MAXSTUDENT 3100

การประกาศคาคงท่ีแบบ Memory constant การประกาศคาคงที่แบบ Memory constant น้ี เปนการประกาศดวย คําสงวน const การประกาศคาคงที่แบบน้ีจะตองประกาศไวหลัง preprocessingอาจจะประกาศกอนฟงกชัน หรือประกาศไวในฟงกชันก็ได แลวแตวาตองการใหเปนแบบ สาธารณะ(Global) หรือแบบสวนตัว (Local) โดยมีรูปแบบการประกาศดังน้ี

const type <Identifier> = value ;

โดยที่ const เปน คําสงวนที่ใชเพื่อประกาศใหเปนคาคงที่type หมายถึง ชนิดของขอมูลที่ตองการ อาจจะเปนshort, int, long, float, double,

char, boolean<identifier> หมายถึง ชื่อของตัวแปรที่จะเก็บคาคงที่ ตองพิมพดวยตัวพิมพใหญทั้งหมดvalue หมายถึงคาคงที่ ที่ตองการนําไปเก็บไวใน identifier เชน

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

การเขียนโปรแกรมภาษาซี หนา 43

จัดทําโดยครูเนาวรัตน ใจการุณ

const char NAME[20] = "C Compiler";const char CH='y';const int NUMBER = 25;หมายเหตุ การประกาศคาคงที่แบบน้ีจะตองมีเคร่ืองหมาย = เปนตัวกําหนดคา และตองปดทาย

ดวยเคร่ืองหมาย ; (Semi-Colon)

การประกาศตัวแปรในการเขียนโปรแกรมภาษาซีสามารถประกาศตัวแปรได โดยชื่อตัวแปรจะเปนตําแหนง

หนวยความจํา ที่เก็บขอมูลอยู โดยเปนขอมูลตามประเภท ที่กําหนด และขอมูลที่เปนตัวแปรน้ี จะสามารถเปลี่ยนแปลงคาได โดยการทํางานของโปรแกรม ในการเขียนโปรแกรมคอมพิวเตอรสวนใหญจะตองมีการ ประกาศตัวแปรเสมอ โดยจะมีการประกาศตัวแปรเอาไวเพื่อรองรับขอมูลที่รับมาจากแปนพิมพ หรือรองรับขอมูล ที่นําเขามากจากภายนอก หรือจากการกําหนดคาใหกับตัวแปรเพื่อความสะดวกในการคํานวณ หรือเก็บผลลัพธที่ไดจากการคํานวณ การประกาศตัวแปร สามารถทําไดดังรูปแบบดังน้ี

type variable-list ; หรือtype variable-list = value;

โดยที่type หมายถึง ชนิดของขอมูลที่ตองการ อาจจะเปน short, int, long, float, double, char, booleanvariable-list หมายถึง รายชื่อของตัวแปรที่ตองการประกาศ ถามีมากกวา 1 ตัวใหใชเคร่ืองหมาย ,

คั่นระหวางชื่อตัวแปรvalue หมายถึงคาคงที่ ที่ตองการนําไปเก็บไวใน identifier เชนint number,car ; // ประกาศตัวแปรชื่อ number และ car ใหเปนชนิด intfloat wide,high ; // ประกาศตัวแปรชื่อ wide และ high ใหเปนชนิด floatchar more='y' ; // ประกาศตัวแปรชื่อ more ใหเปนชนิด char และมีคาเร่ิมตนเทากับ 'y'char name[25]="Naowarat Jaikaroon" ; // ประกาศตัวแปรชื่อ name มีคาเร่ิมตนเทากับ

"Naowarat Jaikaroon"

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

การเขียนโปรแกรมภาษาซี หนา 44

จัดทําโดยครูเนาวรัตน ใจการุณ

แบบฝกกิจกรรมท่ี 5โปรแกรมแสดงการประกาศตัวแปรเพื่อหาวารอยละ 15 ของ 2500 มีคาเทาใด1 #include <stdio.h>2 #include <conio.h>3 int main()4 {5 int percent=15 ;6 int number= 2500 ;7 float value ;8 value = number*percent/100 ;9 printf("%d percent of %d = %f",percent,number,value);10 getch();11 return 0;12 }อธิบายโปรแกรมบรรทัดที่ 1 เปน preprocessing เพื่อเรียกใช header file ชื่อ stdio.hบรรทัดที่ 2 เปน preprocessing เพื่อเรียกใช header file ชื่อ conio.hบรรทัดที่ 3 ฟงกชัน mainบรรทัดที่ 4 เร่ิมตนบลอกของฟงกชัน mainบรรทัดที่ 5 ประกาศตัวแปรชื่อ percent ใหเปนชนิด int มีคาเทากับ 15บรรทัดที่ 6 ประกาศตัวแปรชื่อ number ใหเปนชนิด int มีคาเทากับ 2500บรรทัดที่ 7 ประกาศตัวแปรชื่อ value ใหเปนชนิด float ซึ่งเปนจํานวนที่มีทศนิยม โดยไมกําหนดคาเร่ิมตนใหกับตัวแปรน้ีบรรทัดที่ 8 คํานวณหาคา 15% ของ 2500 ดวยสูตร number*percent/100 นําไปเก็บที่ตัวแปร valueบรรทัดที่ 9 แสดงบนจอภาพ วา 15 percent of 2500 = 375.000000 โดยใชตัวแปร percent number valueบรรทัดที่ 10 หยุดรอดูผลการทํางานของโปรแกรมจนกวาผูใชจะกดแปน Enterบรรทัดที่ 11 คืนคาใหกับฟงกชัน mainบรรทัดที่ 12 จบบลอกของฟงกชัน main

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

การเขียนโปรแกรมภาษาซี หนา 45

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 6 การประกาศตัวแปรและคาคงที่1. จงเขียนการประกาศชื่อตัวแปร ใหกับขอมูลตอไปน้ี

ตัวแปรและขอมูลที่กําหนด การประกาศตัวแปรname = “micro computer”weight = 56.45salary (เงินเดือน)address (บานเลขที่และถนน)ch =’a’member = true (true หมายถึง จริง)total = 300

2. การเขียนคําประกาศคาคงที่ แบบ Defined constant จะตองประกาศดวยคําใด และประกาศที่สวนไหนของโปรแกรม....................................................................................................................................................................................................................................................................................................

3. การเขียนคําประกาศคาคงที่ แบบ Memory constant จะตองประกาศดวยคําใด และประกาศที่สวนไหนของโปรแกรม ......................................................................................................................................................................................................................................................................................................

4. จาก statement ตอไปน้ี char mobile[11] = “0814268769” จงพิจารณาวา4.1. อะไรคือตัวแปร.............................................................................................................................4.2. อะไรคือ คาของตัวแปร.................................................................................................................4.3. mobile เปนตัวแปรชนิดใด ..........................................................................................................4.4. mobile จะเก็บตัวอักษรไดสูงสุด กี่ตัว .........................................................................................

5. จงเขียนคําสั่งเพื่อประกาศคาตัวแปรเพื่อเก็บขอมูลดังตอไปน้ี1) ประกาศคาตัวแปรชื่อ mail สําหรับเก็บคาอักขระ ‘#'.......................................................................................................................... ...................................2) ประกาศคาตัวแปรชื่อ calculator สําหรับเก็บเลขจํานวนจริง.............................................................................................................................................................3) ประกาศคาตัวแปรชื่อ num สําหรับเก็บเลขจํานวนเต็ม โดยกําหนดคาเร่ิมตนเปน 4,294,967,296.............................................................................................................................................................4) ประกาศคาตัวแปรชื่อ name สําหรับเก็บขอความ โดยกําหนดคาเร่ิมตนเปนชื่อของเรา............................................................................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 46

จัดทําโดยครูเนาวรัตน ใจการุณ

6. ใหนักเรียนกําหนดคาที่กําหนดใหตอไปน้ีใหเปนคาคงที่1) คา 141529.3 เก็บที่ตัวแปร Pi

คําสั่งกําหนดคาคงที่.........................................................................................................2) คา 44.12 เก็บที่ตัวแปร Sqrt2

คําสั่งกําหนดคาคงที่…………………………………………………………………….3) อัตราเงินปนผลสหกรณรอยละ 10 = 0.10 เก็บที่ตัวแปร Pa

คําสั่งกําหนดคาคงที่…………………………………………………………………….4) คํานําหนาชื่อ นางสาว เก็บที่ตัวแปร Title

คําสั่งกําหนดคาคงที่…………………………………………………………………….5) คาปรับหนังสือวันละ 3 บาท เก็บที่ตัวแปร Pay

คําสั่งกําหนดคาคงที่…………………………………………………………………….6) อัตราคาเสียภาษีรอยละ 7 = 0.07 เก็บที่ตัวแปร Tax

คําสั่งกําหนดคาคงที่…………………………………………………………………….

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

การเขียนโปรแกรมภาษาซี หนา 47

จัดทําโดยครูเนาวรัตน ใจการุณ

7. ตัวดําเนินการและนิพจนตัวดําเนินการ (Operator)

ตัวดําเนินการ(Operator) คือการใชในการกําหนดคาใหตัวแปร มีตัวดําเนินการ 3 ประเภทใหญๆดังน้ี

1. ตัวดําเนินการเลขคณิต (Arithmetic operators)2. ตัวดําเนินการเปรียบเทียบและ (Relational operators)3. ตัวดําเนินการตรรกะ ( Logical operators)

ตัวดําเนินการเลขคณิต (arithmetic operators)เปนตัวดําเนินการทางดานคณิตศาสตร ไดแกเคร่ืองหมายที่ใชในการบวก ลบ คูณ หาร

ตัวเลข และอ่ืน ๆ ดังในตารางตอไปน้ี

สัญลักษณ การดําเนินการ ตัวอยาง- การลบ X – Y+ การบวก X + Y* การคูณ X * Y/ การหาร X / Y

% การหารจะเอาเฉพาะเศษไว 11%3 = 3 เศษ 2 ดังน้ัน 2 เปนผลลัพธ

ตัวดําเนินการความสัมพันธหรือการเปรียบเทียบ (relational operators)หมายถึง เคร่ืองหมายที่ใชในการเปรียบเทียบและตัดสินใจ ผลการเปรียบเทียบจะใหคา

เปน 1 และ เท็จจะใหคาเปน 0 เคร่ืองหมายที่ใชมีดังน้ี

สัญลักษณ การดําเนินการ ตัวอยาง< นอยกวา 2<3 ผลลัพธ จริง(1)> มากกวา 2>3 ผลลัพธ เท็จ(false)(0)

<= นอยกวาหรือเทากับ 2<= 3 ผลลัพธ จริง(true)>= มากกวาหรือเทากับ 2>= 3 ผลลัพธ เท็จ(false)== เทากับ 4==4 ผลลัพธ จริง(true)!= ไมเทากับ 2!= 2 ผลลัพธ เท็จ(false)

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

การเขียนโปรแกรมภาษาซี หนา 48

จัดทําโดยครูเนาวรัตน ใจการุณ

ตัวดําเนินการตรรกะ (Logical operators)เคร่ืองหมายตรรกะมีจุดประสงคใชในการเปรียบเทียบเพื่อตัดสินใจซึ่งผลที่ไดจากการ

เปรียบเทียบจะไดผลลัพธ 2 อยาง คือ ถาไดผลลัพธเปนจริงจะมีคาเปน 1 และถาไดผลลัพธเปนเท็จจะมีคา 0 เปนเคร่ืองหมายตรรกะที่ใชในภาษา C มีดังน้ี

สัญลักษณ การดําเนินการ ตัวอยาง&& และ(AND) (2<3)&&(3>1) ผลลัพธ จริง

|| นอยกวา(OR) (2>3)||(4<1) ผลลัพธ เท็จ(false)! ไม(NOT) !(2> 3) ผลลัพธ จริง(true)

ตัวดําเนินการกําหนดคา (Assignment operators)สัญลักษณ การดําเนินการ ตัวอยาง

= กําหนดคา(assignment) a=2 ความหมายคือ กําหนดใหa มีคาเปน2+= การบวก(addition) a+=b ความหมายคือ(a=a+b)*= การคูณ(multiplication) a*=b ความหมายคือ(a=a*b)-= การลบ(subtraction) a-=b ความหมายคือ(a=a-b)/= การหาร(division) a/=b ความหมายคือ(a=a/b)

%= การหารหาเศษ(remainder) a%=b ความหมายคือ(a=a%b)++ เพิ่มคา(increment) a++ หรือ ++a ความหมายคือ a=a+1-- ลดคา(decrement) a-- หรือ --a ความหมายคือ a=a-1

ตัวอยางตัวดําเนินการของ Cตัวอยาง ข้ันตอนการประมวลผล

y = x + a ++; 1. y = x + a2. a = a + 1

y = x + ++ a; 1. a = a + 12. y = x + a

y += x ; y = y + xy += x ++ ; 1. y = y + x

2. x = x + 1

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

การเขียนโปรแกรมภาษาซี หนา 49

จัดทําโดยครูเนาวรัตน ใจการุณ

ตัวอยาง ข้ันตอนการประมวลผลy -= 9 ; y = y – 9y *= 7 * x++ ; 1. y = y * 7 * x

2. x = x + 1y /= x ; y = y / xy %= x ; y = y % x

ลําดับการดําเนินการของตัวดําเนินการ (operator precedence)ลําดับท่ี ตัวดําเนินการ ลักษณะการทํางาน

1 ( ) [ ] ซาย ไป ขวา2 - ~ | * & ขวา ไป ซาย3 ++ -- ขวา ไป ซาย4 * / % ซาย ไป ขวา5 + - ซาย ไป ขวา6 << >> ซาย ไป ขวา7 < > <= >= ซาย ไป ขวา8 == != ซาย ไป ขวา9 &(bitwise AND) ซาย ไป ขวา

10 ^(bitwise XOR) ซาย ไป ขวา11 |(bitwise OR) ซาย ไป ขวา12 && ซาย ไป ขวา13 || ซาย ไป ขวา14 ?: ซาย ไป ขวา15 = += -= /= %= ขวา ไป ซาย16 <<= >>= ขวา ไป ซาย

โดยตัวดําเนินการที่มีลําดับนอยกวาจะดําเนินกอนตัวดําเนินการที่มีลําดับสูงกวา เชนX = 2 + 5 * 3 จะมีลําดับการดําเนินการ คือ

ลําดับที่ 1 5 * 3 (เพราะ * มีลําดับเปน 4 สวน + อยูลําดับ 5)ลําดับที่ 2 2 + 15ลําดับที่ 3 17 เปนคาของ X

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

การเขียนโปรแกรมภาษาซี หนา 50

จัดทําโดยครูเนาวรัตน ใจการุณ

นิพจน (expression)เกิดจากการนํา คาคงที่ หรือ ตัวแปร และตัวดําเนินการมาประกอบกัน โดยนิพจนมีหลายชนิด

เชนนิพจนทางคณิตศาสตร นิพจนทางตรรกะ นิพจนทางการเปรียบเทียบ นิพจนเกี่ยวกับเงือนไข นิพจนเกี่ยวกับขอความ เชน

2 + x * 5 เปนตัวอยางของนิพจนทางคณิตศาสตร(2>3)&&(5>=4) เปนนิพจนทางตรรกะและการเปรียบเทียบ!(a) เปนนิพจนทางตรรกะif(x==y) เปนนิพจนเงื่อนไข

ตัวอยาง การหาผลลัพธของนิพจน กําหนด int a = 10 , b = 12, c =3;จงหาผลลัพธของ 2 * a + b % c ดําเนินการดังน้ี (2 * a) + (b %c)ผลลัพธ คือ 20 + 0 คือ 20จากขอกําหนดดานบน จงหาผลลัพธ ของ (a>b)&&(c<=b) ซึ่งเราอาจพิจารณา ดังน้ี

(เท็จ)&& (จริง) ดังน้ัน ผลลัพธ คือ เท็จแบบฝกกิจกรรมท่ี 6

กําหนดให x y z เปนจํานวนเต็ม จงเขียนโปรแกรม หา คา ของ z ที่มีความสัมพันธกับ x y เปนสมการทางคณิตศาสตร ดังน้ี z = 5x + 10y โดย x มีคาเปน 6 สวน y มีคา 7 และแสดงผลลัพธทางจอภาพ โปรแกรม อาจเปนทํานองน้ี#include <stdio.h>int x = 6,y=7,z;main(){

z = (5 * x) +( 10 * y); printf("value of x = %d \t value of y = %d \t value of z = %d",x,y,z);

}หรือ#include <stdio.h>int x = 6,y=7,z;main(){

printf("value of x = %d \t value of y = %d \t value of z = %d",x,y,5*x+10*y);}

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

การเขียนโปรแกรมภาษาซี หนา 51

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 7 ตัวดําเนินการและนิพจนคําชี้แจง กําหนดให

int x = 25;float y = 13;char z = 'g';int a = 3, b = 4, c = 5;int R1 = 2000, R2 = 4700;

1. จงเขียนนิพจนทางคณิตศาสตรตอไปน้ีใหอยูในรูปแบบนิพจนในภาษาซี พรอมหาคําตอบ1.1. 5x2 + 2y2 + y นิพจนในภาษาซี………………………………………………………….

วิธีทํา …………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

1.2. (x2 - 2) ÷ (3-x) นิพจนในภาษาซี………………………………………………………….วิธีทํา …………………………………………………………

………………………………………………………………………………………………………………………………………………………………………………

1.3. b2 - 4ac ÷ 2a นิพจนในภาษาซี………………………………………………………….วิธีทํา …………………………………………………………

………………………………………………………………………………………………………………………………………………………………………………

1.4. (1 ÷ R1) + (1 ÷ R2) นิพจนในภาษาซี………………………………………………………….วิธีทํา …………………………………………………………

………………………………………………………………………………………………………………………………………………………………………………

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

การเขียนโปรแกรมภาษาซี หนา 52

จัดทําโดยครูเนาวรัตน ใจการุณ

2. จงหาคําตอบของนิพจนตอไปน้ี2.1. y++ == 13

วิธีทํา …………………………………………………………………………........................……………………………………………………………………………………………………………………………………………………………………………………………………

2.2. ++y == 13วิธีทํา …………………………………………………………………………........................……………………………………………………………………………………………………………………………………………………………………………………………………

2.3. (z >= 65 && z <= 90) || (z >= 97 && z <= 122)วิธีทํา ………………………………………………………………………….......................……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

2.4. !((x >= 0) && (x%10 == 5))วิธีทํา ………………………………………………………………………….......................……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

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

การเขียนโปรแกรมภาษาซี หนา 53

จัดทําโดยครูเนาวรัตน ใจการุณ

8. คําสั่งรับ – แสดงผลฟงกชันในการรับขอมูลและแสดงผลขอมูล (Input / Output Function)1. printf( ) เปนฟงกชันที่ใชในการแสดงผลขอมูลที่อยูในตัวแปร คาคงที่ นิพจนออกมาทางจอภาพ

รูปแบบ printf (control, argument list);

Argument list เปนคาตัวแปร คาคงที่ หรือนิพจนที่ตองการนํามาแสดงผลถามีมากกวา 1 คาจะแยกกันโดยใชเคร่ืองหมายคอมมา ( , )

Control จะตองเขียนอยูภายใตเคร่ืองหมาย “ “ ซึ่งสามารถเขียนได 2 ลักษณะคือ1. เปนขอความที่ตองการใหแสดงออกมา เชน print(“ Sum of X = “);2. เปนรหัสรูปแบบ (Format Code) ที่ใชในการแสดงผลซึ่งทุกรหัสรูปแบบ

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

ตัวอยาง แสดงการใชคําสั่ง printf ที่มีขอความที่เปนคําอธิบายอยูในรูปคําสั่ง#include <stdio.h>#include <conio.h>main( ){int sum = 3;printf(“ The sum is %d ”,sum);}

ผลลัพธThe sum is 3

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

การเขียนโปรแกรมภาษาซี หนา 54

จัดทําโดยครูเนาวรัตน ใจการุณ

ตัวอยาง แสดงการใชคําสั่ง printf รหัสรูปแบบ % d และ % u#include <stdio.h>#include <conio.h>main( ){int num = -3, tot = 5;printf(“ num = %d tot = %u ”,num, tot);}

ผลลัพธNum = -3 tot = 5

ตัวอยาง แสดงการใชคําสั่ง printf รหัสรูปแบบ % f และ % e โดยมีทศนิยม 2 ตําแหนง#include <stdio.h>#include <conio.h>main( ){ float num = 22.75;printf(“ %.2f %.2e ”,num,num);}

ผลลัพธ22.75 2.28e+01

นอกจากน้ีเรายังสามารถจัดรูปแบบการแสดงผลใหดูเปนระเบียบมากขึ้น อยางเชนขึ้นบรรทัดใหม หลังแสดงขอความ หรือเวนระยะแท็บระหวางขอความ โดยใชอักขระควบคุมการแสดงผลรวมกับคําสั่ง printf

อักขระควบคุมการแสดงผล ชื่อ หนาท่ี\a Bell alarm เสียงดังออกลําโพงหน่ึงคร้ัง\b Backspace เลื่อน cursor ไปลบตัวอักษรทางซายมือหน่ึงตัวอักษร\f Formfeed ขึ้นหนาใหม\n Newline ขึ้นบรรทัดใหม\r Return เลื่อน cursor ไปทางซายมือสุดของบรรทัด\t Tab ต้ัง tab ในแนวนอน\v Vertical tab ต้ัง tab ในแนวต้ัง\\ Backslash เคร่ืองหมาย \\' Single quote เคร่ืองหมาย '\" Double quote เคร่ืองหมาย "\? Question mark เคร่ืองหมาย ?

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

การเขียนโปรแกรมภาษาซี หนา 55

จัดทําโดยครูเนาวรัตน ใจการุณ

การนําอักขระควบคุมการแสดงผลมาใช เราตองเขียนอักขระควบคุมการแสดงผลไวภายในเคร่ืองหมาย " " ดังตัวอยาง

printf("Hello ... \n"); แสดงขอความ Hello ... แลวขึ้นบรรทัดใหม

printf("Hello...\nLampang\n");แสดงขอความ Hello ...แลวขึ้นบรรทัดใหมพรอมกับแสดงขอความLampang จากน้ันขึ้นบรรทัดใหมอีกคร้ัง

printf("Num1 = %d\tNum2 =%f\n",x,z);

แสดงขอความ Num1 = 45 ตามดวยการเวนชองวาง 1 แท็บแลวตอดวยขอความ Num2 = 20.153

2. ฟงกชัน putchar ( ) เปนฟงกชันที่ใชในการแสดงผลขอมูลชนิดตัวอักขระ (char) ใหเห็นบนหนาจอภาพ

รูปแบบ putchar ( char );

3. ฟงกชัน puts ( ) เปนฟงกชันที่ใชในการแสดงผลขอมูลสตริงหรือขอความ (string) ใหเห็นบนหนาจอภาพ

รูปแบบ puts ( string );

4. ฟงกชัน scanf ( ) เปนฟงกชันที่ใชในการรับขอมูลจากแปนพิมพ (key board) เขามาเก็บไวในตัวแปร

รูปแบบ scanf (control, argument list);

Argument list เปนตัวแปรที่จะรับคาจากแป นพิมพมาเก็บไวถามีมากกวาหน่ึงคาจะตองแยกกันดวยเคร่ืองหมายคอมมา ( , ) และตัวแปรทุกตัวที่ใชจะตองนําหนาดวยเคร่ืองหมาย & ทุกตัวยกเวนตัวแปรชุด

Control เปนรหัสรูปแบบที่ใชในการรับขอมูลซึ่งจะตองเขียนอยูภายในเคร่ืองหมาย “ “ และจะมีรหัสรูปแบบเหมือนกับรหัสรูปแบบที่ใชในคําสั่ง printf

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

การเขียนโปรแกรมภาษาซี หนา 56

จัดทําโดยครูเนาวรัตน ใจการุณ

ตัวอยาง แสดงการใชคําสั่ง scanf#include <stdio.h>#include <conio.h>main( ){int num;scanf( “ %d ” ,&num);}

หมายความวาเคร่ืองจะรอรับคาที่เปนจํานวนเต็มหน่ึงจํานวนที่จะปอนเขามาทางแปนพิมพมาเก็บไวในตัวแปร num

ตัวอยาง แสดงการใชคําสั่ง scanf#include <stdio.h>#include <conio.h>main( ){int num; char ch;scanf(“ %d %c ” ,&num, &ch);}

หมายความวาเคร่ืองจะรอรับคาที่เขามา 2 คาคือคาที่หน่ึงเปนจํานวนเต็มหน่ึงจํานวน และคาที่สองเปนอักขระหน่ึงตัวที่จะปอนเขามาที่จะปอนเขามาทางแปนพิมพแลวนําไปเก็บไวในตัวแปร num และ chตามลําดับ

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

รูปแบบ char = getchar ( );

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

รูปแบบ char = getch ( );

7. ฟงกชัน getche ( ) เปนฟงกชันที่ใชในการรับขอมูลเปนตัวอักขระ 1 ตัวอักขระเขามาทางแปนพิมพโดยเมื่อปอนขอมูลเสร็จไมตองกดปุม enter และขอมูลที่ปอนจะปรากฎบนหนาจอภาพ

รูปแบบ getche ( );

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

การเขียนโปรแกรมภาษาซี หนา 57

จัดทําโดยครูเนาวรัตน ใจการุณ

8. ฟงกชัน gets ( ) เปนฟงกชันที่ใชในการรับขอมูลสตริงหรือขอความ (string) เขามาทางแปนพิมพโดยตองกด enter ทุกคร้ังเมื่อสิ้นสุดขอมูล และขอมูลที่ปอนจะปรากฏใหเห็นบนหนาจอภาพ

รูปแบบ gets (string);

ตัวอยางโปรแกรม การใชคําสั่งรับ - แสดงผล#include <stdio.h>#include <conio.h>main(){int x_value = 9;printf("x = %d\n",x_value);getch();}#include <stdio.h>#include <conio.h>main(){int x, y, sum;x = 7; y = 2;sum = x + y;printf("Total = %d\n",sum);getch();}#include <stdio.h>#include <conio.h>main(){int x, y;x = 7; y = 4;--x; ++y;

ผลการรันโปรแกรม

ผลการรันโปรแกรม

ผลการรันโปรแกรม

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

การเขียนโปรแกรมภาษาซี หนา 58

จัดทําโดยครูเนาวรัตน ใจการุณ

printf("x = %d\n",x);printf("y = %d\n",y);getch();}#include <stdio.h>#include <conio.h>main(){int profits, employees;profits = 9;employees = 2 ;printf("Each employee gets %f.", (float) profits/employees);getch();}include <stdio.h>#include <conio.h>main(){char any_char;printf("Please type a character: ");scanf("c%",&any_char);printf("Thank you, your character are %c",any_char);getch();}#include <stdio.h>#include <conio.h>main(){printf(" *\n");printf *******\n");printf*************\n");getch(); }

ผลการรันโปรแกรม

ผลการรันโปรแกรม

ผลการรันโปรแกรม

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

การเขียนโปรแกรมภาษาซี หนา 59

จัดทําโดยครูเนาวรัตน ใจการุณ

#include <stdio.h>#include <conio.h>main(){printf("\n****Using .1f****\n");printf("%.1f%.1f%.1f\n", 4.0, 16.5, 589.3);printf("%.1f%.1f%.1f", 400.0, 1600.5, 58900.3);printf("\n\n****Using 8.1f****\n");printf("%8.1f%8.1f%8.1f\n", 4.0, 16.5, 589.3);printf("%8.1f%8.1f%8.1f", 400.0, 1600.5, 58900.3);printf("\n\n**** Using -8.1f****\n");printf("%-8.1f%-8.1f%-8.1f\n", 4.0, 16.5, 589.3);printf("%-8.1f%-8.1f%-8.1f", 400.0, 1600.5, 58900.3);getch();}

ผลการรันโปรแกรม

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

การเขียนโปรแกรมภาษาซี หนา 60

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 8 การรับและแสดงขอมูล1. จงเขียนโปรแกรมวาดรูปตนไมดังน้ี

ผลการรันโปรแกรม โคดคําสั่ง (Source code)

%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%

%%%%%%%

1. ………………………………………………………………..2. ………………………………………………………………..3. ………………………………………………………………..4. ………………………………………………………………..5. ………………………………………………………………..6. ………………………………………………………………..7. ………………………………………………………………..8. ………………………………………………………………..9. ………………………………………………………………..10. ………………………………………………………………..11. ………………………………………………………………..12. ………………………………………………………………..13. ………………………………………………………………..14. ………………………………………………………………..15. .................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 61

จัดทําโดยครูเนาวรัตน ใจการุณ

2. จงเขียนโปรแกรมคํานวณพื้นที่รูปสี่เหลี่ยมผืนผา โดยมีหนาจอดังตอไปน้ี

หนาจอ โคดคําสั่ง (Source code)

Enter your name : _Enter Width : _Enter Lenght : _Rectangular area :_

1. ………………………………………………………………..2. ………………………………………………………………..3. ………………………………………………………………..4. ………………………………………………………………..5. ………………………………………………………………..6. ………………………………………………………………..7. ………………………………………………………………..8. ………………………………………………………………..9. ………………………………………………………………..10. ………………………………………………………………..11. ………………………………………………………………..12. ………………………………………………………………..13. ………………………………………………………………..14. ………………………………………………………………..15. .................................................................................................16. ………………………………………………………………..17. ………………………………………………………………..18. ………………………………………………………………..19. ………………………………………………………………..20. .................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 62

จัดทําโดยครูเนาวรัตน ใจการุณ

3. จงเขียนโปรแกรมเพื่อหาพื้นท่ีของรูปสี่เหลี่ยมคางหมู แลวแสดงผลโดยมีสวนของการรับขอมูลดังน้ี (สวนที่ขีดเสนใต ___ เปนขอมูลที่รับมาจากแปนพิมพ)

แสดงผลบนจอภาพดังน้ี (เคร่ืองหมาย ?? เปนการอางตัวแปร)

หมายเหตุ สูตรคํานวณหาพื้นที่สี่เหลี่ยมคางหมู = 1/2 * (ผลบวกของดานคูขนาน) * สูงจัดเก็บไวในชื่อแฟม printf1.cpp

4. จงเขียนโปรแกรมรับขอมูลชื่อ นามสกุล และ ปเกิด (พ.ศ.) เขามาทางแปนพิมพ แลวคํานวณหาอายุ โดยกําหนดรูปแบบการรับและแสดงผลดังน้ี

สวนของการรับขอมูลดังน้ี (สวนท่ีขีดเสนใต ___ เปนขอมูลท่ีรับมาจากแปนพิมพ)

แลวแสดงผลบนจอภาพดังน้ี (เคร่ืองหมาย ?? เปนการอางตัวแปร)

จัดเก็บไวในชื่อแฟม printf2.cpp

Enter the 1 st parallel side : ___Enter the 2 nd parallel side : ___Enter height : ___

The 1 st parallel side = ??The 2 nd parallel side = ??Height = ??Area = ???

Enter your name : ___Enter your lastname : ___Enter birth year : ___

<ชื่อ> <นามสกุล>You are ?? year old.

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

การเขียนโปรแกรมภาษาซี หนา 63

จัดทําโดยครูเนาวรัตน ใจการุณ

5. จงเขียนโปรแกรมเพื่อเปลี่ยนอุณหภูมิ จาก C ไปเปน F แลวแสดงผลตามท่ีกําหนด

โดยมีสวนของการรับขอมูลดังน้ี

แสดงผลบนจอภาพดังน้ี (เคร่ืองหมาย ?? เปนการอางตัวแปร)

หมายเหตุ สูตรเปลี่ยนอุณหภูมิ คือ 9

325

FC

จัดเก็บไวในชื่อแฟม printf3.cpp

6. จงเขียนโปรแกรมเพื่อเปลี่ยนอุณหภูมิ จาก F ไปเปน C แลวแสดงผลตามท่ีกําหนด

โดยมีสวนของการรับขอมูลดังน้ี

แสดงผลบนจอภาพดังน้ี (เคร่ืองหมาย ?? เปนการอางตัวแปร)

หมายเหตุ สูตรเปลี่ยนอุณหภูมิ คือ 9

325

FC

จัดเก็บไวในชื่อแฟม printf4.cpp

Enter temperature in C : ___

Temperature ?? C = ?? F

Enter temperature in F : ___

Temperature ?? F = ?? C

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

การเขียนโปรแกรมภาษาซี หนา 64

จัดทําโดยครูเนาวรัตน ใจการุณ

9. คําสั่งการทํางานแบบมีทางเลือก (Decission)การทํางานแบบมีทางเลือก หมายถึง การกําหนดใหโปรแกรมทํางานอยางใดอยางหน่ึง

เมื่อเงื่อนไขเปนจริงและทํา (หรือไมทํา) งานอีกอยางหน่ึงเมื่อเงื่อนไขเปนเท็จ ตัวอยางการเลือกทําที่อาจพบเห็นไดบอยเชน

การเตือนใหเลือกบันทึกขอความไวในดิสกคือSave (Y/N) ถาเลือก Y จะบันทึกขอมูลในดิสก

ถาเลือก N จะไมบันทึกขอมูลการเลือกทํามี 2 แบบคือการเลือกทําแบบ if และการเลือกทําแบบ switch

1. คําสั่ง if (if statement)2. คําสั่ง switch (switch statement)

การเลือกทําแบบ ifการเลือกทําแบบ if เร่ิมดวยการทดสอบเงื่อนไข ถาเงื่อนไขเปน จริง สเตตเมนตตอจาก if

จะทํางาน ถาเงื่อนไขเปน เท็จ สเตตเมนตตอจาก if จะไมทํางานรูปแบบของการเลือกทําแบบ if มี3 รูปแบบคือ

1. การเลือกทําแบบ if ที่มีสเตตเมนตเดียว และหลายสเตตเมนต มีรูปแบบดังน้ี

รูปแบบ if (condition) // if ที่มีสเตตเมนตเดียวstatement - 1;

-- หรือ --if (condition) // if หลายสเตตเมนต{

statement - 1;statement - 2;…

}

ผังงาน

condition

Statement - 1

จริง

เท็จ

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

การเขียนโปรแกรมภาษาซี หนา 65

จัดทําโดยครูเนาวรัตน ใจการุณ

แบบฝกกิจกรรมท่ี 7ใหนักเรียนสังเกตผังงานและการเขียนโปรแกรมหาคาสมบูรณตอไปน้ี

Start

X

X < 0

X = X * (-1)

True

False

X

End

#include <stdio.h>#include <conio.h>main(){int x;printf(“INPUT X : “);scanf(“%d”,&x);if (x < 0)

x = x * -1;printf(“%d”,x);getch();}

ผลการรันโปรแกรม

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

การเขียนโปรแกรมภาษาซี หนา 66

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 9 การทํางานแบบมีทางเลือก if

คําช้ีแจง ใหนักเรียนตอบคําถามตอไปนี้

1. จงเขียนลักษณะของการเลือกทําอยางงาย (คําสั่ง if )..........................................................................................................................................................................................................................................................................................................................

2. จงเขียนรูปแบบคําสั่ง if อยางงายในรูปแบบของ simple statement และ compound statementรูปแบบ Simple statement รูปแบบ Compound statement

3. จากรูปแบบของคําสั่ง if อยางงาย จงบอกความหมายของ Condition..........................................................................................................................................................................................................................................................................................................................

4. การเขียน Condition ตองเขียนใหอยูในเคร่ืองหมายใด ................................................................5. ผลของนิพจนที่เปนเงื่อนไข หรือ การตรวจสอบ (Condition ) จะไดคา หรือผลลัพธเปนอยางไร

.............................................................................................................................................................6. ตัวดําเนินการที่ทําใหเกิดความจริง หรือ เท็จ คือตัวดําเนินการชนิดใด ประกอบดวยตัวดําเนินการ

ใดบาง.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 67

จัดทําโดยครูเนาวรัตน ใจการุณ

7. จงพิจารณาจากประโยคตอไปน้ี”ถา grade เปน 0 แลว {ยื่นคํารอง , ติดตอผูสอน , อานหนังสือทบทวน , ทําแบบฝกหัด ,ใหสอบแกตัว}”7.1. ประโยคน้ีเปน statement แบบใด (Simple/Compound) .............................................................7.2. ถา ตัวแปร grade เปน int จงเขียนประโยคขางตนเปนรูปแบบคําสั่ง if อยางงาย

เขียนในสดมภซายกอน แลวมาเขียนในสดมภขวา

............................................................................

............................................................................

.............................................................................

............................................................................

............................................................................

............................................................................

.............................................................................

............................................................................7.3. จากประโยคขางตน ถา grade ไมเทากับ 0 จะตองทําอะไรบาง?

.....................................................................................................................................................8. จงพิจารณาจาก statement ตอไปน้ี

Source codeif (number= =8) // number เปนตัวแปร{ printf(“The answer is 8.\n);

printf(“You are right.”);}

8.1. จงอธิบายประโยค if (number= =8) .............................................................................................................................................................................................................................................

8.2. ถา number มีคาเทากับ 8 จะไดผลลัพธอยางไร ................................................................................................................................................................................................................................

9. จงพิจารณาจาก statement ตอไปน้ีSource code คําถาม

if (a%2){ printf(“This number is%d\n”,a); printf(“It is even”);}

จงบอกวา if (a%2) ใหคาความจริงหรือเท็จไดอยางไร?..............................................................................................................................................................................................................................................................................................................................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 68

จัดทําโดยครูเนาวรัตน ใจการุณ

2. ทําแบบ if – else ที่มีสเตตเมนตเดียว และหลายสเตตเมนต มีรูปแบบดังน้ี

รูปแบบ if (condition) // if – else ที่มีสเตตเมนตเดียวstatement - 1;

elsestatement - 2;

-- หรือ --if (condition) // if – else หลายสเตตเมนต{

statement - 1;…

}else{

statement - 2;…

}

ผังงาน

condition

Statement - 1

จริงเท็จ

Statement - 2

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

การเขียนโปรแกรมภาษาซี หนา 69

จัดทําโดยครูเนาวรัตน ใจการุณ

แบบฝกกิจกรรมท่ี 8ใหนักเรียนสังเกตผังงานและการเขียนโปรแกรมประกาศผลการสอบตอไปน้ี

Start

score

score < 50

result = “Faile”

TrueFalse

result

End

#include <stdio.h>#include <conio.h>main(){int score;char result[6];printf(“INPUT SCORE : “);scanf(“%d”,&score);if (score < 50)

result = “Faile”;else

result = “Pass”;printf(“%s”,result);getch();}

ผลการรันโปรแกรม

result = “Pass”

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

การเขียนโปรแกรมภาษาซี หนา 70

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 10 การทํางานแบบมีทางเลือก if-else

คําช้ีแจง ใหนักเรียนตอบคําถามตอไปนี้

1. จงอธิบายความหมายของการเลือกทํา ในโปรแกรมภาษาซี....................................................................................................................................................................................................................................................................................................................................

2. จงเขียนรูปแบบคําสั่ง If -else พรอมอธิบายอธิบายมาโดยสังเขป......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

3. กําหนดให int a=10, b=11; จงนําคาที่กําหนดใหน้ีไปตอบคําถามทุกขอตอไปน้ี3.1. (a>b) มีคาเปน (จริง หรือ เท็จ)......................... เขียนเปนเลขจํานวนเต็มไดคือเลข ................3.2. (a>=--b) มีคาเปน (จริง หรือ เท็จ)......................... เขียนเปนเลขจํานวนเต็มไดคือเลข ................3.3. (b>=++a) มีคาเปน (จริง หรือ เท็จ)......................... เขียนเปนเลขจํานวนเต็มไดคือเลข ................

4. จากรูปตอไปน้ีตอบคําถามขอ 4.1 - 4.5 ทุกขอ

4.1. ถาเงื่อนไขเปนจริงจะทําชุดคําสั่งใด ..................................................................................4.2. ถาเงื่อนไขเปนเท็จจะทําชุดคําสั่งใด ..................................................................................4.3. ถาชุดคําสั่ง A เปน Compound statement จะตองทําอยางไร ..........................................................

.........................................................................................................................................................4.4. ชุดคําสั่ง A และ ชุดคําสั่ง B จะเปน Single statement ไดหรือไม ? ...............................................

........................................................................................................................................................4.5. ถาชุดคําสั่ง A เปน Single statement แตชุดคําสั่ง B เปน Compound statement ไดหรือไม? .......

.......................................................................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 71

จัดทําโดยครูเนาวรัตน ใจการุณ

5. จงพิจารณาจากสวนของประโยคคําสั่งตอไปน้ีแลวตอบคําถามขอ 5.1 - 5.4 ทุกขอ

5.1. ถา ปอนเลข 0 ใหกับตัวแปร i แลวผลที่ไดจะเปนอยางไร .............................................................5.2. ถา ปอนเลข 1 ใหกับตัวแปร i แลวผลที่ไดจะเปนอยางไร .............................................................5.3. ถา ปอนเลข -1 ใหกับตัวแปร i แลวผลที่ไดจะเปนอยางไร ............................................................5.4. จากขอ 3.1 ถึงขอ 3.1 และขอ 5.1 ถึง 5.3 นักเรียนสรุปไดวา คาที่เปน เท็จ มีคาเทากับเลข ............

สวนคาที่เปนจริง มีคาเทากับเลข ....................................................................................................6. จงพิจารณาโคดคําสั่งตอไปน้ี แลวตอบคําถามขอ 6.1 - 6.5 ทุกขอ

บรรทัดโคดคําสั่ง คําอธิบาย

123456789

1011121314

#include <stdio.h>#include <conio.h>int main(){ int year; printf("You were born in year (B.E.) : "); scanf("%d",&year); year=year-543;

if (year%4) printf("In %d is not leap year.",year); else printf("In %d is leap year.",year); getch(); return 0;}

// ตัวแปรชนิด int ชื่อ year// รับป พ.ศ.เกิด เก็บที่ตัวแปร// year// เปลี่ยนเปนป ค.ศ.// ถาป ค.ศ. หารดวย 4 ไมลงตัว// แสดงขอความ// มิฉะน้ันแลว// แสดงขอความ

6.1. จากบรรทัดที่ 7 scanf("%d",&year); ถา year = 2533 จงหาวา year%4 ไดเลขใด ............................6.2. จากขอ 6.1 จะทําใหบรรทัดที่ 9 คือ ประโยค if (year%4) มีคาเปนจริงหรือเท็จ ..............................6.3. ผลที่ไดจากขอ 6.2 เปนอยางไร .........................................................................................................6.4. จากบรรทัดที่ 7 scanf("%d",&year); ถา year = 2535 จงหาวา year%4 ไดเลขใด ............................6.5. ผลที่ไดจากขอ 6.4 เปนอยางไร .........................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 72

จัดทําโดยครูเนาวรัตน ใจการุณ

3. แบบ if – else – if ที่มีสเตตเมนตเดียว และหลายสเตตเมนต มีรูปแบบดังน้ี

รูปแบบ if (condition1) // if – else - if ที่มีสเตตเมนตเดียวstatement - 1;

else if (condition2)statement - 2;elsestatement - n;

-- หรือ --if (condition1) // if – else - if หลายสเตตเมนต{ statement - 1;

…}else if (condition2)

{ statement - 2;…}else{ statement - n;…}

ผังงาน

Condition1

Statement - 1

จริงเท็จ

Statement - n

Condition2

Statement - 2

จริงเท็จ

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

การเขียนโปรแกรมภาษาซี หนา 73

จัดทําโดยครูเนาวรัตน ใจการุณ

แบบฝกกิจกรรมท่ี 9ใหนักเรียนสังเกตผังงานและการเขียนโปรแกรมตัดเกรดตอไปน้ี

Start

score

score < 50 grade = ‘0’True

False

grade

End

#include <stdio.h>#include <conio.h>main(){int score;char grade;printf("INPUT SCORE : ");scanf("%d",&score);if (score < 50) grade = '0';else if (score < 60) grade = '1';else if (score < 70) grade = '2';else if (score < 80) grade = '3';else grade = '4';printf("Grade is %c",grade);getch();}

ผลการรันโปรแกรม

grade = ‘4’

score < 60 grade = ‘1’True

score < 70 grade = ‘2’True

score < 80 grade = ‘3’True

False

False

False

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

การเขียนโปรแกรมภาษาซี หนา 74

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 11 การทํางานแบบมีทางเลือก if-else-if

คําช้ีแจง ใหนักเรียนตอบคําถามตอไปนี้

1. จงอธิบายความหมายของการเลือกทําแบบ if-else- if ในโปรแกรมภาษาซี............................................................................................................................................... .....................................................................................................................................................................................

2. การซอนคําสั่ง if – else ลงใน if – else จะตองซอน ณ ตําแหนงใด....................................................................................................................................................................................................................................................................................................................................

3. ถา char ch1=’a’ , ch2=’b’ ; จงพิจารณาวานิพจนตอไปน้ีเปนจริงหรือเท็จ3.1. if (ch1= =ch2) มีคาเปน (จริง หรือ เท็จ).........................3.2. if (ch1= =’A’) มีคาเปน (จริง หรือ เท็จ).........................3.3. if (ch2!= ’b’) มีคาเปน (จริง หรือ เท็จ).........................

4. จากรูปตอไปน้ีตอบคําถามขอ 4.1 - 4.4 ทุกขอ

4.1. ถา condition1 เปนจริง และ condition2 เปนจริงจะทําชุดคําสั่งใด ..................................................4.2. ถา condition1 เปนเท็จ และ condition3 เปนจริงจะทําชุดคําสั่งใด ...................................................4.3. ถา condition1 เปนจริง และ condition2 เปนเท็จจะทําชุดคําสั่งใด ...................................................4.4. ถา condition1 เปนเท็จ และ condition3 เปนเท็จจะทําชุดคําสั่งใด ...................................................

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

การเขียนโปรแกรมภาษาซี หนา 75

จัดทําโดยครูเนาวรัตน ใจการุณ

5. จากภาพขอ 4 ถานํามาประยุกตเขียนเปน โคดภาษาซีตอไปน้ี ใชตอบคําถามขอ 5.1 ถึง 5.4

5.1. ถา a = 5 ; b = 10 ; c=15 ; d= 20 แลว ผล

จากการ Run เปนอยางไร......................................................................................................................................................

5.2. ถา a = 10 ; b = 15 ; c= 20 ; d= 25 แลว ผลจากการ Run เปนอยางไร......................................................................................................................................................

5.3. ถา a = 10 ; b = 20 ; c= 25 ; d= 30 แลว ผลจากการ Run เปนอยางไร......................................................................................................................................................

5.4. ถา a = 15 ; b = 40 ; c= 15 ; d= 30 แลว ผลจากการ Run เปนอยางไร.................................................................................................................................. ....................

6. จากโคดขอ 5. ถานํามาเขียนใหมดังตอไปน้ี จงพิจารณาวาไดผลลัพธเหมือนเดิมหรือไม ?

ตอบ ................................................................................................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 76

จัดทําโดยครูเนาวรัตน ใจการุณ

การเลือกทําแบบ switchคําสั่ง switch ใชเพื่อเลือกทําคําสั่งใดคําสั่งหน่ึงตามตองการ โดยมีทางเลือกใหทําคําสั่งหลาย ๆ

ทาง คาตัวแปรจะทําหนาที่ควบคุมคําสั่ง switch คําสั่ง switch และคําสั่ง if – else – if เปนคําสั่งเลือกทําเชนเดียวกัน แตตางกันที่รูปแบบเงื่อนไข ตอไปน้ีเปนรูปแบบของการเลือกทําแบบ switch

รูปแบบ switch ( แวเรียเบิลชนิด int หรือ char ){

case คอนสแตนตชนิด int หรือ char :สเตตเมนต;สเตตเมนต;break;

case คอนสแตนตชนิด int หรือ char :สเตตเมนต;สเตตเมนต;break;

default :สเตตเมนต;สเตตเมนต;

}

ผังงาน

Condition1

Statement -1 Statement - 2 Statement - 3

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

การเขียนโปรแกรมภาษาซี หนา 77

จัดทําโดยครูเนาวรัตน ใจการุณ

การเลือกทําแบบ switch มีวิธีเลือกทําโดยการเปรียบเทียบคาของ switch แวเรียเบิล กับคาของคอนสแตนตในแตละ case ถามีคาเทากันสเตตเมนตของ case น้ันจะทํางาน และถาคาของswitch แวเรียเบิลไมเทากับคาของคอนสแตนตใน case ใด ๆ เลย สเตตเมนตของ default จะทํางาน

ขอสังเกตแวเรียเบิลและคอนสแตนตที่ใชสําหรับเปรียบเทียบในการเลือกทําแบบ switch จะตองมีชนิด

เปน int และ char เทาน้ัน

แบบฝกกิจกรรมท่ี 9จงเขียนโปรแกรมเมนูตอไปน้ี#include <stdio.h>#include <conio.h>#include “conios.c”main(){

int ch; clrscr();printf(" Menu \n");printf("===================\n");printf(" 1 :Create Data \n");printf(" 2 :Display Data \n");printf(" 3 :Append Data \n");printf(" 4 :Edit Data \n");printf(" 5 :Quit \n");printf("===================\n");printf("Please select <1, 2, 3, 4, 5 > ==> "); scanf("%d", & ch);switch (ch){case 1: printf("You take choice 1:Create Data \n");

break;case 2: printf("You take chaoice 2:Display Data\n");

break;

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

การเขียนโปรแกรมภาษาซี หนา 78

จัดทําโดยครูเนาวรัตน ใจการุณ

case 3: printf("You take choice 3:Append Data \n");break;

case 4: printf("You take choice 4: Edit Data \n");break;

case 5: printf("You take choice 5:Quit\n");break;

default: printf("You take choice the other:default");}getche();

}

ผลการรันโปรแกรม

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

การเขียนโปรแกรมภาษาซี หนา 79

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 12 การเลือกทําแบบ switch

คําช้ีแจง ใหนักเรียนตอบคําถามตอไปนี้

1. การเลือกทําดวยคําสั่ง switch นิยมใชในกรณีใด....................................................................................................................................................................................................................................................................................................................................

2. จงเขียนรูปแบบคําสั่ง switch พรอมอธิบายอธิบายมาโดยสังเขป..................................................................................................................................................................................................................................................................................................................................................................................................................................................................... .....................................................................................................................................................................................................................................................................................................................................................................

3. จงบอกชนิดคาของตัวแปรในแตละ case วาเปนขอมูลชนิดใดไดบาง ......................................................................................................................................................................................................................

4. จงเขียนประโยคตอไปน้ีใหอยูในรูปของ switch … case“ในกรณีของชั้นป (Year) ถาเปน 1 ใหเขียนขอความวา You are Freshly.

ถาเปน 2 ใหเขียนขอความวา You are Sophomore.ถาเปน 3 ใหเขียนขอความวา You are Junior.ถาเปน 4 ใหเขียนขอความวา You are Senior.”

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................

........................................................................................................................................... .......................

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 80

จัดทําโดยครูเนาวรัตน ใจการุณ

5. จงเปลี่ยนประโยค If – Then – Else ตอไปน้ีใหอยูในรูป switch … caseif (type=’a’) bonus=5 else

if (type=’f’) bonus=3 elseif (type=’p’) bonus=2 else bonus=1;

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................

.................................................................................................................................... ..............................

6. ถาในแตละ case ไมมีคําสั่ง break จะมีผลอยางไร..............................................................................................................................................จงเขียนผลที่ไดจากซอรตโคด (Source code) ตอไปน้ี

บรรทัด ซอรตโคด (Source code) ผลที่ไดจากการ Run123456789

10111213141516171819

#include <stdio.h>#include <conio.h>int main(){ char ch; printf("Please select b,c,m,p,r,w,y : "); ch=getchar(); switch (ch) { case 'b' : printf("It is black."); break; case 'c' : printf("It is cyan."); break; case 'm' : printf("It is magenta."); break; case 'p' : printf("It is pink."); break; case 'r' : printf("It is red."); break; case 'w' : printf("It is white."); break; case 'y' : printf("It is yellow."); break; default : printf(“Oh ! no.”); } getch(); return 0;}

1. กรณีปอนตัวอักษร c.....................................................................2. กรณีปอนตัวอักษร r.....................................................................3. กรณีปอนตัวอักษร t.....................................................................4. กรณีปอนตัวอักษร Y.....................................................................5. กรณีปอนตัวอักษร m.....................................................................6. กรณีปอนตัวอักษร k.....................................................................

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

การเขียนโปรแกรมภาษาซี หนา 81

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 13 การเลือกทํา (Decision)คําชี้แจง ใหเขียนโปรแกรมดวย Bloodshed Dev-C++

1. จงเขียนโปรแกรมดวยคําสั่ง if – else เพื่อรับเลขเขามาจากแปนพิมพหน่ึงจํานวน แลวพิจารณาวาเลขน้ันมากกวา 0 หรือนอยกวา 0

กําหนดสวนของการรับขอมูลดังน้ี

แสดงผลบนจอภาพดังน้ี

หมายเหตุ ตัวเลข 35 เปนตัวเลขที่ปอนเขาไปจัดเก็บไวในชื่อแฟม test_if1.c

2. จงเขียนโปรแกรม รับเลขเขามาสองจํานวนเพื่อนํามาหารกัน แตตองพิจารณาวาเลขตัวที่ 2 เปน 0หรือไม? ถาเปน 0 ใหแสดงขอความวา “Can not divide by zero. แตถาไมใช 0 ใหแสดงผลของการหารจํานวนที่ 1 ดวยจํานวนที่ 2

กําหนดสวนของการรับขอมูลดังน้ี

แสดงผลบนจอภาพดังน้ี

หมายเหตุ ตัวเลขที่ขีดเสนใตเปนคือ 15 และ 4 เปนตัวเลขที่ปอนเขาไปจากแปนพิมพและเมื่อพิมพ Source code และ Compile แลวจัดเก็บไวในชื่อแฟม test_if2.c

Enter number : 35

กรณีที่มากกวา 0 ใหแสดงผลดังน้ี This number > 0 หรือกรณีที่นอยกวา 0 ใหแสดงผลดังน้ี This number < 0

Enter 1 st number : 15Enter 2 nd number : 4

กรณีที่เปน 0 ใหแสดง Can not divide by zero หรือกรณีไมเปน 0 ใหแสดง 15.00 divide 4.00 = 3.75

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

การเขียนโปรแกรมภาษาซี หนา 82

จัดทําโดยครูเนาวรัตน ใจการุณ

3. จงเขียนโปรแกรมดวยคําสั่ง if – else เพื่อรับเลขเขามาสองจํานวน แลวนํามาแสดงผลเรียงจากนอยไปมาก

กําหนดสวนของการรับขอมูลดังน้ี

แสดงผลบนจอภาพดังน้ี

หมายเหตุ 7 และ 4 คือ ตัวเลขที่ปอนเขามาจากแปนพิมพและเมื่อพิมพ Source code และ Compile แลวจัดเก็บไวในชื่อแฟม test_if3.c

4. จงเขียนโปรแกรมดวยคําสั่ง if – else เพื่อรับตัวอักขระเขามาหน่ึงตัว ถาเปน A E I O U ใหแสดงผลวาเปนสระ (Vowel) นอกจากน้ีทั้งหมดใหแสดงผลวาเปนตัวอักษร (Character)

กําหนดสวนของการรับขอมูลดังน้ี

แสดงผลบนจอภาพดังน้ี

หมายเหตุ T คือ ตัวอักษรที่ปอนเขามาและเมื่อพิมพ Source code และ Compile แลว จัดเก็บไวในชื่อแฟม test_if4.c

Enter 1 st number : 7Enter 2 nd number : 4

The number is 4 and 7

Enter a character : T

T is a character

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

การเขียนโปรแกรมภาษาซี หนา 83

จัดทําโดยครูเนาวรัตน ใจการุณ

5. จงเขียนโปรแกรมดวยคําสั่ง if – else เพื่อคํานวณหาสวนลด (Discount) ใหกับลูกคาที่มาซื้อสินคาในรานคาแหงหน่ึง โดยมีเงื่อนไขดังน้ี

1. ถาลูกคาเปนสมาชิก และ มียอดซื้อสินคาต้ังแต 2000 บาทขึ้นไป ลดให 10 %2. ถาเปนสมาชิก และ มียอดซื้อไมถึง 2000 บาท ลดให 7 %3. ไมเปนสมาชิก และ มียอดซื้อมากกวา 1000 บาท ลดให 5 %4. กรณีอ่ืน ๆ ไมมีสวนลดโดยมีสวนของการรับขอมูลดังน้ี

แสดงผลบนจอภาพดังน้ี

หมายเหตุ เคร่ืองหมาย ?? ที่ขีดเสนหนาบนหนาจอแสดงผลคือขอมูลที่รับเขามาหรือขอมูลที่ไดจากการคํานวณ

สูตรสวนลด = อัตราสวนลด * ราคาสินคา / 100และเมื่อพิมพ Source code และ Compile แลว จัดเก็บไวในชื่อแฟม test_if5.c

PIYABUT CO-OPERATION CO.LTD.========================================

SUB TOTAL SALE = ?????MEMBER = Y หรือ NDISCOUNT = ???BALANCE = ?????

========================================Progarm by

1. Mr (Miss). …………………………………………………2. Mr (Miss) .. ……………………………………………….

PIYABUT CO-OPERATION CO.LTD.========================================

SUB TOTAL SALE = ?????MEMBER (Y/N) = Y หรือ N

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

การเขียนโปรแกรมภาษาซี หนา 84

จัดทําโดยครูเนาวรัตน ใจการุณ

ขอ 6 จงเขียนโปรแกรมดวยคําสั่ง switch เพื่อคํานวณหา พื้นที่ของรูปตาง ๆ 3 รูป ดังเมนูตอไปน้ี

กรณีเลือก 1 ใหแสดงหนาจอรับขอมูล และ หนาจอแสดงผลดังน้ีหนาจอรับขอมูล

หนาจอแสดงผล

กรณีเลือก 2 ใหแสดงหนาจอรับขอมูล และ หนาจอแสดงผลดังน้ีหนาจอรับขอมูล

MAIN MENU = = = = = = = = = = = = = = = = = = = = = = =

1. Pyramid2. Cone3. Tube

= = = = = = = = = = = = = = = = = = = = = = = Please select your choice (1 .. 3) : __

Enter width : __Enter long : __Enter height : __

VOLUME OF PYRAMIDBase width = ??Base long = ??Height = ??Volume of pyramid = ?????

Enter radial : __Enter height : __

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

การเขียนโปรแกรมภาษาซี หนา 85

จัดทําโดยครูเนาวรัตน ใจการุณ

หนาจอแสดงผล

กรณีเลือก 3 ใหแสดงหนาจอรับขอมูล และ หนาจอแสดงผลดังน้ีหนาจอรับขอมูล

หนาจอแสดงผล

กรณีเลือก อ่ืน ๆ ที่ไมใช 1 – 3 ใหแสดงขอความวา

หมายเหตุ เคร่ืองหมาย ?? ที่ขีดเสนหนาบนหนาจอแสดงผลคือขอมูลที่รับเขามาหรือขอมูลที่ไดจากการคํานวณ

สูตรปริมาตรรูปปรามิด (Pyramid) = พื้นที่สี่เหลี่ยมที่เปนฐาน*สูง*1/3สูตรปริมาตรรูปกรวย (Cone) = พื้นที่วงกลมที่เปนฐาน*สูง*1/3สูตรปริมาตรทอนํ้า (Tube) = พื้นที่วงกลมที่เปนฐาน* ความยาวของทอและเมื่อพิมพ Source code และ Compile แลว จัดเก็บไวในชื่อแฟม test_switch.c

VOLUME OF CONERadial = ??Height = ??Circle area = ??Volume of cone = ?????

Enter radial : __Enter long : __

VOLUME OF TUBERadial = ??Long = ??Circle area = ??Volume of cone = ?????

Your choice is incorrect.

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

การเขียนโปรแกรมภาษาซี หนา 86

จัดทําโดยครูเนาวรัตน ใจการุณ

10. คําสั่งการทํางานแบบทําซํ้า (Loop)การวนซ้ําหรือการทําเปนวงรอบคือการทํางานอยางเดียวกันหรือซ้ํา ๆ กันตามเงื่อนไขที่กําหนด

การทํางานแบบวนซ้ําน้ันจะตองมีการตรวจสอบเงื่อนไขอยูภายในลูปของการทําซ้ําดวย งานบางประเภทมีจํานวนคร้ังในการทําซ้ําที่แนนอน งานบางประเภทมีจํานวนคร้ังในการทําซ้ําไมแนนอนขึ้นอยูกับเงื่อนไขที่เขียนในโปรแกรม ประเภทของการทําซ้ําจะแบงไดเปน 3 ประเภทดังน้ี

1. การทําซ้ําแบบที่ทราบจํานวนคร้ังในการทําซ้ํา คําสั่ง for2. การทําซ้ําจนระบบมีเงื่อนไขอยางหน่ึงจึงหยุด คําสั่ง do-while3. การทําซ้ําแบบถาเงื่อนไขเปนจริงจะทําชุดคําสั่ง คําสั่ง While

คําสั่ง forคําสั่งน้ีจะทําซ้ําในลูปโดยมีการกําหนดคาเร่ิมตน แลวตรวจสอบเงื่อนไข ถาเงื่อนไขเปนจริงจะ

ทําในลูปซ้ําจนกวาเงื่อนไขจะเปนเท็จ โดยทั่วไปจะใชคําสั่งน้ีในการทํางานซ้ํา ๆ ที่ทราบจํานวนคร้ังในการทําซ้ําแนนอน

รูปแบบ for (initialization; condition; increment or decrement){

statement - 1;statement - 2;…..statement - n;

}

โดยที่ initialization เปนการกําหนดคาเร่ิมตนใหกับตัวแปรที่ใชตรวจสอบเงื่อนไขcondition เปนนิพจนที่ใชตรวจสอบเงื่อนไขincrement เพิ่มคาใหกับตัวแปรdecrement ลดคาใหกับตัวแปร

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

การเขียนโปรแกรมภาษาซี หนา 87

จัดทําโดยครูเนาวรัตน ใจการุณ

แบบฝกกิจกรรมท่ี 10

จงเขียนโปรแกรมสําหรับหาผลบวกของเลขยกกําลังสอง ถาหากตัวเลขเปนเลขจํานวนเต็มระหวาง 1 ถึง 10 แลวแสดงผลบวกออกทางจอภาพ ตามผังงานตอไปน้ี

วิธีทํา งานในลักษณะน้ีจะทําจํานวน 10 คร้ัง ดังน้ันจะกําหนดใหsum เปนตัวแปรสําหรับเก็บผลรวมI เปนตัวแปรที่ใชนับลูปการทํางานของโปรแกรมจะเขียนไดดังน้ี1. เร่ิมตน2. ให sum = 03. ให I = 14. ในขณะที่ I นอยกวาหรือเทากับ 10 ทํา

4.1 sum เทากับ sum บวก I คูณ I4.2 เพิ่ม I ขึ้นหน่ึงคา

5. แสดงผล sum6. จบ

ผังงาน

start

sum = 0

I = 1

I <= 10

sum = sum + I * I

I = I+1

sum

End

โปรแกรม#include <stdio.h>#include <conio.h>int sum,I;main(){sum = 0;for (I = 1;I<= 10;I++)

{sum = sum + I*I;}

printf("Sum = %d\n",sum);getch();}

ผลการทํางานของโปรแกรม

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

การเขียนโปรแกรมภาษาซี หนา 88

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 14 การทําซํ้าแบบที่ทราบจํานวนคร้ังในการทําซํ้า คําสั่ง for1. จงเขียนรูปแบบการทําซ้ําดวยคําสั่ง for

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................2. จงอธิบายเงื่อนไขตรวจสอบหลังคําสั่ง for

..................................................................................................................................................................

........................................................................................................................................................ ..........

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................

..................................................................................................................................................................3. การเขียนเงื่อนไขตรวจสอบหลัง คําสั่ง for ตองเขียนภายในเคร่ืองหมายใด

..................................................................................................................................................................4. การเขียนเงื่อนไขตรวจสอบหลัง คําสั่ง for มีเงื่อนไขตรวจสอบ 3 ตัว ใหเขียนคั่นแตละตัวดวย

เคร่ืองหมายใด.................................................................................................................................................................

5. จงพิจารณาคําสั่ง for ดังตอไปน้ี

5.1. a เปนตัวแปรชนิดใด .....................................................................................................................5.2. ในคําสั่ง a มีคาเร่ิมตนเทาไร ..........................................................................................................5.3. โปรแกรมจะหยุดเมื่อ a มีคาเทาใด ................................................................................................5.4. คาของ a จะเพิ่มขึ้น รอบละเทาไร .................................................................................................5.5. จะมีการวนรอบทําซ้ําทั้งหมดกี่รอบ ..............................................................................................

int a;for (a=5;a<20;a++)

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

การเขียนโปรแกรมภาษาซี หนา 89

จัดทําโดยครูเนาวรัตน ใจการุณ

6. จงพิจารณาจาก Source code ตอไปน้ี

6.1. ตัวแปร ch เปนตัวแปรชนิดใด ..........................................................................................................6.2. โปรแกรมน้ีทําซ้ํา เมื่อตัวแปร ch มีคาเปนอะไร ...............................................................................6.3. รอบสุดทายของการทําซ้ํา ตัวแปร ch มีคาเปนอะไร ........................................................................6.4. เมื่อหลุดจากการทําซ้ําแลว ตัวแปร ch จะมีคาเปนอะไร (ดูตาราง ASCII จากเว็บ) ..........................6.5. โปรแกรมน้ีจะทําซ้ํา source code บรรทัดใดบาง .............................................................................6.6. โปรแกรมน้ีจะทําซ้ําจํานวนกี่รอบ ....................................................................................................

7. จงพิจารณาจาก Source code ตอไปน้ี

7.1. ตัวแปร r และ area เปนตัวแปรชนิดใด ........................................................................................7.2. ในวงรอบการทําซ้ําดวยคําสั่ง for น้ี ตัวแปร r มีคาเร่ิมตนเทาใด ....................................................7.3. รอบสุดทายของการทําซ้ํา ตัวแปร r จะมีคาเทาใด .............................................................................7.4. เมื่อหลุดการการทําซ้ําแลว r มีคาเปนเทาใด ......................................................................................7.5. จงบอกความหมายของ r+=10 ..........................................................................................................7.6. โปรแกรมน้ีจะมีการเพิ่มคา r คร้ังละ (รอบละ) เทาใด .......................................................................7.7. จงเขียนผลที่ไดจากการ Run โปรแกรม เพียงบรรทัดแรกบรรทัดเดียว

..........................................................................................................................................................

บรรทัดท่ี 1 float r , area=0; // r คือ รัศมี และ area คือพื้นท่ีบรรทัดท่ี 2 for (r=10;r<=100;r+=10)บรรทัดท่ี 3 {บรรทัดท่ี 4 area=22/7.0*r*r;บรรทัดท่ี 5 printf(“r = %6.2f and area = %8.2f \n“,r,area);บรรทัดท่ี 6 }

บรรทัดท่ี 1 char ch; // ch เปนชนิดอักขระบรรทัดท่ี 2 for (ch=’A’;ch<=’Z’;ch++)บรรทัดท่ี 3 printf(“%c\t”,ch);บรรทัดท่ี 4 printf(“\nTo show character A to Z”);บรรทัดท่ี 5 printf(“\nEnd program.”);

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

การเขียนโปรแกรมภาษาซี หนา 90

จัดทําโดยครูเนาวรัตน ใจการุณ

คําสั่ง do-whileเปนคําสั่งที่ใชในการวนซ้ําที่มีจํานวนคร้ังไมแนนอน เมื่อโปรแกรมเขาสูลูปจะทําคําสั่งตาง ๆ

ในลูปกอนหน่ึงคร้ัง จากน้ันจะมีการตรวจสอบเงื่อนไขอยูดานทายลูป ถาหากตรวจสอบเงื่อนไขแลวเปนจริงโปรแกรมจะทําในลูปตอไป แตถาเงื่อนไขเปนเท็จจะออกนอกลูป

รูปแบบ do{

statement - 1;statement - 2;…..statement - n;

} while (condition)

โดยที่ condition เปนการตรวจสอบเงื่อนไขทายลูป ถาหากเปนเท็จจะออกจากลูปชุดคําสั่งตาง ๆ ที่จะทําซ้ําจะอยูในเคร่ืองหมายป กกาหลัง do สวน condition ที่อยูหลัง while จะ

ใชสําหรับตรวจสอบเงื่อนไข ถาหากเงื่อนไขเปนจริงจะทําในลูป ถาเปนเท็จจะออกนอกลูป

ตัวอยางคําสั่ง do - while พิจารณาการทําชุดคําสั่งตอไปน้ี

int counter = 1; /*กําหนดตัวแปร counter เทากับ 1 */do {printf(“%d “,counter);}while(++counter <= 10); /*ทําในลูปถา counter นอยกวา 10 จริง */

จากชุดคําสั่งเร่ิมแรกโปรแกรมจะพิมพตัวเลข 1 ออกมา จากน้ันจะเพื่มคาตัวแปร counter ขึ้นหน่ึงคาแลวตรวจสอบวาคาตัวแปรน้ียังนอยกวา 10 จริงอยูหรือไม ถาจริงทําในลูปอีกคร้ัง ถาเปนเท็จจะออกนอกลูป ถาหากรันโปรแกรมผลลัพธที่ไดจะเปนดังน้ี

1 2 3 4 5 6 7 8 9 10

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

การเขียนโปรแกรมภาษาซี หนา 91

จัดทําโดยครูเนาวรัตน ใจการุณ

แบบฝกกิจกรรมท่ี 11ถาหากตองการใหระบบคอมพิวเตอรรับคาตัวเลขจํานวนเต็มเขาไปที่ละคา แลวนําตัวเลขมา

รวมกัน จนกระทั่งปอนตัวเลขเปน 0 ใหหยุดรับคาและแสดงผลรวมออกมาทางจอภาพจงวิเคราะหปญหาน้ี พรอมทั้งเขียนผังงาน และโปรแกรม

วิธีทํา ตองการอะไร หาคาผลรวมของตัวเลข ตองการเอาตพุตอยางไร แสดงผลรวมทางจอภาพขอมูลเขา รับตัวเลขที่ละคา ถาตัวเลขเปน 0 ใหจบโปรแกรมวิธีการประมวลผล ตองประกาศตัวแปรหน่ึงตัว (sum) สําหรับเก็บผลรวม

โดยเร่ิมตนใหตัวแปรน้ีมีคาเปน 0รับขอมูล(x) เขามาทีละคาแลวเอาไปรวมกับ sumถาหาก x เปน 0 ใหแสดงผลรวมแลวออกจากโปรแกรม

การทําซ้ําแบบน้ีจะไมทราบจํานวนคร้ังในการทําซ้ําที่แนนอน โดยจะทําไปเร่ือย ๆ จนกวาขอมูลที่รับเขาไปจะเปน 0 ดังน้ันสามารถเขียนคําอธิบายวิธีการทํางานไดดังน้ี

1. เร่ิมตนทํางาน2. กําหนดคา sum ใหเทากับ 03. รับคา X ทางแปนพิมพ4. ทําในลูปถา X มีคาไมเทากับ 04.1 หาคาผลรวม sum = sum + X4.2 รับคา X ทางแปนพิมพ5. แสดงคาผลรวม sum ทางจอภาพ6. จบการทํางาน

#include "stdio.h"#include "conio.h"main(){ int x, sum;sum = 0;do {printf("INPUT DATA ");scanf("%d",&x);sum = sum + x;}while(x != 0);printf("Sum = %d\n",sum);getch(); }

ผังงาน

start

sum = 0

x = 0

sum = sum + x

sum

End

x

TrueFalse

ผลการทํางานของโปรแกรม

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

การเขียนโปรแกรมภาษาซี หนา 92

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 15 การทําซํ้าจนระบบมีเงื่อนไขอยางหนึ่งจึงหยุด คําสั่ง do-while

1. จงเขียนรูปแบบการทําซ้ําดวยคําสั่ง do - while............................................................................................................................................................... .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

2. จงอธิบายการทําซ้ําดวยคําสั่ง do - while........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

3. จงอธิบาย ตรรกะเร่ือง ความจริง ความเท็จ ตามลักษณะของภาษาซีเลข 0 หมายถึง .........................................................................................................................................เลขใด ๆ ที่ไมใช 0 หมายถึง ....................................................................................................................

4. จงอธิบายคําวา block ...........................................................................................................................................................................................................................................................................................

5. คําสั่ง do - while จะตรวจสอบเงื่อนไข กอน หรือ หลัง เขาไปทําใน block ของ do - while..................................................................................................................................................................

6. เปนไปไดหรือไม ที่จะเขียนโปรแกรมโดยไมใหเขาไปทําซ้ําใน do - while เลยสักคร้ัง บอกเหตุผลดวย....................................................................................................................................................................................................................................................................................................................................

7. กําหนดให char ch = ‘K’; แลว จงพิจารณาวา ประโยค while ตอไปน้ี เปนจริง หรือ เท็จ7.1. while (ch<’G’) ผลลัพธเปน ..............................................................................................7.2. while (ch>=’J’) ผลลัพธเปน ..............................................................................................7.3. while (ch!=’K’) ผลลัพธเปน ..............................................................................................7.4. while (ch<=’k’) ผลลัพธเปน ..............................................................................................

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

การเขียนโปรแกรมภาษาซี หนา 93

จัดทําโดยครูเนาวรัตน ใจการุณ

8. จงพิจารณาคําสั่ง source code ดังตอไปน้ี

8.1. คาเร่ิมตนของตัวแปร line มีคาเทาไร ................................................................................................8.2. ในแตละรอบของการทําซ้ํา โปรแกรมจะทําอะไรบาง

..........................................................................................................................................................

..........................................................................................................................................................8.3. โปรแกรมจะทําซ้ําในขณะที่ตัวแปร line มีคาเทาไร .........................................................................8.4. โปรแกรมทีการทําซ้ําทั้งหมดกี่รอบ .................................................................................................8.5. จงอธิบาย นิพจน while (line<10);

..........................................................................................................................................................

..........................................................................................................................................................8.6. ถาแกบรรทัดที่ 1 เปน int line=11; แลวเมื่อ Run โปรแกรมจะเปนอยางไร

..........................................................................................................................................................9. จงพิจารณาคําสั่ง source code ดังตอไปน้ี

9.1. ใน source code ตัวแปร r มีคาเร่ิมตนเทาไร ....................................................................................9.2. โปรแกรมจะทําซ้ําในขณะที่ r มีคาเทาใด ..........................................................................................9.3. โปรแกรมจะหยุดเมื่อ r มีคาเทาใด .....................................................................................................9.4. จะมีการวนรอบทําซ้ําทั้งหมดกี่รอบ ..................................................................................................9.5. เมื่อออกจากการทําซ้ําแลว r จะมีคาเทาใด .........................................................................................

บรรทัดที่ 1 float circum=0,r=5;บรรทัดที่ 2 doบรรทัดที่ 3 {บรรทัดที่ 4 circum=22/7.0*2*r;บรรทัดที่ 5 printf(“radial = %6.2f and circumference = %8.2f “,r,circum);บรรทัดที่ 6 r+=5;บรรทัดที่ 7 } while (r<=50);

บรรทัดที่ 1 int line=1;บรรทัดที่ 2 doบรรทัดที่ 3 {บรรทัดที่ 4 printf(“This is line # %d.\n”,line);บรรทัดที่ 5 line++;บรรทัดที่ 6 } while (line<10);

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

การเขียนโปรแกรมภาษาซี หนา 94

จัดทําโดยครูเนาวรัตน ใจการุณ

คําสั่ง whileเปนคําสั่งที่จะตรวจสอบเงื่อนไขกอนที่จะทําซ้ํา ถาหากเงื่อนไขเปนจริงจะทําซ้ําในลูป ถาหาก

เงื่อนไขเปนเท็จจะออกนอกลูป การใชคําสั่งน้ีโปรแกรมอาจไมทําในลูปเลยก็ไดถาหากเงื่อนไขเปนเท็จ

รูปแบบ while (condition){

statement - 1;statement - 2;…..statement - n;

}

โดยที่ condition เปนการตรวจสอบเงื่อนไขกอนการทํางานในลูปจากรูปแบบคําสั่งดังกลาว จะเกิดการทํางาน statement - 1 และ statement – 2 ถึง statement - n

เมื่อมีการตรวจสอบวาเงื่อนไขเปนจริง และจะทํางานซ้ําเชนน้ีไปจนกวาเงื่อนไขน้ันจะเปนเท็จ หากคําสั่งที่ทําซํ้ามีมากกวา 1 คําสั่งจะตองใชเคร่ืองหมายแสดงขอบเขต คือ { } ครอบคําสั่งที่ตองการใหทําซ้ําทั้งหมด แตถามีคํา สั่งที่ตองทําซ้ําเพียงคําสั่งเดียว ผูเขียนโปรแกรมใสเคร่ืองหมาย { } หรือไมก็ได

แบบฝกกิจกรรมท่ี 12ถาหากตองการพัฒนาโปรแกรมคอมพิวเตอรสําหรับแปลงหนวยการวัดอุณหภูมิจากหนวย

ฟาเรนไฮซ(fahrenheit) เปนหนวยเซลเซียส(Celsius) โดยสามารถรับไดจนกวาจะตองการจบการทํางานกําหนดใหกดตัว ‘y’ เมื่อตองการจบการทํางาน จงเขียนรหัสลําลองของปญหาน้ี พรอมทั้งแสดงวิธีการตรวจสอบคําตอบวิธีทํา ตองการอะไร แปลงหนวยวัดอุณหภูมิจากฟาเรนไฮซเปนเซลเซียสตองการเอาตพุตอยางไร แสดงคาในหนวยเซลเซียสขอมูลเขา รับคาเปนฟาเรนไฮซทีละคาทางแปนพิมพวิธีการประมวลผล การแปลงจากฟาเรนไฮซเปนเซลเซียสคํานวณไดจาก

c_temp = (f_temp – 32)*(5/9)ใหตัวแปรเปนดังน้ี

c_temp เปนตัวแปรอุณหภูมิในหนวยเซลเซียสf_temp เปนตัวแปรอุณหภูมิในหนวยฟาเรนไฮซans เปนตัวแปรสําหรับรับตัวอักษรจบการทํางาน

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

การเขียนโปรแกรมภาษาซี หนา 95

จัดทําโดยครูเนาวรัตน ใจการุณ

วิธีการประมวลผลสามารถเขียนเปนคําอธิบายไดดังน้ี1. เร่ิมตน2. ในขณะที่ ans ไมเทากับ ‘y’

2.1 รับคา f_temp2.2 หาคา c_temp จาก c_temp = (f_temp – 32) * 5/92.3 แสดงผล c_temp2.4 แสดงขอความ “Are you Exit (y/n)?”2.5 รับคา ans

3. จบโปรแกรม#include <stdio.h>#include <conio.h>char ans;float f_temp,c_temp;main(){

while (ans != 'y') {

printf("\nF_Temp : ");scanf("%f",&f_temp);c_temp = (f_temp - 32) * 5/9;printf("C_temp : %.2f\t ",c_temp);printf("Are you Exit(y/n)? : ");ans = getche();

}}

ผังงาน

start

Ans != ‘y’

c_temp = (f_temp - 32) * 5/9

c_temp

End

f_temp

True

False

ans

ผลการทํางานของโปรแกรม

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

การเขียนโปรแกรมภาษาซี หนา 96

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 16 การทําซํ้าแบบถาเงื่อนไขเปนจริงจะทําชุดคําสั่ง คําสั่ง While

1. จงเขียนรูปแบบการทําซ้ําดวยคําสั่ง while.......................................................................................................................................... ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. .

2. จงอธิบายการทําซ้ําดวยคําสั่ง while.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... ............

3. จงนิยาม ความจริง ความเท็จ ตามลักษณะของภาษาซีความจริง (true) แทนดวย .......................................................................................................................ความเท็จ (false) แทนดวย .......................................................................................................................

4. คําสั่ง while จะตรวจสอบเงื่อนไข กอน หรือ หลัง เขาไปทําใน block ของ while..................................................................................................................................................................

5. เปนไปไดหรือไม ที่จะเขียนโปรแกรมโดยไมใหเขาไปทําซ้ําในคําสั่ง while เลยสักคร้ัง บอกเหตุผลดวย..................................................................................................................................................................

6. กําหนดให int a=10; แลว จงพิจารณาวา ประโยค while ตอไปน้ี เปนจริง หรือ เท็จ6.1. while (a<10) ผลลัพธเปน ..........................................................................................................6.2. while (a>=10) ผลลัพธเปน ..........................................................................................................6.3. while (a!=10) ผลลัพธเปน ..........................................................................................................6.4. while (a) ผลลัพธเปน ..........................................................................................................

7. จงเขียนประโยค while ดังตอไปน้ี7.1. ในขณะที่ x นอยกวา y เขียนไดดังน้ี ............................................................................................7.2. ในขณะที่ a มากกวา b เขียนไดดังน้ี ............................................................................................7.3. ในขณะที่ ch นอยกวาหรือเทากับ ‘F’ เขียนไดดังน้ี ........................................................................

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

การเขียนโปรแกรมภาษาซี หนา 97

จัดทําโดยครูเนาวรัตน ใจการุณ

8. จงพิจารณาคําสั่ง while ดังตอไปน้ี

8.1. ในคําสั่ง s มีคาเร่ิมตนเทาไร ..........................................................................................................8.2. โปรแกรมจะทําซ้ําในขณะที่ s มีคาเทาใด .....................................................................................8.3. โปรแกรมจะหยุดเมื่อ s มีคาเทาใด ................................................................................................8.4. จะมีการวนรอบทําซ้ําทั้งหมดกี่รอบ ..............................................................................................

9. จงพิจารณาจาก Source code ตอไปน้ี

9.1. ตัวแปร x เปนตัวแปรชนิดใด ..........................................................................................................9.2. โปรแกรมน้ีทําซ้ํา เมื่อตัวแปร x มีคาเปนอยางไร.............................................................................9.3. รอบสุดทายของการทําซ้ํา ตัวแปร x มีคาเทาไร ..... .........................................................................9.4. เมื่อหลุดจากการทําซ้ําแลว ตัวแปร x จะมีคาเทาไร..........................................................................9.5. จงอธิบายประโยค x+=2; .............................................................................................................9.6. โปรแกรมน้ีจะทําซ้ําจํานวนกี่รอบ ....................................................................................................9.7. ถาตัด บรรทัดท่ี 5 x+=2; ออกไปจะเกิดผลอยางไร ....................................................................

.........................................................................................................................................................10. จาก source code ตอไปน้ี

10.1.เงื่อนไข while (r<=10) ไดผลลัพธเปนจริงหรือเท็จ ..........................................................10.2.โปรแกรมน้ีมีการทําซ้ํากี่รอบ ........................................................................................................

int s=3;while (s<=8)

บรรทัดท่ี 1 int x=2; // x เปนชนิดจํานวนเต็มบรรทัดท่ี 2 while (x<=20)บรรทัดท่ี 3 {บรรทัดท่ี 4 printf(“%d\t”,x);บรรทัดท่ี 5 x+=2;บรรทัดท่ี 6 }

r= 20;while (r<=10)

printf(“I love C language.”);

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

การเขียนโปรแกรมภาษาซี หนา 98

จัดทําโดยครูเนาวรัตน ใจการุณ

กิจกรรมที่ 17 การเขียนโปรแกรมวนรอบทําซํ้า

คําชี้แจง จงเขียนโปรแกรมวนรอบทําซ้ําดวยคําสั่ง while หรือ for หรือ do-while ตามที่นักเรียนไดศึกษามา

1. จงเขียนโปรแกรมเพื่อแสดงผลบนจอภาพดังน้ี

ใหบันทึกในแฟมชื่อ loop8-1.c

2. จงเขียนโปรแกรมเพื่อหาผลรวมของเลขคู ต้ังแต 1 ถึง 50 (2+4+6+8+10+...+50) และแสดงผลบนจอภาพดังน้ี

ใหบันทึกในแฟมชื่อ loop8-2.c

This is line 1 HELLO WORLD.This is line 2 HELLO WORLD.This is line 3 HELLO WORLD.This is line 4 HELLO WORLD.This is line 5 HELLO WORLD.This is line 6 HELLO WORLD.This is line 7 HELLO WORLD.This is line 8 HELLO WORLD.This is line 9 HELLO WORLD.This is line 10 HELLO WORLD.

PROGRAM SUMMATION OF EVEN NUMBER FROM 1 – 50บรรทัดวางTHE SUMMATION IS ??????บรรทัดวาง===============================================บรรทัดวางwritten by <ชื่อ นามสกุลของนักเรียน>

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

การเขียนโปรแกรมภาษาซี หนา 99

จัดทําโดยครูเนาวรัตน ใจการุณ

3. จงเขียนโปรแกรมเพื่อเปลี่ยนอุณหภูมิที่เปน เซลเซียส ต้ังแต 0 10 20 30 ... 100 เซนเซียส แลวนํามาเปลี่ยนเปน ฟาเรนไฮด โรเมอร และ เคลวิน แลวแสดงผลในรูปของตาราง ดังน้ี

PROGRAM CONVERT TEMPERATURE===================================================

Celsius Fahrenheit Romer Kelvin============================================

0 32.00 0.00 27310 50.00 8.00 28320 68.00 16.00 29330 86.00 24.00 30340 104.00 32.00 31350 122.00 40.00 32360 140.00 48.00 33370 158.00 56.00 34380 176.00 64.00 35390 194.00 72.00 363

100 212.00 80.00 373============================================

หมายเหตุ สูตรการคํานวณC/5 = (F-32)/9 = R/4 = (K – 273)/5 หรือ K = C+273

ใหบันทึกในแฟมชื่อ loop8-3.c

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

การเขียนโปรแกรมภาษาซี หนา 100

จัดทําโดยครูเนาวรัตน ใจการุณ

4. ถานําเงินสด จํานวน 500000 บาทไปฝากธนาคารเปนระยะเวลา 12 ป โดยธนาคารคิดดอกเบี้ยใหรอยละ6.50 แตตองเสียภาษีใหรัฐบาลในอัตรา รอยละ 15 ของดอกเบี้ยที่ไดในแตละป (คิดดอกเบี้ยทบตน) จงแสดงใหเห็นในรูปตารางวาจะไดดอกเบี้ยเทาไร? เสียภาษีใหรัฐบาลเทาไร? และคงเหลือดอกเบี้ยไดสุทธิเทาไร?

สูตรการคิดดอกเบี้ย = (เงินฝาก * อัตราดอกเบี้ย * ป)/100

ตัวอยางการแสดงผล

หมายเหตุYear หมายถึง ปที่ฝากเงินPrincipal หมายถึง เงินตนที่นําเงินไปฝากธนาคาร นําดอกเบี้ยมาทบกับเงินตนInterest หมายถึง ดอกเบี้ยที่ไดในการฝากเงินแตละป 6.5 %Tax หมายถึง ภาษีดอกเบี้ยเงินฝาก คิด 15 % ของดอกเบี้ยNet Interest หมายถึง ดอกเบี้ยคงเหลือสุทธิ

ใหบันทึกในแฟมชื่อ loop8-4.c

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

การเขียนโปรแกรมภาษาซี หนา 101

จัดทําโดยครูเนาวรัตน ใจการุณ

5. กูเงินจากธนาคารมา 100000 บาท โดยผอนชําระเงินเงินตนเดือนละ 5000 บาท และตองชําระดอกเบี้ยใหธนาคารรอยละ 8.5 ตอป จงเขียนโปรแกรมเพื่อคํานวณวา ในแตละเดือน ไดชําระหน้ีเงินตนเทาไร? และดอกเบี้ยเทาไร ? รวมจายเทาไร? คงเหลือเงินตนคงคาง (Balance) เทาไร?

สูตร การคิดดอกเบี้ยตอเดือน = (เงินตน * อัตราดอกเบี้ย /1200)ตัวอยางการแสดงผลใหแสดงผลในรูปของตารางดังน้ี

Month Payment Interest Total Pay Balance1 5000.00 708.33 5708.33 95000.002 5000.00 672.92 5672.92 90000.003 5000.00 637.50 5637.50 85000.004 5000.00 602.08 5602.08 80000.005 5000.00 566.67 5566.67 75000.006 5000.00 531.25 5531.25 70000.007 5000.00 495.83 5495.83 65000.008 5000.00 460.42 5460.42 60000.009 5000.00 425.00 5425.00 55000.00

10 5000.00 389.58 5389.58 50000.0011 5000.00 354.17 5354.17 45000.0012 5000.00 318.75 5318.75 40000.0013 5000.00 283.33 5283.33 35000.0014 5000.00 247.92 5247.92 30000.0015 5000.00 212.50 5212.50 25000.0016 5000.00 177.08 5177.08 20000.0017 5000.00 141.67 5141.67 15000.0018 5000.00 106.25 5106.25 10000.0019 5000.00 70.83 5070.83 5000.0020 5000.00 35.42 5035.42 0.00

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

การเขียนโปรแกรมภาษาซี หนา 102

จัดทําโดยครูเนาวรัตน ใจการุณ

หมายเหตุPayment หมายถึง เงินที่ตองชําระเปนเงินตน = 5000 บาทInterest หมายถึง ดอกเบี้ยที่ตองจายตอเดือน 8.5 %Total pay หมายถึง รวมเงินที่ตองจาย 5000+ดอกเบี้ยBalance t หมายถึงยอดเงินคงเหลือสุทธิ

ใหบันทึกในแฟมชื่อ loop8-5.c

6. จงเขียนโปรแกรมวนรอบทําซ้ําเพื่อคํานวณหาปริมาตรขอปรามิด (Pyramid) ฐานสี่เหลี่ยม โดยใหรับขอมูลเขามาคํานวณดังน้ี

คํานวณดวยสูตร ปริมาตร ปรามิด = 1/3 * พ.ท.ฐาน * สูง แลวแสดงผลดังน้ี

ใหโปรแกรมทําซ้ําตามเงื่อนไขดังน้ีทําซ้ําโปรแกรมน้ีต้ังแตตนเมื่อถามผูใชวา

Do you want to continue? (Y/N)ถาตอบ Y ใหทําซ้ํา แตถาตอบ N ใหจบโปรแกรมแตถาผูใชตอบตัวอักษรอ่ืน ๆ ที่ไมใช Y หรือ N ใหถามคําถามเดิมอีกคือ

Do you want to continue? (Y/N)ถามจนกวาผูใชจะตอบ Y หรือ N เทาน้ัน

ใหบันทึกในแฟมชื่อ loop8-6.c

PYRAMID CALCULATOREnter base 1 = ????.??Enter base 2 = ????.??Enter high = ????.??

PROGRAM PYRAMIDBase 1 = ????.??Base 2 = ????.??High = ????.??Volume = ????.??