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

·2023년 12월 11일

📅 2023-12-11, 3일차

💭

while문과 for문을 자유자제로 바꿔가며 쓰는게 익숙치 않음😦

💡신경쓰기

  • 정렬 ctrl + shift + f
  • 저장 ctrl + s
  • 기본문법 (;)
  • 클래스 네임 & 파일 네임 일치

반복문

✔ 반복문의 종류

  • while
  • for

✔ 반복문의 3요소

① 초기값
② 종료조건
③ 스텝 (보폭 및 방향)
④ 반복하고싶은거

while문

int i = 1;   // ① 초기값

while (i <= 1000) {  // ② 종료조건
  System.out.println(dan + " * " + i + " = " + dan * i);  // ④ 반복하고싶은거
  i++;  // ③ 스텝
}

while문 문제풀이

// 문제 : 아래와 같이 출력해주세요.
// 문제 : 단을 * 1000까지 출력해주세요.

class Main {
  public static void main(String[] args) {
    int dan = 8;

    int i = 1;

    while (i <= 1000) {
      System.out.println(dan + " * " + i + " = " + dan * i);
      i++;
    }

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

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

		int i = 1;

		while (i <= 5) {
			System.out.println(i);
			i++;
		}
	}
}
//문제 : -100부터 25까지 출력해주세요.

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

		int i = -100;

		while (i <= 25) {
			System.out.println(i);
			i++;
		}

	}
}
// 문제 : 아래와 같이 출력해주세요.
// 문제 : 구구단 8단을 출력해주세요. 1000부터 1까지 곱해주세요.
// 조건 : 곱하는 순서를 거꾸로 해주세요.

class Main {
	public static void main(String[] args) {
		int dan = 8;
		int i = 1000;
		
		while (i >= 1) {
			System.out.println(dan + " * " + i + " = " + dan * i);
			i--;
		}

		// 출력
		/*
		 * 8 * 1000 = 8000 ... 8 * 1 = 8
		 */
	}
}
// 문제 : 아래와 같이 출력해주세요.
// 문제 : 구구단 8단을 출력해주세요. 1000부터 -500까지 곱해주세요.

class Main {
	public static void main(String[] args) {
		int dan = 8;

		int i = 1000;
		
		while (i >= -500) {
			System.out.println(dan + " * " + i + " = " + (dan * i));
			i--;
		}

		// 출력
		/*
		 * 8 * 1000 = 8000 ... 8 * 1 = 8
		 */
	}
}
// 1부터 5까지의 합을 더한 결과를 출력해주세요.

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

		int sum = 0;
		int i = 1;

		while (i <= 5) {
			sum += i;
			i++;
		}

		System.out.println(sum);

	}
}
//-100부터 25까지의 합을 더한 결과를 출력해주세요.

class Main {
	public static void main(String[] args) {
		
		int sum = 0;
		int i = -100;

		while (i <= 25) {
			sum += i;
			i++;
		}

		System.out.println(sum);

	}
}
// 문제 : 1부터 3까지 출력하는 작업을 10번 해주세요.
// 조건 : 이중 while문 사용

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

		int k = 1;

		while (k <= 10) {
			int i = 1;
			while (i <= 3) {
				System.out.println(i);
				i++;
			}
			k++;
		}

	}
}

break; continue;

  • 반복문을 control하는 키워드:

    break; 여기서 멈춰
    continue; 아래 코트 스킵하고 다시 올라가서 계속해

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

		int num = 0;
		while (num < 5) {
			if (num == 3) {
				break;
			}
			System.out.println("num : " + num);

			num++;
		}
	}

}

for문

//    ① 초기값; ② 종료조건; ③ 스텝
for ( int i = 1; i <= 3; i++) {
			System.out.println(i); // <- ④ 반복하고싶은거
		}

for문 문제풀이

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

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

		for (int i = 1; i <= 5; i++) {
			System.out.println(i);
		}
	}
}
//문제 : -100부터 25까지 출력해주세요.

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

		for (int i = -100; i <= 25; i++) {
			System.out.println(i);
		}
	}
}
//문제 : 구구단 8단을 출력해주세요. 1000부터 1까지 곱해주세요.

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

		int dan = 8;

		for (int i = 1000; i >= 1; i--) {
			System.out.println(dan + " * " + i + " = " + (dan * i));
		}
	}
}
//문제 : 구구단 8단을 출력해주세요. 1000부터 -500까지 곱해주세요.

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

		int dan = 8;

		for (int i = 1000; i >= -500; i--) {
			System.out.println(dan + " * " + i + " = " + (dan * 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);
	}
}
//문제 - 음수 100부터 25까지의 합을 출력해주세요.

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

		int sum = 0;

		for (int i = -100; i <= 25; i++) {
			sum += i;
		}

		System.out.println(sum);
	}
}
// 문제 : 1부터 3까지 출력하는 작업을 10번 해주세요.
// 조건 : 2중 for문 사용

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

		for (int k = 1; k <= 10; k++) {
			for (int i = 1; i <= 3; i++) {
				System.out.println(i);
			}
		}
	}
}

코드분석하기

// 1번 ) 왜 결과가 저렇게 나오는가?? 를 서술 (순차적으로, 우리말로)
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();
    }

  }
}

// 큰반복문을 사용해서 행의 갯수를 출력
// 작은반복문을 사용해서 *을 출력
// 순차적으로 i가 1일 때 
// row라는 변수에 5라는 값을 넣음
// "* "를 반복해서 row 수만큼 출력
// 그러다 i가 6이 됐을때 조건문과 일치하지 않아서 실행을 멈추고 끝.
//결국 1행씩 행의 줄 수 만큼  "* "의 갯수를 줄바꿈하면서 출력
// 2번 ) 왜 결과가 저렇게 나오는가?? 를 서술 (순차적으로, 우리말로)
class Main {
  public static void main(String[] args) {

    int n = 5; // This is the number of row for the of half of the diamond
    // 규칙이 생성 됨. 2n - 1 이 행의 갯수
    // Upper part of the diamond
    for (int i = 1; i <= n; i++) {
      // Printing spaces
      for (int j = i; j < n; j++) {
        System.out.print(" ");
      }  
      // Printing stars
      for (int j = 1; j <= (2 * i - 1); j++) {
        System.out.print("*");
      }
      System.out.println();
    }
             
    // Lower part of the diamond
    for (int i = n - 1; i >= 1; i--) {
      // Printing spaces
      for (int j = n ; j > i; j--) { 
        System.out.print(" ");
      }
      // Printing stars
      for (int j = 1; j <= (2 * i - 1); j++) { 
        System.out.print("*");
      }
      System.out.println();
    }

  }
}


// 첫번째 큰 반복문안에 n이라는 변수는 마름모꼴의 위에서부터의 행 갯수

// 그 안의 첫번째 작은반복문은
// ( j < n )  -> j가 5미만까지 몇칸을 띄어쓰기 할지 정함 / 이 조건이 참이 되는 수 만큼 띄어쓰기를 함

// 두번째 작은반복문을 실행
// (2 * i - 1)  <- "*"의 갯수를 출력  (홀수의 숫자만 나옴)

// 줄바꿈 

// 총 5줄의 행이 순차적으로 띄어쓰기칸을 1씩 감소시킴과 동시에 
// "*"은 씩 2씩 증가시키며 출력 / (2 * i - 1) < - "*"의 갯수를 출력
// 왜 2씩 증가하냐면 i에 2를 곱하고 1을 뺌 (홀수의 숫자만 나옴)


// 두번째 큰 반복문안에 i는 몇개의 행을 사용할지 알려줌
// 첫번째큰반복문의 행 갯수보다 한줄 적음 (i = n - 1)

// (j > i) <- 이 조건이 참이 되는 수 만큼 띄어쓰기를 함
// (2 * i - 1) < - "*"의 갯수를 출력 (홀수)


// 결론: 2n - 1의 높이를 가진 마름모꼴

// i값의 따라서 공백의수와 별의 수가 결정된다
// 다이아몬드에는 상단과 하단으로 나뉜다
// 전체 크기는 n = 5;
// i는 한 행을 그릴때마다 공백을 몇개? 별을 몇개? 

💡 변수의 값을 바꿔가며 세부사항들이 왜 쓰여져있는가 파악해보기

profile
hello world

0개의 댓글