오늘 할 일
🛎 코드스테이츠 9일차
- 조건문
- 반복문
- 알고리즘 이야기
- break와 continue
오늘 배운 것
🛠 제어문
조건문과 반복문을 통틀어 제어문이라고 한다. 일반적으로 코드의 흐름은 위에서 아래로 향한다. 즉, 위에서부터 아래로 순차적으로 실행됩니다. 하지만, 제어문을 사용하면 코드의 흐름을 개발자가 원하는 방향으로 바꿀 수 있다.
- 제어문
- 조건문 : if문, switch문
- 반복문 : for문, while문, do while문
조건문을 사용하면 특정 조건에 부합하는 경우에 어떤 코드를 실행시키면서 어떤 코드는 실행시키지 않을 수 있으며, 반복문을 사용하면 특정한 코드를 반복적으로 실행시킬 수도 있다.
조건문
if문
if문의 소괄호 안에는 boolean 값으로 평가될 수 있는 조건식을 넣어주고, 중괄호 안의 실행 블록에는 조건식이 참일 때 실행하고자 하는 코드를 적어주면 된다.
if (조건식) {
//조건식이 참이라면 실행되는 블록
}
중괄호({})를 이용해 여러 문장을 하나의 단위로 묶을 수 있고 이것을 ‘블록(block)’이라고 한다.
if...else문
if...else 문은 조건식의 결과에 따라 실행블록을 선택한다. if문의 조건식이 true이면 해당 블록이 실행되고, 조건식이 false 이면 다음으로 넘어가 else if문의 조건식을 검사한다. else if문의 모든 조건식이 false라면, 나머지 경우를 의미하는 else 블록이 실행된다.
if(조건식1) {
//조건식1이 참이라면, 실행되는 블록
}
else if (조건식2) {
//조건식1이 참이 아니면서 조건식2가 참일 때, 실행되는 블록
}
else {
//조건식1과 2가 모두 참이 아닐 때, 실행되는 블록
//else문은 생략 가능
}
Switch문
switch문은 조건 제어문이다. 하지만 switch문은 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다.
if문은 조건식의 결과가 true와 false 두 가지 밖에 없기 때문에 경우의 수가 많아질수록 if-else를 반복적으로 추가해야 하기 때문에 코드가 복잡해진다. 그러나 switch문은 변수의 값에 따라서 실행문이 결정되기 때문에 같은 기능의 if 문보다 코드가 간결할 수 있다.
switch문은 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행한다. 그러나 만약 괄호 안의 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행힌다(default 는 생략 가능).
주의할 점은, break문을 작성하지 않으면 switch문을 탈출하지 않고 모든 case문을 실행하게 되어 원하는 방식으로 동작하지 않는다는 것이다(이를 fall through라고 한다).
알고리즘
문제를 분해하여 더욱 작은 문제로 만들고, 수도 코드를 작성하는 일이 큰 도움이 될 수 있다. 수도 코드를 실제 실행할 수 있는 코드로 작성하면서 프로그램을 완성해가는 과정을 함께 따라가면서 고민해보아야 한다.
문제를 분해한 후 수도 코드를 작성하여 문제를 해결하는 초석을 만들 수 있다.
반복문
반복문은 코드들이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류로는 for문, while문, do-while문이 있다. for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 좋지만, for문은 반복횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다.
for문
for문은 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복적으로 수행한다.
public class Main {
public static void main(String[] args) {
int sum = 0;
// for (초기화; 조건식; 증감식)
for(int num = 0; num < 10; num++) {
sum += num;
}
System.out.println(sum); // 1~9의 합인 45가 출력
}
}
반복문에는 i라는 변수명을 많이 사용한다. i는 iterator(반복계수)를 의미한다.
- 초기화는 for문이 시작할 때 최초 한 번만 수행되며, 사용할 변수의 초깃값을 정한다.
- 조건식은 계속 반복할지 여부를 결정하는 조건이다. 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행하지 않고 끝난다.
- 증감식은 반복 횟수를 결정하는 규칙이다. 변수에 값을 더하거나 곱하는 등 수행 방식을 지정합니다. ++ 은 반복문에서 자주 쓰는 증감연산자로, 피연산자의 값을 1 증가시킨다.
- 실행 블록 안의 코드는 총 10회 반복된다.
초기화식이나 증감식도 둘 이상이 될 수 있다.\
// i는 0부터 50까지 51회 증가, j는 100부터 51회 감소
for(int i=0, j=100; i<=50 && j>=50; i++, j--) {
실행문;
실행문;
}
향상된 for문 (Enhanced for 문)
향상된 for문은 반복실행을 하기 위해 카운터 변수와 증감식을 사용하지 않는다. 배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나간다.
public class EnhancedForLoop {
public static void main(String[] args) throws Exception {
String[] names = {"kimcoding", "javalee", "ingikim"};
for(String name : names) {
System.out.println(name + "님은 자바를 공부중 입니다.");
}
}
}
/*
kimcoding님은 자바를 공부중 입니다.
javalee님은 자바를 공부중 입니다.
ingikim님은 자바를 공부중 입니다.
*/
위와 같이 for문의 괄호( ()) 안에는 배열에서 꺼낸 항목을 저장할 변수 선언, 콜론( : ), 그리고 사용할 배열이 작성된다. 향상된 for문을 처음 실행 할 때, names 배열에서 가져올 첫번째 값이 존재하는지 확인 하고, 값이 존재하면 해당값을 변수인 name에 저장한다. 그리고 그 안의 실행문을 실행한다. 블록 내부의 실행문이 모두 실행 되면 다시 names 배열에서 가져올 값이 있는지 확인 하고 만약 가져올 다음 항목이 없다면 자동적으로 for문이 종료된다.
즉, 배열의 크기만큼 for문이 실행된다!
while문
while문은 조건식이 true일 경우에 계속해서 반복된다.
(초기화);
while(조건식) {
실행문; //조건식이 참인 동안 실행
증감식;
}
do-while문
do-while문은 조건식에 의해 반복 실행한다는 점에서는 while문과 동일하다. while문은 시작 할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만, 경우에 따라서는 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속 할지 결정하는 경우도 있다.
do {
(1)실행문 //처음 한 번은 무조건 실행
} while((2)조건식);
do-while문이 처음 실행될 때 (1)실행문을 먼저 실행한다. (1)실행문이 모두 실행되면 (2)조건식을 평가합니다. 그리고 그 결과가 true이면 (1)실행문 → (2)조건식으로 반복 실행을 하고, false이면 do-while문을 종료한다.
break문
break문은 반복문인 for문, while문, do-while문을 실행 중지할 때 사용된다. 또한 이전에 학습한 switch문에서도 break문을 사용하여 switch문을 종료한다.
- break문은 대개 if문과 같이 사용되며, if문의 조건식에 따라 for / while문을 종료 할 때 사용한다.
- 만약, 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료하고, 바깥쪽 반복문에는 영향을 끼치지 않는다.
public class Main {
public static void main(String[] args) {
Outer : for (int i = 3; i < 10; i++) {
for (int j = 5; j > 0; j--) {
System.out.println("i " + i + " j "+ j);
if (i == 5) {
break Outer;
}
}
}
}
}
- 바깥 for문에서 변수 i의 값이 5가 되면 바깥 for문까지 빠져나올 수 있도록 해당 for문에 Outer라는 라벨을 붙이고, 이를 break문에 사용했다.
- 이런 식으로 레이블문을 쓰면, 중첩된 for문 안에서도 바깥쪽 for문까지 완벽하게 빠져나올 수 있다.
- 레이블문이 없다면 내부에 있는 for문만 빠져나온다.
Continue문
continue문은 반복문인 for문, while문, do-while문에서만 사용 되는데, 블록 내부에서 continue문이 실행되면 for문의 증감문 혹은
while, do-while문의 조건식으로 이동하여 작동한다.
continue문과 break문의 차이점은 반복문 종료 여부이다.
- continue문은 반복문을 종료하지 않고 다음 차례로 넘어가 계속 반복을 수행한다.
- break문과 마찬가지로 continue문도 보통 if문과 함께 사용하는데, if문의 조건을 만족하는 경우 continue문을 실행하여 그 이후의 코드를 실행하지 않고 다음 반복으로 넘어간다.
느낀점
- 파이썬으로만 하던 조건문, 반복문을 자바 언어로 접하니 생각보다 신경 쓸 내용이 많다고 느낀다.
- 알고리즘 문제를 푸는 데에 있어서 가장 중요한 스킬을 배우는 시간이었다. 아직 자바로 알고리즘을 풀고 있지는 않지만 오늘 공부한 것들부터 차곡차곡 쌓여서 자바로 알고리즘을 무난히 풀 수 있는 실력이 되길 바란다.
- 연습 열심히!!
내일 할 일
🦎 코드스테이츠 10일차
- 배열: 1차원 2차원 가변 배열, 배열 탐색 등
'TIL' 카테고리의 다른 글
TIL_20220902 (0) | 2022.09.02 |
---|---|
TIL_20220901 (0) | 2022.09.01 |
TIL_20220830 (0) | 2022.08.30 |
TIL_20220829 (0) | 2022.08.29 |
TIL_20220827 (0) | 2022.08.27 |