Chapter 03 일단짜보는그럴듯한 C 프로그램...
1. 프로그램작성순서복습 2. 주석 3. scanf_s( ) 맛보기
1. 프로그램작성순서복습 프로그래밍작성순서요약 프로젝트만들기 : 소스파일보다프로젝트를먼저생성해야함 코딩 : C 컴파일러가알아들을수있는형식으로문서작성 빌드 : 컴파일과링크를합친개념 컴파일 : 소스를컴퓨터가이해하는오브젝트파일로변환 링크 : 여러개의오브젝트파일을하나의실행파일로묶음 실행 : 빌드한결과인.exe 파일을작동 두번째프로젝트만들기 프로젝트이름은 Second 01 Visual Studio 를실행한다.
1. 프로그램작성순서복습 02 프로젝트를생성하기위해메뉴의 [ 파일 ] [ 새로만들기 ] [ 프로젝트 ] 를클릭한다. [ 새프로젝트 ] 창에서왼쪽트리의 Visual C++ 를선택하고오른쪽의 Win32 콘솔응용프로그램 을선택한다. 아래쪽이름에 Second 를입력한후에위치의 < 찾아보기 > 를클릭해서 C:\C소스 폴더를선택한다. 솔루션용디렉터리만들기 체크박스는끄고 < 확인 > 을클릭.
1. 프로그램작성순서복습 03 [Win32 응용프로그램마법사시작 ] 창에서 < 다음 > 을클릭한다. 04 [ 응용프로그램설정 ] 창에서 콘솔응용프로그램, 빈프로젝트 를체크하고 < 마침 > 을 클릭한다.
1. 프로그램작성순서복습 05 최종적으로다음과같이빈프로젝트 ( 또는솔루션 ) 를완성했다. 이프로젝트의이름은 Second. 06 메뉴의 [ 파일 ] [ 끝내기 ] 를선택해서 Visual Studio 를종료하자.
1. 프로그램작성순서복습 프로그램코딩 01 Visual Studio를실행한다. 02 Visual Studio의메뉴에서 [ 파일 ] [ 열기 ] [ 프로젝트 / 솔루션 ] 을선택한후앞서작업했던 C:\C소스\Second 폴더의 Second.sln을선택한다. 03 왼쪽 [ 솔루션탐색기 ] 의프로젝트이름 ( 지금은 Second) 아래의 소스파일 폴더에서 < 마우스오른쪽 > 버튼을클릭한후 [ 추가 ] [ 새항목 ] 을선택한다. 04 [ 새항목추가 ] 창에서 C++ 파일 (.cpp) 을선택한상태에서이름을 Second.c 로입력하고 < 추가 > 를클릭한다. 05 오른쪽코드편집창에 100과 50의더하기 빼기 곱하기 나누기를수행하는프로그램을코딩. 06 틀린글자가없는지확인한후메뉴의 [ 파일 ] [ 모두저장 ] 을선택해서입력한내용을저장.
[ 기본 2-1] 두번째로만드는 C 프로그램 01 #include <stdio.h> 02 03 void main( ) 04 { 05 int a, b; 06 int result; 07 08 a=100; 09 b=50; 10 11 result = a + b ; 12 printf(" %d + %d = %d \n", a, b, result); 13 14 result = a - b ; 15 printf(" %d - %d = %d \n", a, b, result); 16 17 result = a * b ; 18 printf(" %d * %d = %d \n", a, b, result); 19 20 result = a / b ; 21 printf(" %d / %d = %d \n", a, b, result); 22 } --- 계산할두숫자를저장할변수 a, b 와결과를넣을변수 result 를선언한다 ---a 에 100, b 에 50 을넣는다. ---a 와 b 를더한결과를 result 에넣는다. --- 모니터에 a, b, result 를출력한다. ---a 와 b 를뺀결과를 result 에넣는다. --- 모니터에 a, b, result 를출력한다. ---a 와 b 를곱한결과를 result 에넣는다. --- 모니터에 a, b, result 를출력한다. ---a 를 b 로나눈결과를 result 에넣는다. --- 모니터에 a, b, result 를출력한다.
1. 프로그램작성순서복습 변수의개념 변수란간단히 값을저장하는그릇 ( 또는방 ). 5 행과 6 행에서변수 ( 그릇 ) 세개. 8 행과 9 행에서 a 그릇에는 100 을, b 그릇에는 50 을넣음. 11 행에서 a 그릇의값과 b 그릇의값을더한결과를 result 그릇에넣음.
1. 프로그램작성순서복습 printf( ) - 결과를출력하기위해사용하는함수, 괄호안의내용을모니터에출력하라는의미. %d - 정수를출력하기위해필요함. \n - 실제로출력되지않는기호로서, 다음줄로넘어가라는뜻.
1. 프로그램작성순서복습 빌드 ( 컴파일 / 링크 ) 01 메뉴의 [ 빌드 ] [ 솔루션빌드 ] 를선택해서프로젝트를빌드한다. 02 특별히문제가없다면다음그림과같이 성공 1, 실패 0, 최신 0, 생략 0 이출력된다. 03 만약, 실패가나오면소스에서틀린부분이있다는뜻이므로소스에서틀린부분을찾아수 정한후다시빌드해야한다.
1. 프로그램작성순서복습 실행 01 [Ctrl] + [F5] 를눌러서실행한다. 실행결과를보면더하기 빼기 곱하기 나누기의결과가 나온것을확인할수있다. 02 결과를확인한후아무키나누르면결과창이닫힌다.
2. 주석 주석이란? 코드를설명하는글 컴파일시주석은단일공백문자로처리 주석의내용이아무리많아도실행파일의크기에는변화가없음 공백문자가허용되는어느곳이든작성가능 중첩된주석은사용불가 주석의종류 /* 한줄로된주석 */ /* ------------------------ 저자 : 홍길동날짜 : 2013.3.4 여러줄로이루어진주석 -------------------------- */ // 여기서부터줄의끝까지주석 (Microsoft 전용, ANSI 표준에서는사용불가 )
[ 주석 ] 주석의예 01 /* This program is example of annotate. */ 02 // This program is example of annotate. 03 /* This program is example of annotate. 04 This program is copyrighted by hong. */ 05 #include <stdio.h> 06 07 void main( ) 08 { 09 printf( Hello ) ; // Annotate can go here 10 }
3. scanf_s( ) 맛보기 값을입력받는 scanf_s( ) 변수값을수정하기위해소스를수정할필요가없음 키보드로사용자가원하는값을입력할수있음
3. scanf_s( ) 맛보기 01 값을입력받는 scanf_s( ) 함수를사용해보자. [ 기본 2-1] 의 8 행과 9 행을아래표시된부분과같이수정하자. - [ 기본 2-1] 을열고소스수정 [ 응용 2-2] - [Ctrl] + [F5] 를눌러서빌드와실행을동시에진행. - 커서만깜박이는화면에숫자입력후 Enter 누르기.
[ 응용 2-2] 소스수정하기 ( 키보드로값을입력받음 ) 01 #include <stdio.h> 02 03 void main( ) 04 { 05 int a, b; 06 int result; 07 08 scanf_s("%d", &a); 09 scanf_s("%d", &b); 10 11 result = a + b ; 12 1 (" %d + %d = %d \n", a, b, result); 13 14 ~~~ 이하는 [ 기본 2-1] 의 14 행 ~21 행과동일함 ~~~ 22 } --- 키보드로 a 에들어갈값을입력받는다 --- 키보드로 b 에들어갈값을입력받는다
3. scanf_s( ) 맛보기 02 [Ctrl]+[F5] 를눌러서빌드와실행을동시에진행한다. 그런데실행결과를보니그냥커서만 깜박거리는것을확인할수있다. 03 숫자를하나입력 (300) 하고 [enter] 를누름. 다시숫자하나 (200) 를입력하고 [enter] 를누름. 04 프로그램을좀더편하게사용하기위해다음과같이수정해보자.
[ 응용 2-3] 소스수정하기 ( 도움말출력 ) 01 #include <stdio.h> 02 03 void main( ) 04 { 05 int a, b; 06 int result; 07 08 printf(" 첫번째계산할값을입력하세요 = = > "); 09 1 ("%d", &a); 10 11 printf(" 두번째계산할값을입력하세요 = = > "); 12 2 ("%d", &b); 13 14 result = a + b ; 15 3 (" %d + %d = %d \n",a,b,result); 16 17 ~~~ 이하는 [ 기본 2-1] 의 14 행 ~21 행과동일함 ~~~ 25 } --- 도움말을화면에출력한다. --- 도움말을화면에출력한다.
3. scanf_s( ) 맛보기 05 다시 [Ctrl]+[F5] 를눌러서빌드와실행을동시에하자. 이제는어떤값이든지입력하기만하면즉각결과값이나올것이다.
[ 예제모음 01] 숫자 4 개를더하는프로그램
[ 예제모음 01] 숫자 4 개를더하는프로그램 01 #include <stdio.h> 02 03 void main( ) 04 { 05 int a, b, c, d;. 06 int result; 07 08 printf(" 첫번째계산할값을입력하세요 = = > "); 09 scanf_s("%d", &a); 10 printf(" 두번째계산할값을입력하세요 = = > "); 11 scanf_s("%d", &b); 12 printf(" 세번째계산할값을입력하세요 = = > "); 13 scanf_s("%d", &c); 14 printf(" 네번째계산할값을입력하세요 = = > "); 15 scanf_s("%d", &d); 16 17 result = a + b + c + d; 18 19 printf(" %d + %d + %d + %d = %d \n", a, b, c, d, result); 20 } --- 입력받을변수 4 개를선언한다. --- 변수 a 에들어갈값을키보드로직접입력한다. --- 변수 b 에들어갈값을키보드로직접입력한다. --- 변수 c 에들어갈값을키보드로직접입력한다. --- 변수 d 에들어갈값을키보드로직접입력한다. --- 변수 a, b, c, d 의값을모두더해직접입력한다. --- 변수 a, b, c, d 와 result 값을모니터에출력한다.
[ 예제모음 02] if 문을활용한계산기
[ 예제모음 02] if 문을활용한계산기 01 #include <stdio.h> 02 03 void main( ) 04 { 05 int a, b; 06 int result; 07 int k; 08 09 printf(" 첫번째계산할값을입력하세요 = = > "); 10 scanf_s("%d", &a); 11 printf("<1> 덧셈 <2> 뺄셈 <3> 곱셈 <4> 나눗셈 = = > "); 12 scanf_s("%d", &k); 13 printf(" 두번째계산할값을입력하세요 = = > "); 14 scanf_s("%d", &b); 15 16 if (k = = 1) { 17 result = a + b ; 18 printf(" %d + %d = %d \n", a, b, result); 19 } 20
[ 예제모음 02] if 문을활용한계산기 21 if (k = = 2) { 22 result = a b; 23 printf(" %d - %d = %d \n", a, b, result); 24 } 25 26 if (k = = 3) { 27 result = a * b ; 28 printf(" %d * %d = %d \n", a, b, result); 29 } 30 31 if (k = = 4) { 32 result = a / b ; 33 printf(" %d / %d = %d \n", a, b, result); 34 } 35 }
[ 예제모음 02] if 문을활용한계산기 01 #include <stdio.h> 02 03 void main( ) 04 { 05 int a, b; 06 int result; 07 int k; 08 09 printf(" 첫번째계산할값을입력하세요 = = > "); 10 scanf_s("%d", &a); 11 printf("<1> 덧셈 <2> 뺄셈 <3> 곱셈 <4> 나눗셈 = = > "); 12 scanf_s("%d", &k); 13 printf(" 두번째계산할값을입력하세요 = = > "); 14 scanf_s("%d", &b); 15 16 if (k = = 1) { 17 result = a + b ; 18 printf(" %d + %d = %d \n", a, b, result); 19 } 20 --- 계산방식을선택할변수를선언한다 --- 계산할두숫자를입력한다 --- 연산자를선택한다 (1= 덧셈, 2= 뺄셈, 3= 곱셈, 4= 나눗셈 ). --- 계산할두숫자를입력한다. --- 입력한 k 가 1 이면덧셈을수행한다.
[ 예제모음 02] if 문을활용한계산기 21 if (k = = 2) { 22 result = a b; 23 printf(" %d - %d = %d \n", a, b, result); 24 } 25 26 if (k = = 3) { 27 result = a * b ; 28 printf(" %d * %d = %d \n", a, b, result); 29 } 30 31 if (k = = 4) { 32 result = a / b ; 33 printf(" %d / %d = %d \n", a, b, result); 34 } 35 } --- 입력한 k 가 2 면뺄셈을수행한다. --- 입력한 k 가 3 면곱셈을수행한다. --- 입력한 k 가 4 면나눗셈을수행한다.
[ 예제모음 03] 오류가없는계산기
[ 예제모음 03] 오류가없는계산기 01 #include <stdio.h> 02 03 void main( ) 04 { 05 int a, b; 06 int result; 07 char k;. 08 09 printf(" 첫번째계산할값 = = > "); 10 scanf_s("%d", &a); 11 printf("+ - * / % = = > "); 12 scanf_s(" %c", &k, 1); 13 printf(" 두번째계산할값 = = > "); 14 scanf_s("%d", &b); 15 16 if (k = = '+') { 17 result = a + b ; 18 printf(" %d + %d = %d \n", a, b, result); 19 } 20
[ 예제모음 03] 오류가없는계산기 21 if (k = = '-') { 22 result = a - b ; 23 printf(" %d - %d = %d \n", a, b, result); 24 } 25 26 if (k = = '*') { 27 result = a * b ; 28 printf(" %d * %d = %d \n", a, b, result); 29 } 30 31 if (k = = '/') { 32 if (b!= 0) { 33 result = a / b ; 34 printf(" %d / %d = %d \n", a, b, result); 35 } else 36 printf(" 0 으로나누면안됩니다. \n"); 37 } 38 39 if (k = = '%') {
[ 예제모음 03] 오류가없는계산기 40 if (b!= 0) { 41 result = a % b ; 42 printf(" %d %% %d = %d \n", a, b, result); 43 } else 44 printf(" 0으로나누면나머지값이안됩니다. \n"); 45 } 46 }
[ 예제모음 03] 오류가없는계산기 01 #include <stdio.h> 02 03 void main( ) 04 { 05 int a, b; 06 int result; 07 char k;. 08 09 printf(" 첫번째계산할값 = = > "); 10 scanf_s("%d", &a); 11 printf("+ - * / % = = > "); 12 scanf_s(" %c", &k, 1); 13 printf(" 두번째계산할값 = = > "); 14 scanf_s("%d", &b); 15 16 if (k = = '+') { 17 result = a + b ; 18 printf(" %d + %d = %d \n", a, b, result); 19 } 20 --- 연산자를입력받을변수를문자형으로선언한다 ---"%c" 의앞에는공백이있어야한다는것에주의하자
[ 예제모음 03] 오류가없는계산기 21 if (k = = '-') { 22 result = a - b ; 23 printf(" %d - %d = %d \n", a, b, result); 24 } 25 26 if (k = = '*') { 27 result = a * b ; 28 printf(" %d * %d = %d \n", a, b, result); 29 } 30 31 if (k = = '/') { 32 if (b!= 0) { 33 result = a / b ; 34 printf(" %d / %d = %d \n", a, b, result); 35 } else 36 printf(" 0 으로나누면안됩니다. \n"); 37 } 38 39 if (k = = '%') { ---0 으로나누거나나머지값을구하면처리하지않고오류메시지를보여준다.
[ 예제모음 03] 오류가없는계산기 40 if (b!= 0) { 41 result = a % b ; 42 printf(" %d %% %d = %d \n", a, b, result); 43 } else 44 printf(" 0으로나누면나머지값이안됩니다. \n"); 45 } 46 } ---0 으로나누거나나머지값을구하면처리하지않고오류메시지를보여준다.
[3 장요약 ] 1 C 프로그램작성순서 2 변수의개념 변수는 값을저장하는그릇 과비슷한개념이다. 그렇지만실제그릇과달리한번들어간값은 다른값이들어오기전까지그대로유지된다. 3 주석 코드를설명하는글이다. 컴파일시주석은기계어로변환되지않는다. 4 scanf_s( ) 함수 키보드를통해값을입력할때사용하는함수로, 변수에값을입력받으려면반드시그앞에 & 기호를붙여야한다.