마스터제목스타일제목편집스타일편집
마스터제목스타일제목편집스타일편집
마스터제목스타일제목편집스타일편집
마스터제목스타일프로그램구조편집 프로그램 C 프로그램은하나이상의여러함수가모여한프로그램으로구성 비주얼스튜디오 솔루션은여러개의프로젝트로구성 다시프로젝트는여러소스파일을포함한여러자원 (resource) 으로구성 한프로젝트는단하나의함수 main() 과다른여러함수로구현 최종적으로프로젝트이름으로하나의실행파일이생성 프로그램시작과종료 시작된함수 main() 내부 위에서아래로, 좌에서우로, 문장이위치한순서대로실행 puts( ) 등함수호출 호출된함수로이동하여그함수를모두실행한후다시돌아와그이후의문장을실행 4
마스터제목스타일프로그램구조편집 함수 main() 이구현된소스의구조 C 프로그램은적어도 main() 함수하나는구현되어야응용프로그램으로실행가능함수의구현은여러문장으로구성프로그래머가만든사용자정의함수또는시스템이만든표준라이브러리함수호출이실행 5
문법적으로고유한의미를갖는예약된단어 예약 되었다는의미 프로그램코드를작성하는사람이이단어들을다른용도로사용해서는안된다는뜻 예약어 (reserved word) C프로그램에서는미국표준화위원회 (ANSI: American National Standard Institute) 지정한 32개의기본적인단어 비주얼스튜디오편집기 키워드는기본적으로파란색으로표시 6
프로그래머가자기마음대로정의해서사용하는단어 변수이름 age, year 등 함수이름 puts, main, printf 등 식별자사용규칙 구성 영문자 ( 대소문자알파벳 ) 숫자 (0 ~ 9) 밑줄 (_) 로구성 식별자의첫문자로숫자가나올수없음 프로그램내부의일정한영역에서는서로구별 키워드는식별자로이용할수없음 식별자는대소문자를모두구별 예를들어, 변수 Count, count, COUNT는모두다른변수 식별자의중간에공백 (space) 문자가들어갈수없음 7
마스터제목스타일프로그램구조편집 문장과블록 컴퓨터에게명령을내리는최소단위를문장 (statement) 문장은마지막에세미콜론 ; 으로종료 문장마지막에 ; 을빠뜨리면 컴파일시간에문법오류가발생 여러개의문장을묶으면블록 (block) { 문장 1, 문장 2, } 처럼중괄호로열고닫음 들여쓰기와적절한소스구성 블록내부에서문장들을탭 (tab) 정도만큼오른쪽으로들여쓰는소스작성방식 적절한줄구분과빈줄삽입, 그리고들여쓰기는프로그램의이해력을돕는데매우중요한요소 8
9
10
주석 (comments) 문장과달리프로그램내용에는전혀영향을미치지않는설명문 주석은매우중요한프로그램의과정 자신을비롯한이소스를보는모든사람이이해할수있도록도움이되는설명을담고있어야함 주석은개발시에도필요하지만개발이후에유지보수기간에는더욱더중요한역할 개인이나팀, 또는프로젝트에서주석처리형식을통일성있게만들어꼼꼼히작성할필요 잘처리된주석이란시각적으로정돈된느낌 프로그램의내용을적절히설명 11
한줄주석 // // 이후부터그줄의마지막까지주석으로인식 현재줄의처음이나, 문장뒤부터중간에서의주석은주로한줄주석을이용 구현방법이나작동방식을설명하는주석으로처리 블록주석 /* */ /* */ 은여러줄에걸쳐설명을사용할때이용 주석시작은 /* 로표시하며, 종료는 */ 로표시 프로그램의처음부분에는주로여러줄에걸친블록주석을사용 작성자와소스의목적 프로그램의전체적구조와저작권정보등파일관련정보 함수의시작부분 프로그램의기능과함께매개변수등을주석처리 블록주석의중첩은오류 12
13
예제 comments.c 키워드와식별자그리고주석등을이해하기위한간단한소스 솔루션과프로젝트 : Ch03 / Prj01 소스파일 : comments.c 설명 한줄주석 // 에서시작표시인 // 이후부터는어떤입력도주석으로인식 한줄 // 주석은중복되어도상관없음 /* 등이나타나도아무문제가없음 주석은문자열내부에서는단지문자열이지주석으로인식되지못함 문자열에서의 \n 특수문자 \n 은새로운줄 (new line) 로이동을지시하는문자로문자열내부에사용이가능 14
마스터제목스타일제목편집스타일편집
마스터제목스타일자료형분류와변수의편집개념 자료형 프로그래밍언어에서자료를식별하는종류 기본형 (basic types) 유도형 (derived types) 사용자정의형 (user defined types) 저장공간 저장공간을변수 (variables) 라부름 변수에는고유한이름이붙여지며 기억장치인메모리에위치 용기에다양한식재료를담듯이 변수에여러값을저장할수있고 저장되는값에따라변수값은바뀔수있으며 마지막에저장된하나의값만저장유지 16
변수선언 그릇을변수라고한다면 그릇에이름을붙여준비하는것을변수선언 컴파일러에게프로그램에서사용할저장공간인변수를알리는역할 변수는고유한이름이붙여지고, 자료값이저장되는영역 자료형을지정한후변수이름을나열 int, double, float와같이자료형키워드를사용 변수이름은관습적으로소문자를이용 사용목적에알맞은이름으로영역에서중복되지않도록 변수선언도하나의문장이므로세미콜론으로종료 변수선언이후에는정해진변수이름으로값을저장하거나값을참조가능 17
예제 var.c 변수 sum. credits 선언과사용 대입문 원하는자료값을선언된변수에저장 대입연산자 (assignment operator) 표시인 = 를사용 오른쪽에위치한값을이미선언된왼쪽변수에저장한다라는의미 대입문 (assignment statement) 변수명 age 를 int 형으로선언한후, 변수 age 에 20 을저장하는문장 가장마지막에저장된값만이남음 18
예제 sum.c 변수 math, Korean, science, total 선언과사용 초기값저장 변수를선언하면서변수명이후에대입연산자 = 와수식이나값이오면바로지정한값으로초기값이저장 오류가발생 변수를선언만하고자료값이아무것도저장하지않으면원치않는값이저장 초기값이없는변수를사용하면오류 변수를선언한이후에는반드시값을저장 19
대입에서 l-value 와 r-value 대입연산자 = 의왼쪽에위치하는변수를 lvalue 또는 l-value 라하며 l-value는반드시수정이가능한하나의변수이어야함 r-value는 l-value에저장할자료값을반환하는표현식 21 = 20 + 1과문장은오류가발생 초기화되지않은지역변수의저장값과오류 함수내부에서선언된변수를지역변수 (local variables) 초기화되지않은지역변수는그저장값이정의되지않음 소위쓰레기값이라고부르는의미없는값이저장 초기화되지않은지역변수를다른문장에서사용하면 C4700 컴파일오류가발생 20
마스터예제제목 subtraction.c 스타일편집 변수 num1, num2 사용변수 difference에차를저장 변수의 3 요소 변수이름, 변수의자료형, 변수저장값 = 의왼쪽과오른쪽 변수의의미는저장공간자체와저장공간에저장된값으로나뉨 대입연산자 = 의왼쪽에위치한변수는저장공간자체의사용을의미 대입연산자 = 의오른쪽에위치한변수는저장값의사용을의미 21
두정수의합과두실수의차가출력되는프로그램 결과 정수를위한자료형은 int 로, 실수를위한자료형은 double 로이용 합을위한연산자 +, 두실수의차를위한연산자 와결과저장을위한변수 difference 합 : 73 차 : -7.003000 22
마스터제목스타일제목편집스타일편집
C의자료형 기본형 (basic data types), 유도형 (derived data types), 사용자정의형 (user defined data types) 기본이되는자료형 다시정수형, 부동소수형, 문자형, 무치형 무치형자료형 : void 아무런자료형도지정하지않은자료형 함수의인자위치에놓이면 인자가없다 라는의미로사용 함수의반환값에놓으면 반환값이없다 라는의미 유도형 배열 (array), 포인터 (pointer), 함수 (function) 등으로구성 사용자정의형 기본형과유도형을이용하여프로그래머가다시만드는자료형 열거형 (enumeration) 구조체 (structure) 공용체 (union) 24
정수형 (integer types) 의기본키워드 : int 십진수, 팔진수, 십육진수의정수가다양하게저장 파생된자료형 : short 와 long short, short int int 보다작거나같고 short 에너무큰값을저장한다면아예저장이되지않으며 long, long int int 보다크거나같고 long 에너무작은값을저장한다면그만큼자원의낭비 정수형 short, int, long 모두양수, 0, 음수를모두표현 [ 부호가있는 ] signed 키워드 정수형자료형키워드앞에표시가능 signed 키워드는생략가능 signed int 와 int 는같은자료형 25
키워드마스터제목 unsigned 스타일편집 0과양수만을처리 short, int, long 앞에표시 unsigned int, int는동일 정수형저장공간 비주얼스튜디오 short는 2바이트 int, long은모두 4바이트 int는 short보다표현범위가넓으며 long과는동일 저장공간크기 n비트인 singed -2 n-1 에서 2 n-1-1까지유효 저장공간크기 n비트인 unsinged 0에서 2 n-1 까지유효 26
마스터예제제목integer.c 스타일편집 21 억보다큰정수의사용 C99 표준 1999 년에제정한 C99 표준에따르면정수형을다음과같이 5 개로구분 자료형 long long int 간단히 long long으로사용할수있으며약 922경정도의수를음수와양수로지원 unsigned long long은 0에서약 1,844경까지지원 27
예제 float.c 실수를위한저장공간사용 부동소수형 3 가지 키워드는 float, double, long double 세가지 비주얼스튜디오 float 는 4 바이트이며, double 과 long double 은모두 8 바이트 상수 3.14F 소수 3.14 와같은표현은모두자료형 double 로인식 float 형변수에저장하면컴파일경고나오류가발생 28
예제 char.c 문자저장공간사용 문자형 char char, signed char, unsigned char 세가지종류 문자형저장공간크기는모두 1 바이트 키워드 signed 와 unsigned 를함께이용가능 비주얼스튜디오 char 는 signed char 와같으나, 컴파일러에따라다를수있음 저장방법 a 와같이문자상수를이용하거나, 정수를직접저장문자코드값저장 \ddd 와같이세자리의팔진수로, \xhh 와같이두자리의십육진수로표현 29
C 언어에서문자형자료공간에저장되는값 실제로정수값이며 아스키코드표에의한값 아스키코드 ASCII: American Standard Code for Information ANSI(American National Standards Institute) 에서제정한정보교환용표준코드 총 127 개의문자로구성 소문자 a 16 진수로 61 이진수로는 1100001 십진수로 97 30
예제 sizeof.c 연산자 sizeof 사용 문자형 char 기본자료형은 long long 을포함하면모두 14 가지 연산자 sizeof 자료형, 변수, 상수의저장공간크기를바이트단위반환 자료형키워드로직접저장공간크기를알려면자료형키워드에괄호가반드시필요 31
마스터예제제목overflow.c 스타일편집 자료형의범주에서벗어난값을저장 오버플로 (overflow) / 언더플로 (underflow) 가발생 오버플로 자료형 unsigned char 정수의순환 8 비트로 0 에서 255 까지저장가능 만일 256 을저장하면 0 으로저장 정수형자료형에서최대값 +1 은오버플로로인해최소값이저장 마찬가지로최소값 -1 은최대값 언더플로 실수형 float 변수에정밀도가매우자세한수를저장하면언더플로 (underflow) 가발생 0 이저장 32
33
다음결과로출력되는프로그램을작성 결과 문자 ~ 의코드값 : 십진수 126, 팔진수 176, 십육진수 72 출력을위한함수 print() 에서 %d 로정수를, %c 로문자를출력 126 ~ ~ ~ 34
마스터제목스타일제목편집스타일편집
상수 (constant) 이름없이있는그대로표현한자료값 우린생활에서숫자 32, 32.4, 문자 *, &, # 그리고문자열 Hello World! 등을사용 이름이있으나정해진하나의값만으로사용되는자료값 리터럴상수 소스에그대로표현해의미가전달되는다양한자료값 10, 24.3 과같은수, C 는흥미롭습니다. 와같은문자열 심볼릭 ( 기호 ) 상수 변수처럼이름을갖는상수 심볼릭상수를표현하는방법, 세가지 const 상수 (const constant) 매크로상수 (macro constant) 열거형상수 (enumeration constant) 36
리터럴상수 정수, 실수 문자, 문자열상수 문자상수표현 문자하나의앞뒤에작은따옴표 (single quote) 를넣어표현 \ddd \xhh 팔진수코드값을이용 십육진수코드값을이용 코드값이 97 인문자 A 함수 printf() \141 와 \x61 로표현 문자상수를출력하려면 %c 또는 %C 사용 %c 의 c 는문자 character 를의미 실습때재정리 37
예제 charliteral.c 문자리터럴의표현과출력 이스케이프문자 \n 와같이역슬래쉬 \ 와문자의조합으로표현하는문자 \n 이새로운줄 (new line) 을의미하는대표적인이스케이프문자 문자열에도사용가능 이스케이프문자는제어문자, 특수문자또는확장문자라고도부름 38
정수형리터럴상수의다양한형태 100L, 20U, 5000UL 정수뒤에 l 또는 L 을붙이면 long int u 또는 U 는 unsigned int ul 또는 UL 은 unsigned long long long 형은 LL, ll 과 ULL, ull 이진수와십육진수표현방식 상수의정수표현은십진수로인식 숫자 0 을정수앞에놓으면팔진수 (octal number) 로인식 숫자 0 과알파벳으로 0x, 0X 를숫자앞, 십육진수 (hexadecimal number) 로인식 십육진수는 0 에서 9 까지의수와알파벳 a, b, c, d, e, f( 대소문자모두가능 ) 함수 printf() 에서정수를출력 %d 의사용 d 는십진수라는 decimal 39
지수표현방식 3.14E+2 는 3.14*10 2 함수 printf() 에서지수표현방식과함께일반실수를출력 %f 의형식제어문자를사용, f 는실수를의미하는 float 에서나온 f 형식제어문자 %f 로출력되는실수는소수점 6 자리까지출력 실수형리터럴상수 실수형상수도 float, double long double 소수는 double 유형이며 float 상수 숫자뒤에 f 나 F 를붙임 long double 상수 숫자뒤에 L 또는 l 을붙여표시 40
키워드 const 변수로는선언되지만일반변수와는달리초기값을수정할수없으며 이름이있는심볼릭상수 (constant number) 상수는변수선언시반드시초기값을저장 상수는다른변수와구별하기위해관례적으로모두대문자로선언 변수 RATE 상수로선언하는구문 선언이후저장값을수정 대입문장에서컴파일오류 C2166 이발생 이자율을 3% 에서 3.2% 로수정하려면 const 가있는선언문에서직접 0.03 을 0.032 로수정 41
예제 const.c 키워드 const 사용한심볼릭상수이용 문자열리터럴 char* 변수에저장 * 는포인터 (pointer) 라는의미의문자 변수 str 에는대입한문자열에서첫문자의주소 (address) 가저장되는변수 변수 title 에서다른문자열로대체할수없도록상수로만들려면 반드시 title 앞에 const 를삽입 만일 char* 앞에 const 를삽입하면문법적으로다른의미 42
예제 const.c Enum 을사용한정수상수의이용 키워드 enum 열거형 : 정수형상수목록집합을정의하는자료형 열거형상수에서목록첫상수의기본값이 0 다음부터 1 씩증가하는방식으로상수값이자동으로부여 상수목록에서특정한정수지정가능 상수값을지정한상수는그값으로, 따로지정되지않은첫번째상수는 0 이며, 중간상수는앞의상수보다 1 씩증가한상수값으로지정 43
전처리기지시자 #define 매크로상수 (macro constant) 를정의하는지시자 주로대문자이름으로정의 전처리기 (preprocessor) 매크로상수를모두 #define 지시자에서정의된문자열로대체 (replace) 44
제 4 장변수와자료형 기호상수를만드는방법 #1 EXCHANGE_RATE 이라는기호를 1120 으로정의 #define EXCHANGE_RATE 1120 2012 생능출판사 All rights reserved 쉽게풀어쓴 C 언어 Express
제4장 변수와 자료형 기호 상수를 만드는 방법 #2 변수가 값을 변경할 수 없게 한다. const int EXCHANGE_RATE = 1120; const 1120 EXCHANGE_ RATE 변수 2012 생능출판사 All rights reserved 쉽게 풀어쓴 C언어 Express
제 4 장변수와자료형 예제 : 기호상수 #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; // 순수입계산월급을입력하시요 : 100 printf(" 연봉은 %d입니다.", y_salary); 연봉은 1200입니다. printf(" 세금은 %f입니다.", y_salary*tax_rate); 세금은 240.000000입니다. } return 0; 2012 생능출판사 All rights reserved 쉽게풀어쓴 C 언어 Express
헤더파일 float.h 에정의된최대최소상수를출력하는프로그램작성 결과 자료형 float 의최대최소매크로상수 : FLT_MIN, FLT_MAX 자료형 double 의최대최소매크로상수 : DBL_MIN, DBL_MAX 위상수를참고로자료형 long double 의최대최소매크로상수출력 출력을위한함수 printf() 에서 %e 로부동소수형출력 float 범위 : 1.175494e-38 3.402823e+38 double 범위 : 1.175494e-38 3.402823e+38 long double 범위 : 2.225074e-308 1.797693e+308 48
마스터제목스타일제목편집스타일편집