반복문 조건문

InSeok·2022년 7월 6일
0

TIL

목록 보기
8/51

학습목표


  • for문과 while문의 공통점과 차이점
  • ifelse if , else, switch를 이해하고 활용

배운 내용


조건문

if (조건식) {
	//조건식이 참이라면 실행되는 블록입니다.
}

**if...else문**

if(조건식1) {
	//조건식1이 참이라면, 실행되는 블록입니다.
}
else if (조건식2) {
	//조건식1이 참이 아니면서 조건식2가 참일 때, 실행되는 블록입니다.
}
else {
	//조건식1과 2가 모두 참이 아닐 때, 실행되는 블록입니다.
	//else문은 생략 가능합니다.
}

**Switch문**

  • 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됩니다
  • 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행
  • break문을 작성하지 않으면 switch문을 탈출하지 않고 그 아래의 모든 case문을 실행
  switch (num) {
            case "1":
                System.out.println("1번");
                break; //다음 case를 실행하지 않고, switch문 탈출!
            case "2":
                System.out.println("2번");
                break;
            case "3":
                System.out.println("3번");
                break;
}
  • 개발 : 어떤 문제를 해결하기 위해 논리적인 해결 방법을 담은 코드를 작성하는 일
  • 알고리즘 : 어떤 문제를 해결하기 위한 일련의 절차나 방법을 정해진 형태로 표현한 것
  • 수도 코드(pseudo code) : 프로그램의 절차 하나하나를 우리가 실제로 사용하는 일반적인 언어(자연어)로 작성하는 방법

**반복문**

  • for문은 반복횟수를 알고 있을 때 주로 사용
  • while문은 조건에 따라 반복할 때 주로 사용

**for문**

for(int num = 0 (초기화); num < 10 (조건식); num++ (증감식) ) {
      sum += num;
    }
  • 초기화 : 사용할 변수의 초깃값 설정 (생략 가능)
  • 조건식 : 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행하지 않고 종료
  • 증감식 : 반복 횟수를 결정하는 규칙, 변수에 값을 더하거나 곱하는 등 수행 방식을 지정
  • 조건식을 충족하는 동안 초기화식부터 시작해서 증감식의 규칙을 따라서 실행

for(int i=0, j=100; i<=50 && j>=50; i++, j--) {
  실행문;
  실행문;
}

**향상된 for문 (Enhanced for 문)**

  • 배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나간다.
String[] menu = {"pizza", "burger", "potato"};
    for(String a : menu) {
      System.out.println(menu + "은 품절입니다.");
    }
/*
pizza는 품절입니다.
burger는 품절입니다.
potato는 품절입니다.

menu 배열에 있는 값을 a 변수에 저장;
*/

**while문**

(초기화);
while(조건식) {
  실행문; //조건식이 참인 동안 실행
  증감식;
}

**do-while문**

do {
  (1)실행문 //처음 한 번은 무조건 실행
} while((2)조건식);

**break문**

  • 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료
  • 바깥쪽 for문에 라벨을 붙이고 break 사용시 ,해당위치의 바깥쪽 for문 종료

**continue문**

  • 반복문을 종료하지 않고 다음 차례로 넘어가 계속 반복을 수행
 for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) { //나머지가 0일 경우는
                continue; //다음 반복으로 넘어간다.
            }
            System.out.println(i); //홀수만 출력

어려운 내용(에러)


문제

		1.
// 값 오류
		else if (num % 3 == 0 )
      return "SAUCE";

    else if( num % 5 == 0)
      return "KETCHUP";
		if( num % 3 == 0 && num % 5 == 0)
      return "SAUCE KETCHUP";

//해결 - 값의 범위가 좁은 조건 부터 순서대로 작성해야한다.
if( num % 3 == 0 && num % 5 == 0)
      return "SAUCE KETCHUP";	
	else if (num % 3 == 0 )
      return "SAUCE";

    else if( num % 5 == 0)
      return "KETCHUP";
2. 리턴값 중복시 케이스를 하나로 묶어 리턴

switch(month){
      case 1: 
      case 3: 
      case 5: 
      case 7: 
      case 8: 
      case 10: 
      case 12:
        return 31;
        
      
      case 4: 
      case 6: 
      case 9: 
      case 11:
        return 30;
        
      
      de
       }
3. 
double a = Math.pow(3, 2); // 3^2 , a = 9
4. 팩토리얼 

int result = 1;
		//TODO :
    for(int i=1 ;i <=num; i++){
      result *= i;
    }
    return result;
// 2이상의 자연수를 입력받아 2부터 해당 수까지의 소수(prime number) 들을 문자열 형태로 리턴

public String listPrimes(int num) {
    // TODO:
 String result = "2";

        for (int i = 3; i <= num; i++) {
            boolean isPrime = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0)
                    isPrime = false;
            }
            if (isPrime)
                result = result + "-" + i;
        }

    return result;

	}
// num1과 num2 두개의 수를 입력받아 두수 사이의 수중 2의배수의 개수 리턴

// count로 2의배수의 개수를 새준다.
int count = 0;
// num1 과 num2중 무엇이 큰지 모른다. 다른변수로 초기화하고 if로 누가 더 큰지 체크한후
// num1 num2보다 크다면 서로 바꿔준다.
		int start = num1;
		int end = num2;

		if (num1 > num2) {
			start = num2;
			end = num1;
		}

	
// i 초기값을 비교할 수로 넣어준다. 수를 1씩 증가시키며 2의배수가 나올때 count 1씩증가
		for (int i = start; i <= end; i++) {
			if (i % 2 == 0) {
				count += 1;
			}
		}

		return count;
	} 
}
profile
백엔드 개발자

0개의 댓글