공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

 

 


[Java] 조건문과 반복문 : https://pridiot.tistory.com/23?category=869931

Java의 문법과 크게 다르지 않아 간략하게 정리했다.

 

 


 

 조건문 

  • if문
    * if-else문
    * if, else-if, else
  • 삼항 연산자(조건 연산자)
  • switch 문
    * case문에서의 변수 선언

 

 반복문 

  • while문
    * 중첩 while문
    * 무한루프
  • do-while문
  • for문
    * 중첩 for문
    * 무한루프

 

 제어문 

  • break 문
  • continue 문
  • goto 문

 


 

 

  * 중괄호 { } 생략

  조건문이나 반복문에서 실행할 문장이 하나라면 중괄호는 생략 가능하다.

 

   단락 평가(short-circuit evalution)  : 첫 번째 값만으로 결과가 확실할 때 두 번째 값은 확인(평가) 하지 않는 방법
    ex1) AND 연산자는 두 값이 모두 참이어야 참이 되므로 첫 번째 값이 거짓이면 뒤의 값은 확인하지 않고 바로 거짓으로 결정됨.
    ex2) OR 연산자는 두 값 중 하나만 참이면 참이 되므로 첫 번째 값이 참이면 뒤의 값은 확인하지 않고 바로 참으로 결정됨.

 

 

조건문

if문

if(조건식)
{
	//조건식이 true일 때 수행될 문장
}

조건식을 만족하면 괄호 안의 문장들을 실행시킨다.

 

 

  ■ if-else문

if(조건식)
{
	// if의 조건식이 true일 때 수행되는 문장
}
else
{
	// if의 조건식이 false일 때 수행되는 문장
}

``else``는 독립적으로 사용되는 것이 아니라 ``if``와 같이 하나의 문장을 구성하는 형태로 사용된다.

조건식이 참일 경우 ``if``에 중괄호로 묶여있는 블록이 실행되고, 조건식이 거짓일 경우 ``else``에 묶여있는 블록이 실행된다.

 

 

  ■ if, else-if, else

if(조건 1)
{
	// 조건1이 true일 때 수행되는 문장
}
else if(조건 2)
{
	// 조건1이 false이고 조건 2가 true일 때 수행되는 문장
}
else
{
	// 조건들이 모두 false일 때 수행되는 문장
}

  셋 이상의 블록 중 하나를 선택해서 실행하는 구조이다. 중간에 ``else if``문을 추가해서 분기를 늘릴 수 있다. (@@if-else@@를 @@else@@블록을 대상으로 중첩시킨 형태이기 때문에) 하나라도 조건이 만족되어 해당 블록을 실행하고 나면, 마지막에 있는 @@else@@까지 그냥 건너뛴다.

 

 

 

 

 

삼항 연산자(조건 연산자)

(조건식) ? (조건식이 true일 때 실행할 문장) : (조건식이 false일 때 실행할 문장);

//ex) 아래와 같은 경우 대입 연산자보다 조건 연산자인 삼항연산자의 순위가 높아 먼저 진행된다.
int num3 = (num1 > num2) ? (num1) : (num2);

삼항 연산자(조건 연산자)는 간단한 ``if-else``문을 대신할 수 있는 연산자이다.

 

 

 

 

switch 문

switch(변수)
{
    case [값1]:
    	// 변수가 값1일 때 실행할 문장
        break;
    case [값2]:
    	// 변수가 값2일 때 실행할 문장
        break;
    ...
    default:
    	// 변수가 모든 case값에 해당하지 않을때 실행할 문장
        break;
}

if, else-if, else문과 기능이 비슷하다. 조건에 따라 다른데 보통 분기가 많아지면 사용한다.

  • switch에서 판별할 변수는 정수문자 자료형만 가능하다. (실수 자료형이나 문자열은 사용 불가)
  • case를 ``break``로 중단하지 않으면 그다음에 있는 ``case``, ``default``가 계속 실행된다. (이런 상황을 fall through라고 부른다.)

 

  • 변수 : ``switch``문으로 전달되는 인자의 정보. 변수의 값에 따라 실행할 영역이 결정된다.
              (정수형이나 @@char@@형 변수여야 함. 대표적으로 @@int@@형 변수)
  • case 문 : 변수의 값에 따라 실행할 영역. 끝에 콜론( : )을 붙여야 한다.
                  위치를 표시하는 데 사용되어 레이블(label)이라고 한다.
  • break 문(선택) : 사용하면 ``case``문을 벗어난다. (없을 경우 다음 @@case@@까지 계속해서 실행됨)
  • default 레이블(선택) : 일치하는 ``case`` 레이블이 없을 경우에 실행되는 영역

 

 

  ■ case에서의 변수 선언

  중괄호{ }로 묶고, 그 안에서 변수를 선언하면 된다. 선언된 변수는 해당 case문에서만 사용할 수 있고 중괄호를 벗어나면 사용할 수 없다.

 

 


반복문

while문

while(조건식)	// 루프 선언문(loop statement)
{		// 루프 본체(loop body)및 변화식
	// 조건식의 연산결과가 참(true)인 동안 반복될 문장
}

``while``문은 조건식을 만족하는 동안 괄호 안의 문장을 반복 실행하는 구조이다.

 

 

  ■ 중첩 while문

#include<stdio.h>
int main(void)
{
	int dan = 2, num = 1;
	
	while(num <= 9)
    	{
		dan = 2;
		while(dan <= 9)
        	{
			printf("%d x %d = %d \t", dan, num, dan*num);
			dan++;
		}
		num++;
		printf("\n");
	}
	
	return 0;
}

``while``문 안에 ``while``문을 사용할 수 있다.

 

실행 결과



 

  ■ 무한루프

while(1)
{
    printf("%d x %d = %d \n", dan, num, dan*num);
    num++;
}

  반복 조건에 ``0``이 아닌 값(참을 의미하는 값)이 올 경우 (보통 위의 코드처럼 ##1##을 넣는다.) 조건문이 항상 참이 되어 무한루프가 된다. ``break``문을 통해 반복문을 빠져나갈 수 있다.

 

 

 

do-while문

#include<stdio.h>
int main(void){
	int total = 0, num = 0;
	 
	do
    	{
		printf("정수 입력(0 to quit) : ");
		scanf("%d", &num);
		total += num;
	}while(num != 0);
	printf("합계 : %d \n", total);
	
	return 0;
}

  ``do-while``문은 ``while``문과 달리 반복 조건을 뒷부분에서 검사하기 때문에 처음부터 반복 조건을 만족하지 못하면 한 번도 실행하지 않는 ``while``문과 달리, 반복문을 최소한 한 번 이상 실행하는 구조이다. 

 

  • break : ``for``, ``while``, ``do-while``, ``switch``문에서 제어 흐름(반복)을 벗어나기 위해 사용한다.
  • continue : ``break``와 비슷하지만 다르다. ``break``는 제어 흐름(반복)을 중단하고 빠져나오는 반면, ``continue``는 제어 흐름(반복)을 유지한 상태에서 코드의 실행만 건너뛴다.
  • goto : 다중 루프를 빠져나올 때 사용되기도 한다.

 

 

for문

for(초기식 ; 조건식 ; 증감식)		// 루프 선언문(loop statement)
{					// 루프 본체(loop body)
	// 반복의 대상이 되는 문장들
}

  ``for``문도 ``while``문처럼 반복 작업을 수행하는 반복문이다. 초기식과 조건식, 증감식은 선택사항으로 필요하지 않다면 비워도 된다. 반복 횟수가 정해진 경우에는 ``for``문을 사용하고 그렇지 않은 경우 ``while``문을 주로 사용한다.

 

 

  ■ 중첩 for문

#include<stdio.h>
int main(void)
{
	int i, j;
	
	for(i = 1 ; i <= 9 ; i++)
    {
		for(j = 2 ; j <= 9 ; j++)
        	{
			printf("%d x %d = %d\t", j, i, i*j);
		}
		printf("\n");
	}
	return 0;
}

 

실행 결과



 

  ■ 무한루프

for(;;)
{
	...
}

``for``문에서 조건식이 비워지면 무조건 '참'으로 인식되어 무한루프가 된다.

 

 

 

 

 


제어문

break문

  ``break``문이 실행되면 ``break``문을 가장 가까이 감싸고 있는 반복문 하나를 빠져나오게 된다.

 

 

continue 문

  반복문안에서 ``continue``를 실행하면 실행 중인 위치에 상관없이 반복문의 조건 검사 위치로 이동한다. (``continue`` 이후는 생략) 검사 결과 반복 조건이 여전히 '참'이면 반복 영역을 다시 실행한다.

 

 

goto 문

  프로그램의 흐름을 원하는 위치로 이동시킬 때 사용한다.

 

 

 

'기타 > C' 카테고리의 다른 글

[C] 배열 (1차원 배열, 다차원 배열, 가변 길이 배열)  (1) 2020.04.28
[C] 함수  (0) 2020.04.27
[C] printf, scanf 함수  (0) 2020.04.09
[C] 자료형 변환  (0) 2020.04.08
[C] 데이터 표현 방식, 기본 자료형과 상수  (0) 2020.04.07

+ Recent posts