티스토리 뷰
C언어의 특징
이식성이 뛰어나다.
범용 프로그래밍 언어이다.
구문이 간결하고 명확하다.
C언어를 익히면 다른 프로그래밍 언어도 쉽게 이해할 수 있다.
C프로그램 개발단계는 요구사항 분석, 설계, 코딩, 컴파일, 파일실행 순서로 진행된다.
프로그램 코딩은 C 컴파일러가 알아들을 수 있는 형식으로 문서를 작성하는 것이다.
컴파일은 소스 파일을 컴퓨터가 이해하는 오브젝트 파일로 변환하는 과정이다.
링크는 여러 개의 오브젝트 파일을 하나의 실행 파일로 묶어주는 것이다.
빌드는 컴파일과 링크를 하나로 합친 개념이다.
실행은 빌드한 결과인 실행파일을 작동시키는 것이다.
C프로그램의 기본구조는 전처리기 지시영역, main 함수, 사용자 정의 함수로 구분할 수 있다.
전처리기 지시영역 | 전처리기는 소스 프로그램을 오브젝트 프로그램으로 컴파일하기 전에 수행되며, 프로그램 소스 파일이 컴파일될 수 있도록 준비하는 역할을 한다. 컴파일을 시도할 경우 컴파일이 실행되기 전에 전처리기 명령부터 처리된다. 전처리기는 #으로 시작하고, ;를 붙이지 않으며 컴파일 시 연산처리는 이루어지지 않으며 치환만 이루어진다. 선행처리기 종류에는 매크로 상수, 파일 첨가, 조건부 컴파일 등이 있다. |
main 함수 | 콘솔 응용프로그램을 실행하면 처음으로 실행되는 함수로 반드시 존재해야 하며 프로젝트에 하나만 존재해야 하는 함수로 변수의 선언과 자료의 입력, 처리, 출력과 함수의 결괏값을 반환할 수 있다. |
사용자 정의 함수 | 사용자가 용도에 맞게 작성하여 사용하는 함수이다. |
C프로그램 오류의 종류와 예
종류(발생시점) | 오류의 예 |
컴파일 시간 오류 | result란 변수를 선언하지 않고, result=0; 과 같이 변수를 사용한 경우 int result 선언문 뒤에 (;)를 빠뜨린 경우 |
링커 오류 | main 함수의 이름을 잘못 지정해서 main 함수가 프로그램에 없는 경우 |
실행 시간 오류 | 나누기 연산에서 0으로 나누기를 시도한 경우 |
논리 오류 | 무한반복이 되어 프로그램 실행이 끝나지 않는 경우 a, b, c 중 실제 제일 큰 값은 c인데 제일 큰 값 결과가 a로 나온 경우 |
변수의 표현
변수를 위한 메모리 공간을 확보하고 낭비를 최소화하기 위해 변수 선언이 필요하다.
변수는 자료를 저장하는 기억공간으로 프로그램 중간에 값이 변할 수 있다는 것을 의미한다.
변수는 자료를 주기억장치에 저장하거나 읽어오기 위해, 주기억 장치의 주소를 직접 사용하지 않고 기억공간에 적절한 이름을 붙인 후 이 변수명을 사용하여 편리하게 저장하거나 저장된 자료를 읽게 해 준다.
변수는 사용하기 전에 선언을 해야 하며 생성규칙에 따라 변수명을 명명해야 한다.
식별자의 생성규칙
영어 소문자, 대문자, 숫자, 특수문자_만 사용가능하다.영어 대소문자를 구별한다.첫 글자는 숫자일수 없다.중간에 공백을 포함할 수 없다.예약어는 사용이 불가능하다.변수명 길이는 제한이 없다.리터럴 상수는 값 자체를 의미하는 상수로 숫자 상수, 문자/문자열 상수로 표현한다.
문자/문자열 상수 : 문자 1개는 내부적으로 1바이트로 표현되며, 문자 상수는 단일 인용부호('')를,
문자열 상수는 이중 인용부호("")를 써서 표현한다. 그리고 특수문자는 이스케이프 문자를 이용하여 표현한다.
프로그램은 자료를 처리하여 정보를 얻는 것이 목적으로, 일반적으로 변수선언 → 자료입력 → 자료처리 → 결과 출력 순으로 작성된다.
자료형
자료의 표현 방법은 컴퓨터에서 자료가 이진 체계로 표현되며 문자형, 정수형, 실수형은 각각 표현방법이 다르다.
표준화된 변환코드에 따라 2진수로 변환된다.
기본 자료형은 문자형 char, 정수형 int, 실수형 double을 사용한다.
컴퓨터에서 음수는 1의 보수나 2의 보수를 이용하여 표현되고, 실수는 부동소수점 표현방식으로 표현된다.
상수
상수는 자료의 값을 나타내는 데 사용되는 숫자나 문자를 말하며, 프로그램이 실행되는 중에 변경할 수 없다.
정수형 상수: 10진 정수는 숫자만으로 표현하며 8진 정수, 16진 정수는 각각 숫자 앞에 0, 0%를 붙여 표현한다. 컴파일러는 일반적으로 4바이트로 표현한다.
실수형 상수: 상수는 소수점을 포함한 숫자 또는 가수 e 지수로 표현되며, 소수점 이하 12자리까지 가질 수 있다.
컴파일러는 일반적으로 4바이트, 또는 8바이트로 표현된다.
문자, 문자열 상수 : 문자는 고유 번호를 부여한 코드로 변환되어 표현되는데 ASCII는 대표적인 문자체계이다.
7비트를 사용해 128개의 문자, 숫자, 특수 문자에 고유 번호를 부여한다.
문자열은 한 문자가 여러 개 이어진 것으로, 이중 인용부호로 여러 문자를 묶어서 표현한다.
마지막에 '|0'이 추가되므로 저장되는 크기는 문자열의 크기 +1까지 고려해야 한다.
문자상수 | 단일 인용부호로 한 개의 문자를 묶어서 표현하고, 문자열 상수는 이중 인용붛로 여러 문자를 묶어서 표현한다. 문자 상수는 문자 1개를 표현한 것으로 원하는 문자를 단일 인용부호('')로 둘러싸고 반드시 하나의 문자만 써야한다. |
escape 문자 | 단일 인용부호 안에 나타내기 곤란한 문자를 표현할 수 있도록 하고, 특별 문자 표현에 사용한다. 백슬래시로 시작하는 특수문자이다. |0 은 ASCII코드 값이 0인 문자로 널문자라고 부르며 출력해도 화면에 아무것도 나타나지 않는다. 주로 문자열의 끝을 나타낼 때 사용된다. |
심볼릭 상수
심볼릭 상수는 변수와 마찬가지로 이름을 가지고 있는 상수이고, 이러한 심볼릭 상수는 반드시 선언과 동시에 초기화되어야한다. 심볼릭 상수에는 상수에 명칭을 부여하는 const 상수와 #define 문을 이용한 매크로 상수가 있다.
Const 상수
그 값을 '절대로' 바꿀 수 없다. 변수와는 달리 처음 상수를 정의할 때 값을 지정해 주어야 한다.
상수를 기호화하여 변수처럼 이름이 있는 상수를 말한다
매크로 상수
#define 지시자는 특정 기호 상수를 프로그래머가 정의한 치환 문자열로 대체하는 역할을 한다.
#define으로
첫 칸에 #기호로 시작한다.일반 변수와의 구별을 위해 대문자를 사용한다.매크로명에는 공백을 두어서는 안 되며, 문자열 전체를 괄호 속에 넣어서도 안된다.세미콜론(;)을 붙이지 않는다.
만약 세미콜론을 붙이면, 세미콜론까지도 치환할 문자열로 간주한다.지정은 한 줄 내에서만 가능하다. (줄 끝에 백슬래쉬를 하면 다음 줄에 계속 지정할 수 있다)매크로를 문자열 상수, 즉 이중 인용부호("") 사이에 지정하면 #define에 지정한 치환 문자열로 치환되지 않는다.선행처리기
선행처리기는 소스프로그램을 오브젝트 프로그램으로 컴파일하기 전에 수행되며, 프로그램 소스 파일이 컴파일될 수 있도록 준비하는 역할을 한다. 전처리기가 파일 포함이나 문자열 치환과 같은 문법 외적인 작업을 먼저 수행하는 것을 '소스 프로그램을 전처리한다'라고 한다.
#include
#include는 파일을 포한하는 지시자로 헤더 파일을 포함하기 위해 사용한다.
조건부 컴파일을 위한 지시자
특정 조건을 만족할 때만 특정 코드를 프로그램에 삽입하여 컴파일할 수 있다.
#if 조건식
문장 1;
#else
문장 2;
#endif
→ 조건식이 참이면 '문장 1'을 삽입하고, 그렇지 않으면 '문장 2'를 삽입하여 컴파일한다.
#ifdef 조건식
매크로가 정의되어 있는지에 따라 동작하며 if definde의 약어이다.
#ifndef 조건식
if not definde의 약어이며, 매크로가 정의되어 있지 않은 경우에만 # ifdef~#endif" 사이의 문장을 소스 파일에 삽입하여
컴파일되게 한다.
#undef 조건식
매크로 정의를 해제한다
'컴퓨터 공학' 카테고리의 다른 글
모바일프로그래밍, 7장 메뉴와 대화상자 (0) | 2024.05.28 |
---|---|
독학사 C프로그래밍, Day 02 (0) | 2024.05.17 |
논리회로, 1장 컴퓨터와 디지털 논리회로 (0) | 2024.05.04 |
소프트웨어 공학, 2장 연습문제(프로세스와 방법론) (0) | 2024.04.30 |
유닉스 이론과 실습, 7장 파일과 디렉토리 검색하기 (0) | 2024.04.29 |