728x90

scpc - d13

 

1065

세 정수 a, b, c가 입력되었을 때, 짝수만 출력해보자.


참고
if(조건)
{ //조건이 참일 때에만 실행되는 구역(코드블록의 시작)
  실행1;
  실행2;
  ...
} //코드블록의 끝

의 조건/선택 실행 구조는
주어진 “조건”을 검사해 그 결과가 참인 경우에만 코드블록 안에 작성된 내용들을 순서대로 실행한다.


예시
if(a%2==0)
{
  printf(“%d”, a);
}

if(b%2==0)
{
  printf(“%d”, b);
}

if(c%2==0)
{
  printf(“%d”, c);
}

** a%2==0 은 a%2가 먼저 수행되고 그 결과를 0과 비교한 참/거짓 값을 계산한다.

a%2==0의 의미는 a를 2로 나눈 나머지를 0과 비교한 결과 값(참/거짓)이다.
따라서, if(a%2 == 0) 는 “a가 짝수라면?” 이라는 의미로 해석할 수 있다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int []arr = new int[3];
       
		for(int i=0; i<3; i++) {
			arr[i]= scanner.nextInt();
			if(arr[i]%2 ==0) {
				System.out.println(arr[i]);
			}
		}
        
        
	}
}

 

1066

 

세 정수 a, b, c가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.


참고
if(조건)
{ //코드블록1 시작
  ... 실행...;
  ...
}
else
{ //코드블록2 시작
  ... 다른실행...;
  ...
}
의 조건/선택 실행구조는 주어진 “조건”을 검사해 참인 경우에는 코드블록1을 실행하고,
거짓인 경우에는 코드블록2를 실행한다.

예시
if(a%2==0)
{
  printf(“%s”, “even”);
}
else
{
  printf(“%s”, “odd”);
}

** else는 if 없이 혼자 사용되지 않는다. 또한, else 다음에 조건이 없는 이유는?
참이 아니면 거짓이고, 거짓이 아니면 참이기 때문에...
즉 if문의 조건식의 판별 결과는 2가지 경우(참 또는 거짓)로 계산되는데,
else 부분은 if문의 조건식의 결과가 거짓인 경우에 해당하기 때문이다.

** 실행해야 할 명령들이 여러 개일 때 코드블록 기호 { }로 묶어 주는데,
코드블록의 내용이 논리적으로 1개 단위라면 코드블록 기호를 생략할 수 있다.

if(a%2==0) printf("%s", "even");
else printf("%s", "odd");

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int []arr = new int[3];
       
		for(int i=0; i<3; i++) {
			arr[i]= scanner.nextInt();
			if(arr[i]%2 ==0) {
				System.out.println("even");
			}
			else {
				System.out.println("odd");
			}
		}
        
        
	}
}

 

1067

 

정수 1개가 입력되었을 때, 음(minus)/양(plus)과 짝(even)/홀(odd)을 출력해보자.


참고
조건/선택 실행 구조의 안에 조건/선택 실행 구조를 다시 "중첩"할 수 있다.
이는 "중첩(nested)"의 원리가 적용되는 내용으로 아래와 같은 구조가 가능하다.

if(조건1)
{
  if(조건2) //조건문의 중첩
  {
    ...
  }
  else
  {
    ...
  }
}
else
{
  if(조건2)
  {
    ...
  }
  else
  {
    ...
  }
}

위와 같은 조건/선택 실행구조는 조건/선택 실행구조를 중첩해
서로 다른 4가지(2가지*2가지)의 경우에 대해 다른 실행을 할 수 있도록 해준다.

** 어떤 조건들이 맞았을 때에는 해당부분의 코드블록 내용만 실행되고,
전체 조건/선택 실행구조를 빠져나간다. 즉, 다른 부분들은 실행되지 않는다.

** 소스코드의 들여쓰기는 사람이 보고 이해하기 쉽도록 하는 것으로써
들여쓰기나 줄바꿈을 하지 않더라도 동일하게 컴파일된다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int a = scanner.nextInt();
       
		if(a >0){
		    System.out.println("plus");
		}else{
		    System.out.println("minus");
		}
        if(a%2 ==0){
            System.out.println("even");
        }
        else{
            System.out.println("odd");
        }
	}
}

 

1068

 

점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.


평가 기준
점수 범위 : 평가
 90 ~ 100 : A
 70 ~   89 : B
 40 ~   69 : C
   0 ~   39 : D
로 평가되어야 한다.

참고
여러 조건들을 순서대로 비교하면서 처리하기 위해서 조건문을 중첩할 수 있다.
만약, 순서대로 검사하고 실행하기 위해 아래와 같이 중첩 시킨다면,

if(조건1)
{
  ...
}
else
{
  if(조건2)
  {
    ...
  }
  else
  {
    ...
  }
}

중첩된 구조는 논리적으로 1단위이기 때문에 코드블록 기호를 생략하면
아래와 같은 구조로 다시 표현될 수 있다.

if(조건1) { ... ; }
else if(조건2) { ... ; }
else { ...; }

이와 같이 조건을 계속 붙여나가면..

if(조건1) { ... ; }
else if(조건2) { ... ; }
else if(조건3) { ... ; }
else if(조건4) { ... ; }
else if(조건5) { ... ; }
else if(조건6) { ... ; }
else if(조건...) { ... ; }
else { ... ; }

위와 같은 구조를 만들어 순서대로 조건을 검사할 수 있다.
어떤 조건이 참이면, 그 부분의 내용을 실행하고 조건/선택 구조를 빠져나간다.

이렇게 조건들을 순서대로 검사할 때에는
중간에 범위가 빠지지 않았는지 꼼꼼하게 생각하고 조건들을 만드는 것이 중요하다.
이는 마치 수학에서 빠진 범위 없이 부등식을 만드는 것과 유사하다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int a = scanner.nextInt();
		
		
		if(a >= 90) {
			System.out.println("A");
		}else if(a >=70) {
			System.out.println("B");
		}else if(a>=40 ) {
			System.out.println("C");
		}else {
			System.out.println("D");
		}
        
	}
}

 

1069

 

평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.

평가 내용
평가 : 내용
A : best!!!
B : good!!
C : run!
D : slowly~
나머지 문자들 : what?


참고
조건/선택문을 복합적으로 구성해 출력할 수도 있지만,

switch(정수값)
{
  case 'A': //문자 'A'가 정수값 65('A'의 아스키 값)로 저장되기 때문에 가능하다.
    ...;
    break;
  case 'B':
    ...;
    break;
  case 'C':
    ...;
    break;
  default:
    ...;
}

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String a = scanner.nextLine();
		/*
		A : best!!!
		B : good!!
		C : run!
		D : slowly~
		나머지 문자들 : what?
*/
		switch(a) {
			case "A":
				System.out.println("best!!!");
				break;
			case "B":
				System.out.println("good!!");
				break;
			case "C":
				System.out.println("run!");
				break;
			case "D":
				System.out.println("slowly~");
				break;
			
			default:
			System.out.println("what?");
			

		
		
		}
	   
	}
}


위와 같은 switch( ) ... case... break; 제어문을 사용할 수 있다.

** break; 를 사용하지 않으면 이후의 명령들도 계속 실행된다.
default: 는 제시된 case 를 제외한 나머지 모든 경우에 실행된다.
switch( ) 에 주어지는 값은 “정수"값만 가능하며,
문자도 아스키코드 정수값이기 때문에 가능하다.

 

728x90

+ Recent posts