Chapter 2 기 초 사 항
목차 2.1 첫 번째 프로그램 2.2 화면 출력 2.3 연산이 있는 프로그램 2.4 입력과 출력이 있는 프로그램 2.5 오류 수정 및 디버깅 2.6 응용 프로그램
2.1 첫 번째 프로그램 주석 헤더파일 포함 함수의 시작 실행되는 문장 함수의 종료
2.1.1 주석(Comment) 주석(Comment) : 프로그램에 대한 설명 이중 슬래시를 이용한 편리한 주석 /* 한 줄로 된 주석 */ /* 여러 줄로 된 주석 */ 이중 슬래시를 이용한 편리한 주석 // 이 줄은 전체가 주석 printf(“Hello World!”); // 문자열을 화면으로 출력
2.1.2 헤더 파일 포함 #include <stdio.h> 헤더 파일(header file) : 컴파일러가 필요로 하는 정보를 가지고 있는 파일 stdio.h : STanDart Input Output Header file 전처리기 지사자 문장 끝에는 세미콜론을 붙이지 않음 stdio.h … int printf(char *,...); printf()문은 stdio.h 헤더 파일 안에 원형이 있어 stdio.h 헤더 파일을 포함 하면 곧바로 호출 해서 사용 가능
2.1.3 줄 바꿈 및 들여쓰기 좋은 방법 나쁜 방법 줄 바꿈을 하여 의미 별로 구분 같은 내용의 처리이면 탭이나 공백을 넣어 들여쓰기를 하는 것이 효과적 좋은 방법 나쁜 방법
2.1.4 함수 add() 3 7 10 함수(function) : 특정한 작업을 수행하기 위하여 작성된 독립적인 코드 함수 int add (int x, int y) { int sum; sum = x + y; return sum; } ※ 함수는 특정한 작업을 수행하기 위하여 main()함수 바깥 부분에 정의 미리 정의된 함수의 원형을 프로토타입이라고 함
2.1.4 함수 main() 모든 C 프로그램에는 반드시 하나의 main() 함수가 있어야 함 입력은 없음 출력은 int형 int main(void) { printf(“Hello World!”); return 0; } main() 함수의 출력 타입 함수의 이름 int main ( void ) { } printf(“Hello World!”); return 0; 함수의 입력 타입 함수의 시작 함수의 몸체 함수의 끝
2.1.5 문장 함수는 여러 개의 문장으로 구성 문장들은 순차적으로 실행 문장은 『;』(세미콜론)으로 끝남 운영 체제 main() printf(“Hello World!”); return 0; 운영 체제 printf(“Hello World!”); printf()함수를 호출하여 콘솔 화면에 Hello World!를 출력하는 문장 return 0; main함수가 작업을 끝내고 OS에게 0값을 반환하는 문장 main함수가 0을 반환하면 프로그램이 정상적으로 종료하였음을 나타냄
2.2 화면 출력 printf()는 컴파일러가 제공하는 함수로서 화면에 “ ”안의 내용을 출력
2.2.1 줄 바꿈 기호 다음과 같은 출력을 하는 프로그램 문장은 순차적으로 실행된다는 사실을 이용 printf()문을 2번 사용하여 프로그램 작성 원하는 결과가 아님
2.2.1 줄 바꿈 기호 \n은 화면에서 커서는 다음 줄로 이동 \n처럼 역슬래시(\)가 먼저 나타나면 특별한 의미를 지님 \n은 줄 바꿈(new line)을 의미 현재 커서의 위치. 다음 문자를 표시할 때는 이곳부터 시작
2.2.1 줄 바꿈 기호 줄 바꿈 문자를 사용하면 원하는 결과를 얻을 수 있음
2.2.2 일반적인 프로그램의 형태 프로그램 실행의 단계 데이터 입력(입력단계) 데이터 처리(처리단계) 결과를 화면에 출력(출력단계) 데이터처리 데이터입력 결과출력
2.3 연산이 있는 프로그램 주석 /* 두개의 숫자의 합을 계산하는 프로그램*/ #include <stdio.h> int main(void) { int x; // 첫번째 정수를 저장할 변수 int y; // 두번째 정수를 저장할 변수 int sum; // 두 정수의 합을 저장하는 변수 x = 100; y = 200; sum = x + y; printf("두수의합: %d", sum); return 0; } 주석 전처리기 지시어 함수 변수선언 문장 연산
2.3.1 변수 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간 프로그램 int x; // 첫번째 정수를 저장하는 변수 int y; // 두번째 정수를 저장하는 변수 int sum; // 두 정수의 합을 저장하는 변수 그릇 = 변수 프로그램
2.3.1 변수 2 변수는 데이터를 담는 상자로 생각할 수 있음 12 ‘A’ 데이터 변수에는 데이터의 종류에 따라 여러 가지 타입이 존재 데이터 2 Number 변수의 이름 ‘A’ 12 12.345
2.3.1 변수 식별자(identifier): 변수나 함수의 이름 식별자를 만드는 규칙 식별자의 예 12 ‘A’ 식별자는 영어의 대소문자, 숫자, 밑줄 문자 『_』 로 구성 식별자는 숫자로 시작할 수 없음 대문자와 소문자를 구별하며 C 언어의 키워드와 똑같은 이름은 사용 불가 식별자의 예 s, s1, student_number: 올바른 식별자 $s, 2nd_student, int: 잘못된 식별자 ‘A’ ch 12 i 12.345 fvalue
2.3.2 변수 선언 변수 선언: 컴파일러에게 어떤 타입의 변수가 사용되는지를 미리 알리는 것 int x; int x; int y; int sum; 변수의 이름 자료형
2.3.2 변수 선언 자료형(data type): 변수가 저장할 데이터가 정수인지, 실수인지, 아니면 또 다른 어떤 데이터인지 지정하는 것 표준 자료형 정수형 short int long 실수형 float double long double 문자형 char
2.3.2 변수 선언 정수 x y sum int x; // 첫번째 정수를 저장하는 변수 int y; // 두번째 정수를 저장하는 변수 int sum; // 두 정수의 합을 저장하는 변수 정수 각 변수에는 정수를 저장 x y sum 메모리 공간에 변수가 만들어지고 이름이 붙여짐
2.3.3 상수 상수(constant)란 그 값이 프로그램이 실행되는 동안 변경 할 수 없는 값 x를 상수로 선언했기 때문에 값을 변경하려 하면 컴파일시 에러 발생 ※ C언어에서 『=』 는 수학적인 등호가 아님
2.3.4 산술 연산 = + 5 2 3 컴퓨터는 기본적으로 계산을 하는 기계 프로그램 안에서 산술 연산을 할 수 있다는 것은 당연 연산 연산자 C 수식 수학에서의 기호 덧셈 + x + y 뺄셈 - x - y 곱셈 * x * y xy 나눗셈 / x / y x / y 또는 또는 x ÷ y 나머지 % x % y x mod y 5 sum = x + y; 2 x 3 y sum = +
2.3.5 변수 값 출력 printf()는 모니터에 출력을 하기 위한 표준 출력 라이브러리 함수 printf(“%d”, sum); 형식 지정자 의미 예 %d 정수를 10진수로 출력 1, -2, 10 … %f 소수점이 있는 실수를 출력 0.1, 10.1, 3.14 … %c 문자 형태로 출력 ‘a’, ‘A’ … %s 문자열 형태로 출력 “abc”, “ABC”
2.4 입력과 출력이 있는 프로그램 고정된 값이 아닌 입력 받은 값으로 연산하는 프로그램 시작 두개의 정수를 입력 받음 두 개의 정수를 더하여 합을 계산 합을 화면에 출력 종료 입력단계 처리단계 출력단계 첫 번째 숫자를 입력하시오: 10 두 번째 숫자를 입력하시오: 20 두 수의 합: 30
2.4 입력과 출력이 있는 프로그램
2.4.1 scanf() scanf()함수는 키보드로부터 입력된 데이터를 지정된 형식으로 변수에 저장하는 라이브러리 함수 형식지정자와 변수의 개수는 같아야 함 scanf(“%d %f”, &number, &height); ※ number라는 int변수와 height라는 float변수에 값을 입력 받는 방법 scanf(“%d , %f”, &number, &height); scanf() 함수에 의한 입력 값은 100 , 12.345 처럼“ ”안의 형식대로 입력해야 함
2.5 오류 수정 및 디버깅 에러(error)와 경고(warning) 오류의 종류 에러(error) : 심각한 오류 에러가 검출되면 컴파일, 링크 불가 경고(warning) : 경미한 오류 경고가 검출되면 컴파일, 링크 및 실행도 가능하지만 잠재적인 문제를 일으킬 우려가 있음 오류의 종류 컴파일 시간 오류 : 대부분 문법적인 오류 실행 시간 오류 : 실행되는 도중에 발생하는 오류 논리 오류 : 논리적으로 잘못되어서 의도한 결과가 나오지 않는 오류
2.5.1 오류 메시지의 분석 Compiling... test.c c: \ cprogram test test.c(7) : error C2143: syntax error : missing ';' before 'retu rn' Error executing cl.exe . 에러가 발견된 소스 파일명 라인의 번호 문법적인 오류 (syntax error) 가 있었음을 나타냄 return 앞에 ; 를 빠뜨렸다는 의미
2.5.2 오류 수정 과정 오류 수정 과정 소스파일 test.c 오브젝트 파일 test.obj 실행파일 test.exe ERROR!! 소스파일 test.c 오브젝트 파일 test.obj 실행파일 test.exe 컴파일러 (compiler) 링커 (linker) 실행 (execution) 실행 시간 오류 논리 오류 컴파일 시간 오류
2.5.2 오류 수정 과정 오류 1 /* 에러가 발생하는 프로그램 */ #include <stdio.h> int main(void) { printf("Hello World!\n") return 0; } 문장의 끝에 『;』이 없음!! --------------------Configuration: test - Win32 Debug-------------------- Compiling... test.c C:\PROJECT\test\test.c(7) : error C2143: syntax error : missing ';' before 'return' Error executing cl.exe. test.exe - 1 error(s), 0 warning(s)
2.5.2 오류 수정 과정 오류 2 /* 에러가발생하는프로그램* / #include <stdio.h> int main(void) { printf("Hello World!\n") return 0; } 『*』과 『/』이 떨어져 있음 전체가 주석 처리됨 --------------------Configuration: test - Win32 Debug-------------------- Compiling... test.c c:\project\test\test.c(9) : fatal error C1071: unexpected end of file found in comment Error executing cl.exe. test.exe - 1 error(s), 0 warning(s)
2.5.2 오류 수정 과정 오류 3 /* 첫번째 프로그램*/ #include <stdio,h> int main(void) { print("Hello World!"); return 0; } stdio.h로 적어주어야 됨 --------------------Configuration: test - Win32 Debug-------------------- Compiling... test.c c:\project\test\test.c(2) : fatal error C1083: Cannot open include file: 'stdio,h': No such file or directory
2.5.2 오류 수정 과정 오류 4 print가 아니고 printf /* 첫번째프로그램*/ #include <stdio.h> int main(void) { print("Hello World!"); return 0; } print가 아니고 printf -------------------Configuration: test - Win32 Debug-------------------- Compiling... test.c C:\CPROGRAM\test\test.c(6) : warning C4013: 'print' undefined; assuming extern returning int Linking... test.obj : error LNK2001: unresolved external symbol _print Debug/test.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. test.exe - 2 error(s), 1 warning(s)
2.6 응용 프로그램 연봉 계산 프로그램 10년 동안 월급을 모두 저금할 경우, 얼마나 모을 수 있는지 계산하는 프로그램 (단 이자는 생각하지 않음)
2.6 응용 프로그램 원의 면적 구하기 프로그램 원의 반지름을 입력 받고, 이 원의 면적을 구한 후 화면에 출력해 주는 프로그램
2.6 응용 프로그램 원 달러 환율 계산 프로그램 원 달러 환율과 한화 금액을 입력하면 몇 달러인지 계산해서 화면에 출력해주는 프로그램
Q n A