for
while
do while
#include <stdio.h>
int main(void) {
// printf("Hello World\n");
// ++ 뿔뿔
int a = 10;
printf("a는 %d\n", a);
a++;
printf("a는 %d\n", a);
printf("===\n");
int b = 20;
// 먼저 더하기 1을 한 다음에 명령문 실행
// b = b + 1
printf("b는 %d\n", ++b);
// 먼저 명령문을 수행한 다음에 명령문 실행
printf("b는 %d\n", b++);
// b = b + 1
printf("===\n");
int i = 1;
printf("Hello World %d\n", i++); // i = 1
printf("Hello World %d\n", i++); // i = 2
printf("Hello World %d\n", i++); // i = 3
printf("Hello World %d\n", i++); // i = 4
printf("Hello World %d\n", i++); // i = 5
printf("Hello World %d\n", i++); // i = 6
printf("Hello World %d\n", i++); // i = 7
printf("Hello World %d\n", i++); // i = 8
printf("Hello World %d\n", i++); // i = 9
printf("Hello World %d\n", i++); // i = 10
printf("i는 %d\n", i); // i = 11
printf("\n===\n\n");
printf("Hello World %d\n", i--); // i = 11
printf("Hello World %d\n", i--); // i = 10
printf("Hello World %d\n", i--); // i = 9
printf("Hello World %d\n", i--); // i = 8
printf("Hello World %d\n", i--); // i = 7
printf("Hello World %d\n", i--); // i = 6
printf("Hello World %d\n", i--); // i = 5
printf("Hello World %d\n", i--); // i = 4
printf("Hello World %d\n", i--); // i = 3
printf("Hello World %d\n", i--); // i = 2
printf("Hello World %d\n", i--); // i = 1
printf("i는 %d\n", i); // i = 0
return 0;
}
++
연산 지원하지 않음.for
¶for
반복문 형식
for (선언; 조건; 증감)
{
명령문
}
#include <stdio.h>
int main(void) {
// for 반복문
// 예제: 증가
for (int i = 1; i <= 10; i++)
{
printf("Hello World %d\n", i);
}
printf("\n===\n\n");
// 예제: 감소
for (int i = 10; i >= 0; i--)
{
printf("Hello World %d\n", i);
}
return 0;
}
파이썬의 for
반복문은 형식이 많이 다름:
for 반복변수 in 이터레이터:
명령문
이터레이터: 반복변수의 값이 지정된 크기만큼씩 변할 수있도록 도와주는 기능을 가진 자료형
range
, 튜플, 사전 자료형 등등반복변수는 미리 선언할 필요 없음.
for
반복문과 range
함수의 조합이 매우 유용함
for i in range(1, 11):
print("Hello World %d" % i)
for i in [1, 3, 5, 7, 9]:
print("Hello World %d" % i)
for i in range(1, 11, 2):
print("Hello World %d" % i)
for i in range(10, 0, -1):
print("Hello World %d" % i)
for i in range(10, 0, -2):
print("Hello World %d" % i)
while
¶while
반복문 형식
while (조건)
{
명령문
}
#include <stdio.h>
int main(void) {
// while 반복문
int i = 1;
while (i <= 10)
{
// printf("Hello World %d\n", i);
// i++;
printf("Hello World %d\n", i++);
}
return 0;
}
while
반복문 형식은 C 언어의 경우와 거의 동일함.i = 1
while (i <= 10):
print("Hello World %d" % i)
i += 1
i = 1
while (i <= 10):
print("Hello World %d" % i)
i += 2
print()
함수는 다양한 자료형의 인자 여러 개를 받을 수 있음.i = 1
while (i <= 10):
print("Hello World", i)
i += 2
do while
¶do while
반복문 형식
do
{
명령문
} while (조건);
#include <stdio.h>
int main(void) {
// do while 반복문
int i = 1;
do
{
printf("Hello World %d\n", i++);
} while (i <= 10);
return 0;
}
do while
반복문의 사용 가능하면 사용하지 말 것.while
반복문을 이용하여 동일한 기능 구현 가능.파이썬은 do ... while ...
반복문을 지원하지 않음. 하지만 아래 형식 사용 가능
while True
명령문
if not 조건식:
break
위 파이썬 코드는 아래 C 코드와 동일한 기능 수행
do
{
명령문
} while 조건식;
for
반복문 중첩해서 사용하기#include <stdio.h>
int main(void) {
// 2중 반복문
for (int i = 1; i <= 3; i++)
{
printf("첫재 반복문: %d\n", i);
for (int j = 1; j <= 5; j++)
{
printf(" 둘째 반복문: %d\n", j);
}
}
return 0;
}
#include <stdio.h>
int main(void) {
// 구구단
for (int i = 2; i <= 9; i++)
{
printf("%d단:\n", i);
for (int j = 1; j <= 9; j++)
{
printf(" %d x %d = %d\n", i, j, i*j);
}
}
return 0;
}
for
반복문으로 구구단 구현하기 예제는 다음과 같음.f"..."
은 문자열을 지정된 서식에 맞추어 출력되도록 도와주는 기법임for i in range(2, 10):
print(f"{i}단")
for j in range(1, 10):
print(f" {i}x{j}={i*j}")
*
**
***
****
*****
#include <stdio.h>
int main(void) {
// 별 피라미드 출력하기
for (int i = 0; i<5; i++)
{
for (int j = 0; j <= i; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
print()
함수는 줄바꿈(\n
)을 기본으로 실행함.
하지만 end=''
와 같이 옵션인자의 속성을 변경하면 줄바꿈을 해제할 수 있음.for i in range(0, 5):
for j in range(0, i+1):
print("*", end='') # 동일한 i 값에 대해서는 줄바꿈 해제
print('') # i 값이 바뀔때는 줄바꿈을 해주어야 함.
*
**
***
****
*****
#include <stdio.h>
int main(void) {
for (int i = 0; i<5; i++)
{
for (int j = i; j < 5-1; j++)
{
// 스페이스 추가
printf(" ");
}
for (int k = 0; k <= i; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
for i in range(0, 5):
for j in range(i, 4):
# 스페이스 추가
print(" ", end='')
for k in range(0, i+1):
print("*", end='')
print("")
print("*"*4)
for i in range(0, 5):
# 스페이스 추가
print(" "* (4-i), end='')
# 별 찍기
print("*" * (i+1), end='')
# 줄바꿈
print("")
*
***
*****
*******
*********
#include <stdio.h>
int main(void) {
int floor;
printf("몇 층으로 쌓겠느냐? ");
scanf("%d", &floor);
for (int i=0; i < floor; i++)
{
for (int j = i; j < floor-1; j++)
{
// 스페이스 추가
printf(" ");
}
for (int k = 0; k < i*2 + 1; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
floor = int(input("몇 층으로 쌓겠느냐? "))
for i in range(0, floor):
for j in range(i, floor-1):
# 스페이스 추가
print(" ", end='')
for k in range(0, i*2+1):
print("*",end='')
print("")
floor = int(input("몇 층으로 쌓겠느냐? "))
for i in range(0, floor):
# 스페이스 추가
print(" "* (floor-i), end='')
# 별 찍기
print("*" * (i*2+1), end='')
# 줄바꿈
print("")