C [스카웃 C언어 강좌] 11-4 반복문 for[ 스카웃 C언어 강좌] 11-4 반복문 for 머리말 안녕하세요. Programog를 운영하고 있는 스카웃입니다. 오늘은 반복문 중 사용자면으로선 최고봉인, for문에 대해 알아보겠습니다. 우리는 이미 반복문의 원리와 기본적인 개념들을 알고 있으므로 쉽게쉽게 이해할 수 있을 것이라 보입니다. < 그 전에, 손가락을 살포시 눌러주세요 > ----목차---------------- 1.for문 ------------------------- [ 저번시간을 통하여 do~while문에 대해 확실히 다들알고계시겠으리라 믿고 수업을 진행하도록하겠습니다 ] [ 저번 강좌 복습/재정리 : http://blog.naver.com/skout123/50127218188 ] 1. for문 for문은, while과 같은 반복문입니다. 그래서 for문이 없어도 while문 만으로도 모든 작업을 해낼 수 있습니다. 그러나, while문 대신 for문을 쓰게되면 가독성이 좋아하지고 코드길이도 줄일 수 있는 일이 다반사라 for문은 거의 반복문의 마스코트로 칭해지고있습니다. 이상 for문에 대한 간단한 소개를 해보았는데요... 실제로 C언어에서 for문의 탄생배경은 이렇다고 합니다. 한마디로 요약하자면, " while문은 보기가 좀 그러네! " 자 이제 왜 while문이 보기가 좀~ 그런지 알아보겠습니다. while문을 사용할 때, 적어주어야할 기본적인 구성요소 3가지는 무엇일까요? 바로, 이들입니다. * 반복 횟수 카운트를 위한 변수 ( int i = 0; ) * 반복문의 탈출조건 ( i < 7 ) * 탈출조건 성립을 위한 연산 ( i++; ) 그림으로 보자면, 바로 이 부분입니다. [ 그림 1. 반복문의 기본 구성 3요소 ] 이러한 반복문 기본 구성 3요소들을 while문에서 만족시키려면, 무려 3줄(이상)이라는 공간이 필요합니다. 그래서 C언어 개발자 분들은 이러한 생각을 하기에 이릅니다. " 흠... 이 세가지를 깔끔하게 한 줄에 표시할 수 없나? 그러면 분석하기 편할 텐데. " 그래서 생겨난 것이 for문입니다! 이번에 배울 for문을 깨우치고 나서는, 1줄이면 만사 오케이!! 끝납니다! 자, 반복문 for을 사용하기에 앞서 while문과의 차이점을 알려드리겠습니다. [ 그림 2. while문과 for문의 비교 그리고 for문의 형태 ] 자 위 그림에서 오른쪽의 for문을 보시면, 왜 for문이 while문 보다 한수 위인지 알 수 있습니다. while문과는 달리 반복에 필요한 모든 구성요소들을 한 줄에 말끔히 나열하고 있으니깐요. 하하.. 다시 말하지만, 이것이 바로 for문의 강력한 무기입니다!!? 즉 For문은, while문을 보다 세련된 형태로 구성하기 위해 디자인 된 반복문 이라고 할 수 있습니다. < ※ 주의 : 현재 VC++ 2010버전까지는 for문에서 int n = 0; 처럼 변수를 선언할 수 없고, 대신 미리 변수를 선언한 경우에서만 n = 0; 이런식으로 대입이 가능합니다 > < 새로운 표준에서는 for문을 위 그림 처럼 구성할 수 있다고는 하지만, 현재 대부분의 컴파일러들은 옛날 표준을 가집니다 > < 따라서 먼저 변수 선언을 해준 뒤 for문을 써주시기바랍니다 > 자아... 아직 for문에 대한 설명이 끝이 나지 않았습니다. for문에 대해 더 알아보고자 합니다. 다음 그림을 봐주세요. [ 그림 3. for문의 구성 세분화 ] 자, 보시면 왼쪽에서 오른쪽까지 순서대로 초기식, 조건식, 증감식이 있는데요. 도대체 이들이 무엇인지,,, 하나하나 설명해드리겠습니다. ------------------------------------------------------------------------------------------------------------------------------------- " 초기식 : 변수의 초기화를 해주는 부분이기 때문에 초기식(초기화 식) 이라고 부른다 " " 조건식 : 반복문의 조건검사를 해주는 부분이기 때문에 조건식 이라고 부른다 " " 증감식 : n++; 처럼 루프탈출을 위해 증감연산자를 이용해주는 식이 주로 오는 부분이기 때문에 증감식 이라고 부른다 " -------------------------------------------------------------------------------------------------------------------------------------- 잘 아셨나요? for문의 몸체 부분은 말 안해도 다들 아시겠으니 생략하겠고, 이제 본격적으로 for문을 써봅시다~ 실습을 해보도록 하죠~ 자, 다음은 예제소스입니다. 보고 조금씩 활용해주시면서 for문에 익숙해지세요. ---------------------------------------------------------------------------------------------------------------------- [ 사진 1. for문 활용 예제 ] [ 사진 2. 위 예제 실행 결과 ] ------------------------------------------------------------------------------------------------------------------- 거듭제곱을 구하는 프로그램을 만들어보았습니다. 하하. 흠... 제가봤을 때 우리 실력대로라면 소스의 흐름과 각 변수의 역할들은 다 아실 것이라 믿고요.. < 모르시겠다면 질문을 해주시거나 재복습! > 이번 예제에서 주의 깊게 관찰해주실 부분은 바로 여기입니다. 여기서 또 여러분들이 살짝 당황하셨을 것입니다. [ 사진 3. for문에서의 다중 초기화 ] 연두색으로 색칠해놓은 부분, 즉 초기식을 보시면 i = 1, result = 1 이라고 2개나 변수를 초기화해주었습니다. 자, 이게 가능한가? 라고 물으실테지만 이미 실행결과를 보셔서 아셨듯 가능합니다. 그러니 앞으로 다중 초기화도 걱정없이 팍팍 해줍시다~ ( 되도록이면 필요할 때만 해줘야 가독성이 좋아집니다 ) 아, 또 알아볼 것이있는데요~ 예제를 봐주세요. -------------------------------------------------------------------------------------------------------------------
[ 사진 5. 위 예제 실행 결과 ] ------------------------------------------------------------------------------------------------------------------- 자, 먼저 9줄을 보시면 [ 사진 6. 조건식만 있는 경우 ] 초기식과 증감식이 증발하였습니다... 아니 일부러 실험을 하기위해 없애주었는데요. 이럴 경우 어떻게 될까요? 뭐 전혀 지장되는 것은 없습니다. 변수의 값을 초기화 해주던 증감식을 통해 변수의 값을 변경해주던 말던, 위와 같은 상황에서는 쓸모가없기때문이죠. while문으로 치면 그냥 이런 것이나 같습니다. while(i++<3) puts("조건식만 존재"); ㅋㅋ 이럴 경우에는 차라리 while문을 쓰는게 훨 낳습니다. 그리고 다른 경우도 마찬가지입니다. [ 사진 7. □□식이 없는 경우 ] 여기서 제가 말하고자 하는 바는, 그냥 이렇게 쓸 수 있다! 라는 것을 보여줄려고 이 예제를 준비했다! 라는 것입니다. 뭐 그렇게 중요한 건 아니지만 나중에 우리가 이런 식으로 쓰게될지 아무도 모르잖습니까? 하하. 자.. 이제, [ 사진 8. 강의 끝~ ] 이상으로 오늘은 for문에 대해 알아보았습니다. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ < 숙제 > 1. 팩토리얼(!)을 계산하는 프로그램을 만들어봅시다. 프로그램 사용자로부터 숫자 하나를 입력 받은 후 , 그 숫자의 계승이 출력되도록 합시다. ex ) 5 입력 -> 1*2*3*4*5 [ 난이도 : ★★★☆ ] 2. 두 개의 정수를 입력 받아, 입력 받은 두 정수와 그 사이에 존재하는 모든 정수들의 합을 계산하는 프로그램을 만들어봅시다. ex ) 3 , 7 입력 -> 3+4+5+6+7 [ 난이도 : ★★☆ ] 3. 1과 100 사이에 존재하는 모든 3의 배수와 5의 배수의 합을 계산하여 출력하는 프로그램을 만들어봅시다. [ 난이도 : ★★★ ] 숙제 결과는, http://cafe.naver.com/clubc 에 들어가셔서 '문제 다풀었다!' 게시판에 올려주시면 감사하겠습니다. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ [다음강좌] 반복문의 중첩 [다다음강좌] 아스키코드 탐구 [다다다음강좌] 문자 함수 : isdigit,isalpha,islower,isupper
|