본문 바로가기

programming/Gukbi

국비 교육 5일차 - 조건문

728x90
반응형

하루 교육시간은 8시간 

그 8시간 내내 조건문에 대해 배운다면?

당신은 조건문을 마스트 할 수 있게 됩니다...

 

조건문에는 3가지가 있다. 

1. 단일 조건문 if

2. 선택 조건문 if, else

3. 다중 조건문 if, else, if else

 

/*
 *  조건문
 *  1. 형식
 *  	1-1 단일 조건문
 *  		형식) if (조건문) 
 *  			{
 *  				조건문이 true면 수행하는 문장을 작성한다
 *  				(여러개의 문장 사용시에 {} 한다)
 *  			}
 *  			=> 조건문 false => 점프 (원하는 문장만 수행이 가능하게 만드는 기능)
 *  			=> enter를 누르면 : 총알을 발사해라
 *  			=> esc를 누르면 : 게임 종료
 *  			=> 독립 실행 (단일 if가 여러개 있는 경우에는 따로 수행하기 때문에 여러개 동시 수행할수 있다)
 *  	1-2 선택 조건문 : true일때 false일때 나눠서 수행할 수 있게 만든다
 *  		형식)
 *  			if(조건문)
 *  			{
 *  				조건문이 true일때 처리하는 문장
 *  			}
 *  			else
 *  			{
 *  				조건문이 false일때 처리하는 문장
 *  			}
 *  			=> ID중복이 된 경우, 중복되지 않은 경우 
 *  			=> 로그인이 된 상태, 로그인이 안된 상태
 *  			=> 값이 입력된 경우, 값이 입력이 안된 경우 
 *  	1-3 다중 조건문 : 조건이 여러개 중 한개의 조건만 수행이 가능하게 만드는 경우에 사용
 *  		=> 메뉴, 버튼 
 *  		형식) 	
 *  			if(조건문)
 *  			{
 *  				true : 문장을 실행하고 종료 ↗
 *  				false : 다음 조건문으로 이동
 *  					↘
 *  			}
 *  			else if (조건문)
 *  			{
 *  				true : 문장을 실행하고 종료 ↗
 *  				false : 다음 조건문으로 이동
 *  					↘
 *  			}
 *  			else if (조건문)
 *  			{
 *  				true : 문장을 실행하고 종료 ↗
 *  				false : 다음 조건문으로 이동
 *  					↘
 *  			}
 *  			else if (조건문)
 *  			{
 *  				true : 문장을 실행하고 종료 ↗
 *  				false : 다음 조건문으로 이동
 *  					↘
 *  			}
 *  			else
 *  			{
 *  				해당되는 조건이 없는 경우에 수행문장 (생략이 가능)
 *  			}
 *  		1-4 중첩 조건문 : 부메뉴 (주메뉴 => 부메뉴) ==> 이중 if문 
 *  		형식)
 *  			if(조건문) => 조건(true)
 *  			{
 *  				if(조건문) => 조건(true)
 *  				{
 *  					실행 문장
 *  				}
 *  			}
 *  			===> 단일 조건문 : if(조건문 && 조건문)
 *  
 *  
 *  2. 조건식 만드는 방법
 *  		if(조건식) => 부정연산자 (!), 비교연산자 (==, !=, <, >, <=, >=), 논리연산자 (%%, ||)
 *  3. 사용처
 *  	1-1. 오류 처리 (잘못 입력이 된 경우) => 비정상 종료가 없는 프로그램
 *  		 =======
 *  		 사용자 입력, 프로그램 실수
 *  				   
 *  	1-2. 점프 = 원하는 부분만 출력하고 싶은 경우에 주로 사용	
 *  
 */

 

우선 단일 조건문 부터

/*
 * 	가위 바위 보 게임
 *  
 *  사용자 입력 : 0(가위), 1(바위), 2(보)
 *  컴퓨터 입력 : 난수 (0,1,2)
 *  ==============================
 *  결과 : 중첩 if 
 *  if()
 *  {
 *  	if()
 *  	{
 *  	}
 *  }
 *  
 *  	컴퓨터 ==> 알고리즘 (3)
 *  	 가위
 *  		사용자
 *  		가위
 *  		바위
 *  		보
 *  	 바위
 *  		사용자
 *  		가위
 *  		바위
 *  		보 
 *  	  보
 *  		사용자
 *  		가위
 *  		바위
 *  		보 
 */
import java.util.Scanner; // 입력을 받는 경우에 사용하는 클래스
public class 단일조건문_2 {

	public static void main(String[] args) {
		// 사용자가 입력한 값을 받는다 (0,1,2)
		int user; // 사용자의 입력값을 저장하는 곤간
		// 사용자가 입력을 할 수 있게 처리
		Scanner scan=new Scanner(System.in);
		System.out.println("가위 (0), 바위 (1), 보(2) 입력 : ");
		user=scan.nextInt();
		//확인 => 사용자가 뭘 냈는지
		if(user==0) // 사용자가 입력한 값이 0이면
			System.out.println("사용자: 가위");
		if(user==1)
			System.out.println("사용자: 바위");
		if(user==2)
			System.out.println("사용자: 보");
		
		//// 컴퓨터 (난수)
		int com = (int)(Math.random()*3); // 0, 1, 2 중 하나 나옴
		/*
		 * 	Math.random() => 0.0~0.99
		 * 	Math.random()*3 ==> 0.0~2.99..
		 * 	(int)=> 0.0~2.99... => 0~2
		 * 
		 */
		if(com==0)
			System.out.println("컴퓨터: 가위");
		if(com==1)
			System.out.println("컴퓨터: 바위");
		if(com==2)
			System.out.println("컴퓨터: 보");
		
		
		/// 결과값을 출력
		
		
		System.out.println("*******결과*******");
		/*
		 * 	컴퓨터 (가위 0)       com-user
		 * 		사용자 (가위 0)   0 비김
		 * 			 (바위 1)  -1 사용자
		 * 		     (보 2)	  -2 컴퓨터 		
		 *  컴퓨터 (바위 1)
		 *  	사용자 (가위 0)   1 컴퓨터
		 * 			 (바위 1)	   0 비겼다 	
		 * 		     (보 2)	  -1 사용자	
		 * 	컴퓨터 (보 2)
		 *  	사용자 (가위 0)   2 사용자
		 * 			 (바위 1)	   1 컴퓨터
		 * 		     (보 2)    0 비겼다
		 * 
		 * 		사용자가 Win ==> -1, 2
		 * 		컴퓨터가 Win ==> -2, 1
		 */
		/*if(com==0 && user==0)
			System.out.println("비겼습니다");
		if(com==0 && user==2)
			System.out.println("사용자 Win!!");
		if(com==0 && user==1)
			System.out.println("컴퓨터 Win!!");
		
		if(com==1 && user==0)
			System.out.println("컴퓨터 Win!!");
		if(com==1 && user==2)
			System.out.println("사용자 Win!!");
		if(com==1 && user==1)
			System.out.println("비겼습니다");
		
		if(com==2 && user==0)
			System.out.println("사용자 Win!!");
		if(com==2 && user==2)
			System.out.println("비겼습니다");
		if(com==2 && user==1)
			System.out.println("컴퓨터 Win!!");*/
		
		
		
		int res = com-user;
		if (res==1 || res==2) 
					System.out.println("사용자 Win!!");
				
		if (res==-2 || res==1) 
			System.out.println("컴퓨터 Win!!");
		
		if (res==0) 
			System.out.println("비겼다!!");
		
		
		
	}

}

if (조건문) { 처리 문장} 이라는 간단한 문법이다. 조건문 안의 내용은 꼭 true/false로 값이 나와야 한다. 

조건문 하나로도 간단한 가위바위보 게임을 짤 수 있었다. 

 

(이걸 하면서 cp 찾기 게임 영감을 받아서 만드는중)

 

2. 선택 조건문

 

/*
 * 	형식만 잘 알고 있으면됨
 * 		if(조건문) => 조건문(부정연산자, 비교연산자, 논리연산자)
 * 		{
 * 			조건문이 true일때 처리하는 문장
 * 			(여러 문장을 수행할 수 있다)
 * 		}
 * 		else
 * 		{
 * 			조건문이 false 일때 처리하는 문장
 * 			(여러문장을 수행할 수 있다)
 * 		}
 * 
 *   오류) 
 *   	if(조건문)
 *   		실행문장 1
 *   		실행문장 2
 *   	else  ======> if 밑에서 처리 (else는 단독 실행문장을 만들 수 없다. 
 *   		실행문장 3
 */
// 3개의 정수를 입력 => 평균 ==> 60이상이 Pass 아니면 Non-Pass
import java.util.Scanner;
public class 선택조건문_1 {

	public static void main(String[] args) {
		
			// 입력받은 데이터를 저장할 공간이 필요 => 정수 4개
		int kor, eng, math, avg;
		Scanner scan=new Scanner(System.in);
		
		System.out.print("국어 영어 수학 점수 입력 : ");
		kor=scan.nextInt();
		eng=scan.nextInt();
		math=scan.nextInt();
		
		/*System.out.println("국어 점수 입력 : ");
		kor=scan.nextInt();
		
		System.out.println("영어 점수 입력 : ");
		eng=scan.nextInt();
		
		System.out.println("수학 점수 입력 : ");
		math=scan.nextInt();*/
		
		avg=(kor+eng+math)/3;
		
		if(avg>=60) {
			System.out.println("Pass");
		}
		else {
			System.out.println("쯧 탈락");
		}
		
	}

}

if, else로 이루어진 구조이다. if에서는 if만 통과하면 실행문장에 해당하는 모든 문장들이 실행되고 끝난 반면

else 가 있기 때문에 예외 처리가 가능해졌다. 

 

 

3. 다중조건문

/*
 * 	다중조건문
 * 		=> 여러가지 조건 중에 한개의 조건을 수행할 수 있게 만드는 기능
 * 		형식) 
 * 			if(조건문)
 * 			{
 * 				조건문 true면 실행하는 문장 => 문장을 수행하면 종료 ==>
 * 			}
 * 			else if (조건문)
 * 			{
 * 				조건문 true면 실행하는 문장 => 문장을 수행하면 종료 ==>
 * 			}
 * 			else if (조건문)
 * 			{
 * 				조건문 true면 실행하는 문장 => 문장을 수행하면 종료 ==>
 * 			}
 * 			--
 * 			--
 * 			--
 * 			else
 * 			{
 * 				조건에 해당되는 조건문이 없는 경우에 수행되는 문장 (default) => 생략이 가능
 * 			}
 * 
 * 			학점계산
 * 				90이상 => A
 * 				80이상 => B
 * 				70이상 => C
 * 				60이상 => D
 * 					=========== 해당 조건이 없으면 => F
 */
// 3개의 점수를 받아서 평균, 총점, 학점

import java.util.Scanner; // 자바에서 지원하는 클래스를 가지고 올 경우에 사용 (import)
public class 다중조건문 {

	public static void main(String[] args) {
		// 저장하는 메모리 공간을 설정
		int kor, eng, math, total;
		double avg;
		char score;
		
		Scanner scan=new Scanner(System.in);
		System.out.print("국어, 영어, 수학 점수 입력: ");
		kor=scan.nextInt();
		eng=scan.nextInt();
		math=scan.nextInt();
		
		total=kor+eng+math;
		avg=total/3.0;
		
		
		System.out.println("국어 점수:"+kor);
		System.out.println("영어 점수:"+eng);
		System.out.println("수학 점수:"+math);
		System.out.println("총점:"+total);
		System.out.printf("평균:%.2f\n",avg);
		
		System.out.print("학점:");
		if(avg>=90) {
			System.out.println('A');
		} else if(avg>=80) {
			System.out.println('B');
		} else if(avg>=70) {
			System.out.println('C');
		} else if(avg>=60) {
			System.out.println('D');
		} else {
			System.out.println('F');
		}
	}

}

else if와 if 문의 가장 큰 차이점은 맨 처음 if문 true/false를 판단하고, true이면 문장을 수행하고 종료한다는것에 있다. 

if 문만 있었을때는 처음 if를 통과한다고 하더라도 다음 if에도 데이터가 해당이 되면 그 문장이 돌아간 뒤 종료가 되었는데 else if는 여러가지 조건 중에서 하나만 통과할 수 있다. 

 

만약 다 통과하지 못했다면 else로 빠져서 default값을 출력하고 종료한다. 

 

 

3-1. 중첩 조건문

 

/*
 * 	중첩 => if 안에 if가 첨부 되는 것 (이중 if)
 * 	형식)
 * 		if(조건문) 조건문 true
 * 		{
 * 			if(조건문) 조건문 true
 * 			{
 * 			}
 * 		}
 * 
 * 		==> if(조건문 &&(||) 조건문)
 */
// 3개정수의 정수를 받아서 평균, 총점을 구하고 학점을 구함 (>=98 A+ 94<=A-...)
import java.util.Scanner;
public class 중첩조건문 {

	public static void main(String[] args) {
		
		// 저장하는 데이터 => 메모리 (변수)
		int kor, eng, math, total, avg;
		char score = ' ', option=' '; // +, -, 0 A+, A-, A0
		
		// 초기값
		Scanner scan=new Scanner(System.in);
		// 국어, 영어, 수학 
		System.out.print("국어점수 영어점수 수학점수 입력(90 90 90): ");
		kor=scan.nextInt();
		eng=scan.nextInt();
		math=scan.nextInt();
		
		// 총점 
		total=kor+eng+math;
		// 평균
		avg=total/3;
		// 학점
		if (avg>=90) {
			score='A';
			if(avg>=98) {
				option='+';
			}
			else if (avg<94) {
				option='-';
			}
			else {
				option='0';
			}
		}
		else if (avg>=80){
			score='B';
			if(avg>=88) {
				option='+';
			}
			else if (avg<84) {
				option='-';
			}
			else {
				option='0';
			}
		}
		else if (avg>=70) {
			score='C';
			if(avg>=78) {
				option='+';
			}
			else if (avg<74) {
				option='-';
			}
			else {
				option='0';
			}
		}
		else if (avg>-60) {
			score='D';
			if(avg>=68) {
				option='+';
			}
			else if (avg<64) {
				option='-';
			}
			else {
				option='0';
			}
		}
		else {
			score='F';
		}
		// 출력
		System.out.println("국어:"+kor);
		System.out.println("영어:"+eng);
		System.out.println("수학:"+math);
		System.out.println("총점:"+total);
		System.out.println("평균:"+avg);
		System.out.printf("학점:%c%c\n", score,option);
	}

}

중첩 조건문은 if문 안에 if가 또 들어가는 형태이다. 

중첩되어 쓸 수 있어서, 세부 조건들을 걸어줄때 사용하는 문법이다. 

 

4. 선택문

/*
 * 	선택문 : 값 한 개가 선택이 된 경우에 처리 (다중조건문) => 게임 제작, 윈도우 제작
 * 	1-10
 * 	11-20
 * 	21-30	
 * 	31-40
 * 	41-50 ==> case 1: 
 * 	형식) switch(정수, 문자, 문자열)
 * 			정수 => 3
 * 		 switch(정수)
 * 		{
 * 			case 1: 
 * 				실행문장 1;
 * 				문장 수행후에 종료 : break;
 * 			case 2: 
 * 				실행문장 2;
 * 				문장 수행후에 종료 : break;
 * 			case 3: 
 * 				실행문장 3;
 * 				문장 수행후에 종료 : break;
 * 			default: ===========> 생략가능
 * 				실행문장 4;
 * 		}
 * 
 * 		switch(문자)
 * 		{	문자 = 'A':
 * 			case 'A': 
 * 				실행문장 1;
 * 				문장 수행후에 종료 : break;
 * 			case 'B': 
 * 				실행문장 2;
 * 				문장 수행후에 종료 : break;
 * 			case 'C': 
 * 				실행문장 3;
 * 				문장 수행후에 종료 : break;
 * 			default: ===========> 생략가능
 * 				실행문장 4;
 * 		}
 * 
 * 		switch(문자열)
 * 		{	문자열 = 'A':
 * 			case '로그인': 
 * 				실행문장 1;
 * 				문장 수행후에 종료 : break;
 * 			case '회원가입': 
 * 				실행문장 2;
 * 				문장 수행후에 종료 : break;
 * 			case '영화목록': 
 * 				실행문장 3;
 * 				문장 수행후에 종료 : break;
 * 			case '상세보기': 
 * 				실행문장 3;
 * 				문장 수행후에 종료 : break;
 * 			default: ===========> 생략가능
 * 				실행문장 4;
 * 		}
 * 		
 * 
 * 		
 */
public class 선택문 {

	public static void main(String[] args) {
		int no=(int)(Math.random()*5)+1; //1~5
		//      ==== ================ ==
		//   	2			1 		  3
		// 			 (0.0~4.999999999)
		
		switch(no)
		{
		case 1: //if(i==1)
			System.out.println("1이 선택되었습니다");
			break; // 위에 문장하고 switch를 종료
		case 2:
			System.out.println("2가 선택되었습니다");
			break;
		case 3:
			System.out.println("3이 선택되었습니다");
			break;
		case 4:
			System.out.println("4가 선택되었습니다");
			break;
		case 5:
			System.out.println("5가 선택되었습니다");
			break;
		}
		/*
		 * 	10,9 => A, 8 => B, 7=>C, 6=>D default=>F
		 * 	switch(score)
		 */
	}

}

switch를 사용한 선택문. 각각의 케이스들의 형식을 정해주고 사용이 가능하다. 

break;를 써줘야 수행 문장을 수행하고 빠져 나갈 수 있다. 

 

 

728x90
반응형