C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습
구성요소 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산
예 /* 두개의숫자의합을계산하는프로그램 */ #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
주석 (comment) /* 두개의숫자의합을계산하는프로그램 */ #include <stdio.h> int main(void) {......... }
3 가지방법의주석 /* 한줄로된주석 */ /* ------------------------ 저자 : 홍길동 날짜 : 2013.3.4 여러줄로이루어진주석 -------------------------- */ // 여기서부터줄의끝까지주석
전처리기 #include <stdio.h> 외부파일을포함시키라는의미의전처리기 # 기호로시작 stdio.h 는표준입출력에대한라이브러리함수의정의가들어있다.
함수 함수 (function): 특정기능을수행하는처리단계들을괄호로묶어서이름을붙인것 함수는프로그램을구성하는기본적인단위 ( 부품 )
함수 int { main(void) }
문장 함수는여러개의문장으로이루어진다. 문장들은순차적으로실행된다. 문장은 ;( 세미콜른 ) 으로끝나야한다.
변수 int x;// 첫번째정수를저장하는변수 int y;// 두번째정수를저장하는변수 int sum; // 두정수의합을저장하는변수
변수의종류 변수에는데이터의종류에따라여러가지타입이존재한다.
변수의이름 식별자 (identifier): 변수나함수의이름 식별자를만드는규칙 식별자는영어의대소문자, 숫자, 밑줄문자 _ 로이루어진다. 식별자는숫자로시작할수없다. 대문자와소문자를구별하며 C 언어의키워드와똑같은이름은허용되지않는다. 식별자의예 : s, s1, student_number: 올바른식별자 $s, 2nd_student, int: 잘못된식별자
변수선언 변수선언 : 컴파일러에게어떤타입의변수가사용되는지를미리알리는것
상수 상수 (constant): 그값이프로그램이실행하는동안변하지않는수
수식 sum = x + y; 수식 (expression): 피연산자와연산자로구성된식 수식은결과값을가진다.
산술연산 덧셈 + 뺄셈 - 곱셈 * 나눗셈 / 나머지 %
대입연산 x = 100; 대입연산 (assignment operation): 변수에값을저장하는연산 대입연산 = 배정연산 = 할당연산
printf() printf(): 모니터에출력을하기위한표준출력라이브러리함수
문자열출력 printf("hello World!\n");
변수값출력 printf(" 두수의합 : %d", sum);
중간점검 printf() 에서변수의값을실수형태로출력할때사용하는형식지정자는무엇인가? printf() 를사용하여서정수형변수 k 의값을출력하는문장을작성하여보자.
두번째덧셈프로그램 // 사용자로부터입력받은 2 개의정수의합을계산하여출력 #include <stdio.h> int main(void) { int x; int y; int sum; printf(" 첫번째숫자를입력하시오 :"); scanf("%d", &x); printf(" 두번째숫자를입력하시오 :"); scanf("%d", &y); // 첫번째정수를저장할변수 // 두번째정수를저장할변수 // 2개의정수의합을저장할변수 // 입력안내메시지출력 // 하나의정수를받아서 x에저장 // 입력안내메시지출력 // 하나의정수를받아서 x에저장 sum = x + y; // 변수 2개를더한다. printf(" 두수의합 : %d", sum); // sum의값을 10진수형태로출력 } return 0; // 0 을외부로반환
scanf() 의동작 키보드로부터값을받아서변수에저장한다. 변수의주소를필요로한다.
scanf() 형식지정자 %d %f %lf %c %s
연봉계산프로그램 /* 저축액을계산하는프로그램 */ #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;
환율계산프로그램 /* 환율을계산하는프로그램 */ #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; // 함수결과값반환
실습 : 사각형의둘레와면적 필요한변수는 w, h, area, perimeter라고하자. 변수의자료형은실수를저장할수있는 double형으로하자. area = w*h; perimeter = 2*(w+h);
코딩 #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;
도전문제 1. 한번의 printf() 호출로변수 perimeter 와 area 의값이동시에출력되도록변경하라. 2. 변수들을한줄에모두선언하여보자. 3. w 와 h 의값을사용자로부터받도록변경하여보자. %lf 를사용한다.
변수와상수의개념이해 * 자료형 * 정수형 * 실수형 * 문자형 * 기호상수사용 * 오버플로우와언더플로우이해
변수와상수 변수 (variable): 저장된값의변경이가능한공간 상수 (constant): 저장된값의변경이불가능한공간 ( 예 ) 3.14, 100, A, Hello World!
예제 : 변수와상수 /* 원의면적을계산하는프로그램 */ #include <stdio.h> int main(void) { float radius; float area; // 원의반지름 // 원의면적 printf(" 원의면적을입력하시요 :"); scanf("%f", &radius); area = 3.141592 * radius * radius; printf(" 원의면적 : %f \n", area); } return 0;
자료형 자료형 (data type): 데이터의타입 ( 종류 ) ( 예 ) short, int, long: 정수형데이터 (100) ( 예 ) double, float: 실수형데이터 (3.141592) ( 예 ) char: 문자형데이터 ( A, a, 한 )
예제 : 자료형의크기 #include <stdio.h> int main(void) { int x; } printf(" 변수 x의 크기 : %d", sizeof(x)); printf("char형의 크기 : %d", sizeof(char)); printf("int형의 크기 : %d", sizeof(int)); printf("short형의 크기 : %d", sizeof(short)); printf("long형의 크기 : %d", sizeof(long)); printf("float형의 크기 : %d", sizeof(float)); printf("double형의크기 : %d", sizeof(double)); return 0;
변수의이름짓기 식별자 (identifier): 식별할수있게해주는이름 변수이름 함수이름
식별자를만드는규칙 알파벳문자와숫자, 밑줄문자 _ 로구성 첫번째문자는반드시알파벳또는밑줄문자 _ 대문자와소문자를구별 C 언어의키워드와똑같은이름은허용되지않는다.
좋은변수이름 변수의역할을가장잘설명하는이름 밑줄방식 : bank_account 단어의첫번째글자를대문자 :BankAccount
키워드 키워드 (keyword): C언어에서고유한의미를가지고있는특별한단어 예약어 (reserved words) 라고도한다. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while
변수선언의예 변수선언의예 char c; int i; double interest_rate; int height, width;
변수의초기화 char c = a ; int i = 7; double interest_rate = 0.05;
예제 : 변수의선언 #include <stdio.h> int main(void) { int usd; int krw; // 달러화 // 원화 printf(" 달러화금액을입력하시오 : "); scanf("%d", &usd); krw = 1120 * usd; printf(" 달러화 %d 달러는 %f 원입니다.", usd, krw); } return 0;
정수형선언의예 short grade; // short 형의변수를생성한다. int count; // int 형의변수를생성한다. long distance; // distance 형의변수를생성한다.
예제 /* 정수형자료형의크기를계산하는프로그램 */ #include <stdio.h> int main(void) { short year = 0; // 0 으로초기화한다. int sale = 0; // 0 으로초기화한다. long total_sale = 0; // 0 으로초기화한다. year = 10; // 약 3만2천을넘지않도록주의 sale = 200000000; // 약 21억을넘지않도록주의 total_sale = year * sale; // 약 21억을넘지않도록주의 printf("total_sale = %d \n", total_sale); } return 0;
unsigned 수식자 unsigned int speed; // 부호없는 int 형 unsigned distance; // unsigned int distanc e와같다. unsigned short players; // 부호없는 short 형 unsigned long seconds; // 부호없는 long 형
오버플로우 오버플로우 (overflow): 변수가나타낼수있는범위를넘는숫자를저장하려고할때발생 #include <stdio.h> #include <limits.h> int main(void) { short s_money = SHRT_MAX; // 최대값으로초기화한다. 32767 unsigned short u_money = USHRT_MAX; // 최대값으로초기화한다. 65535 s_money = s_money + 1; printf("s_money = %d", s_money); } u_money = u_money + 1; printf("u_money = %d", u_money); return 0;
예제 /* 정수상수프로그램 */ #include <stdio.h> int main(void) { int x = 10; // 10 은 10 진수이고 int 형이고값은십진수로 10 이다. int y = 010; // 010 은 8 진수이고 int 형이고값은십진수로 8 이다. int z = 0x10; // 010 은 16 진수이고 int 형이고값은십진수로 16 이다. printf("x = %d", x); printf("y = %d", y); printf("z = %d", z); } return 0;
기호상수 기호상수 (symbolic constant): 기호를이용하여상수를표현한것 ( 예 ) area = 3.141592 * radius * radius; area = PI * radius * radius; income = salary - 0.15 * salary; income = salary - TAX_RATE * salary; 기호상수의장점 가독성이높아진다. 값을쉽게변경할수있다.
기호상수를만드는방법 #1 #define EXCHANGE_RATE 1120 const int EXCHANGE_RATE = 1120;
예제 : 기호상수 #include <stdio.h> #define TAX_RATE 0.2 int main(void) { const int MONTHS = 12; int m_salary, y_salary; // 변수선언 printf( " 월급을입력하시요 : "); // 입력안내문 scanf("%d", &m_salary); y_salary = MONTHS * m_salary; // 순수입계산 printf(" 연봉은 %d입니다.", y_salary); printf(" 세금은 %f입니다.", y_salary*tax_rate); } return 0;
예제 /* 2 의보수프로그램 */ #include <stdio.h> int main(void) { int x = 3; int y = -3; } printf("x = %08X\n", x); // 8자리의 16진수로출력한다. printf("y = %08X\n", y); // 8자리의 16진수로출력한다. printf("x+y = %08X\n", x+y); // 8자리의 16진수로출력한다. return 0; x = 00000003 y = FFFFFFFD x+y = 00000000
예제 /* 부동소수점자료형의크기계산 */ #include <stdio.h> int main(void) { float x = 1.234567890123456789; double y = 1.234567890123456789; } printf("float 의크기 =%d\n", sizeof(float)); printf("double 의크기 =%d\n", sizeof(double)); printf("long double 의크기 =%d\n", sizeof(long double)); printf("x = %30.25f\n",x); printf("y = %30.25f\n",y); return 0; float 의크기 =4 double 의크기 =8 long double 의크기 =8 x = 1.2345678806304932000000000 y = 1.2345678901234567000000000
실습 : 태양빛도달시간 태양에서오는빛이몇분만에지구에도착하는지를컴퓨터로계산해보고자한다. 빛의속도는 1 초에 30 만 km 를이동한다. 태양과지구사이의거리는약 1 억 4960 만 km 이다
소스 #include <stdio.h> int main(void) { double light_speed = 300000; // 빛의속도저장하는변수 double distance = 149600000; // 태양과지구사이거리저장하는변수 // 149600000km로초기화한다. double time; // 시간을나타내는변수 time = distance / light_speed; // 거리를빛의속도로나눈다. time = time / 60.0; // 초를분으로변환한다. printf(" 빛의속도는 %fkm/s \n", light_speed); printf(" 태양과지구와의거리 %fkm \n", distance); printf(" 도달시간은 %f초\n", time); // 시간을출력한다. return 0; }