• 프로그래밍의 존재 이유와 목적은 사용자의 input에 따라 달라지는 output과정을 자동화 하기 위함
  • 이를 위해 필요한 것은 ~한 input인 경우 ~한 output을 만들어 내는 조건문과 반복되는 연산과정을 자동화 하기 위한 반복문
    • 예시)
      • 도어락

        Untitled

        • 올바른 비밀번호(Input) 입력을 해야 문열림(output)이 됨
      • 버스카드

        Untitled

        • 카드에 잔액(input)이 버스요금보다 높아야 정상처리(output) 멘트가 출력 됨
      • 고객센터 번호

  • 제어문
    • 조건문과 반복문을 포괄하는 명칭으로 프로그램의 순차적인 흐름을 제어하므로 이때 사용되는 명령문은 제어문
    • 제어문에 속하는 명령문들은 중괄호({})로 둘러싸여 있으며, 이러한 중괄호 영역은 블록(block)이라 불림
    • 중괄호로 제어문의 범위를 지정하므로 줄바꿈 등은 무관
  • 조건문
    • 기본 문법

      • if (조건식) {

          조건식의 결과가 참일 때 실행하고자 하는 명령문;
        

        }

    • if / else 문

      • if (조건식) { 조건식의 결과가 참일 때 실행하고자 하는 명령문; } else { 조건식의 결과가 거짓일 때 실행하고자 하는 명령문; }
      • if가 있다고 반드시 else가 있어야 하는 것은 아님에 유의
    • if / else if / else문

      • if (조건식1) { 조건식1의 결과가 참일 때 실행하고자 하는 명령문; } else if (조건식2) { 조건식2의 결과가 참일 때 실행하고자 하는 명령문; } else { 조건식1의 결과도 거짓이고, 조건식2의 결과도 거짓일 때 실행하고자 하는 명령문; }
        • 조건식1이 참이 되면, 더이상 else if를 검사하지 않고 제어문 밖으로 나간다는 점에 유의
        • 즉, if, else if 문은 조건중 택1의 문법
      • if(조건식1){ } if(조건식2){ } if(조건식1){ }else if(조건식2){ }
      • 위 조건식 처럼 if문이 나열되어 있는 조건식과 else if문이 있는 조건식의 차이점에 유의
        • if~ if~는 각각 독립적으로 조건을 검사하지만, if else if는 조건 중 하나만 참이 되므로,범위 지정시 유의
    • 삼항 연산자

      • 기본문법
        • 결과값 = 조건식 ? 반환값1 : 반환값2
        • 물음표(?) 앞의 조건식에 따라 참(true)이면 반환값1을 반환하고, 거짓(false)이면 반환값2를 반환
      • 간단한 if / else 문을 사용하는 상황의 경우 삼항 연산자를 이용하여 간결하게 표현
    • SWITCH문

      • 기본문법
        • switch (조건값의 대상) { case 값1: 조건 값이 값1일 때 실행하고자 하는 명령문; break; //switch문을 빠져나가는 문구 case 값2: 조건 값이 값2일 때 실행하고자 하는 명령문; break; ...    default: 조건 값이 어떠한 case 절에도 해당하지 않을 때 실행하고자 하는 명령문; break; }
        • 일반적으로 break문을 반드시 넣어줘야 하고, 생략하는 경우는 그 다음 case문과 실행문을 공유
      • 사용이유
        • if / else if / else를 사용해도 동일하나, 가독성이 좋음

        • 특정한 조건의 경우가 열거형으로 몇가지로 정해져 있을때 주로 사용

          Untitled

          • 예시)고객센터 번호 1,2,3,4,5
          • 범위 지정은 불가
  • 반복문
    • while 문
      • 기본문법

        • while (조건식) {

              조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
          

          }

      • while 문은 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복

        • while 문 내부에 조건을 false로 만드는 로직이 존재하지 않을경우엔 프로그램이 무한 루프(infinite loop)
    • do / while 문
      • 기본문법
        • do { 조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문; } while (조건식);
      • do / while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행
        • 무조건 루프를 한 번은 실행한 후에 조건식을 검사
      • for / while 로 대체가 가능하기 때문에 사용빈도는 낮음.
    • for 문
      • 기본 문법

        • for (초기식; 조건식; 증감식) {

              조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
          

          }

      • while문과의 차이

        • for 문은 while 문과는 달리 자체적으로 초기식, 조건식, 증감식을 모두 포함
        • 반복문이 종료가 될 수 있도록 기본설계가 되어 있음
    • break, continue문
      • break;
        • 반복문을 완전히 빠져나가고 싶을 때 사용
      • continue;
        • 반복문내에서 조건문 검사로 다시 올라가도록 하는 구문
        • 코드의 가독성을 위해 많이 사용
    • 자바 변수 유효 범위
      • 자바에서의 if문 블록, for문 블록 등 안에서 선언된 변수는 블록 밖에서 참고할수가 없고 해당 블록내에서만 유효
    • Enhanced for 문
      • 향상된 for문 또는 for each문 등으로 불리기도 함
      • 배열과 컬렉션에서 매우 많이 사용되는 문법으로서 index로 배열이나 리스트 등을 가져오는 것이 아닌, 배열의 값 그대로를 가져오는 방식.
        • 배열과 컬렉션은 현재 단계에서는 동일한 여러 자료형을 집합적으로 관리하는 자료구조라고만 정의
      • 기본 문법
        • for (타입 변수이름 : 배열이나컬렉션이름) {

             배열의 길이만큼 반복적으로 실행하고자 하는 명령문
          

          }

        • Enhanced for 문은 명시한 배열이나 컬렉션의 길이만큼 반복되어 실행

        • 배열 요소는 배열 요소의 메모리 주소를 가져온 요소가 아니기에 요소의 값을 변경하는 작업은 불가함에 유의

    • 2중 반복문