cyphen156

Chapter1 C언어와 컴파일러 본문

프로그래밍/C언어

Chapter1 C언어와 컴파일러

cyphen156 2022. 12. 22. 12:55

프로그램이란?

일련의 명령문이 모인 것 = 특정한 언어를 사용해 컴퓨터에게 수행할 일을 지시하는 것

프로그래밍 언어란?

기계어(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. 빈 프로젝트에 소스 추가하기

소스.C로 생성하는 것이 중요하다

5. 코드를 쓴 뒤 컴파일해보기

검정 창(콘솔)에 Hello World!!가 출력되면 OK!

※ 만약 검정 창이 안뜰 경우!

 

프로젝트-속성을 누른 후 링커-시스템-하위시스템의 왼쪽 항목을 콘솔(Console)로 바꿔준다!

프로그램 작성과 실행

/*이 영역은 주석 처리 영역입니다
주석은 프로그래머가 자신이 만든 코드를 설명하기 위해 사용하는 것입니다.
이 안에 쓰여진 모든 내용은 컴퓨터가 알아듣지 못합니다*/
//이것 또한 주석인데 이것은 '//'가 시작하는 곳 부터 그 줄이 끝나는 곳 까지만을 주석처리합니다

#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