4주차 항해일지 - 제어문

김종하·2020년 12월 11일
1

Live Study - WHITESHIP

목록 보기
5/14
post-thumbnail

목차
1. 제어문 (조건문, 선택문)
2. 반복문
3. live-study 대시 보드를 만드는 코드를 작성 (Github 자바 라이브러리를 사용)
4. LinkedList를 구현
5. Array 를 활용한 Stack을 구현
6. 앞서 만든 ListNode를 사용해서 Stack을 구현
7. Array 를 활용한 Queue를 구현
8. 앞서 만든 ListNode를 사용해서 Queue를 구현

1. 제어문 (Control Flow Statement)

제어문이란 코드의 실행 흐름을 제어하는 구문을 의미한다.
일반적으로 코드는 작성된 순서대로 순차적으로 수행되지만 제어문을 통해 이런 흐름을 바꿀 수 있다.

1-1 조건문 ( Condition statement)

if 문 : 조건식이 true 인 경우 코드를 수행한다.

    public static void main(String[] args) {
        if(true){
            System.out.println("조건문이 true 임으로 수행됩니다.");
        }
        if(false){
            System.out.println("조건문이 true 임으로 수행되지 않습니다.");
        }
    }

결과 ----------------------- 
조건문이 true 임으로 수행됩니다.

if - else 문 : 조건식이 true인 경우 if 블럭의 코드를 수행하고, false인 경우 else 블럭의 코드를 수행한다.

    public static void main(String[] args) {
        if(true){
            System.out.println("조건식이 true 임으로 if 블럭의 코드를 수행");
        } else {
            System.out.println("조건식이 true 임으로 else 블럭의 코드는 수행하지 않음");
        }

        System.out.println("===========");

        if(false){
            System.out.println("조건식이 false 임으로 if 블럭의 코드는 수행하지 앟음 ");
        } else {
            System.out.println("조건식이 false 임으로 else 블럭의 코드를 수행");
        }
    }
    
결과 -----------------------
조건식이 true 임으로 if 블럭의 코드를 수행
===========
조건식이 false 임으로 else 블럭의 코드를 수행

if - else 문 : 여러 조건식을 사용할 수 있음.

    public static void main(String[] args) {

        int number = 33;

        if ( number % 2 == 1){
            System.out.println("number 은 홀수 입니다.");
        } else if (number % 3 == 0){
            System.out.println("number 은 3의 배수 입니다.");
        } else {
            System.out.println("모든 조건식이 false 입니다. ");
        }

        number = 36;

        if ( number % 2 == 1){
            System.out.println("number 은 홀수 입니다.");
        } else if (number % 3 == 0){
            System.out.println("number 은 3의 배수 입니다.");
        } else {
            System.out.println("모든 조건식이 false 입니다. ");
        }

        number = 40;

        if ( number % 2 == 1){
            System.out.println("number 은 홀수 입니다.");
        } else if (number % 3 == 0){
            System.out.println("number 은 3의 배수 입니다.");
        } else {
            System.out.println("모든 조건식이 false 입니다. ");
        }

    }
    
결과 -----------------------    
number 은 홀수 입니다.
=======================
number 은 3의 배수 입니다.
=======================
모든 조건식이 false 입니다.  

1-2 선택문( Swithch Statement )

주어진 조건의 값에 따라 수행할 명령을 분기하는 제어문이다.
if - else 와 비슷하게 여러 조건을 분기할 수 있지만, if - else 는 순차적으로 조건을 확인하는 반면, switch 는 점프 테이블을 사용함으로 성능상 이점이 있고, 가독성도 뛰어나다.

    public static void main(String[] args) {

        int someCase = 4;

        switch (someCase) {
            case 1:
                System.out.println(" 1번 케이스 ");
                break;
            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;
        }
    }
결과 -----------------------
4번 케이스 

코드를 보면 break 문이 쓰여져 있는데, break 문을 사용하지 않을 경우 해당 case 부터 모든 코드를 수행하게 된다.

    public static void main(String[] args) {

        int someCase = 4;

        switch (someCase) {
            case 1:
                System.out.println(" 1번 케이스 ");
                
            case 2:
                System.out.println(" 2번 케이스 ");

            case 3:
                System.out.println(" 3번 케이스 ");

            case 4:
                System.out.println(" 4번 케이스 ");

            case 5:
                System.out.println(" 5번 케이스 ");

        }
    }
결과 -----------------------
4번 케이스 
5번 케이스

추가적으로 enhanced switch 문이 생겨 -> 연산자를 사용할 수 도 있다고 한다. 사용해보려고, jdk 14를 설치하고

    public static void main(String[] args) {

        int someCase = 4;

        switch (someCase) {
            case 1 -> System.out.println("1번 케이스");

            case 2, 3 -> System.out.println("2 번 / 3 번 케이스");

            case 4 -> System.out.println("4 번 케이스");

            case 5 -> System.out.println("5 번 케이스");
        }
    }

다음과 같이 코드를 작성했지만

Information:java: Errors occurred while compiling module 'whiteship-study'
Information:javac 14.0.2 was used to compile java sources
Information:2020-12-11 17:02 - Build completed with 1 error and 0 warnings in 2 s 246 ms
Error:java: invalid source release 12 with --enable-preview
  (preview language features are only supported for release 14)

다음과 같은 에러메세지가 보여, 프로젝트 세팅을 이리저리 만져보았지만 결국 실패했다.. 추가적인 학습이 필요할 것 같다.

2. 반복문 ( Iteration Statement)

반복문을 사용하면 특정 조건에서 같은 명령을 반복해서 수행할 수 있다.

2-1 While 문

while(조건식){ 반복 수행할 명령 }

    public static void main(String args[]){

        int i = 0;
        while (i < 5){
            System.out.println("반복 : " + i);
            i++;
        }

    }
결과 -----------------------
반복 : 0
반복 : 1
반복 : 2
반복 : 3
반복 : 4

다음과 같이 while 문을 활용할 수 있는데, 주의해야할 점은 반복을 탈출할 수 있는 조건을 만들어 놓지 않으면 무한루프에 빠지게 된다 .

2-2 for 문

for(초기화 식; 조건부; 증감부){ 반복 수행할 명령 }

    public static void main(String args[]){

        for(int i = 0 ; i < 5; i++){
            System.out.println("반복 " + i);
        }

    }
결과 -----------------------
반복 0
반복 1
반복 2
반복 3
반복 4

while 문에 비해 초기화식과 조건부 증감부가 같은 코드라인에 있어 가독성이 뛰어난 것을 확인 할 수 있다.

2-3 do-while 문

do { 무조건 한번은 수행되는 명령 } while (조건식) { 조건이 참일 경우 반복 수행할 명령 }

    public static void main(String args[]){
        
        do{
            System.out.println("여기는 무조건 수행");
        } while (false);

    }
결과 -----------------------    
여기는 무조건 수행

이러한 do-while 문을 활용하여 사용자의 입력을 제한 해보도록 하자

    public static void main(String args[]){

        Scanner sc = new Scanner(System.in);
        int doOrNot;
        do{
            System.out.print("0 혹은 1을 입력하세요 : ");
            doOrNot = sc.nextInt();

        } while (doOrNot != 0  && doOrNot != 1);
    }
결과 -----------------------    
0 혹은 1을 입력하세요 : 3
0 혹은 1을 입력하세요 : 4
0 혹은 1을 입력하세요 : 2
0 혹은 1을 입력하세요 : 1

3. live-study 대시 보드를 만드는 코드를 작성 (Github 자바 라이브러리를 사용)

live-study 대시보드 소스코드

4. LinkedList를 구현

LinkedList 구현 소스코드
테스트 코드

5. Array 를 활용한 Stack을 구현

Array를 활용한 Stack 구현 소스코드
테스트코드

6. 앞서 만든 ListNode를 사용해서 Stack을 구현

ListNode를 사용해서 Stack 구현 소스코드
테스트코드

7. Array 를 활용한 Queue를 구현

Array 를 활용한 Queue 소스코드
테스트코드

8. 앞서 만든 ListNode를 사용해서 Queue를 구현

ListNode를 사용해서 Queue 구현 소스코드
테스트코드

스터디 깃헙주소 : https://github.com/whiteship/live-study/issues/4

0개의 댓글