2023. 3. 17. 15:03ㆍ개발하는중/c
1. C언어의 정의
프로그래밍 언어
- 사람과 컴파일러(compiler)가 이해할 수 있도록 약속된 형태의 언어
-> 기계어, 어셈블리어, c, c++, c#, java, python, kotlin 등
컴파일러
- 프로그래밍 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역해주는 번역기
어셈블러(assembler)
-> 기호로 표현된 어셈블리 코드를 기계어로 변역하는 번역기
인터프리터(interpreter)
-> 소스 프로그램을 한번에 기계어로 변환시키는 컴파일러와 달리 프로그램을 한 단계씩 기꼐 어로 해석하여 실행하는 언어처피 프로그램
c언어의 역사
- Denis Ritchie(1972년)
- unix 운영체제 구현에 사용할 목적으로 개발
-> 컴퓨터 기종간 호환성을 가진 고급이면서 하드웨어를 제어할 수 있는 새로운 언어가 필요
- 어셈블리 언어로 된 unix 운영체제가 거의 c언어로 대체
c언어의 특징
- 프로그램 이식성이 높다
- 간단한 문법표현으로 함축적인 프로그램 작성이 용이
- 저급언어 특성을 가진 고급 언어
2. 프로그램 작성 준비
프로그램 개발 단계 (일반적인 개발 단계)
프로그램 목적 정의 → 요구분석과 시스템 분석을 통하여 프로그램이 가져야 할 기능 정의
프로그램 설계 → 분석된 기능을 처리할 수 있도록 프로그램 구조를 설계
소스코드 작성 → 작성된 프로그램 설계를 기반으로 에디터를 사용하여 작성
컴파일/링크 → 소스코드를 실행 가능한 코드로 변환하고 문법 검사
프로그램 실행 → 프로그램 실행
테스트와 디버깅 → 에러를 검사하고 디버깅
유지보수 →사용중 발생되는 에러나 추가적인 변경사항을 처리
에디터(edit)와 컴파일러 필요
-에디터
-> 소스코드를 작성하여 저장할 수 있도록 도와주는 도구
- c 컴파일러
-> trubo C/C++, dev-c++, visual c++, gcc ...
c프로그램의 완성 과정
코딩 -> 컴파일 -> 링킹
- 코딩(coding) 단계
-> 주어진 문제애 대한 설계를 바탕으로 소스코드(source code)를 작성하여 소스파일(source file)을 생성하는 과정
- 컴파일(compile)
-> 소스파일이 목적파일(object file)로 변환되는 과정
- 링킹(linking)
-> 목적파일을 실행파일 (execution file)로 변환되는 과정

소스 파일 생성
코딩 후 test.c 확장자로 파일을 저장 해야 소스파일 생성된다.
소스 파일 컴파일
test.c파일을 컴파일러 로 컴파일 하면 목적파일 test.obj (기계어 형태)만든다
실행 파일의 생성(링킹 과정)
목적파일을 test.obj 링커를 통해 실행파일 test.exe 을 생성
에디터 사용법 알아보면됨
3. 프로그램의 구성
c프로그램의 기본 구조
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/* C프로그램의 구조 예 */
// 도입부
// 프로그램 전체에 적용되는 사항을 기술
#include<stdio.h>
int add<int x, int y);
// main()함수는 가정 먼저 호출되 난 함수 모든 프로그램에 반드시 존재
void main(){
int i, j, sum;
printf("함수의 호출\n");
i = 10, j = 20;
sum = add(i, j);
printf("%d + %d = %d", i, j, sum);
{
// main() 함수에서 호출되는 함수에 대한 정의
int add(int x, int y){
int tot;
tot = x + y;
return tot;
}
|
cs |
c프로그램은 반드시 하나 이상의 함수를 포함해야 한다.
main() 함수가 반드시 존재해야 한다.
함수의 시작과 끝을 알리는 중괄호 {}를 사용해야 한다.
중괄호 안에는 변수 선언문, 치환문, 연산문, 함수 등의 명령을 기입한다.
선행처리기(preprocessor)를 제외하고 문장의 끝에는 세미 콜론(;)을 붙인다.
c 프로그램의 구성요소
- 예약어(reserved word)
자료형 관련 예약어
char, int, float, short, long, double, unsigned, union, enum, void
기억 관련 예약어
auto, static, extern, register, ...
제어 관련 예약어
if~else, for, while, do~while, switch~case, break, continue, return
기타 예약어
main, sizeof, include, ...
- 명칭(identifier) 규칙
영문자와 숫자의 조합으로 만든다.
명칭의 첫 문자는 영문자나 밑줄( _ )이어야 핚다.
특수문자를 사용해서는 안 된다.(단, 밑줄( _ ) 사용가능)
문자 사이에 공백이 있어서는 안 된다.
예약어를 사용할 수 없다.
영문자 대문자와 소문자는 서로 구별하여 사용
명칭의 길이는 컴파일러에 따라 차이가 있다.
(일반적으로 32자까지 인식가능)
- 상수(constant)
수치 상수, 문자 상수, 문자열 상수
- 연산자(operator)
연산자를 사용하여 각종 연산 수행
다른 언어에 비해 많은 연산자
- 설명문(주석문)
여러 줄에 걸친 설명문을 넣기 위해서는 /* 와 */ 을 사용
한 줄짜리 설명문을 넣기 위해서는 보통 // 을 사용
프로그램의 어느 부분에도 위치할 수 있다.
2개 이상의 라인으로 계속될 수 있다.
4. 에러와 경고
- 에러(error)
C 언어의 문법상 잘못된 경우 에러 메시지를 출력
즉, C 언어의 문법에 맞지 않는 형식의 사용이나
반드시 필요한 지정이 빠진 경우 등에서 발생
에러 메시지를 확인하여 반드시 수정하여야 한다.
- 경고(warning)
경고는 일단 컴파일은 가능한 경미한 실수를 했을 때 발생
현재는 큰 문제가 없지만 이식성에 불리하다거나,
C 언어 문법에서 권장하지 않는 방법으로 소스 프로그램을
작성했을 때도 발생
경고 메시지의 내용을 파악하여 타당한 지적이라면 수정하고,
그렇지 않다면 무시하여도 상관없다.
경고를 무시하여도 실행파일을 생성하여 실행 할 수 있는
경우가 많다.
'개발하는중 > c' 카테고리의 다른 글
표준 입출력 함수 (0) | 2023.04.03 |
---|---|
자료형, 선행 처리기 (0) | 2023.03.20 |
c언어_연산자의 이해 (0) | 2021.05.18 |
c언어_표준 입력 함수 scanf()의 이해 (0) | 2021.02.04 |
c언어_상수의 이해 (0) | 2021.02.03 |