AI/컴퓨터C프로그래밍

컴퓨터C프로그래밍 03 C 프로그래밍 기초

Ayel 2025. 10. 6. 18:48

 

 

예약어와 식별자

 

 

1. 예약어

 

1) 예약어: 문법적으로 고유한 의미를 갖는 예약된 단어

- 이 단어들은 다른 용도(변수 등)로 사용해서는 안 됨

- 키워드(keyword)라고도 부름

- C에서 사용되는 기본 키워드로 문법적인 고유한 의미가 있다

auto do goto signed unsigned
break double if sizeof void
case else int static volatile
char enum long struct while
const float return typedef  
default for short union  

: 프로그래밍 언어를 학습한다는 것은 이러한 예약어를 사용한다는 뜻

 

 

2. 식별자(identifiers)

 

1) 식별자

: 프로그래머가 스스로 선정(정의)해 사용하는 단어

- 변수명, 함수명 등으로 사용

 

1) 식별자 제한 조건

- 대소문자 모두 구별

- 변수 Count, count, COUNT는 모두 다른 변수이다

- 키워드는 식별자로 이용 불가능

- 키워드와 비교해 철자, 대문자, 소문자 등 무엇이라도 달라야 함

 

2) 식별자 구성

- 영문자(대소문자 알파벳), 숫자(0~9), 밑줄(_)로 구성

- 첫글자는 숫자가 될 수 없다

- 프로그램 내부의 영역에서 서로 구별되어야 함: 소스파일, 함수 또는 블록

- 식별자의 중간에 공백(space)문자 삽입 불가

 

 

3. 문장과 블록

 

1) 문장(statement)

- 프로그래밍 언어에서 컴퓨터에게 명령을 내리는 최소 단위

- 문장은 마지막에 세미콜론;으로 종료

 

2) 블록(block)

- 여러 개의 문장을 묶으면 블록(block)이 됨

- 중괄호(curly brace)로 열고 닫음 {...}

 

3) 들여쓰기(indentation)

- 블록 내부에서 문장들을 탭(tab)키로 한 스텝만큼 오른쪽으로 들여 쓰는 소스 작성

 

int main(void)
{
	puts("puts()는 한 줄에 문자열 출력함수"); // 한 줄 출력을 자동으로
    ...
    printf("printf() 함수 호출");
    ...
    puts("자바"); puts("C#"); // 프로그램 이해에 도움이 된다면 한 줄에 여러 문장 입력도 가능
    
    return 0;
}

 

=> 블록을 시작하는 중괄호 { 다음에 탭 정도만큼 오른쪽으로 들여 쓴다

=> 블록 종료 표시인 중괄호 }는 다시 원위치에 작성

 

 

4. 주석

 

1) 주석: 일반 문장과 달리 프로그램 내용에 영향을 미치지 않는 설명문

- 한 줄 주석 //

- 블록 주석 /*...*/

- 비주얼 스튜디오에서 주석은 모두 초록색으로 표시

 

 

5. 실습 예제

 

1) 실습

: 키워드와 식별자, 주석 등을 이해하기 위한 프로젝트

- 솔루션: ch03

- 프로젝트: Prj01

- 소스파일: 01comments.c

 

2) 소스

 

 

자료형과 분류

 

 

1. 자료형(data type)

 

- 비슷한 자료의 묶음 표현 ex. 포유류, 어류, 양서류

- 프로그래밍 언어에서 자료를 식별하는 종류

 

 

2. 분류

 

- 기본형(basic types) ex. 정수형, 실수형, 문자형, void

- 유도형(derived types)

- 사용자 정의형(user defined types)

 

 

3. 자료형 키워드

 

자료형 기본 자료형 정수형 short
int
long
실수형 float
double
문자형 char
무치형 void
유도 자료형    
사용자 정의 자료형    

 

 

변수와 자료형

 

 

1. 변수 선언

 

1) 컴파일러에게 알림

- 프로그램에서 사용할 저장 공간인 변수를 알리는 역할

 

2) 프로그래머 자신에게 알림

- 선언한 변수를 사용하겠다는 약속의 의미

 

3) 주의점

- 변수는 관습적으로 소문자 사용

- 하나의 문장으로 세미콜론으로 종료

- 변수 선언 이후 지정한 변수이름으로 값을 저장하거나 값을 참조

 

4) 변수 선언

- 컴파일러는 실제 변수선언 문장에 맞는 저장 영역을 메모리에 확보

- 함수에서 변수의 이름은 반드시 서로 구별

 

5) 변수에 값 대입

: 메모리에 int 자료형을 저장할 수 있는 공간을 age라는 이름으로 확보

 

: 이름이 age인 저장공간에 자료값 정수 20을 저장하는 문장

* 대입연산자인 =는 오른쪽 값을 왼쪽 변수에 '대입하라'라는 '<-'의 의미가 있다

 

=> 한 문장으로 가능

=> int age =20;

 

 

2. 정수형 int

 

1) int

- 기본 키워드

- 10진수 표현: 365, 1024

- 8진수 표현: 030, 16진수 표현: 0xF3 (0~9, a~9까지 사용)

 

2) short / long

- 정수형 int에서 파생된 자료형

 

3) signed / unsigned

- signed 자료형: 음수, 0, 양수를 모두 지원

- 사용하지 않으면 signed 의미

- unsighed: 0과 양수만을 지원

 

4) 정수형 int로 만들 수 있는 자료형

- int > [signed] int / unsigned int

- short -> [signed] short [int] / unsigned short [int]

- long -> [signed] long [int] / unsigned long [int]

 

 

3. 부동소수형 변수의 선언과 활용

 

1) 키워드: float, double, long double

- double형은 float형보다 표현범위가 같거나 보다 정확

- long double형은 double형보다 표현범위가 같거나 보다 정확

 

2) 비주얼 스튜디오에서의 저장공간 크기

- float: 4바이트

- double: 8바이트

- long double: 8바이트

 

3) 실습예제

- f는 소수점 6자리 출력

 

 

4. 문자형 자료형 char

 

- char, signed char, unsigned char

- 저장공간 크기는 모두 1바이트

- 키워드 signed와 unsigned를 함께 사용 가능

 

ex. 문자형 char c1 = 'a';

char c1 = 'a'; 0 1 1 0 0 0 0 1
1 1 1 1 1 1 1 1바이트

: 문자 'a'의 코드값인 2진수 01100001이 저장됨

 

 

상수(constant)

 

 

1. 상수의 종류

 

1) 리터럴 상수(literal constant)

: 이름 없이 있는 그대로 표현한 자료값

 

2) 심볼릭 상수(symbolic constant)

: 이름이 있으나 정해진 하나의 값만으로 사용되는 자료값

- const 상수(const constant)

- 매크로 상수(macro constant)

- 열거형 상수(enumeration constant)

 

구분 표현방법 설명
리터럴 상수
(이름이 없는 상수)
정수형
실수형
문자
문자열 상수
다양한 상수를 있는 그대로 기술 32, 025, 0xf3, 10u, 100L, 30LL, 3.2F, 3.15E3
'A', '\n', '\0', '\24', '\x2f'
"C 언어", "프로그래밍 언어\n"
심볼릭 상수
(이름이 있는 상수)
const 상수 키워드 const를 이용한 변수 선언과 같으며, 수정할 수 없는 변수 이름으로 상수 정의 const double PI = 3.141592;
매크로 상수 전처리기 명령어 #define으로 다양한 형태를 정의 #define PI 3.141592
열거형 상수 정수 상수 목록 정의 enum bool {FALSE, TRUE};

 

 

2. 열거형 상수

 

1) 키워드 enum

 

2) 정수형 상수 목록 집합을 정의하는 자료형

- 목록 첫 상수의 기본값: 0

-> 다음부터 1씩 증가하는 방식으로 상수값이 자동으로 부여

- 상수값을 특정한 값으로 지정 가능 ex. TRI=3

- 따로 지정되지 않은 첫 번째 상수는 0

- 중간 상수는 앞의 상수보다 1씩 증가한 상수값으로 정의

 

3) 예시1

enum SHAPE {POINT, LINE, TRI=3, RECT, OCTA=8, CIRCLE};

- 중괄호 활용

- 문장이라 세미콜론; 사용

POINT 0 LINE 1 TRI 3 RECT 4 OCTA 8 CIRCLE 9

- 맨 왼쪽 POINT는 아무것도 쓰지 않은 상수이므로 0이 됨

- TRI는 3으로 정의했으므로 3이 됨

 

4) 예제2

 

 

전처리

 

 

1. 전처리

 

1) 전처리기의 역할

- 컴파일(compile) 전, 전처리기(processor)의 전처리(preprocess) 과정 필요

- C 언어에만 있는 독특한 방식

 

2) 컴파일 이전에 하는 작업

- 전처리 이후 전처리기가 생성한 소스를 컴파일

- 전처리 지시자인 #include로 헤더파일을 삽입

- #define에 의해 정의된 상수를 대체

 

3) 전처리 지시자(preprocess directivies)

- 전처리 과정에서 처리되는 문장

- #으로 시작

 

 

2. 전처리 지시자 #include

 

1) #include <헤더파일>

: 헤더파일 삽입

- 대표적인 헤더파일: <stdio.h>

- puts(), printf(), scanf(), putchar(), getchar() 등과 같은 입출력 함수의 정보 정의

 

2) 표준 C 라이브러리

: 개발환경을 설치하면 이러한 시스템 헤더파일이 특정 폴더에 설치되고

필요한 경우 편집기로 열어볼 수 있다

 

3) 주요 헤더파일

헤더파일 파일 이름 파일 내용
stdio.h STanDard Input Output(표준 입출력) 표준 입출력 함수와 상수
stdlib.h STanDard LIBrary(표준 함수) 주요 메모리 할당 함수와 상수
math.h math 수학 관련 함수와 상수
string.h string 문자열 관련 함수와 상수
time.h time 시간 관련 함수와 상수
ctype.h Character TYPE 문자 관련 함수와 상수
limits.h limits 정수 상수 등 여러 상수
float.h float 부동소수에 관련된 각종 상수

=> #include <stdio.h>를 삽입하면 printf() 함수를 사용할 수 있다

 

 

3. 전처리 지시자 #define

 

1) 매크로 상수(macro constant)를 정의하는 지시자

- 전처리 지시자: #define

- 심볼릭 상수는 주로 대문자 이름으로 정의

 

2) 기능

- 소스에서 정의된 매크로 상수를 모두 #define 지시자에서 정의된 문자열로 대체(replace)

- 소스가 간결하고 수정이 용이

 

 

입출력

 

 

1. 출력함수 printf() 개요

 

1) printf()

- 대표적인 표준출력 함수

- 명령 프롬프트 콘솔(console)에 다양한 변수와 상수를 출력하는 함수

- %로 시작하는 일련의 문자 및 값으로 서식을 지정

 

- printf("형식문자열", 출력목록1, 출력목록2, ...)

- 첫 번째 인자인 형식문자열(format string)

- 일반 문자, 이스케이프 문자, 형식지정자(format specification)로 구성

- %d, %s와 같이 %f로 시작하는 형식지정자는 출력하려는 값의 위치에 배치

 

2) 출력함수 printf()의 다양한 형식지정자

- 형식지정자는 출력 내용의 자료형에 따라 %로 시작

- %d, %i, %c, %c

- 형식지정자 형식에 맞게 콘솔로 출력할 값이 표시

- 형식지정자는 출력값의 목록과 순서대로 서로 일치해야 함

ex. printf("%d %i %f %s \n", 3, 16, 3.4, "hello");

 

3) 예제

- %8..2f: 전체 width를 8로 하고 소수점 둘째자리까지 출력

- %10.4f: 전체 width를 10으로 하고 소수 넷째자리까지 출력

 

 

2. 입력함수 scanf()

 

1) scanf()

- 대표적인 표준입력 함수

- %d, %c, %lf 등의 형식 지정자 사용

- '&변수이름'으로 사용

 

2) &변수이름

- 반드시 변수 앞에 주소를 의미하는 &를 붙임

- 입력값이 저장되는 변수의 주소 위치를 찾는다는 의미

ex.

scanf("%d, %f, %lf", &point, &value, &data);

 

 

3. 실습예제

 

- scanf() 함수는 입력창에서 값을 입력한 후 반드시 ENTER키를 눌러야 프로그램이 진행

- 두 개 이상의 값을 입력받을 때는 스페이스 또는 ENTER키로 구분해 입력한 후 ENTER키를 눌러야 프로그램 진행

 

 

4. 실수와 다양한 자료형의 입력

 

1) 제어문자 %f, %lf, %c

- printf()에서 실수의 출력을 위한 형식 지정자

- %f와 %lf를 모두 사용

 

2) 입력 scanf()

- 저장될 자료형이 float이면 %f 사용

- double이면 %lf로 구분해서 사용

- int(정수): %d

- char(문자): %c

- 문자열: %s

 

 


 

 

* 변수(variables)는 메모리의 임시저장소이다

* 변수의 값 범주를 대표하는 자료형(data types)

* 전처리(preprocessor)는 C 언어만의 독특한 구조이다

* printf()와 scanf()는 C 언어의 대표적인 입출력 함수이다