10일차 - java ' 제어문 for(반복문)'
오늘 비가 와서 차가 엄청 막혔다.
어제라면 도착했을 시간에 도로 위에 서 있었음;;
겨울이 오려나 보다. 비가 좀 왔다고 추워지네
자바 수업 시작
반복문
일정한 패턴(규칙성)을 가지고 동작한다면 반복문으로 만들 수 있다.
반복문 종류
while(~하는 동안)은 조건이 만족하는 동안 중괄호 안 내용(수행문)을 반복한다.
for(~에 대하여)은 조건에 대하여 수행문을 반복한다.
*while문을 for문으로 for문을 while문으로 서로 바꾸는 방법을 알고 있어야 한다!
while
while은 조건을 먼저 처리해서 조건을 만족하지 않을 동안 계속 반복한다.
그래서 while을 잘 못 쓰면 무한루프가 되서 계속 메모리를 쓰게 되서 제대로 사용해야 한다.
while문을 이용해서 1부터 10까지 더했다.
진지한 궁서체
여기서 좋은 개발자가 되려면 num이 10보다 작거나 같은 조건식이기 때문에 11이 들어갔을 때 동작 하지 않는지 확인해야 한다!
while이 조건을 만족하지 않으면 실행이 안 되는 반면
do while은 조건식보다 실행을 먼저 처리하기 때문에 무조건 한 번은 수행된다.
for
for(초기식; 조건식; 증감식){수행문}
초기식 -> 조건식 -> 수행문 -> 증감식 순으로 처리한다. 초기식은 처음에 한 번 실행하고 다음부터 조건을 만족하면 수행을 실행하고 그리고 증감식을 실행한다.
여기서 변수는 반복문 for안에서 쓰는 변수이기 때문에 변수 선언을 하면서 초기화를 하는 경우가 많다.
하지만 만약 for문에서 사용한 변수를 다른 코드에서도 써야 한다면 변수를 for문 밖에 써야 한다.
*반복 횟수와 무관한 변수는 쓰지 않는다. sum은 반복된 num값의 합이기 때문에 for문 밖에서 변수 선언과 초기화를 했다.
while문은 초기값은 괄호 밖에 있고 증감식은 제일 마지막에 있기 때문에 코드 전체를 훑어봐야 한다.
하지만 for문은 반복문에 필요한 부분이 모두 들어있기 때문에 한눈에 볼 수 있다.
for(;;) - 초기식, 조건식 없음 -> 무한루프 while(true)와 같다. 무한루프를 한다면 일반적으로 while을 쓴다.
반복문 안에 조건문
안녕하세요1, 안녕하세요2, 안녕하세요3 · · · 안녕하세요10 을 출력하는 코드를 만들었다.
안녕하세요+숫자는 반복문이고 뒤에 붙은 쉼표는 조건문으로 만들어야 하는 예제이다.
안녕하세요10은 끝에 쉼표가 붙지 않게 조건문으로 만들어야 한다.
for과 if를 이용해서 코드를 만들었다.
if문 코드가 한 줄로 짧기 때문에 아래의 코드로 바꾸는게 더 깔끔한 코드로 나온다.
중첩반복문
어떤 반복문을 먼저 수행해야 하는지 파악해야한다.
구구단을 출력하는 코드를 만들었다.
여기서 정렬을 바꿔서 왼쪽에서 오른쪽으로 한 단씩 정렬된 구구단을 위에서 아래로 한 단씩 정렬로 바꿨다.
프로그램은 기본적으로 왼쪽에서 오른쪽으로 출력되어 각 단에 1을 곱하는 반복문이 먼저 수행되어야 한다.
그래서 변수 dan이 들어간 조건식과 변수 times 들어간 조건식의 위치를 바꿔주면 원하는 정렬로 출력된다.
continue
특정 조건에서는 수행하지 않고 건너뛰어야 할 경우에 사용한다.
반복문을 계속 진행하지만 continue 아래에 있는 코드는 실행 시키지 않는다.
홀수의 합을 구하는 코드를 만들었다.
나머지 연산자를 이용해서 num을 2로 나눠 나머지가 0이면 짝수이기 때문에 continue를 이용해서 조건식을 진행하고 홀수가 나오면 continue 다음 코드를 실행시킨다.
*continue 다음 중괄호 없으니 헷갈리지 말기!
continue를 사용하지 않고 ==0 을 ==1로 바꾸면 되지만...
반복횟수가 정해져 있으면 for, 정확하게 정해지지 않거나 횟수가 변한다면 while
프로그램은 단순하게 생각하면 코드가 단순해진다!
응용해서 계속하다보면 어디에 어떻게 쓰일지 활용도가 생각난다!
내용을 쪼개서 제일 간단한게 뭔지 제일 필요한게 뭔지 파악하는게 중요하다.