Nulog
article thumbnail

7일차. 

엑셀에선 경험해보지 못한 반복문.

조건문과 다르게 실행 시 연산과정이 직관적으로 떠오르지 않아 조금 어려움을 겪었다.

IDE에서 디버그를 통해 각 연산을 단계적으로 확인할 수 있다고 하니, 활용하며 익숙해져보자.

 

코드스테이츠 7일차는 2023년 4월 19일이었다.

노션에 적어논 것을 티스토리로 옮기면서 다시 쭉 훑고 있는데, 잘 이해하고 써두었다고 생각했으나 다시 보니 더 잘 보이는 것들이 있었다.

주기적으로 크게 훑는 것도 필요해보인다.

 

노션글을 보니 이 무렵부터 프로그래머스 lv.0 문제를 풀기 시작한 듯하다.


 for문

: 반복문을 반복해야할 횟수를 알고 있을 때 주로 사용, 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복수행한다.

for(반복자 선언 및 초기화; 조건식; 증감식){ 
	실행코드
}

// 예시

for(int i =0; i < 10; i++){
	System.out.print(i);
}

/*출력
0123456789
*/

  향상된  for문 (for each)

: 배열 및 컬렉션 항목의 요소 개수만큼 반복하고, 자동적으로 for문 이탈. 반복자와 증감식X

public class Main{
	public static void main(String[] args){
    	String[] thieves = {"홍길동", "임꺽정", "장길산"};
        for(String name : thieves){
        	System.out.println(name);
        }
    }
}
/*출력
홍길동
임꺽정
장길산
*/

while문

: 조건에 따라 반복할 때 주로 사용, 조건식이 true일 경우 계속 반복. 시작부터 조건식을 검사하여 블록 내부를 실행할지 결정

  • 다만, 조건식을 true로 두면 무조건적으로 실행 가능. 이 경우 무한루프를 돌 가능성이 있어 탈출 조건을 마련해야함.
  • while문 내에 조건문 추가 = 조건 만족 시 break를 이용하면 반복문 종료 가능
(초기화);
while(조건식){
	실행문;
    증감식;
}
//초기화와 조건식은 생략 가능.
//실행문 내용에 따라 증감식도 생략 가능.

int num=0, sum=0;
while(sum<100){
	sum += num;
    num++;
    System.out.println(sum);
// if(num==10){break;} // while의 조건식인 sum<100이 아직 true더라도, break를 이용해 강제 탈출
}

/*출력
0
1
3
6
10
15
21
28
36
45 // 만약 주석처리된 탈출조건이 실행된다면 여기까지만 출력됨.
55
66
78
91
105
*/

------------------------------------------------

boolean run = true;
int num =1;
while(run){
	num++;
    System.out.println(num);
    if(num == 5){run = false;} // num이 5가 되면 탈출
}
/*출력
1
2
3
4
5

*/

do-while문

: 실행문 우선 실행 후, 실행결과에 따라 반복실행 여부 결정

  • 실행문 실행 후, 조건식 평가
  • 조건식 = true : do실행문 실행
  • 조건식 = false : 종료시 실행문 실행
do {
  실행문 //처음 한 번은 무조건 실행
} while(조건식); // 이후 조건식이 true이면 do실행문으로 회귀, 조건식이 틀릴 경우 종료
	종료 시 실행문


// 예제 코드
import java.util.Scanner;

public class Main {
  public static void main(String args[]){
    int input = 0, randomNum = 0;

      randomNum = (int)(Math.random() * 10) + 1; // 1 ~ 10 임의의 수를 생성
      Scanner sc = new Scanner(System.in);

      do{
        System.out.println("1과 10 사이의 정수를 입력하세요");
        input = sc.nextInt();

        if(input > randomNum) {
          System.out.println("더 작은 정수를 입력하세요");
        } else if (input < randomNum) {
          System.out.println("더 큰 정수를 입력하세요");
        }
      } while(input != randomNum);
      System.out.println(randomNum +" 정답입니다!");
  }
}

break문

: for, while, do-while, swith문에서 사용

  • 위에 잠깐 언급했지만, 보통 if문과 함께 사용하여 탈출조건 - 탈출의 형태로 사용됨
  • 중첩반복문의 경우, 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문까지 빠져나올 수 있도록, 해당 for문에 Outer 라벨
                }
            }
        }
    }
}
/*
i 3 j 5
i 3 j 4
i 3 j 3
i 3 j 2
i 3 j 1
i 4 j 5
i 4 j 4
i 4 j 3
i 4 j 2
i 4 j 1
i 5 j 5
*/

continue문

: for, while, do-while문에서 사용

  • break문과 마찬가지로 if문과 함께 사용된다. 
  • 해당 조건을 충족할 경우, 실행문을 패스하고 다음 반복으로 넘어가는 형태로 흔히 사용된다.
public class Main {
    public static void main(String[] args) throws Exception {
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) { // 짝수일 경우,
                continue; //다음 반복으로 넘어간다.
            }
            System.out.println(i); //홀수만 출력
        }
    }
}

 

profile

Nulog

@Nuni0617

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!