คำสั่งควบคุมทิศทางของโปรแกรมแบบทำซ้ำ

Download Report

Transcript คำสั่งควบคุมทิศทางของโปรแกรมแบบทำซ้ำ

บทที่ 2 คำสั ่งควบคุมทิศทำงของโปรแกรม
4144221 การเขียนโปรแกรมเชิงวัตถุ
คำสั ่งควบคุมทิศทำงของโปรแกรม
 แบบตำมลำดับ
 แบบมีทำงเลือก
 แบบทำซ้ ำ
2
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
แบบทำซ้ ำ
3
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ตำมลำดับ
 เป็ นรู ปแบบกำรทำงำนที่ทุกคำสั ่งจะทำงำนตำมลำดับ
โดยไม่ขำ้ มคำสั ่งใดไป
 ภำษำจำวำจะท ำงำนตำมล ำดั บ ของค ำสั ่งที่ มี อ ยู่ ใ น
โปรแกรม
4
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ตำมลำดับ (ต่อ)
5
public class Shopping
{
public static void main(String[] args)
{
int cash
= 500;
int bookPrice = 180;
int foodPrice = 20;
int sodaPrice = 7;
cash -= bookPrice;
cash -= foodPrice;
cash -= sodaPrice;
System.out.println("Cash = " + cash);
}
}
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
แบบทำซ้ ำ
6
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือก
 มี ก ำรตรวจสอบเงื่ อ นไขค ำสั ่งก่ อ นกำรท ำงำน เพื่ อ
ตัดสินใจเลือกทิศทำงกำรทำงำนของโปรแกรม
 ได้แก่
 คำสัง่ if
 คำสัง่ if..else
 คำสัง่ nested if
 คำสัง่ switch
7
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
• if
• if..else
• nested if
• switch
แบบทำซ้ ำ
8
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง if
 ใช้ควบคุมให้โปรแกรมตัดสินใจทำงำนหรือไม่ ทำงำน
ตำมชุดคำสั ่งใดชุดคำสั ่งหนึ่ง โดยตรวจสอบจำกนิพจน์
ที่กำหนด
 ถ้ำเป็ นจริง
 จะทำงำนที่ชุดคำสัง่ ที่อยูภ
่ ำยใต้คำสัง่ if
 ถ้ำเป็ นเท็จ
 จะข้ำมไปทำงำนที่คำสัง่ ถัดไปทันที
9
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง if (ต่อ)
 รูปแบบกำรทำงำน
if (boolean_expression)
{
statements;
}
10
เช่น
if (stdScore >= 60)
{
System.out.println(“Passed”);
}
 โดยที่
 boolean_expression เป็ นนิ พจน์ที่เป็ นเงื่อนไขทำงตรรกศำสตร์
ได้ผลลัพธ์เป็ นจริง (true) หรือเท็จ (false)
 statements เป็ นชุดคำสัง่ ที่จะทำงำนเมื่อเงื่อนไขที่ กำหนดให้
เป็ นจริง
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง if (ต่อ)
import java.util.Scanner;
public class Circle {
public static void main(String[] args) {
final double PI = 3.14; //ประกาศค่าคงที่
double radius = 0, area = 0; //ประกาศตัวแปร
System.out.print("Enter radius: ");
Scanner stdin = new Scanner(System.in);
radius = stdin.nextDouble(); //รับค่าเป็ นชนิ ดข้อมูล double
if(radius >0) {
area = radius*radius*PI; //หาพื้นที่รูปวงกลม
System.out.println("The area is "+area);
}
11
}
}
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
• if
• if..else
• nested if
• switch
แบบทำซ้ ำ
12
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง if…else
 ควบคุมให้โปรแกรมเลือกทำงำนชุ ดคำสั ่งใดชุ ด คำสั ่ง
หนึ่งจำก 2 ทำงเลือก
 ถ้ำเป็ นจริง
 จะทำงำนที่ชุดคำสัง่ ที่อยูภ
่ ำยใต้คำสัง่ if
 ถ้ำเป็ นเท็จ
 จะทำงำนที่ชุดคำสัง่ ที่อยูภ
่ ำยใต้คำสัง่ else
13
ค ำสั ่งควบคุ ม ทิ ศ ทำงของโปรแกรมแบบ
ทำงเลือกคำสั ่ง if…else (ต่อ)
 รูปแบบกำรทำงำน
if (boolean_expression)
{
statements_1;
}
else
{
statements_2;
}
14
 โดยที่
 boolean_expression
เป็ น
นิ พ จ น์ ที่ เ ป็ น เ งื่ อ น ไ ข ท ำ ง
ตรรกศำสตร์ ได้ผ ลลัพ ธ์เ ป็ น
จริง (true) หรือเท็จ (false)
 statements_1 เป็ นชุดคำสัง่ ที่
จ ะ ท ำ ง ำ น เ มื่ อ เ งื่ อ น ไ ข ที่
กำหนดให้เป็ นจริง
 statements_2 เป็ นชุดคำสัง่ ที่
จ ะ ท ำ ง ำ น เ มื่ อ เ งื่ อ น ไ ข ที่
กำหนดให้เป็ นเท็จ
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง if…else (ต่อ)
import javax.swing.JOptionPane;
public class OddEven {
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("Enter number ”);
//Dailog Box รับค่าจากผูใ้ ช้เป็ น String และเก็บค่าในตัวแปร input
int number = Integer.parseInt(input); //แปลง string เป็ น int
if(number%2 == 0)
System.out.println(number+" is Even Number");
else
System.out.println(number+" is Odd Number");
}
}
15
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
• if
• if..else
• nested if
• switch
แบบทำซ้ ำ
16
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง nested if
 หรือคำสั ่ง if…else if
 ควบคุ ม ให้ โ ปรแกรมเลื อ กท ำงำนในชุ ด ค ำสั ง่ ใด
ชุดคำสั ่งหนึ่งจำกหลำยทำงเลือก
 แต่ละทำงเลือกจะมีกำรกำหนดนิพจน์ไว้ดว้ ย
17
ค ำสั ่งควบคุ ม ทิ ศ ทำงของโปรแกรมแบบ
ทำงเลือกคำสั ่ง nested if (ต่อ)
 รูปแบบกำรทำงำน
if (boolean_expression_1) {
statements_1;
}
else if (boolean_expression_2) {
statements_2;
}
.
.
.
else {
statements_n;
}
18
 ตัวอย่ำงคำสั ่ง
if (stdScore >= 80)
grade = ‘A’;
else if (stdScore >= 70)
grade = ‘B’;
else if (stdScore >= 60)
grade = ‘C’;
else if (stdScore >= 50)
grade = ‘D’;
else
grade = ‘E’;
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง nested if (ต่อ)
19
import java.util.Scanner;
public class Age {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Please enter your age: ");
int age = input.nextInt();
String status;
if(age<0)
status = "ERROR";
else if(age<11)
status = "Baby";
else if(age<19)
status = "Teens";
else if(age<31)
status = "Workers";
else if(age<61)
status = "Elderly";
else
status = "Geezer";
System.out.println(“You are "+status); } }
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
• if
• if..else
• nested if
• switch
แบบทำซ้ ำ
20
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง switch
 เป็ นคำสั ่งควบคุมให้โปรแกรมเลือกทำงำนในชุด คำสั ่ง
ใดชุดคำสั ่งหนึ่งจำกหลำยทำงเลือก
 ในแต่ละทำงเลือกมีกำรกำหนดเงื่อนไข โดยตรวจสอบ
เงื่อนไขแต่ละทำงเลือก
21
ค ำสั ่งควบคุ ม ทิ ศ ทำงของโปรแกรมแบบ
ทำงเลือกคำสั ่ง switch (ต่อ)
 รูปแบบกำรทำงำน
22
switch (expression) {
case list_value_1:
statements_1;
break;
case list_value_2:
statements_2;
break;
.
.
.
case list_value_n:
statements_n;
break;
default :
statement;
}
 ตัวอย่ำงคำสั ่ง
int x = 1;
switch(x) {
case 1: System.out.println("Value
is one");
break;
case 2: System.out.println("Value
is two");
break;
default: System.out.println("Other
than 1 or 2");
}
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง switch (ต่อ)
ตัวแปร
= ค่าที่ 1
จริง
ชุ ดคำสั่ งที่ 1
= ค่าที่ 2
จริง
ชุ ดคำสั่ งที่ 2
จริง
ชุ ดคำสั่ งที่ N
:
= ค่าที่ N
23
= ค่า default
จริง
ชุ ดคำสั่ งที่ N+1
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง switch (ต่อ)
 นิพจน์ตอ้ งมีชนิดข้อมูลเป็ น char, byte, short หรือ int
เท่ำนั้น
 ชนิ ดข้อมูลของนิ พจน์และค่ำที่ 1 ถึง N ต้องเป็ นชนิ ด
เดียวกัน
 ถ้ำค่ำของนิพจน์ตรงกับค่ำใด จะทำชุดคำสั ่งของค่ำนั้น
 ถ้ำค่ำของนิ พจน์ไม่ตรงกับค่ำใดเลย จะทำชุดคำสั ่งของ
default
 default จะมีหรือไม่มีก็ได้
24
ค ำ สั ง่ ควบคุ ม ทิ ศ ทำ งของโปรแกรม แบบ
ทำงเลือกคำสั ่ง switch (ต่อ)
import java.io.*;
public class Grade {
public static void main(String[] args) throws IOException{
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please enter grade: ");
String input = stdin.readLine();
char grade = input.charAt(0);
switch(grade){
case 'A': System.out.println("Excellent");
break;
case 'B': System.out.println("Good"); break;
case 'C': System.out.println("So so"); break;
case 'D': System.out.println("Fails"); break;
case 'E': System.out.println("Get Lost");
break;
default: System.out.println("Invalid");
}
}
}
25
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
แบบทำซ้ ำ
26
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
 เป็ นรู ป แบบกำรท ำงำนแบบวนลู ป ที่ มี ก ำรท ำงำนซ้ ำ
ชุดคำสั ่งชุดเดิมไปเรื่อยๆ
 ทำซ้ ำจนกระทั ่งเงื่ อนไขที่กำหนดจะเป็ นเท็จจึงจะออก
จำกลูปคำสั ่ง
 ได้แก่
 คำสัง่ while
 คำสัง่ do…while
 คำสัง่ for
27
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
แบบทำซ้ ำ
• while
• do…while
• for
28
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง while
 ตรวจสอบเงื่อนไขก่อนกำรทำงำนภำยใต้ลป
ู ทุกครั้ง
 ทำซ้ ำก็ตอ่ เมื่อนิพจน์ที่กำหนดเป็ นจริง
while (boolean_expression)
{
statements;
}
 โดยที่
 boolean_expression เป็ นนิ พจน์ที่เป็ นเงื่อนไขทำงตรรกศำสตร์
ได้ผลลัพธ์เป็ นจริงหรือเท็จ
 statements เป็ นชุดคำสัง่ ที่ตอ้ งกำรให้มีกำรทำซ้ำ
29
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง while (ต่อ)
คาสัง่ กาหนดค่าเริม่ ต้น
ทาชุดคาสังซ
่ ้า
ถ้านิพจน์ตรรกศาสตร์
ยังเป็ นจริง
นิพจน์
ตรรกศาสตร์
จริง
ชุดคาสัง่
คาสัง่ เปลีย่ นแปลงค่า
30
เท็จ
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง while (ต่อ)
 ตัวอย่ำง
int i=0;
while (i<10)
{
System.out.println((i+1)“. Welcome to Java!!!”);
count++;
}
31
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง while (ต่อ)ตัวอย่ำงโปรแกรม
public class SampleWhile {
public static void main(String args[]) {
int i = 1;
while(i <= 10) {
System.out.print(i+" ");
i++;
}
}
}
32
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
แบบทำซ้ ำ
• while
• do…while
• for
33
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง do…while
 ทำงำนอย่ำงน้อย 1 รอบก่ อนตรวจสอบเงื่ อนไขที่ เ ป็ น
นิพจน์ทำงตรรกศำสตร์หลังคำสั ่ง while
do {
statements;
}
while (boolean_expression);
 โดยที่
 statements เป็ นชุดคำสัง่ ที่ตอ้ งกำรให้มีกำรทำซ้ำ
 boolean_expression เป็ นนิ พจน์ที่เป็ นเงื่อนไขทำงตรรกศำสตร์
ที่มีกำรตรวจสอบหลังทำงำนในชุกคำสัง่ เสร็จสิ้ นทุกครั้ง
34
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง do…while (ต่อ)Flowchart
มีการทาชุดคาสัง่
อย่างน้อยหนึง่ ครั้งเสมอ
ชุ ดคำสั่ ง
ทาชุดคาสังซ
่ ้า
ถ้านิพจน์ตรรกศาสตร์
ยังเป็ นจริง
คำสั่ งเปลีย่ นแปลงค่ ำ
จริง
นิพจน์ตรรกศาสตร์
เท็จ
35
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง do…while (ต่อ)ตัวอย่ำงโปรแกรม
public class SampleDoWhile {
public static void main(String args[]) {
int i = 1;
do {
System.out.print(i+" ");
i++;
} while (i <= 10);
}
}
36
คำสั ่งควบคุมทิศทำงของโปรแกรม
แบบตำมลำดับ
แบบมีทำงเลือก
แบบทำซ้ ำ
• while
• do…while
• for
37
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง for
 ตรวจสอบเงื่ อนไขก่ อ นกำร
ท ำงำนภำยใต้ลู ป ทุ ก ครั้ ง
โดยทำงำนเมื่อ เงื่อนไขเป็ น
จริง
 เ มื่ อ ท ำ ง ำ น ที่ ชุ ด ค ำ สั ง่
ภำยในลูปเสร็จสิ้น จะมีกำร
เ พิ่ ม ห รื อ ล ด ค่ ำ ตั ว แ ป ร
ควบคุมตำมคำสั ่งที่กำหนด
ไว้
38
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง for (ต่อ)
 รูปแบบกำรทำงำน
for (ctrl_var = val; bool_expr; increment or decrement)
{
statements;
}
39
 โดยที่
 ctrl_var เป็ นตัวแปรที่ควบคุมจำนวนครั้งของกำรทำซ้ำ
 val เป็ นค่ำเริ่มต้นที่กำหนดให้ตวั แปรควบคุม
 bool_expr เป็ นนิ พจน์ ที่เป็ นเงื่อนไขทำงตรรกศำสตร์ที่ มีกำร
ตรวจสอบเงื่อนไขว่ำเป็ น T หรือ F ก่อนทำงำนคำสัง่ ภำยใน { }
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง for (ต่อ)
 รูปแบบกำรทำงำน (ต่อ)
for (ctrl_var = val; bool_expr; increment or decrement)
{
statements;
}
 โดยที่
 increment or decerment เป็ นคำสัง่ เพิ่มหรือลดค่ำของตัวแปร
ควบคุม
 statements เป็ นชุดคำสัง่ ที่ตอ้ งกำรให้มีกำรทำซ้ำ
40
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง for (ต่อ)
 ตัวอย่ำง
int i;
for (int i=0; i<10; i++)
for (i=0; i<10; i++)
{
System.out.println(i+1“. Welcome to Java!!!”);
}
41
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง for (ต่อ)Flowchart
คำสั่ งกำหนดค่ ำเริ่มต้ น
ทาชุดคาสังซ
่ ้า
ถ้านิพจน์ตรรกศาสตร์
ยังเป็ นจริง
นิพจน์
ตรรกศาสตร์
จริง
ชุ ดคำสั่ ง
คำสั่ งเปลีย่ นแปลงค่ ำ
42
เท็จ
คำสั ่งควบคุมทิศทำงของโปรแกรมแบบทำซ้ ำ
คำสั ่ง for (ต่อ)ตัวอย่ำงโปรแกรม
public class SampleFor {
public static void main(String args[]) {
for (int i=1; i<=10; i++) {
System.out.print(i+" ");
}
}
}
43