04강. 제어문
한국방송통신대학교 컴퓨터과학과
이 관 용
비주얼 프로그래밍
오늘의 강의
IF문
SELECT CASE문 FOR-NEXT문 DO LOOP문 [실습]
선택문
반복문
If문
Select Case문 For ~ Next 문
Do Loop 문
제어문
프로그램의 실행 경로를 조정하는 문장 선택문, 반복문
선택문(조건문)
여러 실행 경로 중에서 하나의 경로를 선택 IF문 (IF-THEN-ELSE문)
다중 선택문 (SELECT CASE문)
5
IF-THEN문
형식
If
조건
Then문장 조건
문장
If MiddleAgeThen Label1 = "Middle aged"
If (Age < 65 And Age > 49) Then
Label1.Caption = "Middle aged"
If (Balance < 0) Then Balance = 0
참
컨트롤의 가장 중요한 속성
Text Text Box
Value Option button
Caption Label
Caption Frame
Caption Command Button
Value Check Box
속성 컨트롤
Label1.Caption = “점수입력”
Label1 = “점수입력”
Text1.Text = “Hello”
Text1 = “Hello”
7
블록 IF문
If
조건
Then문장1 문장2
…
End If조건
문장1
참
문장n
…
IF-THEN-ELSE문
조건
문장2
참
문장1
거짓
If Text1.Text > 60 Then pass=“합격”Elsepass=“불합격”
If
조건
Then문장1
…
Else문장A
…
End If조건 문장1 문장2
9
다중 IF문
조건n
문장n 문장n+1 T F
조건2
문장2 T F 조건1
문장1 T F If
Then
Then
Then ElseIf
End If
Else ElseIf
다중 IF문
F 59 ~ 0
D 69 ~ 60
C 79 ~ 70
B 89 ~ 80
A 100 ~ 90
학점 점수
11
다중 IF문
If score >= 90 Then hakjum = “A”
ElseIf score >= 80 Then hakjum = “B”
ElseIf score >= 70 Then hakjum = “C”
ElseIf score >= 60 Then hakjum = “D”
Else hakjum = “F”
End If
If문
Select Case문 For ~ Next 문
Do Loop 문
13
SELECT CASE문
N값?
S1 Sn
Cn S2
C1 C2
S3 … C3
SELECT CASE문
Select Case
변수
Case
상수1 [,상수2, 상수3, …]
문장
…
Case Else
문장
…
End Select[
]
15
SELECT CASE문
Case 상수1 [,상수2, 상수3, …]
Case 상수1 To 상수n
Case Is op 상수
Case Is op 상수a and/or 변수 op 상수b op : 관계연산자
Case 100,99,98,97,96,95,94,93,92,91,90Case 90 To 100
Case Is >= 90
Case Is >= 90 And score <= 100
SELECT CASE문
Select Case score
Case 100,99,98,97,96,95,94,93,92,91,90 hakjum = “A”
Case Is >= 80 And Score <= 89 hakjum = “B”
Case Is >= 70 hakjum = “C”
Case 60 To 69 hakjum = “D”
Case Else
hakjum = “F”
End Select
If score >= 90Then hakjum = “A”
ElseIfscore >= 80Then hakjum = “B”
ElseIf score >= 70Then hakjum = “C”
ElseIfscore >= 60Then hakjum = “D”
Else hakjum = “F”
End If
If문
Select Case문 For ~ Next 문
Do Loop 문
반복문
프로그램의 일정 부분을 반복 실행
유형
계수기(counter) 제어 루프 정해진 회수만큼 반복 For문
논리(logic) 제어 루프
주어진 조건을 만족하는 동안 반복 While문
19
FOR-NEXT문
시작값
증감값 문장(들)
최종값 T
F
FOR-NEXT문
형식
For
변수=초기값
To최종값
[Step증감값]
문장1 문장2
…
Next [변수]
21
FOR-NEXT문
For x = 0 To 4 Print x * 5 Next x
Step 키워드 생략 Î x 변수는 1씩 증가 4*5 = 20 4
3*5 = 15 3
2*5 = 10 2
1*5 = 5 1
0*5 = 0 0
For i = 2 To 2.5 Step 0.5 Print i
Next i
루프 내의 인덱스는 소수도 사용 가능
FOR-NEXT문
2.5 2.5
2 2
23
FOR-NEXT문
For x = 4 To 0 Step -1 Print x * 5
Next x
Step -1로 표기 Î 역순으로 수행 가능 0*5 = 0 0
1*5 = 5 1
2*5 = 10 2
3*5 = 15 3
4*5 = 20 4
FOR-NEXT문
Private Sub Command1_Click()
Dim first As Integer, last As Integer Dim sum As Integer, i As Integer first = Text1.Text
last = Text2.Text For i = first To last
sum = sum + i Next i
Text3.Text = sum End Sub
Text1 Text2 Text3
25
FOR-NEXT문
If Text1.Text > Text2.Text Then first = Text2.Text
last = Text1.Text Else
first = Text1.Text last = Text2.Text End If
다중 FOR-NEXT문
For 변수1=초기값1 To 최종값1 [Step 증감값1]
문장(들)
For 변수2=초기값2 To 최종값2 [Step 증감값2]
문장(들) Next 변수2 문장(들) Next 변수1
문장(들)
27
다중 FOR-NEXT문
For i=2 To 9 Step 2 For j=1 To 9
Form1.Print i; “ * ”; j; “ = ”; i*j Next j
Form1.Print Next i
1, 2, 3, …, 8, 9 2, 4, 6, 8
If문
Select Case문 For ~ Next 문
Do Loop 문
29
DO LOOP문
Do While문, Do Until문
조건이 만족되는 동안 (만족될 때까지) 반복 조건 검사 방식
사전 검사 사후 검사
DO WHILE문
명령문 조건식
명령문 참
거짓
조건식 명령문 명령문 참
거짓 Do While
조건
문장(들)
Do
문장(들)
31
DO UNTIL문
명령문 조건식
명령문 거짓 참
조건식 명령문 명령문
참 거짓
Do Until
조건 문장(들)
LoopDo
문장(들)
Loop Until
조건
DO LOOP문
Do Until num > 10 sum = sum + num num = num + 1 Loop
Do While num <= 10 sum = sum + num num = num + 1 Loop
Do
sum = sum + num num = num + 1 Loop Until num > 10 Do
sum = sum + num num = num + 1 Loop While num <= 10
1~10까지의 합을 구하시오
33
DO LOOP문
Dim i As Integer Dim sum As Integer Do
i = i + 1
sum = sum + i Loop Until sum >= 100 Form1.Print i
1+2+3+...+ i > 100이 되는 최소 i는 얼마인가?
Exit문
반복문/프로시저를 강제로 종료하는 경우 Do
i = i + 1
sum = sum + i Loop
If sum >= 100 Then Exit Do
For i=0 To 100
…
If 조건 Then Exit For
…
실습
실습 내용
제어문 사용 방법 If문, Select Case문 반복문
여러 폼을 다루는 방법 (Show, Hide)
37
프로그램 따라하기
frmMax
Label1 Label2
txtFirst txtSecond
cmdFindMax
frmSecond frmFirst
lblSecond lblFirst
프로그램 따라하기
39
프로그램 따라하기
3, 5, 7, 9 2, 4, 6, 8
Label1 Appearance:
0-평면 BorderStyle:
1-단일고정