본문 바로가기

창고/Backup_2013_0121

2009년 전국 9급 - 프로그래밍언어론 VB 문풀

반응형


[문제15]
변수의 유효 범위 (scope)를 물어보는 문제입니다.
public 으로 선언된 currentVal 변수는 프로그램내부 어느곳에서나 호출이 가능합니다. 하지만 조심해야하는것이 Form1.currentVal 이 아닌 currentVal 을 호출했을경우인데요. 이 경우, 함수내부에서 선언된 Dim currentVal 이 호출되어 10의 값이 찍히게 됩니다.
즉 항상 가장가까운 변수부터 호출한다는 사실을 기억하시면 됩니다^^

[문제16]
Visual Basic 의 기본적인 사항의 설명중 옳지 않은것을 물어보는 문제입니다.
VB에 대하여 전반적인 지식이 없으면 틀릴수 있기 때문에 어려운문제에 속한다고 볼수 있지요. 이런문제를 위해서라도 VB책한권을 독파하거나 인터넷 VB 배우기 강의를 찾아 끝까지 한번쯤해보는게 필요합니다. (책은 사실 힘들겠네요;; 6.0 에관련된 책이 없기도 하고 구해도 너무 두꺼울테니까요;;)
어쨌든~
VB 에서 DIM 은 type 이 Variable 즉, 정해지지 않은 형태입니다. 그래서 스트링이든 인티저든 더블이든 처음 할상한 변수에 따라 바뀌게 됩니다.
하지만 명시적으로 as Integer 같이 선언한다면 type은 정해지게 됩니다.

[문제17]
c 문제로도 잘나오는 재귀함수에 관한 문제입니다.
재귀함수는 자신이 자신을 호출하는 함수로서, 종료조건이 될때까지 보통 자기자신을 반복적으로 호출합니다.
문제에 나온 VB 함수도 select case 내부의 로직이 재귀로직인데요.
입력받은 n 을 2 로나눈 나머지에 따라 분기되어 자기자신을 재호출 하는 모습입니다.
기본적으로 자기자신을 다시 호출한다는것을 알고 차분히 따라가면 쉽게(?) 풀수 있습니다.
1. f(5)호출 n 은 1이 아니므로 select case 진입
2. 5 mod 2 는 1 이므로 case 1 진행
3. f = f(3 * 5 +1 )  + 1 ==> f = f(16) + 1  f(16) 으로 함수 호출
4. >>>  f(16) 진행 <<<<
4.1 f(16) 호출 n 은 1이 아니므로 select case 진입
4.2 16 mod 2 는 0이므로 case 0 진행
4.3 f=f(16/2)+1 ==> f = f(8) + 1   f(8) 함수 호출

3과 4의 진행과정을 합쳐보면
f(16) + 1
f(16) = f(8) + 1
이라는것을 알수 있고
종료조건에 따라 n이 1인경우 , 즉 f(1) = 1 이므로
f(8) = f(4) + 1
f(4) = f(2) + 1
f(2) = f(1) + 1

결국 1+ 1+ 1+ 1+ 1+ 1 = 6 이 됩니다.
고등학교(중학굔가?)때 배우는 함수 관련 수학과 동일합니다^^

[문제18]
누구나 풀수 있는 단순문제입니다.
i 는 1 부터 5까지 증가
j 는 i 부터 6 까지 증가
i=1
j=1,2,3,4,5,6
i=2
j=2,3,4,5,6
i=3
j=3,4,5,6
i=4
j=4,5,6
i=5
j=5,6
20개
[문제19]
 또 어려운 지식문제입니다. ㅜㅜ
옵션버튼은 같은 그룹( 같은 프레임 )안에서는 한개이상 선택할수가 없습니다.
한개이상 선택할 수 있는것은 CheckBox (체크박스) 입니다.
옵션버튼 -->
반응형