제 7 장 WMLScript 제어구조 (2) 1. for 문 2. break 문과 continue 문 3. 자료형...

37
제 7 제 WMLScript 제제제제 (2) 1 제 7 제 WMLScript 제제제제 (2) 1. for 제 2. break 제제 continue 제 3. 제제제 4. 제제 WMLScript 제제제제

description

제 7 장 WMLScript 제어구조 (2) 1. for 문 2. break 문과 continue 문 3. 자료형 4. 게임 WMLScript 작성하기. 1. for 문 for 문 형식. 예. [ 예제 7-1] for 문을 이용하여 1 에서 10 까지의 합과 10! 값을 구하기 ▶ ch7-1.wml 1 2

Transcript of 제 7 장 WMLScript 제어구조 (2) 1. for 문 2. break 문과 continue 문 3. 자료형...

Page 1: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 1

제 7 장

WMLScript 제어구조 (2)

1. for 문

2. break 문과 continue 문

3. 자료형

4. 게임 WMLScript 작성하기

Page 2: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 2

1. for 문

• for 문 형식

for ( 초기화문 ; 조건식 ; 증가문 ) { 본체 }

• 예for (number=1; number<=5; number++){ Dialogs.alert(number);}

Page 3: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 3

• [ 예제 7-1] for 문을 이용하여 1 에서 10 까지의 합과 10! 값을 구하기

▶ ch7-1.wml 1 <?xml version = "1.0" ?> 2 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" 3 "http://www.wapforum.org/DTD/wml12.dtd"> 4 5 <wml> 6 <card id = "index"> 7 8 <do type="accept" label=" 결과 "> 9 <go href="ch7-1.wmls#main()"/> 10 </do> 11 12 <p align="center"> 13 1-10 까지의 합과 10 펙토리얼 구하기 14 </p> 15 16 </card>

Page 4: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 4

17 18 <card id="result"> 19 <p> 20 1~10 까지의 합 : $total <br/> 21 10 펙토리얼 : $n_factorial 22 </p> 23 </card> 24 25 </wml> ▶ ch7-1.wmls 1 extern function main() 2 { 3 var number; 4 5 //1-10 까지의 합 구하기 6 var sum=0; 7 for (number=1; number <= 10; number++) 8 sum = sum + number;

Page 5: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 5

9 10 //10! 구하기 11 var factorial=1; 12 for (number=2; number <= 10; number++) 13 factorial = factorial * number; 14 15 WMLBrowser.setVar("total", sum); 16 WMLBrowser.setVar("n_factorial", factorial); 17 WMLBrowser.go("#result"); 18 }

Page 6: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 6

• 예제 7-1 의 실행 결과

Page 7: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 7

• [ 예제 7-2] for 문을 이용한 통장 잔액 구하기▶ ch7-2.wml

1 <?xml version = "1.0" ?> 2 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" 3 "http://www.wapforum.org/DTD/wml12.dtd"> 4

5 <wml> 6 <card id = "index"> 7 <do type="accept" label=" 보기 "> 8 <go href="ch7-2.wmls#main()"/> 9 </do> 10

11 <p> 12 연 이자율이 0.05 이고 <br/> 13 원금이 10,000 원일 때 <br/> 14 5 년 후에는 얼마일까 ? 15 </p> 16 </card>

Page 8: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 8

17

18 <card id = "result"> 19 <p> 20 연 이자율이 0.05 이고 <br/> 21 원금이 10,000 원일 때 <br/> 22 5 년 후에는 $(amount) 원이 됩니다 . 23 </p> 24 </card> 25 </wml>

▶ ch7-2.wmls

1 extern function main() 2 { 3 var r = 0.05; // 연 이자율 4 var p = 10000; // 현재 통장의 원금 5 var n = 5; // 저축 연 수 6 var total; // n 년 후의 통장의 잔고 7

Page 9: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 9

8 var temp = 1; 9 10 // (1+r) 의 n 제곱 구하기 11 for ( var year = 1; year <= n; year++) 12 { 13 temp = temp * (1+r); 14 } 15 16 total = p * temp; 17 18 WMLBrowser.setVar("amount", total); 19 WMLBrowser.go("#result"); 20 }

Page 10: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 10

• 예제 7-2 의 실행 결과

Page 11: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 11

• [ 예제 7-3] for 문을 이용한 합격자 명단 구하기

▶ ch7-3.wml 1 <?xml version = "1.0" ?> 2 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" 3 "http://www.wapforum.org/DTD/wml12.dtd"> 4

5 <wml> 6 <card id = "index" title = " 시험 결과 " > 7 <do type="accept" label=" 작성 "> 8 <go href="ch7-3.wmls#main()" /> 9 </do> 10 11 <p> 12 합격자 , 불합격자 명단 작성하기 13 </p> 14 </card> 15

Page 12: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 12

16 <card id="result"> 17 <do type="option" label=" 이전 "> 18 <go href="index" /> 19 </do> 20 21 <p align="center"> 22 결과 <br/> 23 합격자 : $number_pass 명 <br/> 24 -------------<br/> 25 $pass_list 26 -------------<br/> 27 28 <a href="#failure"> 불합격자명단보기 </a> 29 </p> 30 </card> 31 32 <card id="failure"> 33 34 <do type="accept" label=" 홈 "> 35 <go href="index" /> 36 </do>

Page 13: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 13

37

38 <do type="option" label=" 이전 "> 39 <go href="index" /> 40 </do> 41 42 <p align="center"> 43 44 불합격자 : $number_fail 명 <br/> 45 -------------<br/> 46 $fail_list 47 ------------- 48 </p> 49 </card> 50 </wml>

Page 14: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 14

▶ ch7-3.wmls 1 extern function main() 2 { 3 var pass = 0; // 합격자 수 4 var fail = 0; // 불합격자 수 5 var pass_list ; // 합격자 이름과 점수 목록 6 var fail_list ; // 불합격자 이름과 점수 목록 7 var s_name, grade; 8

9 for (var n=1; n <= 5; n++) 10 { 11 s_name = Dialogs.prompt("Student's name :", ""); 12 grade = Dialogs.prompt("Student's grade :", ""); 13 grade = Lang.parseInt(grade); 14 15 if (grade >= 60) 16 { 17 pass++; 18 pass_list += s_name + " : " + grade + "\n"; 19 }

Page 15: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 15

20 else 21 { 22 fail++; 23 fail_list += s_name + " : " + grade + "\n"; 24 } 25 } 26

27 WMLBrowser.setVar("number_pass", pass); 28 WMLBrowser.setVar("number_fail", fail); 29 WMLBrowser.setVar("pass_list", pass_list); 30 WMLBrowser.setVar("fail_list", fail_list); 31 WMLBrowser.go("#result"); 32 }

Page 16: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 16

• 예제 7-3 의 실행 결과

Page 17: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 17

2. break 문과 continue 문• break 문 - 형식

for ( 초기화문 ; 조건식 ; 증가문 ){ . . break; . .}

Page 18: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 18

• [ 예제 7-4] break 문을 이용한 임의의 양의 정수의 1 을 제외한 최소 약수 구하기

▶ ch7-4.wml

1 <?xml version = "1.0" ?> 2 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" 3 "http://www.wapforum.org/DTD/wml12.dtd"> 4 5 <wml> 6 <card id = "index" > 7 <do type="accept" label=" 시작 "> 8 <go href="ch7-4.wmls#main()" /> 9 </do> 10 11 <p> 12 양의 정수를 넣으세요 13 <input name="positive_integer"/> 14 </p> 15 </card> 16

Page 19: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 19

17 <card id = "result" > 18 19 <p> 20 $positive_integer 의 (1 이 아닌 ) 최소 약수는 21 $divisor 입니다 . 22 </p> 23 </card> 24 </wml>

▶ ch7-4.wmls 1 extern function main() 2 { 3 var number=WMLBrowser.getVar("positive_integer"); 4 var sum=0; 5 6 for (var n=2; n<= number; n++) 7 { 8 if ((number % n) == 0) 9 break; 10 }

Page 20: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 20

11

12 WMLBrowser.setVar("divisor", n); 13 WMLBrowser.go("#result"); 14 }

• 예제 7-4 의 실행 결과

Page 21: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 21

• continue 문

- 형식

for ( 초기화문 ; 조건식 ; 증가문 ){ . . continue; . .}

Page 22: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 22

• [ 예제 7-5] continue 문을 이용하여 양의 정수의 모든 약수를 구하기

▶ ch7-5.wml

1 <?xml version = "1.0" ?> 2 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" 3 "http://www.wapforum.org/DTD/wml12.dtd"> 4

5 <wml> 6 <card id = "index" > 7 <do type="accept" label=" 시작 "> 8 <go href="ch7-5.wmls#main()" /> 9 </do> 10

11 <p> 12 1-100 사이의 정수를 넣으세요 . 13 <input name="positive_integer" format ="N*N" /> 14 </p> 15 </card> 16

Page 23: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 23

17

18 <card id = "result" > 19 20 <p> 21 $positive_integer 의 모든 약수는 22 $divisor 입니다 . 23 </p> 24 </card> 25 </wml>

▶ ch7-5.wmls 1 extern function main() 2 { 3 var number=WMLBrowser.getVar("positive_integer"); 4 var msg_divisor; // nember 의 약수들을 저장할 문자열 5

Page 24: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 24

6 if ((number < 1) && (number > 100)) 7 Dialogs.alert("Invalid!"); 8

9 for (var n=1; n< number; n++) 10 { 11 if ((number % n) == 0) 12 //n 이 number 의 약수이므로 msg_divisor 에 n 을 추가 13 msg_divisor += n + ", "; 14 else 15 continue; 16

17 // n 이 number 의 약수임을 표시 18 var msg = n + " is a divisor of " + number; 19 Dialogs.alert(msg); 20 } 21 22 msg_divisor += number; 23 WMLBrowser.setVar("divisor", msg_divisor); 24 WMLBrowser.go("#result"); 25 }

Page 25: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 25

• 예제 7-5 의 실행 결과

Page 26: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 26

3. 자료형

• invalid 형

- 그 값이 유효한 범위를 벗어나서 아무런 의미가 없는 값을 말한다 .

• typeof 연산자

- 특정값의 자료형을 알기 위하여 사용

형 식 variable_name 또는 value 의 자료형

반환값

typeof variable_name또는type value

정수형 0

부동 소수점형 1

문자열형 2

부울형 3

invalid 형 4

Page 27: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 27

• isvalid 연산자

- 변수에 저장된 값이 invalid 형인지 아니면 유효한 값인지를 검사

isvalid variable_name 또는isvalid (expression)

- variable_name 변수에 저장된 값이 invalid 형이 아니면 , true

invalid 이면 , false 를 반환

• [ 예제 7-6] typeof, isvalid 연산자 사용 예 ▶ ch7-6.wml 1 <?xml version = "1.0" ?> 2 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" 3 "http://www.wapforum.org/DTD/wml12.dtd"> 4

Page 28: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 28

5 <wml> 6 <card id="index"> 7 <do type="accept" label="+,- 결과 "> 8 <go href="ch7-6.wmls#main()" /> 9 </do> 10 11 <p> 12 첫번째 정수 13 <input name="number1" value="2147483647"/> 14 15 두번째 정수 16 <input name="number2" value="1"/> 17 </p> 18 </card> 19 20 <card id = "result"> 21 22 <p> 23 [ 뺄셈결과 ]<br/>

Page 29: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 29

24 $number1 - $number2 <br/> 25 = $(value1) 입니다 . <br/> 26 ------------------<br/> 27 [ 덧셈결과 ]<br/> 28 $number1 + $number2 <br/> 29 = $(value2) 입니다 .<br/> 30 </p> 31 </card> 32 </wml>

▶ ch7-6.wmls 1 extern function main() 2 { 3 var integer1 = Lang.parseInt(WMLBrowser.getVar("number1")); 4 var integer2 = Lang.parseInt(WMLBrowser.getVar("number2")); 5 6 var result1 = integer1 - integer2; 7 var result2 = integer1 + integer2;

Page 30: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 30

8

9 // 계산 결과가 정확한 정수형인지 확인 10 if ((typeof result1) == 0 ) 11 { 12 Dialogs.alert(integer1 + "-" + integer2 + "\n = " + result1); 13 } 14 else 15 Dialogs.alert(integer1 + "-" + integer2 + "\n is out of range!"); 16 17 // 계산 결과가 유효범위를 벗어난 invalid 형이 아닌지 확인 18 if (isvalid result2) 19 Dialogs.alert(integer1 + "+" + integer2 + "\n = " + result2); 20 else 21 Dialogs.alert(integer1 + "+" + integer2 + "\n is out of range!"); 22

23

24 WMLBrowser.setVar("value1", result1); 25 WMLBrowser.setVar("value2", result2); 26 WMLBrowser.go("#result"); 27 }

Page 31: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 31

• 예제 7-6 의 실행 결과

Page 32: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 32

4. 게임 WMLScript 프로그램 작성

• Lang 객체의 random() 메서드

- Lang 객체에는 임의의 정수값을 반환해 주는 random() 메서드가 있다 .

- 형식 : Lang.random(value)

- 사용 예 , 174 쪽 참조

• [ 예제 7-7] 컴퓨터와 가위바위보 게임을 하는 WML 문서와

WMLScript 프로그램 작성하기

▶ ch7-7.wml 1 <?xml version = "1.0" ?> 2 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN" 3 "http://www.wapforum.org/DTD/wml12.dtd"> 4

Page 33: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 33

5 <wml> 6 <card id = "index" title = " 가위바위보 게임 "> 7 8 <p align="center"> 9 무엇을 내겠습니까 ?<br/> 10 ------------------<br/> 11 12 <select name="you"> 13 <option value="0" onpick="ch7-7.wmls#main()"> 가위 </option> 14 <option value="1" onpick="ch7-7.wmls#main()"> 바위 </option> 15 <option value="2" onpick="ch7-7.wmls#main()"> 보 </option> 16 </select> 17 18 </p> 19 </card> 20 21 <card id="result"> 22 <do type="accept" label=" 또하기 "> 23 <go href="#index"/> 24 </do> 25

Page 34: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 34

26 <p align="center"> 27 @ 게임 결과 @<br/> 28 ------------------<br/> 29 <table columns="2"> 30 <tr> <td> 컴퓨터 </td> <td>$me </td> </tr> 31 <tr> <td> 당신 </td> <td>$you </td> </tr> 32 <tr> <td> 승자 </td> <td>$winner ^^</td> </tr> 33 </table> 34 </p> 35 </card> 36

37 </wml> ▶ ch7-7.wmls 1 extern function main() 2 { 3 var player1, player2, win, what; 4 var computer=Lang.random(2); // 컴퓨터가 낸 것 5 var man = Lang.parseInt(WMLBrowser.getVar("you")); // 사용자가 낸 것

Page 35: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 35

6   7  // 컴퓨터와 사용자 중에서 승자를 win 에 저장 8  if (computer == man ) 9    win="tie"; 10   else if ((computer == 0) && (man == 1)) 11     win="You"; 12   else if ((computer == 0) && (man == 2)) 13     win="computer";  14   else if ((computer == 1) && (man == 2)) 15     win="You"; 16   else if ((computer == 1) && (man == 0)) 17     win="computer"; 18   else if ((computer == 2) && (man == 0)) 19     win="You"; 20   else if ((computer == 2) && (man == 1)) 21     win="computer"; 22   

Page 36: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 36

23 // 컴퓨터가 낸 것을 WML 변수 me 에 저장 24 if (computer ==0) 25 what = "Gawi"; 26 else if (computer ==1) 27 what = "Bawi"; 28 else 29 what = "Bo"; 30 WMLBrowser.setVar("me", what); 31

32 // 사용자가 낸 것을 WML 변수 you 에 저장 33 if (man ==0) 34 what = "Gawi"; 35 else if (man ==1) 36 what = "Bawi"; 37 else 38 what = "Bo"; 39 WMLBrowser.setVar("you", what); 40 41 WMLBrowser.setVar("winner", win); 42 WMLBrowser.go("#result"); 43 }

Page 37: 제  7  장 WMLScript  제어구조  (2) 1. for  문 2. break  문과  continue  문 3.  자료형 4.  게임  WMLScript  작성하기

제 7 장 WMLScript 제어구조 (2) 37

• 예제 7-7 의 실행 결과