370 likes | 572 Vues
제 7 장 WMLScript 제어구조 (2) 1. for 문 2. break 문과 continue 문 3. 자료형 4. 게임 WMLScript 작성하기. 1. for 문 for 문 형식. 예. [ 예제 7-1] for 문을 이용하여 1 에서 10 까지의 합과 10! 값을 구하기 ▶ ch7-1.wml 1 <?xml version = "1.0" ?> 2 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
E N D
제 7 장 WMLScript 제어구조 (2) 1. for 문 2. break 문과 continue 문 3. 자료형 4. 게임 WMLScript 작성하기 제 7 장 WMLScript 제어구조 (2)
1. for 문 • for 문 형식 • 예 제 7 장 WMLScript 제어구조 (2)
[예제 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"> • 131-10까지의 합과 10 펙토리얼 구하기 • 14</p> • 15 • 16</card> 제 7 장 WMLScript 제어구조 (2)
17 18<card id="result"> 19<p> 201~10까지의 합 : $total <br/> 2110 펙토리얼: $n_factorial 22</p> 23</card> 24 25</wml> ▶ ch7-1.wmls 1extern function main() 2{ 3var number; 4 5//1-10까지의 합 구하기 6var sum=0; 7for (number=1; number <= 10; number++) 8sum = sum + number; 제 7 장 WMLScript 제어구조 (2)
9 10//10! 구하기 11var factorial=1; 12for (number=2; number <= 10; number++) 13factorial = factorial * number; 14 15WMLBrowser.setVar("total", sum); 16WMLBrowser.setVar("n_factorial", factorial); 17WMLBrowser.go("#result"); 18} 제 7 장 WMLScript 제어구조 (2)
예제 7-1의 실행 결과 제 7 장 WMLScript 제어구조 (2)
[예제 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> 제 7 장 WMLScript 제어구조 (2)
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 제 7 장 WMLScript 제어구조 (2)
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 } 제 7 장 WMLScript 제어구조 (2)
예제 7-2의 실행 결과 제 7 장 WMLScript 제어구조 (2)
[예제 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 제 7 장 WMLScript 제어구조 (2)
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> 제 7 장 WMLScript 제어구조 (2)
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> 제 7 장 WMLScript 제어구조 (2)
▶ 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 } 제 7 장 WMLScript 제어구조 (2)
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 } 제 7 장 WMLScript 제어구조 (2)
예제 7-3의 실행 결과 제 7 장 WMLScript 제어구조 (2)
2. break 문과 continue 문 • break 문 • - 형식 제 7 장 WMLScript 제어구조 (2)
[예제 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 제 7 장 WMLScript 제어구조 (2)
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 } 제 7 장 WMLScript 제어구조 (2)
11 12 WMLBrowser.setVar("divisor", n); 13 WMLBrowser.go("#result"); 14 } • 예제 7-4의 실행 결과 제 7 장 WMLScript 제어구조 (2)
continue 문 • - 형식 제 7 장 WMLScript 제어구조 (2)
[예제 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 제 7 장 WMLScript 제어구조 (2)
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 제 7 장 WMLScript 제어구조 (2)
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 } 제 7 장 WMLScript 제어구조 (2)
예제 7-5의 실행 결과 제 7 장 WMLScript 제어구조 (2)
3. 자료형 • invalid 형 • - 그 값이 유효한 범위를 벗어나서 아무런 의미가 없는 값을 말한다. • typeof 연산자 • - 특정값의 자료형을 알기 위하여 사용 제 7 장 WMLScript 제어구조 (2)
isvalid 연산자 • - 변수에 저장된 값이 invalid 형인지 아니면 유효한 값인지를 검사 • 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 제 7 장 WMLScript 제어구조 (2)
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/> 제 7 장 WMLScript 제어구조 (2)
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; 제 7 장 WMLScript 제어구조 (2)
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 } 제 7 장 WMLScript 제어구조 (2)
예제 7-6의 실행 결과 제 7 장 WMLScript 제어구조 (2)
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 제 7 장 WMLScript 제어구조 (2)
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 제 7 장 WMLScript 제어구조 (2)
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"));// 사용자가 낸 것 제 7 장 WMLScript 제어구조 (2)
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 제 7 장 WMLScript 제어구조 (2)
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 } 제 7 장 WMLScript 제어구조 (2)
예제 7-7의 실행 결과 제 7 장 WMLScript 제어구조 (2)