บทที่ 3 การควบคุมโปรแกรม การเขียนโปรแกรมโดยทัว่ ไป จะเปนลักษณะการทํางานแบบบนลงลาง (top-down) คือโปรแกรมจะเริ่มตนทํางานที่ฟงกชั่น main() แลวกระทําทีละคําสั่งตั้งแตคําสั่งแรกจนถึงคําสั่ง สุดทายตามลําดับ จนกระทั่งจบฟงกชนั่ แตในความเปนจริงการเขียนโปรแกรมแบบนี้จะพบได นอยมาก สวนใหญในฟงกชั่นจะประกอบดวยขอความสั่งควบคุม เพื่อควบคุมลําดับการกระทํา การภายในโปรแกรม โดยอาจใหมกี ารเลือกทําเพียงบางขอความสั่งหรือ ใหทําบางขอความสั่ง หลายครั้ง ดังนั้นจะเห็นไดวา ขอความสั่งควบคุมโปรแกรมจะชวยเพิ่มขีดความสามารถในการ กระทําการใหมีประสิทธิภาพ ทําใหโปรแกรมสามารถทํางานไดหลากหลายรูปแบบ อาทิ สามารถ กําหนดเงื่อนไขใหโปรแกรมสามารถเลือกกระทําการหรือไมกระทําการบางขอความสั่ง ใน โปรแกรมภาษาซีมีขอความสั่งที่นักเขียนโปรแกรมสามารถใชเพื่อควบคุมลําดับของการกระทําการ โปรแกรมหลายชนิด ซึ่งจะไดอธิบายถึงรายละเอียดในบทนี้
3.1 ตัวดําเนินการสัมพันธ (relational operator) ตัวดําเนินการสัมพันธ ใชสําหรับเปรียบเทียบนิพจน ผลของการเปรียบเทียบนิพจนที่มีตัว ดําเนินการสัมพันธจะใหผลลัพธเปนจริงหรือเท็จ ตัวดําเนินการสัมพันธ มีวิธีการใชดงั นี้ ตัวดําเนินการ == > < >= <= !=
ความหมาย เทากับ มากกวา นอยกวา มากกวา หรือ เทากับ นอยกวา หรือ เทากับ ไมเทากับ
ตัวอยาง x==y x>y x= y x <=y x !=y
สําหรับนิพจนที่มีการใชตัวดําเนินการสัมพันธ เมื่อการเปรียบเทียบไดผลลัพธเทากับศูนย จะแปลความหมายวาเท็จ แตหากผลลัพธเทากับหนึ่ง จะแปลความหมายวาจริง
ตัวอยาง 3.1 การแปลความหมายของนิพจน เมื่อกําหนดให x=5, y=10 นิพจน x==y x>y x >= y x <=y x !=y x*x < y*y x+y >= x*y
ผลลัพธ 0 0 0 1 1 1 0
การแปลความหมาย เท็จ เท็จ เท็จ จริง จริง จริง เท็จ
3.2 ตัวดําเนินการตรรกะ (logical operator) ตัวดําเนินการตรรกะใชสําหรับเชื่อมโยงความสัมพันธระหวางนิพจนตรรกะตั้งแต 2 นิพจนขึ้นไป ผล จากการเชื่อมโยงความสัมพันธดังกลาว จะใหผลลัพธเปนจริงหรือเท็จ ตัวดําเนินการตรรกะมีวิธีการใชดังนี้ ตัวดําเนินการ ความหมาย ตัวอยาง && และ (and) x&&y || หรือ (or) x||y ! ไม (not) !x การทํางานของตัวดําเนินการและ (and) ตัวดําเนินการหรือ (or) และตัวดําเนินการไม (not) x y นิพจน ผลลัพธ การแปลความหมาย x&&y 1 nonzero(จริง) nonzero(จริง) จริง x&&y 0 nonzero(จริง) 0 (เท็จ) เท็จ x&&y 0 0 (เท็จ) nonzero(จริง) เท็จ x&&y 0 0 (เท็จ) 0 (เท็จ) เท็จ x||y 1 nonzero(จริง) nonzero(จริง) จริง x||y 1 nonzero(จริง) 0 (เท็จ) จริง 0 (เท็จ)
nonzero(จริง)
x||y
1
0 (เท็จ)
0 (เท็จ)
x||y
0
nonzero(จริง)
!x
0
0 (เท็จ)
!x
1
จริง เท็จ เท็จ จริง
3.3 ลําดับในการดําเนินการ ในนิพจนที่ประกอบดวยตัวดําเนินการตาง ๆ หลายชนิด จะตองดําเนินการตามลําดับดังตอไปนี้ 1. ( ) 2. ++ -- + - ! 3. * / % 4. + 5. < <= > >= 6. = = != 7. && 8. || 9. = += -= *= /= %= ในนิพจนที่ประกอบดวยตัวดําเนินการที่อยูในลําดับเดียวกันหลายตัว จะตองดําเนินการตัวดําเนินการที่ อยูดานซายของนิพจนกอน
ตัวอยาง 3.2 นิพจน
‘e’ +1 = = ‘f’ 3
การดําเนินการ
ผลลัพธ
การแปลความหมาย
(‘e’+1)= = ‘f’ (3<(k+3))&&0 ((20*3)/5) || (0 && 5)
1 0 1
จริง เท็จ จริง