본문으로 이동

포털:고등학교/정보·통신 계열 전문 교과(2015)/프로그래밍/제어문

위키배움터

제어

[편집]

원하는 방향으로 작동하게 만드는 것.

제어 구조

[편집]

프로그램의 흐름을 제어하는 구조로 선택 구조, 반복 구조, 순차 구조가 있다.

  • 선택 구조

조건에 따라 서로 다른 작업을 처리하는 구조

  • 반복 구조

반복되는 작업을 빠르고 효율적이게 처리하는 구조

  • 순차 구조

정해진 순서에 따라 차례대로 처리 내용을 실행하는 구조

선택 구조의 종류

[편집]

if문, if-else문, 다중if문, switch-case문과 같은 조건문이 있다.

if문

[편집]

if문은 조건식에 따라 특정 문장의 수행 여부를 결정한다.

  • if의 조건이 참이면 문장 1, 문장 2를 실행하고, 거짓이면 중괄호 안의 문장을 실행하지 않는다.
  • 조건식에 따라 실행할 문장이 여러 개일 때는 반드시 중괄호({})로 묶어 준다.
  • if문의 조건
  1. if 문의 조건식에는 주로 관계 연산자를이용한다.
  2. 중괄호가 없는 경우 조건이 거짓일 때, 문장 1만 영향을 받고 문장 2는 무조건 실행된다.
  • 예시
if문 조건의 참, 거짓 상황에 따른 결과를 출력하는 프로그램을 작성해 보자.

#include <stdio.h>
int main( )
{
    int i = 13, j = 5;
    if (-1) putchar('A');
    if (1) putchar('B');
    if (13) putchar('C');
    if (0) putchar('D');
    if (i>j)
    {
        putchar('E');
        putchar('F');
    }
    if (i<j)
        putchar('G');
    putchar('H');
    return 0;
}

if-else문

[편집]

if-else문은 조건이 참일 때 실행되는 문장과 거짓일 때 사용되는 문장이 서로 다를 때 사용한다.

  • if 문의 조건이 참이면 문장 1, 문장 2를 실행하고, 조건이 거짓이면 문장 3, 문장 4를 실행한다.
  • 실행할 문장이 2개 이상일 경우 중괄호( { } )로 묶어 준다.

다중if문

[편집]

다중if문은 if문 안에 또 다른 if문을 포함한 것으로 비교, 판단 조건을 복합적으로 사용할 수 있다.

switch-case문

[편집]

switch-case문은 하나의 조건으로 여러 개의 case 문장 중 하나를 선택하여 실행할 수 있다.

  • switch-case 문의 조건
  1. switch문뒤의식에는정수값, 정수형 변수, 정수형 수식, 문자형 상수 등이 올 수 있다.
  2. 다수의조건중 만족하는 case 문 이후의 문장을 모두 수행한다.
  3. 조건에 만족하는 case 문의 문장만 수행하려 면반드시 break문을 추가해야 하며, 그렇지 않으면 이후의 문장이 모두 수행된다.

반복 구조의 종류

[편집]

for문, while문, do-while문과 같은 조건문이 있다.

for문

[편집]

for문은 반복 횟수를 정확히 알고 있을 때 사용하며 그 알고 있는 횟수만큼 반복할 수 있다.

  • for 문 실행 순서
  1. 초기식으로 변숫값을 초기화한다.
  2. 변숫값을 조건식과 비교하여 참이면 for 문의 문장을 수행하고, 거짓이면 반복문을 벗어난다.
  3. 증감식에서 변숫값을 증가(또는 감소)한 후 다시 2로 이동하여 수행한다.

while문

[편집]

while문은 정확이 몇 번 반복되는지 알 수 없을 때 사용하는 반복문의 하나로, 주어진 조건이 참이면 반복을 수행하고, 거짓이면 while문을 벗어난다.

do-while문

[편집]

do-while문은 기본적으로 while과 같다. 그러나 do-while문은 참, 거짓과 관계없이 무조건 한 번은 do-while문을 실행한다. 그 후, 조건을 검사하여 참이면 반복문을 수행하고, 거짓이면 do-while문을 벗어난다.

break문, continue문

[편집]

break문과 continue문은 조건문이나 반복문 수행 중에 해당 범위를 벗어나거나 이후의 문장을 무시하고 반복문의 처음으로 이동하여 실행하는 명령문이다.

break문

[편집]

break문은 switch-case문과 같은 조건문이나 반복문을 수행하다가 해당 영역을 벗어날 때 사용하며, 여러 개의 반복문이 쌓여 있을 시에는 가장 가까운 반복문을 벗어난다.

continue문

[편집]

continue문을 반복문 내에서 만나면 반복문의 처음으로 프로그램의 제어를 이동한다. while문에서는 조건을 다시 감시하게 하고, for문에서는 증감문으로 제어한다.

  • 예시
사용자가 키보드로 정수를 입력하면 1~100까지의 수 중에서 입력한 수의 배
수가 몇 개인지 출력하는 프로그램을 작성해 보자.

#include <stdio.h>
int main( )
{
    int i, count = 0, answer;
    scanf("%d", &answer);
    for (i = 1; i < 101; i++)
    {
        if (i % answer != 0) ← 변수 i를 answer로 나눈 나머지가 0과
        {                       같지 않으면 for 문의 중심으로 제어가 이동함. 
            continue;
        }
        count++;
    }
    printf("1부터 100까지 수 중에서 %d의 배수는 %d개입니다.",
        answer, count);
    return 0;
}

중첩 제어문

[편집]

제어문 안에 또 다른 제어문이 1개 이상 포함된 것을 말한다.

  • 예시
중첩 제어문을 이용하여 구구단 2, 3단을 출력하는 프로그램을 작성해 보자.
#include <stdio.h>
int main( )
{
    int i,j;
    for (i = 2; i < 4; i++) ← i‹10으로 바꾸면 2~9단까지 출력
    {
        for (j = 1; j < 10; j++)
        {
            printf("%d x %d = %2d\n", i, j, i * j);
        }
        printf("\n"); ←단과 단 사이를 구분하기 위해 한 행을 띄움.
    }
    return 0;
}