2024-07-15 DAY-4

보히·2024년 7월 15일

국비교육 4일차
1. 삼항 연산자

  • 조건 연산자의 한 종류로 if~else 조건문과 같은 연산을 수행한다.

    			if(){
              
              } else {
              
              }

    1-1. 문법
    -조건식? 반환값1 : 반환값2;
    - 물음표 앞의 조건식에 따라 결과값이 참(true)이면 반환값1을 반환하고, 결과값이
    거짓(false)이면 반환값2를 반환한다.
    package condition;

public class Main01 {

public static void main(String[] args) {
// 조건식
int result;
if (5<4) {
result = 50;
} else {
result = 40;
}
System.out.println(result);

	// 삼항 연산자
	// 변수 = 조건식 ? 반환값1 : 반환값2;
	int result2 = (5<4) ? 50 : 40;
	System.out.println(result2);
}

}

package condition;

public class Main02 {

public static void main(String[] args) {
	int age = 21;
	// 만약 age가 21살 이상이면, "Beer"를 반환하고
	// 그렇지 않다면 ""Juice"를 반환해라
	String beverage = (age>=21) ? "Beer" : "Juice";
	System.out.println(beverage);
	
}

}

package condition;

public class Main05 {

public static void main(String[] args) {
	//1~5번은 if문
			/*
			  1. 만약 3000원 이상의 돈을 가지고 있으면
			  "택시를 타고 가라"를 출력,
			   그렇지 않으면 "걸어가라"를 출력
			 */
	int money = 3000;
	if(money >=3000) {
		System.out.println("택시를 타고 가라");
	}
	else {
		System.out.println("걸어가라");
	}
	System.out.println("------------------");
	
	
	/*
	  2. 만약 돈이 3000원 이상 있거나, 카드가 있다면
	  "택시를 타고 가라"를 출력,
	  구렇지 않다면 "걸어가라"를 출력
	 */
	int money2 = 3000;
	boolean hascard = true;
	
	if(money2 >= 3000 || hascard) {
		System.out.println("택시를 타고 가라");
	}
	else {
		System.out.println("걸어가라");
	}
	System.out.println("----------------");
	
	/*
	  3. int a = 10; 
	  어떤 특정 정수값 a가 짝수이면 "짝수", 홀수이면 "홀수"를 출력
	 */
	
	int a = 11;
	if(a%2==0) {
		System.out.println("짝수");
	}
	else {
		System.out.println("홀수");
	}
	System.out.println("----------------");
	
	/*
	  4. 서로다른 특정 정수값 a1 = 10, b1 = 20, c1 = 9이 있다.
	    이 중에서 최대값을 구하여라
	  */
	int a1 = 10;
	int b1 = 20;
	int c1 = 9;
	int max = a1;
	if(b1 > max) {
		max = b1;
		
	}
	else if(c1 > max) {
		max = c1;
	}
		
	System.out.println(max);
	System.out.println("---------------------");
	/*
	  5. 국어, 영어, 수학 점수의 평균이 95점 이상이면 "장학생"출력하여라
	   */
	
	int kor = 95; int eng = 95; int math = 95;
	int average = (kor+eng+math)/3;
	if(average >= 95) {
		System.out.println("장학생 입니다.");
	}
	System.out.println("--------------------");
	
	// 6번은 switch-case문 사용
			 /*
			  6. 숫자가 3이면 "안녕"이 세줄,
			     2이면 "안녕"이 두줄, 1이면 "안녕"이 한줄,
			     그 외에는 "잘가"가 출력되도록 하시오.
			  */
	
	int num =5;
	switch(num) {
	case 3:
		System.out.println("안녕");
	case 2:
		System.out.println("안녕");
	case 1:
		System.out.println("안녕");
		break;
	default:
		System.out.println("잘가");
		break;
	}
	System.out.println("------------------");
	
	// 7번은 삼항연산자
	 /*
	  7. 12시보다 작으면 "오전", 크면 "오후" 출력
	  */
	
	int day = 9;
	String all = (day < 12)? "오전":"오후" ;
	System.out.println(all);
}

}

  1. 반복문
    2-1. for문
    (1) 최초로 초기식을 설정
    (2) 초기식을 설정한 후, 조건식을 판단한다.
    i가 100보다 작거나 같은지 판단
    (3) 만약 조건식이 참이라면 반복적으로 구문 1회 실행
    (4) 반복문을 수행한 후 , 증감식으로 이동
    (5) 증감식 수행 후, 다시 조건식으로, 여전히 조건식이 참이라면 반복수행, 그렇지 않으면 종료

package loop;

public class Main12 {

public static void main(String[] args) {
	int sum = 0;
	for(int i =1; i<101; i++) {
		sum +=i;
	}
	System.out.println("1부터 100까지 합은 "+ sum);
}

}

package loop;

public class Main12 {

public static void main(String[] args) {
	
	int result = 0;
	for(int i = 1; i<10; i++) {
		result = 7*i;
		System.out.println(result);
	}
}

}

package loop;

public class Main12 {

public static void main(String[] args) {
	
	int result = 0;
	for(int i = 1; i<10; i++) {
		result = 7*i;
		System.out.println("7*"+i+" = "+result);
	}
}

}

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

    			초기식;(1)
                	
                while(조건식(2),(5)){
                
                		...반복적으로 동작할 구문 ...

			    증감식(4)
                }
                

package loop;

public class Main12 {

public static void main(String[] args) {
	
	//while문으로 1부터100까지의 합
	int i = 1;
	int sum = 0;
	
	while(i < 101) {
		sum +=i;
		i++;
	}
	System.out.println(sum);
}

}
2-3. do~while문
- 조건의 판별을 나중에 수행하는 반복문 형태
- 초기식을 설정한 후 do{..}안의 문장을 우선적으로 1회 실행하고 조건을 판별하므로, 조건이 참이 아니더라도 최소 1회는 실행된다.

			초가삭;(1)
            
            do {
            		...반복적으로 동작할 구문...(2)(5)
                    
                 증감식(3)
                 
              } while (조건식(4));
              

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) {
	/*
	 * do~while을 사용해서 구구단 7단의 결과값 출력
	 */
	int i = 1;
	int result = 0;
	
	do {
		result = 7*i;
		System.out.println("7*"+i+" = "+ result);
		i++;
	} while(i<10);
	
	
	
}

}

package loop;

public class Main08 {

public static void main(String[] args) {
	int max = 100;
	
	while(max > 100) {
		System.out.println("while문 실행");
	}
	//do~while 구문은 무조건 do안에 문장을 1번실행
	do {
		System.out.println("d0~while문 실행");
	}while(max > 100);
}

}

  1. 무한 루프
  • 증감식이 설정되지 않거나, 증감식이 수행되더라도 조건식이 거짓이 되지 않은 형태

  • 조건식이 항상 참이므로, 반복문이 종료되지 않는다.

  • 프로그램이 PC의 자원을 매우 많이 사용하게 되므로, 시스템 다운을 발생시킬 수 있다.

  • for문의 무한루프 예

    for(int i = 0, i<10; i--){
             System.out.println("i");

    }

    • while문의 무한 루프 예

      	while(true){
           	System.out.println("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");
	}
}

}

  1. 변수의 범위
    4-1. 변수의 범위(= 변수의 스코프)
    -자신보다 하위 블로으로는 침투할 수 있다. int num = 100;
    if(num == 100){
    // num이 현재 블록 바깥에서
    // 선언되었으므로 유효
    System.out.println(num);
    }
                // 유효
                int num = 100;
                for( int i = 0; i < 10; i++{
                		System.out.println(num+i);
                 }
                 
  • 자신이 선언된 블록 밖으로 빠져나갈 수 없다.
    int num = 100;
    if (num == 100){
    // 변수 result가 if블록 안에서
    // 생성되었으므로 사용불가
    int result = num + 100;
                 }
                 System.out.println(result);
   - 		 

0개의 댓글