4 분 소요

1. 조건문: if문, switch문

1-1. 제어문(control statement)

  • 실행 흐름을 개발자가 워하는 방향으로 바꿀 수 있도록 해주는 것.
    • 조건문 : if문, switch문
    • 반복문 : for문, while문, do-while문

1-2. 조건문(conditional statement)

  • 특정 조건을 만족할 때 코드를 샐항하는 문법
    • if문 : 괄호 내의 조건식이 참이면 블록 내의 문장을 실행한다.
      • else문 : if문의 조건식이 거짓이면 블록 내의 문장을 실행한다. 필요 없으면 없어도 됨.
      • else if문 : if문의 조건식이 거짓일 때 실행시킬 코드에 추가 조건을 걸고 싶을 때 사용한다. 필요 없으면 없어도 됨.
    • switch문 : 변수의 값에 따라 실행문이 결정된다.
if (a > 0)
  // 중괄호를 사용하지 않으면 조건식이 참일 때 한 줄만 실행
  System.out.println("a는 양수입니다.");
else if ( a == 0){
  System.out.println("a는 0입닌다.");
}else{
  System.out.println("a는 음수입니다.");
}

switch(ch){
  case 'a':
    // break문이 없기 때문에 블록을 빠져나가지 않고 다음 case문으로 이동
  case 'b':
    System.out.println("ch는 a혹은 b입니다."); // a일 경우에도 출력됨.
    break;
  case 'c':
    System.out.println("ch는 c입니다.");
    break;
  default:
    System.out.println("a도 b도 c도 아닙니다.");
    break; // break를 하지 않아도 이 블록을 빠져나갈 수 있음.
}

1-3. 확인문제

  1. 조건문의 종류

    • 조건문 : if문, switch문
  2. 조건문을 설명한 것 중 맞는 것 O표, 틀린 것 X표 하세요.

    • if문은 조건식의 결과에 따라 실행 흐름을 달리할 수 있다.(X)

      ➡️ if문이 아니라 switch문

    • if문은 조건식이 true이면 블록을 실행하고 false이면 블록을 실행하지 않는다.(0)

    • if문의 블록 내부에는 또 다른 if문을 사용할 수 있다.(0)

    • switch문에서 사용할 수 있는 변수의 타입은 int만 가능하다.(x)

      ➡️ char 타입도 가능하다.

  3. 코드를 실행했을 때 출력되는 내용

    • B입니다.
  4. 코드를 실행했을 때 출력되는 내용

    • 우수 회원 혜택을 받으실 수 있습니다.

      일반 회원 혜택을 받으실 수 있습니다.

      감사합니다.

2. 반복문 : for문, while문, do-while문

2-1. loop

  • 특정 조건을 만족하는 동안 반복해서 실행하는 문법

    • for문 : 반복 횟수가 정해진 경우에 주로 사용
    //for문 예시
    for(int i = 0; i < n; i++)
        //0부터 n-1까지 i를 증가시키며 코드 실행(n회 반복)
    
    • while문 : 반복 횟수를 모를 때 주로 사용
    //while문 예시
    while(true){
        result *= 3;
        if(result >= 100) //이 조건을 만족시켜야 반복문 종료
            break;
    }
    
    • do-while문 : 조건 만족 여부와 상관없이 코드를 먼저 실행하고, 그 다음 루프부터 조건을 검사
    //do-while문 예시
    do{
       printf("출력됩니다.");
    }while(false);//1회만 출력
    

2-2. 무한루프(infinite loop)

  • 무한히 반복을 하고 싶거나 정해진 횟수 없이 일정한 조건을 충족하면 빠져나오게 하고 싶을 때 사용하는 것
//for문을 사용한 무한 루프
for(;;){
    //반복하고 싶은 코드
}

//while문을 사용한 무한 루프
while(true){
    //반복하고 싶은 코드
}

2-3. break문

  • for문, while문, do-while문 내부에서 실행되면 반복을 취소한다.
//이중 for문일 때 break로 바깥쪽 for문까지 종료 예시
Outter : for(int i = 0; i < n; i++){ // 바깥 반복문에 이름(라벨) 붙이기
    for(int j = 0; j < n; j++){
        if(j == 1){
            break Outter; // break Outter(라벨)로 바깥쪽 반복문까지 종료
        }
    }
}

2-4. continue문

  • for문, while문, do-while문 내부에서 실행되면 증감식 또는 조건식으로 돌아간다.
//continue를 사용한 for문 예시
for(int i = 0; i < n; i++) {
    if (i % 2 != 0) {
        continue; // 홀수인 경우 다시 조건식으로 이동
    }
}

2-5. 확인문제

  1. 반복문의 종류

    • 반복문 : for문, while문, do-while문
  2. for문을 이용해서 1~100까지 정수 중에 3의 배수의 총합을 구하는 코드 작성하기

    **<코드>**

    public class Main {
        public static void main(String[] args) {
            int sum = 0;
            for(int i = 0; i <= 100; i++) {
                if (i % 3 == 0) {
                    sum += i;
                }
            }
             
            System.out.println("3의 배수의 총 합 : " + sum);
        }
    }
    

    **<결과>**

    스크린샷 2024-01-12 오후 1 08 16

  3. while문과 Math.random() 메소드를 이용해서 2개의 주사위를 던졌을 때 나오는 눈을(눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 합이 5이면 실행을 멈추는 코드 작성하기

    눈의 합이 5가되는 조합 (1,4), (4, 1), (2, 3), (3, 2)

    **<코드>**

    public class Main {
        public static void main(String[] args) {
       
            while(true){
                int num1 = (int)(Math.random() * 6) + 1;
                int num2 = (int)(Math.random() * 6) + 1;
       
                if (num1 + num2 != 5){
                    System.out.println("("+num1 + "," + num2 + ")");
                }else{
                    System.out.println("("+num1 + "," + num2 + ")");
                    System.out.println("눈의 합 = 5, 프로그램 종료.");
                    break;
                }
            }
        }
    }
    

    **<결과>**

    image

  4. 중첩 for문을 이용하여 방정식 4x+5y = 60의 모든 해를 구해서 (x, y) 형태로 출력하기

    단, x와 y는 10 이하의 자연수

    **<코드>**

    public class Main {
        public static void main(String[] args) {
            for (int i = 0; i <= 10; i++){
                for (int j = 0; j <= 10; j++){
                    if (4*i + 5*j == 60){
                        System.out.println("("+i + "," + j + ")");
                    }
                }
            }
        }
    }
    

    **<결과>**

    image

  5. for문을 이용해서 *을 출력하는 코드 작성하기(p.161 참고)

    **<코드>**

    public class Main {
        public static void main(String[] args) {
            for (int i = 0; i < 4; i++){
                for (int j = 0; j <= i; j++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    

​ **<결과>**

image

  1. for문을 이용해서 *을 출력하는 코드 작성하기(p.161 참고)

    **<코드>**

    public class Main {
        public static void main(String[] args) {
            for (int i = 0; i < 4; i++){
                for (int j = 0; j < 3-i; j++){
                    System.out.print(" ");
                }
                for (int k = 0; k < i+1; k++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    

    **<결과>**

    image

  2. while문과 Scanner를 이용해서 키보드로 입력된 데이터로 예금, 출금, 조회, 종료 기능을 제공하는 코드를 작성하기.

    (Scanner의 next() 사용)

    **<코드>**

    import java.util.Scanner;
       
    public class Main {
        public static void main(String[] args) {
            boolean run = true;
            int balance = 0;
            Scanner scaaner = new Scanner(System.in);
       
            while(run) {
                System.out.println("____________________________________");
                System.out.println("1.예금 | 2.출금 | 3.잔고 | 4.종료");
                System.out.println("____________________________________");
       
                System.out.print("선택> ");
                int choice = scaaner.nextInt();
       
                if (choice == 4){
                    System.out.println("프로그램 종료");
                    break;
                }
                switch (choice) {
                    case 1:
                        System.out.print("예금액> ");
                        int credit = scaaner.nextInt();
                        balance += credit;
                        break;
                    case 2:
                        System.out.print("출금액> ");
                        int withdraw = scaaner.nextInt();
                        balance -= withdraw;
                        break;
                    case 3:
                        System.out.println("잔고>" + balance);
                        break;
                }
            }
        }
    }
    

​ **<결과>**

image

댓글남기기