목표
- for문을 이용해서 구구단을 출력
1. 반복문(for문)을 이용해서 구구단을 출력
저번 포스팅에서는 일일히 구구단의 모든 값을 직접 타이핑하여서 콘솔에 구구단을 출력하였습니다.
2020/03/28 - [★ 프로그래밍/☆ C언어 기초] - [C언어]구구단출력 / printf 숫자 출력 / printf 구구단 출력
이번 포스팅에서는 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로 찍어서 확인하는 영상으로 보시면 이해에 조금더 도움이 되지 않을까 하네요.
'IT프로그래밍' 카테고리의 다른 글
[C언어]C언어 배열 초기화 / C언어 배열 초기화 소스코드 / C언어 배열 초기화 방법 및 분석 (0) | 2020.04.01 |
---|---|
[c언어]c언어 제곱 구하기 코드 (0) | 2020.03.30 |
[c언어]switch문 / switch-case문 (0) | 2020.03.30 |
[c언어]c언어 소수점 자르기 / c언어 소수점 자리 설정 / c언어 소수점 자릿수 설정 / c언어 소수점 자릿수 조절 (1) | 2020.03.29 |
[C언어]구구단출력 / printf 숫자 출력 / printf 구구단 출력 (0) | 2020.03.28 |
[C언어]printf / printf 출력형식 / %d / (0) | 2020.03.28 |
[C#] 윈폼 프로젝트 만들기, 버튼 클릭, 텍스트 박스 출력까지 (0) | 2020.03.28 |
[알고리즘]c언어 약수, 약수의 개수 한번에 구하기(통합, 간단버전) (0) | 2017.05.24 |
댓글