어서와 C 언어는처음이지 제 1 장
컴퓨터 컴퓨터는생각만큼똑똑한물건이아니다. 컴퓨터는스스로자신이수행할작업을결정할수없다.
프로그램 우리가컴퓨터에게아주자세한명령어를주어야한다. 컴퓨터에게특정한작업을수행하게하는자세한명령어의리스트를프로그램 (program) 이라고한다. 1. 정수를읽는다. 2. 합을계산한다. 3. 합을화면에출력한다.
작성해야하는프로그램 일반적인프로그램은구입하거나다운로드받을수있다. 하지만사업상특수한프로그램이필요한경우에는회사가프로그래머를고용해서사업에필요한소프트웨어를개발하도록한다.
필요한것 컴파일러 (compiler): C프로그램을받아서컴퓨터가읽을수있도록변환하는도구 Code::Blocks(www.codeblocks.org) Microsoft의비주얼스튜디오
Code::Blocks 컴파일러 IDE는통합개발환경 (integrated development environment) 의약자로서하나의소프트웨어에서작성, 수정, 디버깅이가능하다는뜻이다. Code::Blocks에서는 C 또는 C++ 프로그램을작성할수있다.
Code::Blocks 설치
프로그래밍과정 1 프로그램이정확히무엇을해야하는지를결정한다. 2 에디터를사용하여프로그래밍언어명령어들을작성하고저장한다 3 프로그램을컴파일한다. 4 컴파일오류를체크한다. 만약오류가있으면오류를수정하고단계 3으로되돌아간다. 5 프로그램을실행한다.
컴파일러 컴파일러는이런원재료들을최종제품으로바꾸어주는기계와같으며최종제품은바로컴퓨터가이해할수있는실행가능한프로그램이다.
또하나의통합개발환경 비주얼스튜디오 마이크로소프트사의제품 윈도우기반의거의모든형태의응용프로그램제작가능 우리가사용할버전 : 비주얼스튜디오 2013 http://www.microsoft.com/express/download
비주얼스튜디오설치 Express 2013 for Windows Desktop 제품을선택
학습정리 C 컴파일러를다운로드하여컴퓨터에설치한다. C 프로그래밍언어를학습하기위한마음의준비를한다. C가너무복잡하다고걱정할필요는없다. 이책은C 언어를쉽게소화가가능하도록여러조각으로나누었다. 여러분은그저잘따라오면서맛보고즐기면된다!
Q & A
어서와 C 언어는처음이지 제 2 장
첫번째프로그램 짧지만완전한 C 프로그램을살펴보자. #include <stdio.h> int main() { printf(" 코더에게는작은한걸음이지만프로그래머에게는 "); printf(" 거대한도약이다!\n"); return 0; }
프로그램코드입력 프로그램을생성하기위하여 [File] 메뉴를클릭하고 [New] 를선택한다. 다음화면에서 [Empty File] 을선택하여코드를입력한다.
컴파일 파일에위의코드를입력한후에는컴파일해야한다. 컴파일해서실행파일을생성하는것을빌드한다고한다. 화면왼쪽상단의노란색기어모양의 [Build] 아이콘을클릭한다. [Build] 아이콘을클릭하면 Code::Blocks은방금입력한파일을어떤이름으로저장할것인지를먼저물어보는데이때 hello.c라는이름으로저장하자.
실행 [Build] 아이콘오른쪽에있는녹색화살표아이콘을클릭해서프로그램을실행
C 프로그램관찰 많은중괄호 { }, 소괄호 ( ), 백슬래시 (\) 의사용 C 는철자에민감 C 프로그램에서는단어와단어사이에자유롭게공백을넣을수있다. C 에서명령어와함수를입력할때는소문자만을사용해야한다.
함수는프로그램을이루는블록 C 프로그램은여러개의함수로이루어진다 -> 함수는다시여러개의문장들로이루어진다 -> 문장들은순차적으로실행되면서작업을수행한다. 함수
main() 함수 main() 은명령어가아니라함수이다. 함수는하나의작업을수행하는루틴이다. 모든 C 프로그램은항상 main() 함수를포함해야한다. #include <stdio.h> int main() { printf(" 코더에게는작은한걸음이지만프로그래머에게는 "); printf(" 거대한도약이다!\n"); return 0; }
데이터의종류 문자 정수 부동소수점수 ( 실수라고도불린다.)
문자 문자는컴퓨터가표현할수있는하나의글자이다. C의모든문자들은작은따옴표로감싼다. A a 4 % Q! + = ]
문자열 만약한문자이상을지정할필요가있다면큰따옴표를사용해서문자들을감싸면된다. 이것은문자열 (string) 이라고불린다. 다음은 C 문자열이다. C is fun to learn.
숫자 정수 (integer) 가있다. 10 54 0 121 68 752 부동소수점수 (floating-point number) 547.43 0.0 0.44384 9.1923 168.470.22
정수 vs 부동소수점수 정수를사용할것인가아니면부동소수점수를사용할것인가는프로그램이작업하는데이터에달려있다.
마무리예제 /* 문자, 정수, 부동소수점수를사용하는프로그램 */ #include <stdio.h> int main() { printf(" 나는현재 %c 프로그래밍언어를학습하고있다.", 'C'); printf(" 나는지금막 %d장을끝냈다.", 2); printf(" 나는현재 %.1f 퍼센트준비되어있다.", 99.9); printf(" 다음챕터학습을위하여!"); return 0; }
출력결과 나는현재 C 프로그래밍언어를학습하고있다. 나는지금막 2장을끝냈다. 나는현재 99.9 퍼센트준비되어있다. 다음챕터학습을위하여!
Lab 다음과같은실행결과를출력하도록프로그램을작성하여보자. 프로그램에서각종상수값들을 printf() 함수의변환문자를사용하여서출력해본다. 빛의속도는 0.000000km/s입니다. 중력가속도는 9.800000m/s제곱입니다. 나는 20살이고키는 175.500000입니다. 나의이름은김철수입니다. 나는현재 4장까지학습을끝냈습니다. 계속하려면아무키나누르십시오...
Hint 기본적인형식지정자는다음과같은것들이있다.
마무리예제 #include <stdio.h> main() { printf(" 빛의속도는 %fkm/s입니다.", 300000); printf(" 중력가속도는 %fm/s제곱입니다.",9.8); printf(" 나는 %d살이고키는 %f입니다.", 20, 175.5); printf(" 나의이름은 %s입니다."," 김철수 "); printf(" 나는현재 %d장까지학습을끝냈습니다.",4); } return 0;
학습정리 C 함수이름다음에는반드시소괄호를붙여야한다. C 프로그램은여러개의함수로이루어지는데 C 프로그램에서 main() 함수는항상필요하다. C는다른어떤함수들보다 main() 을가장먼저실행한다. 가독성을위하여 C 프로그램에는여분의공백을넣어도된다. 정수가 0이아니면앞에 0을붙이지말자. 문자는반드시작은따옴표로둘러싸야하고문자열은큰따옴표로둘러싸야한다. 정수는소수점을가지지않는수이고부동소수점수는소수점을가진다.
Q & A
어서와 C 언어는처음이지 제 3 장
주석 주석 (comment) 은프로그램에흩어져있는설명글로서프로그램에서도대체어떤것이지금진행되고있는지를설명한다.
주석의종류 주석은 /* 로시작하여서 */ 로종료한다. 주석은여러줄에걸칠수있다. 주석은프로그램안에어디든지들어갈수있다. /* 이것은 2 개의줄에걸치는주석이다.*/ /* 이것은한줄주석이다.*/ for (i=0;i<25;i++)/* 0 에서 25 까지카운트한다.*/
프로그램유지보수 프로그램유지보수 (maintenance) 는숨겨진버그를찾아내어없애고, 바뀌어가는환경에따라거기에맞춰서프로그램을바꾸어가는과정이때주석이있다면, 프로그램을빠르게읽을수있고, 따라서변경해야하는곳을빠르게찾을수있다.
주의사항 주석은 C 명령어가아니다. 컴파일러는프로그램안의모든주석을무시한다. 주석은사람을위한것이고, 주석의외부에있는프로그래밍문장이컴퓨터를위한것이다.
주석을붙인예제 /* C 완전초보자가이드의첫번째코드리스팅 1994 년부터새로운프로그래머들을교육하고있음!*/ /* 딘밀러 */ /* 파일이름 Chapter3ex1.c */ /* 명절선물에들어가는돈의합계 */ #include <stdio.h> main() { int gift1, gift2, gift3, gift4, gift5; /* 비용을저장하는변수들 */ int total; /* 합계를저장하는변수 */ /* 각선물의비용을묻는다.*/ printf(" 엄마를위하여얼마나돈을쓸것인가요?"); scanf(" %d", &gift1);
주석을붙인예제 scanf(" %d", &gift2); printf(" 동생을위하여얼마나돈을쓸것인가요?"); scanf(" %d", &gift3); printf(" 형을위하여얼마나돈을쓸것인가요?"); scanf(" %d", &gift4); printf(" 가장좋아하는 C 프로그래밍저자를 "); printf(" 위하여얼마나돈을쓸것인가요?"); scanf(" %d", &gift5); /* 선물에쓰이는비용의합계를계산한다.*/ total = gift1 + gift2 + gift3 + gift4 + gift5; } printf(" 선물비용의합계는 $%d 입니다.", total); return 0; /* 프로그램을종료한다.*/
여백추가하기 여백 (white space) 은화면상으로는표시되지않지만가독성을위해서는소스코드에추가되는스페이스나빈줄을뜻한다. 여백을이용하여서가독성을높이는것이중요하다. #include <stdio.h> main() { float a, b; printf(" 보너스를얼마나받았습니까?"); scanf(" %f", &a); b =.85 * a; printf(" 만약 15% 를자선단체에기부하더라도당신은아직 %.2f 를가지고있습니다.", b);return 0; }
여백추가하기 #include <stdio.h> main() { float a, b; printf(" 보너스를얼마나받았습니까?"); scanf(" %f", &a); } b =.85 * a; printf(" 만약 15% 를자선단체에기부하더라도당신은 "); printf(" 아직 %.2f 을가지고있습니다.", b); return 0;
주석의두번째형태 // 새로운주석을가지고있는다른예제 #include <stdio.h> main() { printf(" 나는이새로운주석을좋아합니다."); // 간단한문장 }
Lab: 주석을추가해보자 #include <stdio.h> main() { printf(" 빛의속도는 %fkm/s 입니다.", 300000); printf(" 중력가속도는 %fm/s 제곱입니다.", 9.8); printf(" 나는 %d 살이고키는 %f 입니다.", 20, 175.5); printf(" 나의이름은 %s 입니다.", " 김철수 "); printf(" 나는현재 %d 장까지학습을끝냈습니다.", 4); } return 0;
Solution /* * 파일이름 : comment.c * 작성자 : 김철수 * 작성날짜 : 2015.1.10 */ #include <stdio.h> // 해더프로그램포함 main() // 메인프로그램 // 실수는 %f 를사용하여서출력한다. 소수점 6 자리까지출력된다. printf(" 빛의속도는 %fkm/s 입니다.", 300000); // 실수는 %f 를사용하여서출력한다. 소수점 6 자리까지출력된다. printf(" 중력가속도는 %fm/s 제곱입니다.",9.8); // 정수는 %d 를사용하여서출력한다. printf(" 나는 %d 살이고키는 %f 입니다.", 20, 175.5); // 문자열은 %s 를사용하여서출력한다. printf(" 나의이름은 %s 입니다.", " 김철수 "); // 정수는 %d 를사용하여서출력한다. printf(" 나는현재 %d 장까지학습을끝냈습니다.",4); return 0;
학습정리 프로그래밍의 3가지규칙은주석, 주석, 주석이다. 많은주석으로코드를명확히하자. 여러줄주석에는 /* 로시작하여 */ 로종료되는주석을사용한다. /* 와 */ 사이의모든것은주석으로취급된다. 한줄주석에는 // 을사용할수있다. C는그지점부터줄의끝까지를주석으로취급한다. 여백과줄바꿈, 들여쓰기를이용하여서프로그램을읽기쉽게만든다.
Q & A