CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf ·...

14
문제해결중심 C 프로그래밍 2장 순서도를 순서도를 C로 변환하기 변환하기(1) (1) 언어 언어 개요 개요 ( C ( C 언어 언어 개요 개요 Visual Studio ) Visual Studio ) 강릉원주대학교 강릉원주대학교 Chap.2 학습목표 학습목표 학습목표 z 이 장은 1장에서 배운 순서도를 C 언어 프로그램으로 변환하는 방법을 배우고, 이를 익숙하게 습득하는 것을 목표로 하며, 다음 내용을 배운다 배운다. 학습내용 학습내용 z C 언어를 이용한 입력과 출력 방법 z 분기 반복 복합 순서도를 C 언어로 변환하는 방법 z 분기, 반복, 복합 순서도를 C 언어로 변환하는 방법 z C 언어의 자료형, 연산자, 제어문 사용 방법 GangneungWonju National University 2

Transcript of CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf ·...

Page 1: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

문제해결중심 C 프로그래밍

제제22장장 순서도를순서도를 CC로로 변환하기변환하기(1)(1)

언어언어개요개요및및( C ( C 언어언어개요개요및및 Visual Studio )Visual Studio )

강릉원주대학교강릉원주대학교

Chap.2 학습목표학습목표

학습목표

이 장은 1장에서 배운 순서도를 C 언어 프로그램으로 변환하는 방법을배우고, 이를 익숙하게 습득하는 것을 목표로 하며, 다음 내용을

배운다배운다.

학습내용학습내용

C언어를 이용한 입력과 출력 방법분기 반복 복합 순서도를 C언어로 변환하는 방법분기,반복, 복합 순서도를 C언어로 변환하는 방법C언어의 자료형, 연산자,제어문 사용 방법

GangneungWonju National University 2

Page 2: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 2.1 C 2.1 C 언어언어소개소개및및 C C 언어언어역사역사

C언어역사

GangneungWonju National University 3

Chap.2 2.1 C 2.1 C 언어언어소개소개및및 C C 언어언어역사역사

C언어특징제해결 심의 언어문제 해결 중심의 고급 언어

적은 수의 키워드

다양한 산술 논리 연산자 지원다양한 산술,논리 연산자 지원정적 타입 체크 (그러나 타입 체킹 기능 약함)사용자가 새로운 타입 정의 가능(typedef 이용)사용자가 새로운 타입 정의 가능(typedef 이용)컴퓨터 메모리에 대한 저수준의 접근 가능

모듈성 지원듈성 지원

C언어가지원하지않는기능언어가지원하지않는기능

객체지향

가비지 콜렉션

GangneungWonju National University 4

Page 3: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 2.1 C 2.1 C 언어언어소개소개및및 C C 언어언어역사역사

The International Obfuscated C Code Contesthttp://www.ioccc.org/http://www.ioccc.org/years.html

GangneungWonju National University 5

Chap.2 2.2 2.2 순차순차 순서도를순서도를 C C 언어언어 프로그램으로프로그램으로 변환변환

권장사항

2장에서 작성하는 프로그램은 노트에 직접 손으로 기술하는것을 권장함.

손으로 직접 쓰면서 C 언어의 키워드와 문법을 익히는 것이 필요하기때문

GangneungWonju National University 6

Page 4: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 2.2 2.2 순차순차 순서도를순서도를 C C 언어언어 프로그램으로프로그램으로 변환변환

변환할때주의사항

1. C 언어는 대소문자를 구별한다.2. C 언어는 필요한 경우에 라이브러리를 사용하기 위해서는 include를이용할 수 있다이용할 수 있다.

3. 모든 C 언어 프로그램의 실행은 main( ) { }부터 시작한다. 4 C 언어에서는 문장( )이 끝난 뒤에는 세미콜론( )을 붙인다 4. C 언어에서는 문장(statement)이 끝난 뒤에는 세미콜론(;)을 붙인다. 5. 변수는 사용하기 전에 선언해야 하고, 값을 변경해서 여러 번 사용할수있지만 동일한 이름의 변수는 한번만 선언해야 한다 수있지만, 동일한 이름의 변수는 한번만 선언해야 한다.

6. 화면에 출력하는 것은 printf()를 사용한다.

GangneungWonju National University 7

Chap.2 C C 프로그램의프로그램의구성요소구성요소

C 프로그램의형태

#include <stdio.h>i t i ( id) 헤더파일

문장 함수

int main(void){

printf(“This is a short C program.”);

라이브러리함수

문장 함수p ( p g )return(0);

}

C 프로그램의구성원소함수(function)함수(function)문장(statement) 라이브러리 함수(library function)

GangneungWonju National University 8

y헤더파일(header file)

Page 5: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 함수함수(function)(function)

함수는이름을갖는부프로그램으로서, 모든프로그램은 1개이상의함수로구성된다 이상의함수로구성된다. 각함수는 1개이상의문장(statement)을포함한다.일반형식

ret-type function-name(param-list){

statement sequence ;}

함수에 의해 반환될 값의 자료형(ret-type) : 함수는 어떤 값을반환할 수 있다.함수의 이름(function-name) : 대소문자를 구별하며 숫자를함수의 이름(function name) : 대소문자를 구별하며, 숫자를첫문자로 가질 수 없다.매개변수(param-list) : 함수에 전달될 정보.{ } : 모든 함수는 { } 로 묶는다

GangneungWonju National University 9

{ } : 모든 함수는 { } 로 묶는다.

Chap.2 Main() Main() 함수함수, , 문장문장

Main() 함수C 프로그램이반드시가져야하는함수프로그램에서제일먼저실행된다.프로그램이 실행될 때, 맨 먼저 main( )에 포함된 문장들이순서대로 실행된다.

문장문장

프로그램에서수행할하나의동작을나타낸다.실제로 연산(operation)을 수행하는 프로그램의 일부분.

모든문장은세미콜론(;)으로끝난다.한 의 한 장의 간 하지않 다한줄의끝을한문장의끝으로간주하지않는다.다른함수의호출도하나의문장에해당하므로세미콜론이끝에

있어야한다

GangneungWonju National University 10

있어야한다.

Page 6: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 라이브러리라이브러리함수함수 (library function)(library function)

C 컴파일러에서 제공하는 함수를 말한다.C 컴파일러의 종류

Visual C++, Visual C, Turbo C , MS C 등 ANSI C

미국표준협회(American National Standard Institute) 에서규정한표준 C규정한표준 C

표준 라이브러리 (Standard library)ANSI C 표준에따라모든 C 컴파일러에서제공되는기본라이브러리함수들의집합

디스크입출력, 스트링조작, 수학계산등을처리하기위한함수들을포함한다 (ex: cos() sin() printf() )함수들을포함한다. (ex: cos(), sin(), printf(), …)프로그램이컴파일될때프로그램에서사용되는라이브러리

함수의코드가자동적으로프로그램에포함된다.

GangneungWonju National University 11

Chap.2 헤더파일헤더파일(header file)(header file)

표준 라이브러리 함수에 관한 정보를 갖는 파일. 컴파일러와 함께 제공되며 모두 h 의 확장자를 갖는다컴파일러와 함께 제공되며 모두 ~.h 의 확장자를 갖는다.

Ex : stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h, …

C 컴파일러는 라이브러리 함수들을 처리하기 위하여 헤더 파일들에C 컴파일러는 라이브러리 함수들을 처리하기 위하여 헤더 파일들에있는 정보를 사용한다.선행처리 지지자를사용하여 컴파일러가 사용할 헤더파일들을선행처리 지지자를사용하여 컴파일러가 사용할 헤더파일들을

명시하여야 한다.

GangneungWonju National University 12

Page 7: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 선행처리선행처리지시자지시자 (preprocessor directive)(preprocessor directive)

사용자가 컴파일러에게 필요한 것을 나타내기 위해 사용하는 지시자

모든 컴파일러는 제일 먼저 선행처리기(preprocessor)를 작동시켜프로그램에 명시된 선행처리 지시자를 처리한다.#include #define #if #else #endif #ifdef#include, #define, #if, #else, #endif, #ifdef

# 선행처리지시자의접두어

예) #include <stdio.h>

# : 선행처리지시자의접두어선행처리기가다른파일을읽어서프로그램파일에삽입시키라는것을지시한다.마지막에세미콜론으로끝나지않는다마지막에세미콜론으로끝나지않는다.헤더파일은 < > 안에넣는다.사용자정의헤더파일은 " " 안에넣는다.

GangneungWonju National University 13

Chap.2 프로그램프로그램작성과작성과컴파일컴파일

프로그램작성및실행순서

소스프로그램작성

( cpp )

목적파일생성

( obj )

실행파일생성

( exe )( ~ . cpp )

문서편집기

( ~ . obj ) ( ~ . exe )

컴파일러문서편집기

•메모장• Eidt plus

컴파일러

• Borland C (BC)• Visual C++ (VC)

• … • …

통합개발환경

•프로그램의작성,수정,컴파일,실행

GangneungWonju National University 14

프로그램의작성, 수정, 컴파일, 실행

Page 8: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 프로그램프로그램예예

#include <stdio.h>#include "stdafx.h“

선행처리기 : stdio.h헤더파일을읽어와서이프로그램에포함되게한다.

int main(){

• main( )함수의시작

• int : main( ) 이정수값을반환

int Choice = 1;

printf(" Congraturations !! \n This is Your First Programming Code. \n \n");

• void : main( ) 이어떠한매개변수도갖지않음

함수의 p ( g g g );

while(Choice != 0) {printf("\n Input Your Choice : ");

함수의

시작

printf( \n Input Your Choice : );scanf("%d", &Choice);

}표준라이브러리함수 printf( )를호출하여문자열을화면에출력

return 0;}

표준라이브러리함수 scanf( )를호출하여입력데이터를변수에저장0 을반환

GangneungWonju National University 15

함수의끝

Chap.2 프로그램프로그램예예

#include <stdio.h>#include "stdafx.h“ 선행처리 : 프로그램에서사용할라이브러리함수를가져와

내프로그램에포함시킨다

int main(){

main함수

내프로그램에포함시킨다

: C 프로그램에서필수. 프로그램실행은Main 함수에서시작시작

int Choice = 1;;

printf(" Congraturations !! \n This is Your First Programming Code. \n \n");;

변수선언문장(준비)함수문장 (화면출력라이브러리함수)

p ( g g g );;

while(Choice != 0) {printf("\n Input Your Choice : ");;

블록(block)printf( \n Input Your Choice : );;scanf("%d", &Choice);;

}

-다수의 문장을포함

(화면출력함수, 콘솔입력함수)

return 0;;}

종료

GangneungWonju National University 16

Page 9: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 2.2 2.2 순차순차 순서도를순서도를 C C 언어언어 프로그램으로프로그램으로 변환변환

출력하는순서도변환예

Hello를 출력하는 프로그램을 작성하시오.

출력

printf(“화면에 출력할 내용”) : 화면에 출력. 인용부호(“”) 이용

GangneungWonju National University 17

Chap.2 MS Visual Studio 2010 Express MS Visual Studio 2010 Express 시작시작

1 새로운프로젝트를시작

최근프로젝트를open

GangneungWonju National University 18

Page 10: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 MS Visual Studio 2010 Express MS Visual Studio 2010 Express 시작시작

1

콘솔응용프로그램선택

2 프로젝트이름및저장장소지정

GangneungWonju National University 19

Chap.2 MS Visual Studio 2010 Express MS Visual Studio 2010 Express 시작시작

1 프로젝트설정완료

GangneungWonju National University 20

Page 11: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 MS Visual Studio 2010 Express MS Visual Studio 2010 Express 시작시작

프로그램(코드)작성1

GangneungWonju National University 21

Chap.2 Hello Hello 프로그램프로그램작성작성

#include "stdafx.h“

int _tmain(int argc, _TCHAR* argv[])

{

printf("Hello \n");

return 0;

}

GangneungWonju National University 22

Page 12: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 프로그램의프로그램의컴파일과컴파일과실행실행

1 2컴파일 에러수정

3 실행

4 실행결과창★ 참고

위의예제프로그램을실행하면실행결과창이순간적으로활성화되었다가사라진다.

결과를확인할때까지창이사라지지않게하기위하여별도의

GangneungWonju National University 23

하기위하여별도의팁을사용한다.

Chap.2 Visual C++ Visual C++ 와와 ANSY C ANSY C 의의구문구문비교비교

#include "stdafx.h“ #include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])

{

main( )

{

printf("Hello \n");

return 0;

printf("Hello \n");

return 0;

} }

< MS Visual C++ Express 2010 > < ANSI C >

GangneungWonju National University 24

Page 13: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 ※ ※ getchgetch( )( )를를 사용한사용한 결과결과출력출력창창유지유지#include "stdafx.h"

#include <conio.h>

getch()함수가정의되어있는 헤더파일을include시킴

#include "stdafx.h“

int _tmain(int argc, _TCHAR* argv[])

int _tmain(int argc, _TCHAR* argv[])

{

{

printf("Hello \n"); // \n : 다음줄로바꿈

주석

printf("Hello \n");

return 0; printf("Press Any Key to Exit...");

} getch(); // 문자입력표준함수

Tip:화면출력을return 0;

}

Tip: 화면출력을확인하기위하여화면을유지함

GangneungWonju National University 25

Chap.2 ※ ※ 프로그램에프로그램에주석달기주석달기

주석(comment)프로그램에기재해놓은설명문

컴파일러에의해무시되며오로지프로그램을쉽게이해하기

위한목적으로사용

키워드, 함수이름, 변수이름의가운데를제외하고어디든지위치할수 있다./*과 */사이에기재하며, 여러줄로기재할수있다.,//를 이용하여한줄의주석을붙일수있다.

사용예사용예

/* get number of earth days */f("%f" & d ) // d h d bl

GangneungWonju National University 26

scanf("%f", &e_days); // e_days is earth days variable

Page 14: CP 02 Convert To C 01 Intro - GWNUcadcam.gwnu.ac.kr/subject/CP/02/CP_02_01.pdf · 문제해결중심C 프로그래밍 제2장장순서도를순서도를C로로변환하기변환하기(1)

Chap.2 ※ ※ 컴파일에서컴파일에서자주자주나타나는나타나는에러에러#include "stdafx.h"

#include <conio.h> error C3861: 'getch': identifier not found

1. #include <conio.h> 이누락되었을경우

int _tmain(int argc, _TCHAR* argv[])

… error C3861: 'getch': identifier not found.

== Build: 0 succeeded, 1 failed …==

{

printf("Hello \n"); syntax error : missing ';' before identifier 'printf'

2. printf() 함수문장뒤에 ;;이누락되었을경우

printf("Press Any Key to Exit..."); 3. getch() 함수문장뒤에 ;;이누락되었을경우

getch(); syntax error : missing ';' before 'return'

return 0;

}

GangneungWonju National University 27