C 언어 문자 집합과 토큰 C 프로그램의 구조 C 소스 코딩을 준비하는 방법 Chapter 3 C 프로그래밍 언어의 기초 C 언어 문자 집합과 토큰 C 프로그램의 구조 C 소스 코딩을 준비하는 방법
예제 프로그램 1 : 세금 계산 문제 요구 명세서 분석 설계 구현 납세자의 1년 총 소득이 주어졌을 때 오하이오, 옥스퍼드 시의 세금 징수액을 계산하는 프로그램을 작성하라. 요구 명세서 프로그램 목적을 모니터에 프린트 사용자가 1년 총 소득을 키보드로 입력 세금은 총 소득의 1.75% 계산된 세금을 프린트 분석 입력. 1년 총 소득 출력. 시의 세금 징수액 공식. income_tax = 0.0175 × gross_income 설계 의사 코드 알고리즘 (그림 3.1) 구현 Prog3_1.c (그림 3.2)
변수(variables) 생성(선언) 프로그램의 모든 변수는 사용되기 전에 반드시 선언(declared) 되어야 함 다음 형식의 변수 선언(variable declaration)은 변수 이름과 메모리의 특정 위치 그리고 이 위치에 저장될 데이터의 종류(형, type)를 결합시킴: Type Variable_1, Variable_2, …; 예를 들어, basket의 수, basket 당 계란의 수, 전체 계란의 수를 저장할 세 개의 변수를 생성하기 위해서는 : int numberOfBaskets, eggsPerBasket, totalEggs;
변수에 값을 할당(Assign) 할당(지정, 치환, 대입 assignment ) 연산자: “=“ “등호 부호” 대수(algebra)에서의 의미와 다름 의미 - “Assign the value of the expression on the right side to the variable on the left side.” 등호 부호의 양 쪽에 변수를 가질 수 있음: int count = 10;// initialize counter to ten count = count - 1;// decrement counter count 변수의 새로운 값 = 10 - 1 = 9
변수에 초기값을 할당 변수가 선언될 때 초기값(Initial values)이 할당될 수도 있고 안될 수도 있음: //These are not initialized when declared //and have unknown values int totalEggs, numberOfBaskets, eggsPerBasket; //These are initialized to 0 when declared int totalEggs = 0; int numberOfBaskets = 0; int eggsPerBasket = 0; 프로그래밍 팁(tip): 변수를 항상 초기화하는 것이 좋은 습관.
변수값의 변경 변수값은 프로그램에서 대개 변경 (상이한 값을 할당) 다른 변수값들의 계산 결과: totalEggs = numberOfBaskets * eggsPerBasket; 키보드로부터의 입력: scanf(“%d”, &totalEggs);
C 언어 문자집합과 토큰 (1) 예약어: 식별자(identifier) 특별한 의미가 미리 지정된 단어 종류 : 부록 A 프로그래머에 의해 정의된 단어 식별자 구성 규칙 A-Z, a-z, 0-9, _로 구성 첫 번째 문자는 영문자나 밑줄 문자 길이 제한 없음 (대개 32문자만을 구분) 예약어는 식별자로 사용할 수 없음 대소문자의 구분이 있음 바른 예: student_age, Item10, counter, number_of_characters 틀린 예: student age, continue, 17thRow, Principle+Interest
C 언어 문자집합과 토큰(2) 상수(1) 고정된 값: const double CITY_TAX_RATE = 0.0175; 정수형 상수 소수 부분이 없는 양수 혹은 음수 바른 십진 상수의 예: 15, 0, +250, 7550 틀린 십진 상수의 예: 0179, 1F8, 1,756 실수형 상수 정수 부분, 소수점, 소수 부분을 갖는 양 혹은 음의 10진수 전통적인 표기법: 20.35 과학적 표기법: 0.2035E+2, 0.2035e+2 20.0과 20. 그리고 .2는 모두 동일한 바른 실수 표현 틀린 예: 12, 12,000.00, 0.1E+L2 바른 예: 12.0, 12000.00, 0.1E+2L
C 언어 문자집합과 토큰(3) 상수(2) 연산자 문자 상수와 이스케이프 열 문자열 상수 ‘1’, ‘n’, ‘A’, ‘\n’ printf(“%c”, ‘T’); printf(“%c”, ‘ \’ ’); printf(“%c”, ‘n’); printf(“%c”, ‘\n’); 이스케이프 열의 목록: 부록 B 문자열 상수 “This is a string constant.”, “125”, “Is this John’s car? “, “A” printf(“This is a string constant.”); printf(“City tax is %f dollars.”, city_tax); printf(“Jim \” Mac\” MacDonald”); printf(“THIS PROGRAM COMPUTES” “CITY INCOME TAX”); printf(“THIS PROGRAM COMPUTES \ CITY INCOME TAX”); printf(“A PROGRAM THAT COMPUTES CITY INCOME TAX \n”); 연산자 변수나 다른 원소들에 적용되어 계산이나 동작을 유발하는 기호 +, -, *, / 등의 종류: 부록 B City_tax = CITY_TAX_RATE * gross_income;
C 프로그램의 구조(1) 프로그램 주석 전처리기 지시어(preprocessor directive) /*로 시작하면 반드시 */으로 끝나야 함 예: /* purpose : calculates city tax as 1.75 percent income */ // 라인 단위 주석의 시작 예: // variable declarations; 주석을 사용할 때 프로그램을 쉽게 이해할 수 있게 한다. 장황하지 않아야 한다. 시각적으로 소스 코드와 분리시켜야 한다. 전처리기 지시어(preprocessor directive) 지정 파일을 포함 마지막에 ; 기호가 없다! 예: #include <stdio.h>, #include “header2.h” 틀린 예: # include <stdio.h>, #include <stdio.h>; #include < stdio.h > 조건부 컴파일, 매크로 치환
C 프로그램의 구조(2) 데이터형과 형 선언(1) 선언: 변수 등과 데이터형을 연관시킴 int 형 char 형 double 형 int main(void) { double gross_income; double city_tax; int 형 2 바이트(-32,768~32767) 혹은 4 바이트(–231~231 –1) : signed 예: int counter; char 형 내부적으로 1 바이트로 ASCII 코드로 표현 예: char more; double 형 실수형 변수를 8 바이트로 선언 float 형은 4 바이트 예: double gross_income; float miles; 데이터 초기화 선언에 의해 예약된 메모리 위치에 지정한 값을 기억시킴 예: char more =‘y’; // 번역시간 초기화 more =‘y’: //실행시간 초기화
C 프로그램의 구조(3) 데이터형과 형 선언(2) 문자열 지정상수 (이름은 대문자로!) 산술 치환 수식문 하나의 데이터 항목으로 취급되는 일련의 문자들 char형의 1차원 배열로 표현되나 마지막 원소는 반드시 널 문자 char student_name[31]; // 길이 30인 문자열 상수를 위한 선언 char report_header[41] = “Annual Report”; // 문자열 변수의 초기화 지정상수 (이름은 대문자로!) const double CITY_TAX_RATE = 0.0175; 로 선언하면, city_tax = CITY_TAX_RATE * gross_income;는 가능하지만, CITY_TAX_RATE = 0.185는 에러 유발 산술 치환 수식문 Variable = ArithmeticExpression; 예제 3.1 int current_year; current_year = 1999; 예제 3.2 double area, long_side, short_side; area = short_side * long_side;
함수 특정한 일을 실행하는 블록 단위의 코드 main() 함수 표준 출력 함수 printf 표준 입력 함수 scanf 각 C 프로그램은 반드시 하나의 main 함수를 가짐 표준 출력 함수 printf 형식: printf(FormatControlString, PrintList); 예제 3.3: printf(“%d”, year_of_birth); 예제 3.4: printf(“Your year of birth is %d”, year_of_birth); 예제 3.5: printf(“Your year of birth is %d, and in 2000 you will be %d years old.”, year_of_birth, 2000 – year_of_birth); 예제 3.6: printf(“My favorite book is %s”, favorite_book); 표준 입력 함수 scanf 형식: scanf(FormatControlString, InputList); 정수 입력 예: scanf(“%d”, &age); 문자 입력 예: scanf(“%c”, &character); // char character; 문자열 입력 예: scanf(“%s”, string1); // char string1[31]; gets(strng1); // stdio.h에서 선언
예제 프로그램 2: 도량형 변환 문제 요구 명세서: p. 105 분석 설계: 그림 3.4 구현: 그림 3.5 인치 단위의 신장을 cm로, 파운드 단위의 무게를 kg으로 변환 요구 명세서: p. 105 분석 입력: first_name, last_name, height_in_inches, weight_in_pounds 출력: height_in_centimeters, weight_in_kilograms 공식: height_in_centimeters = 2.54 × height_in_inches weight_in_kilograms = 0.45359 × weight_in_pounds 설계: 그림 3.4 구현: 그림 3.5 실행 결과: 그림 3.6