2023-12-11 (3일차) - 반복문 (while, for)

민짱·2024년 1월 7일
post-thumbnail

📅2023. 12. 11 3일차


🎨 Java

📢반복문

  • 반복문이란? 똑같은 명령을 일정 횟수만큼 반복 수행하도록 제어 명령
  • while 문
  • do/ while 문
  • for 문

while 문

  • 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행

  • 조건식이 참이면 내부 명령문을 실행 명령문 실행 후 조건식으로 돌아와 또 한 번 참인지 판단 이런 조건식의 검사를 통한 반복문을 루프(loop)라고 함.

    • while (조건 설정) --> 반복
    • ex) while ( i < 100 )
    • 순서 1번 int 2번 while 3번 i++ 마지막으로 반복하고 싶은 걸 적기.
  • while 문은 조건식이 true 일 경우에 계속해서 반복된다.

  • 조건식에는 비교 또는 논리 연산식이 주로오는데, 조건식이 false가 되면 반복 행위를 멈추고 while문을 종료한다.

    var sum =0;
     i = 1;
    while (i <= 10){
     sum +=1;
     1++;
    }
    console.log('1~' + (i -1) + '합은' + sum);
  • while 문을 사용하는 경우
      1. 무한 루프나 특정 조건에 만족할 때까지 반복해야하는 경우
      1. 주로 파일을 읽고 쓰기에 많이 사용

for 문

  • 초기, 조건, step 한 번에 적기

  • for문은 while문과는 달리 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문이다. 따라서 while 문 보다는 좀 더 간결하게 반복문을 포현할 수 있다.

  • 반복횟수를 알고 있을 때 주로 사용한다.

for(var m = 2; m <= 9; m++){
 console.log('===' + m + '단 ===');
 for(var n = 1; n <= 9; n++) {
  console.log(m + 'X' + n + '=' + (m*n));
 }
}
  • for 문을 사용하는 경우
      1. 반복 횟수가 정해진 경우
      1. 배열과 함께 주로 많이 사용

do/while 문

  • 조건에 따라 반복을 계속할지를 결정할 때 사용하는 것은 while 문과 동일.
    다만, 무조건 중괄호 {} 블럭을 한 번 실행하고, 조건을 검사하여 반복을 결정함.
var i = 1;

do{
  console.log(i)
  i++
}while(j <=10);

break 문

  • for, while, do-while문을 종료한다. (반복을 취소)
    switch문을 종료한다.
    대개 if 문과 같이 사용되어 if 문의 조건식에 따라서 for문과 while문을 종료할 때 사용한다.
  • continue 문
    • for, while, do-while문에서 사용하며 for문에서 continue를 만나게 되면 증감식으로 바로 이동하게 하며, while문, do-while문은 조건식으로 이동하도록 한다.

📋 문제 풀이

문제 : 1부터 5까지 출력해주세요.

class Main {
	public static void main(String[] args) {
		// 출력
		// 1
		// 2
		// 3
		// 4
		// 5
		int i = 1;
		while(i <= 5) {
			System.out.println(i);
			i++;
		}
	}
}
  • int형 변수 i를 만들고 1의 값으로 초기화 시킨 후 while 반복문을 사용하여 i의 값이 <= 5 때까지 반복시키고 i의 값을 ++ 시켰다.

문제 : -100부터 25까지 출력해주세요.

class Main {
  public static void main(String[] args) {
    // 출력
	int i = -100;
	while(i <= 25) {
		System.out.println(i);
		i++;
	}
  }
}
  • int 형 변수 i를 만들고 -100으로 초기화, i의 값이 <=25 까지 while문으로 반복, i의 값을 ++ 하였다.

문제 : 단을 * 1000까지 출력해주세요.

// 조건 : 곱하는 순서를 거꾸로 해주세요.

class Main {
  public static void main(String[] args) {
    int dan = 8;
    
    int i = 1;
    
    // 출력
    /*
    8 * 1000 = 8000
    ...
    8 * 1 = 8
    */
    i = 1000;
    while(i >= 1) {
    	System.out.println(dan + "*" + i + "=" + dan * i);
    	i--;
    }
  }
  • int형 변수 dan과 i를 각 각 8, 1의 값으로 초기화, i의 값을 1000으로 초기화 하고, i의 값이 >=1일 때 까지 반복 진행 i의 값을 --시켰다.

문제 : 1부터 5까지 출력해주세요.

class Main {
	public static void main(String[] args) {
		// 출력
		// 1
		// 2
		// 3
		// 4
		// 5
		for(int i = 1;i <= 5;i++) {
			System.out.println(i);
		}
	}
}
  • for 반복문으로 진행 int 형 변수 i에 1의 값으로 초기화, i <=5;로 조건 잡고 i의 값을 ++시켰다.

문제 : 1부터 5까지의 합을 더한 결과를 출력해주세요.

class Main {
  public static void main(String[] args) {
    
    int sum = 0;
    for(int i = 1; i <= 5; i++) {
    	sum += i;
    }
    System.out.println(sum);
  }
}
  • 합을 담을 int형 변수 sum에 0을 초기화, for 문으로 int형 변수 i 형성 1의 값으로 초기화, i <= 5;로 조건 잡고 i의 값을 ++시켰다.

📋 띵킹해보자!

문제 : 왜 결과가 저렇게 나오는가???를 서술(순차적으로, 우리말로)

class Main {
	public static void main(String[] args) {

		int rows = 5;
		for(int i = 1;i <= rows;i++) {
			for(int j = 1; j <= i; j++) {
				System.out.print("* ");
			}
			System.out.println();
		}
	}
}
  • 일단 int형 변수 rows에 5값이 초기화 되어있다.
  • i의 값이 1부터 5까지 1씩 증가한다.
    • why? for문에서 i <= rows 조건이 잡혀있고 rows의 값은 5로 초기화 되있으니까?
  • for문 안에 있는 이중 for문의 j값도 1부터 i 값까지 증가하면서 *을 출력한다.
    • why? i의 증가값은 rows의 값에 따라서 달라지고 i의 증가 폭에 따라서 별을 하나씩 찍어야하니까
  • *을 i의 증가값에 따라 찍고 마지막 System.out.println으로 줄바꿈한다.
    • why? 다른 행과 구별하기 위해

🔔 TODO

  • 출력, 변수, 조건문, 반복문 복습
  • 프로그래머스 while, for
  • 코드업 가능한 만큼

💡느낀점

항상 그 코드가 의미하는 지가 무엇인 지 왜??? 왜??!! 왜!!! 그렇게 작동하는지 생각하면서 하자!!

0개의 댓글