The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

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

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by suphacha musiksut, 2019-06-17 00:11:22

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

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

โปรแกรมภาษา C เบอื้ งต้น

1 อ. อาจารีย์ ทองอ่อน

บทนา

หน่วยสำคญั ท่ีสุดของคอมพิวเตอร์ก็คือ หน่วยประมวลผลหรือที่เรียกกนั ว่ำ CPU โดย
ปกติ CPU จะมีภำษำของตวั เองท่ีเรียกวำ่ ภำษำเคร่ือง (Machine Language) ซ่ึงจะเป็นภำษำ
ท่ีประกอบไปดว้ ยเลขฐำนสองมำกมำย ดงั น้นั กำรท่ีจะเขียนโปรแกรมควบคุมกำรทำงำน
ของคอมพิวเตอร์ โดยใช้ภำษำเครื่องโดยตรงน้นั จึงทำได้ยำก จึงไดม้ ีกำรพฒั นำตวั แปร
ภำษำเคร่ืองที่เรียกวำ่ โปรแกรมภำษำระดบั สูงข้ึนมำ หรือที่เรียกวำ่ High Level Languages
โดยภำษำในระดบั สูงเหล่ำน้ี จะมีลกั ษณะรูปแบบกำรเขียน (Syntax) ท่ีทำใหเ้ ขำ้ ใจไดง้ ่ำยต่อ
กำรส่ือสำรกบั ผูพ้ ฒั นำ และถูกออกแบบมำให้ง่ำยต่อกำรใช้งำน และจะเปล่ียนคำส่ังจำก
ผใู้ ชง้ ำน ไปเป็นเป็นภำษำเครื่อง เพื่อท่ีจะควบคุมกำรทำงำนของคอมพิวเตอร์ต่อไป ตวั อยำ่ ง
ของโปรแกรมภำษำระดบั สูง ไดแ้ ก่ COBOL ใชก้ นั มำกสำหรับโปรแกรมทำงดำ้ นธุรกิจ,
Fortran ใช้กันมำกสำหรับกำรพฒั นำโปรแกรมด้ำนวิทยำศำสตร์และวิศวกรรมศำสตร์
เพรำะง่ำยต่อกำรคำนวณ, Pascal มีใชก้ นั ทวั่ ไป แต่เนน้ สำหรับกำรพฒั นำเครื่องมือสำหรับ
กำรเรียนกำรสอน, C & C++ ใชท้ ว่ั ไป

2

บทนา

ก่อนท่ีจะลงมือพฒั นำโปรแกรมคอมพิวเตอร์ ข้นั แรก เรำตอ้ งศึกษำรูปแบบควำมตอ้ งกำร
ของโปรแกรมท่ีจะพฒั นำ จำกน้นั ก็วิเครำะห์ถึงปัญหำตลอดจนวิธีกำรแกป้ ัญหำ จำกน้นั จึง
นำเอำควำมคิดในกำรแกป้ ัญหำอยำ่ งเป็นข้นั ตอน ไปเขียนในรูปแบบของโปรแกรมภำษำใน
ระดบั สูง ซ่ึงจะอยใู่ นรูปแบบของ Source Program หรือ Source Code จำกน้นั เรำก็จะใช้
Complier ของภำษำที่เรำเลือก มำทำกำร Compile Source code หรือกล่ำวง่ำยๆ คือแปลง
Source code ของเรำใหเ้ ป็นภำษำเคร่ืองนนั่ เอง ซ่ึงในข้นั ตอนน้ี ผลท่ีได้ เรำจะเรียกวำ่ Object
code จำกน้นั Complier ก็จะทำกำร Link หรือเชื่อม Object code เขำ้ กบั ฟังก์ชนั กำรทำงำน
ใน Libraries ต่ำงๆ ท่ีจำเป็ นต่อกำรใช้งำน แลว้ นำไปไวใ้ นหน่วยควำมจำ แลว้ เรำก็จะ
สำมำรถ Run เพื่อดูผลของกำรทำงำนโปรแกรมได้ หำกโปรแกรมมีขอ้ ผิดพลำด เรำก็จะทำ
กำรแก้ หรือที่เรียกกนั ในภำษำคอมพิวเตอร์วำ่ กำร Debug นน่ั เอง

3

บทนา

ภำษำ C เป็นโปรแกรมภำษำระดบั สูง ถูกพฒั นำข้ึนในปี 1972 ท่ี AT&T Bell Lab เรำ
สำมำรถใชภ้ ำษำ C มำเขียนเป็ นคำสัง่ ต่ำงๆ ท่ีคอมพิวเตอร์สำมำรถเขำ้ ใจได้ และกลุ่มของ
คำสง่ั เหล่ำน้ี เรำกเ็ รียกกนั วำ่ อลั กอริธึม ไดม้ ีผใู้ หค้ ำจำกดั ควำมของคำวำ่ อลั กอริธึม วำ่ เป็น “

A precise description of a step-by-step process that is guaranteed to
terminate after a finite number of steps with a correct answer for
every particular instance of an algorithmic problem that may occur.“

4

รูปแบบโปรแกรมภาษา C

 ตวั อยำ่ งกำรเขียนโปรแกรมภำษำซี
#include <stdio.h>
void main( ) {

/* Display message to standard output */
printf(“My first program.”);
}
ผลกำรทำงำนของโปรแกรม
My first program.

5

รูปแบบโปรแกรมภาษา C

 ตวั อยา่ งการเขียนโปรแกรมภาษาซี

#include <stdio.h>
void main( ) {

/* Display message to standard output */
printf(“My first program.”);
}

6

รูปแบบโปรแกรมภาษา C

ส่วนหัว (Header):
 จะเป็ นส่วนท่ีอยทู่ ่ีตอนตน้ ของโปรแกรม โดยอยนู่ อกส่วนที่เรียกวา่ ฟังก์ชนั ที่ส่วนหัว

ของโปรแกรมจะประกอบดว้ ยคา สั่งที่เป็ นการกาหนดค่าหรือกาหนดตวั แปรต่าง ๆ
คาสั่งในที่ข้ึนต้นด้วยสัญลักษณ์ # เป็ นคา สั่งที่เรี ยกว่า ตัวประมวลผลก่อน
(Preprocessor) คือคา สง่ั ท่ีจะไดร้ ับการทาก่อนท่ีจะมีการคอมไพลโ์ ปรแกรม ตวั
ประมวลผลก่อน ที่สาคญั ของภาษาซีแบ่งออกเป็น 2 ประเภทดงั น้ี

 # include
 # define

7

ส่วนหัว (HEADER)

# include:

 ในภำษำซีจะมีฟังก์ชันมำตรฐำนที่ผู้ผลิตคอมไพเลอร์ได้จัดเตรี ยมไวใ้ ห้ ซ่ึงมักจะ
เก่ียวข้องกับกำรรับข้อมูล กำรแสดงผลข้อมูล กำรคำนวณ และอื่น ๆ ซ่ึงผู้เขียน
โปรแกรมสำมำรถเรียกใช้งำนไดท้ นั ที โดยไม่ตอ้ งเขียนโปรแกรมแกรมเอง ในตวั อยำ่ ง
จะมีกำรใช้คำสง่ั printf( ) ซ่ึงเป็นคำ สั่งที่ใชแ้ สดงขอ้ ควำมออกทำงอุปกรณ์แสดงผล
มำตรฐำน เช่น จอภำพ คำส่งั printf( ) เป็นกำรเรียกใช้ฟังก์ชนั มำตรฐำนซ่ึงอยใู่ นกลุ่มท่ี
เรียกวำ่ Standard Input and Output เม่ือจะเรียกใชฟ้ ังก์ชนั ใดในกลมุ่ ดงั กลำ่ ว จะตอ้ งบอก
ให้คอมไพเลอร์ไปอ่ำนค่ำท่ีอยู่ในอินคลูชไฟล์ท่ีชื่อ stdio.h มำไวท้ ี่ส่วนต้นของ
โปรแกรม โดยใชค้ ำ สงั่
#include <stdio.h>

เพรำะฉะน้นั ผเู้ ขียนโปรแกรมควรจะศึกษำฟังก์ชนั มำตรฐำนท่ีคอมไพเลอร์แต่ละบริษทั ได้
เตรียมไวใ้ หว้ ำ่ คำ สงั่ ใดใชค้ ูก่ บั อินคลูชไฟลใ์ ด

8

ส่วนหัว (HEADER)

# define:
 ใชส้ า หรับการกาหนดคา่ คงที่ ตวั อยา่ งเช่น

#define YES 1
 คาสงั่ ดงั กลา่ วเป็นการกาหนดวา่ หากท่ีใดในโปรแกรมมีคา วา่ YES จะถูก แทนท่ีดว้ ย

ค่าทางขวามือ ในที่น้ีคือ 1

9

รูปแบบโปรแกรมภาษา C

ฟังก์ชัน (Function):
 ส่วนของฟังกช์ นั คือส่วนของคำ สงั่ ที่บอกใหค้ อมพิวเตอร์ทำงำนต่ำง ๆ เช่น กำรรับ

ขอ้ มลู กำรคำนวณ กำรแสดงผล เป็นตน้ โปรแกรมภำษำซีจะประกอบดว้ ยฟังก์ชนั ยอ่ ย
หลำย ๆ ฟังก์ชนั แตจ่ ะมีฟังก์ชนั หลกั ฟังก์ชนั หน่ึงที่ช่ือวำ่ ฟังกช์ นั main( ) เสมอ โดยที่
กำรทำ งำนของโปรแกรมจะตอ้ งเร่ิมกำรทำ งำนจำกฟังกช์ นั น้ี

10

รูปแบบโปรแกรมภาษา C

กฎพ้ืนฐำนที่สำคญั ในภำษำซี
 กำรพิมพอ์ กั ษรตวั พิมพใ์ หญ่และตวั พิมพเ์ ลก็ ในภำษำซีน้นั ในผลลพั ธ์ที่แตกต่ำงกนั
(Case Sensitive) ตวั อยำ่ งเช่น หำกมีกำรพิมพ์ main( ) กลำยไปเป็น Main( ) ก็จะเกิด
ควำมผดิ พลำดข้ึน
 ฟังก์ชนั ของภำษำซีจะแบ่งขอบเขตของฟังก์ชนั แต่ละฟังก์ชนั ดว้ ยเคร่ืองหมำย { }
ในตวั อยำ่ งมีฟังก์ชนั void main( ) คำวำ่ void จะบอกใหร้ ู้วำ่ เม่ือฟังก์ชนั น้ีทำงำน
เสร็จจะไมม่ ีกำรคืนค่ำกลบั ไปยงั ส่ิงที่เรียกใชง้ ำนฟังกช์ นั ในกรณีของฟังกช์ นั main(
) ก็คือ จะไม่มีกำรคืนค่ำใด ๆ กลบั ไปยงั ระบบปฏิบตั ิกำร หลงั ฟังก์ชนั จะตอ้ งตำม
ดว้ ย ( ) เสมอ โดยที่ภำยในวงเลบ็ จะประกอบดว้ ยค่ำที่ส่งเขำ้ มำยงั ฟังก์ชนั ที่เรียกวำ่
พำรำมิเตอร์ (Parameter) หรืออำจจะไมม่ ีค่ำใด ๆ ส่งเขำ้ มำกไ็ ด้

11

รูปแบบโปรแกรมภาษา C

กฎพ้ืนฐำนท่ีสำคญั ในภำษำซี
 คำส่ังต่ำงๆ ซ่ึงตอ้ งเขียนอยู่ในฟังก์ชันเสมอ แบ่งเป็ น 2 ส่วนคือส่วนของกำร
ประกำศตวั แปรที่ตอ้ งกำรใชใ้ นฟังก์ชนั และส่วนของคำ สงั่ เพื่อทำ งำนใดงำนหน่ึง
ในท่ีน้ีมีเฉพำะคำ ส่ังที่ใชใ้ นกำรแสดงผลลพั ธ์ออกทำงจอภำพ คือ printf( ) ใชส้ ำ
หรับกำรแสดงผลลพั ธ์ออกทำงจอภำพ หำกตอ้ งกำรแสดงขอ้ ควำมใด ๆ ออกทำง
จอภำพใหเ้ ขียนขอ้ ควำมน้นั อยภู่ ำยในเคร่ืองหมำย “ ”
 คำสงั่ ในภำษำซีจะตอ้ งปิ ดทำ้ ยดว้ ยเคร่ืองหมำย ; (Semicolon) เนื่องจำกภำษำซีจะใช้
เคร่ืองหมำย ; ในกำรแยกคำ สั่งต่ำง ๆ ออกจำกกนั กำรเวน้ บรรทดั หรือกำรเขียน
คำสั่งไม่ต่อเนื่องกนั จะไม่มีผลต่อคอมไพเลอร์ แต่เป็ นกำรช่วยให้ผเู้ ขียนโปรแกรม
อ่ำนโปรแกรมไดง้ ่ำยข้ึนเท่ำน้นั

12

รูปแบบโปรแกรมภาษา C 13

ตวั อยำ่ ง1
#include <stdio.h> void main( ) { /* Display message to standard output */ printf(“My first program.”); }
ตวั อยำ่ ง2
#include
<stdio.h>
void
main
()
{
/* Display message
to standard
output */
printf
(
“My first program.”
)
;
}

ตวั แปรในโปรแกรมภาษา C

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

a 15 c=a+b a 15
b 30 b 30
c c 45

14

ชนิดของตวั แปรในโปรแกรมภาษา C

ชนิดของ ขนำด (ไบต)์ คำ่ ที่เกบ็ รูปแบบ
ตวั แปร
char 1 ตวั อกั ษร ASCII 1 ตวั ต้งั แต่ 0 ถึง 255 %s
int 2 คำ่ จำนวนเตม็ ต้งั แต่ 32767 ถึง -32768 %d
long 4 ค่ำจำนวนเตม็ ต้งั แต่ 2147483647 ถึง - %ld

unsigned 2147483648 %u
unsigned int 2 คำ่ จำนวนเตม็ ต้งั แต่ 0 ถึง 65535 %lu
float unsigned long 4 คำ่ จำนวนเตม็ ต้งั แต่ 0 ถึง 4294967295 %f
double %lf
4 ค่ำจำนวนจริงต้งั แต่ 3.4 x 10-38 ถึง 3.4 x 1038
8 ค่ำจำนวนจริงต้งั แต่ 3.4 x 10-308 ถึง 3.4 x 10308

15

การใช้ตวั แปรในโปรแกรมภาษา C

เมื่อตอ้ งกำรใชต้ วั แปร จะตอ้ งมีกำรประกำศชื่อตวั แปรที่ตอ้ งกำรใชง้ ำนน้นั มีรูปแบบคือ
ประเภทขอ้ มูล ช่ือตวั แปร ;

ตวั อยำ่ งของกำรประกำศตวั แปร เช่น
float score;
int age;
char ch;
float width, height, length;

กรณีท่ีมีตวั แปรมำกกวำ่ 1 ตวั ท่ีมีชนิดเดียวกนั สำมำรถประกำศไวใ้ นคำ สงั่
เดียวกนั ไดโ้ ดยใชเ้ คร่ืองหมำย , คน่ั ระหวำ่ งตวั แปรแต่ละตวั

16

การใช้ตวั แปรในโปรแกรมภาษา C

กฎการต้งั ชื่อ
ในภำษำซีมีกำรกำหนดกฎในกำรต้งั ช่ือ Identifier ต่ำง ๆ อนั ไดแ้ ก่ ชื่อตวั แปร ช่ือฟังก์ชนั
ช่ือคำ่ คงที่ดงั น้ี

 ใหใ้ ชต้ วั อกั ษร a ถึง z A ถึง Z เลข 0 ถึง 9 และ _ (Underscore) ประกอบกนั เป็นช่ือ
 ข้ึนตน้ ดว้ ยตวั อกั ษรหรือ _
 ตวั อกั ษรตวั พิมพใ์ หญ่ ตวั พิมพเ์ ลก็ มีผลตอ่ กำรต้งั ช่ือและกำรเรียกใชง้ ำน
 ชื่อน้นั จะตอ้ งไม่ซ้ำกบั คำ หลกั (Keyword) ซ่ึงภำษำซีจองไวใ้ ช้ คือ
auto double int struct break else long switch case enum register typedef
char extern return union const float short unsigned continue for signed
void default goto sizeof volatile do if static while

17

การใช้ตวั แปรในโปรแกรมภาษา C 18

คาแนะนาในการต้งั ชื่อ
ในกำรเขียนโปรแกรมท่ีดีน้นั เรำควรทำ กำรต้งั ชื่อของตวั แปร ค่ำคงท่ี ฟังก์ชนั

ใหอ้ ยใู่ นรูปแบบมำตรฐำนดงั น้ี
 ใหต้ ้งั ช่ือที่ส่ือควำมหมำยบอกใหร้ ู้วำ่ ตวั แปรน้นั ใชท้ ำอะไร
 ข้ึนตน้ ดว้ ยตวั อกั ษร
 กรณีต้งั ชื่อตวั แปรมกั จะหรือฟังก์ชนั มกั จะใชต้ วั อกั ษรตวั พิมพเ์ ลก็
 คำ่ คงที่กำหนดโดย #define มกั จะใชต้ วั อกั ษรตวั พิมพใ์ หญ่ท้งั หมด
 กรณีท่ีชื่อตวั แปรประกอบดว้ ยคำ หลำย ๆ คำ อำจจะใช้ตวั อกั ษรตวั พิมพ์ใหญ่
ข้ึนตน้ คำในลำ ดบั ตอ่ มำ หรือใช้ _ แยกระหวำ่ งคำ เช่น totalScore หรือ total_score

ตวั อยำ่ งกำรต้งั ช่ือตวั แปร เช่น
totalscore = score1 + score2 + score3;

ยอ่ มจะทำ ควำมเขำ้ ใจไดง้ ่ำยกวำ่
robert = willy + bird + smith;

การใช้ตวั แปรในโปรแกรมภาษา C

เมื่อมีกำรประกำศตวั แปร จะเกิดกระบวนกำรจองพ้ืนท่ีในหน่วยควำมจำ ให้กบั
ตวั แปรตวั น้นั มีขนำดเท่ำกบั ชนิดของขอ้ มูลท่ีกำหนด เม่ือใดท่ีมีกำรอำ้ งถึงช่ือตวั แปรก็จะ
เป็ นกำรอำ้ งถึงค่ำท่ีเก็บอยู่ในพ้ืนที่หน่วยควำมจำ น้ัน สิ่งท่ีต้องระวงั คือ ควรจะมีกำร
กำหนดค่ำเร่ิมต้นให้กับตวั แปรน้ัน ๆ เสมอ เพรำะพ้ืนที่ในหน่วยควำมจำท่ีถูกจองน้ัน
อำจจะมีค่ำบำงอยำ่ งอยภู่ ำยใน ตวั อยำ่ งของกำรกำหนดค่ำเร่ิมตน้ ใหก้ บั ตวั แปร คือ

int sum=0;
float height=0.0;
จำกคำสง่ั ขำ้ งตน้ ระบบจะทำกำรจองพ้ืนท่ีในหน่วยควำมจำให้กบั ตวั แปรชื่อ sum มีขนำด
เท่ำกบั int (2ไบต)์ และกำหนดให้มีค่ำเร่ิมตน้ เท่ำกบั 0 เมื่อมีกำรอำ้ งถึงชื่อตวั แปรก็จะไดค้ ่ำ
คือ 0 และจองพ้ืนท่ีในหน่วยควำมจำ ใหก้ บั ตวั แปร height มีขนำดเท่ำกบั float (4 ไบต)์ และ
กำหนดใหม้ ีคำ่ เริ่มตน้ เท่ำกบั 0.0

19

การใช้ตวั แปรชุด

ในภำษำซีเรำสำมำรถสร้ำงตวั แปรชุดจำกขอ้ มูลพ้ืนฐำน ไดแ้ ก่ int float float เป็ นตน้
รูปแบบของกำรประกำศตวั แปรชุดทำ ไดด้ งั น้ี

ชนิดขอ้ มลู ช่ือตวั แปร [ ขนำดขอ้ มูล ] ;
ตวั อยำ่ ง

float score[10];
score

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

คำ สง่ั float score[10]; เป็นกำรกำ หนดตวั แปรตวั แปรชุดชื่อ score เป็นตวั แปรชุดชนิด float
ที่มีสมำชิกท้งั หมด 10 ตวั ต้งั แต่ score[0], score[1], score[2], ... , score[9] สมำชิกภำยในตวั
แปรชุดจะเร่ิมท่ี 0 เสมอ และสมำชิกตวั สุดทำ้ ยจะอยทู่ ี่ตำ แหน่งของขนำดที่ประกำศไวล้ บ
ดว้ ย 1 เช่น ประกำศขนำดของตวั แปรชุดไว้ n สมำชิกตวั สุดทำ้ ยจะอยทู่ ี่ตำ แหน่ง n-1

20

การรับข้อมูลและแสดงผลข้อมูล

 ฟังกช์ นั ในกำรรับขอ้ มูล คือ ฟังก์ชนั scanf( )
 ฟังกช์ นั ในกำรแสดงผลขอ้ มลู คือฟังก์ชนั print( )

ในส่วนของกำรใชง้ ำนพ้ืนฐำน ซ่ึงก่อนจะใชง้ ำนฟังก์ชนั ดงั กล่ำวที่ส่วนหวั ของ
โปรแกรมจะตอ้ งมีคำ สง่ั

#include <stdio.h>

21

การรับข้อมูล

ฟังก์ชนั ท่ีใชใ้ นกำรรับขอ้ มูลมีรูปแบบของกำรใชง้ ำนคือ
scanf ( รูปแบบ , อำร์กิวเมนต1์ , อำร์กิวเมนต2์ , … ) ;

ตวั อยำ่ งเช่นตอ้ งกำรรับขอ้ มูลเดือนและปี เป็นจำนวนเตม็ จะตอ้ งใชค้ ำสงั่
int month, year;
scanf(“%d %d”, &month, &year);

22

การแสดงผลข้อมูล

ฟังก์ชนั ที่ใชใ้ นกำรแสดงผลขอ้ มลู มีรูปแบบของกำรใชง้ ำนคือ
printf ( รูปแบบ , อำร์กิวเมนต1์ , อำร์กิวเมนต2์ , … ) ;

ตวั อยำ่ งเช่น
char name[ ] = “Mickey”;
int age = 20;
printf(“%s is %d years old.”, name, age);

ผลลพั ธ์ที่ไดค้ ือ
Mickey is 20 years old.

23

ตวั ดาเนินการ

 ตวั ดำเนินกำรกำหนดคำ่
 ตวั ดำเนินกำรคณิตศำสตร์
 ตวั ดำเนินกำรกำหนดคำ่ แบบผสม
 ตวั ดำเนินกำรเพ่ิมคำ่ และลดคำ่
 ตวั ดำเนินกำรเปลี่ยนชนิดของขอ้ มลู
 ตวั ดำเนินกำรควำมสมั พนั ธ์
 ตวั ดำเนินกำรควำมเท่ำกนั
 ตวั ดำเนินกำรตรรกะ

24

ตวั ดาเนินการกาหนดค่า

ตวั ดำเนินกำรกำหนดค่ำเป็นตวั ดำเนินกำรพ้ืนฐำนท่ีใชใ้ นกำรกำหนดคำ่ ต่ำง ๆ ใหก้ บั ตวั แปร
โดยใชเ้ คร่ืองหมำย = มีรูปแบบของนิพจน์กำหนดค่ำคือ

ตวั แปร = นิพจน์ ;
ตวั แปร1 = ตวั แปร2 = …. = นิพจน์ ;
ตวั อยำ่ งเช่น
age = 10;
speed = distance / time;
x = y = z = 45;

25

ตวั ดาเนินการคณติ ศาสตร์

ตวั ดาเนนิ การ คาอธิบาย ตวั อย่างการ ผลลพั ธ์
ทางาน

1 + Unary plus +10 +10

- Unary minus -7 -7

* Multiplication 10*3 30

2 / Division 10/3 3

% Modulus 10%3 1

3 + Addition 10+3 13

- Subtraction 10-3 7

ตวั อยา่ งเช่น

3 * 2 + 4 % 2 จะไดผ้ ลลพั ธเ์ ท่ากบั (3*2) + (4%2) = 6 + 0 = 6

แต่หากตอ้ งการใหท้ าตวั ดาเนินการในลาดบั ต่าก่อน ใหใ้ ชเ้ คร่ืองหมาย ( ) ครอบ 26

คาสง่ั ที่ตอ้ งการ เช่น
3 * (2 + 4 )% 2 จะไดผ้ ลลพั ธ์เท่ากบั 3 * 6 % 2 = 18 % 2 = 0

ตวั ดาเนินการกาหนดค่าแบบผสม

ตวั ดาเนินการ ตวั อย่างคาส่ัง คาสั่งเตม็
*= a *= 2; a = a * 2;
/= a /=2; a = a / 2;
%= a %= 2; a = a % 2;
+= a += 2; a = a + 2;
-= a –= 2; a = a – 2;

27

ตวั ดาเนินการเพมิ่ ค่าและลดค่า

ตวั ดำเนินกำรเพ่ิมค่ำและลดค่ำ เป็ นตวั ดำเนินกำรเพื่อใชเ้ พ่ิมค่ำตวั แปรข้ึน 1 หรือลดค่ำตวั
แปรลง 1 โดยใช้เคร่ืองหมำย ++ แทนกำรเพ่ิมค่ำข้ึน 1 และ - - แทนกำรลดค่ำลง 1 และ
สำมำรถใชต้ วั ดำเนินเพ่ิมคำ่ หรือลดค่ำกบั ตวั แปรได้ 2 ตำแหน่ง คือ วำงตวั ดำเนินกำรเพิ่มค่ำ
หรือลดคำ่ ไวห้ นำ้ ตวั แปร และวำงไวห้ ลงั ตวั แปร ดงั ตวั อยำ่ ง

a++;

++a;

ท้งั 2 คำ สง่ั จะมีคำ่ เท่ำกบั a = a + 1;

ส่วนคำ สง่ั

a- -;

- - a;

จะมีค่ำเท่ำกบั a = a – 1;

28

ตวั ดาเนินการปลย่ี นชนิดของข้อมูล

กำรเปล่ียนชนิดขอ้ มูลโดยใชค้ ำ ส่งั (Explicit Casting) เช่น หำกตอ้ งแปลงขอ้ มูลชนิด float
ไปเป็นอีกขอ้ มูลชนิด int จะตอ้ งใชค้ ำสงั่

int a;
a = (int)12.423;
จะไดว้ ำ่ a มีค่ำเท่ำกบั 12 กระบวนกำรทำ งำนจะมีกำรเปล่ียนชนิดขอ้ มูลที่อยใู่ กลก้ บั ตวั ดำ
เนินกำรเปล่ียนชนิดขอ้ มูลใหเ้ ป็นชนิดขอ้ มลู ที่ระบุในวงเลบ็ แลว้ จึงมีกำรกำหนดค่ำใหม่น้นั
ใหก้ บั a ท้งั น้ีสำมำรถกำหนดชนิดขอ้ มูลท่ีจะเปลี่ยนค่ำเป็นชนิดขอ้ มลู ใด ๆ ก็ได้

29

ตวั ดาเนินการความสัมพนั ธ์

ตวั ดาเนินการ ความหมาย
> มำกกวำ่
< นอ้ ยกวำ่
>= มำกกวำ่ หรือเท่ำกบั
<= นอ้ ยกวำ่ หรือเท่ำกบั

ผลท่ีไดจ้ ำกกำรใชด้ ำเนินกำรควำมสัมพนั ธ์ คือ จริง (True) หรือเทจ็ (False) ซ่ึงในภำษำซี
แทนดว้ ยเลขจำนวนเตม็ กรณีเทจ็ จะแทนดว้ ยค่ำ 0 และกรณีจริงจะแทนดว้ ยคำ่ ท่ีไมใ่ ช่ 0

30

ตวั ดาเนินการความเท่ากนั ความหมาย
เท่ำกนั
ตวั ดาเนินการ ไมเ่ ท่ำกนั
==
!=

ผลลพั ธ์ของกำรเปรียบเทียบมีค่ำคือจริง หรือเท็จ กำรใช้งำนจะตอ้ งระวงั เพรำะมีควำม
สบั สนระหวำ่ งกำรใชต้ วั ดำเนินกำรควำมเท่ำกนั == กบั ตวั กำหนดค่ำ = ซ่ึงมีกำรทำงำนท่ี
ตำ่ งกนั และตวั ดำเนินกำรไมเ่ ท่ำกนั ใชเ้ คร่ืองหมำย != ไม่ใช่เคร่ืองหมำย <> เหมือนในภำษำ
อ่ืน ๆ เช่น

a == 2 เป็นกำรเปรียบเทียบวำ่ ตวั แปร a มีค่ำเท่ำกบั 2 หรือไม่

a = 2 เป็นกำรกำหนดคำ่ 2 ใหก้ บั ตวั แปร a

31

ตวั ดาเนินการตรรกะ

ตวั ดาเนนิ การ ความหมาย
&& AND
|| OR
! NOT

P Q P&&Q P||Q P !P

true true true true true false

true false false true false true

false true false true

false false false false

32

คาสั่งควบคุม

ในกำรเขียนโปรแกรมแบบโครงสร้ำง จะมีรูปแบบกำรแก้ปัญหำหรือรูปแบบกำรเขียน
โปรแกรมอยู่ 3 ลกั ษณะ คือ กำรเขียนแบบลำดบั (Sequential) กำรเขียนแบบเงื่อนไข
(Selection) และกำรเขียนแบบวนซ้ำ (Repetition) โดยท่ีใชภ้ ำษำซีมีคำสง่ั
 if
 for
 while
 do-while

33

คาส่ัง if

Y เงื่อนไข N Y เง่ือนไข N
คำสง่ั 1
คำสงั่ 2 คำสงั่ 1 คำสง่ั 3
คำสงั่ 2 คำสง่ั 4

ในกำรเขียนภำษำ C if (เง่ือนไข){
if (เง่ือนไข){ คำสงั่ 1;
คำสงั่ 2;
คำสงั่ 1;
คำสง่ั 2; }else {
} คำสง่ั 3;
คำสงั่ 4;
34
}

คาส่ัง if Y เง่ือนไข 1 เงื่อนไข 2 N
คำสงั่ 1 Y
ในกำรเขียนภำษำ C
คำสงั่ 2
if (เง่ือนไข 1){
คำสงั่ 1;

}else if (เงื่อนไข 2){
คำสงั่ 2;

}

35

คาสั่ง for For i=1 to 10 Do
คำสง่ั 1
คำส่งั for เป็นคำ ส่งั วนซ้ำในลกั ษณะท่ีรู้จำนวนรอบของกำรวนซ้ำ คำสง่ั 2
ท่ีแน่นอน โดยแบ่งรูปแบบหลกั ออกเป็น 3 ส่วน ไดแ้ ก่
 ส่วนท่ีใชก้ ำหนดคำ่ เร่ิมตน้ หรือกำหนดคำ่ ตวั นบั ของกำรวนซ้ำ 36
 ส่วนที่ตรวจเงื่อนไขกำรวนซ้ำ
 ส่วนของกำรจดั กำรค่ำตวั นบั ของกำรวนซ้ำ
for ( กำหนดค่ำตวั นบั ; เง่ือนไขกำรวนซ้ำ ; จดั กำรค่ำตวั นบั ){

คำสงั่ 1;
คำสง่ั 2;
}
for ( i=0 ; i < 5 ; i++) {
scanf(“%d”, number);
sum += number;
}

คาส่ัง while เง่ือนไข N
Y
หำกแทนผงั งำนดงั กล่ำวด้วยคำส่ัง while สำมำรถเขียน คำสงั่ 1
รูปแบบของคำสง่ั while ไดด้ งั น้ี
while ( เง่ือนไข ) { คำสงั่ 2

คำสงั่ 1 ; 37
}

คำสง่ั 2 ;
ตวั อยำ่ ง
i = 0;
while ( i < 10 ) {

i++;
}

คาส่ัง do-while

จำกรูปจะเห็นว่ำกำรทำงำนของคำส่ัง do-while จะตอ้ งมีกำร Y คำสง่ั 1 N
ทำงำนคำสง่ั 1 เสมอหลงั จำกน้นั จะมีกำรตรวจสอบเง่ือนไข หำก เงื่อนไข
เง่ือนไขเป็ นจริงก็จะกลบั ไปทำคำสั่งใน do-while อีกจนกว่ำ 38
เง่ือนไขน้นั จะเป็นเทจ็ เขียนในรูปแบบของคำ สง่ั ไดว้ ำ่ คำสงั่ 2
do {

คำสงั่ 1 ;
} while ( เง่ือนไข ) ;
คำสงั่ 2 ;
ตวั อยำ่ ง
do {

printf(“Enter number (between 10 and 20) : “);
scanf(“%d”, &num);
} while (num < 10 || num > 20);

การจดั การแฟ้ มข้อมูล

ฟังก์ชนั ที่ใชส้ ำหรับกำรประมวลผลแฟ้ มขอ้ มูล
ฟังก์ชนั fopen( )
ฟังก์ชนั fclose( )
ฟังก์ชนั fgetc( )
ฟังก์ชนั fputc ( )
ฟังก์ชนั fgets( )
ฟังก์ชนั fputs( )
ฟังกช์ นั fscanf( ) และ fprintf( )
ฟังกช์ นั feof( )

39

การจดั การแฟ้ มข้อมูล

ฟังก์ชัน fopen( ) :
FILE *fileptr;
fileptr = fopen(filename,mode)

ในข้นั ตอนแรกเรำตอ้ งกำหนดตวั แปรพอยน์เตอร์ช้ีไปยงั แฟ้ มขอ้ มูล ในท่ีน้ีใหช้ ่ือตวั แปรน้ี
วำ่ fileptr จำกน้นั ทำกำรเรียกฟังกช์ นั fopen เพื่อทำกำรเปิ ดแฟ้ มขอ้ มลู โดยที่

filename คือ ตวั แปรท่ีเกบ็ ช่ือแฟ้ มขอ้ มูลที่ตอ้ งกำรเปิ ด
mode คือ รูปแบบของกำรเปิ ดแฟ้ มขอ้ มูล

หำกข้นั ตอนของกำรเปิ ดแฟ้ มขอ้ มูลโดยฟังก์ชนั fopen( ) ทำงำนไม่สำเร็จ อำจเน่ืองจำกไม่ 40
พบแฟ้ มขอ้ มูลน้นั ในกรณีท่ีตอ้ งกำรเปิ ดแฟ้ มขอ้ มูลเพ่ืออ่ำน หรือขอ้ มูลในแผน่ เตม็ หรือช่ือ
แฟ้ มขอ้ มลู ยำวเกินไป เป็นตน้ ค่ำท่ีส่งกลบั จำกฟังกช์ นั fopen( ) จะมีค่ำเท่ำกบั วำ่ ง (Null)

การจดั การแฟ้ มข้อมูล

รูปแบบของกำรเปิ ดแฟ้ มขอ้ มลู มีดงั น้ี
• “w” ทำกำรสร้ำงแฟ้ มขอ้ มูลใหมแ่ ละเปิ ดแฟ้ มขอ้ มลู เพื่อเขียน หำกมีแฟ้ มขอ้ มูลน้นั อยู่

แลว้ จะทำกำรลบขอ้ มูลเดิม และสร้ำงแฟ้ มขอ้ มลู ใหม่
• “r” ทำกำรเปิ ดแฟ้ มขอ้ มูลเพื่อทำกำรอำ่ นขอ้ มูล
• “a” ทำกำรเปิ ดแฟ้ มขอ้ มูลเพ่ือทำกำรเขียนขอ้ มูลใหม่ตอ่ ทำ้ ยขอ้ มูลที่มีอยเู่ ดิม
• “r+” ทำกำรเปิ ดแฟ้ มขอ้ มูลที่มีอยแู่ ลว้ เพื่อทำกำรแกไ้ ขขอ้ มูล
• “w+” ทำกำรสร้ำงแฟ้ มขอ้ มลู ใหมแ่ ละเปิ ดแฟ้ มขอ้ มลู น้นั เพื่อทำกำรอ่ำนและเขียนขอ้ มูล
• “a+” ทำกำรเปิ ดแฟ้ มขอ้ มูลเพื่อทำ กำรเขียนขอ้ มลู ใหมต่ อ่ ทำ้ ยขอ้ มูลท่ีมีอยเู่ ดิม และทำ

กำรสร้ำงแฟ้ มขอ้ มลู ใหมห่ ำกไม่พบแฟ้ มขอ้ มูลท่ีระบุ

41

การจดั การแฟ้ มข้อมูล

ฟังก์ชัน fclose( ) 42
เม่ือทำ กำรประมวลผลแฟ้ มข้อมูลเสร็จเรียบร้อยแลว้ สิ่งท่ีจำ เป็ นจะตอ้ งทำ คือกำรปิ ด
แฟ้ มข้อมูลน้ันเพ่ือคืนค่ำพ้ืนที่ในหน่วยควำมจำให้สำมำรถนำ ไปใช้งำนอื่นต่อไปได้
รูปแบบของฟังก์ชนั fclose ( ) มีดงั น้ี

fclose(fileptr);
โดยที่ fileptr คือตวั แปรพอยน์เตอร์ช้ีไปยงั แฟ้ มขอ้ มูลที่ตอ้ งกำรปิ ดทุกคร้ังที่มีกำรเปิ ด
แฟ้ มขอ้ มูลดว้ ยฟังก์ชนั fopen ( ) ควรจะใชฟ้ ังกช์ นั fclose ( ) ดว้ ยเสมอ

ฟังก์ชัน fgetc( )
ฟังก์ชนั fgetc ( ) จะทำกำรอำ่ นคำ่ อกั ขระทีละอกั ขระจำกแฟ้ มขอ้ มูลรูปแบบเป็นดงั น้ี

ch = fgetc (fileptr) ;
โดยท่ี ch เป็นตวั แปรที่ใชร้ ับค่ำอกั ขระท่ีไดจ้ ำกกำรอ่ำนแฟ้ มขอ้ มูล และ fileptr คือตวั แปร
พอยนเ์ ตอร์ช้ีไปยงั แฟ้ มขอ้ มลู ท่ีตอ้ งกำรอำ่ นขอ้ มูล

การจดั การแฟ้ มข้อมูล

ฟังก์ชัน fputc ( ) 43

ฟังก์ชนั น้ีใชส้ ำหรับกำรเขียนขอ้ มูลทีละอกั ขระลงในแฟ้ มขอ้ มูล เม่ือเขียนขอ้ มูลเสร็จ 1
อกั ขระจะทำกำรเลื่อนตำแหน่งของพอยน์เตอร์ของแฟ้ มขอ้ มูลไป 1 ตำแหน่ง รูปแบบของ
ฟังกข์ นั fputc ( ) เป็นดงั น้ี

fputc ( ch, fileptr);

โดยท่ี ch เป็นตวั แปรที่เก็บค่ำอกั ขระท่ีตอ้ งกำรเขียนลงแฟ้ มขอ้ มูล และ fileptr คือตวั แปร
พอยนเ์ ตอร์ช้ีไปยงั แฟ้ มขอ้ มลู ที่ตอ้ งกำรเขียนขอ้ มลู

ฟังก์ชัน fgets( )

ฟังกช์ นั น้ีใชส้ ำหรับอำ่ นขอ้ มลู ในรูปแบบของสตริงจำกแฟ้ มขอ้ มูล โดยในกำรอ่ำนค่ำขอ้ มูล
ตอ้ งทำ กำรระบุขนำดของขอ้ มลู ที่ตอ้ งกำรอำ่ น รูปแบบของฟังกช์ นั fgets ( ) เป็นดงั น้ี

fgets ( str , len , fileptr );

โดยท่ี str เป็ นตวั แปรท่ีใชส้ ำหรับเก็บค่ำสตริงที่ไดจ้ ำกกำรอ่ำนขอ้ มูล len คือตวั แปรที่ใช้
สำหรับกำหนดขนำดของขอ้ มูลที่ทำกำรอ่ำน และ fileptr คือตวั แปรพอยน์เตอร์ช้ีไปยงั
แฟ้ มขอ้ มลู ที่ตอ้ งกำรอำ่ น

การจดั การแฟ้ มข้อมูล

ฟังก์ชัน fputs( )

ฟังกช์ นั น้ีใชส้ ำหรับกำรเขียนขอ้ มูลในรูปแบบของสตริงลงในแฟ้ มขอ้ มลู รูปแบบเป็นดงั น้ี

fputs ( str , fileptr );

โดยที่ str เป็นตวั แปรท่ีใชส้ ำหรับเกบ็ คำ่ สตริงท่ีตอ้ งกำรบนั ทึก และ fileptr คือตวั แปรพอยนเ์ ตอร์ช้ีไป
ยงั แฟ้ มขอ้ มูลท่ีตอ้ งกำรเขียน

ฟังก์ชัน fscanf( ) และ fprintf( )

หำกต้องกำรอ่ำนหรือเขียนขอ้ มูลโดยกำหนดรูปแบบของกำรประมวลผลน้ันสำมำรถทำได้โดย
เรียกใชฟ้ ังก์ชนั fscanf ( ) เพ่ือกำรอ่ำนขอ้ มูล และเรียกใชฟ้ ังก์ชนั fprintf ( ) เพ่ือกำรเขียนขอ้ มูล
รูปแบบของท้งั สองฟังก์ชนั เป็นดงั น้ี

fscanf (fileptr , format , arg1,arg2, … );

fprintf (fileptr , format , arg1,arg2, … );

fileptr คือ ตวั แปรพอยนเ์์ ตอร์ช้ีไปยงั แฟ้ มขอ้ มูลที่ตอ้ งกำรอำ่ นหรือเขียน 44
format คือ รูปแบบของกำรอำ่ นและเขียนขอ้ มลู

arg1,arg2,… คือ ตวั แปรที่ตอ้ งกำรส่งค่ำเพ่ืออำ่ นหรือเขียนขอ้ มลู

การจดั การแฟ้ มข้อมูล

ฟังก์ชัน feof( )
กำรเก็บขอ้ มลู ในแฟ้ มขอ้ มูลทุกแฟ้ มน้นั จะมีกำรเกบ็ อกั ขระพิเศษท่ีไม่สำมำรถมองเห็นไดค้ ือ EOF
(End Of File) เพื่อเป็นสิ่งบอกใหท้ รำบวำ่ เป็นจุดสิ้นสุดของแฟ้ มขอ้ มูล ฟังก์ชนั ที่ใชต้ รวจสอบวำ่
ตำแหน่งของไฟล์พอยน์เตอร์ปัจจุบนั เป็ นตำแหน่งสิ้นสุดของแฟ้ มขอ้ มูลใช่หรือไม่คือฟังก์ชัน
feof ( ) รูปแบบกำรใชง้ ำนฟังกช์ นั น้ีคือ

retvalue = feof ( fileptr );
fileptr คือ ตวั แปรพอยนเ์ ตอร์ท่ีช้ีไปยงั แฟ้ มขอ้ มลู
retvalue คือค่ำท่ีคืนกลบั มำเพื่อบอกใหท้ รำบวำ่ ไฟลพ์ อยนเ์ ตอร์ช้ีอยทู่ ี่ตำแหน่ง EOF หรือไม่

ถำ้ retvalue = 0 แสดงวำ่ ไฟลพ์ อยนเ์ ตอร์ไมไ่ ดช้ ้ีอยทู่ ี่ตำแหน่ง EOF
ถำ้ retvalue ไม่เท่ำกบั 0 แสดงวำ่ ไฟลพ์ อยนเ์ ตอร์ช้ีอยทู่ ่ีตำแหน่ง EOF

45


Click to View FlipBook Version