기초프로그래밍 실습 C Language and Practice Chap. 1 : C 언어의 개요 동국대학교 멀티미디어공학과 Young-Sik Jeong
참고도서 쉽게풀어쓴 C 언어 Express, 생능출판사, 천인국저 초보자를위한 C 언어 300 제, 정보문화사, 김은철저 2
참고도서 C 기초플러스, 성안당, Stephen Prata 저, 김권식역 C Programming with a Workbook, 이한출판사, 김경창저 3
C 언어의역사 이기종컴퓨터간의호환성을가질수있을정도의고급언어이면서, 기능면에서어셈블리언어처럼컴퓨터의하드웨어기능까지제어할수있는새로운프로그래밍언어가필요함 1972 년벨 (Bell) 연구소의 Dennis Ritch 에의해개발 UNIX 운영체제의구현을위해서사용 유래 : ALGOL 60 CPL BCPL B C 4
C 언어의특징 고급언어및저급언어로서시스템프로그래밍도가능 저급언어 : 컴퓨터가실행하는실제의명령 ( 기호형태 ) 을다룸 어셈블리언어 (Assembly Language) 중급언어 고급언어 : 여러가지제어구조와 I/O 명령문등을제공 ( 프로그래밍이쉽고빠르다 >) Pascal, Delphi. Visual Basic, Java 함수 (function) 의집합으로구성되어구조적프로그램에적합함 다양한자료구조의표현에적합함. 다른시스템으로의이식성좋음. 입. 출력문장이따로존재하지않음 (library 이용 ). 5
C 언어의구조 C 언어의구조 구조적프로그래밍 큰규모의프로그램은일관성을갖는기능에따라여러개의작은단위프로그램으로나누어작성하는것이프로그램의개발및관리그리고프로그램에대한이해를쉽게해줌 프로그램의처리는하나의주 (main) 프로그램이필요한시점에서기능별 (Functional) 단위프로그램들을호출하여원하는처리를하는방법으로진행 구조적프로그래밍 (structured programming) 은순서구조, 조건구조및반복구조만으로프로그램을작성 6
C 언어의구조 C 프로그램의구조 선행처리기명령 전역데이터부분 main( ) 프로그램이컴파일되기전에프로그램에일련의작업을지시 (include, define 등 ) 모든함수에서전역적으로사용하는변수들을선언 가장먼저호출되는함수 함수 a( ) 함수 b( ) 명령문 명령문 명령문 C 의구성블록을이루는함수 명령문의다섯가지유형 선언대입함수제어 Null 7
C 언어의구조 #include <stdio.h> #define BOOL int #define TRUE 1 #define FALSE 0 BOOL whitesp(char c); header [ 초기전역선언부 ] 전역선언부 main() { int ch; int count =0; main 함수시작내부변수선언 } while( ( ch = getchar() )!= EOF ) if( whitesp(ch) ) count++; printf("there are %d whitespace character.\n", count); 처리부 main 함수끝 main() 함수본체 BOOL whitesp(char c) { if( c==' ' c=='\n' c== '\t' ) return(true); else return(false); } 사용자정의함수시작 사용자정의함수 whitesp() 끝 whitesp() 함수본체 8
C 언어의구조 printf() 여러가지형식화된내용을표준출력 (stdout, 화면 ) 으로출력하는함수 printf() 함수의일반형식 형식 : printf( 형식문자열, 인수 ) 하는일 : 인수의값을화면에원하는형식으로출력형식문자열 : 단순문자, 변환 ( 서식 ) 문자, escape 문자로구성인자 : 변환 ( 서식 ) 문자로변환할변수예 : printf(" %d\n %f\n %e\n %c\n", a, b, c, d); 변환문자 변환 ( 서식 ) 문자의미변환 ( 서식 ) 문자의미 %d 부호있는 10 진수정수 %e or %E 부동소수점형 E 또는 e 표기법 %o 부호없는 8 진수정수 %g or %G f 또는 e 중에서짧은형태를선택 %x or %X 부호없는 16 진수정수 %c 1 개문자출력 %f 부동소수점형소수점형태 %s 문자열 9
프로그램의구동 실행파일 컴파일, 링킹과정을통해생성 운영체제의로더 (loader) 가메모리에적재 하나의프로세스주소공간을갖음 스택 (Stack) 세그먼트 힙 (Heap) 데이터세그먼트 텍스트 CPU가해당메모리주소공간을읽고수행함 상위메모리구조 Stack Heap 세그먼트코드 가변크기 고정크기 실행가능파일 (executable file) 로더 하위메모리구조 [ C 프로그램의수행을위한메모리구조 ] 10
프로그램개발환경 코드에디터 프로그램을작성하는과정에서사용하는편집기 단축키, 실행취소 / 재실행, 매크로, 맞춤법검사외에각에디터마다특징이있음 Emacs, Ultra Editor, Eclipse, Crimson Editor 통합개발환경 (Integrated Development Environment) 컴퓨터를이용하여 Application 을개발하는과정에서에디터, 컴파일러, 어셈블러, 링크, 디버그등의각각의단계가모두하나의프로그램안에통합되어있는것 예 ) 터보 C, Boland C, Delphi, Visual Studio, etc. 11
초기화면 [ 2010 ] 12
프로그램개발을위해 Project 생성 1. 파일 - 새로만들기 프로젝트선택 2. 대표언어가 C++ 이아닐경우 다른언어 선택 3. Win32 콘솔응용프로그램선택 4. 이름과솔루션이름에폴더로지정될이름지정 5. 확인 13
프로그램개발을위해 Project 생성 1. 파일 - 새로만들기 프로젝트선택 2. 대표언어가 C++ 이아닐경우 다른언어 선택 3. Win32 콘솔응용프로그램선택 4. 이름과솔루션이름에폴더로지정될이름지정 5. 확인 14
프로그램개발을위해 Project 생성 1. 파일 - 새로만들기 프로젝트선택 2. 대표언어가 C++ 이아닐경우 다른언어 선택 3. Win32 콘솔응용프로그램선택 4. 이름과솔루션이름에폴더로지정될이름지정 5. 확인 15
프로그램개발을위해 Project 생성 1. 파일 - 새로만들기 프로젝트선택 2. 대표언어가 C++ 이아닐경우 다른언어 선택 3. Win32 콘솔응용프로그램선택 4. 이름과솔루션이름에폴더로지정될이름지정 5. 확인 16
프로그램개발을위해 Project 생성 1. 파일 - 새로만들기 프로젝트선택 2. 대표언어가 C++ 이아닐경우 다른언어 선택 3. Win32 콘솔응용프로그램선택 4. 이름과솔루션이름에폴더로지정될이름지정 5. 확인 17
프로그램개발을위해 Project 생성 1. 파일 - 새로만들기 프로젝트선택 2. 대표언어가 C++ 이아닐경우 다른언어 선택 3. Win32 콘솔응용프로그램선택 4. 이름과솔루션이름에폴더로지정될이름지정 5. 확인 18
프로젝트생성단계 19
프로젝트생성단계 20
프로그램개발을위해소스파일생성 1 소스파일 항목에마우스오른쪽버튼클릭 - 추가 새항목선택 2 C++ 파일 (.cpp) 항목선택 3 File 이름지정 - 반드시확장자명을.c 로지정 5 추가클릭 21
프로그램개발을위해소스파일생성 1 소스파일 항목에마우스오른쪽버튼클릭 - 추가 새항목선택 2 C++ 파일 (.cpp) 항목선택 3 File 이름지정 - 반드시확장자명을.c 로지정 5 추가클릭 22
프로그램개발을위해소스파일생성 1 소스파일 항목에마우스오른쪽버튼클릭 - 추가 새항목선택 2 C++ 파일 (.cpp) 항목선택 3 File 이름지정 - 반드시확장자명을.c 로지정 5 추가클릭 23
프로그램개발을위해소스파일생성 1 소스파일 항목에마우스오른쪽버튼클릭 - 추가 새항목선택 2 C++ 파일 (.cpp) 항목선택 3 File 이름지정 - 반드시확장자명을.c 로지정 5 추가클릭 24
Project Workspace 구역 Editor 영역 Output 구역 25
프로젝트관리 워크스페이스 (dsw(=solution)) 프로젝트를관리하는작업공간. 일반적으로하나의워크스페이스는하나의프로젝트를관리하지만, 하나의워크스페이스가동시에여러프로젝트를관리하는것도가능함. 프로젝트 (dsp) 프로그램을작성하는기본단위 26
프로젝트개요 Visual C++ 이지원하는프로젝트유형 응용프로그램, 동적라이브러리. Win32 콘솔응용프로그램 Win32 콘솔응용프로그램을만드는프로젝트 MFC 응용프로그램 MFC 라이브러리를사용하는응용프로그램을만드는프로젝트 Win32 프로젝트 Win32 응용프로그램, 콘솔응용프로그램, DLL 또는정적라이브러리를만드는프로젝트 빈프로젝트 로컬응용프로그램을만드는빈프로젝트 ATL 프로젝트 ATL(Active Template Library) 을사용하는프로젝트 MFC DLL - MFC 라이브러리를사용하는동적연결라이브러리를만드는프로젝트 Windows Forms 응용프로그램 Windows 사용자인터페이스를사용하여응용프로그램을만드는프로젝트 27
프로젝트개요 Visual C++ 이지원하는프로젝트유형.NET Framework 4.0 응용프로그램, 동적라이브러리. CLR 콘솔응용프로그램 콘솔응용프로그램을만드는프로젝트 CLR 빈프로젝트 로컬응용프로그램을만드는빈프로젝트 MFC ActiveX 컨트롤 MFC 라이브러리를사용하는 ActiveX 컨트롤을만드는프로젝트 Windows Forms 컨트롤라이브러리 Windows 응용프로그램에서사용할컨트롤을만드는프로젝트 메이크파일프로젝트 외부빌드시스템을사용하는프로젝트 사용자지정마법사 사용자지정응용프로그램을만드는프로젝트 클래스라이브러리 다른응용프로그램에서사용할클래스를만드는프로젝트 테스트프로젝트 테스트를포함하는프로젝트 28
소스파일의작성 자동색입히기 Visual C++ 는사용된용어의쓰임에따라서로다른색을자동으로사용 일반적으로주석은녹색으로, 키워드는파랑으로, 텍스트는검정으로표현 범주에따라색을지정하려면도구옵션을선택후환경글꼴및색지정 29
소스파일의작성 자동문장완성하기 Visual C++ 은소스입력을도와주기위해 IntelliSense 로알려진자동문장완성기능을가짐 다음과같은 4 가지방법으로도와줌 멤버나열 형정보 인자정보 단어완성 IntelliSense 30
개발명령 컴파일 ( 빌드컴파일 ) - 소스파일을기계어로번역하여오브젝트파일생성 리빌드 ( 빌드솔루션다시빌드 / < 프로젝트명 > 다시빌드 ) 프로젝트내의모든파일을컴파일 / 링크를통해실행파일을만듦 일괄처리 ( 빌드일괄빌드 ) Win32 Debug 모드와 Win32 Release 모드를위한작업을한번에수행함. 한단계씩코드실행 끝문자 (;) 단위로코드순차실행 프로시저단위실행 모듈 ( 함수 ) 단위로코드순차실행 중단점설정 / 해제 디버그시중단점설정 / 해제 31
개발모드 ( 빌드 -> 구성관리자 ) Win32 Debug 디버깅정보를포함하는실행파일을만듦. Win32 Release 디버깅정보를포함하지않는실행파일을만듦. 빌드 메뉴의 구성관리자 선택 32
표준출력함수를사용하여화면에 Hello. Happy to Meet U 를출력하는프로그램을작성 1. 프로그램코딩 33
1. [ 빌드 ] 컴파일 (Ctrl+F7) 을 Click 2. 컴파일한후, 3. Error 가없으면, 빌드 (F7) Click 34
실행결과 1. 디버그 디버깅하지않고시작 (Ctrl+F5) 을 Click 35
Q & A 36