코드스테이츠 9일차

안형준·2022년 5월 7일
0

코드스테이츠

목록 보기
9/32
post-thumbnail

1차 학습목표

  1. if 와 else if , else, switch를 이해하고 활용할 수 있다.
  2. 논리연산자(&&, ||, ! ...)를 활용하여 복잡한 조건을 간결하게 작성할 수 있다.
  3. 복잡한 조건문을 활용하여, 실생활에서 마주하는 문제를 해결하기 위한 알고리즘을 구현할 수 있다.
  4. 반복문을 활용하여 단순한 기능을 반복하여 수행할 수 있다.
  5. 반복문과 문자열, 숫자를 이용해 반복적으로 코드를 실행시킬 수 있다.
  6. 반복문을 다양하게 응용하여 활용할 수 있다.
    for문과 while문의 공통점과 차이점을 이해할 수 있다.
  7. 반복문에 조건문을 적용하여 특정 조건에서만 코드가 실행되도록 할 수 있다.
  8. 이중 for문이 무엇인지 이해하고 활용할 수 있다.
제어문
조건문 : if문, switch문
반복문 : for문, while문, do while문

👻if문
if (조건식) {
   //조건식이 참이라면 실행되는 블록입니다.
}
위와같이 사용

👻if...else문
if문의 조건식이 true이면 해당 블록이 실행되고, 조건식이 false이면 다음으로 넘어가 다음으로 넘어가 else if 블록을 검사한다.
else if에 해당하는 모든 조건식이 false라면, 나머지 경우를 의미하는 else 블록이 실행된다.
if(조건식1) {
   //조건식1이 참이라면, 실행되는 블록입니다.      
} else if (조건식2) {
   //조건식1이 참이 아니면서 조건식2가 참일 때, 실행되는 블록입니다.
} else {
   //조건식1과 2가 모두 참이 아닐 때, 실행되는 블록입니다.
   //else문은 생략 가능합니다.
}

👻Switch문
switch문은 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다.
ex)
switch(yourPosition){
            case "Senior" : // Senior일 경우 
                System.out.println("700만원");
                break;

            case "Junior" :  //Junior 또는 Manager일 경우
            case "Manager" : //실행문이 같으면 이렇게 작성 가능
                System.out.println("500만원");
                break;
            default:
                System.out.println("300만원");
                break;
        }
switch문은 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행하는데, 만약 괄호 안의 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행한다(default는 생략 가능).
위의 예시 코드에서는 num의 값과 case의 번호가 같으면 해당 case안의 실행문을 실행하고 실행이 완료되면 break를 통해서 switch문을 탈출한다.
주의할 점은, break문을 작성하지 않으면 switch문을 탈출하지 않고 모든 case문을 실행하게 되어 원하는 방식으로 동작하지 않는다는 것이다(이를 fall through라고 한다).

숙련된 개발자도 세부한 모든 과정을 하나하나 코드로 작성하는 일은 쉬운 일이 아니다. 그렇기에 우리가 실제로 사용하는 일반적인 언어(자연어)를 통해 수도코드를 작성 후에 코드를 구성해나가면 좀 더 쉽게 할 수 있다.

👻반복문
반복문은 코드들이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류로는 for문, while문, do-while문이 있다.
for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 좋지만, for문은 반복횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다.

👻for문
for문은 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복적으로 수행한다.
ex)
public class Main {
  public static void main(String[] args) {
    int sum = 0;
    for(int num = 0 (초기화); num < 10 (조건식); num++ (증감식) ) {   
      sum += num;
    }
    System.out.println(sum); // 1~9의 합인 45가 출력됩니다.
  }
}

for문의 구조
1. 초기화는 for문이 시작할 때 최초 한 번만 수행되며, 사용할 변수의 초깃값을 정한다.
2. 조건식은 계속 반복할지 여부를 결정하는 조건입니다. 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행하지 않고 끝납니다.
3. 증감식은 반복 횟수를 결정하는 규칙입니다. 변수에 값을 더하거나 곱하는 등 수행 방식을 지정합니다. ++ 은 반복문에서 자주 쓰는 증감연산자로, 피연산자의 값을 1 증가시킵니다.

초기화식이 필요 없을 경우에는 초기화식을 생략할 수 있고, 다음 예시와 같이 초기화식이나 증감식도 둘 이상이 될 수도 있다.
for(int i=0, j=100; i<=50 && j>=50; i++, j--) {
  실행문;
  실행문;
}

👻enhanced for문(향상된 for문)
향상된 for문은 반복실행을 하기 위해 카운터 변수와 증감식을 사용하지 않는다.
배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나간다.
ex)
public class EnhancedForLoop {
  public static void main(String[] args) throws Exception {
    String[] names = {"kimcoding", "javalee", "ingikim"};
    for(String name : names) {
      System.out.println(name + "님은 자바를 공부중 입니다.");
    }
  }
}
/*
kimcoding님은 자바를 공부중 입니다.
javalee님은 자바를 공부중 입니다.
ingikim님은 자바를 공부중 입니다.
*/
위와 같이 for문의 괄호( ) 안에는 배열에서 꺼낸 항목을 저장할 변수 선언, 콜론( : ), 그리고 사용할 배열이 작성된다.
향상된 for문을 처음 실행 할 때, names 배열에서 가져올 첫번째 값이 존재하는지 확인 하고, 값이 존재하면 해당값을 변수인 name에 저장한다. 그리고 그 안의 실행문을 실행한다.
블록 내부의 실행문이 모두 실행 되면 다시 names 배열에서 가져올 값이 있는지 확인 하고 만약 가져올 다음 항목이 없다면 자동적으로 for문이 종료된다.

👻while문
for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true일 경우에 계속해서 반복한다.
ex)
(초기화);
while(조건식) {
  실행문; //조건식이 참인 동안 실행
  증감식;
}

👻do-while문
do-while문은 조건식에 의해 반복 실행한다는 점에서는 while문과 동일하다.
while문은 시작 할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만, 경우에 따라서는 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속 할지 결정하는 경우도 있다.
ex)
do {
  (1)실행문 //처음 한 번은 무조건 실행
} while((2)조건식);

do-while문이 처음 실행될 때 
(1) 실행문을 먼저 실행한다. 
(1)실행문이 모두 실행되면 (2)조건식을 평가한다. 
그리고 그 결과가 true이면 (1)실행문 → (2)조건식으로 반복 실행을 하고, false이면 do-while문을 종료한다.

아래는 1~10 사이의 정수를 변수 randomNum에 저장하고 이 값을 맞출 때까지 반복하는 do-while문 예시

import java.util.Scanner;

public class Main {
  public static void main(String args[]){
    int input = 0, randomNum = 0;

      randomNum = (int)(Math.random() * 10) + 1; // 1 ~ 10 임의의 수를 생성
      Scanner scanner = new Scanner(System.in);

      do{
        System.out.println("1과 10 사이의 정수를 입력하세요");
        input = scanner.nextInt();

        if(input > randomNum) {
          System.out.println("더 작은 정수를 입력하세요");
        } else if (input < randomNum) {
          System.out.println("더 큰 정수를 입력하세요");
        }
      } while(input != randomNum);
      System.out.println(randomNum +" 정답입니다!");
  }
}

👻break문
break문은 반복문인 for문, while문, do-while문을 실행 중지할 때 사용된다.
break문은 대개 if문과 같이 사용되며, if문의 조건식에 따라 for / while문을 종료 할 때 사용한다.
그러나 만약 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료하고, 바깥쪽 반복문에는 영향을 끼치지 않는다.

👻continue문
continue문은 반복문인 for문, while문, do-while문에서만 사용 되는데, 블록 내부에서 continue문이 실행되면 for문의 증감문 혹은 while, do-while문의 조건식으로 이동하여 작동한다.
continue문과 break문의 차이점은 반복문 종료 여부이다. continue문은 반복문을 종료하지 않고 다음 차례로 넘어가 계속 반복을 수행한다.
 break문과 마찬가지로 continue문도 보통 if문과 함께 사용하는데, if문의 조건을 만족하는 경우 continue문을 실행하여 그 이후의 코드를 실행하지 않고 다음 반복으로 넘어간다.
 
 아스키코드
문자형 -> 정수형 : - '0'
정수형 -> 문자형 : + '0'

👻삼항 조건 연산자
return num % 2 == 0 ? true : false;
짝수일 때 true, 홀수일 때 false

꼭 삼항 조건 연산자를 이용하지 않더라도
return num % 2 == 0 ;만 주어도 출력된다.

오늘은 조건문에 대해 학습했다.
이전에는 while문의 기본적인 케이스만 다뤄서인지 for문이 많이 어렵게 느껴졌고, 학습 중에 진도 진행에 어려움을 느껴 또 다른 강의를 통해 추가 학습했다.
그 결과 조건문에 대해 어려웠던 부분들이 시원하게 해소된 기분이고, 추가로 공부해서 얻은 결과라 그런지 굉장히 뿌듯했다.
오늘도 정말 고생했고, 내일도 파이팅!

profile
개발 공부

0개의 댓글