이번에는 C언어에서 반복문들의 중첩에 대하여 알아보겠습니다.







1. for 문의 중첩


while 문, do~while 문 의 중첩처럼 for 문 또한 중첩이 가능하고, 코드 간결화 및 가독성과 효율을 높여주는 방법으로 중첩을 사용합니다.


따로 설명 하지는 않고, 반복문들의 중첩에 대한 구구단 예제를 통해 알아보고, 익숙해지는 시간을 가지도록 하겠습니다.








2. for / for 구구단



(개인적으로 for 문이 제일 편했습니다.)








3. for / while 구구단








4. for / do~while 구구단








5. while / while 구구단








6. while / for 구구단








7. while / do~while 구구단









8. do~while / do~while 구구단








9. do~while / while 구구단








10. do~while / for 구구단






여러가지 반복문들의 중첩을 구구단을 통해 알아보았습니다.


순서만 바꿔주면 된다라는 것이 이번 글의 목적이 아닙니다.


C언어의 특징과 각 반복문들의 특징을 잘 알고, '계속 연습 해보면서 익숙해져야 된다'는 것이 이번 글의 요점입니다.


처음 접하시는 분들의 경우 while, do~while, for 문에 대해서 완벽히 이해하셨어도 바로 적용이 안 되시는 경우가 대부분입니다.

(물론 예외이신 분들도 존재합니다.)


따라서 구구단은 단순한 예제일 뿐이고, 여러번 중첩해서 사용하는 연습을 해보셔야 됩니다.


for / for 반복문을 다른 반복문으로 바꿔본다던지 하는 식으로 연습 해보시는 것이 가장 좋습니다.

(꼭 중첩만이 아니더라도, 중첩이 없는 반복문을 중첩이 없는 다른 반복문으로 바꿔본다던지 하는 방식도 좋습니다.)






이것으로 반복문들의 중첩에 대해서 알아보았습니다.





다음에는 '조건에 따른 흐름의 분기' 에 대해서 공부하고 글을 올리도록 하겠습니다.










'프로그래밍 언어 > C' 카테고리의 다른 글

C언어 조건문 - if 문 (2)  (0) 2017.02.16
C언어 조건문 - if 문 (1)  (0) 2017.01.26
C언어 반복문 - for문 (2)  (0) 2017.01.15
C언어 반복문 - for문 (1)  (0) 2017.01.12
C언어 반복문 - do~while문  (0) 2017.01.09

이번에는 반복문 중 하나인 for 문의 생략 가능한 부분과 무한루프에 대해서 알아보도록 하겠습니다.








1. for 문 에서의 생략


저번 글에서 for 문의 구조는 for ( 초기식 ; 조건식 ; 증감식 ) 이렇게 된다고 글을 작성 했었습니다.


하지만 이러한 초기식, 조건식, 증감식을 '생략' 하고 사용할 수 있습니다.


예제를 통해서 알아보도록 하겠습니다.



위의 예제는 입력 받은 값들의 평균을 출력 해주는 예제입니다.

* num++; 은 평균 계산을 위해 작성한 부분이고, (num - 1)은 조건식의 input>=0.0이 아닐 경우 음수의 값은 평균 계산에서 제외 시키기 위한 부분입니다.


평균 계산을 원하는 값들을 계속 입력 받아야 되고, 사용자가 원하는 시기에 음수 값을 입력해서 평균을 계산하는 소스입니다.


위의 예제의 경우 for( 초기식 ; 조건식 ; 증감식 ) 에서 초기식, 증감식 이 생략 되었습니다.


생략 해준 이유는 간단하게 말하면 필요 없기 때문입니다.


input 값은 사용자로 부터 값을 입력 받아서 입력 받을 때마다 해당 값으로 초기화가 되고, 사용자가 언제 입력을 종료할지 모르기 때문에 초기화를 필요로 하는 초기식 및 조건식을 충족시키기 위한 증감식 또한 필요하지 않게 됩니다.


따라서 초기식과 증감식은 필요하지 않기에 생략을 하고, 조건식만 충족시켜서 반복문을 탈출하면 되기에 조건식만 입력한 경우입니다.








2. for 문의 무한루프


이번 글의 첫 번째 주제에서 초기식, 증감식의 생략을 보고, 조건식도 생략 가능하지 않을까? 라는 궁금증을 가지시는 분도 계실겁니다.


당연히 생략 가능합니다.


예제를 통해서 알아보도록 하겠습니다.



위의 예제에서 조건식의 생략이 가능한 것을 알 수 있습니다.


또한 예제에서 확인 가능한 것은 다음과 같습니다.


1) 초기식 생략 가능

2) 조건식 생략 가능

3) 증감식 생략 가능

4) 무한루프 발생

이로써 초기식, 조건식, 증감식 의 생략이 모두 가능한 것을 알 수 있습니다.


하지만 여기서 궁금증을 가지시는 분들이 계실 겁니다.


조건식의 생략에 대해서 제대로 설명이 안 되어 있네? 갑자기 무한루프는 왜 나왔지? 라는 생각을 하시는 분 당연히 계실 겁니다.


while 문, do~while문에 대해서 글을 올리면서 반복문의 조건식이 항상 '참'이 되면 반복문을 탈출하지 못 하고, 무한루프를 형성하게 된다라는 글을 올렸었습니다.


이 때, while 문과 do~while 문에서는 조건식에 0을 제외한 '참'을 나타내는 값 중 대표인 '1'을 사용해서 조건이 항상 참이도록 했었습니다.


하지만 for 문에서는 조건식을 '생략' 함으로 써 무한루프를 형성하게 됩니다.


물론 변수 선언 해주고 해당 변수의 값을 1로 지정 해주고 조건식을 써줘서 for 문의 무한루프를 형성해도 됩니다.


하지만 for 문의 경우 생략이 가능한데, for 문에서의 조건식을 생략할 경우 조건을 항상 '참'으로 인식하게 됩니다.


따라서 for 문의 조건식을 생략할 경우 무한루프를 형성하게 됩니다.


또한 for 문에서 조건식을 사용하기 복잡하거나 까다로울 경우 추후 올릴 예정인 if 조건문과의 연관성이 있습니다. if 문으로 조건을 걸어서 무한루프의 반복문을 탈출하는 경우도 있습니다.











이것으로 for 문의 생략과 무한루프에 대하여 알아보았습니다.


다음에는 for 문의 중첩과 다른 반복문들의 중첩에 대하여 글을 올리도록 하겠습니다.









'프로그래밍 언어 > C' 카테고리의 다른 글

C언어 조건문 - if 문 (1)  (0) 2017.01.26
C 언어 반복문의 중첩  (0) 2017.01.15
C언어 반복문 - for문 (1)  (0) 2017.01.12
C언어 반복문 - do~while문  (0) 2017.01.09
C언어 반복문 - while문(2)  (0) 2017.01.02

이번에는 반복문 중 하나인 for 문에 대해 알아보도록 하겠습니다.







1. for 문 이란?


첫 번 째 주제에서처럼 for 문도 다른 반복문인 while, do~while문 처럼 반복을 위해 사용되는 문장입니다.


while, do~while 문. 이 두 가지 했으면 충분한 것 같은데 굳이 또 다른 반복문을 할 필요가 있을까? 라는 궁금증이 생기실 수 있습니다.


이에 대한 것은 다음의 예제를 먼저 본 후 진행 하도록 하겠습니다.



예제를 보면서 이렇게 생각할 수 있습니다.


main이라는 함수를 선언 해주고, 4 bytes 크기의 int 형 변수인 count를 선언하면서 동시에 0으로 초기화를 해줬구나.


반복문 중 하나인 while 문을 선언 했는데 조건은 count 가 10이 되기 전까지 while문을 실행 해주는구나.


반복을 실행하는 문장은 어떤 기능일까? -----> "비교를 위한 예제입니다." 라는 문장을 출력하는 구나.


몇 번 출력하는 걸까? ----------> count++; 이라는 문장이 있다면 총 10번의 printf 기능을 하고 반복문인 while 문이 종료가 되겠구나.


while 문이 종료되고나면 return 0; 문장으로 인해서 프로그램이 종료가 되겠구나.


이처럼 어떠한 기능을 '반복'하고 싶고, '몇 번 반복'하고, '반복 조건을 충족시킬 문장'은 어떤 것인지 한 번에 보는 것이 힘듭니다.(번거로워요...)


이렇듯 일반적인 while, do~while 문은 익숙해진다 해도 한 번에 알아 보기에는 약간 무리가 있습니다.


따라서 반복 횟수, 반복 조건 등을 한 번에 알아 볼 수 있도록 해주는 문장이 'for 문' 입니다.








2. for 문의 구조와 이해


for 문의 구조는 다음과 같은 필수 요소 들로 이루어져 있습니다.


필수요소 

기능

                                          초기식

  반복을 위한 변수의 선언 

                                          조건식 

  반복의 조건 검사

                                          증감식 

  반복의 조건을 '거짓' 으로 만들기 위한 연산


물론 위의 요소들이 while, do~while 문 에서도 사용이 되는 요소 들입니다.



예제에서 보시는 것처럼 while, do~while 문에도 필요한 요소들입니다.


하지만 for 문의 경우 초기식, 조건식, 증감식을 한 줄에 표현 할 수 있습니다.



예제에서 알 수 있듯이 반복을 실행할 문장을 '몇 번 반복하고, 반복 조건을 만족 시키는 증가 및 감소식, 반복 조건 및 증가, 감소에 사용되는 변수의 초기화'를 한 줄에 작성하여 알아 보기 편하도록 되어 있는 것을 확인 하실 수 있습니다.


이렇듯 코드를 간결화 하고, 가독성을 좋게 해주기 때문에 for 문을 사용하게 됩니다.


다시 한 번 for 문의 구조를 정리해 보면 다음과 같습니다.


for( 초기식 ; 조건식 ; 증감식 )

{

// 반복의 대상이 되는 문장들

}


이러한 형식으로 for 문을 사용해주시면 됩니다.


그런데 바로 위의 예제에서 for 문을 2개 사용 했는데 왜 그런거지? 라는 궁금증을 가지시는 분들도 계실거고, 대략 눈치를 채신 분들도 계실겁니다.


for 문 이후에 if 문 에서도 나오는 내용이지만 for 문에서 반복할 문장이 1줄일 경우, 중괄호 { } 의 생략이 가능합니다.

* 하지만 반복할 문장의 마지막에 세미콜론 ; 을 반드시 작성하셔야 됩니다.


for 문이 작동하는 순서에 대해 알아보도록 하겠습니다.


for 문이 작동하는 순서는 다음과 같습니다.


1) 초기식 ==> int count=0 에 해당하는 초기화는 반복문이 시작하기 전 '1회' 만 실행합니다.

2) 조건식 ==> count < 10 에 해당하는 조건의 검사는 반복문의 시작에 앞서 진행하고, 반복 영역을 실행하기 전에 항상 확인 합니다.

3) 증감식 ==> count++ 에 해당하는 증감연산은 반복영역을 실행한 후에 진행합니다.


이렇듯 더욱 간단히 순서를 나열해 보면,


(1) 초기식 ==> (2) 조건식 ==> (3) 반복영역 실행! ==> (4) 증감식 ==> (2) ==> (3) ==> (4) ==> (2) 조건식이 '거짓' 이 될 경우  종료!


위와 같은 순서로 for 문이 작동하는 것을 알아 보았습니다.


실제로 편하고(개인 적인 생각입니다.), 가독성이 좋고, 코드의 간결화도 할 수 있는 for 문을 주로 사용합니다.








이것으로 반복문 중 하나인 for 문에 대하여 간단하게 알아 보았습니다.


다음에는 for 문의 중첩과 for 문 중첩 예제, 반복문들을 다양하게 중첩시켜서 사용하는 예제와 for 문 구조의 생략 가능한 부분, for 문의 무한 루프에 대해서 글을 올리도록 하겠습니다.












'프로그래밍 언어 > C' 카테고리의 다른 글

C 언어 반복문의 중첩  (0) 2017.01.15
C언어 반복문 - for문 (2)  (0) 2017.01.15
C언어 반복문 - do~while문  (0) 2017.01.09
C언어 반복문 - while문(2)  (0) 2017.01.02
C언어 반복문 - while문(1)  (0) 2017.01.02

+ Recent posts