IT프로그래밍

[C언어]구구단출력 / 반복문 / for문

Manniz 2020. 3. 29.

 

 

 

 

 

 

 

 

목표

 - for문을 이용해서 구구단을 출력

 

1. 반복문(for문)을 이용해서 구구단을 출력

 

저번 포스팅에서는 일일히 구구단의 모든 값을 직접 타이핑하여서 콘솔에 구구단을 출력하였습니다.

2020/03/28 - [★ 프로그래밍/☆ C언어 기초] - [C언어]구구단출력 / printf 숫자 출력 / printf 구구단 출력

 

[C언어]구구단출력 / printf 숫자 출력 / printf 구구단 출력

목표 - printf로 숫자를 연산한 결과 값을 출력 1. printf로 숫자를 연산한 결과값을 출력 - 저번 포스팅에 이어서 printf에서 숫자 출력 + 구구단을 출력해 보겠습니다. 2020/03/28 - [★ 프로그래밍/☆ C언어..

manniz.tistory.com

 

이번 포스팅에서는 for 반복문을 사용하여 구구단을 출력해보도록 하겠습니다.

반복문이란 조건을 설정하고 해당 조건이 참(true)이면 그 안의 내용을 실행하는 명령을 말합니다.

 

소스코드

#include <stdio.h>
 
int main(void)
{
    int i;        //int형 변수 i를 선언
 
    for(i = 1; i <= 9; i++)        //for 반복문, i = 1로 시작, i<=9가 true이면 해당 반복문을 계속 실행, i의 값은 1씩 증가
    {
        printf("%d X %d = %d\n"5,i,5*i);    //반복문이 루프를 돌며 변수 i에 값을 증가
    }
}
 
 

 

실행 결과

 

 

 

 

이전 포스팅에서 구구단을 출력하기 위해 작성하였던 소스코드와 비교하면

코드가 짧아졌다는걸 느끼실 수 있으시죠?

반복문을 사용하는 이유가 바로 그것입니다.

코드 작성의 양을 줄여주기때문에 코드작성에 효율성이 증가합니다.

 

반복문을 없이 일일히 작성하였다면

printf("%d X %d = %d", 5, 1, 5*1);

printf("%d X %d = %d", 5, 2, 5*2);

printf("%d X %d = %d", 5, 3, 5*3);

.

.

.

printf("%d X %d = %d", 5, 9, 5*9);

으로 하나하나 타이핑을 하거나 복붙을해야겠죠..크헉

 

복붙을 해도 2, 3번재 파라미터값을 일일히 수작업으로 하나하나 바꿔줘야합니다.

이게 구구단이라 9번이지

만약 1000개가 기계적으로 반복수행되는 작업이라고 가정한다면 모니터 보랴, 타이핑하랴

엄청 힘이 들것같네요 OMG;

 

이름에서도 바로 "반복"문 이라는 것을 보고 다들눈치채셨겠지만,

이런 기계적인 반복작업을 대신해주는 것이 바로 반복문 입니다.

 

 

소스코드에 주석으로 설명을 하였지만 간략히 덧붙이자면

int i;

이것은 int형 변수를 선언한 것입니다.

변수 관련 내용은 정리하여 포스팅하겠습니다만,

지금은 숫자(int형)를 담아놓는 접시가 있는데 그놈의 이름은 i이다 정도로만 생각해주시길 바랍니다.

 

그 밑에 나오는 것이 오늘의 핵심인 반복문 입니다.

반복문에도 여러 종류가 있으나, c에서 가장 흔하게 사용하는 것이 오늘 사용한 for문입니다.

 

for문은 다음처럼 정의할 수 있습니다.

 

for(시작숫자, 조건, 시작숫자에 줄 변화)

{

    조건이 참일 경우 실행될 코드

}

 

다시 위의 예제를 참고하여 살펴보면

for(i = 1; i <= 9; i++)를 풀어써보자면

 

1. i라는 변수에 처음 1이라는 값을 할당해

2. i라는 변수의 값이 <=9 (즉, 9이하)가 맞아?

3. 조건이 참이면 시작숫자에 줄 변화는 i++야

입니다.

 

i++는 연산후 증가 연산자라는 것으로 i의 값을 연산후 1증가 시키겠다는 의미입니다. 자세한건 다음포스팅에서 다룰께요. 지금은 그냥 i의 값을 1증가 시키겠다정도로 이해해주세요.

 

 

 

 

 

아직 이해가 되지 않으셨거나 어려우실 수 있으니 전체 과정을 글로 쭉 풀어써 보겠습니다

 

 

 

- int형 변수 i가 선언됨.(현재 값을 가지고 있지는 않음, null값이라고 함)

 

- i에 1이라는 값을 할당해

- 현재 i(1)이 <= 9 냐?? => 맞다

- i++(후증가연산자)라는 것을 실행해 => 코드안의 연산을 수행하고, i의 값을 1올려 라는 의미

- printf("%d X %d = %d", 5, i, 5*i);를 실행 => 현재 i는 1

따라서 콘솔에 출력되는 결과는 5 X 1 = 5

- for문안의 모든 연산이 완료되었으니 아까 실행된 i++(후증가연산자)에 따라 i의 값을 1증가 시켜서 i = 2가 되었어

 

- 현재 i(2)이 <= 9 냐?? => 맞다

- i++(후증가연산자)라는 것을 실행해 => 코드안의 연산을 수행하고, i의 값을 1올려 라는 의미

printf("%d X %d = %d", 5, i, 5*i);를 실행 => 현재 i는 2

따라서 콘솔에 출력되는 결과는 5 X 2 = 10

- for문안의 모든 연산이 완료되었으니 아까 실행된 i++(후증가연산자)에 따라 i의 값을 1증가 시켜서 i = 3가 되었어

 

- 현재 i(3)이 <= 9 냐?? => 맞다

- i++(후증가연산자)라는 것을 실행해 => 코드안의 연산을 수행하고, i의 값을 1올려 라는 의미

printf("%d X %d = %d", 5, i, 5*i);를 실행 => 현재 i는 3

따라서 콘솔에 출력되는 결과는 5 X 3 = 15

- for문안의 모든 연산이 완료되었으니 아까 실행된 i++(후증가연산자)에 따라 i의 값을 1증가 시켜서 i = 4가 되었어

 

.

.

(중간 생략)

.

.

 

- 현재 i(7)이 <= 9 냐?? => 맞다

- i++(후증가연산자)라는 것을 실행해 => 코드안의 연산을 수행하고, i의 값을 1올려 라는 의미

printf("%d X %d = %d", 5, i, 5*i);를 실행 => 현재 i는 7

따라서 콘솔에 출력되는 결과는 5 X 7 = 35

- for문안의 모든 연산이 완료되었으니 아까 실행된 i++(후증가연산자)에 따라 i의 값을 1증가 시켜서 i = 8가 되었어

 

- 현재 i(8)이 <= 9 냐?? => 맞다

- i++(후증가연산자)라는 것을 실행해 => 코드안의 연산을 수행하고, i의 값을 1올려 라는 의미

printf("%d X %d = %d", 5, i, 5*i);를 실행 => 현재 i는 8

따라서 콘솔에 출력되는 결과는 5 X 8 = 40

- for문안의 모든 연산이 완료되었으니 아까 실행된 i++(후증가연산자)에 따라 i의 값을 1증가 시켜서 i = 9가 되었어

 

- 현재 i(9)이 <= 9 냐?? => 맞다

- i++(후증가연산자)라는 것을 실행해 => 코드안의 연산을 수행하고, i의 값을 1올려 라는 의미

printf("%d X %d = %d", 5, i, 5*i);를 실행 => 현재 i는 9

따라서 콘솔에 출력되는 결과는 5 X 9 = 45

- for문안의 모든 연산이 완료되었으니 아까 실행된 i++(후증가연산자)에 따라 i의 값을 1증가 시켜서 i = 10가 되었어

 

- 현재 i(10)이 <= 9 냐?? => 틀리다

- for문을 안에 정의되어 있는 코드를 실행시키지 마

 

가 되겠습니다.

 

 

실제 소스코드가 실행되는 것을 break로 찍어서 확인하는 영상으로 보시면 이해에 조금더 도움이 되지 않을까 하네요.

 

구구단 반복문 실행

 

 

 

댓글