[정보처리기사 실기] Ⅹ. 프로그래밍 언어 활용 - 기본 문법 활용

Ⅹ. 프로그래밍 언어 활용 - 기본 문법 활용.


1. 변수 활용

1.0. 프로그래밍 기본 용어

용어 설명
변수 - 어떤 값을 주기억 장치에서 기억하기 위해서 사용하는 공간
식별자 - 프로그램의 구성요소를 구별하기 위한 기준
예) 변수명, 함수명
바인딩 - 변수와 변수에 관련된 속성을 연결하는 과정
- 정적 바인딩과 동적 바인딩으로 구분
정적 바인딩 : 프로그램 실행 시간 전에 속성을 연결하는 방식
동적 바인딩 : 프로그램 실행 시간에 속성을 연결하는 방식
선언 - 변수에 이름, 데이터 타입 등의 속성을 부여하는 작업
- 명시적 선언과 묵시적 선언으로 구분
명시적 선언 : 선언문을 이용하여 변수 이름을 나열하고 속성을 부여하는 방식
묵시적 선언 : 별도의 선언문 없이 디폴트 규칙에 의해 속성이 부여되는 방식
영역 - 이름이 사용되는 범위를 의미
- 정적 영역과 동적 영역으로 구분
정적 영역 : 변수를 찾을 때 구조에 기반하는 방식
동적 영역 : 변수를 찾을 때 구조보다는 순서에 기반하는 방식
할당 - 변수에 메모리 공간을 바인딩 하는 작업
데이터 타입 - 변수가 가질 수 있는 속성 및 속성값의 길이
연산자 - 데이터 처리를 위해 연산을 표현하는 기호
예) + , - , * , /
명령문 - 프로그램을 구성하는 문장으로 지시 사항을 처리하는 단위


1.1. 자료구조(Data Structure)의 개념

  • 자료구조는 컴퓨터에 데이터를 삽입, 삭제, 수정하게 해주는 논리적인 공간구조를 의미.
  • 자료의 형태에 따른 자료 구조 분류
유형 설명
단순 구조
(Simple)
프로그래밍 언어에서 제공하는 기본 데이터
예) int, float, double, char
선형 구조
(Linear)
데이터가 연속적으로 연결된 자료 구조
예) 연결 자료 구조, 순차 자료 구조, 스택, 큐, 덱 등
비선형 구조
(Non-Linear)
자료들 사이의 관계가 계층 또는 그물 형태 등 비순차적인 성질을 가진 자료들을 표현하는데 적합한 구조
예) 트리, 그래프
파일 구조
(File)
보조 기억 장치에 데이터값이 실제로 기록되는 자료 구조
예) 순차 파일, 색인 파일


1.2. 알고리즘(Algorithm) 개념

  • 알고리즘은 어떤 문제에 대한 답을 찾는 해법을 의미.
  • 알고리즘 특성
    • 입력 : 외부로부터 입력되는 자료가 0개 이상이어야 하는 특성.
    • 출력 : 출력되는 결과가 1개 이상이어야 하는 특성.
    • 명확성 : 각 명령어의 의미가 명확하여야 하는 특성.
    • 유한성 : 정해진 단계를 지나면 종료되어야 하는 특성.
    • 유효성 : 모든 명령은 실행이 가능한 연산들이어야 하는 특성.


1.3. 데이터 타입

1.3.1. 데이터 타입(Data Type)의 개념

  • 프로그래밍 언어에서 실수치, 정수 자료형과 같은 여러 종류의 데이터를 식별하는 형태.
  • 메모리 공간을 효율적으로 사용하고 2진수 데이터를 다양한 형태로 사용하기 위해 존재.

1.3.2. 데이터 타입의 유형

유형 설명
불린 타입
(Boolean Type)
- 조건이 참인지 거짓인지 판단하고자 할 때 사용
- C언어에서는 미지원
- C++, 자바에서는 참일 경우 true로 거짓일 경우 false 로 표현
- 파이썬에서는 참일 경우 True 거짓일경우 False로 표현
bool a = true; //C++
boolean a = true; //Java
문자 타입
(Character Type)
- 문자 하나를 저장하고자 할 때 사용
char a = 'A';
문자열 타입
(String Type)
- 나열된 여러 개의 문자를 저장하고자 할 때 사용
- C언어에서는 지원하지 않는 타입
string a = "Hello"; //C++
String a = "Hello"; //자바
정수 타입
(Integer Type)
- 정수 값을 저장하고자 할 때 사용
int a = 5;
부동 소수점 타입
(Floating Point Type)
- 소수점을 포함하는 실숫값을 저장하고자 할 때 사용
float a = 4.5;
double b = 4.5;
배열 타입
(Array Type)
- 여러 데이터를 하나로 묶어서 저장하고자 할 때 사용
int a[5] = {1, 2, 3, 4, 5}; //a라는 이름의 정수형 변수를 5개 선언

✱ float와 double의 차이 : float형과 double형 모두 실숫값을 표현하지만, float는 4바이트로 보통 소수점 6자리까지 표현이 가능하지만, double형은 8바이트로 소수점 15자리까지 표현이 가능하다.


1.4. 변수

1.4.1. 변수(Variable)의 개념

  • 변수는 저장하고자 하는 어떠한 값이 있을때, 그 값을 주기억 장치에 기억하기 위한 공간을 의미.

1.4.2. 변수 설정 규칙

  • 사용 가능 문자 : 영문 대문자/소문자, 숫자, 밑줄(‘_‘)의 사용이 가능
    가능 : a, A, a1, _, _hello / 사용 불가 : $a, ?a, <a
  • 변수 사용 규칙
    • 첫자리에는 숫자를 사용할 수 없음.
      가능 : _1, a1, b100 / 사용 불가 : 1, 1a, 1B, 1234
    • 변수 이름의 중간에는 공백을 사용할 수 없음.
      가능 : my_id / 사용 불가 : my id
  • 변수 의미 부여
    • 데이터 값의 의미나 역할을 표현.
      예) age, student
    • 이미 사용되고 있는 예약어의 경우에는 변수로 사용할 수 없음.
      가능 : For, If, While / 사용 불가 : for, if, while

✱ 예약어(Reserved Word) : 이미 문법적인 용도로 사용되고 있기 때문에 식별자로 사용할 수 없는 단어.
예) if, float, switch, case, return, break, continue 등...

1.4.3. 변수 선언

  • 일반 변수 선언
    • 구문 : 데이터_타입 변수명 = 초깃값;
    • 불린, 문자, 정수, 실수 등을 선언할 때 사용.
      int a; //정수형 변수 a선언 float b = 0; //초깃값이 0인 실수형 변수 b선언
  • 배열 변수 선언
    • 불린, 문자, 정수, 실수 등을 배열로 선언할때 사용.
      int a[5]; //정수형 배열 a를 5개 선언
      float b[3] = {0.0, 0.0, 0.0}; //초깃값이 0인 실수형 변수 b를 3개 선언
    • 배열을 가리킬 때에는 [0]번지부터 가리킴.
      int a[3]; //a[0], a[1], a[2] 로 해당 배열을 가리킴



2. 연산자

2.1. 산술 연산자(Arithmetic Operator)

  • + : 양쪽의 값을 더하는 연산자.
  • - : 왼쪽 값에서 오른쪽 값을 빼는 연산자.
  • * : 두 개의 값을 곱하는 연산자.
  • / : 왼쪽 값을 오른쪽 값으로 나누는 연산자.
  • % : 왼쪽 값을 오른쪽 값으로 나눈 나머지를 계산하는 연산자.


2.2. 시프트 연산자 (Shift Operator)

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


2.3. 관계 연산자 (Relation Operator)

  • > : 왼쪽에 있는 값이 오른쪽에 있는 값보다 크면 참 반환, 그렇지 않으면 거짓 반환.
  • < : 왼쪽에 있는 값이 오른쪽에 있는 값보다 작으면 참을 반환, 그렇지 않으면 거짓 반환.
  • >= : 왼쪽에 있는 값이 오른쪽에 있는 값보다 크거나 같으면 참을 반환, 그렇지 않으면 거짓 반환.
  • <= : 왼쪽에 있는 값이 오른쪽에 있는 값보다 작거나 같으면 참을 반환, 그렇지 않으면 거짓 반환.
  • == : 왼쪽에 있는 값이 오른쪽에 있는 값과 같으면 참을 반환, 그렇지 않으면 거짓 반환.
  • != : 왼쪽에 있는 값이 오른쪽에 있는 값과 다르면 참을 반환, 그렇지 않으면 거짓을 반환.


2.4. 논리 연산자 (Logic Operator)

  • && : 두개의 논릿값이 모두 참이면 참을 반환, 그렇지 않으면 거짓을 반환.
  • || : 두 개의 논릿값 중 하나라도 참이면 참을 반환, 그렇지 않으면 거짓을 반환.


2.5. 비트 연산자(Bit Operator)

  • 비트연산자는 0과 1의 각자리에 대한 연산을 수행하며, 0또는 1의 결과값을 갖는 연산자이다.
  • & : 두 값을 비트로 연산하여 모두 참이면 참을 반환, 그렇지 않으면 거짓을 반환.
  • | : 두 값을 비트로 연산하여 하나가 참이면 참을 반환, 그렇지 않으면 거짓을 반환.
  • ^ : 두 값을 비트로 연산하여 서로 다르면 참을 반환, 그렇지 않으면 거짓을 반환.


2.6. 대입 연산자(Assignment Operator)

  • 변수에 값을 대입할 때 사용하는 연산자 이며, 오른쪽에 있는 값을 이용해 왼쪽의 변수에 값을 대입힌다.
  • = : 왼쪽의 변수에 오른쪽의 값을 대입하는 연산자.
  • += : 왼쪽의 변수에 오른쪽의 값을 더한 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자.
  • -= : 왼쪽의 변수에 오른쪽의 값을 뺀 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자.
  • *= : 왼쪽의 변수에 오른쪽의 값을 곱한 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자.
  • /= : 왼쪽의 변수를 오른쪽의 값으로 나눈 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자.
  • %= : 왼쪽의 변수를 오른쪽의 값으로 나눈 후, 그 나머지를 왼쪽의 변수에 대입하는 연산자.


2.7. 증감 연산자 (Increment & Decrement Operator)

  • ++a : 변수의 값을 1 증가시킨 후에 해당 변수를 사용하는 연산자.
  • a++ : 변수를 사용한 후에 변수의 값을 1증가시키는 연산자.
  • --a : 변수의 값을 1 감소시킨 후에 해당 변수를 사용하는 연산자.
  • a-- : 변수를 사용한 후에 변수의 값을 1감소시키는 연산자.


✱ 연산자 종류 ( Tip. 산시관논비 대증 )
술 연산자 / 프트 연산자 / 계 연산자 / 리 연산자 / 트 연산자 / 입 연산자 / 감 연산자



3. 명령문

3.1. 조건문

3.1.1. if문

  • 조건이 참인지 거짓인지에 따라 경로를 선택하는 명령문.
  • C, C++, JAVA if문 형식
    if(조건문){
      명령문;
    }else if(조건문){
      명령문;
    }else {
      명령문;
    }
    
    • C if문 예제
      if(score >= 90){
        print("A");
      }else if(score >= 80){
        print("B");
      }else{
        print("F");
      }
      
    • C++ if문 예제
      if(score >= 90){
        std::cout << "A";
      }else if(score >= 80){
        std::cout << "B";
      }else{
        std::cout << "F";
      }
      
    • JAVA if문 예제
      if(score >= 90){
        System.out.print("A");
      }else if(score >= 80){
        System.out.print("B");
      }else{
        System.out.print("F");
      }
      
  • 파이썬 if문 형식
    if 조건문 : 
      명령문
    elif 조건문 : 
      명령문
    else :
      명령문
    
    • 파이썬 if문 예제
      if score >= 90 : 
        print("A")
      elif score >= 80 : 
        print("B")
      else :
        print("F")
      

3.1.2. switch문

  • 조건에 따라 여러개의 선택 경로중 하나를 취하고자 할때 사용하는 명령어.
  • 파이썬에는 switch문이 존재하지 않음.
  • switch문에서는 조건에 해당하는 case로 이동, case가 종료되었을때 break가 있으면 switch문을 빠져 나온다.
  • break가 존재하지 않을 경우 break를 만날때까지 다른 case 체크하여 실행.
  • C, C++, JAVA switch문 형식
    switch(조건문){
      case 조건값 :
        실행내역; 
        break;
      defaule:
        실행내역;
    }
    
    • C switch문 예제
      switch(score/10){
      case 10 : 
        print("A");  //생략해도 같은 결과
        break;  //생략해도 같은 결과
      case 9 : 
        print("A");
        break;
      case 8 : 
        print("B");
        break;
      default :
        print("F");
      }
      
    • C++ switch문 예제
      switch(score/10){
      case 10 : 
        std::cout << "A";  //생략해도 같은 결과
        break;  //생략해도 같은 결과
      case 9 : 
        std::cout << "A";
        break;
      case 8 : 
        std::cout << "B";
        break;
      default :
        std::cout << "F";
      }
      
    • JAVA switch문 예제
      switch(score/10){
      case 10 : 
        System.out.print("A");  //생략해도 같은 결과
        break;  //생략해도 같은 결과
      case 9 : 
        System.out.print("A");
        break;
      case 8 : 
        System.out.print("B");
        break;
      default :
        System.out.print("F");
      }
      


3.2. 반복문

  • 반복문 종류
    • while문 : 시작과 종료 조건을 지정하여 참인 동안에는 해당 문장을 반복해서 실행하는 명령문.
    • for문 : 초깃값, 최종값, 증감 값을 지정하여 반복을 실행하는 명령문.

3.2.1. while문

  • 조건이 참인 동안에 해당 분기를 반복해서 실행하는 명령문.
  • C, C++, JAVA while문 형식
    while(조건문){
      명령문;
    }
    
    • C, C++, JAVA while문 예제
      while( i < 100){
        sum = sum + a[i];
        i++;
      }
      
  • 파이썬 while문 형식
    while 조건문 : 
      명령문
    
    • 파이썬 while문 예제
      while i < 100 : 
        sum = sum + a[i]
        i=i+1
      

3.2.2. for문

  • 초깃값, 최종값, 증감 값을 지정하여 반복하는 명령.
  • C, C++, JAVA for문 형식
    for(초깃값; 최종값; 증감값){
      명령문;
    }
    
    • C, C++, JAVA for문 예제
      for( i=0; i < 100; i++ ){
        sum = sum + a[i];
      }
      
  • 파이썬 for문 형식
    # range에 (시작값)과 (끝값+1)로 정의할 경우 (끝값)-(시작값) 만큼 반복
    for 변수 in range (시작값, 끝값+1)
      명령문
    # range에 (반복횟수)를 정의한 경우 0부터 (반복횟수-1)까지 변수가 1씩 증가
    for 변수 in range (반복횟수)
      명령문
    
    • 파이썬 for문 예제
      # i라는 변수는 0부터 99까지 1씩 증가하여 100번 반복
      for i in range (0, 100) :
        sum = sum + a[i]
      # i라는 변수는 0부터 99까지 1씩 증가하여 100번 반복
      for i in range (100) :
        sum = sum + a[i]
      


3.3. 루프 제어 명령어

  • 반복문에서 무한루프를 방지하기 위해 break와 continue 명령어를 사용.
  • C, C++, 자바, 파이썬 모두 break, continue 명령 사용 가능 & 기능 동일.
  • break : 반복문을 중지하도록 하는 명령어.
  • continue : 다음 반복으로 넘어갈 수 있도록 하는 명령어

✱ 무한루프(Infinite Loop) : 프로그램에서 프로그램이 끝없이 동작하는 것으로, 반복문에 종료 조건이 없거나, 종료 조건과 만날 수 없을때 생긴다.

3.3.1. break문

  • 반복문이나 switch문을 중간에 탈출하기 위해 사용하는 명령어.
  • C++에서 break 사용 예시
    # i가 7일때 반복문 탈출 예시
    i = 0;              //초기값 0
    while ( i < 10 ) {    //반복문은 i가 10 미만일 경우 수행
      i++;              //i 1 증가
      if( i == 7 ) break;  //i가 7일 경우 break(반복문탈출)
      std:cout << i;  //i 값을 출력 
    }
    # 출력 결과 :  123456
    

3.3.2. continue문

  • 반복문에서 다음 반복으로 넘어갈 수 있도록 하는 명령어.
  • C++에서 continue문 사용 예시
    # i가 7일때 반복문 탈출 예시
    i = 0;              //초기값 0
    while ( i < 10 ) {    //반복문은 i가 10 미만일 경우 수행
      i++;            //i 1 증가
      if( i == 7 ) continue;  //i가 7일 경우 continue(다음반복)
      std:cout << i;  //i 값을 출력 
    }
    # 출력 결과 :  1234568910
    



4. 사용자 정의 자료형 활용

4.1. 사용자 정의 자료형의 개념

  • 사용자 정의 자료형은 사용자가 상황에 맞게 기존 자료형들을 조합해서 만드는 자료형이다.
  • 종류 : 열거체 / 구조체 / 공용체

4.1.1. 열거체

  • 열거체(Enumeration) 개념
    • 열거체는 서로 연관된 정수형 상수들의 집합이다.
    • 정수형 상수에 이름을 붙여서 코드를 이해하기 쉽게 해준다.
    • 멤버에 초깃값을 설정하지 않으면 0부터 차례대로 할당 된다.
  • 열거체 형식
    # C, C++, 자바, 파이썬에서 사용하는 enum
    enum 열거체명 {
        멤버1.
        멤버2,
        ...
    }
    
  • 열거체 예제
    # C, C++에서 enum 예시
    enum Week {
        Sunday,     //Sumday는 초깃값이 설정되지 않아 0로 설정
        Monday,     //Monday는 1로 설정
        Tuesday = 5,  //Tuesday는 5를 대입하여 5로 설정
        Wednesday     //Wednesday는 6으로 설정
    }
    void main() {
        enum Week week;   //enum Week라는 타입의 week 변수 선언
        week = Sunday;    //week 변수에 Sunday의 값인 0을 대입
    }
    

4.1.3. 구조체

  • 구조체(Structure) 개념
    • 사용자가 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의자료형.
    • 자바, 파이썬에서는 지원하지 않는다(class를 이용하여 struct기능을 구현 할 수 있음)
  • C, C++ 구조체 형식
    struct 구조체명 {
        자료형 변수명1;
        자료형 변수명2;
    }
    
  • C, C++ 구조체 예제
    struct Student {      //Student라는 이름의 구조체 타입을 정의
        char gender;    //성별을 나타내는 char형 변수
        int age;        //나이를 나타내는 int형 변수
        int school_num; //학번을 나타내는 int형 변수
    }
    void main() {
        struct Student s;   //struct Student 라는 타입의 s라는 이름의 변수 선언
        s.gender = 'M';     //구조체 변수 s에 포함된 gender 변수에 값 대입
        s.age = 24;         //구조체 변수 s에 포함된 age 변수에 값 대입
        s.school_num = 20200001;  //구조체 변수 s에 포함된 school_num 변수에 값 대입
    }
    

4.1.3. 공용체

  • 공용체(Union) 개념
    • 모든 멤버변수가 하나의 메모리 공간을 공유하는 사용자 정의 자료형.
    • 자바, 파이썬에서는 지원하지 않는다(class를 이용하여 union 기능을 구현할 수 있음)
  • C, C++ 공용체 형식
    union 고용체명 {
        자료형 변수명1;
        자료형 변수명2;
    }
    
  • C, C++ 공용체 예제
    union A {      //A라는 이름의 공용체 타입을 정의
        char c;    //c라는 이름의 char형 변수(1바이트라고 가정)
        int i;        //i라는 이름의 int형 변수(4바이트라고 가정)
    }
    void main() {
        union A a;   //union A 라는 타입의 a라는 이름의 변수 선언
        a.c = 'M';     //공용체 변수 a에 포함된 c 변수에 값 대입
        a.i = 24;         //공용체 변수 a에 포함된 i 변수에 값 대입
    }
    

✱ 구조체와 공용체 차이
구조체는 각 변수가 다른 메모리에 할당되어 있고, 공용체는 모든 변수가 같은 메모리에 할당되어 있다.
struct union
struct A {
   char c;   //1바이트라고 가정
   int i;       //4바이트라고 가정
};
union {
   char c;   //1바이트라고 가정
   int i;       //4바이트라고 가정
};
- c, i는 다른 메모리 공간에 존재하므로 총 5바이트
- c값이 바뀌어도 i값에 영향 없음
- i값이 바뀌어도 c값에 영향 없음
- c, i는 같은 메모리 공간에 존재하므로 가장 큰 변수인 i와 동일한 4바이트
- c값이 바뀌면 i값도 변경됨
- i값이 바뀌면 c값도 변경됨

4.1.4. 사용자 정의 함수

  • 사용자 정의 함수(User-Defined Function) 개념
    • 사용자가 직접 새로운 함수를 정의하여 사용하는 방법.
    • DB의 사용자 정의 함수 개념과 유사.
  • C, C++, 자바에서 사용하는 사용자 정의 함수 형식
    반환_데이터_타입 함수명(데이터_타입 변수명, ...){
      명령어;
      return 반환값;
    }
    
  • 파이썬에서 사용하는 사용자 정의 함수 형식
    def 함수명 (변수명, ... ) : 
      명렁어
      return 반환값
    
  • C, C++, 자바에서 사용하는 사용자 정의 함수 예제
    //반환할 데이터 타입은 char형, 함수명은 isMultipleOffThree, 입력 데이터는 int형/변수명 num
    //return 키워드를 만나면 함수가 종료되면서 해당 값을 함수를 호출했던 부분으로 반환
    char isMultipleOffThree(int num){     
      if(num % 3 == 0){      //3으로 나누어 떨어지는 경우 
        return 'Y';
      }else{
        return 'N';
      }
    }
    
  • 파이썬에서 사용하는 사용자 정의 함수 에제
    #함수명은 isMultipleOffThree, 입력데이터의 변수명 num
    #return 키워드를 만나면 함수가 종료되면서 해당 값을 함수를 호출했던 부분으로 반환
    def isMultipleOffThree (num) : 
      if num % 3 == 0 :      //3으로 나누어 떨어지는 경우
        return 'Y'
      else : 
        return 'N'
    



5. 추상화와 상속

5.1. 추상화

  • 추상화는 세부 사항은 배제하고 중요한 부분을 중심으로 간략화 하는 기법.
  • 추상화 종류 ( Tip. 기자제 )
    • 능 추상화 : 입력 자료를 출력 자료로 변환하는 과정을 추상화 하는 방법.
    • 료 추상화 : 자료와 자료에 적용할 수 있는 연산을 함께 정의하는 방법.
    • 어 추상화 : 외부 이벤트에 대한 반응을 추상화 하는 방법.


5.2. 상속

  • 상속은 상위 수준 그룹의 모든 특성을 하위 수준 그룹이 이어받아 재사용 또는 확장하는 기법.
  • 상속은 단일 상속과 다중 상속이 있으며, 상위 수준의 그룹이 하나만 존재할 때 이를 단일 상속이라고 부른다.


5.3. 구체화

  • 구체화란 하위 수준 그룹이 상위 수준 그룹의 추상적인 부분을 구체화하는 기법.






  • 정보처리기사 필기 합격 후 실기대비 정리 및 책없이 간단히 보기위해 작성하였습니다.
  • 2020년 수제비 정보처리기사 책 기반으로 정리 하였습니다.
  • 저작권 관련 문제가 있다면 hojunbbaek@gmail.com 으로 메일 주시면 바로 삭제 조치 하도록 하겠습니다.