Uploaded by 양정인

제3장 C프로그램구성요소(강의자료)

advertisement
3장 C프로그램 구성요소
일반적인 프로그램의 형태
1.입력 : 변수에 데이터를 저장
①입력장치 : 키보드, 마우스 등
②저장장치 : 디스크, CDROM 등
③통신장치 : Ethernet, Wi-fi 등
변수에 주목하라.
• 모든 것은 변수로!!!
• 원하는 값을 해당 변수에
저장하는 것이 프로그래밍
④다른 프로그램의 출력
2.처리 (계산) : 데이터를 처리
①변수의 값들을 처리(계산 등)하여 (원하는) 결과를 변수에 저장
3.출력 : 최종값을 가진 변수(들)의 내용을 출력
①출력장치 : 화면, 프린터 등
②저장장치 : 디스크, CDROM 등
③통신장치 : Ethernet, Wi-Fi 등
④다른 프로그램의 입력
덧셈 프로그램 #1
/* 두개의 숫자의 합을 계산하는 프로그램*/
#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
문장 (statements)
main()함수:
• 실행 시 최초로
시작되는 함수
주석(comment)
 주석은 프로그램에 전혀 영향을 미치지 않으며(컴파일러가 무시)
오직 프로그램의 이해를 도와주는 목적으로 사용
• 너무 자세하거나, 너무 간략한 것은 바람직하지 않음
 주석의 예
/* 한줄로 된 주석 */
/* -----------------------저자: 홍길동
날짜: 2013.3.4
여러 줄로 이루어진 주석
-------------------------- */
// 여기서부터 줄의 끝까지 주석
읽기 쉬운 코드
1. 적당한 주석을 달아준다.
2. 들여쓰기(indentation)을 잘 사용한다.
 들여쓰기(indentation): 수준에 따라 문장들의 시작 위치를 조절
 가능하면 space 대신 tab을 사용할 것
3. 변수와 함수의 이름을 용도에 맞도록 짓는다.
4. 적당히 빈 줄을 추가한다.
들여쓰기
/* 두개의 숫자의 합을 계산하는 프로그램*/
#include <stdio.h>
int main(void)
{
int x;
int y;
int sum;
// 첫번째 정수를 저장할 변수
// 두번째 정수를 저장할 변수
// 두 정수의 합을 저장하는 변수
x = 100;
y = 200;
sum = x + y;
printf("두수의합: %d", sum);
return 0;
}
한 수준 안의 코드를 하나의 tab 만큼 안으로 들여씀
• tab의 크기 조절
전처리기 (preprocessor)
 전처리기라는 이름은 컴파일러 이전에 처리한다는 것에서 유래
 해당 명령을 처리하여 변환된 소스 파일을 컴파일러에 전달
 전처리 명령들은 ‘#’ 으로 시작됨
• 대표적으로 #include, #define, #if 등이 있음
 “stdio.h”에는 표준 입출력에 대한 라이브러리 함수의 선언(원형)이
포함되어 있음
• #include <stdio.h>
• include directory에 있는 stdio.h라는 파일의 내용을 가져와서 복사하라는
의미
• 지금은 한번 읽어 보기만 할 것
• 이해하려고 노력할 필요 없음
• 뒤에 다시 설명
함수
 함수(function): 특정 기능을 수행하는 처리 단계들을 중괄호로 묶어
서 이름을 붙인 것
 함수는 프로그램을 구성하는 기본적인 단위(부품) : 일반적으로 모듈
(module)이라고도 함
 C 프로그램은 함수들로 구성
 함수의 구조는 다음과 같다.
함수의 이름
함수 반환값의 type
int func_name (void)
{
....
....
}
return 값;
함수의 매개변수
함수의 몸체(body)
• ‘{’ 로 시작, ‘}’로 끝남
• 여러 문장으로 구성
• 함수의 기능을 구현
함수 호출
Q) 함수 안에 있는 문장들은 언제 실행되는가?
A) 함수가 호출되면 실행된다.
Q) 함수 호출은 어떻게 하는가?
A) 호출을 원하는 위치에 함수의 이름을 적어주면 된다.
Q) 많은 함수 중에서 가장 먼저 실행되는 것은?
A) 프로그램이 실행되면 맨 먼저 main() 함수가 호출/실행된
다. 다른 함수들은 main()으로부터 직간접적으로 호출된
다.
문장 (Statement)
 함수는 하나 이상의 문장으로 이루어진다.
 문장들은 순차적으로 실행된다.
•
위에서 아래쪽으로 한 문장씩 차례대로 실행
•
조건문 (if 문, switch case 문), loop (for, while, do while 문), goto 문 등 제외
 모든 문장은 “;” 으로 끝나야 한다.
 return 문
•
return은 호출한 함수로 되돌아간다는 것이며 값을 반환(return)할 수 있다.
•
return 문이 반환하는 값의 type은 함수의 type과 동일해야 한다.
•
return 값이 해당 함수의 값이라고 해석해도 무방하다.
변수
변수는 프로그램이 사용하는 데이터를 저장할 수 있는 메모리 공간
 변수는 사용하기 전에 선언
 프로그램 실행하는 동안 계속 존재하는 전역변수
 생성, 소멸하는 지역변수
 변수와 자료형
•
정수형 : char, short, int, long, long long int
•
실수형 : float, double
 변수 선언의 예
int x;
// 첫번째 정수를 저장하는 변수
int y;
// 두번째 정수를 저장하는 변수
int sum;
// 두 정수의 합을 저장하는 변수
변수의 이름
 식별자(identifier): 변수, 상수, 함수 등의 이름
 식별자를 만드는 규칙
• 식별자는 영어의 대소문자, 숫자, 밑줄 문자 (_)로 이루어진다.
• 식별자는 숫자로 시작할 수 없다.
• 대문자와 소문자를 구별(case-sensitive)하며 C 언어의 키워드와 똑같은 이
름은 허용되지 않는다.
 식별자의 예:
• s, s1, student_number : 올바른 식별자
• $s, 2nd_student, int : 잘못된 식별자
식별자에 $사용 불가
숫자로 시작
C언어의 키워드
상수, 수식, expression
 상수(constant): 그 값이 프로그램이 실행하는 동안 변하지 않는 수
•
cf. 변수
x = 100;
y = 200;
변수
상수
 expression : 값을 가지는 모든 표현
•
•
•
수식, 변수, 상수, 함수 등은 모두 expression
연산자와 피연산자
x + 100 등과 같이 연산자와 피연산자로 구성된 수식
 대입 연산 (assignment operator, 할당연산이라고도 부름)
•
•
•
오른 쪽의 값을 왼쪽의 변수에 저장
대입 연산도 expression 이며, 오른쪽의 값이 대입 연산의 값
대입 연산의 왼편에는 변수만 올 수 있음
sum = x + 100;
산술 연산
연산
연산자
C 수식
의미
덧셈
+
x+y
x+y
뺄셈
-
x-y
x-y
곱셈
*
x*y
xy
나눗셈
/
x/y
x/y
나머지
%
x%y
나머지
printf() 함수
 모니터에 출력을 하기 위한 표준 출력 라이브러리 함수
 형식 지정자: printf() 에서 값을 출력하는 형식을 지정한다.
• 더 다양한 형식 지정자 사용 가능
• 한 번에 여러 변수의 값을 출력하는 것도 가능
• 뒤에 배울 scanf()에서 입력형식으로도 사용
형식 지정자
의미
예
%d
정수를 10진수로 출력한다
printf(“%d”, i);
%f
float 형의 실수로 출력한다.
printf(“%f”, f);
%lf
double 형의 실수로 출력한다.
printf(“%lf”, d);
%g
double 형의 실수로 출력한다.
printf(“%g”, d);
%c
문자 형태로 출력한다.
printf(“%c”, ch);
char s[10]; printf(“%s”, s);
%s
문자열 형태로 출력한다.
printf(“%s”, “Hello World”);
printf( “Hello World”);
두 번째 덧셈 프로그램
// 사용자로부터 입력받은 2개의 정수의 합을 계산하여 출력
#include <stdio.h>
int main(void)
{
int x;
int y;
int sum;
}
// 첫번째 정수를 저장할 변수
// 두번째 정수를 저장할 변수
// 2개의 정수의 합을 저장할 변수
printf("첫번째 숫자를 입력하시오:");
scanf("%d", &x);
// 입력 안내 메시지 출력
// 하나의 정수를 받아서 x에 저장
printf("두번째 숫자를 입력하시오:");
scanf("%d", &y);
// 입력 안내 메시지 출력
// 하나의 정수를 받아서 y에 저장
sum = x + y;
printf("두수의 합: %d", sum);
// 변수 2개를 더한다.
// sum의 값을 10진수 형태로 출력
return 0;
// 0을 외부로 반환
첫번째 숫자를 입력하시오:10
두번째 숫자를 입력하시오:20
두수의 합: 30
scanf()의 동작
 키보드로부터 원하는 형식의 값을 받아서 변수에 저장한다.
 변수의 주소를 필요로 한다.
 다음과 같은 형식 지정자(더 다양한 지정자 가능)를 사용할 수 있다.
형식 지정자
의미
예
%d
정수를 10진수로 입력한다
scanf(“%d”, &i);
%f
float 형의 실수로 입력한다.
scanf(“%f”, &f);
%lf
double 형의 실수로 입력한다.
scanf(“%lf”, &d);
%c
문자 형태로 입력한다.
scanf(“%c”, &ch);
%s
문자열 형태로 입력한다.
char s[10]; scanf(“%s”, s);
printf(), scanf() 사용 시 주의할 점
 형식 지정자와 변수의 수와 자료형을 맞추어야 한다.
• 순서에 따라 1:1로 대응
int형
int i;
float ratio;
double scale;
scanf("%lf", &scale);
scanf("%f", &ratio);
scanf(“%d%f%lf”, &i, &ratio, &scale);
printf(“%d %f %lf”, i, ratio, scale);
double형
float형
연봉 계산 프로그램
/* 저축액을 계산하는 프로그램 */
#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;
월급을 입력하시오: 200
10년 동안의 저축액: 24000
원의 면적 프로그램
/* 원의 면적을 계산하는 프로그램*/
#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;
반지름을 입력하시오: 5.0
원의 면적: 78.500000
환율 계산 프로그램
/* 환율을 계산하는 프로그램*/
#include <stdio.h>
int main(void)
{
float rate;
float usd;
int krw;
// 원/달러 환율
// 달러화
// 원화
printf("달러에 대한 원화 환율을 입력하시오: ");
scanf("%f", &rate);
// 입력 안내 메시지
// 사용자로부터 환율입력
printf("원화 금액을 입력하시오: ");
scanf("%d", &krw);
// 입력 안내 메시지
// 원화 금액 입력
usd = krw / rate;
// 달러화로 환산
printf("원화 %d원은 %f달러입니다.\n", krw, usd); // 계산 결과 출력
}
return 0;
달러에 대한 원화 환율을 입력하시오: 928.78
원화 금액을 입력하시오: 1000000
원화 1000000원은 1076.681204달러입니다.
// 함수 결과값 반환
사각형의 둘레와 면적
#include <stdio.h>
int main(void)
{
double w;
double h;
double area;
double perimeter;
w = 10.0;
h = 5.0;
area = w*h;
perimeter = 2*(w+h);
printf("사각형의 넓이: %lf", area);
printf("사각형의 둘레: %lf", perimeter);
return 0;
}
사각형의 넓이: 50.000000
사각형의 둘레: 30.000000
Download