cyphen156
Chapter1 C언어와 컴파일러 본문
프로그램이란?
일련의 명령문이 모인 것 = 특정한 언어를 사용해 컴퓨터에게 수행할 일을 지시하는 것
프로그래밍 언어란?
기계어(Object Code) : 컴퓨터가 직접 이해할 수 있는 0과 1로 이루어진 이진 코드
어셈블리어 : 기계어를 사람이 모두 외워서 사용하기 까다로워 개발된 언어 번역 소프트웨어인 어셈블러가 기계어로 번역
C언어 : 어셈블러조차 사람에게 친숙하지 않기 때문에 좀 더 사람에게 친숙하도록 개발된 언어, 컴파일러가 어셈블리어로 번역
자연어 : 사람이 일상에서 사용하는 언어
컴퓨터에게 가까울수록 저급언어, 사람에게 가까울수록 고급언어
Hello C!
데니스 리치 & 켄 톰슨이 B언어를 개선하여 만든 언어
특징
절차지항언어 : 명령을 처리하는 순서에 중점을 둔 언어
추상성 : 하드웨어의 종류에 무관하게 프로그래밍 가능! WHY? 컴파일러의 존재!
→ 모듈화/구조적 프로그래밍 가능
간결성
이식성
Visual C 컴파일러
IDE(Integrated Development Environment) 통합개발환경
개발자의 편의를 위해 소스코드 편집, 컴파일, 실행, 디버깅 등의 기능을 모두 제공해주는 소프트웨어
저는 Microsoft Visual Studio 2019 Community Edition사용했습니다.
1.새 프로젝트 생성하기
2. 빈 프로젝트 생성하기
3. 프로젝트 이름과 저장할 위치 정하기
4. 빈 프로젝트에 소스 추가하기
5. 코드를 쓴 뒤 컴파일해보기
※ 만약 검정 창이 안뜰 경우!
프로그램 작성과 실행
/*이 영역은 주석 처리 영역입니다
주석은 프로그래머가 자신이 만든 코드를 설명하기 위해 사용하는 것입니다.
이 안에 쓰여진 모든 내용은 컴퓨터가 알아듣지 못합니다*/
//이것 또한 주석인데 이것은 '//'가 시작하는 곳 부터 그 줄이 끝나는 곳 까지만을 주석처리합니다
#include<stdio.h> <- 지시어입니다, 전처리기에 의해 처리됩니다./stdio.h는 헤더 라이브러리입니다
라이브러리는 이 소스 외부에서 다른 소스를 가져올 때 사용합니다.
int main(){ int는 리턴 타입이고, main은 함수명입니다
printf("Hello World!!"); <- 명령문입니다, 컴파일러가 번역하여 실행해야 합니다.
return 0; 0은 리턴 값으로 리턴 타입과 타입을 맞춰주어야만 합니다.
} {}안의 영역은 함수 블럭이라 합니다.
함수 : 특정 기능을 수행하기 위한 명령어의 집합
진입점 함수 : 프로그램을 시작하면 곧 바로 불려오는 함수(main함수)
리턴 값 : 함수의 실행 결과를 사용자에게 돌려주는 값
의도적으로 컴파일 에러내기
//#include <stdio.h>
int main() {
/*
전처리기에서 기본 입출력 명령어가 담겨있는
stdio.h를 컴파일 환경에 조성하지 않았기 때문에
main 함수 내부에서 printf()함수를 사용할 수 없어
링크 에러가 발생합니다.
*/
printf("Hello World!!");
/*
return 0 뒤의 세미콜론(;)을 입력하지 않아
컴파일러가 명령어의 종료를 알 수 없기 때문에
컴파일 에러가 발생합니다.
*/
return 0
}
프로그램 작성 및 실행 절차
- 컴파일러 : 특정 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해할 수 있는 기계어와 매칭될 수 있는 어셈블리 언어로 바꿔주는 소프트웨어
- 어셈블러 : 컴파일러가 변환시켜준 오브젝트 코드를 기계어로 변환시켜주는 소프트웨어
* 컴파일러와 어셈블러를 합쳐 컴파일러로 부르는 경우도 있다. * - 링커 : 함수와 함수 사이 또는 여러개의 오브젝트 파일들를 연결해주는 소프트웨어, 오브젝트 코드에 연결 정보를 삽입해 실행 파일을 만들어준다.
- 로더 : 프로그램을 싱행시키기 위해 컴퓨터의 저장장치에 존재하는 실행 파일을 메인 메모리(RAM)에 적재시켜 주는 프로그램, 대개 응용 프로그램이지만 경우에 따라 운영체제에 포함될 수도 있다
대표적인 프로그램 오류
- 문법 오류 : 프로그래밍언어의 작성 규칙에 들어맞지 않는 명령어가 존재하는 경우
- 의미상 오류 : 문법은 맞지만 같은 명령문을 컴파일러와 프로그래머가 서로 다른 의미로 이해하는 경우
- 논리(알고리즘) 오류 : 프로그램이 잘못 설계됨
//모든 예제 소스는 한빛 미디어홈페이지에서 찾으실 수 있습니다.
IT CookBook, 전공자를 위한 C 언어 프로그래밍 (hanbit.co.kr)
또는 cyphen156/Work-space: Studying (github.com)에서 찾으실 수 있습니다.
'프로그래밍 > C언어' 카테고리의 다른 글
Chapter3 과제 (0) | 2023.02.03 |
---|---|
Chapter3 변수와 상수, 대입문과 연산 (0) | 2023.02.01 |
Chapter2 과제 (0) | 2023.01.05 |
Chapter2 C언어의 자료형과 표준 입출력 함수 (0) | 2023.01.04 |
Chapter1 과제 (0) | 2022.12.22 |