그림으로 배우는 자바,
파트1: 입문!
반복문
참고 사이트:
반복문, 규칙적 코드의 압축!
< 반복문 종류 (2) >
for문 - 반복횟수 명확할 때
while 문 - 반복횟수가 불분명할 때
- 반복문 사용할 때 주의할 점 -
끊임없이 반복되는 상황을 주의해야 한다
while 문, 카운트 다운
- while문 구조 -
소괄호 안 쪽엔 조건식
중괄호 안쪽엔 반복 내용을 쓴다
1) 조건식이 참인지 검사를 먼저한다
2) 참이면 중괄호 안 쪽의 반복내용을 수행하게된다
3) 반복내용 실행이 끝나면 다시 조건식으로 되돌아온다
4) 조건식이 참이면 또 반복을 하게되는 것
5) 조건식이 거짓이 될 때까지 반복문이 실행됨
n 이라는 변수에 4라는 값을 넣고있다
4, 3, 2, 1 출력하도록 하자
while 문을 만나면 우선 소괄호 속에 있는
조건식을 먼저 확인한다
n = 4 > 0
이니까 참이다
그래서 4 가 출력된다
그러고 나서 중괄호 안 쪽의
n--;
를 수행하게되는데
n 의 값을 1 감소시키라는 의미이므로
n의 값이 4였는데 1 감소돼서 3 이 된다
그렇게되면 더이상 중괄호 안쪽에
수행할 내용이 없게되므로
실행의 흐름이
다시 조건식을 검사하게끔
돌아간다
다시 n > 0이 성립되는지 검사하게 되는데
n이 아까 1 감소해서
3이 되었고,
아직까지는 조건식이 성립하므로
3이 출력되고
n--; 에 의해
1 또 감소하게 된다
2로 줄어들음
계속 줄어들다가 n 이 0이되면
조건식이 참이 아닌
거짓으로 되므로
중괄호 반복문이 더이상 수행되지 않는다
그러고 실행의 흐름은 while 문을 벗어나게 됨
1) 입력값 받기
5를 입력하게되면
문자열 5를 정수 5로 반환해서
그 값이 startNum 에 저장된다
Integer.parseInt(args[0]);
2) 카운트 다운 출력
그 startNum 을 갖고 countDown 메소드를 호출함
3) 조건식 작성하기 (while 문)
n 이 0 보다 크면 반복하기인
(n>0)을 조건식으로 넣으면 출력이 안된다
왜냐하면 n이라는 변수가 선언돼있지 않기 때문이다
n 대신에 파라미터 num 을 사용하면 된다
num 이라는 변수의 값 5가 들어가게 되면
0보다 크니까 중괄호 안쪽의 반복문이 실행됨
근데 num > 0 은 0 까지는 출력이 안되고
1까지만 출력이 될 것이다
=> 왜냐하면 0이랑 같으면 수행하지 않기 때문
비교연산자를
>=
(크거나 같다)
로 수정해주면 0까지 출력 가능하다
for 문, 1부터 N까지
< for 문 >
세미콜론(;)을 기준으로 해서
3개의 구성요소로 이뤄져 있다
그리고 중괄호 안 쪽엔
반복할 내용이 들어있다
1) 초기설정을 먼저 함
2) 그 다음으론 조건식을 검사한다
3) 조건식이 참 이면
중괄호 안 쪽의 반복내용을 실행한다
4) 반복내용이 끝나면
3번째 구성요소인
갱신을 수행한다
5) 갱신도 끝나면 다시 2번째 구성요소인 조건식을 검사
조건식이 거짓이 될 때 까지 반복한다
거짓이 되면 실행되지 않고
for 문 바깥으로 나온다
- 숫자 출력하기 -
1) 초기설정
= 1 이라는 값이 변수 i 에 저장되는 것
2) 조건문 영역 수행
1 은 4보다 작으니까
조건문은 참이다
고로, 중괄호 안 쪽 반복문이 실행되게 됨
3) i 값이 1 이니까 1이 출력됨
그러고나서 갱신을 하게된다
(i++)
i++ 연산자는 현재 i 값을 증가시키라는 의미
= 1 에서 2 로 i 값이 증가됨
4) 다시 조건식을 검사한다
i < = 4
i가 2니까 조건식은 참이다
반복되다가.
조건식이 거짓이 되면
( i 가 5 인 경우)
더이상 반복되지 않고
for 문을 빠져나간다
메인메소드에서 printNumbers 메소드를 호출하고 있는 상태
입력값에 7을 입력하면
문자열 7 이 args[0] 에 대입이 되고,
문자열 -> 정수로 변환이 된다
그리고 그 값 ( 정수 ) 가
변수 n 으로 저장이 된다
=> int n
그러고나서 실행의 흐름이
printNumbers(n)로 넘어감
1 부터 7 까지 출력하기
7이라는 값을 입력값으로 봤기 때문에,
max라는 변수 사용해서
작성해준다
4가 아니라 max 로 바꿔준다
break 문, 반복탈출
실행이 되다가 반복문에 대한
조건식(다이아몬드)을 만나고
참이면 A,B,C 실행됨
그러고 나서 다시 조건식으로 되돌아가 검사한다
근데 중간만 실행하고(A, B)
그냥 그만 실행하고 나가고싶을 때
사용하는 것이
break 문이다
break문은 일반적으로
조건문에 맞물려서
사용이 된다
- break 문의 예시 -
1) 변수생성
0 이라는 값이 변수 sum 에 대입됨
2) for 문 통해 반복 수행
i 가 4가 되면 빠져나가라고 돼어있는데 (break)
i 가 지금 1이므로 빠져나가진 못한다
그래서 break문은 수행되지 않고
총합을 구한다
sum += i
( i 값을 sum 에다가 더해서 넣어라)
sum 은 0 이니까
0에다가 1을 더하라는 뜻
3) 수행이 끝나면 i++로 돌아가서
갱신된다
i++를 하면 i는 2가되고
다시 조건식으로 검수를 한다
( i <=10; )
계속 반복하다가
i 의 값이 4가 된다면
break 문이 실행되어
반복문을 탈출하게 된다
continue 문, 다음 반복으로
만약 A 까지만 수행하고
밑에 걸 수행하지 않은 채로
다음 반복인 조건식으로
그냥 넘어가고싶을 땐
continue 구문을 사용한다
( 실행 중간에 강제로 다음 반복으로 넘어갈 수 있음 )
조건문과 맞물려서 사용해주면 된다
예시 ex) 만약 조건식이 홀수라면
다음 반복으로 강제이동해라
1) sum 이라는 변수에 0이라는 값 초기화
2) for 문을 사용하여
1 ~ 7까지의 홀수의 총합을 구하기
(짝수는 제외)
i 나누기 2 는 0이랑 같다
= 짝수인가?
i 는 1이기 때문에
continue 구문은 시행되지 않고
sum을 갱신하는 영역으로 간다
sum 에 i 값 더해서
sum = 1 이되고
i 는 i++ 에 의해 1 증가돼서 2가 된다
그리고 다시 조건식 i <=7을 검사한다
2는 짝수이므로 continue 구문이 수행돼서
아래에 있는 구문 ( sum += i )는 시행되지 않고
강제로 다음 반복으로 넘어가게된다
sum의 값은 갱신되지 않고
i 의 값만 증가됨
( i = 3 )
3 은 7보다 여전히 작고 짝수가 아니니
다시 sum을 갱신하게 된다
( sum += 3 )
( i = 4 )
이런 식으로 반복되면
sum 의 값은 16이 나오게 된다
sum = 0
0 + 1 + 3 + 5 + 7 = 16
중첩된 반복문, 행렬 출력
< 중첩 반복문 >
- 별표시 출력 연습 -
총 행은 7행이고
총 열은 4열이다
1 줄을 7번 출력하면 된다
각 행을 보면 4번 반복하고 있는 셈
한 줄을 7번 출력하고
각 행을 4번 반복하니 4번 출력
바깥에 7번 반복하는 반복문을 두고
그 안쪽에 4번 반복하는 반복문을 둬서 출력해준다
row - 행
row = 0 부터 7보다 작을 때 까지
( 0 ~ 6 까지 7번 반복)
row ++ 해서
각 행을 7번 출력가능
행을 쪼개서
중첩된 반복문을 만들기 위해
해당 반복문 안에다가
또 반복문을 만들어 넣어준다
for문으로 표현할 건데
" **** " 을 " * " 로 쪼개서 표현해준다
0부터 시작해서 4보다 작을 때까지의 패턴을
기억해두는 것이 좋다
=총 4번에 됨
4번 반복을 끝내고
줄 개행을 나타내기 위해 (엔터)
println 메소드를 추가해준다
'> 프로그래밍 언어 > JAVA' 카테고리의 다른 글
[그림으로 배우는 자바, part2]: 01 객체지향 프로그래밍 (0) | 2023.02.26 |
---|---|
[그림으로 배우는 자바, part1]: 08 배열 (0) | 2023.02.26 |
[그림으로 배우는 자바, part1]: 06 조건문 (0) | 2023.02.19 |
[그림으로 배우는 자바, part1]: 05 메소드 (0) | 2023.02.06 |
[18.1] IO 패키지 소개 (0) | 2023.02.01 |