Upload
hoangbao
View
217
Download
3
Embed Size (px)
Citation preview
Sogang University: Dept of Computer Science and Engineering
5. Selection-Making Decisions
고급응용 C 프로그래밍 (STS2008)Advanced C Programming
0
Sogang University
2018. 1학기고급응용 C프로그래밍
선택(selection) 은어떤상황에서판단을하여다른흐름을만드는방법
선택은논리적판단에기반함
그러나전통적으로 C에는논리형(logical type)이없음
데이터값이 ‘0(zero)’이면 ‘false’, (nonzero) 이면 ‘true’로봄
C99에서소개된 Boolean 데이타타입사용
정수, 실수등에서는 0, 문자에서는 ‘\0’가 false에해당
Logical Data and Operator
1
Sogang University
2018. 1학기고급응용 C프로그래밍
예제프로그램 – 논리연산자
Logical Data and Operator
2
true = ( a && b );
논리연산
반환결과대입
a 는 true 이므로 1,b 도 true 이므로 1.
Sogang University
2018. 1학기고급응용 C프로그래밍
논리연산자
and(&&), or(||), not(!)을표현하는연산자
두피연산자의참과거짓에따라연산의결과값을결정
&& : 피연산자가모두참이면 true를반환
|| : 피연산자중하나라도참이면 true를반환
! : 피연산자가 true이면 false를, false이면 true를반환
Logical Data and Operator
3
Sogang University
2018. 1학기고급응용 C프로그래밍
예제프로그램 – 관계연산자
Logical Data and Operator
4
false = ( a < b );
관계연산
반환결과대입
Sogang University
2018. 1학기고급응용 C프로그래밍
관계연산자
두값의크기를비교하는연산자
< , > , >= , <= , == , !=
두기호의순서가바뀌면 에러발생( =< , =! )
Logical Data and Operator
5
Sogang University
2018. 1학기고급응용 C프로그래밍
논리연산자의연산방법
연산에참여하는자료값중 0은거짓(false)을의미
1(0이아닌값)은참(true)을의미
정수만을이용하는것은아니고
실수나다른유형의자료값에도이용
평가의결과는반드시 0(false)이거나 1(true)
Logical Data and Operator
6
Sogang University
2018. 1학기고급응용 C프로그래밍
Logical Data and Operator
7
x y&& 연산 || 연산 ! 연산
x && y x || y ! x
0(false) 0 false false true
0 1(true) false true true
1 0 false true false
1 1 true true false
OriginalExpression
! ( x < y ) ! ( x > y ) ! ( x != y ) ! ( x <= y ) ! ( x >= y ) ! ( x == y )
SimplifiedExpression
x >= y x <= y x == y x > y x < y x != y
<Example of simplifying Operator Complements>
<Logical Operators Truth Table>
Sogang University
2018. 1학기고급응용 C프로그래밍
컴퓨터의 basic decision statement는 two-way selection 임
Decision condition의결과에따라제어흐름바뀜
two-way decision의로직
condition이 true이면 true action을취함
condition이 false이면 false action을취함
Two-Way Selection
8
Sogang University
2018. 1학기고급응용 C프로그래밍
예제 프로그램 – if…else 문의 예
조건문 if, else
9
a <= b
a <= ba > b
truefalse
사용자로부터 임의의값을 입력 받는다.
Sogang University
2018. 1학기고급응용 C프로그래밍
if (condition expression) statements
“실행조건”을만족(true)하는경우
“statement-1” 실행
“실행조건”을불만족(false)하는경우
“statement-2” 실행
If…else문의 statement는들여쓰기적용
관리자가코드를인식하기쉽게하기위해사용
실제컴퓨터가들여쓰기를인식하는것은아님
조건문 if, else
10
•While 문은조건이만족되는동안계속해서반복실행
•If 문은선택적으로한번만실행하고넘어감
Sogang University
2018. 1학기고급응용 C프로그래밍
Conditional expression을검사후
수행하는 statement가두줄이상일때는 { }로묶어줌
else부분에들어갈 statement가없을경우
else 부분생략가능 (Null else statement)
조건문 if, else
11
Sogang University
2018. 1학기고급응용 C프로그래밍
조건문 if, else
12
<Compound statements in an if...else> <Null else statement>
Sogang University
2018. 1학기고급응용 C프로그래밍
Nested if Statements
if 문내부에다른 if문이중첩(nested)되어나오는문장
조건내에다른조건을넣고싶을때유용한표현
다음은 nested if문의 Logic 흐름과실제표기법임
Nested if
14
Sogang University
2018. 1학기고급응용 C프로그래밍
if…else 구문에서여러개의 if문이나타난경우
else문이생략되면의미가불분명해질수있음
컴퓨터는 if문에가장가까운 else를하나의쌍으로처리
Dangling else problem 발생
– [해결책] 의도한 if문을 compound statement { }로 처리
Nested if
15
하나의if..else쌍으로인식
Compound
statement
{ }
Sogang University
2018. 1학기고급응용 C프로그래밍
Multiway selection에는크게 switch 문과 else if 문이존재
Switch문
switch 문은여러개의선택을처리하는구문
switch 이후의괄호 ( )사이의표현식의값중에서 case의값과일치하는것을처리
Expression과 value는반드시정수나정수수식이어야한다.
switch 문로직
Multiway Selection
16
Sogang University
2018. 1학기고급응용 C프로그래밍
실행순서
switch문의표현식(expression) 계산
계산된값과일치하는상수값(constant)을갖는 case의값을위에서부터찾음
해당 case내부의문장(statement) 실행
case 내부에서 break를만나면 switch문종료
일치된 case문을만나지못하여default를만나면 default내부의문장실행
Switch문
18
Default : 반드시있어야하지는않지만선택되지않은
모든경우를나타낸다.
Sogang University
2018. 1학기고급응용 C프로그래밍
break문
switch 문에서 break 문을만나면무조건 switch 문을종료
그러나 switch 문의 case 문내부에 break 문이없다면
일치하는 case 문을실행하고,
계속해서 break 문을만나기전까지무조건다음 case 문내부의문장을실행
break 이후실행되는곳은지금빠져나온 structure의바로뒷부분
break 문을주로사용하는용도
Loop으로부터의탈출
switch structure에서나머지실행문장을건너뛰기위함
Switch문
19
Sogang University
2018. 1학기고급응용 C프로그래밍
다중판단을할경우에사용되는형태
(if…else if…else)
if의 expression을검사하여참일경우
바로아래의 statement1 실행
expression이거짓일경우
다음의 else if 로넘어가서조건검사
마지막 else는위의조건들이모두참이아닐경우에 statement4 실행
맞는조건을찾은다음에는나머지조건검사수행하지않음
Else if문
21
If(expression)
statement1
else if(expression)
statement2
else if(expression)
statement3
else
statement4