🚩들어가며
For문은 혼자 쓰이면 간단하지만, if나 while과 함께 쓰일 때 구조가 처음에는 많이 헷갈리는 듯하다. 눈으로만 봐서는 어디까지가 루프의 시작과 끝인지 알기 어려워 순서도(flowchart)를 그려보는 게 좋은데, 이때 중괄호가 생략되면 더 큰 혼란에 빠지게 된다. Do it! 알고리즘 자바 편을 공부하다 교재 오타인지 내가 모르는 문법인지 헷갈렸는데 다른 사람들은 나처럼 혼란스럽지 않길 바라는 마음으로 글을 시작한다!
👀사전 지식
위 링크들을 먼저 읽어보고 오면 좋다!
🌱오늘의 소스코드: 빠르게 이해되나요?
1. for-if문
public class SeqSearch {
static int seqSearch(int[] a, int n, int key){
for(int i=0;i<n;i++)
if (a[i] == key)
return i;
return -1;
}
}
2. for-while문
for(int i=1;i<=num;i++){
do{
System.out.print("x[" +i+ "]:");
x[i]=stdIn.nextInt();
}while(x[i]<x[i-1]);
}
🌱For문과 If문
If문에서 뒤에 중괄호를 생략하고, 개행을 안 하기도 한다는 건 다들 많이 아는 것 같다.
ex: if (1) return i;
그러나 For문에서도 뒤에 한 줄까지는 수행문으로 인식한다!
public class SeqSearch {
static int seqSearch(int[] a, int n, int key){
for(int i=0;i<n;i++)
if (a[i] == key)
return i;
return -1;
}
}
즉, 이 구문에서도 if앞에 중괄호가 생략된 것이다.
다만, If문처럼 명명백백하고 굉장히 널리 쓰이는 수준의 구문이 아니라면 중괄호 생략은 추천하지 않는다.
for루프가 언제 시작되고 끝나는지 명확하지 않을 뿐더러, 실수하기 딱 좋기 때문이다. 웬만하면 생략하지 말자!!StackOverFlow에 달린 댓글에 따르면 나중에는 아래처럼 적어놓고도 뭐가 문젠지 모를 수 있다고...
Why on earth*$#^@$를 외치기 전에 코딩습관을 잘 들여놓자.
🌱For문과 While문
1. For문과 While문의 차이 (Differece btw For Loop & While Loop)
순서도에서 알 수 있다시피 For문은 for(int i=1;i<=num;i++) 이런 식으로 조건에 i의 한도가 정해져있다. 반면 While의 경우 '참'이면 무한반복이 가능하므로 반복횟수가 일정 숫자로 정해져 있지 않다.
2. For문 안의 While문 (While loop nested within a for loop)
이 둘을 결합하면 어떻게 될까? 위의 소스코드에서 do while문이 for의 statement(수행문)으로 들어가게 된다.
따라서 while문이 끝나면, 즉 while문의 조건이 거짓이면 for문으로 다시 돌아가 i<num이면 i++해서 진행하게 된다.
💻마치며
간단하게 For문과 While문,If문에 대해 정리해보았다.
특히 For문의 경우 중괄호 생략이 교재 오타다vs아니다로 현직자분들 사이에서도 갈릴 만큼 for문 중괄호 생략이 널리 알려지지 않은 것 같다. 도움이 되었길 바란다!
+문법 전부를 외울 필요는 없다지만 기본적인 건 완벽하게 숙지하자는 교훈을 얻었다 ㅎㅎ
'Computer Science > OOP' 카테고리의 다른 글
JPA 연관관계 매핑, 상속관계 매핑 (0) | 2022.09.04 |
---|---|
객체지향 설계의 3가지 관점과 코드예제 (2) | 2022.08.27 |
캡슐화는 정보 은닉이 아니다(번역) encapsulation, cohesion, coupling (2) | 2022.07.11 |