제어문 (조건문, 반복문)

성혜·2024년 1월 17일
0

Java

목록 보기
5/25
post-thumbnail

제어문

수많은 명령어들의 집합
명령어들이 실행되는 순서 > 위 -> 아래

제어의 흐름을 통제하는 도구

조건 제어, 반복 제어, 분기 제어


조건문

개발자가 조건을 제시한 후 결과에 따라 흐름을 제어

조건식 > boolean 값을 가지는 표현식

1. if문

  • 형식
 		 if(조건식) {
		  	문장;
		  	
		  }
		  
		  --------------------------------------------------------------
		  
		  if(조건식) {
		  	문장;
		  	
		  } else {
		  	문장;
		  }
		  
		  
		  ------------------------------------------------------------------
		  다중 조건문 => else if는 원하는 만큼 
		  
		  if(조건식) {
		  	문장;
		  	
		  } else if (조건식){
		  	문장;
		  }
		  
		  ---------------------------------------------------------------------
		  if(조건식) {
		  	문장;
		  	
		  } 
		  [else if (조건식){
		  	문장;
		  }] x N
		  [else {
		  	문장;
		  }]
		  

  • if문
		int num = 0;
		if (num > 0) { //참일 때 실행
			System.out.println("num은 양수입니다."); //false 일때는 실행이 안됨
		}
		
		
		if (num > 0) {//참일 때 실행
			System.out.println("num은 양수입니다."); //false 일때는 실행이 안됨
		} else { //거짓일 떄 실행
			System.out.println("nume은 음수입니다.");
		}
		
		if (num > 0) {//참일 때 실행
			System.out.println("num은 양수입니다."); //false 일때는 실행이 안됨
		} else if (num < 0 ) { //거짓일 떄 실행
			System.out.println("nume은 음수입니다.");
		} else  {
			 System.out.println("num은 0입니다.");
		}
		
		System.out.println("종료");

  • 다중 if문
 		private static void m5() throws IOException {
		//성적(0~100) 입력 > 합격/불합격 
		//+ 유효성 검사
		
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.print("성적: ");
		
		int score = Integer.parseInt(reader.readLine());
		
		//1. 합격일때
		//2. 불합격일때
		
		//로직이 다르기 떄문에 1,2번과 3번은 분리 해줘야 함
		//3. 잘못 입력(유효성)
		
		if(score >= 60 && score <=100) {
			System.out.println("합격");
		}else if (score >=0 && score < 60) {
			System.out.println("불합격");
		}else {
			System.out.println("점수는 0~100 이내로 입력하세요");
		}
		
		
		//조건을 의도에 맞게 잘 분리 해줘야 함
		// 중첩 if문 
		if(score >= 0 && score <= 100) {
			
			if (score >= 60) {
				System.out.println("합격");
			}else {
				System.out.println("불합격");
			}
			
		} else {
			System.out.println("점수는 0~100 이내로 입력하세요");
		}
		
	}

2. switch문

  • 형식
//조건 : 값(데이터) > 정수, 문자열, 열거형

		 switch (조건) {
		 	case 값 :
		 		구현부;
		 		break;
		 	[case 값 :
		 		구현부;
		 		break;] * N
		 	[default: 
		 		구현부;
		 		break;]
  • if문과 switch문
		//요구사항] 숫자를 1개 입력받아 한글로 출력하시오.
		// 1 > "하나"
		// 2 > "둘"
		
		int num = 3;
		
		if (num == 1) {
			System.out.println("하나");
		}else if (num ==2) {
			System.out.println("둘");
		}else {
			System.out.println("셋");
		}
		
		
		switch (num) {
		case 1: {
			System.out.println("하나");
			break;
		}
		case 2: {
			System.out.println("둘");
			break;
		}
		case 3: {
			System.out.println("셋");
			break;
		}
		
		}


반복문

특정 코드를 개발자가 원하는 횟수만큼 반복한다.
생산성 향상 + 유지보수성 향상

  • 형식
			for (초기식; 조건식; 증감식) {
				구현부;
			}
  • for문 (break, continue)
		//break > 현재 자신이 속한 제어문을 		탈출해라!!
		//      > if문 제외
		//continue > 이번 반복을 중단하고 다시 시작으로 이동해라!!
		
		//break > 루프 완전 중단
		//continue > 이번만 건너뛰기
		
		for (int i=1; i<=10; i++) {
			if (i == 5) {
				break;
			}
			System.out.println(i);
		}
		System.out.println();
        
        //결과 : 1234
		
		
		for (int i=1; i<=10; i++) {
			if (i == 5) {
				continue;
			}
			System.out.println(i);
		}
		System.out.println();
        
        //결과: 1234678910
		

  • 무한 루프

회전을 몇번 할지 모를 때 무한루프 사용

//		무한 루프 생성하기
//		for (int i=0; true; i++) {
//			System.out.println("실행문");
//		}
		
//		for (int i=0; ; i++) {
//			System.out.println("실행문");
//		}
		
//		for (;;) {
//			System.out.println("실행문");
//		}

  • 무한루프 예시
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		
		int sum = 0;
		
		for (;;) {
			System.out.print("숫자: ");
			int num = Integer.parseInt(reader.readLine());
			
			if (num == 0) {
				break;
			}
			
			sum += num;
		}
		
		System.out.println(sum);
		

  • 중첩 for문
//별찍기(5x5)
		for (int i=0; i<5; i++) {
			for (int j=0; j<5; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println();
		
		for (int i=0; i<5; i++) {
			for (int j=i; j<5; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println();
		
		for (int i=0; i<5; i++) {
			for (int j=0; j<=i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println();
        
 //결과
*****
*****
*****
*****
*****

*****
****
***
**
*

*
**
***
****
*****

        

2. while문

  • while문 & do while문 형식
			while (조건식) {
				구현부;
			}
			
			
			do {
				구현부;
			} while (조건식);
            
		//1~10 출력
		int n = 1;
		
		while (n <= 10) {
			System.out.println(n);
			n++;
		}
		
		System.out.println();
		
		int m = 11;
		
		do {
			System.out.println(m);
			m++;
		} while (m <= 10); //do가 먼저 실행되기 때문에 while문 실행 안됨
        
        
//결과
1
2
3
4
5
6
7
8
9
10

11
        
profile
하루를 정리하고 기록합니다.

0개의 댓글