day 03 조건문

JTH·2023년 1월 25일
0

gb_jth

목록 보기
5/56
post-thumbnail

1. 조건문

1-1. 조건문 이란?

  • 무조건 실행되는 것이 아니라, 특정 조건을 충족할 경우에만 실행되는 구문

1-2. 조건문의 종류

  • if 문 : 주어진 '조건'이 참(ture) 일 경우에만 실행
  • if ~ else 문 : 주어진 '조건'이 참(ture)일 경우 if문이 실행,
    그렇지 않을 경우 else 문이 실행된다.
  • if ~ else if ~ else 문 : 조건을 여러개로 세분화하여 사용
  • switch 문 : 하나의 '값'에 대하여 여러가지 경우의 수로 나누어 분기 처리한다.

1-3. if 문

  • if문은 주어진 조건이 참일 경우에 지정된 구문이 실행된다.
	if( 조건 ){
		.. 실행할 구문 ..
	}

  - if문의 조건식
	-> 비교식 (비교 연산자 사용)
	-> 논리식 (논리 연산자 사용)
	-> boolean 값
package codition;
public class Main02 {
	public static void main(String[] args) {
		int point = 75;
		if( point > 70 && point <=80 ) {
			System.out.println("C학점 입니다.");
		}
		if( point <= 70 || point >80 ) {
			System.out.println("범위를 벗어났습니다.");
		}	
	}
}

1-4. if ~ else

  • 그렇지 않으면?
  • if 문이 조건이 참일 경우에 실행되는 구문이라면, if문의 조건과 반대되는 경우에 실행되는 구문이 else문이다.
  • else 문은 독립적으로 실행될 수 없고, 반드시 if 문의 뒤에 위치해야 한다.
	if( 조건 ) {
		...실행할 구문...
	} else {
		...반대 경우에 실행할 구문...
	}
package codition;
public class Main03 {
	public static void main(String[] args) {
		boolean is_korean = false;
		if (is_korean == true) {
			System.out.println("한국 사람 입니다.");
		} else {
			System.out.println("한국 사람이 아닙니다.");
		}
		// 값 자체가 참이므로 성립된다.
		if (is_korean) {
			System.out.println("한국 사람 입니다!!");
		}
		// ! 는 값을 부정한다. 참을 부정하므로 거짓이다.
		if (!is_korean) {
			System.out.println("한국 사람이 아닙니다.!!");
		}
	}
}

1-5. if ~ else if ~ else

  • if문과 else 문 사이에 else if문으로 두 번째 조건, 세 번째 조건을 나열할 수 있다.
  • else if 문은 필요한 만큼 나열할 수 있으며, 필요치 않을 경우 else문은 생략 가능하다.
	if( 조건 ){
		... 실행할 구문 ...
	} else if( 조건 ) {
		... 실행할 구문...
	} else if( 조건 ) {
		... 실행할 구문...
	} else if( 조건 ) {
		... 실행할 구문...
	} else if( 조건 ) {
		... 실행할 구문...
	} else {
		... 실행할 구문 ...
	}
package codition;
public class Main04 {
	public static void main(String[] args) {
		int point = 87;
		/*
		 * 만약 point 가 90 초과, 이고 100 이하 이면 A 출력
		 * 만약 point 가 80 초과, 이고 90 이하 이면 B 출력
		 * 만약 point 가 70 초과, 이고 80 이하 이면 C 출력
		 * 나머지 "F" 출력
		 * 		 
		 */
		if(point > 90 && point <= 100) {
			System.out.println("A");
		}
		else if(point > 80 && point <= 90) {
			System.out.println("B");
		}
		else if(point > 70 && point <= 80) {
			System.out.println("C");
		}
		else {
			System.out.println("F");
		}	
	}
}

1-6. switch

  • 변수 값에 대한 경우의 수를 처리하는 switch 문
  • switch문은 하나의 변수(기준값) 에 대한 여러가지 case를 정의하는 구문이다.
  • if 문은 조건에 식(비교식,부등식)이 사용될 수 있지만 switch문은 분기 조건이 반드시 일치하는 "값"에 대해서만 처리 가능하다.
	switch( 기준값 ) {
		case 값1:
			실행될구문
		break;
		case 값2:
			실행될구문
		break;
		case 값3:
			실행될구문
		break;
		default:
			모든 경우에 충족되지 않을 경우 실행
		break;
	}
package codition;
public class Main05 {
	public static void main(String[] args) {
		char grade = 'D';
		switch(grade) {
			case 'A':
				System.out.println("91~100점 사이 입니다.");
				break;
			case 'B':
				System.out.println("81~90점 사이 입니다.");
				break;				
			case 'C':
				System.out.println("71~80점 사이 입니다.");
				break;
			default:
				System.out.println("70점 이하 입니다.");
				break;
		}	
	}
}

-아래는 위에 내용을 예제로 해본것

package codition;
public class Main99 {
	public static void main(String[] args) {
		/*
		 * 문1. if문 만약 3000원 이상의 돈을 가지고 있으면 돈 변수는 int 로 "택시를 타고 가라" 출력 그렇지 않으면 "걸어가라" 출력
		 */
		int money = 3500;
		if (money >= 3000) {
			System.out.println("택시를 타고가라.");
		} else {
			System.out.println("걸어가라");
		}
		/*
		 * 문2. if문 돈이 3000원 이상 있거나 카드가 있다면 "택시를 타고 가라" 출력 그렇지 않으면 "걸어가라" 출력
		 */
		int money1 = 2999;
		boolean have_card = true; // true 경우 카드있음, false 카드없음.
		if (money1 >= 3000 || have_card) {
			System.out.println("택시를 타고가라.");
		} else {
			System.out.println("걸어가라.");
		}
		/*
		 * 문3.if문 어떤 특정 정수값 a(변수명)가 짝수 이면 "짝수",홀수이면 "홀수" 출력
		 */
		int a = 1235;
		if (a % 2 == 0) {
			System.out.println("짝수");
		} else {
			System.out.println("홀수");
		}
		/*
		 * 문4.if문 어떤 특정 서로 다른 정수값 a1, b1, c1의 최대값 을 구하여라 a1 =10, b1 = 20, c1 = 9;
		 */
		int a1 = 303;
		int b1 = 302;
		int c1 = 301; // int max = 0;
		if (a1 > b1 && a1 > c1) {
			System.out.println("a1");
		} else if (b1 > a1 && b1 > c1) {
			System.out.println("b1");
		} else if (c1 > a1 && c1 > b1) {
			System.out.println("c1");
		} else {
			System.out.println("없다마");
		}
		/*
		 * int a2 = 100, b2 = 200, c2 = 300 int max = 0;
		 */
		/*
		 * 문5.if문 수학 점수가 90점 이상 이면 "A학점" 80점 이상이면 "B학점" 70점 이상이면 "C학점" 60점 이상이면 "D학점"
		 * 나머지 "F학점"
		 */
		int grade = 55;
		if (grade >= 90) {
			System.out.println("A학점");
		} else if (grade >= 81 && grade < 90) {
			System.out.println("B학점");
		} else if (grade >= 71 && grade < 80) {
			System.out.println("C학점");
		} else if (grade >= 61 && grade < 70) {
			System.out.println("D학점");
		} else {
			System.out.println("F학점");
		}
		/*
		 * 문6. switch case 문으로 특정 정수 num의 값이 1이면 "축구" 2 이면 "농구", 3이면 "야구", 4이면 "배구", 그
		 * 외에는 "배드민턴"이 출력
		 */
		int num = '3';
		switch (num) {
		case '1':
			System.out.println("축구");
			break;
		case '2':
			System.out.println("농구");
			break;
		case '3':
			System.out.println("야구");
			break;
		case '4':
			System.out.println("배구");
			break;
		default:
			System.out.println("배드민턴");
		}
		/*
		 * 문7. switch-case 특정 정수의 값이 3이면 "안녕"이 세줄, 2이면 "안녕"이 두줄, 1이면 "안녕"이 1줄, 그외에는 "잘가"
		 * 출력
		 */
		int z = '3';
		switch (z) {
		case '3':
			System.out.println("안녕" + "\r안녕" + "\r안녕");
			break;
		case '2':
			System.out.println("안녕" + "\n안녕");
			break;
		case '1':
			System.out.println("안녕");
			break;
		default:
			System.out.println("잘가");
			break;
		}
	}
}


지속적이고 반복되는 문장은 사람을 불안하게 해요..

2. 반복문

  • for
  • while // 거의안씀
  • do~while

2-1. for 문

  • for문은 사람이 직접 처리하기에 부담스러운 반복적인 작업을 처리하기에 매우 용이하다.
	1+2+3+4+....+9+10 = 55 	

	for( 초기식; 조건식; 증감식 ) {
		....반복적으로 동작할 구문 ...
	}
  • 초기식 : 최초로 초기식을 설정한다.
  • 조건식 : 초기식을 설정한 다음에는 조건식을 판단한다.
  • 만약 조건식이 참이라면 반복적으로 동작할 구문을 1회 수행한다.
  • 반복 구문을 수행한 후, 증감식으로 이동한다.
  • 증감식을 수행한 후, 다시 조건식으로 이동한다.
    여전히 조건식이 참이라면 반복수행을 처리하고, 그렇지 않다면 for문을 종료한다.
package loop;
public class Main01 {
	public static void main(String[] args) {
		// 1부터 10까지의 누적된 합
		// 1+2+ ... + 9 + 10 = 55
		int sum = 0;
		//초기식; 조건식; 증감식
		for(int i = 1 ; i <= 10 ; i++ ) {
			//sum = sum + i;
			sum += i;
			System.out.println("sum : " + sum);
		}	
	}
}
package loop;
public class Main02 {
	public static void main(String[] args) {
		// 1 + 2 + ... + 99 + 100 = ?
		int sum = 0;
		for (int i = 1; i <= 100; i++) {
			sum += i;
			System.out.println("sum :" + sum);
		}
		System.out.println("----------------");
		// 2 + 3 + ... + 98 + 99 = ?
		int sum2 = 0;
		for (int e = 2; e <= 99; e++) {
			sum2 += e;
			System.out.println("sum : " + sum2);
		}
	}
}

난 구구단에게 패배했다.

package loop;
public class Main03 {
	public static void main(String[] args) {
		/*
		 *  구구단 7단
		 *  결과 값 : 
		 *  7
		 *  14
		 *  21
		 *  
		 *  ...
		 *  63
		 *
		 */
		int result = 0;
		for(int i = 1; i<10; i++) {
			result = 7 * i;
			System.out.println(result);
		}	
		for(int i = 7; i <= 7 ; i++ ) {
			for(int j = 1; j <=9; j++) {
				System.out.println(i*j);
			}
		}
	}
}

2-2. while 문

  • while문 역시 for문과 마찬가지로 반복적인 처리를 수행하는 문법이다.
  • for문은 초기식, 조건식, 증감식을 모두 내장하는 바면, while문은 조건식만을
    내장하기 때문에 초기식과 증감식을 외부에 따로 정의해 주어야 한다.
	초기식;

	while(조건식) {
		...반복적으로 동작할 구문...
		
		증감식;
	}
package loop;
public class Main04 {
	public static void main(String[] args) {
		// 1 + 2 + .... + 99 + 100	
		int sum = 0;
		int i = 1;
				while( i<=100 ) {
					sum += i;
					i++;
				}
		System.out.println(sum);
	}
}

구구단 여기서도 날붙잡는다.

package loop;
public class Main05 {
	public static void main(String[] args) {
		/*
		 * 구구단 7단
		 * 7 14 21 ... 63
		 * 결과값만 while문으로
		 */
		int i = 1;
		int result = 0;	
		while( i<10 ) {
			result = 7 * i;
			i++;
			System.out.println(result);
		}
	}
}

2-3. do~while문

  • 조건의 판별을 나중에 수행하는 반복문 형태
  • 초기식을 설정한 후 do{...} 안의 문장을 우선적으로 1회 실행하고 조건을 판별하므로,
	초기식;
	do{
		...반복적으로 동작할 구문...
		증감식;
	} while(조건식);
  • 조건이 참이 아니더라도 최소 1회는 실행된다.

    조건이 참이아니라도 한번은 발동!

    package loop;
    public class Main08 {
    	public static void main(String[] args) {
    		int max = 100;
    		while(max > 100) {
    			System.out.println("while문 실행");
    		}	
    		do { 
    			System.out.println("do~while문 실행"); // do F 이더라도 한번은
    		}while(max>100);
    	}
    }

package loop;
public class Main06 {
	public static void main(String[] args) {
		// 1 + 2 + ... + 100
		int sum = 0;
		int i = 1;
		do {
			sum += i;
			i++;
		}while(i <= 100);
		System.out.println(sum);
	}
}

또 네녀석이냐 구구단

package loop;
public class Main07 {
	public static void main(String[] args) {
		/*
		 * 구구단 7단 결과값
		 * 
		 *7 14 21 ... 63
		 */
		int i = 1;
		int result = 0;	
		do {
			result = 7 * i;
			i++;
			System.out.println(result);
		}while(i<10);	
	}
}

2-4. 무한 루프

무한루프 전에 구구단하다가 콘솔창이 멈추질않아서 당황했었다.

  • 증감식이 설정되지 않거나, 증감식이 수행되더라도 조건식이 거짓이 되지 않은 형태
  • 조건식이 항상 참이므로, 반복문이 종료되지 않는다.
  • 프로그램이 PC의 자원을 매우 많이 사용하게 되므로, 시스템 다운을 발생시킬 수 있다.
   - for문의 무한 루프 예

	for ( int i = 0; i <=100; i--){
		sout(i);
	}

   -while 문 무한 루프 예

	while(true){
		sout("hello")
	}
package loop;
public class Main09 {
	public static void main(String[] args) {
		for(int i=0; i<10; i--) {
			System.out.println(i);
		}	
	}
}

이녀석이 그랬어요.

package loop;
public class Main10 {
	public static void main(String[] args) {
		while(true) {
			System.out.println("hello");
		}
	}
}

오늘배운 단축키

Ctrl + Shift + F = 코드 정리 단축키

profile
//

0개의 댓글