• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
การเขียนโปรแกรม Dev c++
 

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

on

  • 53,593 views

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

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

Statistics

Views

Total Views
53,593
Views on SlideShare
49,186
Embed Views
4,407

Actions

Likes
17
Downloads
985
Comments
11

8 Embeds 4,407

http://krucomnao.wordpress.com 4376
http://www.facebook.com 22
https://www.facebook.com 4
http://182.93.221.41 1
http://webcache.googleusercontent.com 1
https://www.google.co.th 1
http://www.linkedin.com 1
https://krucomnao.wordpress.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

110 of 11 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…

110 of 11 previous next

Post Comment
Edit your comment

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

    • การเขียนโปรแกรมภาษาซี หนา 1 1. ความรูเ บื้องตนเกี่ยวกับภาษาซี ภาษาซีเปนภาษาระดับสูง( High-Level-Language) และภาษาโปรแกรมที่โปรแกรมเมอรนิยมใชกันมาก เนื่องจากเปนภาษาที่มีความเร็วในการทํางานสูงใกลเคียงกับภาษาเครื่อง มีโครงสรางที่ชัดเจนเขาใจงาย สามารถเขียนโปรแกรมเพื่อติดตอกับฮารดแวรของเครื่องคอมพิวเตอรไดอยางดี ภาษาซีเกิดขึ้นในป ค . ศ .1972 ผูคิดคนคือนายเดนนีส ริทชี (Dennis Ritchi) การศึกษาภาษาซีถือวาเปนพื้นฐานในการศึกษาภาษาใหม ๆ ไดขั้นตอนการพัฒนาโปรแกรมภาษาซี ขั้นตอนที่ 1 เขียนโปรแกรม (source code) ใช editor เขียนโปรแกรมภาษาซีและทําการบันทึกไฟลตนฉบับใหมีนามสกุลเปน .Cpp หรือ.C จากนั้นใหคอมไพลโปรแกรมก็จะไดไฟลออบเจ็กตโคดที่มีนามสกุลเปน .OBJ เมื่อทําการเชื่อมโยงไฟลเขากับไลบรารีคําสั่งดวย Link ก็จะไดไฟลที่มีนามสกุลเปน .EXE ที่พรอมทํางานไดบนเครื่องคอมพิวเตอร editor คือ โปรแกรมที่ใชสําหรับการเขียนโปรแกรม โดยตัวอยางของ editor ที่นิยมนํามาใชในการเขียนโปรแกรมไดแก Notepad, Edit ของ Dos ,Text Pad และ Edit Plus เปนตน ผูเขียนโปรแกรมสามารถเลือกใชโปรแกรมใดในการเรียนโปรแกรมก็ได แลวแตความถนัดของแตละบุคคล ขั้นตอนที่ 2 คอมไพลโปรแกรม (compile) นํา source code จากขั้นตอนที่ 1 มาทําการคอมไพล เพื่อแปลจากภาษาซีที่มนุษยเขาใจไปเปนภาษาเครื่องที่คอมพิวเตอรเขาใจได ในขั้นตอนนี้คอมไพเลอรจะทําการตรวจสอบ source code วาเกิดขอผิดพลาดหรือไม • หากเกิดขอผิดพลาด จะแจงใหผูเขียนโปรแกรมทราบ ผูเขียนโปรแกรมจะตองกลับไปแกไขโปรแกรม และทําการคอมไพลโปรแกรมใหมอีกครั้ง • หากไมพบขอผิดพลาด คอมไพเลอรจะแปลไฟล source code จากภาษาซีไปเปนภาษาเครื่อง (ไฟลนามสกุล .obj) เชนถาไฟล source code ชื่อ work.c ก็จะถูกแปลไปเปนไฟล work.obj ซึ่งเก็บภาษาเครื่องไวเปนตน compile เปนตัวแปลภาษารูปแบบหนึ่ง มีหนาที่หลักคือการแปลภาษาโปรแกรมที่มนุษยเขียนขึ้นไปเปนภาษาเครื่อง โดยคอมไพเลอรของภาษาซี คือ C Compiler ซึ่งหลักการที่คอมไพเลอรใชเรียกวา คอมไพล (compile) โดยจะทําการอานโปรแกรมภาษาซีทั้งหมดตั้งแตตนจนจบ แลวทําการ แปลผลทีเดียว จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 2 นอกจากคอมไพเลอรแลว ยังมีตัวแปลภาษาอีกรูปแบบหนึ่งที่เรียกวา อินเตอรพรีเตอร การอานและ แปลโปรแกรมทีละบรรทัด เมื่อแปลผลบรรทัดหนึ่งเสร็จก็จะทํางานตามคําสั่งในบรรทัดนั้น แลวจึงทําการแปลผลตามคําสั่งในบรรทัดถัดไป หลักการที่อินเตอรพรีเตอรใชเรียกวา อินเตอรเพรต(interpret ) ขอดีและขอเสียของตัวแปลภาษาทั้งสองแบบมีดังนี้ ขอดี ขอเสีย คอมไพเลอร • ทํางานไดเร็ว เนื่องจากทําการแปลผล • เมื่อเกิดขอผิดพลาด ทีเดียว แลวจึงทํางานตามคําสั่งของ ขึ้นกับโปรแกรมจะ โปรแกรมในภายหลัง ตรวจสอบหาขอผิดพลาด • เมื่อทําการแปลผลแลว ในครั้งตอไปไม ไดยาก เพราะทําการแปล จําเปนตองทําการแปลผลใหมอีก เนื่องจาก ผลทีเดียวทั้งโปรแกรม ภาษาเครื่องที่แปลไดจะถูกเก็บไวที่ หนวยความจํา สามารถเรียกใชงานไดทันที อินเตอรพรีเตอร • หาขอผิดพลาดของโปรแกรมไดงาย • ชา เนื่องจากที่ทํางานทีละ เนื่องจากทําการแปลผลทีละบรรทัด บรรทัด • เนื่องจากทํางานทีละบรรทัดดังนั้นจึงสั่ง ใหโปรแกรมทํางานตามคําสั่งเฉพาะจุดที่ ตองการได • ไมเสียเวลารอการแปลโปรแกรมเปน เวลานานขั้นตอนที่ 3 เชื่อมโยงโปรแกรม (link) การเขียนโปรแกรมภาษาซีนั้นผูเขียนโปรแกรมไมจําเปนตองเขียนคําสั่งตาง ๆ ขึ้นใชงานเองเนื่องจากภาษาซีมีฟงกชั่นมาตรฐานใหผูเขียนโปรแกรมสามารถเรียกใชงานได เชน การเขียนโปรแกรมแสดงขอความ “Lampangkanlayanee” ออกทางหนาจอ ผูเขียนโปรแกรมสามารถเรียกใชฟงกชั่นprintf() ซึ่งเปนฟงกชั่นมาตรฐานของภาษาซีมาใชงานได โดยสวนการประกาศ (declaration) ของฟงกชั่นมาตรฐานตาง ๆ จะถูกจัดเก็บอยูในเฮดเดอรไฟลแตละตัว แตกตางกันไปตามลักษณะการใชงาน ดวยเหตุนี้ภาษาเครื่องที่ไดจากขั้นตอนที่ 2 จึงยังไมสามารถนําไปใชงานได แตตองนํามาเชื่อมโยงเขากับ library กอน ซึ่งผลจากการเชื่อมโยงจะทําใหได executable program ( ไฟลนามสกุล.exe เชน work.exe) ที่สามารถนําไปใชงานได จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 3ขั้นตอนที่ 4 ประมวลผล (run) เมื่อนํา executable program จากขั้นตอนที่ 3 มาประมวลผลก็จะไดผลลัพธ (output) ของโปรแกรมออกมา ( ถามี ) จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 4 กิจกรรมที่ 1 ขั้นตอนการพัฒนาโปรแกรมภาษาซีคําชี้แจง จงเติมคําตอบใหถูกตองและสมบูรณ1. จงพิจารณาขอความตอไปนี้ จัดอยูในขั้นตอนการทํางานอะไร # include <stdio.h> # include <conio.h> main() { printf(“Hello! This is my first program.n”); printf(“I love C programming.n”); getch(); }....................................................................................................................................................................................................................................................................................................................................2. ภาพตอไปนี้ จัดอยูในขั้นตอนการทํางานใด................................................................................................................................................................................................................................................................................................................................3. การทํางานในขั้นตอนใดเมื่อเสร็จสิ้นการทํางานจะไดไฟลที่มีนามสกุล .OBJ..............................................................................................................................................................................................................................................................................................................................4. การทํางานในขั้นตอนใดเมื่อเสร็จสิ้นการทํางานจะไดไฟลที่มีนามสกุล .cpp..............................................................................................................................................................................................................................................................................................................................5. การทํางานในขั้นตอนใดเมื่อเสร็จสิ้นการทํางานจะไดไฟลที่มีนามสกุล .EXE.............................................................................................................................................................................................................................................................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 5 2. การใชโปรแกรม Bloodshed Dev-C++การเรียกโปรแกรมภาษาซี ชุดพัฒนาหรือเครื่องมือที่ชวยในการพัฒนาโปรแกรม ภาษาอังกฤษเรียกวา IDE (IntregalDevenlopment Environment) เปนโปรแกรมที่ออกแบบมาเพื่อชวยใหผูที่ทําการเขียนโปรแกรมใชในการสรางโปรแกรม โดยจะมี อีดิเตอร (Editor) สําหรับเขียนโคดของโปรแกรมและมีตัวแปลภาษามาใหพรอมปจจุบันมีการออกชุดพัฒนามาหลายรุน และเปลี่ยนแปลงรวดเร็วมาก เชน Turbo C++ , Borland C++ ,Microsoft C/C++ , Microsoft Visual C++ , Microsoft Visual C# , Microsoft Visual C++ .NET ซึ่งชุดพัฒนาแตละตัวมีวิธีการนําไปใชงานที่แตกตางกัน เพราะมันเปนผลิตภัณฑที่พัฒนามาจากบริษัทตางกันแตอยางไรก็ตามการเขียนโปรแกรมภาษาซีไมวาจะเปน IDE ใด ก็มีหลักการและวิธีการในการเขียนที่คลายคลึงกัน จะตางกันบางตรงรายละเอียดบางอยางที่เพิ่มขึ้น หรือพัฒนาใหงายในการเขียนโปรแกรม ที่จะกลาวถึงตอไปนี้ เปน IDE ของ Bloodshed Dev-C++ ซึ่งเปนชุดพัฒนาขึ้นมาเพื่อใชเปนฟรีแวรและทํางานภายใตระบบปฏิบัติการ Windows ใชไดกับ Windows ทุกรุน ซึ่งมีวิธีการเรียกโปรแกรมขึ้นมาใชงานไดดังนี้ 1. คลิกที่ Start 2. เลื่อนเมาสไปที่ Bloodshed Dev-C++ 3. คลิกที่ Dev-C++ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 6หนาตาของโปรแกรม Bloodshed Dev-C++ เมื่อเรียกโปรแกรม Bloodshed Dev-C++ ขึ้นมาใชงานแลวจะมาหนาตาดังรูปซึ่งโปรแกรมจะมีสวนประกอบดังนี้1. Titlebar คือ แถบที่อยูบนสุดของโปรแกรม มีสีน้ําเงิน และจะมีชื่อของชุดพัฒนาโปรแกรมภาษาซีคือ Dev-C++2. Menubar ประกอบดวยเมนูตาง ๆ 11 รายการคือFile Edit Search View Project Execute Debug Tools CVS Window Help3. Tool bars เปนสวนของเครื่องมือ ที่ชวยอํานวยความสะดวกในการเขียนและพัฒนาโปรแกรม4. Project/Class Browser เปนสวนที่อยูทางดานซายของโปรแกรม ใชเพื่อแสดง Project หรือ Classตางๆ ของโปรแกรม5. Editor สวนที่อยูทางดานขวา ใชเพื่อเขียนโคดภาษาซี6. Statusbar สวนที่อยูลางสุด ใชเพื่อบอกสถานะตาง ๆ ในขณะที่กําลังพัฒนาโปรแกรม เชน จํานวนบรรทัดมั้งหมด หรือสถานะการพิมพแทรก/พิมพทับ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 7 เมนูของโปรแกรม Bloodshed Dev-C++เมนู File มีเมนูยอยที่ควรรูดังนี้New เพื่อสรางไฟลใหมOpen Project or File เพื่อเปดไฟลหรือโปรเจ็กซที่ไดทํางาน และบันทึกไวแลวSave เพื่อบันทึกไฟลSave As เพื่อบันทึกไฟลเปนชื่อใหม หรือเพื่อบันทึกลงในโฟลเดอรอื่นSave All เพื่อบันทึกไฟลหรือโปรเจ็กซทั้งหมด ที่เปดทํางานอยูClose เพื่อปดไฟลที่กําลัง Active อยูClose All เพื่อปดไฟลหรือ โปรเจ็กซทั้งหมด ที่เปดอยูExit เพื่อปดโปรแกรม Bloodshed Dev-C++ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 8เมนู Edit มีเมนูยอยที่ควรรูดังนี้Undo เลิกทําหรือยกเลิกการทํางานRedu ใหทําซ้ํางานที่เพิ่งทําผานไปCut ตัดขอความที่ทําแถบสีนําไปไวใน คลิปบอรดCopy คัดลอกขอความที่ทําแถบสีนําไปไวใน คลิปบอรดPaste ใหวาง ปะ หรือ แปะ ขอความที่ได Cut หรือ Copy ไวแลว มาวางลงในตําแหนงของ เคอรเซอรInsert ทําการแทรก 1. วันที่ (Date/Time) ลงใน Editor 2. Comment header สวนที่เปน หมายเหตุในการพัฒนาโปรแกรมลงบนสวนหัวของ EditorSelect All เลือกโคด หรือขอความทั้งหมด ที่อยูใน Editor จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 9เมนู Search มีเมนูยอยที่ควรรูดังนี้Find คนหาคํา หรือขอความใน EditorSearch Again ใหคนซ้ํา หรือคนหาตอไปอีกReplace ใหแทนที่คําที่คนหา ดวยคําใหม จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 10เมนู View มีเมนูยอยที่ควรรูดังนี้Project/Class Browser เพื่อแสดงหรือไมแสดง Project/Class BrowserStatusbar เพื่อแสดงหรือไมแสดง StatusbarToolbars เพื่อแสดงหรือไมแสดง Toolbars ตาง ๆ ซึ่งประกอบดวย Main Toolbar Edit Toolbar Search Toolbar Compile and run Toolbar Project Toolbar Options Toolbar Special Toolbar Class Toolbar จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 11เมนู Project จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 12เมนู Execute มีเมนูยอยที่ควรรูดังนี้Compile (Ctrl+F9) สั่งใหทําการ Compile ซอรสโคด เมื่อ Compile แลวจะไดไฟลใหมที่มีสวนขยายเปน .exeRun (Ctrl+F10) สั่งใหโปรแกรมทํางานCompile & Run (F9) ใหทําการ Compile และ Run โปรแกรมRebuild All (Ctrl+F11) ใหสรางไฟล .exe ใหม แทนที่ไฟลเดิม จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 13เมนู Debug จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 14เมนู Tools มีเมนูยอยที่ควรรูดังนี้Editor Options เปนการตั้งคาสภาพแวดลอมใหกับ Editor เชน ใหมีหมายเลขบรรทัดเปนตน จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 15เมนู CVS จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 16เมนู Windows มีเมนูยอยที่ควรรูดังนี้Close All ปดวินโดวส ของ Editor ทั้งหมดFull Screen Mode ใหวินโดวสแสดงแบบเต็มจอ ถาตองการยกเลิกแบบ Full Screen ให click ที่เพื่อปดวินโดวสNext ใหแสดงวินโดวสของ Editor ถัดไปPrevious ใหแสดงวินโดวสของ Editor กอนหนา จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 17เมนู Help สวนใหญเปนเมนูเกี่ยวกับการขอความชวยเหลีอการสรางแฟมโปรแกรม การสรางแฟมโปรแกรม ทําไดโดยเลือกเมนู File -> Source File หรือกด Ctrl + Nการปอนโปรแกรมภาษาซี การปอนโปรแกรมในหนาตาง Editor สามารถทําไดเชนเดียวกับการปอนขอความในโปรแกรมจัดพิมพเอกสารทั่วไป จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 18 แบบฝกกิจกรรมที่ 11. ใหเรียกเขาสูโปรแกรม Dev-C++ และปอนโปรแกรมตอไปนี้ #include <stdio.h> ผลการรัน #include <conio.h> ……………………………………………. main() ……………………………………………. ……………………………………………. { ……………………………………………. printf("Hello world"); ……………………………………………. getch(); ……………………………………………. } …………………………………………….การบันทึกโปรแกรม (Save) ในการบันทึกโปรแกรมใหม ทําไดโดยเลือกเมนู File -> Save หรือกด Ctrl + S จะไดหนาตางดังรูป 1 3 2 1. เปลี่ยนไดรฟ เปลี่ยนโฟลเดอร 2. พิมพชื่อไฟล 3. คลิกปุม Save จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 19การแปลโปรแกรม (Compile) การเรียกใชคอมไพลเลอร ทําไดโดยเลือกเมนู Execute -> Compile หรือกด Ctrl + F9 รูป แสดงหนาตาง Compiling ที่ทํางานเสร็จสมบูรณ ในกรณีที่พิมพโปรแกรมผิดจะแสดงรายการขอผิดพลาดที่ตรวจพบ ดังรูป สวนที่บอกวาผิดอะไรบาง รูป แสดงโปรแกรมที่ผิดพลาด จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 20การสั่งใหโปรแกรมทํางาน (Run) เมื่อโปรแกรมไดถูกแปลเปนโปรแกรมภาษาเครื่องเรียบรอยแลว ผูใชสามารถสั่งใหโปรแกรมที่แปลแลวกระทําการ โดยเลือกคําสั่ง Execute -> Run หรือกด Ctrl + F10การเปดแฟมโปรแกรม ผูใชสามารถเปดแฟมโปรแกรมขึ้นมาแสดงบนหนาตางโปรแกรมเพื่อแกไข แปลหรือสั่งใหกระทําการ โดยเลือกคําสั่ง File -> Open Projector or File จะไดหนาตางดังรูป 1 3 2 1. เปลี่ยนไดรฟ เปลี่ยนโฟลเดอร 2. พิมพชื่อไฟล หรือคลิกเลือกชื่อไฟล 3. คลิกปุม Open จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 21 กิจกรรมที่ 2 การใชโปรแกรม Bloodshed Dev-C++คําชี้แจง เขียนตอบลงในชองที่เวนไว1. จงบอกวิธีการเรียกโปรแกรม Bloodshed Dev-C++ ......................................................................... ..........................................................................................................................................................2. จงบอกชื่อสวนตาง ๆ ของโปรแกรม Bloodshed Dev-C++ 2.1 หมายเลข 1 คือ .......................................................................................................................... 2.2 หมายเลข 2 คือ ......................................................................................................................... 2.3 หมายเลข 3 คือ .......................................................................................................................... 2.4 หมายเลข 4 คือ .......................................................................................................................... 2.5 หมายเลข 5 คือ .......................................................................................................................... 2.6 หมายเลข 6 คือ ..........................................................................................................................3. การเขียนโคดภาษาซีตองเขียนลงในสวนใด .......................................................................................4. การสรางไฟลใหม(Source file) ตองทําอยางไร .................................................................................5. จงบอกขั้นตอนการบันทึกโปรแกรม..................................................................................................6. จงบอกขั้นตอนการคอมไพลโปรแกรม ..............................................................................................7. จงบอกขั้นตอนการสั่งใหโปรแกรมทํางาน.........................................................................................8. จงบอกขั้นตอนการเปดแฟมโปรแกรม................................................................................................ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 22 3. โครงสรางของภาษาซีโครงสรางของโปรแกรมภาษาซีแบงออกเปน 2 สวน1. สวนหัวของโปรแกรม (Head) สวนหัวของโปรแกรมนี้เรียกวา Preprocessing Directive ใชระบุเพื่อบอกใหคอมไพเลอรกระทําการใด ๆ กอนการแปลผลโปรแกรมในที่นี่คําสั่ง #include <stdio.h> ใชบอกกับคอมไพเลอรใหนําเฮดเดอรไฟลที่ระบุคือ stdio.h เขารวมในการแปลโปรแกรมดวย โดยการกําหนด preprocessingdirectives นี้จะตองขึ้นตนดวยเครื่องหมาย # เสมอ คําสั่งที่ใชระบุใหคอมไพเลอรนําเฮดเดอรไฟลเขารวมในการแปลโปรแกรม สามารถเขียนได2 รูปแบบ คือ #include < ชื่อเฮดเดอรไฟล > คอมไพเลอรจะทําการคนหาเฮดเดอรไฟลที่ระบุจากไดเรกทอรีที่ใชสําหรับเก็บเฮดเดอรไฟลโดยเฉพาะ ( ปกติคือไดเรกทอรีชื่อ include) #include “ ชื่อเฮดเดอรไฟล ” คอมไพเลอรจะทําการคนหาเฮดเดอรไฟที่ระบุ จากไดเร็คทอรีเดียวกันกับไฟล source code นั้น แตถาไมพบก็จะไปคนหาไดเร็คทอรีที่ใชเก็บ เฮดเดอรไฟลโดยเฉพาะ2. สวนของฟงกชั่นหลัก (Main Function) ฟงกชั่นหลักของภาษาซี คือ ฟงกชั่น main( ) ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะตองมีฟงกชั่นนี้อยูในโปรแกรมเสมอ จะเห็นไดจากชื่อฟงกชั่นคือ main แปลวา “ หลัก ” ดังนั้น การเขียนโปรแกรมภาษาซีจึงขาดฟงกชั่นนี้ไปไมได โดยขอบเขตของฟงกชั่นจะถูกกําหนดดวยเครื่องหมาย { และ }กลาวคือ การทํางานของฟงกชั่นจะเริ่มตนที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟงกชัน main() จะตองเขียนในรูปของ int main() ซึ่งเปนรูปแบบตามมาตรฐานของ Ansistandard C ซึ่งหมายความวาฟงกชัน main() จะไมมีการรับคาใด ๆ เขามาประมวลผล แตจะสงคา int จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 23กลับไป ( int หมายถึง integer ซึ่งเปนเลขจํานวนเต็มที่ไมมีทศนิยม) ดังจะเห็นวา บรรทัดรองสุดทายกอนจบ จะเขียนวา return 0; การสงคากลับใหฟงกชัน main() ถา return 0; หมายความวา โปรแกรมทํางานเสร็จสิ้นสมบูรณไมมีขอผิดพลาดใด ๆ เกิดขึ้น แตถา return 1; หรือ return <คาอื่น ๆ ที่ไมใช 0>; หมายความวาโปรแกรมจบไมสมบูรณ มีการขามการทํางานบางขั้นตอนเพื่อใหโปรแกรมสิ้นสุดลงพรีโพรเซสเซอร ไดเร็กทีฟ (Preprocessor directive) สวนนี้ทุกโปรแกรมตองมี จะใชสําหรับเรียกคําสั่งหรือฟงกชันที่โปรแกรมตองการในการทํางานและกําหนดคาตาง ๆ โดยคอมไพเลอรจะกระทําตามคําสั่ง กอนที่จะคอมไพลโปรแกรม ซึ่งจะตองเริ่มตนดวยเครื่องหมาย ไดเร็กทีฟ (#) และตามดวยชื่อโปรแกรมหรือชื่อตัวแปรที่ตองกําหนดคาดังตัวอยางตามตาราง Directive การใชงาน #include Include text from a file #define Define a macro #undef Undefine a macro #if Test if a compile-time condition holde #ifdef Test if a simple is defined #ifndef Test if a simple is not defined #else Indicate alternatives if a test fails #elif Combination of #if and #else #endif End a preprocessor condition #line Give a line number for compiler messages #error Terminate processing early #pragma Implementation dependent directiveสําหรับ directive ที่ใชบอย ๆ ไดแก#include เปนการแจงใหคอมไพเลอรอานไฟลอื่นเขามาคอมไพลรวมดวย รูปแบบการใชจะทําโดยเขียน#include แลวตามดวยชื่อไฟล เชน#include <stdio.h> หมายความวา อานไฟล stdio.h เขามาดวย#include "mypro.h" หมายความวา อานไฟล mypro.h จาก folder หรือ directory ที่กําลังทํางานเขามาดวย จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 24 การกําหนดชื่อไฟลตามหลัง #include นั้นจะใชเครื่องหมาย < > ครอมชื่อไฟลก็ได ซึ่งจะเปนการอานไฟลจากไดเร็กทอรี หรือโฟลเดอรที่กําหนดไวกอนแลว โดยปกติจะเปนโฟลเดอร include แตถาใชเครื่องหมาย " " เปนการอานไฟลจาก folder หรือ directory ที่กําลังติดตออยู และไฟลที่จะinclude เขามานี้จะตองไมมีฟงกชัน main() โดยมากแลวจะประกอบดวยโปรแกรมยอย คาคงที่ หรือขอความตางๆ#define เปนการกําหนดคานิพจนตาง ๆ ใหกับชื่อของตัวคงที่ โดยมีรูปแบบดังนี้#define NAME VALUE เชน#define SCHOOL thungsoung //กําหนดชื่อ SCHOOL ใหเก็บคําวา thungsoung เอาไว#define PROVINCE nakornsitammarat //กําหนดชื่อ PROVINCE ใหเก็บคําวา nakornsitammarat เอาไวStatement หรือคําสั่ง คําสั่ง (Statement) หมายถึงประโยคที่เขียนขึ้นเพื่อใหโปรแกรมทํางาน ประกอดวยตัวแปรหรือนิพจนตาง ๆ เพื่อใชประกาศตัวแปร กําหนดคาเริ่มตน กําหนดเงื่อนไข และใชในคําสั่งควบคุมนิพจนหรือตัวแปรที่เขียนขึ้นเปนประโยคคําสั่งในภาษาซีจะใชเครื่องหมาย ; (Semicolon) ปดทายคําสั่ง คําสั่งในภาษาซีสามารถแยกใหเห็นชัดเจนได 5 กลุม คือ 1) คําสั่งสําหรับอธิบาย (Comment Statements) 2) คําสั่งกําหนดชนิดตัวแปร (Declaration Statements) 3) คําสั่งกําหนดคา (Assignment Statements) 4) คําสั่งควบคุม (Control Statements) 5) คําสั่งที่อยูในรูปฟงกชัน เชน คําสั่งรับขอมูล คําสั่งแสดงผลขอมูล เปนตน ในโปรแกรมภาษาซีโปรแกรมหนึ่งๆอาจประกอบดวยคําสั่งทั้ง 5 กลุมหรือมากกวากันก็ได เพื่อความเขาใจคําสั่งแตละกลุมในหัวขอนี้ จะขออธิบายเฉพาะคําสั่งสําหรับอธิบาย คําสั่งกําหนดชนิดตัวแปรและ คําสั่งกําหนดคาใหกับตัวแปรเทานั้น1) คําสั่งสําหรับอธิบาย (Comment Statements) คําสั่งสําหรับอธิบายหรือคอมเมนต (comment) ในภาษาซี คือสวนที่เปนหมายเหตุของโปรแกรม มีไวเพื่อใหผูเขียนโปรแกรมใสขอความอธิบายกํากับลงไปใน source code ซึ่งคอมไพเลอรจะขามการแปลผลในสวนที่เปนคอมเมนตนี้ คอมเมนตในภาษาซีมี 2 แบบคือ • คอมเมนตแบบบรรทัดเดียว ใชเครื่องหมาย // • คอมเมนตแบบหลายบรรทัด ใชเครื่องหมาย /* และ */ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 25 ตัวอยาง การคอมเมนตในภาษาซี //Comment only one line คอมเมนตแบบบรรทัดเดียว #include <stdio.h> ไมแปลผลในสวนนี้ #include <conio.h> main() { /*comment คอมเมนตแบบหลายบรรทัด many ไมแปลผลในสวนนี้ line*/ }2) คําสั่งกําหนดชนิดตัวแปร (Declaration Statements) คําสั่งกําหนดชนิดตัวแปรนี้มักจะอยูในสวนตนของโปรแกรม ตัวแปรทุกตัวแปรกอนนําไปใชตองประกาศตัวแปร พรอมชนิดขอมูลของตัวแปรนั้น และอาจกําหนดคาเริ่มตนใหกับตัวแปรนั้นๆดวยดังรูปแบบตอไปนี้รูปแบบ <Type> <var1> [=const1][,<var2>[=conts2]]. . . ; Type หมายถึง ชนิดตัวแปร เชน int float char long double เปนตน var1,var2 หมายถึง ชื่อตัวแปร ซึ่งตองตั้งตามกฏการตั้งชื่อ const1,const2 หมายถึง คาคงที่ ที่กําหนดคาใหกับตัวแปรตัวอยางint value , count , x ;char more ;หมายถึง มีการประกาศตัวแปรจํานวน 4 ตัว โดยใหตัวแปร 3 ตัวแรกคือ value count และ x เปนชนิดจํานวนเต็ม สวนประกาศตัวแปร more ใหเปนตัวแปรชนิดตัวอักขระ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 263) คําสั่งกําหนดคา (Assignment Statements) คําสั่งกําหนดคาในภาษาซีจะใชตัวดําเนินการ " = " เพื่อกําหนดคาใหกับตัวแปร คําสั่งกําหนดคานี้อาจใชในการกําหนดคาเริ่มตนใหกับตัวแปร หรือใชในการคํานวณนิพจนดานขวาของตัวดําเนินการ " = " แลวนําคาที่ไดไปกําหนดคาใหกับตัวแปรดานซายของตัวดําเนินการ "= " หรืออาจใชในการคัดลอกคาของตัวแปรหนึ่งไปใหกับอีกตัวแปรหนึ่ง โดยรูปแบบคําสั่งดังนี้รูปแบบ <var1> [ = <var2>]. . . = <expression> ; var1,var2 หมายถึง ชื่อตัวแปรที่จะถูกกําหนดคา expression หมายถึง นิพจน ซึ่งอาจเปนตัวแปร คาคงที่ หรือเปนการดําเนินการระหวาง ตัวแปร หรือ คาคงที่ = หมายถึง ตัวดําเนินการกําหนดคา โดยใหนําคานิพจนดวยขวาของตัว ดําเนินการ " = " ไปกําหนดคาใหกับตัวแปร ที่อยูดานซาย ของตัวดํา เนินการ " = " หมายเหตุ คําสั่งทุกคําสั่งจะตองปดดวเครื่องหมาย ; (อานวา Semicolon)ตัวอยาง value = 0; count = 1; x = 100; more = y;หมายถึง ใหตัวแปร value มีคา = 0 count มีคา = 1 x มีคา = 100 และ more มีคา = y4) คําสั่งควบคุม (Control Statements) คําสั่งควบคุมเปนคําสั่งที่เขียนขึ้นมาเพื่อควบคุมการทํางานของโปรแกรม ไดแกคําสั่งIf, switch, while, for ซึ่งจะอธิบายในรายละเอียด ในเรื่องของคําสั่งโครงสรางหรือคําสั่งควบคุม5) คําสั่งที่อยูในรูปฟงกชัน (Control Statements) เปนการนําฟงกชันมาตรฐานของภาษาซีมีใชในการเขียนโปรแกรมเชนคําสั่ง printf , scanf โดยจะกลาวถึงเฉพาะคําสั่งประเภทนี้ในหัวขอ การรับและการแสดงผลขอมูล จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 27 กิจกรรม 3 โครงสรางภาษาซีตอนที่ 1 จงเติมคําถามตอไปนี้ ใหถูกตองสมบูรณ1. โครงสรางของภาษาซีในสวนของคําสั่งพรีโพรเซสเซอร ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................2. ในภาษาซี ฟงกชันหลักที่ทุกโปรแกรมตองมี คือฟงกชันอะไร...............................................................................................................................................................3. การเขียนคําสั่งพรีโพรเซสเซอร ตองเริ่มตนดวยเครื่องหมายอะไร...............................................................................................................................................................4. คําสั่งพรีโพรเซสเซอร #include ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................5. คําสั่งพรีโพรเซสเซอร #define ทําหนาที่อะไร..............................................................................................................................................................................................................................................................................................................................6. ประโยคคําสั่งในภาษาซี ตองจบดวยเครื่องหมายอะไร...............................................................................................................................................................7. ประโยชนของการเขียนหมายเหตุไวในโปรแกรม คืออะไร..............................................................................................................................................................................................................................................................................................................................8. การเขียนหมายเหตุในภาษาซี มีหลักการเขียนอยางไร..............................................................................................................................................................................................................................................................................................................................9. รูปแบบการเขียนคําสั่ง #include<ชื่อไฟล> มีความหมายอยางไร..............................................................................................................................................................................................................................................................................................................................10. รูปแบบการเขียนคําสั่ง #include “ชื่อไฟล” มีความหมายอยางไร.............................................................................................................................................................................................................................................................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 28 4. กฏการตั้งชื่อ (Identifier) ชื่อ หรือ Identifier คือการประกาศ หรือการตั้งชื่อใหกับตัวแปร คาคงที่ ฟงกชัน หรือ class ซึ่งจะอยูภายในสวนตาง ๆของโปรแกรม สําหรับในภาษาซีมีหลักเกณฑในการตั้งชื่อดังนี้ 1. ตองขึ้นตนดวยตัวอักษรในภาษาอังกฤษ หรือเครื่องหมาย _ (Underscore) 2. ตองไมเปนชื่อเดียวกับคําสงวน (Reserve word) หรือคํามาตรฐานที่คอมไพเลอรรูจัก 3. ชื่ออาจตามดวยตัวเลขได แตหามขึ้นตนดวยตัวเลข 4. หามใชเครื่องหมายพิเศษตาง ๆ ในการตั้งชื่อ เชน @ ! # $ ^ & * + - / 5. หามเวนชองวาง 6. ชื่อในภาษาซี มีความแตกตางกันระหวางตัวพิมพเล็กและตัวพิมพใหญ เชน Name จะไมเหมือนกับ nameคําสงวน (Reserve word) คําสงวน หมายถึง ชื่อหรือคําที่คอมไพเลอร สงวนไวเพื่อเปนคําเฉพาะในภาษาซี หามนําคําสงวนนี้ไปใชในการตั้งชื่อ ประกอบดวยคําตาง ๆ ดังตอไปนี้ asm default for pascal switch _ds auto do goto register typedef _es break double huge return union _ss case else if short unsigned cdecl enum int signed void char extern interrupt sizeof volatile const far long static while continue float near struct _csตัวอยางการตั้งชื่อ ชื่อที่ถูก ชื่อที่ผิด เหตุที่ผิด StudentName Student Name มีเครื่องหมายวรรค Part_Number Part-Number มีเครื่องหมาย – firstNAME 1stName เริ่มดวยตัวเลข NumberOfPage #Ofpage มีเครื่องหมาย # จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 29ขอสังเกตเกี่ยวกับการตั้งชื่อ1. ควรตั้งชื่อใหมีความหมายและเขาใจไดงาย ดังตัวอยางตอไปนี้ Length มีความหมายและเขาใจไดงายกวา L2. ควรตั้งใหเห็นสวนประกอบตาง ๆ ไดงาย ดังตัวอยางตอไปนี้ StudentName เห็นสวนประกอบตาง ๆ ไดงายกวา studentname Part_Number เห็นสวนประกอบตาง ๆ ไดงายกวา PARTNUMBER3. เนื่องจากชื่อสวนมากที่มีอยูในคอมไพเลอรมักนิยมเริ่มดวยเครื่องหมายขีดเสนใต ( _ ) ดังที่เราไดเห็นตัวอยางมาแลวจากคําสงวน (Reserve word) เพราะฉะนั้นถาเปนไปได เราควรหลีกเลี่ยงการตั้งชื่อที่เริ่มตนดวยเครื่องหมายขีดเสนใต จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 30 กิจกรรมที่ 4 ชื่อ (Identifiers) และคําสงวน (Reserved Word)คําสั่ง จงพิจารณาวา ชื่อ (Identifier) ตอไปนี้ ถูกหรือผิดโดยการทําเครื่องหมาย  ลงในชองถูก และ กา  ลงในชอง ผิด และบอกเหตุผลดวยวาผิดเพราะเหตุใด ชื่อ (Identifier) ถูก ผิด สาเหตุที่ผิด%employeebirth datestudentnamelongnumber 1student#idconstchr’s5marchbaser*rint จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 31 5. ชนิดของขอมูลและตัวแปรชนิดของขอมูล ในการเขียนโปรแกรมคอมพิวเตอร หากมีการประกาศตัวแปรขึ้นมา ใชงานแลว ผูเขียนโปรแกรมตองกําหนดชนิดของขอมูลใหกับตัวแปรนั้น ในแตละภาษาก็จะมีชนิดของขอมูลที่ไมคอยแตกตางกันมากนัก สําหรับในภาษาซีมี 4 ชนิดคือ 1. ขอมูลชนิดซิมเพิล (simple type) 2. ขอมูลชนิดสตริง (string type) 3. ขอมูลประเภทโครงสราง (structure type) 4. ขอมูลประเภทพอยเตอร (pointer type)ในการเขียนโปรแกรมภาษาซีเบื้องตนนี้จะกลาวถึงขอมูลชนิดซิมเพิล และขอมูลชนิดสตริงเทานั้นขอมูลชนิดซิมเพิล (simple type) ขอมูลชนิดซิมเพิล แบงไดเปนขอมูลประเภทที่มีลําดับ (ordinal type) และขอมูลประเภทจํานวนจริง (real data type) โดยขอมูลประเภทมีลําดับเปนขอมูลที่มีคาลําดับที่แนนอน เชนตัวอักษรA B C ... Z ตัวเลขที่ใชในการนับ ซึ่งในภาษาซียังแบงขอมูลประเภทลําดับ ออกไดหลายประเภทไดแก 1. ขอมูลประเภทจํานวนเต็ม (Integer data type) 2. ขอมูลประเภทจํานวนจริง (Real data type) 3. ขอมูลประเภทตัวอักขระ (Character data type) 4. ขอมูลประเภทตรรกะ (ฺBoolean data type)ขอมูลประเภทจํานวนเต็ม (Integer data type) ขอมูลประเภทนี้ใชเก็บตัวเลขที่เปนจํานวนเต็ม โดยคอมพิวเตอรจะใชหนวยความจําในการเก็บขอมูล ในรูปของเลขฐานสอง เชนถาหากคอมพิวเตอร ใชหนวยความจํา ในการเก็บขอมูล จํานวน 8 บิตหรือ 1 ไบต จะแทนคาขอมูลได เทากับ 2^ 8 (2 ยกกําลัง 8) หรือเทากับ 256 คา ซึ่งถาเขียนอยูในรูปเลขฐานสิบ จะแทนคาไดตั้งแต 0 ถึง 255 ขอมูลชนิดจํานวนเต็ม ยังแบงออกไดเปนหลายประเภท ขึ้นอยูกับขนาดของหนวยความจําที่คอมพิวเตอรใชเก็บขอมูล โดยขอมูลประเภทตาง ๆ แสดงไดดังตารางตอไปนี้ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 32ตารางขอมูลชนิดจํานวนเต็มและชวงขอมูลที่เก็บไดชนิดของตัวแปร ขนาด (bit) ชวงของขอมูลที่เก็บได การใชงาน short 16 -32,768 ถึง 32,767 เก็บขอมูลชนิดจํานวนเต็มแบบสั้น ติด เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 16 bit ( 2 Byte) unsigned short 16 0 ถึง 65,535 เก็บขอมูลชนิดจํานวนเต็มแบบสั้น ไมติด เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 16 bit ( 2 Byte) int 32 -2,147,483,648 ถึง เก็บขอมูลชนิดจํานวนเต็มแบบติดเครื่องหมาย 2,147,483,648 + - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte) unsigned int 32 0 ถึง 4,294,967,296 เก็บขอมูลชนิดจํานวนเต็มแบบไมติด เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte) long 32 -2,147,483,648 ถึง เก็บขอมูลชนิดจํานวนเต็มแบบยาว ติด 2,147,483,648 เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte) unsigned long 32 0 ถึง 4,294,967,296 เก็บขอมูลชนิดจํานวนเต็มแบบยาว ไมติด เครื่องหมาย + - โดยใชพื้นที่หนวยความจํา 32 bit ( 4 Byte)การประกาศตัวแปรชนิดจํานวนเต็มขอมูลชนิด intรูปแบบ int <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง int a , b ; // ประกาศตัวแปรชื่อ a และ b โดยไมกําหนดคาเริ่มตน int x=5 , b=10 ; // ประกาศตัวแปรชื่อ x และ b โดยมีคาเริ่มตนเปน 5 และ 10 int c=10.5 ; // ประกาศตัวแปรชื่อ c โดยมีคาเริ่มตนเปน 10 (ไมเอาทศนิยม)ขอมูลชนิด longรูปแบบ long <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง long p , q ; // ประกาศตัวแปรชื่อ p และ q โดยไมกําหนดคาเริ่มตน int e=50000 , f=100000 ; // ประกาศตัวแปรชื่อ e และ f โดยมีคาเริ่มตนเปน 50000 และ 100000 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 33ขอมูลประเภทจํานวนจริง (Real data type) ขอมูลประเภทนี้จะเปนจํานวนจริงหรือทศนิยม ขอมูลประเภทนี้จัดลําดับกอนหลังไดยาก จึงไมจัดเปนขอมูลประเภทที่มีลําดับ เนื่องจากทศนิยม มีไดหลายตําแหนง ขอมูลชนิดจํานวนจริงนี้ยังแบงออกไดเปนหลายประเภท โดยแตละประเภท จะใชหนวยความจํา ในการเก็บแตกตางกัน ทําใหเก็บขอมูล ไดแตกตางกัน ดังตารางตอไปนี้ตารางขอมูลชนิดจํานวนจริงและชวงขอมูลที่เก็บได ชนิดของ ขนาด ชวงของขอมูลที่เก็บได การใชงาน ตัวแปร (bit)float 32 1.754 E -38 ถึง 3.402 E +38 เก็บขอมูลชนิดจํานวนทศนิยม ใชพื้นที่ หนวยความจํา 32 bit (4 Byte) โดยเก็บคา ทศนิยม 6 ตําแหนงdouble 64 2.225 E -308 ถึง 1.797 E เก็บขอมูลชนิดจํานวนทศนิยม ใชพื้นที่ +308 หนวยความจํา 64 bit (8 Byte) โดยเก็บคา ทศนิยม 12 ตําแหนงlong double 96 3.4 E -4923 ถึง 1.1 E +4923 เก็บขอมูลชนิดจํานวนทศนิยม ใชพื้นที่ หนวยความจํา 96 bit (16 Byte) โดยเก็บคา ทศนิยม 24 ตําแหนงหมายเหตุ 3.4 E -38 มีคาเทากับ และ 3.4 E +38 มีคาเทากับการประกาศตัวแปรชนิดจํานวนจริง (เลขทศนิยม)ขอมูลชนิด floatรูปแบบ float <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง float r , s ; // ประกาศตัวแปรชื่อ r และ s โดยไมกําหนดคาเริ่มตน float x=5.5 , y=100.0 ; // ประกาศตัวแปรชื่อ x และ y โดยมีคาเริ่มตนเปน 5.5 และ 100.0ขอมูลประเภทตัวอักขระ (Character data type) ขอมูลประเภทนี้จะเปนอักขระหนึ่งตัว ซึ่งเปนไปตามตารางรหัส ASCII ประกอบดวยขอมูลที่เปนตัวอักษร ตัวเลข และอักขระพิเศษ ขอมูลประภทนี้จะเปนขอมูลประเภทที่มีลําดับ เนื่องจากเรียงตามลําดับตามตาราง ASCII ขอมูลประเภทนี้จะใชเนื้อที่หนวยความจําในการเก็บขอมูล 1 Byte และตองเขียนใหอยูในเครื่องหมาย (single quotation) เชน ‘A’ , ‘b’ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 34การประกาศตัวแปรชนิด charขอมูลชนิด charรูปแบบ char <ชื่อตัวแปร> [= คาที่กําหนด] , [<ชื่อตัวแปร> = คาที่กําหนด]... ;ตัวอยาง char ch1 , ch2; // ประกาศตัวแปรชื่อ ch1 และ ch2 โดยไมกําหนดคาเริ่มตน char ans=y , more = n; // ประกาศตัวแปรชื่อ ans และ more โดยมีคาเริ่มตนเปน y และ nขอมูลประเภทตรรกะ (Boolean data type) ฺ จะเปนคาทางลอจิก ไดแก จริง (true) กับเท็จ (false ) จะใชในคําสั่งควบคุมเพื่อตัดสินใจการทํางาน ในการเรียงลําดับจะใหคาที่เปนเท็จ มากอนคาที่เปนจริง ซึ่งในการเขียนโปรแกรมดวยภาษาซี จะแทนคาที่เปนเท็จดวย 0 และ แทนคาที่เปนจริงดวย 1 การประกาศตัวแปร ใชการประกาศแบบจํานวนเต็ม (int) หรือ อักขระ (char) เพื่อใหไดคา 0 ซึ่งก็คือเปนเท็จขอมูลชนิดสตริง (string type) ขอมูลประเภทนี้ไมเปนชนิดขอมูลในภาษาซีโดยตรง แตเปนการนําขอมูลชนิดอักขระ (chardata type) มาเรียงตอกันในลักษณะของตัวแปรลําดับ (array) ตั้งแตหนึ่งตัวขึ้นไป จนถึง 255 ตัวอักษรโดยอักขระตองอยูในเครื่องหมาย " " (double quotation) ในการเขียนโปรแกรมภาษาซี จะมีการเติมตัวอักษรวาง (0) เปนตัวสุดทายของสตริงโดยอัตโนมัติ เชน การเก็บสตริงคําวา "C COMPILER" จะใชเนื้อที่หนวยความจํา ในการเก็บจํานวน 11 Byte โดยแตละ Byte เปนดังนี้การประกาศขอมูลชนิด stringรูปแบบ char <ชื่อตัวแปร> [เลขจํานวนเต็ม] [= คาเริ่มตนที่กําหนด] , [<ชื่อตัวแปร> [เลขจํานวนเต็ม] [= คาเริ่มตนที่กําหนด] ;ตัวอยาง char st1[15] , st2[20] ; // ประกาศตัวแปรชื่อ st1 และ st2 โดยไมกําหนดคาเริ่มตน char name[15]="Prapan" ; // ประกาศตัวแปรชื่อ name โดยมีคาเริ่มตนเปน "Prapan"ขอมูลชนิดโครงสราง (structure type) ขอมูลชนิดโครงสราง (structure type) คือ โครงสรางขอมูลที่ประกอบดวยสมาชิก หรือตัวแปรที่มีชนิดขอมูลที่แตกตางกัน เก็บรวมกันไวภายใตชื่อของตัวแปรเดียว โดยขอมูลที่เก็บนั้น จะตองมีความเกี่ยวเนื่องและสัมพันธกัน เชน โครงสราง นักเรียนจะประกอบดวย เลขประจําตัวนักเรียน ชื่อนามสกุล เพศ วันเดือนปเกิด เปนตน จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 35ขอมูลชนิดพอยเตอร (pointer type) พอยเตอรเปนชนิดขอมูลประเภทหนึ่ง ที่สรางขึ้นจากชนิดขอมูลแบบพื้นฐานทั่วไป โดยชนิดขอมูลแบบพอยเตอร จะแตกตางจากขอมูลชนิดพื้นฐานตรงที่ ชนิดขอมูลพื้นฐาน จะเก็บและดึงคาขอมูลจากตัวแปรโดยตรง แตขอมูลชนิดพอยเตอร จะเก็บคาที่อยู (Address) ของตัวแปร และใชคาที่อยูนี้ ชี้อางอิงไปยังขอมูล ที่เก็บอยูในตัวแปรนั้น อีกที่หนึ่ง เพื่อทําการเก็บและดึงคาขอมูลของตัวแปรโดยอาศัยที่อยูนั้น ซึ่งอาจสรุปไดวา ขอมูลพื้นฐาน จะเก็บและดึงขอมูลจากตัวแปรโดยตรง แตพอยเตอร จะทํางานกับตัวแปรโดยออม คือทํางานผานตําแหนงที่อยูของตัวแปรที่มันชี้อยูนั้นเอง จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 36 กิจกรรมที่ 5 ชนิดของขอมูลตอนที่ 1 เขียนตอบลงในชองที่เวนไว1. ขอมูลชนิด Simple แบงเปนกี่ประเภทอะไรบางแบงเปน ............ ประเภท คือ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................2. ขอมูลชนิดจํานวนเต็ม หมายความวาอะไร ...................................................................................... .........................................................................................................................................................3. ขอมูลชนิดจํานวนเต็มแบงออกเปนกี่ชนิด อะไรบางแบงออกเปน ............ ชนิด คือ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................4. จงอธิบายวาทําไมขอมูลชนิด short ที่ใชหนวยความจําขนาด 8 bit จึงเก็บขอมูลได 256 คา.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................5. ขอมูลตอไปนี้ ใชหนวยความจําขนาดเทาไร และเก็บขอมูลไดในชวงใด ชนิดขอมูล ขนาดหนวยความจํา ชวงขอมูล int short long unsigned int unsigned short unsigned long char จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 376. ขอมูลชนิดจํานวนจริง มีลักษณะเดนอยางไร .....................................................................................7. จงบอกขนาดหนวยความจําและชวงของขอมูลชนิดจํานวนจริงตามตารางตอไปนี้ ชนิดของขอมูล ขนาดหนวยความจํา ชวงของขอมูล ตําแหนงของทศนิยม float double long double8. จงเขียนเลขตอไปนี้ใหอยูในรูปของเลขฐานสิบ 8.1. 2.13E+03 เทากับ .......................................................................................................... 8.2. 52.42E-02 เทากับ .......................................................................................................... 8.3. 1.25E+00 เทากับ ..........................................................................................................9. ขอมูลชนิด char นิยมใชเก็บขอมูลลักษณะใด...................................................................................................................................................................10. ขอมูลชนิด char เก็บตัวเลขจํานวนเต็มไดหรือไม อยางไร......................................................................................................................................................................................................................................................................................................................................11. ขอมูลชนิด boolean เปนขอมูลที่มีลักษณะอยางไร...................................................................................................................................................................12. คา 1 และ 0 ของขอมูลชนิด boolean หมายถึงอะไร......................................................................................................................................................................................................................................................................................................................................13. ขอมูลชนิด string มีลักษณะเดนอยางไร......................................................................................................................................................................................................................................................................................................................................14. ขอมูลชนิด string ตองเขียนอยูในเครื่องหมาย ...........................อานวา ............................................. สวนขอมูลชนิด char ตองเขียนอยูในเครื่องหมาย ......................อานวา .............................................ตอนที่ 2 จงบอกชนิดของขอมูลที่กําหนดตอไปนี้1. “computer” เปนขอมูลชนิด .......................................................................................2. ความจริง/เท็จ เปนขอมูลชนิด .......................................................................................3. เกรดเฉลี่ย เปนขอมูลชนิด .......................................................................................4. จํานวนนักเรียน เปนขอมูลชนิด .......................................................................................5. ‘y’ เปนขอมูลชนิด ....................................................................................... จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 38 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 ชนิดใหญ ๆ คือ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 40 คาคงที่ (Constant) คาคงที่แบงเปน 3 ประเภท คือ Literal constant , Defined constant และ Memory constant1. 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 41 บรรทัดที่ 7 ประกาศตัวแปร circle_area เปนแบบ float ไมไดกําหนดคาเริ่มตน บรรทัดที่ 8 คํานวณหาคา circle_area ดวยสูตร PI*radial*radial; บรรทัดที่ 9 แสดงผลการคํานวณหาพื้นที่วงกลม ดวยขอความ circle area = 153.937912 บรรทัดที่ 10 หยุดรอการกดแปน Enter3. 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 ตามที่กลาวมาแลวในหัวขอกอนหนานี้ อยางไรก็ตามในสวนประกาศนี้ อาจจะไมมีในบางโปรแกรมก็ได แตถาหากตองประกาศตัวแปร หรือคาคงที่ จะตองประกาศดังนี้ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 เชน จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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, boolean variable-list หมายถึง รายชื่อของตัวแปรที่ตองการประกาศ ถามีมากกวา 1 ตัวใหใชเครื่องหมาย ,คั่นระหวางชื่อตัวแปร value หมายถึงคาคงที่ ที่ตองการนําไปเก็บไวใน identifier เชน int number,car ; // ประกาศตัวแปรชื่อ number และ car ใหเปนชนิด int float wide,high ; // ประกาศตัวแปรชื่อ wide และ high ใหเปนชนิด float char more=y ; // ประกาศตัวแปรชื่อ more ใหเปนชนิด char และมีคาเริ่มตนเทากับ y char name[25]="Naowarat Jaikaroon" ; // ประกาศตัวแปรชื่อ name มีคาเริ่มตนเทากับ"Naowarat Jaikaroon" จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 45 กิจกรรมที่ 6 การประกาศตัวแปรและคาคงที่1. จงเขียนการประกาศชื่อตัวแปร ใหกับขอมูลตอไปนี้ ตัวแปรและขอมูลที่กําหนด การประกาศตัวแปรname = “micro computer”weight = 56.45salary (เงินเดือน)address (บานเลขที่และถนน)ch =’a’member = true (true หมายถึง จริง)total = 3002. การเขียนคําประกาศคาคงที่ แบบ 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 สําหรับเก็บขอความ โดยกําหนดคาเริ่มตนเปนชื่อของเรา ............................................................................................................................................................ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 466. ใหนักเรียนกําหนดคาที่กําหนดใหตอไปนี้ใหเปนคาคงที่ 1) คา   3.141529 เก็บที่ตัวแปร Pi คําสั่งกําหนดคาคงที่......................................................................................................... 2) คา 2  1.44 เก็บที่ตัวแปร Sqrt2 คําสั่งกําหนดคาคงที่……………………………………………………………………. 3) อัตราเงินปนผลสหกรณรอยละ 10 = 0.10 เก็บที่ตัวแปร Pa คําสั่งกําหนดคาคงที่……………………………………………………………………. 4) คํานําหนาชื่อ นางสาว เก็บที่ตัวแปร Title คําสั่งกําหนดคาคงที่……………………………………………………………………. 5) คาปรับหนังสือวันละ 3 บาท เก็บที่ตัวแปร Pay คําสั่งกําหนดคาคงที่……………………………………………………………………. 6) อัตราคาเสียภาษีรอยละ 7 = 0.07 เก็บที่ตัวแปร Tax คําสั่งกําหนดคาคงที่……………………………………………………………………. จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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) จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 + a 2. a = a + 1 y = x + ++ a; 1. a = a + 1 2. y = x + a y += x ; y=y+x y += x ++ ; 1. y = y + x 2. x = x + 1 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 49 ตัวอยาง ขั้นตอนการประมวลผล y -= 9 ; y=y–9 y *= 7 * x++ ; 1. y = y * 7 * x 2. x = x + 1 y /= x ; y=y/x y %= 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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);} จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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) นิพจนในภาษาซี…………………………………………………………. วิธีทํา ………………………………………………………… ………………………………………………………… ………………………………………………………… ………………………………………………………… จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 522. จงหาคําตอบของนิพจนตอไปนี้ 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)) วิธีทํา …………………………………………………………………………....................... ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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> The sum is 3main( ){int sum = 3;printf(“ The sum is %d ”,sum);} จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 54 ตัวอยาง แสดงการใชคําสั่ง printf รหัสรูปแบบ % d และ % u #include <stdio.h> ผลลัพธ #include <conio.h> Num = -3 tot = 5 main( ) { int num = -3, tot = 5; printf(“ num = %d tot = %u ”,num, tot); } ตัวอยาง แสดงการใชคําสั่ง printf รหัสรูปแบบ % f และ % e โดยมีทศนิยม 2 ตําแหนง #include <stdio.h> ผลลัพธ #include <conio.h> 22.75 2.28e+01 main( ) { float num = 22.75; printf(“ %.2f %.2e ”,num,num); } นอกจากนี้เรายังสามารถจัดรูปแบบการแสดงผลใหดูเปนระเบียบมากขึ้น อยางเชนขึ้นบรรทัด ใหม หลังแสดงขอความ หรือเวนระยะแท็บระหวางขอความ โดยใชอักขระควบคุมการแสดงผล รวมกับคําสั่ง 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 เครื่องหมาย ? จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 55 การนําอักขระควบคุมการแสดงผลมาใช เราตองเขียนอักขระควบคุมการแสดงผลไวภายใน เครื่องหมาย " " ดังตัวอยางprintf("Hello ... n"); แสดงขอความ Hello ... แลวขึ้นบรรทัดใหม แสดงขอความ Hello ...แลวขึ้นบรรทัดใหมพรอมกับแสดงขอความprintf("Hello...nLampangn"); Lampang จากนั้นขึ้นบรรทัดใหมอีกครั้งprintf("Num1 = %dtNum2 = แสดงขอความ Num1 = 45 ตามดวยการเวนชองวาง 1 แท็บแลวตอดวย%fn",x,z); ขอความ 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 56ตัวอยาง แสดงการใชคําสั่ง scanf#include <stdio.h> หมายความวา#include <conio.h> เครื่องจะรอรับคาที่เปนจํานวนเต็มหนึ่งจํานวนที่main( ) จะปอนเขามาทางแปนพิมพ{ มาเก็บไวในตัวแปร numint num;scanf( “ %d ” ,&num);}ตัวอยาง แสดงการใชคําสั่ง scanf#include <stdio.h> หมายความวา#include <conio.h> เครื่องจะรอรับคาที่เขามา 2 คาคือคาที่หนึ่งเปนmain( ) จํานวนเต็มหนึ่งจํานวน และคาที่สองเปนอักขระ{ หนึงตัวที่จะปอนเขามาที่จะปอนเขามาทาง ่int num; char ch; แปนพิมพแลวนําไปเก็บไวในตัวแปร num และ chscanf(“ %d %c ” ,&num, &ch); ตามลําดับ}5. ฟงกชัน getchar ( ) เปนฟงกชันที่ใชในการรับขอมูลจากแปนพิมพทีละ 1 ตัวอักขระ โดยตองกดenter ทุกครั้งเมื่อสิ้นสุดขอมูล และขอมูลที่ปอนจะปรากฏใหเห็นบนหนาจอภาพ รูปแบบ char = getchar ( );6. ฟงกชัน getch ( ) เปนฟงกชันที่ใชในการรับขอมูลเปนตัวอักขระ 1 ตัวอักขระเขามาทางแปนพิมพโดยเมื่อปอนขอมูลเสร็จไมตองกดปุม enter และขอมูลที่ปอนจะไมปรากฎบนหนาจอภาพ รูปแบบ char = getch ( );7. ฟงกชัน getche ( ) เปนฟงกชันที่ใชในการรับขอมูลเปนตัวอักขระ 1 ตัวอักขระเขามาทางแปนพิมพโดยเมื่อปอนขอมูลเสร็จไมตองกดปุม enter และขอมูลที่ปอนจะปรากฎบนหนาจอภาพ รูปแบบ getche ( ); จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 578. ฟงกชัน gets ( ) เปนฟงกชันที่ใชในการรับขอมูลสตริงหรือขอความ (string) เขามาทางแปนพิมพโดยตองกด enter ทุกครั้งเมื่อสิ้นสุดขอมูล และขอมูลที่ปอนจะปรากฏใหเห็นบนหนาจอภาพ รูปแบบ gets (string);ตัวอยางโปรแกรม การใชคําสั่งรับ - แสดงผล#include <stdio.h> ผลการรันโปรแกรม#include <conio.h>main(){int x_value = 9;printf("x = %dn",x_value);getch();}#include <stdio.h>#include <conio.h> ผลการรันโปรแกรมmain(){int x, y, sum;x = 7; y = 2;sum = x + y;printf("Total = %dn",sum);getch();}#include <stdio.h>#include <conio.h> ผลการรันโปรแกรมmain(){int x, y;x = 7; y = 4;--x; ++y; จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 58printf("x = %dn",x);printf("y = %dn",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(); } จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 59#include <stdio.h> ผลการรันโปรแกรม#include <conio.h>main(){printf("n****Using .1f****n");printf("%.1f%.1f%.1fn", 4.0, 16.5, 589.3);printf("%.1f%.1f%.1f", 400.0, 1600.5, 58900.3);printf("nn****Using 8.1f****n");printf("%8.1f%8.1f%8.1fn", 4.0, 16.5, 589.3);printf("%8.1f%8.1f%8.1f", 400.0, 1600.5, 58900.3);printf("nn**** Using -8.1f****n");printf("%-8.1f%-8.1f%-8.1fn", 4.0, 16.5, 589.3);printf("%-8.1f%-8.1f%-8.1f", 400.0, 1600.5, 58900.3);getch();} จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 60 กิจกรรมที่ 8 การรับและแสดงขอมูล1. จงเขียนโปรแกรมวาดรูปตนไมดังนี้ ผลการรันโปรแกรม โคดคําสั่ง (Source code) 1. ……………………………………………………………….. 2. ……………………………………………………………….. 3. ……………………………………………………………….. %% 4. ……………………………………………………………….. %%%%%% 5. ……………………………………………………………….. %%%%%%%%% 6. ……………………………………………………………….. %%%%%%%%%%%% 7. ………………………………………………………………..%%%%%%%%%%%%%%% 8. ……………………………………………………………….. %% 9. ……………………………………………………………….. %%% 10. ……………………………………………………………….. %%%% 11. ……………………………………………………………….. 12. ……………………………………………………………….. 13. ……………………………………………………………….. 14. ……………………………………………………………….. 15. ................................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 612. จงเขียนโปรแกรมคํานวณพื้นที่รูปสี่เหลี่ยมผืนผา โดยมีหนาจอดังตอไปนี้ หนาจอ โคดคําสั่ง (Source code) 1. ………………………………………………………………..Enter your name : _ 2. ………………………………………………………………..Enter Width : _ 3. ………………………………………………………………..Enter Lenght : _ 4. ………………………………………………………………..Rectangular area :_ 5. ……………………………………………………………….. 6. ……………………………………………………………….. 7. ……………………………………………………………….. 8. ……………………………………………………………….. 9. ……………………………………………………………….. 10. ……………………………………………………………….. 11. ……………………………………………………………….. 12. ……………………………………………………………….. 13. ……………………………………………………………….. 14. ……………………………………………………………….. 15. ................................................................................................. 16. ……………………………………………………………….. 17. ……………………………………………………………….. 18. ……………………………………………………………….. 19. ……………………………………………………………….. 20. ................................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 623. จงเขียนโปรแกรมเพื่อหาพื้นที่ของรูปสี่เหลี่ยมคางหมู แลวแสดงผล โดยมีสวนของการรับขอมูลดังนี้ (สวนที่ขีดเสนใต ___ เปนขอมูลที่รับมาจากแปนพิมพ) 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 = ???หมายเหตุ สูตรคํานวณหาพื้นที่สี่เหลี่ยมคางหมู = 1/2 * (ผลบวกของดานคูขนาน) * สูง จัดเก็บไวในชื่อแฟม printf1.cpp4. จงเขียนโปรแกรมรับขอมูลชื่อ นามสกุล และ ปเกิด (พ.ศ.) เขามาทางแปนพิมพ แลวคํานวณหาอายุ โดยกําหนดรูปแบบการรับและแสดงผลดังนี้ สวนของการรับขอมูลดังนี้ (สวนที่ขีดเสนใต ___ เปนขอมูลที่รับมาจากแปนพิมพ) Enter your name : ___ Enter your lastname : ___ แลวแสดงผลบนจอภาพดังนี้ year (เครื่:องหมาย ?? เปนการอางตัวแปร) Enter birth ___ <ชื่อ> <นามสกุล> You are ?? year old. จัดเก็บไวในชื่อแฟม printf2.cpp จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 635. จงเขียนโปรแกรมเพื่อเปลี่ยนอุณหภูมิ จาก C ไปเปน F แลวแสดงผลตามที่กําหนด โดยมีสวนของการรับขอมูลดังนี้ Enter temperature in C : ___ แสดงผลบนจอภาพดังนี้ (เครื่องหมาย ?? เปนการอางตัวแปร) Temperature ?? C = ?? F C F  32 หมายเหตุ สูตรเปลี่ยนอุณหภูมิ คือ  5 9 จัดเก็บไวในชื่อแฟม printf3.cpp6. จงเขียนโปรแกรมเพื่อเปลี่ยนอุณหภูมิ จาก F ไปเปน C แลวแสดงผลตามที่กําหนด โดยมีสวนของการรับขอมูลดังนี้ Enter temperature in F : ___ แสดงผลบนจอภาพดังนี้ (เครื่องหมาย ?? เปนการอางตัวแปร) Temperature ?? F = ?? C C F  32 หมายเหตุ สูตรเปลี่ยนอุณหภูมิ คือ  5 9 จัดเก็บไวในชื่อแฟม printf4.cpp จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 65 แบบฝกกิจกรรมที่ 7ใหนักเรียนสังเกตผังงานและการเขียนโปรแกรมหาคาสมบูรณตอไปนี้ #include <stdio.h> Start #include <conio.h> main() X { int x; True X<0 printf(“INPUT X : “); scanf(“%d”,&x); False X = X * (-1) if (x < 0) x = x * -1; printf(“%d”,x); X getch(); } End ผลการรันโปรแกรม จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 66 กิจกรรมที่ 9 การทํางานแบบมีทางเลือก ifคําชี้แจง ใหนักเรียนตอบคําถามตอไปนี้1. จงเขียนลักษณะของการเลือกทําอยางงาย (คําสั่ง if ) ............................................................................................................................................................. .............................................................................................................................................................2. จงเขียนรูปแบบคําสั่ง if อยางงายในรูปแบบของ simple statement และ compound statement รูปแบบ Simple statement รูปแบบ Compound statement3. จากรูปแบบของคําสั่ง if อยางงาย จงบอกความหมายของ Condition ............................................................................................................................................................. .............................................................................................................................................................4. การเขียน Condition ตองเขียนใหอยูในเครื่องหมายใด ................................................................5. ผลของนิพจนที่เปนเงื่อนไข หรือ การตรวจสอบ (Condition ) จะไดคา หรือผลลัพธเปนอยางไร .............................................................................................................................................................6. ตัวดําเนินการที่ทําใหเกิดความจริง หรือ เท็จ คือตัวดําเนินการชนิด ใด ประกอบดวยตัวดําเนินการ ใดบาง ............................................................................................................................................................. ............................................................................................................................................................. ............................................................................................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 677. จงพิจารณาจากประโยคตอไปนี้ ”ถา grade เปน 0 แลว {ยื่นคํารอง , ติดตอผูสอน , อานหนังสือทบทวน , ทําแบบฝกหัด ,ใหสอบแกตัว}” 7.1. ประโยคนี้เปน statement แบบใด (Simple/Compound) ............................................................. 7.2. ถา ตัวแปร grade เปน int จงเขียนประโยคขางตนเปนรูปแบบคําสั่ง if อยางงาย เขียนในสดมภซายกอน แลวมาเขียนในสดมภขวา ............................................................................ ............................................................................ ............................................................................ ............................................................................ ............................................................................. ............................................................................. ............................................................................ ............................................................................ 7.3. จากประโยคขางตน ถา grade ไมเทากับ 0 จะตองทําอะไรบาง? .....................................................................................................................................................8. จงพิจารณาจาก statement ตอไปนี้ Source code if (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) จงบอกวา if (a%2) ใหคาความจริงหรือเท็จไดอยางไร?{ .................................................................................................... printf(“This number is ....................................................................................................%dn”,a); ................................................................................................... printf(“It is even”); ...................................................................................................} จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 682. ทําแบบ if – else ที่มีสเตตเมนตเดียว และหลายสเตตเมนต มีรูปแบบดังนี้ รูปแบบ if (condition) // if – else ที่มีสเตตเมนตเดียว statement - 1; else statement - 2; -- หรือ -- if (condition) // if – else หลายสเตตเมนต { statement - 1; … } else { statement - 2; … } ผังงาน เท็จ จริง condition Statement - 2 Statement - 1 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 69 แบบฝกกิจกรรมที่ 8 ใหนักเรียนสังเกตผังงานและการเขียนโปรแกรมประกาศผลการสอบตอไปนี้ #include <stdio.h> Start #include <conio.h> main() score { int score; False True char result[6]; score < 50 printf(“INPUT SCORE : “);result = “Pass” result = “Faile” scanf(“%d”,&score); if (score < 50) result = “Faile”; result else result = “Pass”; printf(“%s”,result); End getch(); } ผลการรันโปรแกรม จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 ไดหรือไม? ....... ....................................................................................................................................................... จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 715. จงพิจารณาจากสวนของประโยคคําสั่งตอไปนี้แลวตอบคําถามขอ 5.1 - 5.4 ทุกขอ 5.1. ถา ปอนเลข 0 ใหกับตัวแปร i แลวผลที่ไดจะเปนอยางไร ............................................................. 5.2. ถา ปอนเลข 1 ใหกับตัวแปร i แลวผลที่ไดจะเปนอยางไร ............................................................. 5.3. ถา ปอนเลข -1 ใหกับตัวแปร i แลวผลที่ไดจะเปนอยางไร ............................................................ จากขอ 3.1 ถึงขอ 3.1 และขอ 5.1 ถึง 5.3 นักเรียนสรุปไดวา คาที่เปน เท็จ มีคาเทากับเลข ............ 5.4. สวนคาที่เปนจริง มีคาเทากับเลข ....................................................................................................6. จงพิจารณาโคดคําสั่งตอไปนี้ แลวตอบคําถามขอ 6.1 - 6.5 ทุกขอ บรรทัด โคดคําสั่ง คําอธิบาย 1 #include <stdio.h> 2 #include <conio.h> 3 int main() 4 { 5 int year; // ตัวแปรชนิด int ชื่อ year 6 printf("You were born in year (B.E.) : "); // รับป พ.ศ.เกิด เก็บที่ตัวแปร 7 scanf("%d",&year); // year 8 year=year-543; // เปลี่ยนเปนป ค.ศ. 9 if (year%4) // ถาป ค.ศ. หารดวย 4 ไมลงตัว 10 printf("In %d is not leap year.",year); // แสดงขอความ 11 else // มิฉะนั้นแลว 12 printf("In %d is leap year.",year); // แสดงขอความ 13 getch(); 14 return 0; } 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 เปนอยางไร ......................................................................................................... จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 723. แบบ if – else – if ที่มีสเตตเมนตเดียว และหลายสเตตเมนต มีรูปแบบดังนี้ รูปแบบ if (condition1) // if – else - if ที่มีสเตตเมนตเดียว statement - 1; else if (condition2) statement - 2; else statement - n; -- หรือ -- if (condition1) // if – else - if หลายสเตตเมนต { statement - 1; … } else if (condition2) { statement - 2; … } else { statement - n; … } ผังงาน เท็จ จริง Condition1 เท็จ จริง Statement - 1 Condition2 Statement - n Statement - 2 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 73 แบบฝกกิจกรรมที่ 9ใหนักเรียนสังเกตผังงานและการเขียนโปรแกรมตัดเกรดตอไปนี้ #include <stdio.h> Start #include <conio.h> main() score { int score; True grade = ‘0’ char grade; score < 50 printf("INPUT SCORE : "); False scanf("%d",&score); True grade = ‘1’ if (score < 50) grade = 0; score < 60 False else if (score < 60) grade = 1; True else if (score < 70) grade = 2; score < 70 grade = ‘2’ else if (score < 80) grade = 3; False else grade = 4; True grade = ‘3’ printf("Grade is %c",grade); score < 80 False getch(); }grade = ‘4’ ผลการรันโปรแกรม grade End จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 เปนเท็จจะทําชุดคําสั่งใด ................................................... จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 755. จากภาพขอ 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. ถานํามาเขียนใหม ดังตอไปนี้ จงพิจารณาวาไดผลลัพธ เหมือนเดิมหรือไม ?ตอบ ................................................................................................................................................................................ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 Datan"); break; จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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:Quitn"); break; default: printf("You take choice the other:default"); } getche();} ผลการรันโปรแกรม จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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.”................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 805. จงเปลี่ยนประโยค If – Then – Else ตอไปนี้ใหอยูในรูป switch … case if (type=’a’) bonus=5 else if (type=’f’) bonus=3 else if (type=’p’) bonus=2 else bonus=1;............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................6. ถาในแตละ case ไมมีคําสั่ง break จะมีผลอยางไร..............................................................................................................................................จงเขียนผลที่ไดจากซอรตโคด (Source code) ตอไปนี้ บรรทัด ซอรตโคด (Source code) ผลที่ไดจากการ Run 1 #include <stdio.h> 1. กรณีปอนตัวอักษร c 2 #include <conio.h> ..................................................................... 3 int main() 4 { 2. กรณีปอนตัวอักษร r 5 char ch; ..................................................................... 6 printf("Please select b,c,m,p,r,w,y : "); 3. กรณีปอนตัวอักษร t 7 ch=getchar(); ..................................................................... 8 switch (ch) 9 { 4. กรณีปอนตัวอักษร Y 10 case b : printf("It is black."); break; ..................................................................... 11 case c : printf("It is cyan."); break; 5. กรณีปอนตัวอักษร m 12 case m : printf("It is magenta."); break; ..................................................................... 13 case p : printf("It is pink."); break; 14 case r : printf("It is red."); break; 6. กรณีปอนตัวอักษร k 15 case w : printf("It is white."); break; ..................................................................... 16 case y : printf("It is yellow."); break; 17 default : printf(“Oh ! no.”); 18 } 19 getch(); return 0; } จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 81 กิจกรรมที่ 13 การเลือกทํา (Decision)คําชี้แจง ใหเขียนโปรแกรมดวย Bloodshed Dev-C++1. จงเขียนโปรแกรมดวยคําสั่ง if – else เพื่อรับเลขเขามาจากแปนพิมพหนึ่งจํานวน แลวพิจารณาวาเลขนั้นมากกวา 0 หรือนอยกวา 0 กําหนดสวนของการรับขอมูลดังนี้ Enter number : 35 แสดงผลบนจอภาพดังนี้ กรณีที่มากกวา 0 ใหแสดงผลดังนี้ This number > 0 หรือ กรณีที่นอยกวา 0 ใหแสดงผลดังนี้ This number < 0 หมายเหตุ ตัวเลข 35 เปนตัวเลขที่ปอนเขาไป จัดเก็บไวในชื่อแฟม test_if1.c2. จงเขียนโปรแกรม รับเลขเขามาสองจํานวนเพื่อนํามาหารกัน แตตองพิจารณาวาเลขตัวที่ 2 เปน 0หรือไม? ถาเปน 0 ใหแสดงขอความวา “Can not divide by zero. แตถาไมใช 0 ใหแสดงผลของการหารจํานวนที่ 1 ดวยจํานวนที่ 2 กําหนดสวนของการรับขอมูลดังนี้ Enter 1 st number : 15 Enter 2 nd number : 4 แสดงผลบนจอภาพดังนี้ กรณีที่เปน 0 ใหแสดง Can not divide by zero หรือ กรณีไมเปน 0 ใหแสดง 15.00 divide 4.00 = 3.75 หมายเหตุ ตัวเลขที่ขีดเสนใตเปนคือ 15 และ 4 เปนตัวเลขที่ปอนเขาไปจากแปนพิมพ และเมื่อพิมพ Source code และ Compile แลวจัดเก็บไวในชื่อแฟม test_if2.c จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 823. จงเขียนโปรแกรมดวยคําสั่ง if – else เพื่อรับเลขเขามาสองจํานวน แลวนํามาแสดงผลเรียงจากนอยไปมาก กําหนดสวนของการรับขอมูลดังนี้ Enter 1 st number : 7 Enter 2 nd number : 4 แสดงผลบนจอภาพดังนี้ The number is 4 and 7 หมายเหตุ 7 และ 4 คือ ตัวเลขที่ปอนเขามาจากแปนพิมพ และเมื่อพิมพ Source code และ Compile แลวจัดเก็บไวในชื่อแฟม test_if3.c4. จงเขียนโปรแกรมดวยคําสั่ง if – else เพื่อรับตัวอักขระเขามาหนึ่งตัว ถาเปน A E I O U ใหแสดงผลวาเปนสระ (Vowel) นอกจากนี้ทั้งหมดใหแสดงผลวาเปนตัวอักษร (Character) กําหนดสวนของการรับขอมูลดังนี้ Enter a character : T แสดงผลบนจอภาพดังนี้ T is a character หมายเหตุ T คือ ตัวอักษรที่ปอนเขามา และเมื่อพิมพ Source code และ Compile แลว จัดเก็บไวในชื่อแฟม test_if4.c จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 835. จงเขียนโปรแกรมดวยคําสั่ง if – else เพื่อคํานวณหาสวนลด (Discount) ใหกับลูกคาที่มาซื้อสินคาในรานคาแหงหนึ่ง โดยมีเงื่อนไขดังนี้ 1. ถาลูกคาเปนสมาชิก และ มียอดซื้อสินคาตั้งแต 2000 บาทขึ้นไป ลดให 10 % 2. ถาเปนสมาชิก และ มียอดซื้อไมถึง 2000 บาท ลดให 7 % 3. ไมเปนสมาชิก และ มียอดซื้อมากกวา 1000 บาท ลดให 5 % 4. กรณีอื่น ๆ ไมมีสวนลด โดยมีสวนของการรับขอมูลดังนี้ PIYABUT CO-OPERATION CO.LTD. ======================================== SUB TOTAL SALE = ????? MEMBER (Y/N) = Y หรือ N แสดงผลบนจอภาพดังนี้ PIYABUT CO-OPERATION CO.LTD. ======================================== SUB TOTAL SALE = ????? MEMBER = Y หรือ N DISCOUNT = ??? BALANCE = ????? ======================================== Progarm by 1. Mr (Miss). …………………………………………………หมายเหตุ เครื่องหมาย ?? ที่ขีดเสนหนาบนหนาจอแสดงผลคือขอมูลที่รับเขามาหรือขอมูลที่ไดจาก 2. Mr (Miss) .. ……………………………………………….การคํานวณ สูตรสวนลด = อัตราสวนลด * ราคาสินคา / 100 และเมื่อพิมพ Source code และ Compile แลว จัดเก็บไวในชื่อแฟม test_if5.c จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 84ขอ 6 จงเขียนโปรแกรมดวยคําสั่ง switch เพื่อคํานวณหา พื้นที่ของรูปตาง ๆ 3 รูป ดังเมนูตอไปนี้ MAIN MENU ======================= 1. Pyramid 2. Cone 3. Tube ======================= Please select your choice (1 .. 3) : __ กรณีเลือก 1 ใหแสดงหนาจอรับขอมูล และ หนาจอแสดงผลดังนี้ หนาจอรับขอมูล Enter width : __ Enter long : __ Enter height : __ หนาจอแสดงผล VOLUME OF PYRAMID Base width = ?? Base long = ?? Height = ?? Volume of pyramid = ????? กรณีเลือก 2 ใหแสดงหนาจอรับขอมูล และ หนาจอแสดงผลดังนี้ หนาจอรับขอมูล Enter radial : __ Enter height : __ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 85 หนาจอแสดงผล VOLUME OF CONE Radial = ?? Height = ?? Circle area = ?? Volume of cone = ????? กรณีเลือก 3 ใหแสดงหนาจอรับขอมูล และ หนาจอแสดงผลดังนี้ หนาจอรับขอมูล Enter radial : __ Enter long : __ หนาจอแสดงผล VOLUME OF TUBE Radial = ?? Long = ?? Circle area = ?? Volume of cone = ????? กรณีเลือก อื่น ๆ ที่ไมใช 1 – 3 ใหแสดงขอความวา Your choice is incorrect.หมายเหตุ เครื่องหมาย ?? ที่ขีดเสนหนาบนหนาจอแสดงผลคือขอมูลที่รับเขามาหรือขอมูลที่ไดจากการคํานวณ สูตรปริมาตรรูปปรามิด (Pyramid) = พื้นที่สี่เหลี่ยมที่เปนฐาน*สูง*1/3 สูตรปริมาตรรูปกรวย (Cone) = พื้นที่วงกลมที่เปนฐาน*สูง*1/3 สูตรปริมาตรทอน้ํา (Tube) = พื้นที่วงกลมที่เปนฐาน* ความยาวของทอ และเมื่อพิมพ Source code และ Compile แลว จัดเก็บไวในชื่อแฟม test_switch.c จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 86 10. คําสั่งการทํางานแบบทําซ้ํา (Loop) การวนซ้ําหรือการทําเปนวงรอบคือการทํางานอยางเดียวกันหรือซ้ํา ๆ กันตามเงื่อนไขที่กําหนดการทํางานแบบวนซ้ํานั้นจะตองมีการตรวจสอบเงื่อนไขอยูภายในลูปของการทําซ้ําดวย งานบางประเภทมีจํานวนครั้งในการทําซ้ําที่แนนอน งานบางประเภทมีจํานวนครั้งในการทําซ้ําไมแนนอนขึ้นอยูกับเงื่อนไขที่เขียนในโปรแกรม ประเภทของการทําซ้ําจะแบงไดเปน 3 ประเภทดังนี้ 1. การทําซ้ําแบบที่ทราบจํานวนครั้งในการทําซ้ํา คําสั่ง for 2. การทําซ้ําจนระบบมีเงื่อนไขอยางหนึ่งจึงหยุด คําสั่ง do-while 3. การทําซ้ําแบบถาเงื่อนไขเปนจริงจะทําชุดคําสั่ง คําสั่ง Whileคําสั่ง for คําสั่งนี้จะทําซ้ําในลูปโดยมีการกําหนดคาเริ่มตน แลวตรวจสอบเงื่อนไข ถาเงื่อนไขเปนจริงจะทําในลูปซ้ําจนกวาเงื่อนไขจะเปนเท็จ โดยทั่วไปจะใชคําสั่งนี้ในการทํางานซ้ํา ๆ ที่ทราบจํานวนครั้งในการทําซ้ําแนนอน รูปแบบ for (initialization; condition; increment or decrement) { statement - 1; statement - 2; ….. statement - n; } โดยที่ initialization เปนการกําหนดคาเริ่มตนใหกับตัวแปรที่ใชตรวจสอบเงื่อนไข condition เปนนิพจนที่ใชตรวจสอบเงื่อนไข increment เพิ่มคาใหกับตัวแปร decrement ลดคาใหกับตัวแปร จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 87 แบบฝกกิจกรรมที่ 10 จงเขียนโปรแกรมสําหรับหาผลบวกของเลขยกกําลังสอง ถาหากตัวเลขเปนเลขจํานวนเต็มระหวาง 1 ถึง 10 แลวแสดงผลบวกออกทางจอภาพ ตามผังงานตอไปนี้วิธีทํา งานในลักษณะนี้จะทําจํานวน 10 ครั้ง ดังนั้นจะกําหนดให sum เปนตัวแปรสําหรับเก็บผลรวม I เปนตัวแปรที่ใชนับลูป การทํางานของโปรแกรมจะเขียนไดดังนี้ ผังงาน 1. เริมตน ่ 2. ให sum = 0 start 3. ให I = 1 4. ในขณะที่ I นอยกวาหรือเทากับ 10 ทํา sum = 0 4.1 sum เทากับ sum บวก I คูณ I 4.2 เพิ่ม I ขึ้นหนึ่งคา I=1 5. แสดงผล sum 6. จบ โปรแกรม I <= 10 #include <stdio.h> sum #include <conio.h> sum = sum + I * I int sum,I; main() End { I = I+1 sum = 0; for (I = 1;I<= 10;I++) { ผลการทํางานของโปรแกรม sum = sum + I*I; } printf("Sum = %dn",sum); getch(); } จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 88 กิจกรรมที่ 14 การทําซ้ําแบบที่ทราบจํานวนครั้งในการทําซ้ํา คําสั่ง for1. จงเขียนรูปแบบการทําซ้ําดวยคําสั่ง for .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. ..................................................................................................................................................................2. จงอธิบายเงื่อนไขตรวจสอบหลังคําสั่ง for .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. .................................................................................................................................................................. ..................................................................................................................................................................3. การเขียนเงื่อนไขตรวจสอบหลัง คําสั่ง for ตองเขียนภายในเครื่องหมายใด ..................................................................................................................................................................4. การเขียนเงื่อนไขตรวจสอบหลัง คําสั่ง for มีเงื่อนไขตรวจสอบ 3 ตัว ใหเขียนคั่นแตละตัวดวย เครื่องหมายใด .................................................................................................................................................................5. จงพิจารณาคําสั่ง for ดังตอไปนี้ int a; for (a=5;a<20;a++) 5.1. a เปนตัวแปรชนิดใด ..................................................................................................................... 5.2. ในคําสั่ง a มีคาเริ่มตนเทาไร .......................................................................................................... 5.3. โปรแกรมจะหยุดเมื่อ a มีคาเทาใด ................................................................................................ 5.4. คาของ a จะเพิ่มขึ้น รอบละเทาไร ................................................................................................. 5.5. จะมีการวนรอบทําซ้ําทั้งหมดกี่รอบ .............................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 896. จงพิจารณาจาก Source code ตอไปนี้ บรรทัดที่ 1 char ch; // ch เปนชนิดอักขระ บรรทัดที่ 2 for (ch=’A’;ch<=’Z’;ch++) บรรทัดที่ 3 printf(“%ct”,ch); บรรทัดที่ 4 printf(“nTo show character A to Z”); บรรทัดที่ 5 printf(“nEnd program.”); 6.1. ตัวแปร ch เปนตัวแปรชนิดใด .......................................................................................................... 6.2. โปรแกรมนี้ทําซ้ํา เมื่อตัวแปร ch มีคาเปนอะไร ............................................................................... 6.3. รอบสุดทายของการทําซ้ํา ตัวแปร ch มีคาเปนอะไร ........................................................................ 6.4. เมื่อหลุดจากการทําซ้ําแลว ตัวแปร ch จะมีคาเปนอะไร (ดูตาราง ASCII จากเว็บ) .......................... 6.5. โปรแกรมนี้จะทําซ้ํา source code บรรทัดใดบาง ............................................................................. 6.6. โปรแกรมนี้จะทําซ้ําจํานวนกี่รอบ ....................................................................................................7. จงพิจารณาจาก Source code ตอไปนี้ บรรทัดที่ 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 } 7.1. ตัวแปร r และ area เปนตัวแปรชนิดใด ........................................................................................ 7.2. ในวงรอบการทําซ้ําดวยคําสั่ง for นี้ ตัวแปร r มีคาเริ่มตนเทาใด .................................................... 7.3. รอบสุดทายของการทําซ้ํา ตัวแปร r จะมีคาเทาใด ............................................................................. 7.4. เมื่อหลุดการการทําซ้ําแลว r มีคาเปนเทาใด ...................................................................................... 7.5. จงบอกความหมายของ r+=10 .......................................................................................................... 7.6. โปรแกรมนี้จะมีการเพิ่มคา r ครั้งละ (รอบละ) เทาใด ....................................................................... 7.7. จงเขียนผลที่ไดจากการ Run โปรแกรม เพียงบรรทัดแรกบรรทัดเดียว .......................................................................................................................................................... จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 91 แบบฝกกิจกรรมที่ 11 ถาหากตองการใหระบบคอมพิวเตอรรับคาตัวเลขจํานวนเต็มเขาไปที่ละคา แลวนําตัวเลขมารวมกัน จนกระทั่งปอนตัวเลขเปน 0 ใหหยุดรับคาและแสดงผลรวมออกมาทางจอภาพ จงวิเคราะหปญหานี้ พรอมทั้งเขียนผังงาน และโปรแกรมวิธีทํา ตองการอะไร หาคาผลรวมของตัวเลข ตองการเอาตพุตอยางไร แสดงผลรวมทางจอภาพขอมูลเขา รับตัวเลขที่ละคา ถาตัวเลขเปน 0 ใหจบโปรแกรมวิธีการประมวลผล ตองประกาศตัวแปรหนึ่งตัว (sum) สําหรับเก็บผลรวม โดยเริ่มตนใหตัวแปรนี้มีคาเปน 0 รับขอมูล(x) เขามาทีละคาแลวเอาไปรวมกับ sum ถาหาก x เปน 0 ใหแสดงผลรวมแลวออกจากโปรแกรม การทําซ้ําแบบนี้จะไมทราบจํานวนครั้งในการทําซ้ําที่แนน อน โดยจะทําไปเรื่อย ๆ จนกวาขอมูลที่รับเขาไปจะเปน 0 ดังนั้นสามารถเขียนคําอธิบายวิธีการทํางานไดดังนี้ 1. เริ่มตนทํางาน ผังงาน 2. กําหนดคา sum ใหเทากับ 0 3. รับคา X ทางแปนพิมพ start 4. ทําในลูปถา X มีคาไมเทากับ 0 4.1 หาคาผลรวม sum = sum + X sum = 0 4.2 รับคา X ทางแปนพิมพ 5. แสดงคาผลรวม sum ทางจอภาพ x 6. จบการทํางาน#include "stdio.h"#include "conio.h" sum = sum + xmain(){ int x, sum; False True x=0sum = 0;do { sumprintf("INPUT DATA ");scanf("%d",&x); Endsum = sum + x;}while(x != 0);printf("Sum = %dn",sum); ผลการทํางานของโปรแกรมgetch(); } จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 92 กิจกรรมที่ 15 การทําซ้ําจนระบบมีเงื่อนไขอยางหนึ่งจึงหยุด คําสั่ง do-while1. จงเขียนรูปแบบการทําซ้ําดวยคําสั่ง 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’) ผลลัพธเปน .............................................................................................. จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 938. จงพิจารณาคําสั่ง source code ดังตอไปนี้ บรรทัดที่ 1 int line=1; บรรทัดที่ 2 do บรรทัดที่ 3 { บรรทัดที่ 4 printf(“This is line # %d.n”,line); บรรทัดที่ 5 line++; บรรทัดที่ 6 } while (line<10); 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 ดังตอไปนี้ บรรทัดที่ 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); 9.1. ใน source code ตัวแปร r มีคาเริ่มตนเทาไร .................................................................................... 9.2. โปรแกรมจะทําซ้ําในขณะที่ r มีคาเทาใด .......................................................................................... 9.3. โปรแกรมจะหยุดเมื่อ r มีคาเทาใด ..................................................................................................... 9.4. จะมีการวนรอบทําซ้ําทั้งหมดกี่รอบ .................................................................................................. 9.5. เมื่อออกจากการทําซ้ําแลว r จะมีคาเทาใด ......................................................................................... จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 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 เปนตัวแปรสําหรับรับตัวอักษรจบการทํางาน จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 95 วิธีการประมวลผลสามารถเขียนเปนคําอธิบายไดดังนี้ 1. เริ่มตน 2. ในขณะที่ ans ไมเทากับ ‘y’ 2.1 รับคา f_temp 2.2 หาคา c_temp จาก c_temp = (f_temp – 32) * 5/9 2.3 แสดงผล c_temp ผังงาน 2.4 แสดงขอความ “Are you Exit (y/n)?” 2.5 รับคา ans 3. จบ start โปรแกรม #include <stdio.h> #include <conio.h> False Ans != ‘y’ char ans; float f_temp,c_temp; True End main() f_temp { while (ans != y) { c_temp = (f_temp - 32) * 5/9 printf("nF_Temp : "); scanf("%f",&f_temp); c_temp c_temp = (f_temp - 32) * 5/9; printf("C_temp : %.2ft ",c_temp); ans printf("Are you Exit(y/n)? : "); ans = getche(); } }ผลการทํางานของโปรแกรม จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 96 กิจกรรมที่ 16 การทําซ้ําแบบถาเงื่อนไขเปนจริงจะทําชุดคําสั่ง คําสั่ง While1. จงเขียนรูปแบบการทําซ้ําดวยคําสั่ง 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’ เขียนไดดังนี้ ........................................................................ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 978. จงพิจารณาคําสั่ง while ดังตอไปนี้ int s=3; while (s<=8) 8.1. ในคําสั่ง s มีคาเริ่มตนเทาไร .......................................................................................................... 8.2. โปรแกรมจะทําซ้ําในขณะที่ s มีคาเทาใด ..................................................................................... 8.3. โปรแกรมจะหยุดเมื่อ s มีคาเทาใด ................................................................................................ 8.4. จะมีการวนรอบทําซ้ําทั้งหมดกี่รอบ ..............................................................................................9. จงพิจารณาจาก Source code ตอไปนี้ บรรทัดที่ 1 int x=2; // x เปนชนิดจํานวนเต็ม บรรทัดที่ 2 while (x<=20) บรรทัดที่ 3 { บรรทัดที่ 4 printf(“%dt”,x); บรรทัดที่ 5 x+=2; บรรทัดที่ 6 } 9.1. ตัวแปร x เปนตัวแปรชนิดใด .......................................................................................................... 9.2. โปรแกรมนี้ทําซ้ํา เมื่อตัวแปร x มีคาเปนอยางไร............................................................................. 9.3. รอบสุดทายของการทําซ้ํา ตัวแปร x มีคาเทาไร ..... ......................................................................... 9.4. เมื่อหลุดจากการทําซ้ําแลว ตัวแปร x จะมีคาเทาไร.......................................................................... 9.5. จงอธิบายประโยค x+=2; ............................................................................................................. 9.6. โปรแกรมนี้จะทําซ้ําจํานวนกี่รอบ .................................................................................................... ถาตัด บรรทัดที่ 5 x+=2; ออกไปจะเกิดผลอยางไร .................................................................... 9.7. .........................................................................................................................................................10. จาก source code ตอไปนี้ r= 20; while (r<=10) printf(“I love C language.”); 10.1.เงื่อนไข while (r<=10) ไดผลลัพธเปนจริงหรือเท็จ .......................................................... 10.2.โปรแกรมนี้มีการทําซ้ํากี่รอบ ........................................................................................................ จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 98 กิจกรรมที่ 17 การเขียนโปรแกรมวนรอบทําซ้ําคําชี้แจง จงเขียนโปรแกรมวนรอบทําซ้ําดวยคําสั่ง while หรือ for หรือ do-while ตามที่นักเรียนไดศึกษามา1. จงเขียนโปรแกรมเพื่อแสดงผลบนจอภาพดังนี้ 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. ใหบันทึกในแฟมชื่อ loop8-1.c This is line 9 HELLO WORLD.2. จงเขียนโปรแกรมเพื10หาผลรวมของเลขคู ตั้งแต 1 ถึง 50 (2+4+6+8+10+...+50) และแสดงผลบน This is line ่อ HELLO WORLD. จอภาพดังนี้ PROGRAM SUMMATION OF EVEN NUMBER FROM 1 – 50 บรรทัดวาง THE SUMMATION IS ?????? บรรทัดวาง =============================================== บรรทัดวาง written by <ชื่อ นามสกุลของนักเรียน> ใหบันทึกในแฟมชื่อ loop8-2.c จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 993. จงเขียนโปรแกรมเพื่อเปลี่ยนอุณหภูมิที่เปน เซลเซียส ตั้งแต 0 10 20 30 ... 100 เซนเซียส แลวนํามาเปลี่ยนเปน ฟาเรนไฮด โรเมอร และ เคลวิน แลวแสดงผลในรูปของตาราง ดังนี้ PROGRAM CONVERT TEMPERATURE =================================================== Celsius Fahrenheit Romer Kelvin ============================================ 0 32.00 0.00 273 10 50.00 8.00 283 20 68.00 16.00 293 30 86.00 24.00 303 40 104.00 32.00 313 50 122.00 40.00 323 60 140.00 48.00 333 70 158.00 56.00 343 80 176.00 64.00 353 90 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 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 1004. ถานําเงินสด จํานวน 500000 บาทไปฝากธนาคารเปนระยะเวลา 12 ป โดยธนาคารคิดดอกเบี้ยใหรอยละ6.50 แตตองเสียภาษีใหรัฐบาลในอัตรา รอยละ 15 ของดอกเบี้ยที่ไดในแตละป (คิดดอกเบี้ยทบตน) จงแสดงใหเห็นในรูปตารางวาจะไดดอกเบี้ยเทาไร? เสียภาษีใหรัฐบาลเทาไร? และคงเหลือดอกเบี้ยไดสุทธิเทาไร? สูตรการคิดดอกเบี้ย = (เงินฝาก * อัตราดอกเบี้ย * ป)/100ตัวอยางการแสดงผลหมายเหตุ Year หมายถึง ปที่ฝากเงิน Principal หมายถึง เงินตนที่นําเงินไปฝากธนาคาร นําดอกเบี้ยมาทบกับเงินตน Interest หมายถึง ดอกเบี้ยที่ไดในการฝากเงินแตละป 6.5 % Tax หมายถึง ภาษีดอกเบี้ยเงินฝาก คิด 15 % ของดอกเบี้ย Net Interest หมายถึง ดอกเบี้ยคงเหลือสุทธิใหบันทึกในแฟมชื่อ loop8-4.c จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 1015. กูเงินจากธนาคารมา 100000 บาท โดยผอนชําระเงินเงินตนเดือนละ 5000 บาท และตองชําระดอกเบี้ยใหธนาคารรอยละ 8.5 ตอป จงเขียนโปรแกรมเพื่อคํานวณวา ในแตละเดือน ไดชําระหนี้เงินตนเทาไร? และดอกเบี้ยเทาไร ? รวมจายเทาไร? คงเหลือเงินตนคงคาง (Balance) เทาไร? สูตร การคิดดอกเบี้ยตอเดือน = (เงินตน * อัตราดอกเบี้ย /1200)ตัวอยางการแสดงผลใหแสดงผลในรูปของตารางดังนี้ Month Payment Interest Total Pay Balance 1 5000.00 708.33 5708.33 95000.00 2 5000.00 672.92 5672.92 90000.00 3 5000.00 637.50 5637.50 85000.00 4 5000.00 602.08 5602.08 80000.00 5 5000.00 566.67 5566.67 75000.00 6 5000.00 531.25 5531.25 70000.00 7 5000.00 495.83 5495.83 65000.00 8 5000.00 460.42 5460.42 60000.00 9 5000.00 425.00 5425.00 55000.00 10 5000.00 389.58 5389.58 50000.00 11 5000.00 354.17 5354.17 45000.00 12 5000.00 318.75 5318.75 40000.00 13 5000.00 283.33 5283.33 35000.00 14 5000.00 247.92 5247.92 30000.00 15 5000.00 212.50 5212.50 25000.00 16 5000.00 177.08 5177.08 20000.00 17 5000.00 141.67 5141.67 15000.00 18 5000.00 106.25 5106.25 10000.00 19 5000.00 70.83 5070.83 5000.00 20 5000.00 35.42 5035.42 0.00 จัดทําโดยครูเนาวรัตน ใจการุณ
    • การเขียนโปรแกรมภาษาซี หนา 102หมายเหตุ Payment หมายถึง เงินที่ตองชําระเปนเงินตน = 5000 บาท Interest หมายถึง ดอกเบี้ยที่ตองจายตอเดือน 8.5 % Total pay หมายถึง รวมเงินที่ตองจาย 5000+ดอกเบี้ย Balance t หมายถึงยอดเงินคงเหลือสุทธิ ใหบันทึกในแฟมชื่อ loop8-5.c6. จงเขียนโปรแกรมวนรอบทําซ้ําเพื่อคํานวณหาปริมาตรขอปรามิด (Pyramid) ฐานสี่เหลี่ยม โดยใหรับขอมูลเขามาคํานวณดังนี้ PYRAMID CALCULATOR Enter base 1 = ????.?? Enter base 2 = ????.?? Enter high = ????.?? คํานวณดวยสูตร ปริมาตร ปรามิด = 1/3 * พ.ท.ฐาน * สูง แลวแสดงผลดังนี้ PROGRAM PYRAMID Base 1 = ????.?? Base 2 = ????.?? High = ????.?? Volume = ????.??ใหโปรแกรมทําซ้ําตามเงื่อนไขดังนี้ ทําซ้ําโปรแกรมนี้ตั้งแตตนเมื่อถามผูใชวา Do you want to continue? (Y/N) ถาตอบ Y ใหทําซ้ํา แตถาตอบ N ใหจบโปรแกรม แตถาผูใชตอบตัวอักษรอื่น ๆ ที่ไมใช Y หรือ N ใหถามคําถามเดิมอีกคือ Do you want to continue? (Y/N) ถามจนกวาผูใชจะตอบ Y หรือ N เทานั้นใหบันทึกในแฟมชื่อ loop8-6.c จัดทําโดยครูเนาวรัตน ใจการุณ