ข้อผิดพลาดของโปรแกรม และตัวดำเนินการ Hand out 3 ข้อผิดพลาดของโปรแกรม และตัวดำเนินการ ( Error and Operator ) By Sasithorn suchaiya
ข้อผิดพลาดของโปรแกรม (Error) ในการเขียนโปรแกรมและคอมไพล์อาจมีข้อผิดพลาดขึ้นได้ ถ้าหากคอมพิวเตอร์พบข้อผิดพลาดต่าง ๆ มันจะไม่สามารถทํ าโปรแกรมต่อไปได้ โดยทั่วไปแล้วข้อผิดพลาดของโปรแกรมมีสามลักษณะคือ 1. Syntax 2. Run-time 3. Logical
ข้อผิดพลาดของโปรแกรม (Error) Syntax Error ข้อผิดพลาดประเภทนี้เกิดจากการเขียนโปรแกรมไม่เป็นไปตามข้อกําหนด เช่น 1. ขาดเครื่องหมายไปบางประเภท 2. เขียนโปรแกรมที่มีรูปแบบไม่ตรงตามข้อกําหนด 3. ประกาศตัวแปรผิดพลาด โดยจะมีการแจ้งข้อผิดพลาดตอนคอมไพล์โปรแกรม พิจารณาตัวอย่างโปรแกรมต่อไปนี้
Syntax Error
ข้อผิดพลาดของโปรแกรม (Error) Syntax Error ในการเขียนโปรแกรมข้างต้นจะเกิด syntax error ขึ้น เนื่องจากเขียนโปรแกรมไม่ถูกต้องตามข้อกําหนด โดย ข้อผิดพลาดที่ 1 จะเห็นว่าสะกด integer ผิด ข้อผิดพลาดที่ 2 จะขาดเครื่องหมาย semicolon (;) ข้อผิดพลาดที่ 3 จะขาดเครื่องหมาย quote mark โดยทั่วไปแล้วเมื่อเกิดข้อผิดพลาดประเภทนี้ คอมไพล์เลอร์จะแจ้งข้อผิดพลาดและแสดง เคอร์เซอร์ ที่ตําแหน่งนั้น เมื่อแก้ไขให้ถูกต้องจะทําให้คอมไพล์ต่อไปได้
ข้อผิดพลาดของโปรแกรม (Error) Run – Time - Error เป็นข้อผิดพลาดที่เกิดขึ้นตอนรันโปรแกรม บางครั้งจะเรียกข้อผิดพลาดนี้ว่า execution error ตัวอย่างเช่นถ้ามีการเขียนโปรแกรมดังต่อไปนี้
ข้อผิดพลาดของโปรแกรม (Error) Run – Time - Error เมื่อโปรแกรมทํางานจะเกิดการหารด้วยค่าศูนย์ขึ้น โดยโปรแกรมจะแจ้งข้อความ division by zero ออกมาทางจอภาพ
ข้อผิดพลาดของโปรแกรม (Error) Logical Error ข้อผิดพลาดแบบนี้จะเกิดจากการออกแบบโปรแกรม โดยจะไม่มีการแจ้งข้อผิดพลาดออกมาทางคอมพิวเตอร์ ตัวอย่างเช่นถ้าหากเราต้องการหาค่าเฉลี่ยของการบวกกันของตัวแปร B กับ C และเขียนโปรแกรมให้ทํางานเป็น
ข้อผิดพลาดของโปรแกรม (Error) Logical Error ถ้าหากค่าใน B เป็น 60 และค่าใน C เป็น 80 ผลที่ได้จะมีค่าเท่ากับ 100 ซึ่งคอมพิวเตอร์คํานวณได้ถูกต้อง แต่การเขียนโปรแกรมนั้นถูกออกแบบมาผิด ถ้าหากต้องการให้คอมพิวเตอร์หาค่าเฉลี่ย ในกรณีนี้จะต้องให้ B บวกกับ C อยู่ในวงเล็บสําหรับ กรณีที่ใช้ประเภทของตัวแปรไม่ถูกต้อง เช่นประกาศตัวแปรเป็น Integer และให้ตัวแปรนั้นเก็บค่าที่มากกว่า 32767 ก็เป็นข้อผิดพลาดประเภทนี้เช่นกัน
ตัวดำเนินการ(Operation) ในการเขียนโปรแกรมตัวดําเนินการ จะเป็นตัวที่ทําหน้าที่รวมค่าต่าง ๆ และ กระทํากับค่าต่าง ๆ ให้เป็นค่าเดียวกัน อย่างเช่นในโปรแกรมในบทที่ผ่านมามีการนําข้อมูลที่เป็นตัวแปรมาคูณกับค่าคงที่ ซึ่งจะต้องใช้ตัวดําเนินการทางคณิตศาสตร์เพื่อทําการคูณ ตัวดําเนินการมี 4 ประเภทดังนี้ ( ในหนังสือที่อ่านอาจมีมากกว่า 4 ประเภทก็ได้ ) 1 ตัวดําเนินการเลขคณิต 2 ตัวดําเนินการเปรียบเทียบ 3 ตัวดําเนินการทางตรรกะ (Logical Operator) 4 ตัวดําเนินการระดับบิต (Bitwise Operator) ไม่สอน
1. ตัวดําเนินการเลขคณิต ใช้สําหรับกระทําการคํานวณทางคณิตศาสตร์ เช่นบวก ลบ คูณ หาร โดยจะนําข้อมูลตัวหนึ่งไปกระทํากับอีกตัวหนึ่ง โดยให้ผลลัพธ์เป็นตัวเลขทางคณิตศาสตร์ ตัวดําเนินการทางคณิตศาสตร์แบ่งออกได้ดังต่อไปนี้
1. ตัวดําเนินการเลขคณิต
1. ตัวดําเนินการเลขคณิต คําถาม หลังจากคอมพิวเตอร์ทําคําสั่งต่อไปนี้ เอาต์พุตที่ได้จะเป็นอย่างไร ก. 26 MOD 4 ข. 26 DIV 4 ค. 26 / 4 คําถาม ในการทําคําสั่งต่อไปนี้ ผลลัพธ์ที่ได้จะเป็นอย่างไร ก. 1 + 2 * 3 + 4 ข. 6 + 4 / 2 + 3 ค. 2 / 3 * 4 คําถาม พิจารณาโปรแกรมดังนี้ 2 + 3 * 4 จะมีค่าเท่ากับ 20 เพราะ (2 + 3) * 4 หรือเท่ากับ 14 เพราะ 2 + (3 * 4)
2. ตัวดําเนินการเปรียบเทียบ ตัวดําเนินการเปรียบเทียบ (Relation Operators) จํานวน ข้อมูลสองค่ามาเปรียบเทียบกัน โดยข้อมูลทั้งสองค่า จะต้องเป็นข้อมูลประเภทเดียวกัน ผลลัพธ์ที่ได้จะเป็น ค่าจริงหรือเท็จ
2. ตัวดําเนินการเปรียบเทียบ
3. ตัวดําเนินการทางตรรกะ (Logical Operator)
ข้อสังเกตุ ถ้าหากในประโยคภาษาปาสคาลมีการใช้ตัวดําเนินการหลายตัว ภาษาปาสคาลจะจัดลําดับความสําคัญการทํางานก่อนหลังดังต่อไปนี้
3. ตัวดําเนินการทางตรรกะ (Logical Operator) ตัวอย่าง การกระทําต่อไปนี้ผลลัพธ์ที่ได้จะเป็นจริงหรือเท็จ ถ้า X = 6 , Y = 13 และ Z = 4.2 ( ( X < > Y DIV 2) OR (Z <= Y) AND ( NOT (Z = X / 2) )
3. ตัวดําเนินการทางตรรกะ (Logical Operator) วิธีคิด ( (6 < > 13 DIV 2) OR (4.2 <= 13) AND (NOT (4.2 = 6 / 2) ) ( (6 < > 6) OR (4.2 <= 13) AND (NOT (4.2 = 6 / 2) ) (false) OR true) AND true true
แบบฝึกหัดท้ายบทที่ 4 3. จงหาผลลัพธ์จากการทําต่อไปนี้ 3.1 8 * 6 / 3 * 4 3.3 (8 * 6) / 3 * 4 3.2 8 * 6 / (3 * 4) 3.4 1 + 4 * 6 + 8 / 4 + 4 4. ถ้าหาก a = 49 , b = 5 และ C = 3 จงบอกผลลัพธ์จากการทํางานต่อไปนี้ 4.1 a MOD b * c + 1 4.4 a MOD (b * c) + 1 4.2 24 / c * 4 4.5 a DIV b MOD 2 4.3 7 + 2 div c – 1 4.6 48 / (c * 2) * 4
Take home Sec A ส่งงานวันพุธที่ 10 กันยายน 2551 ในคาบ Sec B ส่งงานวันพุธที่ 10 กันยายน 2551 ในคาบ Sec c ส่งงานวันพฤหัสที่ 11 กันยายน 2551 ในคาบ คำสั่ง 1. อ่านบทที่ 5 เรื่อง หัวข้อที่ 5.3 รูปแบบและการแสดงผล หัวข้อที่ 5.4 ฟังก์ชั่นทางคณิตศาสตร์ หัวข้อที่ 5.5 ฟังก์ชั่นและตัวอักขระ หัวข้อที่ 5.6 ตัวดำเนินการ + 2. ทำแบบฝึกหัดท้ายบทที่ 5