자격증/정보처리기사

정보처리기사 실기 스터디[2022-09-30] - 프로그래밍 언어 활용

머훈 2022. 9. 30. 21:23

📌 Study

🔸 2022-09-30

[프로그래밍 언어 활용]

1. 기본 문법 활용하기

  • 연산자 개념 : 프로그램 실행을 위해 연산을 표현하는 기호

 

  • 연산자 우선순위
    • 증감 연산자
    • 산술 연산자
    • 시프트 연산자
    • 관계 연산자
    • 비트 연산자
    • 논리 연산자
    • 삼항 연산자
    • 대입 연산자

 

  • 증감 연산자 : 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용하는 연산자
++x 변수 값을 1 증가시킨 후에 해당 변수를 사용하는 연산자
x++ 변수를 사용한 후에 변수 값을 1 증가시키는 연산자
--x 변수 값을 1 감소시킨 후에 해당 변수를 사용하는 연산자
x-- 변수를 사용한 후에 변수 값을 1 감소시키는 연산자

 

  • 증감 연산자 예제
    #include <stdio.h>
    void main() {
        int x = 3, y = 3;

    printf("%d \n", x++);       // 3
    printf("%d \n", x);         // 4
    printf("%d \n", ++y);       // 4
    printf("%d \n", y);         // 4
    #include <stdio.h>
    void main() {
        int x = 3, y = 3;

    switch(x++) {
        case 3: printf("A: %d \n", x); break;       // A: 4
        case 4: printf("B: %d \n", x);
      }

    switch(++y) {
        case 3: printf("C: %d \n", y); break;
        case 4: printf("D: %d \n", y);          // D: 4
      }
    }

 

  • 산술 연산자 : +, -와 같이 가장 일반적으로 사용되는 연산자
+ 양쪽의 값을 더하는 연산자, 문자열일 경우, 연결
- 왼쪽 값에서 오른쪽 값을 빼는 연산자
* 두 개의 값을 곱하는 연산자
/ 왼쪽 값을 오른쪽 값으로 나누는 연산자
% 왼쪽 값을 오른쪽 값으로 나눈 나머지를 계산하는 연산자

 

  • 시프트 연산자 : 비트를 이동시키는 연산자
<< 왼쪽 값에서 오른쪽 값만큼 비트를 왼쪽으로 이동하는 연산자
>> 왼쪽 값에 오른쪽 값만큼의 비트를 채우면서 오른쪽으로 이동하는 연산자

 

  • 시프트 연산자 예제
  #include <stdio.h>
  void main() {
    printf("%d \n", 3 << 2);    // 12
    printf("%d \n", 8 >> 3);    // 1

 

  • 관계 연산자 : 두 피연산자 사이의 크기를 비교하는 연산자
> 왼쪽에 있는 값이 오른쪽에 있는 값보다 크면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
>= 왼쪽에 있는 값이 오른쪽에 있는 값보다 크거나 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
== 왼쪽에 있는 값이 오른쪽에 있는 값과 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
!= 왼쪽에 있는 값이 오른쪽에 있는 값과 다르면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자

 

  • 관계 연산자 예제
  #include <stdio.h>
  void main() {
    printf("%d \n", 3==3);    // 1
    printf("%d \n", 5==3);    // 0
  class Soojebi {
    public static void main(String[] args) {
      System.out.println(3==3);     // true
      System.out.println(5==3);     // false
    }
  }

 

  • 비트 연산자 : 0과 1의 각 자리에 대한 연산을 수행하는 연산자
& 두 값을 비트로 연산하여 같은 비트의 값이 모두 1이면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자
두 값을 비트로 연산하여 같은 비트의 값이 하나라도 1이면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자
^ 두 값을 비트로 연산하여 같은 비트이 값이 서로 다르면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자
~ 모든 비트 값을 반대로 바꾸는 반전 기능을 하는 연산자

 

  • 비트 연산자 예제
  #include <stdio.h>
  void main() {
    printf("%d \n", 13 & 10);   // 13 => 1101(2), 10 => 1010(2), & 연산하면 1000(2) = 8
    printf("%d \n", 13 | 10);   // | 연산하면 1111(2) = 15
    printf("%d \n", 13 ^ 10);   // ^ 연산하면 111(2) = 7
    printf("%d \n", ~13);   // 13에 -부호 붙이고, -1 연산하면 = -14
  }

 

  • 논리 연산자 : 두 피연산자 사이의 논리적인 관계를 정의하는 연산자

 

&& 두 개의 논리값이 모두 참이면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
ㅣㅣ 두 개의 논리값 중 하나가 참이면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자

 

  • 논리 연산자 예제
  #include <stdio.h>
  void main() {
    printf("%d %d \n", 1 && 1, 1 || 1);   // 1, 1
    printf("%d %d \n", 1 && 0, 1 || 0);   // 0, 1
    printf("%d %d \n", 0 && 1, 0 || 1);   // 0, 1
    printf("%d %d \n", 0 && 0, 0 || 0);   // 0, 0

 

  • 삼항 연산자 : 조건 ? 참값 : 거짓값

 

  • 삼항 연산자 예제
  #include <stdio.h>
  void main() {
    int x = 1;
    int y = 2;
    int max;

    max = x > y ? x : y;
    printf("%d", max);    // 2 
  int i = 7, j = 9;
  int k;

  if(i > j)
    k = i - j;

  else
    k = i + j;    

  // k = (i > j) ? (i - j) : (i + j);

 

  • 대입 연산자 : 변수에 값을 대입할 때 사용하는 연산자, 오른쪽에 있는 값을 이용해 왼쪽의 변수 값을 대입
= 왼쪽의 변수에 오른쪽 값을 대입하는 연산자
+= 왼쪽의 변수에 오른쪽 값을 더한 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자
%= 왼쪽의 변수에 오른쪽 값을 나눈 후, 그 나머지를 왼쪽의 변수에 대입하는 연산자
, 동시에 여러 개의 값을 대입하는 연산자(파이썬만 지원)

 

  • 대입 연산자 예제
  a, b = 10, 20
  print(a)    // 10
  print(b)    // 20

  a,b = b, a
  print(a)    // 20
  print(b)    // 10
  #include <stdio.h>
  int main() {
    int a = 3, b = 4, c = 2;
    int r1, r2, r3;

  r1 = b <= 4 || c == 2;    // 1
  r2 = (a > 0) && (b < 5);    // 1
  r3 = !c;    // 0

  printf("%d", r1 + r2 + r3);   // 1+1+0 = 2
  return 0;
  }
  public class Soojebi2 {
    public static void main(String[] args) {
      int a = 3, b = 4, c = 3, d = 5;
        if(a == 2 | a == c) & !(c > d) & ( 1 == b ^ c != d)) {    // 1(true)
          a = b + c;    // a = 7, b = 4, c = 3, d = 5
          if(7 == b ^ c != a) {   // 1(true)
            System.out.println(a);    // 7
          }

          else {
            System.out.println(b);
          }

        else {
          a = c + d;
          if( 7== c ^ d != a) {
            System.out.println(a);
          }

          else {
            System.out.println(d);
          }
        }
    }
  }