문자 (프로그래밍)
문자(文字)는 컴퓨터와 기계 기반 전기통신 용어로, 자연어 기록 형태의 알파벳이나 음절 문자와 같은 상징 따위와 일치하는 정보의 단위다.[1]
목차
개요
컴퓨터에게 명령을 내릴 수 있도록 도와주는 도구를 말한다.[2]
등장배경
수학에서 등장하였으며 쿠르트 괴델은 불완전성 정리를 증명하는 과정중에 알고리즘을 추상화시킨 원시 재귀 함수(primitive recursive function) 개념을 만들고, 이를 이용하여 증명에 성공하였는데, 수학적으로 본다면 이것이 최초의 프로그래밍 언어라 볼 수 있다.(굳이 따지자면 함수형 언어라 할 수 있다.) 그리고, 몇년 후에 컴퓨터의 아버지라 불리는 튜링은 불완전성 정리를 보고 자신의 방식도 될것같다고 생각하며 연구를 하는데, 여기서 이 원시재귀함수와 동치인 튜링머신을 발표하고 이 튜링머신을 이용하여 불완전성 정리를 다시 한 번 증명해보인다. 이는 어떤 체계를 통해서 이 체계의 모순성을 증명할 수 있는 방법은 없다와 동치이다.
- 계산가능성이론(Computability Theory)이라는 수학의 분야가 생기면서 기존의 원시재귀함수를 확장한 람다 미적분(Lambda calculus)과 무제한 등록기(Unlimited register machine : URM), 프로그래밍(While-programming), SKI 등등 알고리즘을 표현하기 위한 여러가지 체계들이 등장한다.[3]
종류
다음은 프로그래밍 문자 종류이다.
변환
- %d : 10진수로 출력하는 정수형이다.
- %f : 실수형이다.
- %e : 지수형이다.
- %o : 8진수로 출력한다.
- %x : 16진수로 출력한다.
- %u : 부호없는 10진수로 출력한다.
- %g : 실수형으로 자동 출력한다.
- %p : 포인터의 주소를 출력한다.
- %c : 하나의 문자로 출력 문자형이다.
- %s : 문자열을 출력한다.[4]
널
아무것도 없음을 값으로 표현한 문자(빈 값)를 표현한 것이다.[5]
프로그래밍
프로그램(함수 등)이 자료 검색 후 해당 값을 못 찾았을 때, 메모리 할당 실패 때 등의 경우에, 넘겨주는(반환)값을 말한다.
- 유의점 : 널 문자(null)는, 공백 문자 ""(empty) 또는 " "(space, 아즈키(ASCII) 32)와는 다르게 취급한다.
- `==`과 같은 비교 연산 때, 널(null)을 공백 ""(empty)과 같은 것으로 간주하기도 한다.[5]
특수
다음은 특수기호 : 한글(영단어)을 보여주는 거다.(한글뜻이 없는것은 발음을 붙였다.)
- ' : 그레이브(Grave)
- ~ : 물결표시(Tilde)
- ! : 느낌표(Exclamation)표시(Mark)
- @ : 골뱅이(At)
- : 샾, 우물정(Number , Sharp)
- $ : 달러(Dollar)
- % : 퍼센트(Percnet)
- ^ : 캐럿(Caret)
- & : 엠퍼센드(Ampersand)
- * : 별표(Asterisk)
- - : 마이너스(Hyphen, Dash)
- _ : 밑줄(Underscore, Low dash)
- = : 이꼬르(Equals)
- " : 큰 따옴표(Quotation)
- ' : 작은 따옴표(Apostrophe)
- : 콜론(Colon)
- 세미콜론(Semicolon)
- . : 점, 마침표(Period, Dot)
- ? : 물음표(Question)
- / : 슬래쉬(Slash)
- 수직바(Vertical bar)
- \ : 백슬래쉬(Backslash)
- () : 소괄호(Parenthesis)
- {} : 중괄호(Brace)
- [] : 대괄호(Bracket)
- <> : 꺽쇠 괄호(Angle Bracket)등이 특수 문자다.[6]
집합
비주얼 스튜디오(Visual Studio)에서는 프로젝트 속성 메뉴에 문자 집합이란 항목이 있다.옵션은 크게 세가지 설정 안함(Not Set), 멀티바이트 문자 집합 사용(Use Multi-Byte Character Set), 유니코드 문자 집합 사용(Use Unicode Character Set)가 있다.컴퓨터에서는 데이터를 처리하기 위해 2진법을 쓴다. 즉 컴퓨터에서는 숫자를 처리할 수는 있지만 문자는 기본적으로 처리가 불가능 해서 문자를 처리하기 위해 문자 집합(Character Set) 이라는 것을 사용한다. 이 중에서 대표 코드는 아스키 코드이고 아스키 코드는 이름 그대로 미국 표준 문자 집합이기 때문에 해당 문자 집합에는 전 세계 언어를 표현하기 위한 약속이 되어 있지 않다. 그리하여 만들어진 문자 집합이 바로 유니코드(UNICODE)이다. 유니코드는 전 세계 모든 문자를 컴퓨터에서 일관되게 표현하고 처리하기 위한 국제 표준이다.
- 아스키 코드 : 문자 하나를 표현하기 위해 메모리 1byte를 필요한다.
- 유니코드 : 문자 하나를 표현하기 위해 최소 2byte를 필요한다.
이러한 문자 집합들은 크게 3가지로 나눈다.[7]
SBCS
싱글 바이트 케릭터 집합(SBCS : Single Byte Character Set) : 문자 하나를 표현 하는데 있어 1바이트를 사용하는 방식이고 대표적인 문자 집합은 아스키코드이다.[7]
MBCS
멀티 바이트 케릭터 집합(MBCS : Multi Byte Character Set) : 문자 하나를 표현 하는데 있어 다양한 바이트 수를 사용하는 방식이고 대표적인 문자 집합은 유니코드이다.[7]
WBCS
측면 바이트 케릭터 집합(WBCS : Wide Byte Character Set) : 문자 하나를 표현 하는데 있어 2바이트를 사용하는 방식이고 아스키코드와 유니코드를 혼용하여 사용할 수 있는 방식인 거다.[7]
구분
어떤 문자 인지 구분하는 함수가 많이 쓰이고 있다.
- int isalpha(int c) : 주어진 문자가 알파벳 인지 검사한다.(A-Z, a-z)
- int isalnum(int c) : 주어진 문자가 알파벳 또는 숫자인지 검사한다.(A-Z, a-z. 0-9)
- int isdigit(int c) : 주어진 문자가 숫자인지 검사한다.(0-9)
- int isxdigit(int c) : 주어진 문자가 16 진수인지를 검사한다.(0-9, a-f, A-F)
- int iscntrl(int c) : 제어(control)문자인지를 검사한다.
- int isspace(int c) : FF('\f'), NL('\n'), CR('\r'), HT('\t'), VT('\v'), 공백문자(' ')등을 검사한다.
- int ispunct(int c) : 알파벳문자 혹은 공백문자가 아닌 출력가능한 문자인지 확인한다.
- int isgraph(int c) : 공백문자를 제외한 출력가능 문자인지 검사한다.
- int isprint(int c) : 공백문자를 포함한 출력가능한 문자인지 검사한다.
- int islower(int c) : 소문자인지 검사한다. a-z
- int isupper(int c) : 대문자인지 검사한다. A-Z
- int tolower(int c) : 입력된 문자를 대문자로 변경한다.
- int toupper(int c) : 입력된 문자를 소문자로 변경한다.
단.같은 종류일 경우 0이 아닌 값을 같은 종류의 문자가 아닐 경우 0을 반환한다.[8]
참고자료
- 〈프로그래밍 언어〉, 《위키백과》
- 〈프로그래밍 언어〉, 《네이버 지식백과》
- 〈null, NULL, Null 널 문자〉, 《정보통신기술용어해설》
- inyong_pang, 〈(Programming) 특수 문자 용어 정리〉, 《벨로그》, 2020-08-03
- 공간사랑, 〈문자의 종류를 알아내는 C 언어 함수들〉, 《업넷》, 2011-03-09
- jrich, 〈Visual Studio 문자 집합 정리〉, 《티스토리》, 2015-03-04
같이보기
- ↑ 〈문자 (컴퓨팅)〉, 《위키백과》
- ↑ 〈프로그래밍 언어〉, 《네이버 지식백과》
- ↑ 〈프로그래밍 언어〉, 《나무위키》
- ↑ 프로그래밍 블로그, 〈C 언어 변환문자 의미 자료형 (%d,%f,%e,%o,%x,%u,%g,%p,%c,%s)〉, 《티스토리》, 2008-05-21
- ↑ 5.0 5.1 〈null, NULL, Null 널 문자〉, 《정보통신기술용어해설》
- ↑ inyong_pang, 〈(Programming) 특수 문자 용어 정리〉, 《벨로그》, 2020-08-03
- ↑ 7.0 7.1 7.2 7.3 jrich, 〈Visual Studio 문자 집합 정리〉, 《티스토리》, 2015-03-04
- ↑ 공간사랑, 〈문자의 종류를 알아내는 C 언어 함수들〉, 《업넷》, 2011-03-09