ชุดค ำสั่งในกำรเขียนโปรแกรม · 2017-08-31 ·...
TRANSCRIPT
ชุดค ำสั่งในกำรเขียนโปรแกรม
ใช้ค ำสั่งควบคุมซึ่งมี 3 รูปแบบ คือ ค ำสั่งแบบตำมล ำดับ (Sequence Control Statement) ค ำสั่งแบบมีทำงเลือก (Selection Control Statement)
ค ำสั่ง if / if_else / nested if / switch ค ำสั่งแบบท ำซ ำ (Iteration Control Statement)
ค ำสั่ง while / do_while / for
ค ำสั่ง break ค ำสั่ง continue
2
ทุกค ำสั่งจะท ำงำนตำมล ำดับ โดยไม่มีกำรข้ำมค ำสั่งใด แต่ละค ำสั่งจะถูกเรียกใช้งำนเพียงครั งเดียว กำรท ำงำนจะเริ่มจำกค ำสั่งที่ 1 แล้วท ำค ำสั่งที่ 2 และถัดไปเรื่อยๆ จนครบทุกค ำสั่ง
3
โปรแกรมค ำนวณเงินโบนัส
สร้ำงโปรเจ็กต์ Bonus1 สร้ำง Java Class ชื่อ Bonus_Calculator ไว้ในโปรเจ็กต์ Bonus1 สร้ำงเมธอดค ำนวณเงินโบนัส (calBonus) รับค่ำข้อมูลเงินเดือนชนิด float และคืนค่ำเงินโบนัสที่ค ำนวณได้ชนิด float สร้ำง Java Main Class ชื่อ Bonus1 ไว้ในโปรเจ็กต์ Bonus1 เพื่อเรียกใช้คลำส Bonus_Calculator
4
มีกำรตรวจสอบเงื่อนไขของค ำสั่งก่อนท ำงำน เพื่อตัดสินใจเลือกทิศทำงกำรท ำงำนของโปรแกรม
จะข้ำมกำรท ำงำนของบำงชุดค ำสั่งไป มี 4 ค ำสั่งคือ ค ำสั่ง if ค ำสั่ง if…else ค ำสั่ง nested if ค ำสั่ง switch
5
ควบคุมให้โปรแกรมตัดสินใจท ำงำนหรือไมท่ ำงำนในชุดค ำส่ังที่ก ำหนด ตรวจสอบจำกนิพจน์ที่ก ำหนดว่ำเป็นจริงหรือเท็จ
ถ้ำนิพจน์ เป็นจริง (true) โปรแกรมจะท ำงำนที่ชุดค ำสั่งที่อยู่ภำยใต้ค ำสั่ง if ถ้ำนิพจน์ เป็นเท็จ (false) โปรแกรมจะข้ำมไปท ำงำนที่ค ำสั่งต่อไปทันที
มีรูปแบบกำรท ำงำนดังนี if (boolean_expression) {
statements;}โดยที่
boolean_expression เป็นนิพจน์เงื่อนไข ซ่ึงมีผลกำรตรวจสอบเป็น true หรือ falsestatements เป็นชุดของค ำสั่งท่ีจะท ำงำนเมื่อเงื่อนไขที่ก ำหนดให้เป็น true
6
โปรแกรมค ำนวณคะแนนร้อยละ เมื่อกดเลข 1 บนแป้นพิมพ์
7
สร้ำงโปรเจ็กต์ If_Test1 สร้ำง Java Class ชื่อ ifTest_Condition ไว้ในโปรเจ็กต์ If_Test1 สร้ำงเมธอดตรวจสอบค่ำตัวเลขช่ือ checkValue รับค่ำข้อมูลตัวเลขเป็นชนิด int และ
คืนค่ำผลกำรตรวจสอบเป็นชนิด boolean สร้ำง Java Main Class ชื่อ If_Test1 ไว้ในโปรเจ็กต์ If_Test1 เพื่อเรียกใช้คลำส ifTest_Condition
8
ควบคุมให้โปรแกรมเลือกท ำงำนในชุดค ำสัง่ใดชุดค ำสั่งหนึ่งจำก 2 ทำงเลือก ตรวจสอบจำกนิพจน์ที่ก ำหนดว่ำเป็นจริงหรือเท็จ
ถ้ำนิพจน์ เป็นจริง (true) โปรแกรมจะท ำงำนที่ชุดค ำสั่งที่อยู่ภำยใต้ค ำสั่ง if ถ้ำนิพจน์ เป็นเท็จ (false)โปรแกรมจะท ำงำนที่ชุดค ำสั่งที่อยู่ภำยใต้ค ำสั่ง else
มีรูปแบบกำรท ำงำนดังนี if (boolean_expression) {
statement_1;} else {
statement_2;}โดยที่
boolean_expression เป็นนิพจน์เงื่อนไข ซ่ึงมีผลกำรตรวจสอบเป็น true หรือ falsestatements_1 เป็นชุดของค ำสั่งที่จะท ำงำนเมื่อเงื่อนไขที่ก ำหนดให้เป็น truestatements_2 เป็นชุดของค ำสั่งที่จะท ำงำนเมื่อเงื่อนไขที่ก ำหนดให้เป็น false
9
ในกรณีที่มีค ำส่ังมำกกว่ำ 1 ค ำสั่ง และไม่ใส่เครื่องมือหมำย { } ครอบค ำสั่งทั งหมด จะท ำให้โปรแกรมท ำงำนเฉพำะค ำสั่งแรกเท่ำนั น ท ำให้ผลกำรท ำงำนผิดพลำดได้
จำกตัวอย่ำงโปรแกรมข้ำงต้น จะได้ผลกำรท ำงำนของโปรแกรมเหมือนกัน แต่จะแตกต่ำงจำกโค้ดตัวอย่ำงโปรแกรมข้ำงลำ่งนี
ควรใช้งำนค ำสั่ง if โดยก ำหนดค ำสั่งภำยใต้เครื่องหมำย { } เสมอ10
โปรแกรมตรวจสอบอำยเุกษียณรำชกำรของข้ำรำชกำร
11
สร้ำงโปรเจ็กต์ If_else_Test1 สร้ำง Java Class ชื่อ ifelseTest_Condition ไว้ในโปรเจ็กต์ If_else_Test1 สร้ำงเมธอดตรวจสอบอำยุ (checkRetired) รับค่ำข้อมูลอำยุเป็นชนิด int และ
คืนค่ำผลกำรตรวจสอบเป็นข้อมูลชนิด boolean สร้ำง Java Main Class ชื่อ If_else_Test1 ไว้ในโปรเจ็กต์ If_else_Test1 เพื่อเรียกใช้คลำส
ifelseTest_Condition
12
ควบคุมให้โปรแกรมเลือกท ำงำนในชุดค ำสัง่ใดชุดค ำสั่งหนึ่งจำกหลำยทำงเลือก แต่ละทำงเลือกจะมกีำรก ำหนดนิพจน์เงื่อนไขเพื่อให้โปรแกรมตรวจสอบนิพจน์
หำกพบว่ำทำงเลือกไหนมีนิพจน์เป็นจริง (true) ก็จะท ำงำนที่ชุดค ำสั่งภำยในทำงเลือกนั น โดยไม่พิจำรณำทำงเลือกอื่นที่ยังไม่ได้ท ำกำรตรวจสอบอีก มีรูปแบบกำรท ำงำน ดังนี
if (boolean_expression_1) { statement_1;
} else if (boolean_expression_2) {
statement_2;}else {
statement_n;}
13
โดยที่boolean_expression_1, boolean_expression_2
เป็นนิพจน์เงื่อนไขทำงตรรกศำสตร์ statements_1 เป็นชุดของค ำสั่งที่จะท ำงำนเมื่อเงื่อนไข ของ
boolean_expression_1 เป็น truestatements_2 เป็นชุดของค ำสั่งที่จะท ำงำนเมื่อเงื่อนไข ของ
boolean_expression_2 เป็น truestatements_n เป็นชุดของค ำสั่งที่จะท ำงำนเมื่อเงื่อนไขที่ก ำหนดให้
ทั งหมด เป็น false
โปรแกรมตรวจสอบกำรเรียนครบตำมหลกัสูตรจำกจ ำนวนหน่วยกิตวิชำเอกบังคับและวิชำเอกเลือก
14
สร้ำงโปรเจ็กต์ Nested_If_Test1 สร้ำง Java Class ชื่อ nestedifTest_Condition ไว้ในโปรเจ็กต์ Nested_If_Test1 สร้ำงเมธอดตรวจสอบจบ (checkPass) ซึ่งรับค่ำข้อมูลจ ำนวนหน่วยกิตวิชำเอกบังคับ
และวิชำเอกเลือกเป็นชนิด int และไม่คืนค่ำกลับ ให้แสดงผลในเมธอดนี เลย สร้ำง Java Main Class ชื่อ Nested_If_Test1 ไว้ในโปรเจ็กต์ Nested_If_Test1 เพื่อเรียกใช้คลำส
nestedifTest_Condition
15
ควบคุมให้โปรแกรมเลือกท ำงำนในชุดค ำสั่งใดชุดค ำสั่งหนึ่งจำกหลำยทำงเลือก แต่ละทำงเลือกจะมีกำรก ำหนดเงื่อนไขของแต่ละทำง โดยตรวจสอบเงื่อนไขแต่ละทำงเลือก หำกพบว่ำทำงเลือกใดมีเงื่อนไงเป็นจริง (true) จะท ำงำนที่ชุดค ำสั่งภำยในทำงเลือกนั น โดยไม่พิจำรณำทำงเลือกอื่นที่ยังไม่ตรวจสอบอีก มีรูปแบบกำรท ำงำนดังนี
switch (expression) {case list_value_1: statement_1;
break;case list_value_2: statement_2;
break; case list_value_n: statement_n;
break;default : statement;
}16
โดยที่expression เป็นนิพจน์ที่ต้องตรวจสอบค่ำว่ำตรงกับ list_value ใด
เพื่อจะได้ท ำงำนตำมชุดค ำสั่งภำยใต้ list_value นั นlist_value เป็นค่ำข้อมูลที่ใช้ตรวจสอบกับ expressionstatement_n เป็นชุดของค ำสั่งที่จะท ำงำนเมื่อ list_value นั น มีค่ำเท่ำกับ
expressionstatement เป็นชุดของค ำสั่งที่จะท ำงำนเมื่อไม่มี list_value ใด มีค่ำเท่ำกับ
expression
โปรแกรมตรวจสอบกำรด ำเนินกำรกับตัวเลข 2 ค่ำให้ตรงกับตัวด ำเนินกำรที่เลือกimport java.util.Scanner;public class Switch_Test {
public static void main(String args[]) {System.out.println("Main menu");System.out.println("1.Add"); System.out.println("2.Subtract");System.out.println("3.Multiply"); System.out.println("4.Divide");System.out.print("Press 1,2,3 or 4 >>> ");Scanner scan = new Scanner(System.in); int key = scan.nextInt();System.out.print("enter first number >>> "); float a = scan.nextFloat();System.out.print("enter seceond number >>> "); float b = scan.nextFloat();
17
switch (key) {case 1: System.out.println("result of" + a + "+" + b + "=" + (a + b));
break;case 2: System.out.println("result of" + a + "-" + b + "=" + (a - b));
break;case 3: System.out.println("result of" + a + "*" + b + "=" + (a * b));
break;case 4: System.out.println("result of" + a + "/" + b + "=" + (a / b));
break;default: System.out.println("Unknown Operator !!!");
}System.out.println("Good Bye !!! ");
}}
18
มีกำรตรวจสอบเงื่อนไขที่เป็นนิพจน์ทำงตรรกศำสตร์ก่อนกำรท ำงำนชุดค ำสั่งภำยในลูปทุกครั ง โปรแกรมจะท ำงำนที่ชุดค ำสั่งภำยในลูปก็ต่อเมื่อนิพจน์ที่ก ำหนดเป็นจริง เมื่อโปรแกรมท ำงำนที่ชุดค ำสั่งภำยในลูปเสร็จสิ น โปรแกรมจะตรวจสอบนิพจน์ใหม่อีกครั ง จะหยุดกำรท ำซ ำเมื่อนิพจน์ที่ก ำหนดเป็นเท็จ มีรูปแบบกำรท ำงำนดังนี
while (bolean_expression) {statements;
}โดยที่boolean_expression เป็นนิพจน์ที่เป็นเงื่อนไขทำงตรรกศำสตร์มีกำรตรวจสอบก่อนกำร
ท ำงำนชุดค ำสั่งภำยในลูปทุกครั ง statements เป็นชุดค ำสั่งที่ต้องกำรให้มีกำรท ำซ ำ
โปรแกรมแสดงผลกำรค ำนวณผลรวมของ 1 ถึง 20
19
20
มีกำรท ำงำนในชุดค ำสั่งอย่ำงน้อย 1 รอบ ก่อนตรวจสอบเงื่อนไขที่เป็นนิพจน์ทำงตรรกศำสตร์หลังค ำสั่ง while
ถ้ำนิพจน์ท่ีก ำหนดเป็นจริง จะท ำงำนชุดค ำสั่งภำยในลูปอีกครั ง ถ้ำนิพจน์ท่ีก ำหนดเป็นเท็จโปรแกรมจะออกจำกลูปกำรท ำงำนไปท ำงำนที่ค ำสั่งถัดไปทันที มีรูปแบบกำรท ำงำนดังนี do {
statements;
} while (bolean_expression);
โดยที่statements เป็นชุดของค ำสั่งที่ต้องกำรให้มีกำรท ำซ ำboolean_expression เป็นนิพจน์เงื่อนไขทำงตรรกศำสตร์ที่มีกำรตรวจสอบหลัง
ท ำงำนในชุดค ำสั่งเสร็จสิ นทุกครั ง
โปรแกรมค ำนวณผลรวมของเลขที่รับเข้ำมำเป็นค่ำทำงแป้นพิมพ์
21
22
มีกำรตรวจสอบเงื่อนไขที่เป็นนิพจน์ทำงตรรกศำสตร์ก่อนกำรท ำงำนที่ชุดค ำสั่งภำยในลูปทุกครั ง โดยโปรแกรมจะท ำงำนที่ชุดค ำสั่งภำยในลูปเมื่อเงื่อนไขเป็นจริง ซึ่งจะมีกำรเพิ่มหรือลดค่ำตัวแปร
มีรูปแบบกำรท ำงำนดังนี for (control_variable = value; boolean_expression; increment or decrement) {
statements;}โดยที่control variable เป็นตัวแปรที่ควบคุมจ ำนวนครั งของกำรท ำซ ำ มีชนิดเป็นจ ำนวนเต็มvalue เป็นค่ำเริ่มต้นที่ก ำหนดให้ตัวแปรควบคุมboolean expression เป็นนิพจน์เงื่อนไขทำงตรรกศำสตร์ที่มีกำรตรวจสอบเงื่อนไขincrement or decrement เป็นค ำสั่งก ำหนดกำรเพิ่มค่ำหรือลดค่ำของตัวแปรควบคุมstatements เป็นชุดของค ำสั่งที่ต้องกำรให้มีกำรท ำซ ำ
โปรแกรมค ำนวณคะแนนเฉลี่ยของนักศึกษำ จำกข้อมูลคะแนนนักศึกษำจ ำนวน N คน
23
เป็นค ำสั่งที่ใช้ร่วมกับค ำสั่งกำรท ำซ ำ เพื่อหยุดกำรท ำงำนก่อนครบตำมจ ำนวนรอบที่ก ำหนด หรือใช้เป็นค ำสั่งหยุดกำรท ำงำนภำยในชุดค ำสั่งของ switch เพื่อข้ำมค ำสั่งเงื่อนไขอื่นๆ ที่อยู่ภำยใน
บล็อกของ switch โปรแกรมรับข้อมูลคะแนนของนักศึกษำจ ำนวน 5 คน ถ้ำคะแนนน้อยกว่ำ 0 หรือ มำกกว่ำ 100 ให้
หยุดกำรรับข้อมูลคะแนน
24
เป็นค ำสั่งที่ท ำงำนตรงข้ำมกับค ำสั่ง break จะเป็นค ำสั่งที่บังคับให้โปรแกรมข้ำมไปท ำงำนในรอบต่อไปทันที โดยไม่สนใจค ำสั่งที่เหลืออยู่ในลูป โปรแกรมรับข้อมูลคะแนนของนักศึกษำจ ำนวน 5 คน ถ้ำคะแนนน้อยกว่ำ 0 หรือ มำกกว่ำ 100 ให้
รับข้อมูลคะแนนต่อไปจนกว่ำจะครบ
25
ค ำสั่ง break และค ำสัง่ continue เป็นค ำสั่งที่ใช้ร่วมกับค ำสั่งกำรท ำซ ำเหมือนกัน แต่มีข้อแตกต่ำงกันคือ ค ำสั่ง break จะหยุดกำรท ำงำนและออกจำกกำรท ำงำนในลูปทันท ี ค ำสั่ง continue จะบังคับให้โปรแกรมข้ำมไปท ำงำนที่รอบต่อไปทันที เมื่อพิจำรณำจำกผลกำรท ำงำนของตัวอย่ำงที่ 6-12 และ 6-13 เมื่อคะแนนของนิสิต
คนที่ 4 ไม่ถูกต้อง จะได้ว่ำ ค ำสั่ง break จะหยุดกำรท ำงำนและออกจำกค ำสั่ง while ทันที ท ำให้มีกำรท ำซ ำ
ทั งหมด 4 ครั ง ค ำสั่ง continue จะบังคับให้ข้ำมไปท ำงำนทีร่อบต่อไปทันที แต่ยังเป็นกำรรับข้อมูล
ของนิสิตคนที่ 4 ท ำให้มีกำรท ำซ ำทั งหมด 6 ครั ง
26