C 언어개요 Jo, Heeseung
이장의내용 C 언어소개간단한 C 프로그램명령줄프로그래밍 C 프로그램의이해 2
C 언어소개
C 언어유래 1972 년 Dennis Ritchie 가설계함 UNIX 운영체제개발에사용됨 C 언어에직접영향을준언어들 Algol CPL BCPL B C C 언어의특징 구조화된언어로서모듈별설계가가능 높은이식성 - 다양한하드웨어에서사용가능 효율적 - 처리속도가빠름 다양한연산자를제공 동적메모리관리가가능 Dennis Ritchie 믿거나말거나 C 언어는구형컴퓨터에서게임을하기위해개발했다는전설이있음 4
C 언어장점 5
C 언어의철학및강점 C 언어의설계철학 : 간결성 i = i + 1; 보다는 i += 1; 이간결하고, 이것보다는 i++; 이간결 C 언어의강점 다양한플랫폼에서사용가능 - 매우이식성이높기때문 어셈블리어에대한대안 - Device driver 프로그램에매우적절함 꽤쉬우면서도빠름 - 고급언어의특성 ( 쉬움 ) 과저급언어의강점 ( 빠름 ) 을겸비 6
간단한 C 프로그램
간단한 C 프로그램 8
C 컴파일러 컴파일러란? 통역사 ( 사람과컴퓨터사이의통역담당 ) C 프로그램을컴퓨터가수행할수있도록번역 CPU는 C 프로그램을모름 CPU는이진코드형태의기계어 (machine language) 만인지 C 프로그램 int main 컴파일러종류 컴파일러 기계어프로그램 010101 상용컴파일러 : Microsoft Visual C/C++, Borland C/C++ 무료컴파일러 : Dev-C++ 9
프로그래밍도구 프로그래밍을위해필요한것 편집기 (editor) 컴파일러 (compiler): 사람이만든프로그램코드를기계가이해할수있는언어로바꾸어주는프로그램 프로그래밍을편하게해주는도구들 통합개발환경 (IDE) 편집기 + 컴파일러 + 인터페이스 + MS Visual Studio.NET, IBM Eclipse 등 10
C 프로그래밍도구 편집기 : 일반적으로널리쓰이는문서편집기들 Vim (http://www.vim.org) Emacs Ultraedit(http://www.ultraedit.com) - 상용화된도구 메모장 (notepad) - 휴지가없으면신문지라도 컴파일러 GNU gcc(http://gcc.gnu.org) - 일반적인공개컴파일러 MinGW gcc(http://www.mingw.org) - gcc의 Windows 버전 무수한공개 / 상용컴파일러들 추천조합 Vim + GNU gcc + 기타필요한도구들 Linux를설치하면기본적인도구들은모두갖추어져있음 Windows 환경 - gvim + MinGW gcc 11
소스파일에서실행파일까지 12
명령줄프로그래밍환경 명령줄프로그래밍환경이란? 필요한프로그램을별도로실행시켜프로그래밍하는환경 필요한프로그램 : 편집기, 컴파일러, 디버거 윈도우명령창에서프로그램을개발하는과정 13
명령줄프로그래밍환경
DEV-C++ 설치 C/C++ 언어사용을위한개발환경 컴파일러로 MinGW gcc 를사용 - Dev-C++/bin 에자동으로설치됨 Windows 용 GUI 나 console 프로그램작성가능 홈페이지주소 http://orwelldevcpp.blogspot.kr/ ( 추천 ) http://www.bloodshed.net/dev/index.html ( 업데이트중지 ) http://cslab.jbnu.ac.kr/_down/cp/dev-cpp.5.11.tdm- GCC.x64.4.9.2.Portable.7z 15
명령줄프로그래밍환경 설치및설정 C:\Dev-Cpp 로압축해제 기본옵션으로설정 PATH 에경로추가 제어판 > 시스템 > 고급시스템설정 > 환경변수 > Path 선택 > 편집 "C:\Dev-Cpp\MinGW64\bin" 가포함되도록함 ( 본인의설치위치마다다를수있음 ) 16
WINDOWS COMMAND LINE 명령창실행 Windows key + R, cmd (enter) 기본명령 드라이브변경 - c: d: 디렉토리변경 - cd XXX 디렉토리내의파일보기 - dir 이전 / 이후명령반복 - 커서, ( 위, 아래 ) 실습시주의사항 항상본인이만드는파일이어디에위치하는지잘인지할것 실습별 ( 프로그램별 ) 로디렉토리를만들고작업할것 실습실컴퓨터는타인과사용함으로본인의자료는개별적으로잘백업해갈것 17
TEXT EDITOR Source codes are just text files 텍스트파일은텍스트에디터로편집가능 Notepad++ Freeware text editor http://notepad-plus-plus.org 다운로드후설치 실습을위한환경설정 Settings -> Preferences -> New document -> ANSI 18
HELLO WORLD 1. 자신의소스코드가있을위치를탐색기로정할것 예 ) d:\temp4 밑에서작업할경우 2. helloworld.c 파일생성 마우스오른쪽 > 새로만들기 > Text Document helloworld.c 로생성 19
HELLO WORLD 3. helloworld.c 프로그램작성 C 소스코드의확장자는항상 ".c" 이어야함 탐색기 > 폴더옵션 > 보기 > 알려진... 확장명숨기기해제 텍스트에디터로드래그 ( 또는오픈 ) 하여편집 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { puts("hello, World!"); return 0; } 20
HELLO WORLD 4. Compile 소스가있는디렉토리에서명령창을오픈 - 탐색기 shift + 오른쪽마우스버튼 > 여기서명령창열기 gcc -o helloworld.exe helloworld.c Compile이제대로되는가? Compile후무엇이생성되는가? 5. Execution helloworld.exe 실행이제대로되는가? 21
C 프로그램의이해
HELLO.C 분석 주석 전처리기지시자 라이브러리 puts 호출운영체제에 0 값리턴 main 함수 23
MAIN 의리턴값 main 의반환값은항상정수여야함 따라서 int main() 이라고선언 비표준방법 void main() { } 도컴파일은잘됨 그러나표준에맞는방법은아님 24
MAIN 의리턴값이없으면? 리턴값이없으므로경고 (warning) 가발생할수있다! 25
가장간단한 C 프로그램 리턴타입을생략하면 int 로간주한다. 26
표준출력함수 PRINTF 줄바꿈문자 (newline) 가출력되지않았다. 출력위치 (output marker) 가다음행으로바뀌지않았다. 27
출력위치 줄바꿈문자란? 한행의끝을알리는제어문자 hello.c 와 hello2.c 의출력을비교해보자 줄바꿈문자 (newline character) 위치에주의 " 계속하려면아무키나누르십시오..." 의위치가바뀌었음 명령창에서수행해보자 출력위치 (output marker) 커서 : 입출력위치를알리는기호 ( 네모또는밑줄 ) 커서위치가다른것을알수있음 이유가뭘까? puts는줄바꿈문자를자동으로삽입 printf는줄바꿈문자를자동으로삽입하지않음 28
C 언어의줄바꿈문자 \n 으로나타냄 ( 사용하는폰트에따라 \n 과동일 ) 출력중줄을바꿔줌 두개의문자로하나의문자를나타냄 특수문자를나타내는기법 이스케이프시퀀스 \ 로시작하는문자들은특별한의미 제어문자를비제어문자로나타내는방법 \ 는이스케이프문자 (escape character) 라고부름 29
줄바꿈문자를출력하는 HELLO 30
프로그래밍실습
프로그래밍실습 1 여러분의명함을출력하는프로그램을작성 명함은 7 줄이내로작성하며각행은 30 열이내로작성 32
프로그래밍실습 2 ASCII 아트 문자열만이용하여그림을그리는것 다음웹페이지에 ASCII 아트가소개 http://www.chris.com/ascii/ http://www.ascii-art.de/ascii/ 여러분이좋아하는 ASCII 아트를골라서이를출력하는 C 프로그램을작성 33