■ 반복 구문 = 블럭이라고 생각하자 { } 괄호 내를 하나의 블럭이라 생각하자.
■ 반복문
- 컴퓨터의 장점인 반복 수행 능력을 최대한 활용하는 방법
- 반복 패턴을 찾는 능력이 요구됨
- 종료 조건에 대한 처리가 중요
■ 왼쪽과 오른쪽의 차이
- 왼쪽은 한번 출력하면 끝난다. 하지만 오른쪽은 다시 처음으로 돌아가서 숫자를 입력받으면 또 출력하고, 또 되돌아가는 반복을 하게 된다.
■ 오른쪽 반복문에서 중요한 점 추가
- 위에서 언급했다시피, 반복문을 돌리게되면 무한정 계속 반복하게 된다. 이러한 점 때문에 종료가 필요하다. 즉 자동으로 상황 판단을 해서 종료할 수 있게 해줘야 한다.
■반복문 결론
1. 반복 패턴을 찾아야 한다,
2. 어떨 때 종료해야되는지를 정확하게 이해해야 한다.
■ do - while / for
do-while: 일단 반복을 시작하고, 종료 조건을 마지막에 확인
for: 단계별 변화를 동반한 반복에 적합
■ 계속 반복 : 이 부분에서 종료할지, 계속할지를 선택할 수 있게 한다.
■ 오른쪽 while
- if 역할을 내제하고 있다. if 역할도 동시에 수행한다는 뜻이다.
- 다른점은. if는 if 경우 수행할 블럭, 아닐 경우는 else블럭으로 나눠진다. while은 뒤에 조건이 나온다. 이 조건이 true면 올라가서 다시 반복한다. (do로 시작되는 반복블럭), 그리고 false면, 반복을 끝내고 다음 작업으로 넘어간다. 예를들면 true면 do반복으로 가며 학점을 pass or fail할지를 결정하러 가는 것이며, false면 아래의 '수고하셨습니다.'를 출력해서 끝내는 것이다.
- 마지막에 ' ; ' 라는 마침표를 잊지말자! 시험문제에서 자주 출제되는 단골문제다.
■ 위에서 언급한, true면 반복, false면 마무리 출력으로 끝내는 모습이다.
■ 종료조건을 살짝 달리 만든 순서도이다. 즉, 질문에서 보면 알파벳이 아닌 문자가 입력되면 종료하자. 라는 구문을 통해 종료조건을 추가한 것이다. 즉, 종료할지 말지 정하는 것이 아닌, 종료할 수 밖에 없는 상황이 생겼을 때 종료하는 경우다.
■ break:
- 반복문을 벗어나게 함
- switch 문의 break와 비슷하다. switch문 블록을 벗어나라는 의미와 같이 반복 블록을 벗어나라는 의미이다.
- 참고로 break는 해당 블록만 벗어남. 즉, break를 사용했다고, 프로그램 전체 블록을 벗어나는게 아닌, 그 구문을 사용한 블록만 벗어나게 된다. 예를들면 do 안에 switch로 구성된 프로그램이 있다. 여기서 switch에 break를 쓰면 switch 블럭만 벗어난다. 즉, do 전체를 벗어나는 것이 아니다.
■ continue:
- 반복문을 다시 시작하게 함
- 다만, 중요한 점! 종료 조건 확인을 수행. 이는 while(종료 조건)을 확인한 다음에 반복문을 다시 시작하게 된다는 점이다.
- 그릐고 반복 블록을 벗어나는게 아니다. 가장 아래로 가서 종료 조건을 확인하고 수행하는 것이다.
- 컨티뉴가 사용되 do - while 문의 경우 마지막에 자리하는 반복 유지 조건을 확인한다.
■ continue와 break의 차이
continue는 맨 아래 조건을 확인한다. 그러나 break는 확인도 안하고 추가적으로 블록도 벗어난다!
■ 종료 조건 : 0 미만, 100초과. 즉, 우리가 아는 학점의 0~100점 점수가 아닌 모든 것들을 말함.
■ for 반복문
- 특수한 목적으로 쓰임. 그러나 많이 쓰임
- 순차적 변화를 담아내는 반복문. (일을 하나씩 하나씩 처리, 출석부를 부를 때 1번부터 하나씩 부르는 등)
■ 카운터 값 초기화 = 0으로 초기화 한다고 생각하자.
■ 여기서 카운터 값은 계속해서 +1을 더한다 생각하면 된다. 등차수열을 생각하자.
■ for문이 동작하는 원리
- 판단에서 작업을 더 수행할지, 아니면 끝낼지를 결정하게 된다.
■오른쪽 설명 for (작업1; 판단; 작업3)
여기서 작업1 은 처음 한번만 실행하고, 반복하질 않는다.
판단은 계속해서 돌아올 때 실행된다.
작업2은 단순한 출력물이라 생각하자.
작업3은 계속해서 수행한다. 반복할 때마다! 예를 들면 위의 작업2에다가 +1 식으로 어떠한 작업을 수행하는 것이다.
여기서 다시 판단으로 돌아옴.
그리고 작업2는 앞서 했던 작업3의 작업내용을 보여준다. 예를들면 n+1한 값을 보여준다!
그리고 작업3으로 다시 돌아와서 기존 n+1한 값에 +1을 또 해준다!
■오른쪽 설명2 for (작업1; 판단; 작업3)
작업1 = 초기화 블럭 이라 부름
판단 = 종료 조건
작업3 = step 이라 부름
■ for문 기본적인 수행과정 (문제 풀이가 아닌, 단순한 수행 과정만 그린 것이다. 참고로 위의 문제는 틀렸다.)
□ int i = 0; // for문 내 처음 수행. 또한 여기서 0으로 초기화한다.
□ i < 0 // i가 0보다 작은지 확인.
□ system.out.println("Test Point"); //아랫줄 수행
□ i++ //위로 올라가서 수행
□ i < 0 // 수행
□ system.out.println("Test Point"); // 아랫줄 수행
□ i++ // 위로 올라가서 수행
■ 해당 기출 문제 풀이
□ int i = 0; // for문 내 처음 수행. 또한 여기서 0으로 초기화한다.
□ i < 0 // i가 0보다 작은지 확인. 그런데 위에서 0 으로 초기화 했는데 0이 0보다 작을 순 없다. 즉 false다!!
□ system.out.println("Test Point"); // 위에서 false가 나왔다. 그래서 이 곳을 수행하지 않는다.
□ i++ // 마찬가지로 위가 수행되지 않았으니 수행되지 않는다.
□ system.out.println ("end of program"); // 결국 false로 인해 여기가 실행된다. 즉, 위의 기출문제가 말하고 싶은 것은, i < 0보다 작은 상태에서는 프로그램이 정상적으로 작동되지 않고 바로 종료되기에 문제가 있는 것을 확인할줄 알아야 하는 것이다.
■ 학습정리
1. 반복문
- 컴퓨터에게 효율적으로 작업을 지시하는 방법
- 반복문은 상호 호환이 가능
- 반복 유지 혹은 종료 조건을 파악해야 함
- 반복 패턴을 찾는 능력이 요구됨
2. 반복문 control
- break로 반복문을 종료하게 할 수 있음
- continue를 통해 반복 블록 내의 코드 중 일부만 수행을 하지 않을 수 있음
- 조건문으로 반복문의 종료 조건을 확인할 수 있음
'컴퓨터공학 > 자바프로그래밍' 카테고리의 다른 글
9. 데이터를 모아서 관리하는 배열 (0) | 2024.07.08 |
---|---|
8. while문, 반복문의 중첩 (0) | 2024.07.08 |
6. 조건문 심화 (0) | 2024.06.29 |
5. 프로그램을 프로그램답게 만드는 조건문 (0) | 2024.06.12 |
4. 변수의 형 변환과 기본 연산자 (0) | 2024.06.05 |