[한국방송통신대학교/컴퓨터과학과 수업: C프로그래밍 1강_멀티미디어 강의]
오늘 1강에서는 C언어를 이용한 프로그래밍에 관한 내용 학습을 하게 될텐데, 구체적으로는 C프로그래밍 언어에 대한 전반적이 내용 설명에 대해서 배울 것입니다. C언어의 문법, 형식적인 구문, 명령어의 설명 등을 배울 것입니다. 예제 프로그램을 통한 프로그래밍의 개념을 확립할 것입니다. 각종 명령어들의 사용방법을 습득하고, 효과적인 프로그래밍 능력이 배양될 걸로 이제 기대를 하고 있습니다. 따라서 구체적으로 이번 교재나 강의를 통해 다루게 될 학습 계획에 대해서 살펴보게되면은 1장 C언어의 개요에 대해서 배웁니다. 교재2장의 2강에서는 프로그래밍에서 하게 되면 수많은 데이터 처리를 하게 되는데 그런 데이터의 구체적인 자료형을 배우고 선처리 해야하는 선행처리기에 대해서 배울 것입니다. 3장에서는 컴퓨터 프로그래밍에서는 수많은 자료 처리를 하기 위해서는 컴퓨터 내부로 받아들여야하고 수많은 함수를 써야 할텐데 그런 입출력함수와 각종 연산하는 것들의 연산자를 배우게 될 것입니다. 이어서 4장에서는 실행 순서에 대해서 조건에 따라서 다르거나 특정함수를 반복하게 되는 선택제어문과 반복제어문에 대해서 4장에서 다루게 되고요. 또 수많은 함수의 개념이 뭔가, 기억공간에 데이터가 배치가 되는데 기억공간의 유형이 어떻게 되는가 6강에서는 배열과 포인터에 대해서 7장에서는 구조체와 공용체에 관한 변수의 개념을 공부하고 8장에서는 자료를 컴퓨터 안에 받아들이고, 컴퓨터의 구성요소인 모니터에서 데이터를 내보내는 이런 자료들이 컴퓨터 내부에 있을 수 있고, 또는 컴퓨터의 보조장치라고 하는 하드디스크드라이브를 통해 데이터를 처리할 수 있는 거죠. 모니터와 키보드를 통해서 데이터를 입출력하는 장비와는 달리 디스크를 통해서 대량의 파일을 받아들이고 데이터를 내보내는 파일처리함수라고 이야기하고요. 이런 파일처리함수에 대한 걸 8장에서 다루게 됩니다. 9장에서는 기억공간을 사용할 떄, 동적으로 할당하느냐 정적으로 하느냐에 따라 프로그램의 효율성의 차이가 많이 나는데 메모리 동적할당과 정적할당을 비교해서 동적할당의 개념이 무엇인가에 대해 알아보게 될 것입니다. 이렇게 총9장으로 공부할 것입니다.
첫 번째 시간으로서, 교재 1장에 나와있는 C언어의 개요에 대해 알아볼 것입니다. 먼저 이 시간에 다루게 될 강의 내용을 살펴보도록 하겠습니다. 먼저 c언어의 정의, 역사적인 배경, 특징에 대해서 살펴보게 될텐데요. 많은 프로그래머들이 c언어를 공부한다고 이야기한다고 말한 이유는 다른 언어와 비교되는 장점을 많이 가지고 있습니다. 프로그램을 작성하기 위해서는 c언어를 프로그램할 수 있는 도구가 필요하게 되는데 소위 컴파일러를 어떻게 준비하게 될 것인가에 대해서 간단히 말씀드리구요. 프로그램은 어떻게 작성할 것인가에 대해서는 사실 막막하긴 하는데요 c언어로 이루어진 조직구성에 대해서 이해하게 되면 조금은 쉽게 프로그램을 작성할 수 있습니다. 마지막으로 c언어를 이용해서 프로그램할 때 발생할 수 있는 에러나 경고메시지에 대해서 간단히 말씀드리도록 하겠습니다. 먼저 c언어의 정의, 역사, 특징에 대해서 알아보겠습니다. c언어는 프로그래밍 언어입니다. 프로그래밍언어란 사람과 컴파일러가 이해할 수 있도록 약속된 형태의 언어라고 말할 수 있습니다. 두 상대인 사람과 컴파일러가 서로 이해할 수 있어야 되죠. 컴파일러라고 하는 것은 사람과 컴퓨터가 대화를 해야하는데 서로 이해할 수 있는 언어가 없는데, 컴파일러가 번역장치인거죠. c언어, c샵언어, 자바 언어 등과 같은 고급언어를 프로그램 언어 중 고급언어이고, 고급언어와 비교되는 저급언어는 기계어가 있습니다. 사람이 c언어로 컴파일러(번역기)에 전달(c언어, 기계어, 사용가능) 컴파일러는 기계어로 전달하게 됩니다. (기계어란 0과 1로만 이루어져 있습니다. ) 컴파일러에서 사용 될 수 있는 언어를 일반적응로 프로그래밍 언어라고 이야기할 수 있습니다. 그래서 c언어는 컴파일러가 필요합니다. 컴파일러란 프로그래밍 언어로 작성 된 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역해주는 번역기라고 이해하시면 되겠고요. 유사한 개념으로는 어셈블러와 인터프리터가 있습니다. 어셈블러는 기호로 표현된 어셈블리 코드를 기계어로 번역하는 번역기를 말하고, 컴파일러랑 상대적인 용어로 소스 프로그램을 한 번에 기계어로 변환시키는 컴파일러와는 달리 프로그램을 한 단계씩 기계어로 해석하여 실행하는 언어처리 프로그램을 말합니다. 컴파일러와 인터프리터의 차이점은 컴파일러는 한번에 기계어로 변환시키는 것에 반해서 인터프리터라고 하는 번역기는 우리가 작성된 소스프로그램을 한 단계씩 기계어로 해석해서 실행해서 체크해주는 번역기를 말합니다. c언어의 역사에 대해 살펴보게 되면, 1972년도에 그 이전까지는요 대부분 유닉스 운영체제로 컴퓨터의 장치가 운영체제가 구현되고 있었습니다. 컴퓨터 기종간 호환성의 거의 없었죠. 유닉스 운영체제안에서 컴퓨터 기종간 호환성을 가진 고급이면서, 하드웨어를 제어할 수 있는 새로운 언어의 필요성이 대두가 되어서 c언어가 개발이 되었습니다. c언어의 개발 이후로 어셈블리 언어로 된 유닉스의 운영체제가 거의 c언어로 대체 되었습니다. 앞서서 c언어가 다른 언어랑 비교되는 특성이 있기 때문에 프로그래머 대부분이 c언어를 공부한다고 말씀 드렸는데요. 가장 중요한 특징은 프로그램 이식성이 높습니다. 이 뜻은 기존 프로그램에 내가 짠 소스프로그램을 집어 넣었을 때 문제 없이 잘 동작된다라는 뜻입니다. 대부분의 응용프로그램 한글 워드프로세서들이 c언어로 작성 되 있기 때문이예요. 그 외의 특징은 간단한 문법표현으로 함축적인 프로그램 작성이 용이하다 하는 것도 하나의 특성입니다. 저급언어 특성을 가진 고급언어입니다. 고급언어라고 하는 것은 사람이 이해할 수 있는 형태의 언어란 사람이 이해할 수 있는 형태를 고급언어라고 할 수 있습니다. 저급언어라는 것은 컴퓨터에 대한 상당한 지식을 가질 수 있는 사람만이 이해할 수 있는 그런 형태를 저급언어라고 합니다. 기호로 거의 이루어져 있고 저급언어에 가까울 수록 컴퓨터랑 가깝기 때문에 하드웨어를 쉽게 제어할 수 있는 언어이지만 c언어는 고급언어이면서 하드웨어제어도 탁월한 저급언어의 특성도 갖고 있는 것이다. 구체적으로 프로그램 작성을 하는 과정에서 우리가 필요로 하는 내용과 무엇을 준비해야하는지 설명드리겠습니다. 먼저 프로그램 개발단계를 거치게 되는데, 일단 프로그램 설계를 하게 되는데 그 설계 하기 전에 당연히 프로그램 목적 정의가 있어야 합니다. 프로그램 설계가 되면 프로그램 작성을하고 실행하고 테스트를 거쳐서 유지보수를 수행하는 과정을 통해서 프로그래밍 하게 되는데요. 프로그램 설계와 작성, 컴파일, 실행에 대해 이번 과목에서 연구를 할 것입니다. 따라서 이러한 프로그램을 개발하기 위해서는 이런 개발 단계들 중에서 프로그램 만드는 단계가 필요하게 되는데요. 프로그램을 만들 수 있는 소프트웨어가 필요하고, 만든 프로그램을 기계어로 바꿀 수 있는 번역 프로그램이 필요하게 되는거죠(컴파일러). 에디터란 소스코드를 작성하여 저장할 수 있도록 도와주는 도구를 당연히 에디터라고 하는 것이고요. 컴파일러라고 하는 것은 c언어를 번역해주는 컴파일러들은 다양한 회사에서 다양한 컴파일러를 제공되고 있습니다. 터보 씨 씨샵, 볼랜드 씨 씨샵, 비쥬얼 씨 씨샵, 쥐씨씨, 엠에스 씨 씨샵 등이 있습니다. 컴파일러 사용방법 공부하기 전에 먼저 c프로그램의 완성 과정을 보겠습니다. 크게 3단계를 거쳐서 완성됩니다. 코딩단계, 컴파일 단계, 링킹단계를 거쳐서 완성 됩니다. 코딩단계란 소스코드를 작성해서 소크파일을 생성하는 과정을 말합니다. 소스파일이 목적파일(오브젝트 파일)로 변환되는 과정을 컴파일 단계라고 말합니다. 링킹단계란 목적파일이 실행파일로 변환하는 과정을 말합니다. 실행파일로 만들어지기 위해서는 내가 작성한 소스파일만 가지고서는 실행파일로는 안되고 또 다른 목적파일 몇 개가 모여져서 실행파일로 변환됩니다. 요즘 사용되는 컴파일러는 컴파일 단계와 링킹단계를 동시에 해준다. 소스코드를 작성해서 소스파일을 생성하고 파일로 보관한다. (도트 씨라는 확장자로 저장하면 sample.c 씨 소스파일이 생성된다.)생성된 소스파일(sample.c)이 완성되고, 이 완성된 소스파일을 이용해서 실행파일을 만들어야 한다. 그러기 위해선 컴파일을 통해서 번역해야 한다. 컴파일을 통해서 번역하게 되면. 최종적으로 .exe 파일이라는 실행파일이 만들어지기 전에 목적파일(.obj)로 만들어져 야하는데 이거는 0과 1로 이루어진 이진수로 이루어져 있다. 컴파일러를 통해서 번역을 하게 되면 특적 목적파일이 만들어지게 되는데 그거 기계어로 바뀐다. 최종적으로는 링킹과정을 통해서 실행파일을 만들게 된다. sample.exe라는 실행파일을 만들기 위해서는 다른 목적파일 또는 라이브러리 파일이 모아져야 실행파일이 만들어진다. 다른 목적 파일을 연결해서 링킹해주는 과정을 통해서 (링킹단계/링커) 실행파일이 만들어진다. 특정 컴파일러중 볼랜드사에서 만든 터보씨 씨뿔뿔과 엠에스사에서 만든 비쥬얼스튜디오 가 있다. 터보프로그램상에서 소스코드 작성 방법을 알아보자. 왼쪽 상단에 파일을 누르고 뉴라는 서브메뉴 선택한다. 그 때 나오는 에디팅화면에 소스코드를 작성하면 된다. 이런 소스코드로 작성 된 일련의 프로그램들을 완성하기위해서 파일에서 save as 선택해서 파일 이름을 sample.c라고 설정하고 (이름은 마음대로) 선택한다. 그다음 컴파일을 한다. 컴파일을 하는 방법은 위의 프로젝트라는 메뉴 선택하고, 컴파일이라는 부메뉴를 클릭한다. 그렇게 되면 앞에 sample.c라는소스파일을 컴파일하게 되고 성공 하면 success뜬다. ok를 누르면 sample.exe라는 실행파일이 만들어지게 된다. 만약에 문법적인 잘못이 있게 되면 컴파일 에러가 나타나게 된다. 에러내용도 알려 준다. 그러면 소스코드 부분에서 에러난 것은 수정해서 컴파일 성공될 때까지 에러를 수정한다. 이러한 과정을 통해서 실행파일이 생기면 실행파일을 수행시킨다. 에디팅 화면 디버그 메뉴 선택하고 런이란 부메뉴를 클릭한다. 그러면 앞의 실행파일에 대한 실행결과가 도스창 형태로 실행결과를 보여주게 됩니다. 여기까지 터보씨의 컴파일러를 사용하여 프로그래밍 하는 과정을 보여준 것입니다. 다음으로는 마이크로소프트사의 비쥬얼스튜디오를 통해 프로그래밍 하는 과정을 보여드리겠습니다. 약간 준비 과정이 더 있습니다. 비쥬얼스튜디오에 들어가서요. 맨 왼쪽의 파일에 새로만들기라는 서브메뉴를 클릭하고 프로젝트를 클릭하여 만들고 왼쪽의 내용중에 win32 선택, win32 콘솔 응용 프로그램을 선택하고 아래쪽에 이름을 만들고 확인을 누르면 된다. 여기서 콘솔프로그램이란 일반적으로 윈도우라고 하는 것은 그림형태로 사용자가 사용하는 거지만 콘솔이란것은 명령 프롬프트형태로 다양한 그래픽의 표현이 아니라 텍스트 형태로 프로그램이 만들어지는걸 콘솔프로그램이라고 합니다. win32 설치 마법사 설치하고 최종적으로 설치하고 마치면 된다. 마지막 화면 보면 응용프로그램의 종류는 콘솔 응용프로그램에 체크 되어야 되고 추가 옵션에 빈프로젝트에 꼭 체크를 하고 마침을 하면 최종적으로 씨언어로 작성할 수 있는 작업공간이 마련되었다고 설명드릴 수 있겠습니다. 작업공간이 마련되었으니 소스파일을 생성합시다. 왼쪽 화면에 창안에 소스파일이 생성될 수 있는 소스파일의 항목이 나타난 걸 확인할 수 있고요. 소스파일에 오른쪽마우스로 추가 라는 항목 새로운 항목을 클릭하면 보이는 화면이 나타나게 됩니다. 보이는 화면에서 씨++을 선택한다음에 밑에 이름을 설정한 다음에 (sample.c)추가를 하게 되면 됩니다. 여기서 소스파일의 이름이 확장자를 .c 로 표현해주어야 합니다. 만약에 그렇지 않을경우 그냥 sample 이렇게 할 경우 이 컴파일러가 씨언어와 씨 ++를 다할 수 있기 때문에 확장자가 기본적으로 c++로 되기 때문에 이름 끝에 .c로 꼭 해주어야 합니다. (문법이 c랑 c++가 약간 다르기 때문에 오류가 생길 수 있어 .c로 꼭 해주어야 합니다.) 마지막으로 sample.c 만들어 솔루션 빌드 단계를 거칩니다.(비쥬얼씨++에서는 컴파일 단계를 이렇게 말합니다.) 빌드 클릭하고 앞에서 만든 소스파일 컴파일 한다. 그래서 실행파일이 만들어지고 실행파일을 실행시키는 방법은, 디버그 클릭 하고 디버그하지 않고 시작이라는 서브메뉴를 클릭하게 되면 도스창이 나타나 실행결과를 그대로 알려준다. 프로그램의 구성에 대해서 알아보겠습니다. c프로그램의 기본 구조에 대해 알아보겠습니다. 구조는 처음에 도입부, 메인함수 부분(선언문, 치환문,제어문,함수호출), 호출된 함수 부분으로 되잇습니다. 도입부분은 프로그램 전체에 적용되는 사항을 기술합니다. 메인함수는 가장 먼저 호출되는 함수로서 모든 프로그램에 반드시 존재합니다. 마지막 호출된 함수는 메인함수에서 호출되는 함수에 대한 정의를 하는 곳입니다. 호출된 함수는 꼭 아랫부분에 존재하는 것이 아니고, 도입부와 메인함수 사이에 들어갈 수 있다. (교재5장에 함수에관한 부분에서 언급 다시할 것입니다.) c프로그램의 기본 구조에 대해서 설명해보자. c 프로그램은 반드시 하나 이상의 함수를 포함해야 한다. 하나의 프로그램에는 하나의 메니함수가 반드시 존재 해야한다. 함수의 시작과 끝을 알리는 중괄호 {} 를 사용해야 한다. 중괄호 안에는 변수 선언문, 치환문,연산문, 함수 등의 명령을 기입한다. 선행처리기를 제외하고 문장의 끝에는 세미콜론 ;을 붙인다. c프로그램의 구성요소는 예약어, 명칭, 상수, 연산자, 설명문 등으로 구성되어있습니다. 예약어라는 것은 c언어에서 제공되는 약속된 단어를 말합니다. char, int, long, auto, if ~else, main, size of 등을 말합니다. 특별히 프로그래머가 정의하지 않아도 씨 컴파일러가 다 알고있는 단어를 말합니다. 명칭을 만들 때의 규칙(사용자가 만드는 이름)을 알아보자. 영문자와 숫자의 조합으로 만들고, 처음은 영문자나 _로 시작해야 하고 특수문자 사용 안되고 문자사이 공백 안되고 예약어를 사용할 수 없고 영문자는 대문자와 소문자를 구별하여 사용하고 명칭의 길이는 컴파일러에 따라 차이가 있습니다. (일반적으로 32자까지 가능합니다.)(51분)
'공부 > 방송통신대' 카테고리의 다른 글
[한국방송통신대학교/컴퓨터과학과 수업: 컴퓨터의 이해 1강] (0) | 2017.03.13 |
---|---|
[방송통신대학교/컴퓨터과학과_ C프로그래밍 강의_출석수업] (0) | 2017.03.12 |
[한국방송통신대학교/컴퓨터과학과 수업: C프로그래밍 1~2강_멀티미디어 강의] (0) | 2017.03.11 |
[방통대 첫걸음! 원격대학교육의이해 1학점 취득 만점] (0) | 2017.02.18 |
[방송통신대 입학준비를 알아보자] (0) | 2017.02.12 |