380 likes | 506 Views
Chapter 2. 기 초 사 항. 목차. 2.1 첫 번째 프로그램 2.2 화면 출력 2.3 연산이 있는 프로그램 2.4 입력과 출력이 있는 프로그램 2.5 오류 수정 및 디버깅 2.6 응용 프로그램. 2.1 첫 번째 프로그램. 주석. 헤더파일 포함. 함수의 시작. 실행되는 문장. 함수의 종료. 2.1.1 주석 (Comment). 주석 (Comment) : 프로그램에 대한 설명 /* 한 줄로 된 주석 */ /* 여러 줄로 된 주석 */ 이중 슬래시를 이용한 편리한 주석
E N D
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> • #include는 소스 코드 안에 특정 파일을 현재의 위치에 포함 • 헤더 파일(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 함수 • 함수(function) : 특정한 작업을 수행하기 위하여 작성된 독립적인 코드 3 7 int add (int x, int y) { int sum; sum = x + y; return sum; } 10 함수 ※ 함수는 특정한 작업을 수행하기 위하여 main()함수 바깥 부분에 정의 미리 정의된 함수의 원형을 프로토타입이라고 함 add()
2.1.4 함수 모든 C 프로그램에는 반드시 하나의 main() 함수가 있어야 함 입력은 없음 int main(void) { printf(“Hello World!”); return 0; } 출력은 int형 함수의 출력 타입 0 함수의 이름 함수의 입력 타입 int main ( void ) 함수의 시작 { printf(“Hello World!”); main() 함수의 몸체 return 0; } 함수의 끝
운영 체제 main() printf(“Hello World!”); return 0; 운영 체제 2.1.5 문장 • 함수는 여러 개의 문장으로 구성 • 문장들은 순차적으로 실행 • 문장은 『;』(세미콜론)으로 끝남 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 일반적인 프로그램의 형태 • 프로그램 실행의 단계 • 데이터 입력(입력단계) • 데이터 처리(처리단계) • 결과를 화면에 출력(출력단계)
주석 /* 두개의숫자의합을계산하는프로그램*/ #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 연산이 있는 프로그램
2.3.1 변수 • 프로그램이 사용하는 데이터를 일시적으로 저장할목적으로 사용하는 메모리 공간 int x; // 첫번째 정수를 저장하는 변수 int y; // 두번째 정수를 저장하는 변수 int sum;// 두 정수의 합을 저장하는 변수 그릇 = 변수 프로그램
2.3.1 변수 • 변수는 데이터를 담는 상자로 생각할 수 있음 • 변수에는 데이터의 종류에 따라 여러 가지 타입이 존재 데이터 변수의 이름 2 ‘A’ 12 12.345 Number
2.3.1 변수 • 식별자(identifier): 변수나 함수의 이름 • 식별자를 만드는 규칙 • 식별자는 영어의 대소문자, 숫자, 밑줄 문자 『_』 로 구성 • 식별자는 숫자로 시작할 수 없음 • 대문자와 소문자를 구별하며 C 언어의 키워드와 똑같은 이름은 사용 불가 • 식별자의 예 • s, s1, student_number: 올바른 식별자 • $s, 2nd_student, int: 잘못된 식별자 ‘A’ 12 12.345 ch i fvalue
2.3.2 변수 선언 • 변수 선언: 컴파일러에게 어떤 타입의 변수가사용되는지를 미리 알리는 것 int x; int x; int y; int sum; 변수의 이름 자료형 컴파일러
2.3.2 변수 선언 • 자료형(data type):변수가 저장할 데이터가 정수인지,실수인지, 아니면 또 다른 어떤 데이터인지 지정하는 것
2.3.2 변수 선언 int x; // 첫번째 정수를 저장하는 변수 int y; // 두번째 정수를 저장하는 변수 int sum;// 두 정수의 합을 저장하는 변수 정수 각 변수에는 정수를 저장 y sum x 메모리 공간에 변수가 만들어지고 이름이 붙여짐
2.3.3 상수 • 상수(constant)란 그 값이 프로그램이 실행되는 동안변경 할 수 없는 값 x를 상수로 선언했기 때문에 값을 변경하려 하면 컴파일시 에러 발생 ※ C언어에서 『=』는 수학적인 등호가 아님
2.3.4 산술 연산 • 컴퓨터는 기본적으로 계산을 하는 기계 • 프로그램 안에서 산술 연산을 할 수 있다는 것은 당연 2 x 5 sum = x + y; 3 = + sum y
2.3.5 변수 값 출력 • printf()는 모니터에 출력을 하기 위한 표준 출력라이브러리 함수 • printf(“형식 제어 문자열”, 변수); • printf(“%d”, sum);
2.4 입력과 출력이 있는 프로그램 • 고정된 값이 아닌 입력 받은 값으로 연산하는 프로그램 시작 첫 번째 숫자를 입력하시오: 10 두 번째 숫자를 입력하시오: 20 두개의 정수를 입력 받음 입력단계 두 개의 정수를 더하여 합을 계산 처리단계 합을 화면에 출력 두 수의 합: 30 출력단계 종료
2.4.1 scanf() • scanf()함수는 키보드로부터 입력된 데이터를 지정된형식으로 변수에 저장하는 라이브러리 함수 • scanf(“%○ %○ ...”, &변수1, &변수2, ...); • 형식지정자와 변수의 개수는 같아야 함 • 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 오류 메시지의 분석 에러가 발견된 소스 파일명 의미 앞에 를 빠뜨렸다는 return ; Compiling... test.c c: \ cprogram \ test \ test.c(7) : error C2143: syntax error : missing ';' before 'retu rn' Error executing cl.exe . 문법적인 오류 에러가 발견된 라인의 번호 (syntax error) 가 있었음을 나타냄
컴파일러 (compiler) 링커 (linker) 실행 (execution) 소스파일 test.c 오브젝트 파일 test.obj 실행파일 test.exe ERROR!! 실행 시간 오류 컴파일 시간 오류 논리 오류 2.5.2 오류 수정 과정 • 오류 수정 과정
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; } -------------------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 응용 프로그램 • 원 달러 환율 계산 프로그램 • 원 달러 환율과 한화 금액을 입력하면 몇 달러인지 계산해서 화면에출력해주는 프로그램