반복문 for와 while에 대한 글입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#include <stdio.h>
void main()
{
//반복문(Loop)
//for문 //정해진 조건만큼 반복하는 함수
int i = 0, j = 0; //예시로 사용한 i는 Index의 i를 사용함.
//for(초기화; 비교문; 증감문) //초기값과 비교하고 증감하는 순서, 초기값이 설정되어 있다면 조건문에서 초기값을 빼고 ;만 넣어도 됨.
for (i = 0, j = 2; i < 10; i += 3, ++j)
{
printf("%d ", i); //조건문에서 j의 값에서 걸려서 한 번만 실행되어 출력값은 i의 초기값 0만 나옴.
if (j > 3) break;
}
printf("\n");
for (i = 5; i > 0; --i)
{
printf("%d ", i);
printf("\n");
}
for (;;) //for (i = 0; i < 5; ++i) 초기값이 설정되어 있기 때문에 생략, 탈출문으로 비교문을 작성해서 생략,
{ //증감문을 {}중괄호 안에 넣을 수 있어 생략 가능
printf("%d ", i);
++i;
if (i >= 5) break; //탈출문이라고 부름(Escape)
}
printf("\n");
for (i = 2; i < 10; ++i) //반복문 두 개 이상을 중첩하여 쓰는 것을 2중 반복문 그 이상은 삼중.... 반복문 3개 이상 짜여있으면 미친 코드임.
{ //최대한 2중 반복문으로 끝내라
for (j = 1; j < 10; ++j)
{
printf("%d %d = %d\n", i, j, i * j);
}
printf("\n");
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// while문
i = 0;
printf("while: ");
while (i < 5)
{
printf("%d ", i++);
}
printf("\n");
///////////////////////////////////////////////////////////////////////////////////////////////////////
// do~while문 일단 해보고 조건이랑 부합안하면 빼라.라는 조건문
i = 3;
do
{
printf("do~while: %d\n", i);
++i;
} while (i > 5);
int s, k;
for (s = 1; s < 10; s++)
{
for (k = 1; k <= 10; k++)
{
if (k <= s)
{
printf("*");
}
}
printf("\n");
}
}
|
cs |
<for문>
반복문은 말 그대로 조건에 들어맞는다면 그 함수를 계속 반복 작업을 해야할 때 사용하는 명령문입니다. 그 중 for는 끝이 존재할 때 사용하는 반복문입니다.
for문은 for(초기화; 비교문; 증감문)로 구성되는데 초기화값과 비교문의 조건과 비교하고 증감문에 대한 작용을 하는 순서로, 변수 선언 때 초기값을 설정했다면 조건문에서 초기값을 빼고 ;만 넣어도 허용합니다. (ex) for(; 비교문; 증감문) 위의 코드는 i에겐 0, j에겐 2의 변수 대입으로 초기화하고; i가 10이하라면 i 변수값에 +=3, j는 1씩 ++로 구성되어있습니다. 여기서 if문에 j값이 3을 초과 시 break, 명령을 끝내달라고합니다. 그에 따라 j의 2값에 대한 i의 값만 허용되므로 +=로 인해 0 3 6이 출력됩니다.
<별피라미드 쌓기>
반복문 중에서도 이중 반복문에 대한 예습을 할 때 가장 많이 사용되는 코드 짜기 실습입니다.
*
**
***
**** 를 목표 출력값으로 하고 만들어보겠습니다.
#include <stdio.h>
int main()
{
int i, j; //i, j 변수 선언
for (i = 0; i < 5; ++i) //i를 0으로 초기화, i가 5미만일 시 비교문, i의 값을 1씩 올리라는 증감문
{
for (j = 0; j < i; ++j) //j를 0으로 초기화, j가 i보다 미만일 시 비교문, j의 값을 1씩 올리라는 증감문
{
printf("*"); //j의 대한 반복문이 정상 발동 시 * 을 출력
}
printf("\n"); //위의 두 반복문이 정상 발동 시 다음 줄로 이동 출력
}
}
주석에 설명을 붙여놨습니다. 하나 더 난이도 올려 실습해보겠습니다.
*
***
*****
******* 를 목표 출력값으로 설정하겠습니다. 이번 예제는 3중반복문을 사용해야하며 규칙성에 대해 다뤄야 도움이 됩니다. 풀어 해석 후, 코드 짜겠습니다.
()()()*
()()* *
()* * *
* * * * 첫 예제의 형태입니다. 여기서 출력되는 *을 늘려줘야하는데 이건 반복문 하나를 더 써서 따로 다뤄야합니다. 즉, 삼중 반복문인 것이죠.
#include <stdio.h>
int main()
{
int i, j; //i, j 변수 선언
for (i = 0; i < 5; ++i) //i를 0으로 초기화, i가 5미만일 시 비교문, i의 값을 1씩 올리라는 증감문
{
for (j = 0; j < 4 - i; ++j) //j를 0으로 초기화, j가 4 - i 보다 미만일 시 비교문, j의 값을 1씩 증가
{
printf(" "); //해당 j 반복문 발동 시 " " 빈 칸 한 칸씩 출력
}
for (j = 0; j < 2*i-1; ++j) //추가되는 * 에 대한 for문, 2*i - 1보다 미만일 시 비교문, j의 값을 1씩 증가
{
printf("*"); //해당 j 반복문 발동 시 * 을 출력
}
printf("\n"); //위의 두 반복문이 정상 발동 시 다음 줄로 이동 출력
}
}
주석 설명에서 추가하여 첫 줄은 ()빈칸 3번, 마지막줄은 ()빈칸 0번 출력하여야합니다. 때문에 빈 칸과 관련된 코드의 비교문을 j<4-i로 설정합니다. 이러면 ( ) 빈 칸은 첫 줄 4-1로 3번, 마지막 줄 4-4로 0번 출력됩니다. 그리고 *은 1, 3, 5, 7의 규칙성을 가지고 있습니다. 때문에 2i-1로 설정하면 첫 줄 2-1로 1번, 마지막 줄 8-1로 7번 출력됩니다.
<while문>
while문과 for문의 차이는 어떤 것에 중점을 뒀느냐입니다. for문은 반복횟수가 정해진 경우, while문은 무한루프나 특정 조건에 만족할 때까지 반복해야하는 경우입니다.
<do while문>
do while문은 while문과 조건에 따라 반복을 계속할지를 결정할 때 사용하는 것은 동일하지만, 무조건 중괄호 { }는 한 번 실행하고 조건을 검사하여 반복 결정합니다.
<break>
위의 설명된 반복문들은 잘못했다간 무한 반복 실행될 수 있습니다. 그래서 특정 조건에는 break문을 사용하여 함수를 종료시켜야합니다.
끝
'프로그래밍 C언어' 카테고리의 다른 글
포인터 (pointer) (0) | 2024.08.13 |
---|---|
배열 (Array) (0) | 2024.08.12 |
분기문(Branch)과 조건문(Condition) (0) | 2024.08.09 |
연산자(Operators)와 형변환(Type Casting) (0) | 2024.08.09 |
변수(Variable)와 상수(Constant) (0) | 2024.08.08 |