제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 )
2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문
3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장 : FOR~NEXT 문, WHILE 문, Do~Loop 문 FOR~NEXT 문 For 제어변수 = 초기값 To 최종값 [Step 증가값 ] 명령문 1.. [Exit For] 명령문 n Next 제어변수 제어변수값이초기값에서최종값이될때까지 For 와 Next 사이의명령문을반복실행한다. For 와 Next 문사이의명령문을실행할때마다제어변수값은 Step 에서지정한값만큼 증가또는감소하게된다. Step 을지정하지않으면증가값의기본은 1 이된다. Exit For 문을사용하면 For~Next 문을벗어나다음문장으로제어가옮겨간다.
제어문 - FOR 문 ( 예 ) sum = 0 초기값 최종값 For i = 1 to 10 Step 1 sum = sum + i 증가값 sum = 0 i = 1 제어변수 i 초기값 변수 i 를 1 부터 10 까지 1 씩증가하면서 sum 에누적저장하라. 거짓 i <= 10 참 ( 제어변수 <= 최종값 ) 이참일경우 Exit For i 값이 11 이되면 For~Next 문을벗어남 sum = sum + i 반복실행문장 ( 예 ) 1 에서 10 까지합을구하는프로그램 i = i + 1 제어변수 i 에 1 증가 1 2 객체컨트롤이름속성속성값 1 lblsum Caption 2 cmdsum Caption 계산하기 Private Sub cmdsum_click() Dim sum As Integer For i = 1 To 10 sum = sum + i lblsum.caption = sum 4/17
5/17 제어문 - FOR 문 ( 실습 ) For 문을사용하여숫자를입력해서숫자의합을계산하는프로그램 (64 쪽 ) 객체컨트롤이름속성속성값 1 2 3 4 5 1 txtinput Text 2 txtsum Text 3 cmdinitial Caption 초기화 4 cmdaccount Caption 계산 5 cmdexit Caption 종료 Private Sub cmdaccount_click() Number = Val(txtInput.Text) sum = 0 For i = 1 To Number sum = sum + i txtsum.text = "1 ~ " & Number & " 합 = " & sum Private Sub cmdinitial_click() txtinput.text = "" txtsum.text = "" txtinput.setfocus (vb6_1.swf)
6/17 제어문 - FOR 문 ( 실습 ) 임의의숫자를 InputBox 로입력받아서 1 부터그숫자까지의짝수의합과홀수의합을 각각출력하는프로그램을작성하시오. 객체컨트롤이름속성속성값 3 1 2 4 1 txteven Text 2 txtodd Text 3 cmdaccount Caption 계산 4 cmdexit Caption 종료 실행결과
7/17 제어문 - FOR 문 Private Sub cmdaccount_click() k = InputBox(" 정수를입력하시오 ", " 짝홀수구하기 ") Esum = 0 Osum = 0 For i = 1 To k If i Mod 2 = 0 Then 변수 i 의값을 2 로나누었을때나머지가 0 이라면 ( 짝수라면 ) Esum = Esum + i Else Osum = Osum + i End If txteven.text = "1 ~ " & k & " 까지짝수의합 = " & Esum txtodd.text = "1 ~ " & k & " 까지홀수의합 = " & Osum Private Sub cmdexit_click() End (vb6_2.swf)
8/17 제어문 - FOR 문 ( 실습 ) 정수를입력받아서그수의약수를모두출력하는프로그램을작성하시오. Private Sub Form_Load() Form1.Show k = InputBox(" 양의정수를입력하시오 ", " 약수구하기 ) 변수 k에입력된정수를저장 Print k; " 의약수 : "; For i = 1 To k 변수i를 1부터 k까지 1씩증가하면서반복수행 If k Mod i = 0 Then k에저장된값이변수 i로나누어떨어진다면 Print i; Spc(5); spc(5) 는스페이스 5칸을띄는함수 End If 약수는나누어떨어지는수를의미한다. 정수 12 의약수는 1, 2, 3, 4, 6, 12 이다. (vb6_3.swf)
9/17 제제어문 - FOR 문 ( 실습 ) 텍스트박스에정수를입력받아 [ 약수구하기 ] 버튼을누르면입력받은정수의모든 약수를구해아래에있는텍스트박스에출력하는프로그램을작성하시오. 1 3 2 객체 컨트롤이름 속성 속성값 1 txtinput Text 2 cmddivisor Caption 약수구하기 3 txtoutput MultiLine True Private Sub cmddivisor_click() k = Val(txtInput.Text) For i = 1 To k If k Mod i = 0 Then txtoutput.text = txtoutput.text & i & vbcrlf End If (vb6_4.swf) Private Sub Form_Load() txtinput.text = "" txtoutput.text = ""
10/17 제어문 - FOR 문 ( 실습 ) 정수를입력받아서그수가소수 (prime number) 인지를출력하는프로그램을 작성하시오. 소수 (prime number) 의정의 : 1 과자기자신외나누어떨어지는수가없는수. 즉, 1 과자기자신외약수가없는수 (vb6_5.swf) Private Sub cmdprime_click() Form1.Show k = InputBox(" 양의정수를입력하시오 ", " 소수구하기 ") prime = 1 For i = 2 To k - 1 If k Mod i = 0 Then prime = 0 Exit For For~Next문을벗어남 End If If prime = 1 Then Print k; " 는소수입니다 " Else Print k; " 는소수가아닙니다 " End If
11/17 제어문 - FOR 문 ( 예 ) 정수를입력받아서그수의팩토리얼 (factorial) 을구하는프로그램을작성하시오. Private Sub Form_Load() Form1.Show k = InputBox(" 정수를입력하시오 ", " 팩토리얼구하기 ") sum = 1 For i = 1 To k sum = sum * i Print k; "! = "; sum 다중 For 문 (nested For 문 ) : For~Next 문안에다시 For~Next 문이오는것을다중 For~Next 문 : 외부 For 문과내부 For 문이겹쳐서는안된다. For i = ~ For i = ~ For j = ~ (O) For j = ~ (X) Next j Next j
12/17 제어문 - FOR 문 ( 예 ) 정수를입력받아서그수에해당하는구구단을출력하시오. Private Sub Form_Load() Form1.Show i = InputBox(" 구구단의몇단을출력하겠습니까?", " 구구단 ") Print "*************" Print Spc(5); i; " 단 " Print "*************" For j = 1 To 9 Print i; " * "; j; " = "; i * j Next j (vb6_6.swf)
13/17 제어문 다중 FOR 문 ( 예 ) 앞의예제를이용하여구구단 (2 단 ~9 단 ) 을출력하시오. Private Sub Form_Load() For i = 2 To 9 Print "*************" Print Spc(5); i; " 단 " Print "*************" For j = 1 To 9 Print i; " * "; j; " = "; i * j Next j (vb6_7.swf) 변수 i 가 2 일때내부 For 문을수행하고, i 가 3 일때내부 For 문을수행하고,, i 가 9 일때내부 For 문을 수행한다. ( 예 ) 2 부터 50 까지소수를출력하는프로그램을작성하시오. 이미앞에서정수를 InputBox 로입력받아서소수 (prime number) 인지아닌지를출력하는프로그램 을작성하였다. 1 부터 50 까지각각의수에대하여앞에서배운프로그램을이용한다면쉽게작성할수 있을것이다.
14/17 제어문 다중 FOR 문 Private Sub cmdprime_click() Form1.Show For k = 2 To 50 prime = 1 For i = 2 To k - 1 If k Mod i = 0 Then prime = 0 Exit For End If If prime = 1 Then Print k End If Next k (vb6_8.swf) 위프로그램을 2 부터 50 까지소수의합계를출력하는프로그램으로수정하시오. If prime = 1 Then sum = sum + k End If (vb6_9.swf)
연습문제 For 문을사용하여피보나치 (Fibonacci) 수열의 15 항까지구하여보자. Private Sub Form_Load() Form1.Show a = 1 b = 1 n = 1 Print a; Spc(3); b; Spc(3); start: n = n + 1 c = a + b Print c; Spc(3); If (n = 15) Then GoTo Majimak a = b b = c GoTo start Majimak: < Fibonacci 수열 > F0 = 1 F1 = 1 Fn = Fn-2 + Fn-1 ( 단, n>=2) (GoTo 문을사용할경우 ) 15/17
16/17 연습문제 Private Sub Form_Load() Form1.Show a = 1 b = 1 Print a; Spc(3); b; Spc(3); For i = 2 To 15 c = a + b Print c; Spc(3); a = b b = c (vb6_10.swf)
윈도우즈프로그래밍 (1) ( 담당교수 : 박호균 )