제어문 (1)

Brogod97·2022년 12월 8일
0

KH TIL

목록 보기
9/37
post-thumbnail

0. 제어문

위에서 아래로 수행되는 프로그램의 흐름을 바꾸는 역할을 함

  • 조건문
  • 반복문
  • 분기문

1. 조건문

프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로 조건에 따라 다른 문장이 수행되도록 함

조건문의 종류

  1. if

    if(조건식1) {
    		수행될 코드; // 조건식 1이 true일 때
    } else if(조건식2) {
    		수행될 코드; // 조건식 2이 true일 때
    } else if(조건식3) {
    		수행될 코드; // 조건식 3이 true일 때
    } else {
    		수행될 코드; // 조건식 1,2,3이 모두 false일 때
    }
  2. switch

    switchswitch(조건식) {
    	case 조건식 결과1:
    			수행될 코드;
    			break;
    	case 조건식 결과2 :
    			수행될 코드;
    			break;
    	default:
    			수행될 코드;
    }

    switch문을 리모콘에 비유 // 입력 값에 따라 지정된 채널로 이동


if문

  1. 기본 형태

    if(조건식) {
    	수행될 코드
    }

    조건식의 결과 값이 true면 if문 내부 코드가 수행됨.

    false면 실행하지 않음

  2. if문 예시

    if(num > 0) {
    	System.out.println("양수입니다.");
    }

if ~ else

if(조건식) {
	true일 때 수행되는 코드
} else {
	false일 때 수행되는 코드
}

조건식의 결과 값이 trueif 내의 코드가,

falseelse 내의 코드가 수행됨

if~else문 예시

if(num % 2 == 0) {
	System.out.println("짝수");
} else {
	System.out.println("홀수");
}

if문 & if-else문 실습 1

    public void example1() {
    		// if문
    		// - 조건식이 true일 때만 내부 코드 수행
    		/*
    		 * [작성법]
    		 * if(조건식){
    		 * 		조건식이 true일 때 수행될 코드
    		 * }
    		 * 
    		 * if - else문
    		 * - 조건식 결과가 true면 if문,
    		 * 	false면 else 구문이 수행됨 
    		 * 
    		 * [작성법]
    		 * if(조건식) {
    		 * 		조건식이 true일 때 수행될 코드
    		 * } else{
    		 * 		조건식이 false일 때 수행될 코드
    		 * }
    		 * 
    		 * */
    		
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.print("정수 입력 : ");
    		int input = sc.nextInt();
    		
    		// 입력된 정수가 양수인지 검사
    		if(input > 0) {
    			System.out.println("양수 입니다.");
    		} else {
    			System.out.println("양수가 아닙니다.");
    		}
    		
    //		if(input <= 0) {
    //			System.out.println("양수가 아닙니다.");
    //		}
    	}

if문 & if-else문 실습 2

    public void example2() {
    		// 홀짝 검사
    		// 입력받은 값이 홀인지 짝인지 출력
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.print("정수를 입력해주세요: ");
    		int input = sc.nextInt();
    		
    		if(input % 2 == 0) {
    				System.out.println("짝수");
    		} else {
    				System.out.println("홀수");
    		}
    	}
    }

if ~ else if ~ else

if(조건식1) {
	조건식1 true일 때 수행
} else if(조건식2){
	조건식2 true일 때 수행
} else {
	모두 false 일 때 수행
}

조건식1의 결과 값이 trueif문 내 코드 수행

조건식2의 결과 값이 trueelse if 내 코드 수행

모두 falseelse 내 코드 수행

iftrue, false와 상관 없이 조건절 실행,

if ~ else if ~ else는 조건문이 true이후 조건은 실행하지 않음


if~else if~else문 예시

if(month == 1 || month == 2 || month == 12) {
	season = "겨울";
} else if(month >= 3 && month <= 5) {
	season = "봄";
} else if(month >= 6 && month <= 8) {
	season = "여름";
} else if(month >= 9 && month <= 11) {
	season = "가을";
} else {
	season = "해당하는 계절이 없습니다.";
}

if ~ else if ~ else문 실습

	public void example3() {
		// 달(month)를 입력받아 해당 달에 맞는 계절 출력
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("달 입력: ");
		int month = sc.nextInt();
		
		String season;
		
		// 봄: 3,4,5
		// 여름: 6,7,8
		// 가을: 9,10,11
		// 겨울: 12,1,2
		
		if(month >= 3 && month <= 5) {
			season = "봄";
		} else if(month >= 6 && month <= 8) {
			season = "여름";
		} else if(month >= 9 && month <= 11) {
			season = "가을";
		} else if(month == 12 || month == 1 || month == 2) {
			season = "겨울";
		} else {
			season = "해당하는 계절 없음";
		}
		
		System.out.println(season);
	}	

중첩 if

if (조건식1) {
   if (조건식2) {
      if (조건식3) {
         수행될 코드;
      } else if (조건식4) {
         수행될 코드;
      } else {
         수행될 코드;
      }
   } else {
      수행될 코드;
   }
} else if (조건식5) {
   수행될 코드;
} else {
   수행될 코드;
}

중첩 if문 예시

if (month == 1 || month == 2 || month == 12) {
	season = "겨울";
	if(temperature <= -15) {
		season += " 한파 경보";
	} else if(temperature <= -12) {
		season += " 한파 주의보";
	}
} else if (month >= 3 && month <= 5) {
	season = "봄";
} else if (month >= 6 && month <= 8) {
	season = "여름";
	if(temperature >= 35) {
		season += " 폭염 경보";
	} else if(temperature >= 33) {
		season += " 폭염 주의보";
	}
} else if (month >= 9 && month <= 11) {
	season = "가을";
} else {
	season = "해당하는 계절이 없습니다.";
}

switch 문을 사용하면 좀 더 간결하게 작성할 수 있음


중첩 if문 실습

public void example3() {
		// 달(month)를 입력받아 해당 달에 맞는 계절 출력
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("달 입력: ");
		int month = sc.nextInt();
		
		// 사용자에게 온도를 받음
		System.out.print("온도 입력: ");
		int temperature = sc.nextInt();
		
		String season;
		
		// 봄: 3,4,5
		// 여름: 6,7,8
		// 가을: 9,10,11
		// 겨울: 12,1,2
		
		if(month >= 3 && month <= 5) {
			season = "봄";
		} else if(month >= 6 && month <= 8) {
			season = "여름";
			
			if(temperature >= 35) {
				// season = season + "";
				// season = "여름" + "폭염 경보"
				season += " (폭염 경보)";
			}else if(temperature >= 33) {
				season += " (폭염 주의보)";
			}
			
		} else if(month >= 9 && month <= 11) {
			season = "가을";
		} else if(month == 12 || month == 1 || month == 2) {
			season = "겨울";
		} else {
			season = "해당하는 계절 없음";
		}
		
		System.out.println(season);
		
	}
}

조건문 실습 문제 풀이

  1. 실습 문제 1

    public void example4() {
    		// 나이를 입력받아
    		// 13세 이하면 "어린이 입니다."
    		// 13세 초과 19세 이하면 : "청소년 입니다."
    		// 19세 초과 시 : "성인 입니다." 출력
    
    		Scanner sc = new Scanner(System.in);
    
    		System.out.print("나이를 입력해 주세요 : ");
    		int age = sc.nextInt();
            
            String result;
    
    		if(age <= 13) {
    			result = "어린이 입니다.";
    		} else if( age > 13 && age <= 19) {
    			result = "청소년 입니다.";
    		} else if(age > 19) {
    			result = "성인 입니다.";
    		}
    		
            System.out.println("result");
    	}
  2. 실습 문제 2

    public void example5() {
    		// 점수(100점 만점)을 입력 받아
    		// 90점 이상: A
    		// 80점 이상 90점 미만: B
    		// 70점 이상 80점 미만: C
    		// 60점 이상 70점 미만: D
    		// 60점 미만 : F
    		// 0점 미만, 100초과 : "잘못 입력하셨습니다"
    		
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.print("점수를 입력해주세요: ");
    		int score = sc.nextInt();
            
            String result;
    		
    		if(score >= 90) {
    			result = "A";
    		}else if(score >= 80 && score < 90) {
    			result = "B";
    		}else if(score >= 70 && score < 80) {
    			result = "C";
    		}else if(score >= 60 && score < 70) {
    			result = "D";
    		}else if(score >= 0 && score < 60) {
    			result = "F";
    		}else if(score < 0 || score > 100) {
    			result = "잘못 입력하셨습니다";
    		}
            
            System.out.println(result);
    	}
  3. 실습 문제 3

    public void example6() {
    		// 놀이기구 탑승 제한 검사 프로그램
    		// 조건 - 나이 : 12세 이상
    		//     -  키 : 140.0cm 이상
    		
    		// 나이를 0~100세 사이로 입력하지 않은 경우 : "나이를 잘못 입력 하셨습니다."
    		// 키를 0~250.0cm 사이로 입력하지 않은 경우 : "키를 잘못 입력 하셨습니다."
    		// -> 입력이 되자 마자 검사를 진행하여 잘못된 경우 프로그램 종료
    		
    		// 나이 O , 키 X : "나이는 적절하나, 키가 적절하지 않음";
    		// 나이 X , 키 O : "키는 적절하나, 나이는 적절하지 않음";
    		// 나이 X , 키 X : "나이와 키 모두 적절하지 않음";
    		// 나이 O , 키 O : "탑승 가능";
    		
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.print("나이를 입력해주세요: ");
    		int age = sc.nextInt();
    		
    		System.out.print("키를 입력해주세요: ");
    		double height = sc.nextDouble();
            
            String result;
    		
    		if(age < 0 || age > 100) {
    			result = "나이를 잘못 입력 하셨습니다.";
    		}else if(height < 0 || height > 250.0) {
    			result = "키를 잘못 입력 하셨습니다.";
    		}else {
    			
    			if(age >= 12 && height < 140.0) {
    				result = "나이는 적절하나, 키가 적절하지 않음";
    			}else if(age < 12 && height >= 140.0) {
    				result = "키는 적절하나, 나이는 적절하지 않음";
    			}else if(age < 12 && height < 140.0) {
    				result = "나이와 키 모두 적절하지 않음";
    			}else if(age >= 12 && height >= 140.0) {
    				result = "탑승 가능";
    			}
    		}
            
            System.out.println(result);
    	}

switch문

조건식 하나로 많은 경우의 수 처리할 때 사용하며

이때 조건식의 결과는 정수 또는 문자, 문자열

조건식의 결과 값과 일치하는 case문으로 이동

default문은 일치하는 case문이 없을 때 수행(= else )


switch문 예시

switch(num % 5) {
case 1:
	team = "1조"; break;
case 2:
	team = "2조"; break;
case 3:
	team = "3조"; break;
case 4:
	team = "4조"; break;
default:
	team = "다시";
}

2. 반복문

프로그램 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로 특정 문장들을 반복해서 수행하도록 함

반복문의 종류

  1. for

    for(초기식; 조건식; 증감식) {
    	수행될 코드;
    }
  2. while

    while(조건식) {
    	수행될 코드;
    	[증감식 or 분기문];
    }

☕ Today I Ate

바닐라 라떼 (커피사피엔스 역삼푸르지오점)

생각보다 다른 수강생분들이 점심을 패스하는 것 같아서 오늘은 라떼 한 잔으로 해결함
좀 허기지긴 하는데, 오후 강의 시간 2시간만 더 듣고나면 집에 가니까 버틸만 하긴 함

0개의 댓글