[C언어] 제어문 if, while, for
COM2008. 2. 24. 01:43 |0. True / False
어떤 expression 이 거짓(False) 이면 0 , 0 이 아니면 참(True) 으로 판단한다.
1. 조건문 if
IF 문의 기본 형식은 다음과 같다.
if ( expr )
statement
expr 이 0 이 아니면 ( 즉, 참이면 ), statement 가 실행된다.
0 인 경우에 ( 즉, 거짓인경우에 ) , statement 는 실행되지 않는다.
예제.
if ( b == 3 )
return 5 ;
b 가 3 이면 , 괄호안이 참이 되어, 5 를 리턴한다.
또한, IF- ELSE 형태로 쓸수도 있다.
if (expr)
statement
else
statement
expr 이 거짓이면, else 에 뒤따르는 statement 를 실행한다. 또한 , else 에 곧바로 다시 if 를 덧붙이고 또 다시 else를 다시 곧바로 if 를 다시 else 를... 이런식으로 하면 여러개의 조건에 따라 분기할수도 있다.
2. 반복문 while
while 문의 기본 형태는 다음과 같다.
while ( expr )
statement
expr 이 0 이 아니면 , statement 가 실행되고 다시 expr 이 참인지 묻는다. 이런식으로 loop 구조를 갖는다.
3. while 문의 변형. do while
while 에서 루프조건의 T/F 를 판단하고 루프를 돌리는데, 코딩을하다보면 많은경우에 일단 한번 돌린뒤에 루프여부를 따지는 경우가 많다.
이럴때 쓰는 문장이 do while 이다.
형태는 다음과 같다.
do
statement
while ( expr );
주의할점은, 마지막에 ; 를 붙여야한다는 것이다.
하나더 덧붙이자면, 조건판별이 루프뒤에있는 관계로, 루프문에서 변수선언한것을 조건문에 사용하는 실수를 할 가능성도 눈꼽만큼 있을수있겠으나, 다른루프문도 마찬가지지만, 루프내에서 선언된 변수의 스코프가 거기까지이므로 뒤의 while 조건에 쓰지말아야할것이다. 물론, 루프문 이전에 선언된 변수를 루프문에서 같은이름으로 선언했다면, 상관없다. 교묘한테크닉으로 쓸수도 있지만, 가독성이 떨어지기때문에 권하지는 않는 스타일이라고 한다.
4. 반복문 for
for 문의 기본 형태는 다음과 같다.
for ( expr1 ; expr2 ; expr3 )
statement
flow 는 다음과 같다 : expr1 -> expr2 -> statement -> expr3 -> expr2 -> statement -> expr3 -> expr2 -> ...
실행구조는, expr1 이나 expr3 은 그냥 실행하고, expr2 는 T/F 를 판단한다.
expr1 으로 초기화 배정을 실행하고, expr2 에 루프를 계속돌릴지말지 결정할 조건문을 집어넣고, expr3 에서 루프변수를 증감시키는 것이
보통의 방법이다.
---------------------------------------------------------------------------------------------------
while 문으로 for 문 표현하기
만약, 위의 일반적인 방식으로 쓴다면, while 문을 통해 똑같이 구현 가능하며 다음과 같다.
expr1 ;
while(expr2)
{
statement
expr3 ;
}
for 문으로 while 문 표현하기
for 문에서 expr1 과 expr3 이 꼭 필요한것은 아니다. expr1 과 expr3 이 없으면, while 문과 동일하며 다음과 같은 형태가 된다.
for ( ; expr ; )
statement
예제.
for ( ; scanf("%lf",&x ) == 1 ; i++ )
statement
여기서 아래와 같은 구조를 썼는데,
for ( ; expr ; i++ )
statement
이는 while 문에서 약간 편의성이 높아진 방식으로 생각할 수 있다.
즉, loop 에 들어오기 전에 이터레이션 변수가 유동적으로 결정되고, 그것에 의해 루프의 반복횟수가 의존하는 경우에 유용하다고 하겠다.
위의 for 문은 다음과 동일하다.
while( expr)
{
statement ;
i++ ;
}
어떤 expression 이 거짓(False) 이면 0 , 0 이 아니면 참(True) 으로 판단한다.
1. 조건문 if
IF 문의 기본 형식은 다음과 같다.
if ( expr )
statement
expr 이 0 이 아니면 ( 즉, 참이면 ), statement 가 실행된다.
0 인 경우에 ( 즉, 거짓인경우에 ) , statement 는 실행되지 않는다.
예제.
if ( b == 3 )
return 5 ;
b 가 3 이면 , 괄호안이 참이 되어, 5 를 리턴한다.
또한, IF- ELSE 형태로 쓸수도 있다.
if (expr)
statement
else
statement
expr 이 거짓이면, else 에 뒤따르는 statement 를 실행한다. 또한 , else 에 곧바로 다시 if 를 덧붙이고 또 다시 else를 다시 곧바로 if 를 다시 else 를... 이런식으로 하면 여러개의 조건에 따라 분기할수도 있다.
2. 반복문 while
while 문의 기본 형태는 다음과 같다.
while ( expr )
statement
expr 이 0 이 아니면 , statement 가 실행되고 다시 expr 이 참인지 묻는다. 이런식으로 loop 구조를 갖는다.
3. while 문의 변형. do while
while 에서 루프조건의 T/F 를 판단하고 루프를 돌리는데, 코딩을하다보면 많은경우에 일단 한번 돌린뒤에 루프여부를 따지는 경우가 많다.
이럴때 쓰는 문장이 do while 이다.
형태는 다음과 같다.
do
statement
while ( expr );
주의할점은, 마지막에 ; 를 붙여야한다는 것이다.
하나더 덧붙이자면, 조건판별이 루프뒤에있는 관계로, 루프문에서 변수선언한것을 조건문에 사용하는 실수를 할 가능성도 눈꼽만큼 있을수있겠으나, 다른루프문도 마찬가지지만, 루프내에서 선언된 변수의 스코프가 거기까지이므로 뒤의 while 조건에 쓰지말아야할것이다. 물론, 루프문 이전에 선언된 변수를 루프문에서 같은이름으로 선언했다면, 상관없다. 교묘한테크닉으로 쓸수도 있지만, 가독성이 떨어지기때문에 권하지는 않는 스타일이라고 한다.
4. 반복문 for
for 문의 기본 형태는 다음과 같다.
for ( expr1 ; expr2 ; expr3 )
statement
flow 는 다음과 같다 : expr1 -> expr2 -> statement -> expr3 -> expr2 -> statement -> expr3 -> expr2 -> ...
실행구조는, expr1 이나 expr3 은 그냥 실행하고, expr2 는 T/F 를 판단한다.
expr1 으로 초기화 배정을 실행하고, expr2 에 루프를 계속돌릴지말지 결정할 조건문을 집어넣고, expr3 에서 루프변수를 증감시키는 것이
보통의 방법이다.
---------------------------------------------------------------------------------------------------
while 문으로 for 문 표현하기
만약, 위의 일반적인 방식으로 쓴다면, while 문을 통해 똑같이 구현 가능하며 다음과 같다.
expr1 ;
while(expr2)
{
statement
expr3 ;
}
for 문으로 while 문 표현하기
for 문에서 expr1 과 expr3 이 꼭 필요한것은 아니다. expr1 과 expr3 이 없으면, while 문과 동일하며 다음과 같은 형태가 된다.
for ( ; expr ; )
statement
예제.
for ( ; scanf("%lf",&x ) == 1 ; i++ )
statement
여기서 아래와 같은 구조를 썼는데,
for ( ; expr ; i++ )
statement
이는 while 문에서 약간 편의성이 높아진 방식으로 생각할 수 있다.
즉, loop 에 들어오기 전에 이터레이션 변수가 유동적으로 결정되고, 그것에 의해 루프의 반복횟수가 의존하는 경우에 유용하다고 하겠다.
위의 for 문은 다음과 동일하다.
while( expr)
{
statement ;
i++ ;
}