의용프로그래밍실습 의료공학과이기영 교육목표수업방법주교재참고도서 의용프로그래밍실습 - 의료공학엔지니어로서컴퓨터에접근하는기초적인방법으로프로그래밍을익힌다. - 프로그램은논리나알고리즘을설계하고, 원시코드를작성하는것 - 초보자가접근하기쉬우면서막강한언어인 C 를익힘으로써 - 알고리즘의이해와문법 : 엔지니어적으로접근하는기초지식을쌓고자한다. - Visual C++ 를이용하여객체지향형에접근하는기초를마련 - 순서도중심의프로그램의개념과이용법및문법체계를잡는다. - 사용언어는 C 언어로서 1980 년대말부터널리보급된컴퓨터프로그래밍언어 - 광범위한분야에적합하도록만들어진언어 - C 언어의광범위한효율성 : 컴퓨터 S/W, AVR S/W( 전용 H/W, 의료기기 ) - C 프로그래밍언어, 김용일외, 교우사 - Playing with C, 우균, 창병모, 교보문고 - Visual C++ 6 (21일완성) 인포북,C 언어연습, 교우사 1 성적평가방법출석율20%+ 과제물20%+( 중간고사 + 기말고사 + 역량평가 )60% 2 최종목표 USB 디렉토리구성 1. 비쥬얼C 로컴파일과수행 2. 순서도에의한프로그램작성 3. 입 / 출력 ( 키보드, 파일 ) 제어 4. 결과 ( 글자, 그림, 소리 ) 의명확한표현 5. 파일데이터읽고쓰기및파일만들기 준비사항 : USB 메모리스틱 (! 준비되지않으면결석!) 3 K: 의용프로그래밍실습 K: 의용프로그래밍실습 CH1 프로젝트이름 Project name 4 오늘의주제 1. 팀구성, 2. 순서도의입문 * 레포트 * ( 다음주퀴즈 ) 레포트는발표가능하도록 1) C언어란? 자기가작성한다. 2) 순서도란? 3) 다음을설명하시오. 원시프로그램, 목적프로그램, 실행프로그램 순서도의개념 모든프로그램언어의시작이다. C프로그램은함수이다. main() 로시작한다. 함수안에씌어진명령어의순서대로진행한다. 그래서순서도이며, Flow chart 라고도한다. 1. 화면에 Hello! 가인쇄되는순서도작성해보자. 2. 1~10까지의합을구하는순서도작성해보자. 5 6
순서도그리기 순서도그리기 Start 단말 ( 시작 ) 단말 ( 시작 ) 출력 ( 인쇄 ) 단말 ( 끝 ) Start Hello! main() printf( Hello! ); puts i 0 s 0 i i+1 s s+i 준비처리의사결정 합 :s 출력 ( 인쇄 ) 단말 ( 끝 ) 7 8 오늘의주제 퀴즈 1. 팀구성, 2. 순서도의입문 * 레포트 * 레포트는발표가능하도록 1) C언어란? 자기가작성한다. 2) 순서도와컴파일이란? 3) 팀연구과제 : 다음주발표 1 1~10까지홀수만의합을구하는순서도. 2 1~10까지짝수만의합을구하는순서도. 3-1~ -10 까지의합을구하는순서도. 1. 다음을간단히설명하라. 1 순서도 2 원시프로그램 3 목적 / 수행프로그램 2. 다음을작성하라. 1 1~10 까지의합을구하는순서도. 9 10 USB 디렉토리구성 K: 의용프로그래밍실습 Chap.1 C 언어소개 K: 의용프로그래밍실습 CH1 프로젝트이름 Project name 11 12
C 언어유래 C 컴파일러 1972 년 Dennis Ritchie 가설계함 UNIX 운영체제개발에사용됨 C 언어에직접영향을준언어들 Algol CPL BCPL B C 주요특징 구조화된언어로서모듈별설계가가능하다. 이식성이높다 ( 다양한하드웨어에서는전설이사용있음가능 ). 효율적이다 ( 처리속도가빠르다 ). 다양한연산자를제공한다. 동적메모리관리가가능하다. Dennis Ritchie 믿거나말거나 C 언어는구형컴퓨터에서게임을하기위해개발했다 13 컴파일러란? 통역사 ( 사람과컴퓨터사이의통역담당 ) C 프로그램을컴퓨터가수행할수있도록번역해줌 CPU는 C 프로그램을모른다 CPU는이진코드형태의기계어 (machine language) 만안다 C 프로그램기계어컴파일러프로그램 int main 010101 컴파일러종류 상용컴파일러 : Microsoft Visual C/C++, Borland C/C++ 사용컴파일러 : VC60.zip 14 C프로그램작성규칙 (7,8쪽) C 프로그램의구조 하나이상의함수로이뤄짐 반드시하나의 main() 함수가있어야함 함수 ( 순서도 ) 는 로시작하고 로끝남 함수 ( 순서도 ) 의각문장은 ; 로끝남 각문장의위치는정해지지않음 주석문은 // 또는 /* 부터 */ 임 주석문은설명임 다른파일을첨가한다. 헤더파일이라함 15 C 프로그램 // 제목작성자작성일시 ( 주석문 ) 헤더 (header) : #include #define sum( ); main() 함수 printf( The total price is.. ); 그밖의함수 // 다음프로그램의내용 int sum( ) 16 간단한 C 프로그램 (hello.c) 프로젝트만들기실습 // Hello.c 홍길동 2012. 3.#. int main() printf( Hello World! ); 시작 에서다음을클릭한다. 실행결과 : Hello, World! 17 18
컴파일러수행파일을클릭하면!!! MSVC IDE: 프로젝트만들기 (1/5) Projects 탭에서 19 20 MSVC IDE: 프로젝트만들기 (2/5) Projects 탭에서 MSVC IDE: 프로젝트만들기 (3/5) Projects 탭에서 21 22 MSVC IDE: 프로젝트만들기 (4/5) MSVC IDE: 프로젝트만들기 (5/5) Hello Hello 5. Finish & OK 23 24
MSVC IDE: 프로젝트만들기 ( 결과 ) Hello 프로젝트가생성된화면 MSVC IDE: 파일추가 (1/3) Files 탭에서 C++ Source File 선택 2. 파일이름입력 3. OK 25 26 MSVC IDE: 파일추가 (2/3) MSVC IDE: 파일추가 (3/3) 2. 파일이름입력 Add to project 확인 hello.c 3. OK 소스파일 hello.c 가 Hello 프로젝트에추가된화면 27 28 MSVC IDE: 파일편집 편집창에프로그램내용을적어넣는다. MSVC IDE: 컴파일및빌드 컴파일 : Build Compile hello.c // Hello.c 홍길동 2012. 3.#. int main() printf( Hello! ); 실행파일 (.exe) 빌드에필요한목적파일 (.obj) 생성빌드 (Linker): Build Build Hello.exe 필요한목적파일이없으면해당파일을컴파일 29 30
MSVC IDE: 실행및디버깅 실행 : Build Execute Hello.exe Hello.exe가없으면빌드를먼저수행한다. MSVC IDE: 컴파일오류수정 컴파일시간오류 프로그램구문오류로인해목적파일을생성할수없는상태 IDE의메시지박스에서확인한후, 오류메시지를더블클릭하 // Hello.c 홍길동 2012. 3.#. 면오류위치를가리킨다. Int main() printf( Hello! ); 디버깅 프로그램오류 (bug) 를떼어내는 (de-) 과정 수행결과가이상하면프로그램을수정하고 ( 디버깅 ) 컴파일 & 빌드, 실행과정을반복한다. 31 32 MSVC IDE: 비하인드스토리 준비운동 0 생성된실행파일 Hello.exe 를찾아보자! 프로젝트폴더찾기 프로젝트생성위치에있음 잊은사람은다음부터는프로젝트생성위치를잘봐두자! 앗! 이럴수가! 프로젝트폴더에실행파일 (*.exe) 파일이없네 Debug 폴더에있음 비하인드스토리 Start i 0 s 0 i i+1 s s+i 단말 ( 시작 ) 준비 처리 의사결정 합 :s 출력 ( 인쇄 ) 단말 ( 끝 ) 33 준비운동 i 준비운동 ii start i=0 s=0 i=i+1 s=s+i s int i=0, s=0; LP: i=i+1; s=s+i; if() goto LP; printf( s=%d,s); 35 start i=0 s=0 i=i+2 s=s+i s int i=0, s=0; LP: i=i+2; s=s+i; if() goto LP; printf( s=%d,s); 36
준비운동 iii 오늘의과제 start i=-1 s=0 i=i+2 s=s+i i<9 s int i=-1, s=0; LP: i=i+2; s=s+i; if(i<9) goto LP; printf( s=%d,s); 1. 다음을작성하라. 1 1~10까지홀수만의합을구하는프로그램. 2 1~10까지짝수만의합을구하는프로그램. 3-1~ -10 까지의합을구하는프로그램. 2. 순서도를 PPT로작성하기. 3. 순서도연습하기. 문제1-2: 문자 / 변수표현 4. 문제풀고컴파일연습하기. 15~17쪽 사용컴파일러 : VC60.zip 5. 연숩문제 1, 2, 3, 6, 9, 10 : 팀별조원발표. 37 38