C언어를 독학하시는 분들을 위해 포스팅합니다.
이 글은 완전 처음 접하는 왕초보 분들을 위한 강좌입니다.
가급적 자주 포스팅하겠습니다.
포스팅을 자주 해야 하는데,
개발일 하며, 개인적인 공부에, 여러 가지 가정 내 처리할 것들이 많아서인지;;;
생각만큼 자주 못해서 죄송합니다.
그나마 다행(?)인 것은,
아직 방문하시는 분들이 많지 않아서,
저 또한 나태해지는 것 같습니다.
그래도, 어느덧 왕초보 강좌가 거의 정리가 되어가는 것 같아서,
나름 뿌듯합니다.
다시금 마음을 잡고 열심히 하겠습니다!!!
오늘은 지난 포스팅에 이어,
알고리즘을 표현하는 구조 중 마지막인 반복 구조에 대해 알아보도록 하겠습니다.
반복구조는 크게 두 가지 함수를 사용하여 표현할 수 있습니다.
for 구문과, while 구문입니다.
영어 문법에서, for 뒤에 시간이 나오면, for는 "~를 위하여"가 아닌, "~시간 동안"이라는 뜻으로 달리 해석됩니다.
while 또한 "~동안"이라는 뜻으로 사용됩니다.
1. for
for를 사용한 구문은,
for(초기값 ; 조건 ; 증감)의 형태로 씁니다.
예를 들면,
for(int i = 0 ; i < 10 ; i++){
printf("%d\n", i);
}
이 코드는,
0부터 시작해서 9까지 출력하는 코드입니다.
2. while
위의 예를 똑같은 결과를 보여주는 while로 표현해 보겠습니다.
while을 사용한 구문은,
초기값
while(조건)
증감
으로 표현됩니다.
int i = 0;
while(i < 10){
printf("%d\n", i);
i = i + 1;
}
while 구문 옆에는 for문의 조건에 해당되는 내용이 오고,
초기값과 증감은 while의 앞 뒤에 각각 넣어주어야 합니다.
for와 while는 다음과 같은 순서도로 표현됩니다.
위 예제 코드를 이렇게 순서도로 표현할 수 있는데요,
마름모 형태가 마치 if의 조건문과 유사합니다.
조건에 따른 선택을 하기 때문에, 동일하게 마름모를 사용하지만,
순서도의 빨간색 화살표와 같이, "되돌아온다"는 부분이 다릅니다.
이 부분을 꼭 기억해 주시면 좋겠습니다.
3. 중첩반복
중첩반복은 반복 안에 또 반복이 되는 구조를 말합니다.
앞서 예제로 활용했던, 구구단을 중첩반복으로 사용하면 매우 편리하게 구현됩니다.
#include <stdio.h>
int main()
{
int dan = 0;
int index = 1;
for(int dan = 2 ; dan < 10 ; dan++){
printf("< %d >\n", dan);
for(int index = 2 ; index < 10 ; index++){
printf("%d x %d = %d\n", dan, index, dan * index);
}
}
return 0;
}
코드가 엄청 짧아졌습니다.
이 예제를 활용하여,
지난 선택구조의 마지막 예제에서 반복 구조를 사용하여 똑같이 구현해 보겠습니다.
#include <stdio.h>
//상수 정의: 짝수면 2, 홀수면 3
#define EVEN 2
#define ODD 3
int main()
{
int dan = 0;
int index = 1;
int type = EVEN;
//dan과 type을 입력받기로 합니다.
//type이 짝수이면, 구구단의 홀수 번호는 숨깁니다.
//type이 홀수이면, 구구단의 짝수 번호는 숨깁니다.
//type이 0이면, 전체 다 보여주고, 그 밖에는 아무것도 출력하지 않습니다.
printf("Condition of input number for <multiplication table>\n");
printf("1. When it is an even number, hide the odd number.\n");
printf("2. When it is an odd number, hide the even number\n");
printf("3. When it is 0, the entire is displayed.\n");
printf("4. The others, there is no output.\n\n");
printf("<multiplication table>\n\nEnter 'numbers', 'type': ");
scanf("%d %d", &dan, &type); //dan과 type을 입력합니다.
if(type == 0){
for(index=1 ; index < 10 ; index++)
printf("%d x %d = %d\n", dan, index, dan*index);
}
//짝수이면, 홀수 index를 가립니다.
else if(type == EVEN){
for(index=2 ; index < 10 ; index+=2){
printf("%d x %d = %d\n", dan, index, dan*index);
}
}
//홀수이면, 짝수 index를 가립니다.
else if(type == ODD){
for(index=1 ; index < 10 ; index+=2){
printf("%d x %d = %d\n", dan, index, dan*index);
}
}
//줄만 출력합니다.
else
printf("------------------------");
return 0;
}
여기에서 질문이 있을 수 있겠죠?
이 예제에서 사용된 증감의 표현은,
index++과 index+=2 가 있습니다.
index++ 는 index += 1과 같은 뜻입니다.
그럼 감소일 경우에는?
index-- 또는 index -= 1로 표현될 수 있겠습니다.
같은 맥락으로 증감을 2로 하고 싶다면,
위 예제와 같이,
index += 2로 할 수가 있겠습니다.
자 이제 마찬가지로,
다양한 예제를 다루어보면서 좀 더 익숙해져야겠습니다.
다음의 반복문 관련 예제 링크 남깁니다.
시간이 걸리더라도 꼭 풀어보시기 바랍니다.
'c언어 강좌' 카테고리의 다른 글
[C언어 왕초보 탈출 강좌] 선택 구조 (0) | 2023.05.11 |
---|---|
[C언어 왕초보 탈출 강좌] 순차 구조 (0) | 2023.05.06 |
[C언어 왕초보 탈출 강좌] 알고리즘, 제어 구조 (0) | 2023.05.03 |
[C언어 왕초보 탈출 강좌] 연산자 (0) | 2023.04.30 |
[C언어 왕초보 탈출 강좌] 출력문, 입력문 (0) | 2023.04.15 |
댓글