01장

Size: px
Start display at page:

Download "01장"

Transcription

1 01 프로그래밍소개 C PROGRAMMING CHAPTER 학습목표 프로그램이란무엇인지를이해한다. 프로그래밍언어가왜필요한지를이해한다. 알고리즘을소개한다. 프로그램이개발되는과정을이해한다. C O N T E N T S 1.1 프로그래밍의소개 1.2 프로그래밍언어의종류 1.3 C언어 1.4 알고리즘 1.5 프로그램개발과정 1.6 비주얼 C++ 를이용한프로그램작성

2 01 CHAPTER 프로그래밍소개 C PROGRAMMING 1.1 프로그래밍의소개 컴퓨터는범용적인기계 컴퓨터가가지고있는최대의강점은무엇일까? 먼저컴퓨터와가전제품을비교하여보자. 가전제품은미리정해진한가지작업밖에못하는반면, 컴퓨터는프로그램만바꾸어주면여러가지작업을할수있다. 이처럼컴퓨터의가장큰장점은범용적인기계라는점이다. 예를들어, 우리는컴퓨터에서문서편집프로그램을실행시켜문서를편집하기도하고동영상재생프로그램을실행시켜영화를보기도한다. 범용적인기계를만드는것은오랫동안인류의꿈이었다. 19세기에찰스배비지는수천개의기어, 바퀴, 축, 레버등을사용하여어떤계산이든지할수있는해석기관을만들려고하였다. 그러나그당시기술로는실현이불가능하였다. 1940년대에와서야진공관으로구현한전자식스위치를이용하여전자계산기를만들수있었다. 이후로우리가알다시피컴퓨터는우리생활에불가결한존재가되었다. [ 그림 1-1] 프로그램만바꾸어주면컴퓨터는다양한작업을할수있다.

3 제 1 장프로그래밍소개 17 컴퓨터의구성요소컴퓨터시스템은기본적으로하드웨어와소프트웨어로구분된다. 하드웨어 (hardware) 는컴퓨터에설치되어있는모든물리적인장치를의미한다. 소프트웨어 (software) 는컴퓨터를동작시키는데사용되는다양한종류의프로그램을부르는용어이다. [ 그림 1-2] 하드웨어와소프트웨어 컴퓨터개발자들은컴퓨터를범용적인장치로만들기위해서하드웨어와소프트웨어를분리하였다. 1940년대에만들어진최초의컴퓨터인에니악 (ENIAC) 에서는하드웨어와소프트웨어가분리되지않았다. 에니악은전선의연결에의하여프로그램되었다. 따라서프로그램을변경하려면모든전선의연결을바꾸어야했다. 1950년대에폰노이만이프로그램을컴퓨터메모리에저장하는아이디어를제시하였다. 그것은획기적인아이디어였고이후로모든컴퓨터가폰노이만의방식을따르게되었다. 동일한하드웨어상에서소프트웨어를바꾸어가면서다양한작업을할수있는것은컴퓨터가가진가장강력한장점이다. [ 그림 1-3] ENIAC 의프로그래밍장면 프로그램안에들어있는것프로그램안에는무엇이들어있을까? 프로그램안에는작업의내용이들어있다. 즉, 작업의지시서가들어있다고생각할수있다. 컴퓨터에게무엇을어떻게시킬지를기록해놓은문서가프로그램 (program) 이다. 프로그램의각문장은컴퓨터에게작업을지시하는명령 (instruction) 으로되어있다. 명령은 숫자를더하시오, 데이터를저장하시오 와같은형식으로되어있다. 만약사용자에게두수를받아서두수의합을출력하는프로그램이라면 [ 그림 1-4] 와같은내용이프로그램안에들어있을것이다. 프로그램을만드는작업을프로그래밍 (programming) 이라고하며프로

4 18 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 그램을만드는사람을프로그래머 (programmer) 라고한다. [ 그림 1-4] 프로그램은작업지시서와같다. 최초의프로그래머역사상최초의프로그래머는누구일까? 프로그램을최초로만든사람은여자로서에이다러브레이스 (Ada Lovelace) 이다. 에이다는대문호바이런의친딸로서배비지의해석기관에매료되어해석기관을위한프로그램을개발하였다. 에이다는현대적인컴퓨터가나오기 100년전에이미서브루틴 (subroutine), 루프 (loop), 점프 (jump) 등의핵심적인컴퓨터프로그래밍기본원리를고안하였다. 서브루틴은같은공식을여러번사용하기위해서, 루프는같은계산을반복하기위해서, 점프는중간의필요없는과정을뛰어넘기위해서고안하였다. 여기에추가로어떤조건이일치할경우, 다음공식으로넘어가는 if 구문을생각해냈다. 이러한것들은배비지의해석기관이단순히계산만하는기계가아니라주어진조건에따라결정을내리고논리를수행할수있다는것을의미하였다. 미국국방성에서는에이다러브레이스를기념하기위하여자신들의언어를에이다 (ADA) 라고이름지었다. 세계최초의프로그래머는여자였던것이다. 컴퓨터가이해하는언어프로그램은컴퓨터에게해야할작업의내용을알려주는문서이다. 그렇다면어떤언어를사용해야만컴퓨터가작업지시를이해할수있을까? 컴퓨터는사실프로그래머가시키는대로만하는단순한기계이니사람의언어를이해할것같지는않다. 즉, 한국어나영어등으로작업을기술한다면컴퓨터는전혀이해할수없을것이다.

5 제 1 장프로그래밍소개 19 [ 그림 1-5] 컴퓨터는한글로된작업지시서는이해하지못하는반면, 기계어로된작업지시서는이해할수있다. 사실컴퓨터가알아듣는언어는한가지뿐이다. 즉, 0과 1로구성되어있는 " " 과같은이진수이다. 컴퓨터는이진수의개념위에만들어진기계이다. 컴퓨터는모든것을 0과 1로표현하고 0과 1에의하여스위치회로들이 ON/OFF 상태로변경되면서작업을한다. 즉, 0이면회로를 OFF시키고 1이면회로를 ON으로만든다. 이러한이진수형태의언어를기계어 (machine language) 라고한다. 이러한기계어는컴퓨터가가장좋아하는언어이다. 실제로초기의컴퓨터에서는이러한기계어를사용하여프로그램을했었다. 그러나기계어는인간한테는상당히불편한언어이기때문에좀더편리한언어가필요했다. 따라서인간이더편리하고알기쉽게지시를내리기위하여프로그래밍언어들이만들어졌다. 이들프로그래밍언어들은기계어와인간이사용하는자연어중간쯤에위치한다. 인간이프로그래밍언어를배워서프로그램을작성하면컴파일러라고하는통역을담당하는소프트웨어가프로그램을기계어로바꾸어준다. 이것은영어를말하는사람과한국어를말하는사람이중간에통역을두고이야기하는것과비슷하다.

6 20 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 [ 그림 1-6] 컴파일러는프로그램을기계어로변환한다. 컴퓨터는왜십진수가아닌이진수를사용하는가? 2진수의각자릿수는 0 아니면 1이다. 0은스위치가열린상태 (OFF) 로표현할수있고 1은스위치가닫힌상태 (ON) 로표현할수있다. 따라서여러개의스위치를늘어놓으면이진수를나타낼수있다. 이진수는컴퓨터가받아들이기가아주쉽다. 컴퓨터에서는내부적으로는모든것을이진수형태로표현하여처리한다. 이진법은숫자를표현하는데도사용되지만컴퓨터안에서덧셈과같은연산을수행하는회로를구현하는데도이용된다. 0과 1만을이용하여논리처리를하는수학의분야를불대수 (boolean algebra) 라고한다. 이불대수를이용하면몇개의스위치를모아서논리회로 (logic circuit) 를만들어각종연산을빠르게하는회로를만들수있다. 컴퓨터에서스위치는트랜지스터로구현된다. 트랜지스터는소형전자스위치로생각하면된다.

7 제 1 장프로그래밍소개 프로그래밍언어의종류 현재많이사용되는프로그래밍언어에는 FORTRAN, PASCAL, COBOL, C, C++, C#, Object-C, Java 등이있다. 프로그래밍언어는하나만있으면될거같은데왜그렇게많은종류가있을까? 그이유는각언어마다특징이다르기때문이다. 시장에나가보면 TV도여러회사에서나온제품들이경쟁하고있는것처럼프로그래밍언어도다양한용도에맞는여러가지언어들이만들어지고있는것이다. 어떤프로그래밍언어를사용하더라도컴퓨터에일을시킬수있지만선택기준은주어진상황에서어떤프로그래밍언어가가장작업을효과적으로간단하게할수있느냐이다. < 표 1-1> 에각언어들을간략하게기술하였다. 언어특징예제 FORTRAN은 1950년대에가장먼저만 FORTRAN 들어진언어로수치계산과과학기술계산에적합하다. COBOL은 1959년만들어진비즈니스사무처리언어이다. 이언어는구어체 COBOL 문장형태로기술할수있도록설계되었다. PASCAL은 1970년대에니클라우스비르트에의하여개발된절차적인프로 PASCAL 그래밍언어이다. 파스칼은교육용언어로알려져있다. C언어는 1970년대초반, UNIX 운영체제를위하여 AT&T의벨연구소에서일 C 하던데니스리치에의하여만들어졌다. C++ 는 1983년벨연구소의스트로스트럽에의하여개발된언어로, C언어 C++ 에클래스개념을비롯하여여러가지객체지향적인특징들을추가한언어이다. Java는 1995년선마이크로시스템의제임스고슬링에의하여개발된객체 Java 지향언어이다. 자바는인터넷웹페이지상에서실행이가능하다. PROGRAM HELLO PRINT '(A)', 'Hello, World' STOP END IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. PROCEDURE DIVISION. DISPLAY 'Hello, World'. STOP RUN. program Hello(output); begin writeln('hello, World') end. int main(void) { printf("hello, World\n"); return 0; } int main() { cout << "Hello, World" << endl; return 0; } public class Hello { public static void main(string[] args) { System.out.println("Hello, World"); } } < 표 1-1> 프로그래밍언어

8 22 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 중간점검 1. 은과학기술계산에주로사용된다. 2. 은컴퓨터교육에사용할목적으로제작되었다. 3. 은 C에객체지향개념을추가한언어로서 C의상위집합이다. 4. 은기업의사무처리에적합하다. 5. 은인터넷상에서실행이용이하도록만들어진언어이다. 6. C언어를기초로만들어진대표적인 2가지언어는 과 이다. 1.3 C 언어 C언어는 1970년대초반, UNIX 운영체제를위하여 AT&T의벨연구소에서일하던 Dennis Richie에의하여만들어졌다. 처음만들어진후, 벨연구소안에서만사용되던 C언어는차츰외부에서도인기를얻기시작하더니현재는가장널리사용되는언어중의하나가되었다. Dennis Ritchie는이공로로 1983년에 Ken Thompson과함께컴퓨터분야의노벨상이라고불리는 Turing 상을수상하였다. [ 그림 1-7] Ken Thomson과 Dennis Ritchie가클린턴대통령으로부터 National Medal of Technology 상을받는장면 C언어의특징중에서중요한것들은다음과같다. C언어는간결한언어이다. C언어에는꼭필요한기능만이들어있고, C언어의모든표기법은매우간결하다. 이점은여러분들이학습을진행하면느낄수있을것이다. 간결성은 C언어의핵심적인특징이다. C언어는효율적인언어이다. C언어가효율적이라는의미는 C로작성된프로그램이크기가작으며실행속도가빠르고메모리를효과적으로사용한다는것을말한다. C언어는거의어셈블리언어수준의효율성을자랑한다. 이점은상업용프로그램을작성할때큰장점이된다.

9 제 1 장프로그래밍소개 23 C언어는저수준의프로그래밍도가능하고고수준의프로그래밍도가능하다. C언어는운영체제를만들었던언어이니만큼, 어셈블리언어만큼의구체적인하드웨어제어가가능하다. 실제로 TV, 휴대폰, 세탁기등의여러가지전자기기안에들어가는임베디드 ( 내장 ) 프로그램은대부분 C언어로개발되고있다. 예전에는어셈블리언어로작업을하였지만어셈블리언어는사용하는 CPU에따라서프로그램을변경시켜야되는치명적인약점이있다. C언어로임베디드프로그램을작성하게되면유지관리및다른기기로의이식도쉬워진다. C언어는포인터, 비트단위의조작으로여러가지하드웨어장비를섬세하게제어할수있다. 또한 C언어는모듈단위의프로그램작성을지원하고분할컴파일도가능하기때문에고수준에서의프로그램작성도가능하다. 하향식 (top-down) 설계, 구조화프로그래밍, 모듈화설계등의소프트웨어공학의다양한기법들을적용할수있다. C언어는이식성이뛰어나다. 이식성 (portability) 이란한번작성된프로그램을다른 CPU를가진하드웨어로쉽게이식할수있다는뜻이다. 많은종류의 CPU에대하여 C 컴파일러가개발되어있기때문에 C 프로그램은상대적으로이식성이좋다. 즉, PC에서개발된프로그램도컴파일만다시하면슈퍼컴퓨터에서수행시킬수있다. C언어는배우기가어렵다. C언어는초보자가배우기가어렵다고하는데, 교육을위하여일부러쉽게만들어놓은언어가아니라지금도산업현장에서사용되는언어이므로당연하다할것이다. 또한항상모든자유에는책임이따르듯이하드웨어를제어하기위하여꼭필요한요소인포인터등을잘못사용하는경우가많다. [ 그림 1-8] C 언어의특징

10 24 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 중간점검 1. 이번절에서새롭게등장한용어들의의미를인터넷을이용하여찾아보자. 어셈블리언어, 모듈, 임베디드프로그램, 소프트웨어공학 1.4 알고리즘 이제우리는프로그램이컴퓨터안에서무슨역할을하는지도알았고, 프로그래밍언어를사용하면더욱쉽게프로그램을작성할수있다는것도알았다. 그렇다면프로그래밍언어의규칙만학습하면프로그램을작성할수있는것일까? 다시말해, 프로그래밍언어를어떻게사용하는지만배우면프로그램을작성할수있는것일까? 요리로예를들어보자. 자, 요리를만들기위해서오븐을준비하였다. 그리고오븐을어떻게사용하는지도배웠다. 그렇다면음식재료만있으면누구나요리를할수있는것일까? [ 그림 1-9] 오븐 ( 컴퓨터 ) 이준비되고오븐에게명령을내리는방법 ( 프로그래밍언어 ) 을안다고하더라도요리를하는절차 ( 알고리즘 ) 를모르면요리 ( 프로그램 ) 를만들수없다. 한가지매우중요한것이빠져있다. 오븐의사용법을안다고해서누구나요리를만들수있는것은아니다. 어떻게요리를만들것인가? 가빠져있다. 즉, 요리를만드는절차가빠져있는것이다. 컴퓨터도마찬가지이다. 컴퓨터에명령을내리는프로그래밍언어만안다고해서프로그램을작성할수있는것은아니다. 주어진문제를어떤절차에따라서해결할것인가가빠져있으면프로그램을작성할수없다. 문제를해결하는절차 ( 또는방법 ) 가바로알고리즘 (algorithm) 이다. 이책에서는물론어려운알고리즘은등장하지않는다. 하지만아무리간단한프로그램이라도어떤절차에따라서주어진문제를해결할것인지를생각해보아야한다.

11 제 1 장프로그래밍소개 25 알고리즘이란? 어떤문제가주어져있고이것을컴퓨터로해결하려고한다고가정하자. 제일먼저해야할일은문제를해결할수있는절차를고안하는것이다. 예를들면, 전화번호부에서특정한사람 ( 박철수라고가정하자 ) 의전화번호를찾는문제를생각하여보자. 한가지방법은전화번호부의첫페이지부터시작하여한장씩넘기면서박철수를찾는것이다. 이방법은엄청난시간이걸리는방법으로보통이런식으로찾는사람은거의없다. 또하나의방법은전화번호부의이름들이정렬되어있음을이용하는방법이다. 전화번호부의중간정도를펼쳐서거기에있는이름들과박철수를비교하여앞부분으로가든지뒷부분으로간다. 다시찾아야할범위의중간부분에있는이름과박철수를비교한다. 이러한과정을박철수란이름을찾을때까지되풀이한다. 이러한방법은프로그래밍언어와는무관하다. 즉, C언어를사용하건 Java를사용하건사용되는방법은동일하다. 이렇게문제를풀기위하여컴퓨터가수행하여야할단계적인절차를기술한것을알고리즘 (algorithm) 이라고한다. 알고리즘을프로그래밍언어로구현하면프로그램이된다. 알고리즘은흔히요리법 (recipe) 에비유된다. 우리는요리를요리법에따라만들어본적이있을것이다. 예를들어, 빵을만드는알고리즘은다음과같다. 1 빈그릇을준비한다. 2 이스트를밀가루, 우유에넣고저어준다. 3 버터, 설탕, 계란을추가로넣고섞는다. 4 따뜻한곳에놓아두어발효시킨다 5 170~180 도의오븐에서굽는다 [ 그림 1-10] 알고리즘은요리법과같다. 빵을만들때도순서가잘못되면빵이만들어지지않는다. 빵을만드는방법은영어, 독일어, 프랑스어로도정확하게표현할수있듯이알고리즘은어떤프로그래밍언어로도동일하게표현할수있다. 같은빵을만드는방법도여러가지가있을수있듯이하나의문제에대하여알고리즘은여러개가있을수있다. 이경우프로그래머는가장효율적인알고리즘을선택하여구현하여야할것이다.

12 26 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 알고리즘의예간단한예를들어서알고리즘을설명하여보자. 많이사용되는예제가 1부터 10까지의합을구하는문제이다. 다음과같이몇가지의방법을생각할수있다. 각각의방법은하나의알고리즘이된다. 1 1 부터 10 까지의숫자를직접하나씩더한다 = 55 2 두수의합이 10 이되도록숫자들을그루핑하여그룹의개수에 10 을곱하고남은숫자 5 를더한다. 3 공식을이용하여계산할수도있다. 10*(1+10)/2=55 순서도그렇다면알고리즘은어떻게기술하는것이좋을까? 물론우리말로기술할수도있고아니면영어로기술할수도있다. 입문단계에서많이사용되는방법은순서도를사용하는것이다. 순서도는플로차트 (flow chart) 또는흐름도라고도하는것으로프로그램에서의논리순서또는작업순서를그림으로표현하는방법이다. 프로그래머는항상순서도를통해자신의논리를가시화하는것이좋다. 보통의순서도는단순한기하학적기호를사용한다. 즉, 처리는직사각형, 판단은마름모, 입출력처리는평행사변형기호를쓴다. [ 그림 1-11] 순서도작성에사용되는기호

13 제 1 장프로그래밍소개 27 예를들어, 프린터고장을처리하는알고리즘은다음과같다. [ 그림 1-12] 순서도의예 : 프린터고장을처리하는알고리즘 순서도의단점은알고리즘이복잡해지면기술하기가힘들어진다는점이다. 중간점검 1. 친구에게전화를거는알고리즘을만들어보라. 2. 세탁기를이용하여세탁을하는알고리즘을만들어보라. 1.5 프로그램개발과정 이제부터는실제로컴퓨터에서실행되는프로그램을작성하여보자. 먼저전체적인과정을살펴보자.

14 28 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 [ 그림 1-13] 프로그래밍의순서 1 에디트 (edit) 단계컴퓨터에작업을지시하는문서를만들어야한다. C언어를이용하여원하는작업의내용을기술한것을소스코드 (source code) 라고한다. 소스코드가파일에저장된것을소스파일이라고한다. 소스파일이름은프로그래머가마음대로지정할수있다. 다만파일의확장자는항상.c 이어야한다. 2 컴파일 (compile) 과링크 (link) 단계컴파일러를이용하여소스파일에저장된소스코드를기계어로변환한다. 컴파일러는소스파일의문장을분석하여문법에맞도록작성되었는지를체크한다. 만약오류가발견되면사용자에게오류를통보하고컴파일은종료된다. 이런경우에프로그래머는에디팅단계로되돌아가서소스파일을수정하여야한다. 만약오류가없다면컴파일러는각문장들을기계어로변환한다. 이기계어로되어있는파일은오브젝트파일 (object file) 이라고불린다. 오브젝트파일은윈도우즈에서는.obj 확장자를가지고있다. 예를들어, test.c를컴파일하면 test.obj라는이름의오브젝트파일이생성된다. 링크 (link) 란서로연관된오브젝트파일들을라이브러리파일들과연결하여하나의실행파일 (execute file) 을만드는절차이다. 링크가끝나면비로소실행가능한파일인 test.exe 가생성된다. 3 실행 (execute) 단계실행파일을컴퓨터에서실행시키면서자신이원하는작업을올바르게하고있는지확인하는단계이다.

15 제 1 장프로그래밍소개 29 필요한도구프로그램을제작하려면어떠한도구가필요할까? 먼저소스파일을만드는데는텍스트에디터가필요하다. 메모장과같은에디터도사용할수있다. 소스파일을컴파일하여서실행파일로만들려면컴파일러가필요하다. 컴파일러는비용을지불하고구입하여야하지만입문자들을위한컴파일러는무료로제공된다. 대표적인컴파일러가바로우리가사용하려고하는비주얼 C++ 이다. 또오류를찾아내는데필요한디버거가있다. 예전에는에디터, 컴파일러, 디버거등이별도의분리된프로그램이었다. 따라서프로그래머들은매번여러개의프로그램을실행시켜야했다. 프로그램개발은통합개발환경 (IDE: integrated development environment) 과같은소프트웨어도구들이등장하면서더욱간편하고효율적으로프로그램을작성할수있게되었다. 통합개발환경은프로그램개발에필요한기능인에디팅, 컴파일, 실행, 디버깅기능을하나의프로그램안에모두넣어서프로그램개발을쉽게해주는도구를의미한다. 비주얼 C++ 윈도우즈에서의대표적인통합개발도구는마이크로소프트사의비주얼 C++(Visual C++) 이다. 비주얼 C++ 의최신버전은비주얼 C 이다. 여기에서는사용자의수준에맞추어서몇가지의제품을제공하고있다. 특이한점은학생및초보자가쉽게배울수있는비주얼 C++ 익스프레스에디션 (Express Edition) 을제공하고있다. 이것은인터넷에서무료로다운로드받아서설치할수있다 ( com/express/vc/).

16 30 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 [ 그림 1-14] 비주얼스튜디오 2008 비주얼 C++ 는 C언어와 C++ 언어를이용하여윈도우형태를비롯하여여러가지형태의응용프로그램을개발할수있도록하여주는통합개발도구이다. 여기서우리가만들려고하는형태는콘솔 (console) 프로그램이다. 콘솔프로그램은콘솔을이용하여텍스트형태로입력과출력을하는매우간단한프로그램이다. 주로문자입출력만이가능하며윈도우나그래픽은불가능하다. 너무실망할필요는없고항상중요한것은화려한외양보다내용이다. 소스파일과오브젝트파일, 실행파일중에서반드시보관하여야하는파일은무엇일까? 정답은소스파일이다. 소스파일만있으면컴파일러를수행시켜서오브젝트파일, 실행파일을만들수있다. 하지만소스파일을삭제하면컴파일이불가능하다. 따라서반드시소스파일을잘보관하여야한다. Visual C++ 에서는프로젝트와워크스페이스파일도같이보관하는것이좋다. 이러한파일들은다시만들수도있지만번거로운작업이된다. 먼저간단한 C 프로그램을에디터로입력하여소스파일로만들고컴파일과링크한다음, 실행시켜보자.

17 제 1 장프로그래밍소개 31 만약여러분이게임프로그램을작성하였다고가정하자. 프로그램을판매하여이익을얻으려고한다. 그런경우에여러분은소스파일, 오브젝트파일, 실행파일중에서어떤파일을구매자한테주어야할까? 정답은실행파일이다. 실행파일은독립적인파일이다. 즉, 다른파일들이없어도독립적으로수행될수있다. 구매자들은실행파일만있으면얼마든지실행할수있다. 또한 C 컴파일러도필요없다. 만약소스파일을구매자한테준다면구매자가소스를변경하여다른게임을만들수있기때문에조심하여야한다. 업체들이소스파일을공개하지않는것은이런이유때문이다. 중간점검 1. 프로그램작성단계에는,, 이있다. 2. 프로그램개발에필요한도구를묶어서제공하는것을 이라고한다. 1.6 비주얼 C++ 를이용한프로그램작성 비주얼 C++ 의실행먼저 [ 시작 ] 을클릭하고 [ 모든프로그램 ] 에서 [Microsoft Visual C Express Edition] 을찾아서실행시키거나바탕화면에서비주얼 C++ 아이콘을찾아서더블클릭한다. 초기화면은다음과같다.

18 32 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 프로젝트의생성비주얼 C++ 를사용하여프로그램을작성하려면먼저솔루션과프로젝트에대하여이해를하여야한다. 솔루션 (solution) 은하나의애플리케이션을생성하기위한프로젝트들의그루핑이다. 프로젝트 (project) 란하나의실행파일을만드는데필요한모든파일들을묶어놓은것이다. 프로젝트에는소스파일, 리소스파일, 외부파일과같은것들이포함된다. 먼저 [ 파일 ] [ 새로만들기 ] [ 프로젝트 ] 메뉴를선택하여서새로운프로젝트를만들어보자. 프로젝트를생성하면솔루션은자동으로생성된다. [ 파일 ] [ 새로만들기 ] [ 프로젝트 ] 를선택하면다음과같은화면이등장한다. 프로젝트형식으로는 [ 일반 ] 을선택하고템플릿은 [ 빈프로젝트 ] 를선택한다. 이어서새로운프로젝트의이름을입력한다. 프로젝트가저장되는폴더는 [ 찾아보기 ] 버튼을클릭하여서변경할수있다. 솔루션의이름은자동으로입력된다.

19 제 1 장프로그래밍소개 33 소스파일의생성프로젝트를만들었으므로이제는소스파일을생성시켜보자. 소스파일을프로젝트에추가하기위해서는 [ 프로젝트 ] 메뉴에서 [ 새항목추가 ] 를실행한다. 그러면다음과같은화면이등장한다. 여기서 [ 코드 ] 와 [C++ 파일 (.cpp)] 을선택하고파일이름을입력한다. 우리가작성하려고하는것은 C++ 파일이아니고 C 파일이지만걱정할것은없다. 파일이름을입력할때확장자를.c로하면된다. 만약확장자를지정하지않으면확장자가.cpp인소스파일이기본적으로생성된다.

20 34 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 소스코드의입력왼쪽상단에있는솔루션탐색기에보면리소스파일, 소스파일, 헤더파일의세가지폴더가보인다. 우리가만든 test01.c는소스파일폴더에들어있다. test01.c 파일을더블클릭하면 test01.c가열리면서에디터가실행되어오른쪽화면에서소스코드를입력할수있다. 이상태에서오른쪽윈도우에소스를입력하면된다. 다음의소스를주의하여서그대로입력하여보자. 소스코드를입력할때는흔히한두글자는틀리기쉽다. 그러나한글자만틀려도프로그램은컴파일되지않는다. 따라서처음에는다음을참조하여코드를보이는대로그대로입력하도록하자. [ 그림 1-15] 소스코드를오른쪽과같이입력하여야한다. 소스코드를입력할때주의하여야할사항을살펴보자. C에서는대문자와소문자를구별한다. 따라서대문자와소문자를정확하게구별하여입력하여야한다. 즉, main과 Main은서로다르다. 주어진소스코드를입력할때한글자라도틀리지않게철자에주의하여야한다.

21 제 1 장프로그래밍소개 35 하나의기호만틀려도실행이불가능하다. stdio.h라고해야할것을 stdio,h로입력하면안된다. 컴퓨터는믿을수없을만큼멍청하다. 소스코드에서의각문장은세미콜론 (;) 기호로끝나야한다. ; 기호는마침표역활을한다. 각문장과문장사이에는공백이있어도된다. 또한문장은들여쓸수있다. 그러나일단은주어진대로입력하도록하자. 화면을캡처한그림에서도알수있지만단어들이파란색, 붉은색, 검은색으로나타난다. 만약자신이입력한단어가그림의색상과다른경우에는다시한번확인을하여야한다. 그림과완전히 100% 동일한경우에만올바르게컴파일된다. Q 비주얼 C++ 를사용하여프로그램을작성하는경우에반드시비주얼 C++ 에서지원되는에디터만을이용해야되는가? A 다른에디터를이용해도된다. 단, 에디터를이용하여파일을저장할때파일의확장자가 c 로끝나야된다. 확장자가 c 인파일은프로젝트의 [ 소스파일 ] 이라고되어있 는부분에추가할수있다. [ 소스파일 ] 위치에서마우스오른쪽버튼을누르고 [ 추가 ] 메뉴를선택하면삽입시킬파일을물어본다. 컴파일과링크소스코드를다입력하였으면컴파일과링크를하여실행파일을만들어보자. 컴파일과링크를하려면 [ 빌드 ] 메뉴의 [ 솔루션빌드 ] 를선택하면된다. 소스파일은자동으로저장된다.

22 36 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 화면은컴파일과링크과정에서오류와경고의숫자가 0이라는것을나타낸다. 만약여러분이입력하는과정에서철자를잘못입력하게되면오류와경고가 0이아닐수가있다. 이경우에는입력한소스코드를다시한번교과서와비교해보고오류를수정한다음, 다시빌드를하여야한다. 만약철자를하나잘못입력하였다고가정하자. 문장끝의 ; 을 : 으로잘못입력했다고하면, 컴파일러는다음과같은오류메시지를출력하게된다. 위의오류메시지를보면 test01.c의 5번라인에서구문오류가발생했다는것을알수있다. 프로그래머는오류메시지에서오류설명을보고소스코드를수정할수있어야한다. 프로그램실행지금까지작성한프로그램을실행시키려면 [ 디버그 ] 메뉴의 [ 디버깅하지않고시작 ] 메뉴항목을선택한다. 만약실행시간오류가없다면다음과같은 MS-DOS 창이뜨고여기에 Hello World! 가출력된다. 이상태에서아무키나누르면프로그램이종료되고다시비주얼 C++ 로되돌아간다. 실행화면에서 계속하려면아무키나누르십시오... 는프로그램의출력이아니고계속진행하려면아무키나누르라는안내메시지이다. 이메시지는프로그램을실행시켰을때항상나오는메시지이다. Hello World! 가예제프로그램의출력이된다. 참고독자들중에서는혹시왜프로그램의출력이명령프롬프트에텍스트로나오는지궁금해하는사람도있을것이다. C언어가만들어진 1970년대에는주로텍스트로입력과출력을하였다. 따라서 C 프로그램은기본적으로텍스트입력과출력을가정한다. 하지만그래픽프로그램을 C언어로작성하지못한다는의미는절대아니다. 비주얼 C++ 에서도프로젝트의유형을 [Win32] 로하면윈도우에서실행되는그래픽프로그램을작성할수있다.

23 제 1 장프로그래밍소개 37 위와같은화면이나오면프로그램이성공적으로실행된것이다. 이작은프로그램에대한설명은 2장에서자세하게살펴보자. Q Visual C 버전에서는소스파일, 오브젝트파일, 실행파일이어디에저장되는가? A 소스파일은 / 지정폴더 / 솔루션 / 프로젝트 / 에저장된다. 위의예에서는 C:/source/chapter01/test01/test01/ 에 test01.c 가저장된다. 오브젝트파일과실행파일은앞의폴더안의 debug 폴더에저장된다. 중간점검 1. 새로운프로젝트를생성하고프로젝트에소스파일을추가하는메뉴는무엇인가? 2. 프로젝트에속하는소스파일을컴파일하여실행하는메뉴는무엇인가? 3. C언어에서는대문자와소문자를구별하는가?

24 38 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 Q & A Q 컴퓨터는왜십진수가아닌이진수를사용하나? A 이진수의각자릿수는 0 아니면 1 이다. 0 은스위치가열린상태 (OFF) 로표현할수있고 1 은스위치가닫힌상태 (ON) 로표현할수있다. 따라서여러개의스위치를 늘어놓으면이진수를나타낼수있다. 이진수는컴퓨터가받아들이기아주쉽다. 컴퓨터에서는내부적으로모든것을이진수형태로표현하여처리한다. Q 지금은객체지향언어시대라고한다. 그래도 C 언어를공부하여야하는가? A C 언어는현재많이사용되는객체지향언어인 C++, 자바의어머니격이되는언어이다. 지금도전자기기안에내장되는임베디드프로그램은 C 언어를많이사 용한다. 그리고많은응용프로그램들이스크립트언어로 C언어와유사한언어들을제공한다 ( 예를들어서 MATLAB). 결론적으로프로그래머가되려고하면 C언어는필수라고할수있다. Q 왜이름이 C 언어인가? A C 언어라고이름붙여진이유는이전에존재하였던 B 언어에서많은특징들을따왔기때문이다. B 언어는 BCPL 이라는언어의간략화된버전이었다고한다.

25 제 1 장프로그래밍소개 39 Exercise 1. 컴퓨터가사용하는진법은? ( ) 1 2진법 2 8진법 3 10진법 4 16진법 2. 소스프로그램을오브젝트프로그램으로변환하는도구는무엇인가? ( ) 1 링커 2 컴파일러 3 에디터 4 디버거 3. 다음중에서 C언어의특징으로올바른것을모두선택하여라. ( ) 1 비교적간결한언어에속한다. 2 개발된프로그램을다른컴퓨터로옮기기쉽다. 3 하드웨어제어가가능하다 4 객체지향프로그래밍이가능하다. 4. 문제를해결하는절차를시각적으로표현하는것은무엇인가? ( ) 1 구조도 2 순서도 3 의사코드 4 설명도 5. 다음의프로그램개발과정을순서대로적어라. ( ) 1 소스코드를컴파일한다. 2 에디터를이용하여소스코드를작성한다. 3 논리적인오류를추적하기위하여디버깅한다. 4 오브젝트파일들을모아서링크한다. 5 프로그램을실행한다. 6 알고리즘을설계한다. 6. 컴퓨터를이용하여문제를해결하기위한단계 ( 절차 ) 를무엇이라고하는가? ( ) 1 알고리즘 2 객체지향 3 구조적방법 4 자료구조 7. 프로그래밍언어의문법을위반하였을경우에발생하는오류는? ( ) 1컴파일시간오류 2실행시간오류 3 논리적인오류 4 링크시간오류 8. 순서도 (flowchart) 에서처리를나타내는기호는? ( )

26 40 CHAPTER 01 누구나쉽게즐기는 C 언어콘서트 9. 다음중에서 C언어를개발한사람은누구인가? ( ) 1 Dennis Ritchie 2 Kernighan 3 Niklaus Wirth 4 Bjarne Stroustrup 10. 컴퓨터에서십진법이아닌이진법이사용되는이유를설명하여라. 11. 인텔의 CPU에서사용되는명령 (instruction) 에서 3가지를선택하여무슨일을하는명령어인지를조사하여라. 12. 주판, 계산자, 계산판등의고대의계산하는기계들하고현대의컴퓨터와결정적인차이점은무엇인가? 13. 컴퓨터를이용하여문제를해결할때, 문제를해결하는방법을인간이구체적으로고안하여알려주어야한다면, 왜컴퓨터를사용하는것인가? 인간이직접하는편이낫지않을까? 컴퓨터를사용하는경우의장점을들어라. 14. 임베디드시스템이란어떤것인가? 인터넷에서자료를찾아서정리하여라. 15. 주어진두수의평균을구하는알고리즘을작성하여라. 16. 사용자로부터원의반지름을입력받고, 반지름에 2를곱하여지름을구하고, 여기에 3.14를곱하여원주를구하는알고리즘을순서도를이용하여기술하여라. 17. 사용자에게입력받은 5개의정수중에서최솟값을찾는문제에대한알고리즘을작성하여라 부터 10까지의숫자들이있다. 이들숫자들은순서대로되어있지않다. 이들숫자들을크기순서대로정렬시키는알고리즘을생각할수있는가? 19. 두개의숫자중에서큰수를반환하는연산만지원되는컴퓨터가있다. 이컴퓨터에서 3개의숫자중에서제일큰수를찾으려고하면어떤알고리즘을사용해야하는가? 순서도로그려보아라. 20. 두개의컵에우유와주스가각각담겨있다. 우유와주스를교환하기위한알고리즘을고안하여라. 사용가능한세번째컵이있다고가정하여라. 21. 소스파일, 오브젝트파일, 실행파일의차이점을설명하여라. 22. 컴파일러와링커가하는일을정리하여라. 23. 영어의문장을예로들어서문법적인오류와논리적인오류를설명하여라. 24. 다음소스에는많은오류가있다. 오류를찾아내서수정하여라. /* 첫번째프로그램 * / include <stdio.h> int Main(void); { printf("hello World!\n") return 0; }

27 02 기초사항 C PROGRAMMING CHAPTER 학습목표 프로그램의각구성요소들을간단히학습한다. 키보드로부터입력하는방법을학습한다. 콘솔로출력하는방법을학습한다. C O N T E N T S 2.1 첫번째프로그램 2.2 화면출력 2.3 연산이있는프로그램 2.4 입력과출력이있는프로그램 2.5 오류수정및디버깅 2.6 응용프로그램

28 02 CHAPTER 기초사항 C PROGRAMMING 2.1 첫번째프로그램 1장에서컴파일하고실행시킨소스코드를분석하여보자. 이프로그램은 "Hello World!" 라고하는문자열을화면에출력하는프로그램이다. 이프로그램은전통적으로 C 프로그램의세계에들어오는사람들이처음으로작성하는프로그램이되어왔다. 프로그램의구성요소들을설명하여보자. hello.c /* 첫번째프로그램 */ #include <stdio.h> int main(void) { printf("hello World!"); return 0; } 함수의종료 주석헤더파일포함 함수의시작 실행되는문장 실행결과 Hello World! 주석 /* 첫번째프로그램 */ 위의문장은주석 (comment) 이라고불린다. 주석이란프로그램에대한설명이다. 주석은 /* 로시작하여서 */ 로끝난다. 주석은컴파일러에의하여무시되기때문에프로그램의동작에는전혀영향을끼치지않는다. 무엇이든지적어놓을수있으며한줄또는여러줄이될수있다. 그렇다면도대체주석은어디에필요한것인가? 주석은컴퓨터를위한것이아니고프로그램을읽는사람을위한것이다. 주석은프로그램의가독성을높인다. 주석에는보통프로그램의구조와동작을설명해주는문장들

29 제 2 장기초사항 43 이들어간다. 대개작성자, 작성목적, 작성일자, 코드설명등이주석에포함된다. / 와 * 은반드시붙여서쓰도록한다. 문법 예 /*... */ /* 한줄로된주석 */ /* 여러줄로된주석 */ 현재의 C 프로그램에서는더욱편리한새로운타입의주석을사용할수있다. 바로이중슬래시 // 이다. 이중슬래시는 // 부터줄의끝까지가주석이라는것을나타낸다. // 이줄은전체가주석이다. printf("hello World!"); // 문자열을화면으로출력 좋은주석은코드를그대로설명하지않는것이라고한다. 좋은주석은코드를작성한의도를명확히나타낸다. 주석은프로그래머가무엇을하려고하는지를훨씬높은수준에서설명하여야한다. [ 그림 2-1] 주석 헤더파일포함 #include <stdio.h> # 으로시작하는문장은전처리기지시자이다. 전처리기 (preprocessor) 는보통본격적으로컴파일하기전에사전정지작업을하는컴파일러의일부분이다. #include는소스코드안에특정파일을현재의위치에포함시키라고지시한다. 이러한파일들

30 44 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 은헤더파일 (header file) 이라고불리며, 헤더파일은컴파일러가필요로하는정보를가지고있다. 전처리기지시자문장끝에는세미콜론을붙이면안된다. 문법 예 #include < 헤더파일 > #include <stdio.h> #include <memory.h> stdio.h라는파일은입출력함수에대한정보를가지고있는헤더파일이다. 헤더파일들은일반적으로.h 확장자를가지고있다. 대부분의프로그램에서한개이상의헤더파일을사용한다. 우리는대부분의경우, stdio.h 헤더파일을포함시킬것이다. 헤더파일은보통소스파일의시작부분에포함시킨다. [ 그림 2-2] 헤더파일이 #include 위치에삽입된다. 줄바꿈및들여쓰기 hello.c의 3번째줄은비어있는데이는프로그램을보기쉽게하기위하여빈줄을의도적으로둔것이다. 문장과문장사이에는얼마든지빈줄을둘수있다. 빈줄은프로그램의실행결과에는아무런영향을끼치지않는다. 여기서잠깐들여쓰기 (indentation) 에대하여설명을하고지나가자. 들여쓰기는소스코드의가독성을높이기위하여같은수준에있는문장들을왼쪽끝에서몇자안으로들여보내거나적당한공백문자를삽입하는것이다. 들여쓰기를잘하면소스보기가매우편해진다. 반면에들여쓰기를하지않으면똑같이실행되기는하지만읽기에불편한프로그램이된다.

31 제 2 장기초사항 45 [ 그림 2-3] 줄바꿈및들여쓰기 함수 1장에서프로그램은작업지시서와같다고이야기하였다. 그렇다면작업을지시하는문장들은어디에들어가게될까? 바로다음과같은공간안에작업을지시하는문장들을넣으면된다. int main(void) { } 작업을지시하는부분 위의문장은실제로는 main() 함수를정의하는문장이다. 함수 (function) 란특정한작업을수행하는코드의집합이다. 함수는입력이주어지면출력을만들어내는가상적인기계와같다. [ 그림 2-4] 함수 하나의프로그램은여러개의함수들로이루어진다. 그러나우리는당분간 main() 함수만을사용할것이다. main() 함수는특별한의미가있다. 왜냐하면모든 C 프로그램은 main() 에서시작하기때문이다. 따라서모든 C 프로그램에는반드시하나의 main() 함수가있어야한다.

32 46 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 [ 그림 2-5] main() 함수 함수는 6장에서자세하게기술되겠지만일단간단하게함수에대한설명을하여보자. int main(void) 은함수의이름과함수의입출력을나타낸다. int, main, void는 C언어에서모두미리정해진단어로키워드라고하는데, int는출력타입이고, main 은함수이름이며, void는입력타입이다. 따라서 int main(void) 는함수main은 void 형태의입력을받아서처리하여출력을 int 형태로내보낸다는것을의미한다. void는비어있다는뜻이므로이는입력이없다는것을말한다. int는정수타입을나타내므로출력은정수형태임을알수있다. 함수의구성요소를다시정리하여보면다음과같다. [ 그림 2-6] 함수의구성요소 함수의출력타입함수의이름 int main(void) 함수의입력타입 { printf("hello World!\n"); return 0; } 함수의시작함수의몸체 함수의끝 함수의시작과끝은 { 과 } 로나타낸다. { 과 } 사이에함수의몸체부분이들어간다. 함수의몸체에는작업을수행하는문장들이들어간다. 예를들어, 만약함수가화면에출력하는작업을한다면화면에메시지를출력하는문장들이 { 과 } 사이에들어간다. 문장그렇다면이제함수의몸체에들어가서작업을지시하는문장 (statement) 에대하여살펴보자. 문장은하나의작은처리를나타낸다. 프로그램이어떻게동작하느냐는어떤문장이함수안에포함되느냐에달려있다. 문장을이용하여화면에값들을출력할수도있고수학적인계산을할수도있다. 한글문장의끝에는마침표를찍듯이소스코드문장의끝에는반드시 ;( 세미콜론 ) 을찍어야한다. 문장들은기본적으로처음부터차례대로실행된다. 즉, 예제에서살펴보면먼저 printf("hello World!"); 문장이실행되고다음에 return 0; 문장이실행된다.

33 제 2 장기초사항 47 int main(void) { printf("hello World!"); return 0; } 순차적으로실행된다. printf("hello World!"); 문장은 printf() 함수를호출하여콘솔화면에텍스트 Hello World! 를출력하는문장이다. 함수를호출한다고하는것은이미작성되어있는함수를사용한다는뜻이다. printf() 함수는컴파일러가우리에게제공하는함수로써콘솔화면에텍스트나데이터값들을출력할때사용하는라이브러리함수이다. 일반적으로 printf 함수는큰따옴표사이에있는문자들을그대로화면에출력한다. 큰따옴표로둘러싸인텍스트를문자열 (string) 이라고한다. 예제프로그램에서 "Hello World!" 가바로문자열이다. 화면출력은상당히중요한작업이기때문에다음절에서상세하게살펴보자. return은함수가작업을끝내고작업의결과를반환할때사용된다. return 0; 문장이실행되면 main() 함수는작업을끝내고외부로 0값을반환한다. 여기서외부라고하는것은이프로그램을실행시킨윈도우 XP와같은운영체체를가리킨다. 보통 0의값은프로그램이정상적으로종료했음을나타낸다. 참고 printf() 에서 f는 formatted를의미한다. 즉, 형식 (format) 을지정하는출력함수라는의미이다. printf() 함수는프린트에프라고읽으면된다. 중간점검 1. 주석이하는역할은무엇인가? 2. 주석을여러줄로하려면어떤스타일을사용하여야하는가? 3. #include 문은어떤동작을하는가? 4. 모든문장의끝에있어야하는기호는? 2.2 화면출력 화면출력은어떤프로그램에서도중요하다. 보통프로그램은결과를어딘가에출력하여야하기때문이다. 요즘은윈도우에다가그래픽으로출력하는것이대세이지만그래픽을사용하려면약간은복잡한과정을거쳐야한다. C언어는전통적으로콘솔화면에텍스트를출력하는기능을기본으로제공한다. 바로 printf() 가출력을담당하는라이브러리함수이다. 라이브러리함수란프로그래머가사용할수있도록컴파일러가기본적으로제공하는함수들을의미한다. 라이브러리에있는함수들은누구든지사용할수있다.

34 48 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 [ 그림 2-7] 라이브러리함수는컴파일러가프로그래머한테제공하는함수들이다. 즉, 우리가다음과같은문장을작성하면컴퓨터는따옴표안의텍스트를화면에출력한다. [ 그림 2-8] printf() 함수 라이브러리에는많은함수들이기본으로제공되고있는데, 그중에서 printf() 는콘솔화면에출력을하기위한함수이고, 뒤에나오는 scanf() 는키보드에서의입력을위한함수이다. 줄바꿈기호앞에서화면에문자열을출력하는아주간단한프로그램을작성하여보았다. 우리가만든첫번째프로그램을약간만확장시켜보자. 우선출력을다음과같이한줄이아닌두줄로하려면어떻게할까? 실행결과 Hello World! Kim ChulSoo 첫번째예제에서는 printf("..."); 에있는큰따옴표안의텍스트가화면에출력되었다. 그리고 main() 함수안에들어있는문장들은순차적으로수행된다고하였다. 따라서비슷한문장을하나더만들어서추가하여실행하면원하는결과를얻을수있을것이다.

35 제 2 장기초사항 49 hello1.c /* 첫번째프로그램의응용 */ #include <stdio.h> int main(void) { printf("hello World!"); printf("kim ChulSoo"); } return 0; 순차적으로실행된다. 실행결과 Hello World!Kim ChulSoo 하지만실행결과는우리가원하는것과약간다르다. Hello World! 를출력한후에다음줄에 Kim ChulSoo를출력하려면화면에서줄을바꾸어주어야한다. 줄바꿈문자는 \n으로표현된다. \n처럼역슬래시 (\) 가먼저나타나면특별한의미를가진다. \ 와 n이합쳐진 \n은줄바꿈 (newline) 을의미한다. \n은화면의커서를다음줄의시작위치로옮긴다. 여기서커서라고하는것은마우스의커서가아니고 MS-DOS 창과같은콘솔화면에서의커서를의미한다. [ 그림 2-9] \n은화면에서줄을바꾸는데사용되는특수한문자이다. 따라서줄바꿈문자를이용하여서위의프로그램을다시작성해보면다음과같다.

36 50 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 hello2.c /* 첫번째프로그램의응용 */ #include <stdio.h> int main(void) { printf("hello World!\n"); printf("kim ChulSoo\n"); } return 0; 줄바꿈문자 실행결과 Hello World! Kim ChulSoo 화면에여러줄을출력한다. 이제까지배운것을바탕으로화면에구구단의일부를다음과같이출력하여보자. 실행결과 3 1 = = = 9 여기에서도마찬가지로 main() 안의문장들은순차적으로실행되므로다음과같이문장을배치하면된다. gugu.c /* 첫번째프로그램의응용 */ #include <stdio.h> int main(void) { printf("3 X 1 = 3\n"); printf("3 X 2 = 6\n"); printf("3 X 3 = 9\n"); } return 0; 순차적으로실행된다.

37 제 2 장기초사항 51 중간점검 1. 줄바꿈문자인 "\n" 이하는역할은무엇인가? 2. main() 함수안의문장들은어떤순서대로실행되는가? 2.3 연산이있는프로그램 앞에서출력문만있는아주간단한프로그램을살펴보았다. 그러나일반적인프로그램은외부로부터데이터를받아서, 데이터를처리한후에, 결과를화면에출력한다. 이번장에서는이러한일반적인구조를가지는프로그램을작성하여보자. 이프로그램들을난이도순으로학습하여보자. 첫번째프로그램은두개의정수를가지고덧셈연산을실행한후에, 연산결과를화면에출력한다. 이프로그램에서는데이터들을메모리에저장하기위하여변수라는새로운개념을사용한다. 이프로그램을통해덧셈연산을실행하는문장을배우고, printf() 함수를사용하여변수의값을출력하는방법도살펴본다. 먼저소스프로그램을전체적으로살펴본다음에각구성요소별로좀더자세히설명한다. add1.c /* 두개의숫자의합을계산하는프로그램 */ #include <stdio.h> int main(void) { int x; int y; int sum; } // 첫번째정수를저장할변수 // 두번째정수를저장할변수 // 두정수의합을저장하는변수 x = 100; 변수에값을할당 y = 200; 덧셈연산 sum = x + y; printf(" 두수의합 : %d", sum); return 0; 변수의값을출력 변수선언 실행결과 두수의합 : 300

38 52 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 변수 int x; int y; int sum; // 첫번째정수를저장하는변수 // 두번째정수를저장하는변수 // 두정수의합을저장하는변수 위의문장들은변수를정의하는문장이다. 변수 (variable) 란프로그램이사용하는데이터를일시적으로저장할목적으로사용하는메모리공간이다. 변수를요리에비유하여이야기하면그릇이라고할수있다. 요리는여러가지재료를이용하여만든다. 요리를하려면외부에서음식재료를받아서어딘가에놓아야한다. 이때필요한것이그릇이다. 재료들을일단은그릇에놓아야다음에사용할수있는것이다. 프로그램에서변수도그릇과마찬가지의역할을한다. 어떤처리를하려면먼저입력데이터값들을어딘가에저장해야한다. 이때필요한것이변수이다. 변수는데이터값을일시적으로저장하는역할을한다. [ 그림 2-10] 프로그램에서의변수는요리에서의그릇과같다. 그릇에음식재료들이담기듯이변수에는데이터들이저장된다. 변수는데이터값을저장하고있는상자로생각하면이해가쉽다. 이상자는컴퓨터안의메인메모리안에만들어진다. 앞으로는변수를상자로그리기로하자. [ 그림 2-11] 변수와상자 변수는어떤데이터를저장하느냐에따라여러가지타입이있다. 상자도여러가지

39 제 2 장기초사항 53 크기가있는것처럼변수도담을수있는데이터의종류나범위에따라여러가지타입이있다. 예를들면, 정수를저장할수있는변수도있고실수나문자를저장할수있는변수도있다. 작은상자에큰물건을넣을수없는것처럼변수도큰값을작은값을저장하는변수에저장할수는없다. [ 그림 2-12] 변수는저장할수있는데이터의종류나범위에따라여러가지종류가있다. 상자와상자를구분하기위해서는각각의상자에이름을붙이는것이편리하듯이각각의변수들도자신만의이름을가지고있다. 우리는이이름을사용하여변수들을구분한다. [ 그림 2-13] 변수들은자신만의이름을가지고있다. 변수선언 C언어에서변수를사용하려면먼저변수를선언하여야한다. 변수선언이란컴파일러에게지금부터이러이러한변수를사용하겠다고미리말을해두는것이다. 또어떤타입의데이터가그변수에저장되는지도컴파일러에게미리알리는것이다. [ 그림 2-14] 변수들은사용하기전에미리선언하여야한다. 선언한다는것은컴파일러에게미리변수들을소개하는것과같다. 변수를선언하는방법은자료형 ( 즉변수가무엇을저장할것인지 ) 과변수의이름 ( 앞으로어떤이름으로불릴지 ) 을적어주는것이다. 그형식은다음과같다.

40 54 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 문법 예 자료형변수이름 ; int i; float sum; double x, y; 자료형 (data type) 이란변수가저장할데이터가정수인지실수인지, 아니면또다른어떤데이터인지를지정하는것이다. 자료형에는정수형, 실수형, 문자형이있다. 정수형은 12나 -35 같은정수를나타내는자료형으로정수의범위에따라다시 short, int, long으로나누어진다. 실수형은소수점을가지는실수값을나타내며실수의범위에따라 float와 double로나누어진다. 문자형은하나의문자를나타내는자료형으로 char뿐이다. [ 그림 2-15] 표준자료형의종류 예제프로그램에서는 3 개의정수를저장할수있는변수가필요하다. 이들변수들을 x, y, sum이라는이름으로생성하였다. 이들변수들은모두정수를저장하면되므로정수형으로선언하였다. int x; int y; int sum; // 첫번째정수를저장하는변수 // 두번째정수를저장하는변수 // 두정수의합을저장하는변수 모든변수는함수의처음부분에서선언하여야한다. 변수를선언하는것도하나의문장이므로반드시세미콜론으로끝나야한다. 변수가선언되면메모리의공간이확보되며이공간에이름이매겨지게된다. 아직까지값은저장되지않았다. 즉 [ 그림 2-16] 과같은상태이다. [ 그림 2-16] 변수를선언하면메모리공간에값들을저장할수있는상자가만들어진다고볼수있다.

41 제 2 장기초사항 55 상수상수 (constant) 란그값이프로그램이실행되는동안변하지않는수또는변경불가능한수를의미한다. 3, 123, 등이상수이다. 예제프로그램 add.c에서 100과 200이바로상수이다. 상수가왜필요한지생각하여보자. 연봉을계산하는프로그램을작성한다고해보자. 연봉을계산하려면 1년은 12달로되어있으므로월급에 12를곱하여야한다. 12와같은숫자도프로그램에반드시필요하다. 따라서 12와같은것들이상수가된다. [ 그림 2-17] 변수와상수 상수는변수와반대되는개념이다. 변수는프로그램도중에변경될수있는수이다. 반면상수는처음부터끝까지그값이변하지않는다. 상수는변수들의초기값을설정할때도필요하고각종산술적인연산에서도필요하다. 상수에는정수상수도있고실수상수도있다. 실수상수는일상생활에서사용하는대로 와같이표기하면된다. 이것이외에도문자를나타내는문자상수, 문자열을나타내는문자열상수등이있다. 문자상수는하나의변하지않는문자를나타내는것으로작은따옴표를사용하여 'a' 와같이표기한다. 문자열상수는큰따옴표를사용하여 "Hello World!" 와같이나타낸다. 대입연산 x = 100; y = 200; 변수는값을저장하기위하여선언한다. 그렇다면변수에값을저장하는방법은무엇일까? 위의문장처럼 = 연산자를이용하면된다. = 연산자를대입연산자 ( 또는할당연산자 ) 라고한다. 즉, 변수에값을대입한다는의미이다. = 의좌변에는값을저장할수있는변수가위치하고우변에는저장될값이위치한다.

42 56 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 [ 그림 2-18] C에서는 = 연산자가변수에값을저장하는연산자이다. 여기서 = 는수학적인등호가아니라는것에유의해야한다. 따라서다음의문장도가능하다. x = x + 1; 위의문장은변수 x의값에1을더하여다시 x에저장하라는의미이다. 따라서위의문장이실행되면변수 x의값이하나증가하게된다. 산술연산컴퓨터는기본적으로계산을하는기계이다. 따라서프로그램안에서산술연산을할수있다는것은매우당연하다. 산술연산을하려면먼저산술연산을수행하는연산자들을알아야한다. < 표 2-1> 에서산술연산자들을요약하였다. < 표 2-1> 산술연산자의요약 연산 연산자 C 수식 수학에서의기호 덧셈 + x + y x + y 뺄셈 - x - y x - y 곱셈 * x * y xy 나눗셈 / x / y x y 나머지 % x % y x mod y 사칙연산자들은이항연산자라고불리는데, 두개의피연산자를가지고있기때문이다. 여기서주의해야할사항은곱셈의경우반드시 * 기호를사용하여야한다는것이다. 만약수학에서처럼 x와 y를곱하는것을 xy로쓰게되면컴파일러는이것을새로운변수이름 xy로생각할것이기때문이다. 예제프로그램에서의연산을보면다음과같다. sum = x + y;

43 제 2 장기초사항 57 변수 x에들어있는정수와변수 y에들어있는정수를더해서변수 sum에대입하였다. 여기서 + 가연산자이고피연산자는 x와 y이다. 덧셈의결과는대입연산자인 = 을통하여변수 sum에저장된다. [ 그림 2-19] 산술연산의과정 : 먼저 x와 y에서값을가져와서덧셈연산이수행되고그결과값이 sum에저장된다. 변수값출력 printf() 는문자열을출력할수있을뿐아니라형식을지정하여상수나변수의값을출력하는기능도가지고있다. 만약변수 sum이가지고있는값을 printf() 함수를이용하여출력하려면다음과같이하면된다. 형식 예 printf( 형식제어문자열, 변수 ); printf("%d", sum); 여기서 "%d" 는 %d를출력하라는의미가아니고출력형식을지정한다는의미이다. 즉, 변수 sum의값이 %d의위치에서정수형으로출력이된다는의미이다. 여기서 "%d" 를형식제어문자열이라고하고 %d와같은것을형식지정자라고한다. 기본적인형식지정자는다음과같은것들이있다. 형식지정자의미형태 %d 정수형태로출력 100 < 표 2-2> 형식지정자의종류 %f 실수형태로출력 %c 문자형태로출력 A %s 문자열형태로출력 Hello 형식지정자와변수들은 1개이상일수있고중간에문자열이있을수있다. 이경우에는형식지정자와변수들이다음과같이대응된다. 즉, 형식지정자의자리에변수의값이대치되어서출력된다고생각하면된다.

44 58 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 [ 그림 2-20] printf() 에서의형식제어문자열 여기서주의할점은형식지정자와변수의타입은반드시일치하여야한다는점이다. 즉, 다음과같이정수형변수를실수형태로출력하라고하면오류가발생한다. [ 그림 2-21] 형식지정자와변수의자료형이다르면오류가발생한다.

45 제 2 장기초사항 입력과출력이있는프로그램 이번에는고정된정수를더하는것이아니라사용자로부터 2개의정수를받아서더해보자. 먼저, 입력단계에서사용자로부터 2개의정수를받아서변수에저장한다. 다음으로, 처리단계에서 2개의정수를서로합하여변수에저장하고, 출력단계에서변수에저장된합을화면에출력한다. 간단한프로그램이지만순서도를이용하여알고리즘을나타내면 [ 그림 2-22] 와같다. [ 그림 2-22] 예제프로그램에대한순서도 여기서처음으로사용자로부터값을입력받는방법이등장한다. 사용자로부터정수를입력받기위해서는 scanf() 라고하는라이브러리함수가필요하다. add2.c 참고 scanf() 는스캔에프라고읽는다 // 사용자로부터입력받은 2 개의정수의합을계산하여출력 #include <stdio.h> int main(void) { int x; int y; int sum; printf(" 첫번째숫자를입력하시오 :"); scanf("%d", &x); printf(" 두번째숫자를입력하시오 :"); scanf("%d", &y); 키보드로부터값을입력받는다. // 첫번째정수를저장할변수 // 두번째정수를저장할변수 // 2개의정수의합을저장할변수 // 입력안내메시지출력 // 하나의정수를받아서 x 에저장 // 입력안내메시지출력 // 하나의정수를받아서 x 에저장

46 60 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 } sum = x + y; // 변수 2개를더한다. printf(" 두수의합 : %d", sum); // sum의값을10진수형태로출력 return 0; // 0 을외부로반환 실행결과 첫번째숫자를입력하시오 : 10 두번째숫자를입력하시오 : 20 두수의합 : 30 프로그램설명 1 주석으로프로그램의동작설명 2 입출력라이브러리 printf() 와 scanf() 함수를사용하기위한헤더파일 4 main() 함수정의 5 main() 함수몸체시작 6 사용자가입력하는첫번째숫자를저장할변수선언 7 사용자가입력하는두번째숫자를저장할변수선언 8 두개의숫자의합을저장할변수선언 10 사용자가숫자를입력하도록안내메시지출력 11 사용자로부터숫자를받아서변수에저장 13 사용자가숫자를입력하도록안내메시지출력 14 사용자로부터숫자를받아서변수에저장 15 두개의숫자를더하고그합을 sum에저장 16 두개의숫자의합을출력 18 main() 함수결과값반환 19 main() 함수몸체끝 scanf() scanf() 함수는키보드로부터입력된데이터를지정된형식으로변환하여변수에저장하는라이브러리함수이다. scanf() 함수의사용방법은 printf() 함수와매우유사하다. 일반적인형식은다음과같다. 형식 예 scanf( 형식제어문자열, & 변수 1); scanf("%d", &x); 키보드에서정수를입력받아서변수 x 에저장하는문장은다음과같다.

47 제 2 장기초사항 61 scanf("%d", &x); 첫번째인수인 "%d" 는형식지정자로써어떤유형의데이터를받을것인지를지정한다. "%d" 는정수형을나타내는데, printf() 에서의형식지정자와그의미가같다. 두번째인수인 &x는입력을받을변수를나타낸다. 변수이름앞에 &( 앰퍼샌드 ) 기호가있다는것에유의하여야한다. 조금어려운이야기지만변수는메모리에저장되고각각의변수는주소를가지고있다. 변수이름앞에 & 를붙이면변수의주소를의미한다. 예를들어, &x라고쓰면이것은변수 x의주소이다. scanf() 는 printf() 와달리변수에값을저장하여야하기때문에변수의주소를받아야한다. 인터넷에서제품을구입하고집으로배달시키려면쇼핑몰에구매자의주소를가르쳐주어야하는것과비슷하다. 다시말해, scanf() 가키보드에서값을받은다음, 이것을변수에저장하려면변수의주소가있어야하는것이다. 현재는 scanf() 를사용하려면변수이름앞에반드시 & 기호를붙여야한다는것으로알아두자. [ 그림 2-23] 데이터를키보드에서받아서변수에저장하기위해서는 scanf() 가변수의주소를알아야한다. scanf() 가호출되면컴퓨터는사용자가숫자입력을마칠때까지기다린다. 사용자가정수를입력하고엔터키를누르면비로소정수가변수에저장되어서 scanf() 호출이끝난다. 위의프로그램에서는두개의정수를사용자로부터받는데거의같은동작을되풀이한다. 다만정수가저장되는변수만달라진다. 일반적으로사용자한테서값을입력받기전에안내메시지를출력하고 scanf() 를이용하여값을읽는다. 이러한방식은컴퓨터와사용자간의상호대화적인동작을수행하도록한다. printf(" 첫번째숫자를입력하시오 :"); scanf("%d", &x);

48 62 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 Q printf(), scanf() 는라이브러리함수이다. C 컴파일러는많은라이브러리함수들을제공한다고하였다. 그러면프로그래머는어떤라이브러리함수들이제공되는지알수있을까? A C 에서제공하는라이브러리들은대개표준화되어있다. 따라서이책에서사용하는함수들은어떤 C 컴파일러에서도사용이가능한것들이다. 지원되는라이브러리들 의목록은컴파일러의 HELP 파일에서찾을수있다. 이책에서는부록에수록되어있다. 라이브러리에서제공하는함수들은최대한활용하는편이좋다. scanf() 의형식지정자는대부분이 printf() 와같다. 예를들어서실수를입력받으려면형식지정자로 %f를사용해야한다. float ratio = 0.0; scanf("%f", &ratio); 여기서 ratio 는 float 형의변수로선언되었다. 하지만 double 형을입력받으려면 %lf 를사용해야한다. %lf 만제외하면모든형식지정자는 printf() 와유사하다. double scale = 0.0; scanf("%lf", &scale); 만약한번에여러개의입력값을받으려면다음과같이하면된다. 여기서도 printf() 와마찬가지로형식지정자의타입과변수의타입은일치하여야한다. [ 그림 2-24] scanf() 의동작

49 제 2 장기초사항 63 여기서형식지정자가 %C인경우를제외하면 scanf() 는모든여백을건너뛴다. 즉, 스페이스나탭, 줄바꿈은무시한다. 참고형식지정자를 %c로하면엔터키도하나의문자로받을수있다. 2.5 오류수정및디버깅 오류의종류프로그램을작성하는과정에는많은오류들이발생할수있다. 오류가없는완벽한프로그램을만드는것은생각보다매우어렵다. 여러분들이구입한휴대폰안에내장된프로그램들이얼마나많은오류를일으켰는지를생각해보자. 오류를발생하는시간에따라서나누어보면다음과같다. 컴파일시간오류 : 대부분문법적인오류 실행시간오류 : 실행되는도중에발생하는오류 논리오류 : 논리적으로잘못되어서결과가의도했던대로나오지않는오류 [ 그림 2-25] 오류의종류 오류를삼각성의정도에따라서나누어보면다음과같다. 에러 (error): 컴파일, 링크가불가능한심각한오류 경고 (warning): 컴파일, 링크가가능하고실행도가능하나잠재적인문제를일으킬수있는경미한오류 경고의경우, 수정하지않아도문제가없는경우가종종있지만가능하면경고메시지도나타나지않도록프로그램을작성하여야한다.

50 64 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 예제 error.c 문장의끝에세미콜론이빠져있다 /* 에러가발생하는프로그램 */ #include <stdio.h> int main(void) { printf("hello World!\n") return 0; } 가장많이하는실수중의하나인문장의끝에세미콜론을생략한경우를살펴보자. 위의소스를컴파일하면다음과같은에러메시지가표시된다. 실행결과 7 번째라인에서오류 [ 그림 2-26] 에러메시지 1> 빌드시작 : 프로젝트 : test, 구성 : Release Win > 컴파일하고있습니다... 1>error.cpp 1>.\error.cpp(7) : error C2143: 구문오류 : ';' 이 ( 가 ) 'return' 앞에없습니다. 1> 빌드로그가 "file://c:\source\error\error\release\buildlog.htm" 에저장되었습니다. 1>test - 오류 : 1 개, 경고 : 0 개 ========== 빌드 : 성공 0, 실패 1, 최신 0, 생략 0 ========== 일반적으로에러메시지에는다음과같은정보가출력된다. 에러가발견된파일의이름 에러가발견된라인의번호 발견된에러의내용 ( 설명 ) 문장의끝에세미콜론을생략한경우, [ 그림 2-26] 과같은에러메시지가발생한다. 에러메시지를보면 7번째라인의 return 앞에 ; 을빠뜨렸다는것을알수있다. Q 경고메시지를무시하면어떤일이발생하는가? A 경고메시지에따라어떤것은무시해도좋다. 그러나대부분의경우, 잘못된부분이있기때문에발생하는것이므로반드시경고메시지가나오지않도록소스를수정하 는것이중요하다. 비주얼 C++ 에서는경고메시지의수준을설정할수있도록되어있다. 초보자인경우에는경고메시지의수준을낮추어놓는것도좋은방법이다. 수준을낮추어놓으면매우사소한오류도볼수있다.

51 제 2 장기초사항 65 중간점검 1. 오류를심각성의정도에따라분류하여보자. 2. 작성된프로그램이 C언어의문법을지키지않았으면어떤오류에속하는가? 2.6 응용프로그램 연봉계산 프로그램조금더복잡한문제를다루어보자. 10년동안월급을모두저금할경우, 얼마나모을수있는지를계산하는프로그램을작성해보자. 먼저사용자에게월급의액수를입력받는다. 월급에 12를곱하여연봉을계산하고다시여기에 10을곱하여 10년동안저축할수있는금액을계산한다. deposit.c /* 저축액을계산하는프로그램 */ #include <stdio.h> int main(void) { int salary; int deposit; } // 월급 // 저축액 printf(" 월급을입력하시오 : "); scanf("%d", &salary); deposit = 10 * 12 * salary; printf("10 년동안의저축액 : %d\n", deposit); return 0; 입력단계 처리단계 출력단계 실행결과 월급을입력하시오 : 년동안의저축액 : 24000

52 66 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 프로그램설명 1 주석으로프로그램의동작설명 2 입출력라이브러리 printf() 와 scanf() 함수를사용하기위한헤더파일 4 main() 함수정의 5 main() 함수몸체시작 6 월급을저장할변수선언 7 저축액을저장할변수선언 9 사용자가월급을입력하도록안내메시지출력 10 사용자로부터월급을받아서변수 salary에저장, 여기서정수형식으로입력받는다. 형식지정자 %d는정수형식을나타낸다. scanf() 함수를호출할때는변수의이름앞에 & 를적는것을잊지말자 년동안의저축액을구한다. C에서곱셈연산자는 * 이다. 10년 *12달* 월급으로계산한다 년동안의저축액을출력한다. 정수형변수의값을출력하여야하므로형식지정자로 %d가사용되었다. 16 main() 함수결과값반환 17 main() 함수몸체끝 원의면적구하기 프로그램앞에서배운프로그램의구성요소들을이용하여새로운프로그램을작성하여보자. 사용자로부터원의반지름을입력받고, 이원의면적을구한다음, 화면에출력한다. 역시입력단계, 처리단계, 출력단계로구성되어있다. 원의면적을구하려면실수형계산을하여야한다. 따라서실수형변수를선언하여사용하여보자. 본격적인변수와자료형에대한논의는다음장에서하게된다. circle.c /* 원의면적을계산하는프로그램 */ #include <stdio.h> int main(void) { float radius; float area; } // 원의반지름 // 면적 printf(" 반지름을입력하시오 : "); scanf("%f", &radius); area = 3.14 * radius * radius; printf(" 원의면적 : %f\n", area); return 0;

53 제 2 장기초사항 67 실행결과 반지름을입력하시오 : 5.0 원의면적 : 프로그램설명 1 주석으로프로그램의동작설명 2 입출력라이브러리 printf() 와 scanf() 함수를사용하기위한헤더파일 4 main() 함수정의 5 main() 함수몸체시작 6 원의반지름을저장할변수선언 7 원의면적을저장할변수선언 9 사용자가원의반지름을입력하도록안내메시지출력 10 사용자로부터원의반지름을받아서변수 radius에저장, 여기서실수형식으로입력받는것에주의하라. 형식지정자 %f는실수형식을나타낸다. scanf() 함수를호출할때는변수의이름앞에 & 를적는것을잊지말자. 12 원의면적을구한다. C에서곱셈연산자는 * 이다. 3.14는원주율을나타낸다. 원의면적을구하는공식은 rr 2 이지만 C에서는특별히거듭제곱을구하는연산자는없다. 따라서곱셈을두번해주어야한다. 14 원의면적을출력한다. 실수형변수의값을출력하여야하므로형식지정자로 %f가사용되었다. 16 main() 함수결과값반환 17 main() 함수몸체끝

54 CHAPTER 누구나쉽게즐기는 C 언어콘서트 Q & A Q 왜 C 언어의주석은중첩하여서쓸수없는가? A C 언어의주석은 PL-1 이라는언어에서그형식을빌려왔기때문이다. 주석이들어있는코드전체를주석처리하고싶으면뒤에서학습하게될 #if 0 와 #endif 라는전처리지시자를사용하여야한다. #if 0 int timer; /* 타이머를나타내는변수 */... #endif Q 주석을많이사용하면프로그램의크기가늘어나는가? A 주석은컴파일단계에서모두제거된다. 따라서주석의양과오브젝트코드의크기와는전혀상관이없다. 주석은실행파일에아무런영향을끼치지않는다. 주 석은순수하게프로그램을읽는사람들을위한것이다. Q 소스코드안의단어사이의공백과문장과문장사이의빈줄은어떤역할을하는가? A 소스코드안의공백이나빈줄은프로그램의실행결과에아무런영향을끼치지않는다. 이것도주석과마찬가지로프로그램을읽기쉽게하기위하여사용된다. Q 프로그램을작성할때한줄에반드시하나의문장만있어야되는가? A 많은개발자들이한줄에보통하나의문장만을두지만꼭그럴필요는없다. 다음과같이한줄에여러개의문장을놓는것도가능하다. int x; int y; int sum; 컴파일러는 ; 만있으면하나의문장으로인식한다. 다만가독성을위해서는한줄에하나의문장만두는것이바람직하다. Q 비주얼 C++ 에서자동으로소스를정리하여주는자동포매팅기능이있는가? A 먼저자동포매팅하고싶은소스영역을마우스로선택하고 Edit Advanced Format Selection(Alt+F8) 을선택하면전문가가포맷하는것처럼소스를자동으로들여쓰기한다.

55 제 2 장기초사항 69 Q 왜 scanf() 를사용할때는변수이름앞에 & 를붙여야하는가? A 본문에서도설명하였지만 scanf() 함수가변수를받아서변수안에값을저장하기위해서는반드시변수의메모리주소가필요하다. 변수의주소는바로변수 앞에 & 를붙이면된다. 택배를이용하여물건을배달시키기위해서는받는사람의주소가필요한것과마찬가지라고생각하자.

56 70 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 Exercise 1. 은프로그램의동작을설명하는글로써프로그램의가독성을높이기위한것이다. 2. 함수의이름을적어서함수안에들어있는문장들을수행시키는것을 (calling) 이라고한다. 3. 은코드의일부분이들어있는텍스트파일로.h의확장자를가진다. 4. 이란데이터의종류 ( 타입 ) 를말한다. 정수형, 실수형, 문자형등이있다. 5. 은 "Hello" 처럼따옴표안에문자들을나열한것이다. 6. 은줄바꿈을나타내는특수문자이다. 7. 은 printf() 에서변수의값을 10진정수형식으로출력할것을지시한다. 8. 문장은함수를종료하고결과값을반환하는문장이다. 9. 함수는키보드에서데이터를받아서지정된형식으로변환시켜주는라이브러리함수이다. 10. 변수에값을넣는연산을 연산이라고한다. 11. 프로그램언어에서특별한의미로사용되는예약된단어들을 라고한다. 12. 다음중 C 프로그램에대하여잘못설명한것을모두고르면? ( ) 1 C 프로그램은적어도하나의함수를가진다. 2 C 프로그램에서반드시있어야하는함수는 main() 이다. 3 적어도하나의변수는반드시선언하여야한다. 4 반드시 stdio.h를포함하여야하는것은아니다. 13. 주석에대하여잘못설명한것은? ( ) 1 주석은어디에나붙일수있다. 2 주석이많아지면실행파일의크기가커진다. 3 주석은 /* 로시작하여 */ 로끝난다. 4 C언어에서도 // 스타일의주석을사용할수있다. 14. 다음중 C에서지원하는자료형의이름이아닌것은? ( ) 1 char 2 long 3 integer 4 float 15. printf() 함수에서정수형변수를출력하는데사용되는형식지정자는? ( ) 1 %i 2 %d 3 %n 4 %f

57 제 2 장기초사항 변수에관한설명으로올바르지않은것을모두고르면? ( ) 1 변수는함수안이면어디서나선언할수있다. 2 변수의이름을지을때키워드와동일하게하면안된다. 3 변수는선언과동시에초기값을줄수도있다. 4 변수는밑줄문자 (_) 로시작할수도있다. 17. 함수에관한설명으로올바르지않은것은? ( ) 1 함수안의문장들은호출 (call) 을해야만이실행된다. 2 C언어의함수중에서가장먼저실행되는함수는 main() 이다. 3 printf() 나 scanf() 도함수이다. 4함수안에다른함수가포함될수있다. 18. 다음코드에주석을붙여라. 아래코드가하는일은무엇인가? #include <stdio.h> int main(void) { int x, y; // // // } scanf("%d %d", &x, &y); printf(" 덧셈 : %d\n", x + y); printf(" 뺄셈 : %d\n", x - y); printf(" 곱셈 : %d\n", x * y); printf(" 나눗셈 : %d\n", x / y); return 0; // // // // // // 19. 다음코드는인치를 mm 로변환하는프로그램이다. 빈칸을채워라. /* 첫번째프로그램의응용 */ #include int main(void) { float inch, mm; printf(" 인치단위로입력 :"); scanf("%f", ); mm = inch * 25.4; printf("%f 인치 = %f mm", inch, mm); return 0; }

58 72 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 20. 잠시컴파일러가되었다고가정하자. 다음소스파일이컴파일되어실행되는것인지를말하고, 컴파일이되지않는다면어디가문제인지오른쪽빈칸에적어라. / * 첫번째프로그램 * / #include stdio,h integer main(void) { int x x = 20; print( 현재 x의값은 %d입니다. ); return 0; }

59 제 2 장기초사항 73 Programming 1. 사용자로부터세개의정수를입력받은후, 평균값을계산하여화면에출력하는프로그램을작성하여보자. 정수를입력하시오 : 10 정수를입력하시오 : 20 정수를입력하시오 : 30 평균은 20 입니다. 먼저문제를해결하는알고리즘을순서도를사용하여작성하여보자. 순차적인처리만을이용하면된다. 빈칸을채워라.

60 74 CHAPTER 02 누구나쉽게즐기는 C 언어콘서트 다음단계는순서도를프로그램으로변환한것이다. 빈칸을채워라. #include <stdio.h> int main(void) { ; // 정수변수 x, y, z, avg 선언 printf(" 정수를입력하시오 : "); // 사용자에게안내메시지출력 scanf("%d", &x); // 첫번째정수를 x로읽어들인다. ; // 사용자에게안내메시지출력 ; // 두번째정수를 x로읽어들인다. ; // 사용자에게안내메시지출력 ; // 세번째정수를 x로읽어들인다. ; // 평균계산 printf(" 평균은 %d입니다.\n", avg); // 평균출력 return 0; } 입력은 scanf() 함수를사용하고출력은 printf() 함수를사용하면된다. 2. 센티미터를인치로변환하는프로그램을작성하여보자. 프로그램의입력과출력은다음과같다. 센티미터를입력하시오 : cm 는 1 인치입니다. 3. 온스로표시된무게를그램으로변경하는프로그램을작성하여보자. 1온스는 28.3그램이다. 온스를입력하시오 : 온스는 그램입니다. 4. 달의중력은지구의약 17% 라고한다. 자신의몸무게를입력받아서달에서의몸무게를계산하는프로그램을작성하여보자. 몸무게를입력하시오 : 70 달에서의몸무게는 16kg 입니다.

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap-03.pptx 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에

More information

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - Lesson2.pptx Computer Engineering g Programming g 2 제 3 장 C 프로그래밍구성요소 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() *

More information

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2> 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C 프로그램을이루는구성요소들을살펴봅니다. 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계 ), 결과를화면에출력

More information

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4> 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 누구나즐기는 C 언어콘서트 제 1 장프로그래밍소개 이번장에서학습할내용 프로그램의이해 프로그래밍언어 알고리즘 프로그램개발과정 프로그램을작성하기에앞서서중요한개념들을살펴봅니다.. 컴퓨터란? Q) 컴퓨터 (computer) 는무엇인가? A) 컴퓨터는기본적으로계산 (compute) 하는기계 Q) 컴퓨터를이용하여데이터를처리하려면반드시데이터가숫자형태이어야한다. 왜? A)

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장 C 프로그램구성요소 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C 프로그램을이루는구성요소들을살펴봅니다. 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계 ), 결과를화면에출력 ( 출력단계 ) 한다. 데이터입력

More information

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013. 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C 프로그램을이루는구성요소들을살펴봅니다. 일반적인프로그램의형태 덧셈프로그램 #1 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계

More information

Microsoft PowerPoint - chap-02.pptx

Microsoft PowerPoint - chap-02.pptx 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 컴퓨터프로그래밍기초 프로그램작성과정 에디터 (editer) 컴파일러 (compiler) 링커 (linker) 로더 (loader) 소스파일 test.c 오브젝트파일 test.obj 실행파일 test.exe 통합개발환경 (IDE) 컴퓨터프로그래밍기초 2 프로그램작성단계 편집 (edit) 에디터를이용하여원하는작업의내용을기술하여소스코드작성

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2) 일반적인프로그램의기본구성형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계 ), 결과를화면에출력 ( 출력단계 ) 한다. 데이터입력 데이터처리 결과출력 1-23 덧셈프로그램 #1 주석 전처리기지시어 /* 두개의숫자의합을계산하는프로그램 */ #include 함수 int main(void) { int x; int y; int sum;

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

Microsoft PowerPoint - chap-02.pptx

Microsoft PowerPoint - chap-02.pptx 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 컴퓨터프로그래밍기초 프로그램작성과정 에디터 (editer) 컴파일러 (compiler) 링커 (linker) 로더 (loader) 소스파일 test.c 오브젝트파일 test.obj 실행파일 test.exe 통합개발환경 (IDE) 컴퓨터프로그래밍기초 2 프로그램작성단계 편집 (edit) 에디터를이용하여원하는작업의내용을기술하여소스코드작성

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

<4D F736F F F696E74202D204C BAB8C3E6BCB3B8ED202D20C7C1B7CEB1D7B7A1B9D6C0DBBCBAB0FAC1A42C C F>

<4D F736F F F696E74202D204C BAB8C3E6BCB3B8ED202D20C7C1B7CEB1D7B7A1B9D6C0DBBCBAB0FAC1A42C C F> 2014-1 C/C++ 프로그래밍작성과정, Visual Studio 2014. 3. 5. 교수김영탁 영남대학교공과대학 정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 통합개발환경 Visual C++ 를이용한프로그램작성

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 03 일단짜보는그럴듯한 C 프로그램... 1. 프로그램작성순서복습 2. 주석 3. scanf_s( ) 맛보기 1. 프로그램작성순서복습 프로그래밍작성순서요약 프로젝트만들기 : 소스파일보다프로젝트를먼저생성해야함 코딩 : C 컴파일러가알아들을수있는형식으로문서작성 빌드 : 컴파일과링크를합친개념 컴파일 : 소스를컴퓨터가이해하는오브젝트파일로변환 링크 :

More information

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습 C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습 구성요소 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 예 /* 두개의숫자의합을계산하는프로그램 */ #include { int main(void) int x; // 첫번째정수를저장할변수 int y; // 두번째정수를저장할변수

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Microsoft PowerPoint - 1장 C 프로그래밍 시작하기 pptx

Microsoft PowerPoint - 1장 C 프로그래밍 시작하기 pptx C 프로그래밍및실습 1. C 프로그래밍시작하기 세종대학교 목차 1) 프로그래밍개요 3) 첫프로그램분석 4) 출력기초 5) 입력기초 2 1) 프로그래밍개요 프로그램과프로그래밍 프로그램 운동회의순서나음악회의연주곡목순서등미리짜놓은것 예 ) TV 프로그램 컴퓨터프로그램 (program) 컴퓨터에게해야할일의순서와방법을지시하는명령어의집합 프로그래밍 프로그래밍언어를이용하여프로그램을만드는행위

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드] 02 C 프로그래밍기초 충남대학교이형주 1 C 프로그램구조 콘솔응용프로그램 2 프로그램실행순서 C 프로그램은여러함수의조합으로구성 함수란정해진규칙에의하여일련의작업을수행하는프로그램의단위 실행순서 main 함수는프로그램이실행되면가장먼저시작되는부분 모든함수내부에서는위에서아래로, 좌에서우로, 문장이위치한순서대로실행 3 전처리기 전처리기 (preprocessor) 미리처리하는프로그램으로,

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

Microsoft PowerPoint - gnu-w09-c-chap

Microsoft PowerPoint - gnu-w09-c-chap 어서와 C 언어는처음이지 제 1 장 컴퓨터 컴퓨터는생각만큼똑똑한물건이아니다. 컴퓨터는스스로자신이수행할작업을결정할수없다. 프로그램 우리가컴퓨터에게아주자세한명령어를주어야한다. 컴퓨터에게특정한작업을수행하게하는자세한명령어의리스트를프로그램 (program) 이라고한다. 1. 정수를읽는다. 2. 합을계산한다. 3. 합을화면에출력한다. 작성해야하는프로그램 일반적인프로그램은구입하거나다운로드받을수있다.

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

Microsoft PowerPoint - chap08-1 [호환 모드]

Microsoft PowerPoint - chap08-1 [호환 모드] 2011-1 학기프로그래밍입문 (1) 참고자료 : chapter 8-1. 전처리 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 전처리명령어 컴파일과정에는전처리 (preprocessing) 단계가있다. - 컴파일러는목적파일을만들기전에전처리라고하는특별한작업을

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

TEST BANK & SOLUTION

TEST BANK & SOLUTION TEST BANK & SOLUTION 어서와자바는처음이지!" 를강의교재로채택해주셔서감사드립니다. 본문제집을만드는데나름대로노력을기울였으나제가가진지식의한계로말미암아잘못된부분이있을것으로사료됩니다. 잘못된부분을발견하시면 chunik@sch.ac.kr로연락주시면더좋은책을만드는데소중하게사용하겠습니다. 다시한번감사드립니다. 1. 자바언어에서지원되는 8 가지의기초자료형은무엇인가?

More information

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)- 1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다. 1.2.1 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-1 연산범위이유 : 00000000 00000000 00000000 00000000의 32

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

슬라이드 1

슬라이드 1 1 장. C 의개요 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2017-1 st 프로그래밍입문 (1) 2 C 의개요 C-Language 란? 원하는결과를얻어내기위한 Program 작성시필요한일종의언어 Unix 운영체제하에서시스템프로그래밍을하기위해개발된언어 구조적인언어, 강력한기능,

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

untitled

untitled while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor 19. 전처리와분할컴파일 순천향대학교컴퓨터학부이상정 1 학습내용 전처리명령어 #include #define 기호상수 const 분할컴파일 순천향대학교컴퓨터학부이상정 2 전처리과정 전처리 (preprocessor) 전처리명령어는 # 기호로시작 #incldue #define 순천향대학교컴퓨터학부이상정 3 #include (1) 지정된파일을프로그램에삽입 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서검색

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

PowerPoint Presentation

PowerPoint Presentation 컴퓨터프로그래밍 Computer Programming 08 포인터기초 목차 1. 포인터변수와선언 2. 간접연산자 * 와포인터연산 3. 포인터형변환과다중포인터 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 3 1. 포인터변수와선언 주소개념 주소 address 메모리공간은 8비트인 1 바이트마다순차적인고유한번호 메모리주소는저장장소인변수이름과함께기억장소를참조하는또다른방법

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

PowerPoint Presentation

PowerPoint Presentation 컴퓨터프로그래밍 Computer Programming 04 전처리와입출력 목차 1. 전처리 2. 출력함수 printf() 3. 입력함수 scanf() 3 1. 전처리 전처리개요 전처리기역할 컴파일 compile 전에전처리기 preprocessor 의전처리 preprocess 과정이필요 결과인전처리출력파일을만들어컴파일러에게보내는작업을수행 전처리지시자preprocess

More information

Microsoft PowerPoint - ch01.ppt

Microsoft PowerPoint - ch01.ppt 201-1 학기프로그래밍입문 (1) 1 장. C 의개요 박종혁 Tel: 970-6702 Email: jhpark1@s.ac.kr 0 C 의개요 C-Language 란? - 원하는결과를얻어내기위한 Program 작성시필요한일종의언어 - Unix 운영체제하에서시스템프로그래밍을하기위해개발된언어 - 구조적인언어, 강력한기능, 빠른속도 C 언어의역사 - ALGOL60

More information

C 언어와 프로그래밍 개요

C 언어와 프로그래밍 개요 2019-1 st 프로그래밍입문 (1) 1 장. C 언어와프로그래밍개요 박종혁교수 서울과학기술대학교컴퓨터공학과 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr 목차 C 소개 프로그래밍의개념 C 언어의특징 C 프로그램개발 일반적인 C 프로그램개발과정 Visual Studio 를이용한 C 프로그램개발과정 2 소프트웨어의중요성

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

Microsoft PowerPoint - 1C언어소개0.PPT

Microsoft PowerPoint - 1C언어소개0.PPT 의용프로그래밍실습 의료공학과이기영 교육목표수업방법주교재참고도서 의용프로그래밍실습 - 의료공학엔지니어로서컴퓨터에접근하는기초적인방법으로프로그래밍을익힌다. - 프로그램은논리나알고리즘을설계하고, 원시코드를작성하는것 - 초보자가접근하기쉬우면서막강한언어인 C 를익힘으로써 - 알고리즘의이해와문법 : 엔지니어적으로접근하는기초지식을쌓고자한다. - Visual C++ 를이용하여객체지향형에접근하는기초를마련

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

Microsoft PowerPoint - 2장 변수와 자료형 pptx

Microsoft PowerPoint - 2장 변수와 자료형 pptx C 프로그래밍및실습 2. 변수와자료형 세종대학교 목차 1) 변수와자료형개요 4) 부동소수자료형 6) 자료형변환 2 1) 변수와자료형개요 변수 : 값을담을그릇 자료형 : 그릇의모양 이그릇안에 10+20 의결과저장 자료형 int main() { int c ; c=10+20; 변수 int 30 c printf("c=10+20 출력 :"); printf("%d",

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

Microsoft PowerPoint - c2.ppt

Microsoft PowerPoint - c2.ppt 프로그램과표준입출력 프로그램 (program) 자료를입력받아서이를처리하여출력을하는일을수행함 2 장 C 언어의기초 입력 프로그램 ( 처리 ) 출력 식별자, 예약어 자료형 상수와변수 수식 연산자 : 산술연산자 자료형변환 표준입출력 (standard input and output: stdio) 표준입력 : 키보드입력 표준출력 : 모니터또는터미널로출력 (cf) DOS,

More information

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - Chapter_04.pptx 프로그래밍 1 1 Chapter 4. Constant and Basic Data Types April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 기본자료형문자표현방식과문자자료형상수자료형변환 기본자료형 (1/8) 3 변수 (Variables)

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 변수, 타입, 정수, 실수 상수 상수 (constant) #define MAX_FLOOR 100 프로그램헤더나앞부분에존재 변수의이름 ( 식별자 ) 와같은규칙을따르지만, 일반적으로대문자와 _ 로만구성 프로그램가독성을높이고, 일관된수정을위해사용 프로그램중간에갑자기등장하는임의의숫자는이해도를떨어뜨림 -> 반드시의미있는상수를이용해야함 Preprocessor

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - chap-06.pptx 쉽게풀어쓴 C 언어 Express 제 6 장조건문 컴퓨터프로그래밍기초 이번장에서학습할내용 조건문이란? if 문 if, 문 중첩 if 문 switch 문 break문 continue문 goto 문 5장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 컴퓨터프로그래밍기초 2 조건문 조건에따라서여러개의실행경로가운데하나를선택

More information

03 상수, 변수, 자료형

03 상수, 변수, 자료형 Part 03 상수, 변수, 자료형 1 이장의내용 자료형이란무엇인가? 상수와변수 정수형 부동소수형 문자형 2 3.1 자료형이란무엇인가? 3 자료형이란무엇인가? 자료형 (data type) 프로그램에서표현혹은저장하는데이터의종류혹은유형 C 언어의자료형 C 언어는 1 개의문자형, 4 개의정수형, 3 개의부동소수형을제공 4 3.2 변수 /3.3 상수 5 변수 변수

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 C++ Espresso 제 1 장기초사항 이번장에서학습할내용 C++ 언어의역사 C++ 언어의특징 객체지향의간단한소개 C++ 개발과정 첫번째예제설명 변수와상수 연산자 C++ 에대한기초적인사항들을살펴봅니다. C++ 언어의개발 C++ 는 1980 년대초에 AT&T 벨연구소의 Bjarne Stroustrup 에의하여개발 C++ 는 C 언어를유지, 확장한것 C with

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

슬라이드 1

슬라이드 1 3 장. 선행자료 어휘원소, 연산자와 C 시스템 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2019-1 st 프로그래밍입문 (1) 2 목차 1.1 문자와어휘원소 1.2 구문법칙 1.3 주석 1.4 키워드 (Keyword) 1.5 식별자 (Identifier) 1.6 상수 (Integer,

More information

C 언어와 프로그래밍 개요

C 언어와 프로그래밍 개요 2019-1 st 프로그래밍입문 (1) 2 장. C 프로그램기본 박종혁교수 서울과학기술대학교컴퓨터공학과 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 주석 (Comment)

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 누구나즐기는 C 언어콘서트 제 5 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 goto 문 이제까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장 조건에따라서여러개의같은처리를반복

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다 10 강. 쉘스크립트 쉘스크립트 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다른운영체제로이식되지않음 -스크립트언어를사용하면컴파일과정이없고인터프리터가소스파일에서명령문을판독하여각각의명령을수행

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터(강의) 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information