Home C언어 (0) 개요
Post
Cancel

C언어 (0) 개요

C언어 (0) 개요

공부한 것을 적으려고 만든 블로그인데 어떻게 시작할지 모르겠다.
일단 컴공의 시작은 C언어! 같은 느낌이니까 c언어 정리로 시작하자

코딩 학원 강사로 일한지가 24년 1월 말부터니까 거의 1년이 되어간다.
수업을 하며 이건 알았으면 좋겠다거나 많이 실수하는 것도 적어야겠다.
수업 자료처럼 쓰기 위해서..

책은 C언어 콘서트라는 예제랑 설명이 많은 책과 C언어 본색을 참고했다.

프로그래밍 소개

프로그램이란 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음이다.

그렇다면 컴퓨터에게 작업을 지시하기 위해 어떤 언어를 사용해야 할까?
기계는 당연히 우리의 말을 이해할 수 없기 때문에 우리는 기계어로 맞춰줘야 한다.

이 기계어는 이진수 0과 1로 구성되어 있는 “0011011101010” 같은 수이다.
컴퓨터는 내부 스위치 회로들이 ON(1)/OFF(0)으로 변경이 되며 작업을 하기에 이런 기계어를 받아들인다.

하지만 우리가 어떤 프로그램을 만들 때 기계어를 직접 입력해서 컴퓨터를 작동하게 하는 것은 상당히 무리다.
그렇기에 더 편한 방법이 필요했고, 인간이 사용하는 자연어에 비슷한 프로그래밍 언어를 만들었다.

이 프로그래밍 언어로 프로그램을 작성하면 컴파일러(compiler)라는 소프트웨어가 기계어로 번역해준다.

컴파일러

간단히 컴파일러에 대해 설명하자면 소스 코드를 기계어로 바꿔주는 역할이다.

image

우리가 짠 printf() 같은 코드를 목적 파일(.obj)로 바꾸는 것이 컴파일, .obj 파일을 실행파일(.exe)로 바꾸는
것이 링크라는 과정이다.
obj 파일을 거쳐서 변환 과정을 하는 이유는 몇 가지 있지만 대표적으로 많은 코드를 컴파일할 때 유리하다.
한 프로그램은 .c 파일이 1개가 아니라 pr1.c, pr2.c .. pr(n).c 이렇게 많이 존재한다.
한번 컴파일된 오브젝트 파일은 수정되지 않는 한 다시 컴파일할 필요가 없기에 프로그램이 후에 수정되더라도
변경된 모듈만 다시 컴파일해서 만들어주면 된다. 또한 코드에서 발생한 오류 추적도 용이하다.

C언어

1970년대 초반 UNIX 운영체제를 위하여 AT&T의 벨 연구소에서 일하던 데니스 리치에 의해 만들어졌다.
C언어는 굉장히 효율적인 언어로, 다른 언어로 작성된 프로그램에 비해 크기가 작으며 실행 속도가 빠르다.
메모리도 효과적으로 사용하기에 어셈블리 언어 수준의 효율성을 자랑한다.

C언어는 운영체제를 만들었던 언어인만큼, 어셈블리 언어 만큼의 구체적인 하드웨어 제어가 가능하다.
포인터와 비트 단위 연산으로 하드웨어 장비를 섬세히 제어할 수 있고, 모듈 단위의 프로그램 작성도 지원해
고수준의 프로그램 작성도 가능한 언어이다.

알고리즘

알고리즘이란 문제를 해결하는 절차이다.
어떤 문제가 주어졌고 이것을 컴퓨터로 해결하려고 한다면 그 절차를 생각해야 한다.
예를 들어 빵을 만드는 알고리즘이 있다고 하자.

1
2
3
4
5
1. 빈 그릇을 준비한다.
2. 이스트를 밀가루, 우유에 넣고 저어준다.
3. 버터, 설탕, 계란을 추가로 넣고 섞는다.
4. 따뜻한 곳에 놓아두어 발효시킨다.
5. 170~180도의 오븐에서 굽는다.

이와 같이 알고리즘을 만들 수 있다. 실제 컴퓨터 문제 풀이에서 쓰는 알고리즘은 후에 다루자.

프로그램 개발 과정

C언어로 프로그램을 개발하는 과정은 C언어 소스 파일을 작성할 text editer가 필요하고, 그 소스 파일을
기계어로 변환해줄 컴파일러가 필요하다.
현재 나는 visual code로 다 해결하고 있지만 설정할 것이 꽤 있기에 처음 배우는 학생 입장에서는 이미
통합되어 만들어져 있는 visual studio가 편할 것 같아서 이 프로그램으로 진행하고 있다.


프로그램을 깔고 파일을 만들어 실행하는 방법은 다른 글들이 많기에 굳이 안 적어도 될 것 같다.
visual studio는 한 줄씩 디버깅하는 기능도 지원해주기에 틀린 부분을 찾는 것에서도 용이하다.
다음 글 주제는 C언어의 기초 사항이다.

This post is written by PRO.