본문 바로가기
홀로의 책방/코딩을 공부하자(C언어)

chapter1. 프로그램기초

by 알 수 없는 사용자 2020. 1. 5.

01

1.프로그램의 기초

 솔루션과 프로젝트. 솔루션은 여러개의 프로젝트들이 묶여있다. 그럼 프로젝트는 소스와 관련파일이 묶여있는 단위인데 이 프로젝트에는 함수 main()이 포함되어있는 소스는 하나 뿐이다.

 

여기서 나오는 함수(function)는 뭘까? 수학의 함수와 같다. 입력(input)을 받아 기능을 수행 후 결과(output)을 반환(return)하는 프로그램 단위다.

 

c언어 프로그램은 함수로 구성되는 프로그램이고 이중에서도, 함수main은 무조건 있어야하는 함수이다. 바로 프로그램을 시작하는 구동(driver)함수이기 때문

 

함수들을 적으면 컴퓨터에게 명령을 내릴 수 있다. 이 명령을 내리는최소단위를 문장 이라고 한다.

문장은 세미콜론 ;으로 종료된다. 그리고 프로그램에 영향을 끼치지않는 문자들을 주석이라 한다.

이 주석은 블록 주석( /* ... */ )과 한줄 주석( // )이 있다. 

 

{ } 중괄호를 필요로 하는 함수들이 있는데 이 중괄호 내부를 블록 이라고 한다. 그리고 이 블록 내부에는 가독성을 위해 들여쓰기가 되어있다.

 

프로그램은 버그없이 실행되는것도 중요하지만, 개발자 입장에서는 문장들의 가독성도 중요하다. 적절한 줄 구분, 빈 줄 들여쓰기가 이해력을 돕는데 매우 중요하다.

01

2.키워드와 식별자

프로그래밍 언어에서 문법적으로 의미있는 단어로 사용하기위해 미리 정의해둔 단어를 키워드 또는 예약어 라고 한다.


1.auto : 기본적인 변수의 저장방식을 나타내는 키워드

2.break : for ,while, switch, do...while문을 조건 없이 마치는 명령

3.case : switch문 내에서 사용되는 명령

4.char : 가장 간단한 데이터형

5.const : 변수가 변경되지 않도록 방지하는 데이터 지정자

6.continue : for, while, switch, do...while문을 다음 반복동작으로 진행시키는 명령

7.default : case문에 일치하지 않는 경우를 처리하기 위해 switch문에서 사용되는 명령

8.do : while문과 함께 사용되는 순환명령. 순환문은 최소한 한번 실행됨.

9.double : 배정도 부동 소수형값을 저장할 수 있는 데이터형

10.else : if문이 FALSE로 평가될 때 실행되는 선택적인 문장을 나타내는 명령

11.enum :변수가 특정값만을 받아들이도록 해주는 데이터형

12.extern : 변수가 프로그램의 다른 부분에서 선언된다는 것을 알려주는 데이터 지정자

13.float : 부동 소수형 숫자값을 저장하기 위해 사용되는 데이터형

14.for : 초기화,증가,조건 부분을 가지는 순환명령

15.goto : 정의되어 있는 레이블로 이동시키는 명령

16.if : TRUE/FALSE의 결과에 따라 프로그램의 제어를 변경하는데 사용되는 명령

17.int : 정수형 값을 저장하는 데 사용되는 데이터형

18.long : int형보다 큰 정수형 값을 저장하는 데 사용되는 데이터형

19.register : 가능하다면 변수를 레지스터에 저장하도록 지정하는 저장형태 지정자

20.return : 현재의 함수를 마치고 호출한함수로 프로그램의 제어를 돌려주는 명령.

함수에서 값을 돌려주기 위해서 사용됨.

21.short : 정수형 값을 저장하는 데 사용되는 데이터형. 자주 사용되지는 않지만 대부분의

컴퓨터에서 int형과 동일한 크기를 가짐.

22.signed : 변수가 양수와 음수값을 모두 저장할 수 있다는 것을 지정하기 위해서 사용되는 지정자

23.sizeof : 항목의 크기를 바이트 단위로 알려주는 연산자

24.static :컴파일러가 변수의 값을 보존해야 한다는 것을 지정하는데 사용되는 지정자

25.struct :C에서 어떤 데이터형의 변수를 함께 결합시키는 데 사용되는 키워드

26.switch :여러 가지 조건을 통해서 프로그램의 흐름을 변경하는 데 사용되는 명령.

case문과 함께 사용됨.

27.typedef : 이미 존재하는 변수와 함수의 형태를 새로운 이름으로 변경하는 데 사용되는

지정자

28.union :여러 개의 변수가 동일한 메모리 영역을 공유하도록 해주는 데 사용되는 키워드

29.unsigned : 변수가 양수값만으르 저장할 수 있다는 것을 지정하는 데 사용되는 지정자.

30.void : 함수가 어떤 값을 돌려주지 않거나, 또는 사용되는 포인터가 범용 포인터이거나 모든 데이터형을 지적할 수 있다는 갓을 지정하는 데 사용되는 키워드

31.volatile : 변수가 변경될 수 없다는 것을 지정하는 지정자.

32.while : 지정된 조건이 TRUE로 평가되는 한 계속해서 포함된 문장을 실행하는 순환문


식별자는 프로그래머가 정의하여 사용하는 단어를 말하는데, 쉽게 말해 이름이다. 식별자는 구성규칙이 있다.

 

1.숫자는 맨 앞에 올 수 없다.

2.대소문자는 구별된다.

3.중간에 공백 문자가 들어갈 수 없다.

4.키워드는 식별자로 사용할 수 없다.

 

3.기본 출력함수

함수 printf()는 문자열 및 다양한 정보를 서식화하여 출력할 수 있다. 헤더파일 stdio.h를 삽입해야한다. 헤더 파일(header file) 또는 인클루드 파일(include file)은 컴파일러에 의해 다른 소스 파일에 자동으로 포함된 소스 코드의 파일이다

설명또한 같이 적어놨다. 특수 문자 \n이 다음 출력일 다음줄로 이동시키는 문자이다. 

역슬래쉬 대신 \를 쓰면된다. 

 

이제 실행을 시키면된다. 실행을 시키는 방법은 단축키로는 Ctrl+F5이다. 비주얼스튜디오의 메뉴칸에 디버그항목을 보면 디버깅 없이 실행이 있는데 이 과정이 바로 빌드이다. 실행을 시키면 올바른 결과가 나온다. 다양한 시도를 통해 익숙해지는게 좋다.

4.상수와 변수 

 

상수(constants or literals)란 소스에 그대로 표현할 수 있는 자료값이다.

 

정수, 실수, 문자, 문자열 상수와 같이 4부류로 나뉜다. 


정수-십진수,8진수(01, 013),16진수(0X1f, 0x1d)

실수-소수점 실수, 지수표현(2.47E3,12.82e-3)

문자-작은 따옴표로 묶은 표현, 일반문자와 특수 문자가 있다.

문자열-여러 문자를 큰따옴표로 묶은 표현들이다.


정수와 실수는 적는 방법이 다르므로 적기만하면 이 상수가 문자,정수,실수인게 구별이 되고, 정수이면 십진수인지, 8진수인지 구별이 된다.

 

중요한것은 출력하는 과정이다. printf를 통해 출력을 하게 될텐데 출력하는 과정에서 제어문자가 포함되는 제어 문자열에서 결정이 된다. 

 

printf("%C", 'A'); 를 보자.

1. %C가 제어문자열이고 C 와 c는 character을 의미하고, 문자를 출력할수있다.

2. 'A'는 작은따옴표가 문자를 묶는다고했다. 즉 A 를 뜻한다. 이 A가 앞에있는 제어문자열 %C을 통과하면서 '아 문자로 출력해야하구나'를 컴퓨터가 깨닫고 A를 출력해준다.

 

printf("%c", '\n'); 으로 확인해보자. printf는 \n을 문자로 받아들이면서 printf("\n")과 동일한결과를낸다.

 

정수도 똑같다.

printf("제어문자", 정수);의 형식을 가진다. 정수에서는 십진수,팔진수,16진수 아무거나 넣어도된다. 하지만 출력하는 과정에서 제어문자가 이 숫자를 십진수로 표현할지, 팔진수로 표현할지, 16진수로 표현할지 결정하게 된다.

 

제어문자 d는 십진수를 뜻한다. 실수에서는 f라는 제어문자는 실수를 소수점6자리까지 출력하는 제어문자이다.

예제를 보면 이해할수있다. 

 

 

댓글