눈으로 하는 코딩이 아닌! 직접 타이핑하는 코딩은 실력 향상에 엄청난 도움이 됩니다.
안녕하세요! 정선생이예요. 오늘은 반복문에 대해서 알아볼거예요. 조건문과 더불어서 중요한 부분이고 상당히 많이 쓰여요.
표현 방법도 상당히 많아서 모든 부분을 알려드리기는 사실상 불가능하다고 판단해서 교재와 같은 곳에 나온 방법으로만 설명드리려고 해요.
그러면 시작할게요 :)
반복문이 일단 무엇이냐? 반복을 하는 문. 명령문이라고 생각하면 되요.
예제를 통해서 반복문의 필요성을 알아볼까요?
printf("*****\n"); printf("*****\n"); printf("*****\n"); printf("*****\n"); printf("*****\n");
이 문장의 실행 결과는 다음과 같겠죠?
***** ***** ***** ***** ***** |
같은 문장을 5번을 반복해서 썼어요. 제가 다음 할 말 예상 되시나요? :0
반복문이라는 것은 동일한 작업들을 n번 반복해주는 것이구나.
물론 반복문 속에 조건문을 넣어서 동일한 작업들을 하지 못하게 할 수도 있기는 해요.
반복문의 종류에는 크게 3가지가 있어요.
while, do~while, for
종류의 구조를 알아보기 전에 많이 사용하는 반복문 변수가 있어요.
i, j, k 정도?
예전부터 습관처럼 굳어져서 사용하게 된 것 같아요.
흔히 반복문 카운터를 위한 변수라고 보시면 되요.
while문 구조부터 먼저 볼게요.
i를 1로 초기화를 해주고
while(i <= 10)을 만났네요
이 말은 i가 10 이하인 동안 다음 블록 구문을 실행해라.
라는 뜻이예요! 써져 있는 숫자는 프로그램이 실행되는 순서를 쓴거예요
1번으로 i 초기화, 2번으로 조건을 비교해보고 True니까 3번을, 그리고 4번으로 가서 다시 조건 비교하고 5번, ...
이런식으로 반복되는 구조를 가지고 있어요.
다음으로는 do~while 문인데 이것은 일단 한 번 실행해라! 그리고 조건을 비교해라. 인거예요.
do{ ... } 일단은 실행해라.
}while(i < 10); 'i가 10보다 작아?' 그러면 다시 이 블록 구문의 처음으로 돌아가서 실행해라.
이해 되셨나요?
do~while 에서는 while(조건); ; 꼭 붙여주셔야해요!! :)
마지막으로 반복문 중에 제일 많이 쓰지 않을까 생각되는 for문이예요. 솔직히 저도 for문이 더 편해서 for문을 많이 사용합니다
기본 구조는 아래와 같아요
for(초기값 ; 조건 ; 증감){ ... }
세미콜론을 기준으로 3가지로 나뉘어졌네요.
while문과 비교를 해보면서 보시는게 이해가 좀 빠를꺼예요.
그렇다면 for문을 while문으로, while문을 for문으로 바꿀 수 있겠죠?
당연 do~while도 가능은 합니다.
다음으로는 다중 반복문을 알아볼거예요.
반복문 속에 반복문을 넣는 것이죠
보통의 코드는 다음과 같아요
위 코드는 행렬을 생각하시면 편해요.
첫 번째 반복문은 줄 바꿈을 해주네요. ( 행을 표현 ) [ i = 0 ~ 5보다 작은 즉 4까지의 줄바꿈(5번의 줄바꿈) ]
두 번째 반복문은 * 를 출력시켜주네요. ( 열을 표현 ) [ j = 0 ~ 4까지 * 를 출력(5개의 출력) ]
그런데 두 번째 반복문은 첫 번째 반복문의 블록 구조 속에서 실행이 되네요.
이 말은 i = 0 일때 j = 0~4까지 * 출력한 후에 줄 바꾼 다음
i = 1이 되고 j = 0~4까지 * 출력하고 줄 바꾸고 ...
...
i = 4까지해서 다음과 같은 출력이 나오겠네요.
***** ***** ***** ***** ***** |
그렇다면
***** **** *** ** * * ** *** **** ***** |
이런 출력도 만들 수 있겠죠? 다양하게 출력을 만들수가 있어요. 피라미드, 모래시계, 등등 많은 모양을 만들어 볼 수 있답니다.
반복문과 친해지는(?) 예제들 중 하나죠 ㅎㅎ
오늘 준비한 반복문은 여기까지예요.
생각보다 어렵지는 않아요. 특히나 반복문은 예제들을 많이 풀어보면 풀어볼수록 매력을 느낄 수 있을꺼예요! :)
오늘의 문제!
문제 정선생은 오늘 배웠던 반복문을 이용하여 직각 삼각형을 만들어 보고 싶어한다. 키보드로 입력 받은 숫자가 변의 길이를 뜻한다. |
입력 3 |
출력 *** ** * |
입력 5 |
출력 ***** **** *** ** * |
힌트를 드리자면 반복문의 종료 조건을 입력받은 숫자까지 범위를 설정하면 되겠죠?
for( i = 0; i < n; i++){ .. }
문제 사용자가 키보드로 숫자 하나를 입력을 하면 1부터 해당된 숫자까지의 홀수들과 합을 더하는 프로그램을 작성하라. (단, 입력하는 숫자는 10 이상이라고 가정한다. 그 이하를 입력 할 경우는 프로그램을 종료한다.) (추가로, 그 이하를 입력 할 경우에 대한 조건은 풀어보고 싶은 분들만 하길 바람) |
입력 15 |
출력 1 + 3 + 5 + 7 + 9 + 11 + 13 + 15 = 64 |
홀수인지 짝수인지를 판별하는 방법 중 하나가 % 연산을 하는 거예요. %연산은 나머지를 구해주거든요
현재 숫자에 % 2 를 했을 때, 1이 나오면 ( ), 0이 나오면 ( ) 겠죠?
반복문 문제는 너무너무 많아요. 응용하기도 쉽고.. 이후에 배우는 내용에서 추가적인 반복문 문제가 많이 나와요! :)
게시글을 보시다가 궁금한 내용, 이게 맞나? 하는 내용, 이건 틀렸어!하는 내용들은 과감하게 댓글 달아주시면 감사하겠습니다.
이론적인 내용에 대한 궁금증은 검색을 통해 궁금증을 해결하는 것이 좋아요!!
실습적인 내용에 대한 궁금증은 최대한 생각을 해보고 검색을 하는 것이 좋아요!!
'Programming > C' 카테고리의 다른 글
[C] 재귀함수(Recursion) (0) | 2018.05.22 |
---|---|
[C] 함수 (0) | 2018.05.15 |
[C] 조건문 (0) | 2018.05.04 |
[C] 변수와 형식지정자 (0) | 2018.04.30 |
[C] 기본 입/출력 (0) | 2018.04.24 |