23
Sogang University: Dept of Computer Science and Engineering 5. Selection - Making Decisions 고급 응용 C 프로그래밍 (STS2008) Advanced C Programming 0

Advanced C Programmingnetwork.sogang.ac.kr/assets/board/C_Programming/... ·  · 2018-02-26Sogang University: Dept of Computer Science and Engineering 5. Selection-Making Decisions

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 statement문의예

Nested if

13

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문의예

Switch문

17

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프로그래밍

예제프로그램 – else if 문의예

Else if문

20

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

Sogang University

2018. 1학기고급응용 C프로그래밍

switch문과 else if문모두조건에따라프로그램의흐름을분기시키는목적으로사용

switch문에는비교연산이올수없음

switch문으로구현된내용은 else if문으로구현가능

반대의경우는구현이안될경우가생김

예 : 비교연산

분기의횟수가많을수록 switch문이 else if문에비해간결한코드구현이가능

Switch vs Else if

22