1.   비트 연산자

  • 피연산자를 비트단위로 논리 연산
  • 비트 : 0과 1을 저장 → 1바이트 = 8비트
  • 10진수 / 16진수 / 2진수 변환 참조 (https://reversecore.com/96)
| (OR연산자)
피연산자 중 한 쪽의 값이 1이면 1을 결과로 얻는다. 그 외 0
& (AND연산자)
피연산자 양쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외 0
^ (XOR연산자)
피연산자 값이 서로 다를 때만 1을 결과로 얻는다. 같을때 0
public class Exam011 {

	public static void main(String[] args) {
		
        /* 비트 연산자
         * 10진수를 2진수로 변경해서 연산하고, 그 후에 10진수로 변환
         */
		
		int a = 15; // 1111
		int b = 5; // 0101
		
		System.out.println(a | b); // 1111 -> 15
		System.out.println(a & b ); // 0101 -> 5
		System.out.println(a ^ b ); // 1010 -> 10
		
		System.out.println(a>>2); // 1111 -> 0011 -> 3
		System.out.println(b<<4); // 0101 -> 01010000 -> 80
	}

}

 


2.   제어문 - 조건문

💌  ' 제어문(control statement) '  프로그램의 흐름(flow)을 바꾸는 역할을 하는 문장들

1)  if 문 ; 조건에 따라 다른 문장이 실행

if (조건식) {
    // 조건식이 참(true)일 때 수행될 문장들을 적는다.
}
 
  • 조건식의 결과는 true 아니면 false
  • 연산자들은 조건문에 자주 쓰임.
  • 블럭 {} : 여러 문장을 하나의 단위로 묶을 수 있음

💡  블럭 내의 문장들은 탭(tab)으로 들여쓰기(indentation)를 해서 블럭 안에 속한 문장이라는 것을 알기 쉽게 해주는 것이 좋다

public class Exam015 {
	public static void main(String[] args) {
		
        int a = 3;
        
        if (a >= 3) { // if (조건식) 조건식 : 결과값이 boolean
        	// 조건식이 참일 때 실행
            System.out.println("a는 3보다 큽니다");
        } // if 구문의 끝
        
        // 조건식과 상관없이 무조건 실행
        System.out.println("검사가 끝났습니다.");

	}
}

 


2) if - else 문

 

'else' 그 밖의 다른 이라는 뜻이므로 조건식의 결과가 참이 아닐 때, 즉 거짓일 때 else 블럭의 문장을 수행하라는 뜻

실행할 명령문이 간단하면 삼항연산자로 변경 가능

public static void main(String[] args) {
		
    int age = 15;
		
	if (age > 19) {
	    System.out.println("성인입니다");
		System.out.println("성인요금이 적용됩니다");
	} else { // 위의 조건이 거짓일 때만 실행
	    System.out.println("청소년입니다.");
		System.out.println("청소년요금이 적용됩니다.");
	}
	System.out.println("결제를 진행해 주세요.");
}

 

삼항연산자 적용시 
public static void main(String[] args) {
    /* Exam016을 삼항 연산자를 사용하는 방식으로 변경 
	 * if else 문이고, 실행할 명령문이 간단한 경우 삼항연산자로 변경 가능 */
		
     int age = 15;
		
	 System.out.println(age > 19 ? "성인입니다. \n성인요금이 적용됩니다."
	     : "청소년입니다. \n청소년 요금이 적용됩니다.");
	 System.out.println("결제를 진행해 주세요.");
}


3) if - else if 문

 

  👾  처리해야 할 경우의 수가 셋 이상인 경우 한 문장에 여러 개의 조건식을 쓸 수 있음

  👾  마지막에는 else 블럭으로 끝나며, 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.

 

처리 순서 
  • 결과가 참인 조건식을 만날 때까지 첫 번째 조건식부터 순서대로 평가한다.
  • 참인 조건식을 만나면, 해당 블럭 {}의 문장들을 수행한다.
  • if-else if문 전체를 빠져나온다.
public static void main(String[] args) {
    /* 놀이공원의 요금 나이 기준
	* 성인 : 20세 이상
	  청소년 : 14 ~ 19
	  어린이 : 9 ~13
	  유아 : 0 ~8 */
		
    int age;
	   
	Scanner scanner = new Scanner(System.in);
	System.out.println("나이를 입력해주세요. >>");
	age = scanner.nextInt();
	   
	// 조건이 거짓이면 다음 조건으로 넘어감.
	// 조건이 참이 되면 다음 조건을 검사하지 않음.
		
	if (age > 19) { // 20 ~
	    System.out.println("성인입니다.");
		System.out.println("성인요금이 적용됩니다.");
	}
	else if (age > 13) { // 14 ~ 19
		System.out.println("청소년입니다.");
		System.out.println("청소년요금이 적용됩니다.");
	}
	else if (age > 8) { // 9 ~13
		System.out.println("어린이입니다.");
		System.out.println("어린이요금이 적용됩니다.");
	}
	else { // 0~ 8
		System.out.println("유아입니다.");
		System.out.println("유아요금이 적용됩니다.");
	}
		
	System.out.println("결제를 진행해주세요.");
	scanner.close();
}

오름차순으로 나이 적용시
public static void main(String[] args) {
		
    Scanner scanner = new Scanner(System.in);
	int age;
		
	System.out.println("나이를 입력해주세요.");
    age = scanner.nextInt();
        
    /* 놀이공원의 요금 나이 기준
     * 성인 : 20세 이상
     * 청소년 : 14 ~ 19
     * 어린이 : 9 ~ 13
     * 유아 : 0 ~ 8
     */
        
    // 첫번째 조건에 해당 되지 않으면 다음 조건으로 넘어감.
    // 그렇기 때문에 두번째 조건에서 첫번째 조건과 겹치는 범위는 적지 않아도 됨.
        
    if (age <= 8) { // 0~8
        System.out.println("유아입니다.");
        System.out.println("유아요금이 적용됩니다.");
    }
    else if (age <= 13) { // 9 ~ 13
        System.out.println("어린이입니다.");
        System.out.println("어린이요금이 적용됩니다.");
    }
    else if (age <= 19) { // 14 ~ 19
        System.out.println("청소년입니다.");
        System.out.println("청소년요금이 적용됩니다.");
    }
    else { // 20 ~
        System.out.println("성인입니다.");
        System.out.println("성인요금이 적용됩니다.");
    }
        
    System.out.println("결제를 진행해주세요."); 
        
    // 삼항 연산자를 중첩해서 사용하면 동일한 기능 가능.
    System.out.println(age <= 8 ? "유아입니다. \n유아요금이 적용됩니다." :
        age <= 13 ? "어린이입니다. \n어린이요금이 적용됩니다." :
        age <= 19 ? "청소년입니다. \n청소년요금이 적용됩니다." :
         "성인입니다. \n성인요금이 적용됩니다.");
    
    scanner.close();
}
 
 
 

4) 중첩 if문

  👾  if 문 블럭 내에 또 다른 if문을 포함시키는 것

  👾  내부 if 문은 외부의 if 문보다 안쪽으로 들여쓰기를 해서 두 if 문의 범위가 명확히 구분될 수 있도록 작성

public static void main(String[] args) {
    /* 중첩 if문 : if문 안에 if가 있는 경우
		 
	아이디, 비밀번호를 입력받아서 로그인 처리.
	id : java, pw : 1234
	아이디가 맞는 경우에는 비밀번호를 입력 받음.
	아이디가 틀린 경우에는 에러메시지 출력.
	*/
		
	String id, password;
	Scanner scanner = new Scanner(System.in);
	System.out.println("아이디를 입력해 주세요:");
	id = scanner.nextLine();
		 
	if (id.equals("java")) { // 아이디가 맞는 경우 비밀번호를 입력받음
	    System.out.println("아이디 일치");
		System.out.println("비밀번호를 입력해 주세요 : ");
		password = scanner.nextLine();
		if (password.equals("1234")) {
		    System.out.println("비밀번호 일치");
			System.out.println("로그인 성공");
		} else {
			System.out.println("비밀번호 불일치");
		}
	} else {
	    System.out.println("아이디 불일치");
	}
	scanner.close();
}
 

(출처 ; 학원강의 및 java의 정석 3rd)


1.  if 문과 if-else 문

👩🏻‍💻  if문이나 if-else문을 사용하면 스크립트 안에서 조건 체크 가능


들어가기 전
 const number = prompt('숫자를 입력하세요!');

     

    💡  위 코드는 형변환을 하지 않아도 프로그램 실행에는 문제가 없음
            ▶️ 조건식에서 0과 비교를 할 때 자동으로 형변환이 되어서 계산이 되기 때문
            ▶️ but! 자바 스크립트로 프로그램을 짤 때 문제가 되는 경우가 있어서 가급적 형변환을 하는 것을 추천


if 문
<!--if조건문 기본형-->
if (불 값이 나오는 표현식) {
    불 값이 참일 때 실행할 문장
}
<script>
    if(273 < 100) { // 표현식 273 < 100이 참일 때 실행
        alert('273 < 100 => true')
    }

    let str = ' ';
    if (!str) { // 조건문 안에서 자동으로 형변환. 공백도 글자로 취급
        alert('빈 문자열입니다.'); // false라서 실행 안됨.
    }

    str = ' '; 
    if (!str.trim()) { // 조건문 안에서 자동으로 형변환.
        alert('빈 문자열입니다.') // trim()은 공백제거 함수. true라서 실행됨.
    }

    str = '값입력';
    if (str) { // 조건문 안에서 자동으로 형변환
        alert('빈 문자열이 아닙니다.'); // true라서 실행됨.
    }
</script>

if-else문
<!-- if-else 조건문 기본형 -->
if (불 값이 나오는 표현식) {
    불 값이 참일 때 실행할 문장
} else {
    불 값이 거짓일 때 실행할 문장
}
<script>
    // 오전과 오후 구분하기
    const date = new Date(); // 현재 날짜와 시간을 갖는 객체 생성
    const hour = date.getHours();

    if (hour < 12) {
        alert('오전입니다.');
    } else {
        alert('오후입니다.');
    }
    // if-else문을 삼항연산자로 변경
    console.log((hour < 12 ? '오전입니다.' : '오후입니다.'))
</script>

 


중첩 조건문 : 조건문 안에 조건문을 중첩해서 사용하는 것
<script>
    // 변수를 선언
    const date = new Date(); // 현재 날짜와 시간을 갖는 객체생성.
    const hour = date.getHours(); // 현재시간을 0 ~ 23 사이의 값으로 출력하는 메소드.

    // if-else 문
    if (hour < 11) { //표현식 hour < 11가 참일 때
        alert("아침 먹을 시간입니다.")
    } else { // 표현식 hour < 11가 거짓일 때 실행
        if (hour < 15) { // 표현식 hour < 15가 참일 때 실행.
            alert("점심 먹을 시간입니다.");
        } else { // 표현식 hour < 15가 거짓일 때 실행.
            alert("저녁 먹을 시간입니다.")
        }
    }
    // else-if 문
    if (hour < 11) { //표현식 hour < 11가 참일 때
            alert("아침 먹을 시간입니다.")
        } else if (hour < 15) { // 표현식 hour < 15가 참일 때 실행.
                alert("점심 먹을 시간입니다.");
        } else { // 표현식 hour < 15가 거짓일 때 실행.
                alert("저녁 먹을 시간입니다.")
        }
</script>

 


  💡  falseundefinednull0NaN이나 빈 문자열('')이 아닌 값은 조건문으로 테스트되었을 때, 실제로는 true를 리턴하므로, 변수가 참인지 혹은 값이 존재하는지를 테스트하기 위해 변수 이름 그 자체를 사용할 수 있다. 

let shoppingDone = false;
let childsAllowance;

if (shoppingDone) {
  // 명시적으로 '=== true'를 명시할 필요가 없습니다
  childsAllowance = 10;
} else {
  childsAllowance = 5;
}

2.  switch 문

🐰  switch 조건문의 괄호 안에 비교할 값을 입력  ▶️  이때 입력한 값을 기준으로 특정 코드를 실행

      🥕  처리할 명령이 많을 때 주로 사용

      🥕  switch 문의 조건은 case 문의 값과 일대일로 일치해야 함

🐰  일반적으로 case 뒤에는 정수나 문자열이 오는 것으로 사용
🐰  break 키워드는 switch 조건문이나 반복문을 빠져나가기 위해 사용하는 키워드
        ▶️  코드를 읽다가 break 키워드를 만나면 break 키워드를 감싼 switch 조건문이나 반복문을 완전히 빠져 나감

<!-- 기본형 -->
switch (조건문) {
    case 조건A :
        조건이 A일 때 실행할 명령문;
        break;
    case 조건B :
        조건이 B일 때 실행할 명령문;
        break;
    default :
        break;
}
<script>
    // 변수를 선언
    const input = Number(prompt('숫자를 입력하세요.', '숫자'));

    // 조건문
    switch (input % 2) { // 나머지 연산자를 이용해서 홀수와 짝수를 구분
        case 0:
            alert('짝수입니다.');
            break;
        case 1:
            alert('홀수입니다.');
            break;
        default:
            alert('숫자가 아닙니다.'); // 숫자가 아닌걸 입력해도 에러가 나지 않음.
            break;
    }
</script>
<script>
    /* 사용자에게 월을 입력받아서 switch 이용해 계절을 출력.
       다만 1~12만 입력된다고 가정. */

    const month = Number(prompt("월을 입력하세요. (숫자 1~12 중 선택)"));

    switch (month) {
        case 12: case 1: case 2:
            document.write(`${month}월은 겨울 입니다.`);
            break;
        case 3: case 4: case 5:
            document.write(`${month}월은 봄 입니다.`);
            break;
        case 6: case 7: case 8:
            document.write(`${month}월은 여름 입니다.`);
            break;
        case 9: case 10: case 11:
            document.write(`${month}월은 가을 입니다.`)
            break;
    }
</script>

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]


 

1. else 조건문

 

🐰  if 조건문 뒤에 사용하며 if 조건문의 조건이 거짓일 때 실행

# if 조건식
#    조건식의 결과가 True일 때 실행문
# else :
#    조건식의 결과가 False일 때 실행문

 

num = 6
if num >= 0:
   print('양수')
else:
   print('음수')

 


 

2. elif 구문

 

🐰  세 개이상의 조건을 연결해서 사용하는 조건문

# if 조건식1 :
#    조건식1의 결과가 True일 때 실행문
# elif 조건식2 :
#    조건식1의 결과가 False이고, 조건식2의 결과가 True일 때 실행문
# elif 조건식3 :
#    조건식1, 2의 결과가 False이고, 조건식3의 결과가 True일 때 실행문
# else :
#    조건식1, 2, 3의 결과가 False일 때 실행문

 

# 나이를 입력받아 7살 이하면 '미취학', 8~13살이면 '초등학생', 14 ~ 16살이면 '중학생',
# 17 ~ 19살이면 '고등학생', 20살 이상이면 '성인'을 출력하는 프로그램입니다.
age = int(input('몇 살입니까? >>> ')) # int() 함수를 이용해서 정수로 변환
if age <= 7:
   print('미취학')
elif age <= 13:
   print('초등학생')
elif age <= 16:
   print('중학생')
elif age <= 19:
   print('고등학생')
else:
   print('성인')

 

  📌  else 구문과 elif 구문은 이전의 조건이 맞지 않을 때 넘어오는 부분

         ➡️ 이미 제외된 조건을 한번 더 검사할 필요 없기 때문에 위의 예제와 같이 간단하게 표현 가능

 


 

3.  pass 키워드

 

🐰  프로그래밍을 하다 보면 전체 골격을 잡아 놓고 내부에서 처리할 내용은 나중에 채워넣는 경우가 있음

       ➡️  이런 경우 if 조건문에 구현 내용을 아무 것도 적어 놓지 않으면 error가 발생함

       ➡️  이때 '곧 개발하겠음' 이라는 의미로 'pass' 키워드를 넣어주면 error가 발생하지 않는다

 

# pass 키워드를 사용한 미구현 부분 입력

num = int(input('정수 입력 >>> '))
if num > 0:
    # 양수일 때 : 미구현 상태
    pass
else:
    # 음수일 때 : 미구현 상태
    pass

 


 

💡 raise NotImplementedError

   -  아직 구현하지 부분이라는 의미의 오류를 강제로 발생하게 함

 

num = int(input('정수 입력 >>> ')

if num > 0:
    # 양수일 때
    raise NotImplemetedError
else:
    # 음수일 때
    raise NotImplementedError

 

 

 

 

 

[ 내용 참고 : IT학원 강의 및 책 '혼자 공부하는 파이썬' ]


 

1. 불  자료형

 

👩🏻‍🚀  불린 Boolean 은 오직 참 True과 거짓 False 값만 가진다.

        ▶️ '어떤 명제'의 결과가 될 때 의미를 갖는다.

 

 

1) 비교연산자

  • 불은 비교연산자를 통해 만들 수 있다.
연산자 설명
== 같다
!= 다르다
< 작다
> 크다
<= 작거나 같다
>= 크거나 같다

 

# True나 False 모두 첫 글자는 반드시 대문자로 작성
# 파이썬에는 False는 값이 없는 모든 경우를 의미. 숫자0, 빈 문자열'', 빈 리스트[] 등은 모두 False로 인식

print(bool(0))  # False
print(bool(''))  # False
print(bool([]))  # False
print(type(True))  # <class 'bool'>

print("가방" == "가방")  # True
print("가방" < "하마")   # True

 

  📌  문자열도 비교 연산자 적용 가능하다. 사전 순서로 '가방'이 '하마'보다 앞에 있기 때문에 작은 값이다.

 

a = 15
print(f'{a} > 10 : {a > 10}') # True
print('{} < 10 : {}'.format(a, a < 10)) # False
print('{} >= 10 : {}'.format(a, a >= 10)) # True
print('{} <= 10 : {}'.format(a, a <= 10)) # False
print('{} == 10 : {}'.format(a, a == 10)) # False
print('{} != 10 : {}'.format(a, a != 10)) # True

 


 

2) 논리 연산자

 

 

연산자 의미 설명
not 아니다 불을 반대로 전환
and 그리고 피연산자 두 개가 모두 참일 때 True, 그 외 모두 False
or 또는 피연산자 두 개 중에 하나만 참이라도 True, 모두 거짓일 때 False

 

📌   not  연산자

  • 단항 연산자로, 참과 거짓을 반대로 바꿀 때 사용
a = 10
b = 0
print('not {} : {}'.format(a, not a)) # False
print('not {} : {}'.format(b, not b)) # True

 

 

📌   and 연산자와  or 연산자

 

[ and 연산자 ]

좌변 우변 결과
True True True
True False False
False True False
False False False

 

[ or 연산자 ]

좌변 우변 결과
True True True
True False True
False True True
False False False

 

a = 10
b = 0
print('{} > 0 and {} > 0 : {}'.format(a, b, a > 0 and b > 0)) # False
print('{} > 0 or {} > 0 : {}'.format(a, b, a > 0 or b > 0)) # True

 


 

2.  if 조건문

 

👩🏻‍💻  파이썬에서 if 조건문은 조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을 때 사용

👩🏻‍💻  이렇게 조건을 기반으로 실행의 흐름을 변경하는 것을 '조건 분기'라고 함

# 기본적인 구조
if 불 값이 나오는 표현식:  
  # if 조건문 뒤에 반드시 콜론(:)을 붙인다
    불 값이 참일 때 실행할 문장
    # 4칸 들여쓰기 한다 -> 들여쓰기 안하면 오류 발생!

 

num = 15
if num > 0:
   print('양수') # 조건식이 True라서 실행이 됨

if True:
   print('양수')

if False:
   print('양수')

 


💡  들여쓰기 indentation 규칙


    a. 공백 space이나 탭 tab을 이용하여 들여쓰기를 수행.
    b. 공백의 개수는 상관이 없음
    c. 탭은 1개만 사용
    d. 동일 구역에서 들여쓰기는 통일해야 함. 공백과 탭을 혼용하여 사용할 수 없고 들여쓰기 수준도 동일해야 함
    e. 주로 사용하는 들여쓰기는 공백 4개, 공백 2개, 탭 1개.

if num > 0: print('양수')  # 실행문이 하나면 한 줄 코드로 가능

 


 

3.  짝수와 홀수 구분

 

# 입력 받기
num = input('정수 입력 >>> ')

# 마지막 자리 숫자 추출
last_num = num[-1]

# 짝수 확인
if last_num in '02468':
    print('짝수입니다.')

# 홀수 확인
if last_num in '13579':
    print('홀수입니다.')

 


# 나머지 연산자 활용 예제
# 임의의 정수를 입력받은 뒤 해당 값이 3의 배수인지 아닌지 판별하는 프로그램을 구현하세요
'''
실행 예)
정수를 입력하세요 >>> 14
14는 3의 배수가 아닙니다.
---------------------
정수를 입력하세요 >>> 15
15는 3의 배수입니다.
'''

num = int(input('정수를 입력하세요 >>> '))
if (num % 3) == 0:
    print(f'{num}는 3의 배수입니다.')
else:
    print(f'{num}는 3의 배수가 아닙니다.')

print(f'{num}는 3의 {"배수입니다."if (num % 3) == 0 else "배수가 아닙니다."}')

 

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 '혼자 공부하는 파이썬' ]

+ Recent posts