본문 바로가기

정보처리기사 실기/02. 응용SW엔지니어링

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

 

* 변수

 

1) 변수의 개념

- 변수는 어떤 값을 저장하기 위한 이름을 가진 공간

- 변수는 데이터 타입에 따른 공간을 할당하는 선언과 값을 세팅하는 할당을 통해 사용

int a; // 선언
a = 30; // 할당

2) 변수 명명 규칙

- 컴파일러 또는 인터프리터의 코드 해석을 위해 모든 문자, 숫자를 변수로 사용할 수는 없음

  첫 자리에 숫자 사용X, 변수 이름 중간 공백 안됨, 이미 사용되고 있는 예약어는 사용 X

- 일반적인 변수 명명방법

  프로그램 가독성 향상과 유지보수성 증가를 위해서 표준화 팀에서 변수 명명 규칙을 제시함

- 변수명명법

  파스칼 케이싱 : 클래스, 열거형, 이벤트, 메서드 등의 이름을 만들 때 대문자로 시작하는 변수명 사용

                               복합어일 경우 중간에 시작하는 새로운 단어는 대문자로 함

  카멜 케이싱 : 첫번째 문자는 소문자로 시작하고 복합어일 경우 파스칼 케이싱과 동일하게 적용

  GNU naming convention (snake) :  모두 소문자를 사용하고 복합어 사이에 _를 사용하여 연결

  헝가리안 표기법 : 첫글자 g는 전역변수, m은 멤버 변수를 의미

                                   n과 i는 자연수, i는 주로 인덱스로 사용, n은 주로 카운트에 사용

  GNU naming convetion : 거의 모든 명명법에서 상수를 표기하는 방법은 거의 동일

                                                     모든 문자를 대문자로 사용하는 형태의 gnu naming convention 사용

 

 

 

* 연산자

연산자는 프로그램 실행을 위해 연산을 표현하는 도구

산술연산자, 시프트연산자 관계연산자, 논리연산자가 있음

 

1) 산술연산자

+, -, *, /,%

 

2) 시프트연산자 : 대상을 비트로 변환하여 비트를 이동시키는 연산자

<< : 왼쪽 값을 오른쪽 값만큼 비트 이동

        1010<<2 = 1000

>> : 왼쪽 값에 오른쪽 값만큼 부호 비트를 채우면서 오른쪽으로 시프트 

        1010>>2 = 1110

>>> : 왼쪽 값에 오른쪽 값만큼 0으로 비트를 채우면서 오른쪽으로 시프트 시킨다

           1010>>>2 = 0010

 

3) 관계연산자 : 두 피 연산자의 크기 및 동일 여부를 비교하여 불린 값을 반환하는 연산자

>,<.>=,<=,==,!=

 

4) 논리연산자 : 논리 게이트처럼 두 피연산자에 대해 and or not 연산

&&, ||, !

 

5) 비트연산자 : 두 값을 비트로 변환하여 and or xor not 연산 수행

&,|,^,~

 

6) 증감연산자 : 피연산자가 하나인 단항 연산자, 1씩 증가 감소

(전위)++n, --n, (후위)n++, n--

 

7) 복합대입연산자

동일한 변수명이 대입 연산자의 좌우에 나타날 때 =과 같이 단순히 피 연산자에 값을 대입하는 연산자

a+=b (a= a+b)

 

8) 삼항연산자 : 조건식의 결과에 따라 대입의 결과가 달라지는 경우 사용하는 연산자

(조건식)? "true일 때 반환값" : "false일 때 반환값"

 

9) 연산자 우선순위 : 

괄호 -> 부정 증감산술연산자 -> 곱셈 나눗셈 -> 덧셈 뺄셈 -> 시프트 -> 관계연산자 -> 논리연산자 -> 삼항 연산자 -> 대입연산자

 

 

 

* 사용자 정의 자료형

기존에 존재하는 자료형에 새로운 이름을 부여하거나 여러 자료형을 묶어 새로운 자료형으로 사용하는 것

c언어에서는 typedef를 통한 별칭이나 구조체, 객체 지향 언어에서는 주로 클래스

 

1) c 언어

긴 자료형을 짧게 축약하거나 구조체를 만들 때 typedef라는 키워드를 이용해서 사용자 정의 자료형을 선언

- 기존의 자료형에 새로운 이름 부여

   typedef <자료형> <선언명>

typedef <int> INT
INT a = 0;

- 구조체 

  여러 데이터 타입을 하나의 타입으로 묶은 자료형

struct node {
	int data;
    node* next;
}

 

2) 객체지향 : 클래스

class Node {
	int data;
    Node* next;
}
class linkedlist {
	Node* head;
    Node* tail;
    int size;
public:
	linkedlist() : head(nullptr), tail(nullptr), size(0) {};
    ~linkedlist();
   	insert(int data);
    delete(int data);
    search(int data);
}