반응형
반복문
- for 문
- while 문
- do - while문
- for each문
for 문
- for( 초기화 ; 반복 실행할 조건 ; 반복 실행 후 후처리) 의 형태로 사용된다.
- 초기화 다음, 그리고 조건 다음에도 세미콜론(;)이 붙지만, 마지막 후처리 이후에는 세미콜론이 붙이지 않는다!
- " for -> ~하는 동안 이라는 말로 해석해서 마침표를 찍지 않으니, 세미콜론(;)을 붙이지 않는다" 라는 느낌으로 외운다.
for(int i = 0; i < 10; i ++)
{
//반복 실행될 내용.
printf("%d/n", i);
}
// 결과 값 : 1 2 3 4 5 6 7 8 9
- [ int i = 0; ] : 초기화 부분. 반복문 실행 전에 최초 1회만 실행된다.
- [ i < 10; ] : for문의 조건. 이 조건이 true일 경우 반복문이 계속해서 실행된다.
- [ i ++ ] : for문의 후처리 부분. 반복 실행될 내용이 실행된 후에 처리되는 부분이다. 보통 변수의 증감식을 넣는다.
※ 해당 for 문 안 초기화 부분에 선언된 int i 는 for 문 밖으로 나와서 사용될 수 없다. 현재 for문에서만 사용될 수 있도록 선언된 변수이기에 따로 사용하기 위해서는 for 문 밖에서 선언하고 사용해야 한다. 또한 밖에서 한번 선언한 변수를 for문 안에서 다시금 선언될 수 없다.
for(int i = 0; i < 10; i ++)
{
printf("%d/n", i);
}
i = 10; // => XX 오류가 생긴다. 위의 선언되지 않은 변수를 사용하는 것과 동일하다.
---------------------------------------
int i = 0;
for(i = 0; i < 10; i ++)
{
printf("%d/n", i);
}
i = 12; // => Ok! 다음과 같은 경우에는 사용할 수 있다.
---------------------------------------
int i = 0;
for(int i = 0; i < 10; i ++) // => XX. int i 가 아닌 그저 i 만 사용해야 된다. 오류발생
{
printf("%d/n", i);
}
# Tip
- VSCode를 이용할 때, for 를 누른 다음 Tab키를 누르면 자동으로 for문의 형태를 완성시켜 준다.
코드를 작성하는 시간도 줄일 뿐더러 오류가 발생할 수 있는 경우의 수를 줄여준다!
# 0부터 n까지의 합 구하기
- 먼저 합을 구해서 더할 변수를 하나가 있어야 하고, 0부터 n까지 숫자가 변할 변수 i 가 있어야 한다.
int sum = 0;
// sum은 for문 밖에 선언해야 한다. for문 안에 선언하게 되면 매번 새로 선언하게 되어서 항상 0이 된다.
for (int i = 0; i < 10; i++)
{
sum = sum + i;
}
printf("0부터 9까지의 합 출력 : %d\n, sum);
# 이중 for문을 사용해서 구구단 만들기
- for 문 안에 또 다시 for 문을 넣은 이중 for문을 구현할 수 있다.
- 바깥에 있는 for문이 한번 실행되는 동안 안에 있는 for문을 끝까지 반복을 수행한다.
for(int i = 2; i < 10; i++) //기본적인 구구단이므로 2단 ~ 9단 까지.
{
printf("%d단\n", i);
//2단에 곱하는 숫자를 for문으로 반복한다.
for(int j = 1; j <10; j++)
{
int nResult = i * j;
printf("%d x %d = %d\n", i, j, nResult);
}
printf("\n"); // 단 하나가 완성되었으니 줄바꿈을 해주고, 다시 위로 돌아가 반복한다.
}
/*
결과값 :
2단
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
...
3단
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
...
*/
while문
- while( 조건 ) { 반복할 내용 } 의 형태를 가지고 있다.
- 조건이 true일 때 계속해서 반복(Loop)해서 명령을 실행하고, 조건이 false가 될 때, while문을 빠져나온다.
- for문에서 후처리에 해당되는 내용 또한 반복할 내용 맨 마지막에 적어주어야 한다.
int i = 0; // while의 조건문의 쓰일 변수이기에 미리 while문에 들어가기 전에 선언과 초기화를 진행한다.
while(i < 9)
{
printf("%d\n", i);
i++; //for문에서 후처리에 해당되는 부분을 while문 내용 맨 마지막에 적어준다!
//후처리 되는 부분이 없을 경우 무한 루프(반복)에 갇히기 때문에 빠져나올 수 있도록 만들어야한다.
}
#이중 while문을 사용해서 구구단 만들기
- 위의 이중 for문으로 만들었던 구구단을 while문으로도 만들 수 있다. 똑같이 이중 while문을 사용해서 만들 수 있다.
// while문으로 구구단 만들기
int i = 1;
while(i < 10)
{
printf("%d\n단", i);
int j = 1;
while(j < 10)
{
int nResult = i * j;
printf("%d x %d = %d\n", i, j, nResult);
j++;
}
i++;
}
do-while문
- do { 반복될 내용 } while(조건) ; 의 형태로 사용된다.
- 다른 반복문과 다르게 while(조건) 뒤에 세미콜론(;)이 붙는 것이 특징! Tip에 나왔던 Tab를 눌러서 do-while 자동 완성을 사용하면 좀 더 실수를 줄일 수 있다.
- 또한 while 속 조건의 값이 false로 나올지라도 적어도 최초 1번은 do 에 있는 내용이 실행되게 된다.
do
{
//반복할 내용
printf("a"); // 적어도 a는 1번은 출력된다.
}while(false);
// 결과값 : a
for-each문
- for each ( 자료형 var ( 순차적으로 접근 할 리스트의 요소 이름) in 리스트) 의 형태를 가진다.
- 리스트 안에 있는 내용을 순차적으로 한 개씩 꺼내와서 var 라는 해당 변수에 넣어서 사용하는 반복문이다.
- 아직 배우지 않았지만 나중에 배열이나 리스트를 배우게 되면 사용할 수 있는 반복문.
- 단점은 리스트에 있는 내용을 꺼내와 사용하다보니 변수(var)의 내용을 바꿀 수 없다.
- for-each도 반복문 중 하나이다! 라는 사실만 알아도 충분. 특별히 많이 사용되지 않는다.
/*
int List[] = [1,2,3];
for each (int Index in List)
{
printf("%d\n", Index);
}
결과 값 : 1, 2, 3
*/
지역변수, 전역변수
- 지역변수 : 지정된 지역에서만 사용될 수 있는 변수. for문 안이면 for문 안, main 함수 안이면 main 함수 안, 선언된 지역 내에서만 사용할 수 있는 변수.
- 전역변수 : main() 함수 밖에 선언된 변수. 어디에서나 사용할 수 있는 변수가 된다. 전 지역에서 사용할 수 있는 변수.
#include <iostram>
int Index = 5; // 이 코드 전체 내에서 살아있는 전역변수. 어디에든 사용 가능.
int main()
{
int sum = 0; // main 함수 내에서만 살아있는 지역 변수.
for(int i = 0; i < 10; i++)
{
sum += i;
}
printf("sum : %d\n, Index : %d", sum, Index); //오류 X. Index 사용 가능.
}
int GetIndex()
{
printf("%d\n", Index); //오류 X 사용가능!
printf("%d\n", sum); // 오류 발생! sum은 선언되지 않은 것으로 간주. sum은 main 함수에서만 살아있다.
}
728x90