상세 컨텐츠

본문 제목

[C언어] c, c++ 반복문 for 문 관련

본문

반응형

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

출처 : http://202psj.tistory.com/570

 

문장을 반복으로 여러번 그 구간을 반복하여 지나간다.

 

int n = 0;

for(n=0; n<3; n++) //첫번째 부분은 초기화부분, 두번째 부분은 조건부분, 세번째 부분은 증가 부분이다.

{

    printf("gogogo~~");

}

 

출력결과;

gogogo~~

gogogo~~

gogogo~~

 

 

=================================

=================================

=================================

 

 

 

int n = 0;

for(n=3; n>0; n--) // 이런 식으로 반대로 구현 할수도 있다. n이 '0'다 작을때 까지 반복 된다.

{

     printf("gogogo~~");

}

 

-> 더 효율적이게 for을 라인수를 줄일수도 있다.

 

//int n = 0; 이부분을 통쨰로 for문에 넣을수 있다.

for(int n=0; n<3; n++) // 이런 식으로 반대로 구현 할수도 있다.

{

     printf("gogogo~~");

}

 

 

=================================

=================================

=================================

 

 

 

출처: http://blog.naver.com/PostView.nhn?blogId=netrance&logNo=110048716731

 

프로그램이 어떤 반복적인 일을 처리하기 위해 C언어는 3가지 반복문(iteration statement)을 제공합니다. 이들은 while 문, for 문, do ... while 문입니다. 이번 포스트에서는 반복문 중 하나인 for 문을 작성하는 방법을 다룹니다.

 

이번 포스트의 주요 내용

1. for 문의 문법과 의미

2. 예제 코드 - 1부터 10까지 곱하기 (10! = 1 * 2 * ... * 10)

 

 

for 문의 문법과 의미

C언어에서 정의된 for 문의 문법은 다음과 같습니다.

 

 

for (expressionopt; expressionopt; expressionopt) statement

 

 

for 문의 괄호 안에 expressionopt가 3개 있습니다. opt는 expression이 없어도 됨을 뜻합니다. 이들과 statement가 어떻게 실행되는지를 이해해야 for 문을 활용하실 수 있습니다. for 문이 다음과 같은 실행 과정을 갖습니다.

 

1. 첫번째 expressionopt를 실행합니다. 이것은 일반적으로 반복 작업에 필요한 특정 변수의 값을 설정하는데 사용됩니다.

 

2. 두번째 expressionopt의 계산 결과가 참(true)인지 판별합니다. 참이면 3을 실행하고, 거짓이면 for문을 종료합니다. 만약 이 식이 생략되어 있다면, 그것은 참으로 간주됩니다. 그러면 반복 실행은 무한정 계속됩니다.

 

3. statement를 실행합니다. 반복되는 작업은 이곳에 작성합니다.

 

4. 3번째 expressionopt를 실행합니다. 이것은 statement와 마찬가지로 for 문을 빠져나가기 전까지는 반복 실행되며, 주로 1번째 expressionopt에서 설정된 변수의 값을 변경하는 용도로 사용됩니다.

 

5. 2로 되돌아갑니다. (2번부터 5번까지 반복 작업이 진행됩니다.)

 

위 과정을 기초로 for 문은 다음과 같이 while 문으로 바꿀 수 있습니다. 다만, while의 괄호 안에 있는 expression은 생략될 수 없다는 차이가 있습니다.

 

 

 

반응형

 

728x90

 

 

 

expressionopt
while (expression)
{
    statement
    expressionopt
}

 

 

이전 포스트에 1부터 100까지 더하는 while 문 예제가 있었습니다. 이번엔 for 문으로 작성해 보겠습니다. 먼저 while 문으로 작성했던 코드입니다.

 

while 문

 

value = 1;  // 1부터 시작할 예정
total = 0;    // 계산을 시작하기 전에 0으로 초기화



while (value <= 100)
{
    total = total + value;
    value++;
}

 

 

 

while 문의 조건식(value <= 100)에는 변수 value가 있습니다. 이 때에는 코드의 가독성(readability)을 높이기 위해 for 문에 들어가는 식(expression)들에는 value만 사용하는 것이 좋습니다. 이 권고사항 대로 for 문을 작성한다면, while 문 위에 있는 문장(식으로 구성된 문장) 중에 value 변수가 사용되는 문장이 첫번째 expressionopt에 들어갑니다. 두번째 expressionopt은 while 문의 조건식으로 사용되는 value <= 100을 그대로 사용하시면 됩니다. 세번째 expressionopt에는 while 문의 복합문 내부의 가장 마지막 문장의 식(value++)을 사용하면 됩니다. 변수 value가 사용되므로 가장 적절한 대상입니다. for 문으로 작성한 결과는 다음과 같습니다.

 

for 문 

 

total = 0;    // 계산을 시작하기 전에 0으로 초기화


for (value = 1; value <= 100; value++)
{
    total = total + value;
}

 

 

위에서 나열한 for 문의 실행과정 1번~5번을 이용하여 코드를 한줄씩 계산해 보시면 1부터 100까지 더한 값이 total이라는 변수임을 확인하실 수 있습니다.

 

 

예제 코드 - 1부터 10까지 곱하기 (10! = 1 * 2 * ... * 10)

 

Ex-For.c

#include <stdio.h>


void main()
{
    int i;
    unsigned long factorial = 1;



    /* 2의 계승부터 10의 계승까지 계산한다. */
    /* 참고: n의 계승이란 n! = 1 * ... * n. */
    /* 즉, 1부터 n까지 곱한 수를 의미한다. */
    for (i = 2; i <= 10; i++)
    {
        factorial = factorial * i;
        printf("%d! = %u\n", i, factorial);
    }
}

 

실행 결과는 다음과 같습니다.

 

 

2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800

 

 

 

 

=================================

=================================

=================================

 

 

 

출처: http://dexion.tistory.com/21

c++의 구문 규칙에서 하나의 명령문이 들어갈 자리에 블럭{}을 이용하여 여러 개의 명령문을 집어 넣을 수 있다. 표현식에서는 이러한 블럭을 대신하여 콤마 연산자가 동일한 가능을 할 수 있다. 

일반적으로 for문은 다음과 같이 세 개의 표현식을 포함한다. 

for (표현식1 ; 표현식 2 ; 표현식 3)

각 표현식이 들어갈 자리에 콤마 연산자를 이용하면 복수의 표현식을 사용할 수 있다.

//list5.9.cpp

#include <iostream>
#include <string>

int main()
{
    using namespace std;
    cout << "단어를 하나 입력하십시오: ";
    string word;
    cin >> word;
    
    char temp;
    int i, j;
    for (j = 0, i = word.size() - 1; j < i; --i, ++j)
    {
        temp = word[i];
        word[i] = word[j];
        word[j] = temp;
    }
    cout << word << "\n종료.\n";
    return 0;
}


다음은 문자열을 입력받아 문자열을 뒤집는 소스이다. 붉은색 라인과 같이 첫 번째와 세 번째 표현식이 들어갈 자리에 콤마 연산자를 이용하여 각각 두 개의 표현식이 사용될 수 있다는 것을 확인할 수 있다.

*다만 첫 번째 표현식에서 복수의 변수를 초기화할 수 없으므로 for문에 앞서 변수 i, j가 선언되었음에 유의하라.

for (int i = 0, int j = word.size() - 1; ~~~~~    [X]

 

 

=================================

=================================

=================================

 

 

 

 

 

반응형


관련글 더보기

댓글 영역