보통 경우에 따라 몇번 반복할지 모를 때가 있다.
이런 경우에는 반복문을 무한이 계속하면서 반복문 안에서 끝나는 조건을 체크하여 조건이 맞으면 빠져나오게 한다.
무한루프
- 반복되는 반복문을 의미.
- 보통 while문과 for문으로 만든다.
while문
- 만드는 무한루프는 반복조건이 항상 true로 만들어 while(true) { } 의 형태가 된다.
for문
- for( ; ; )의 형태로 무한루프를 만들 수 있다.
break문
- 루프를 빠져나올 때 사용.
예제 코드
첫 날 1000원을 저금하고 매일 전 날의 두 배씩을 저금한다고 하면 몇일 만에 100만원을 저금 할 수 있는지 계산하는 프로그램 만들기
using static System.Console;//Console단어를 생략(코드길이줄어둠)
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//총 저금액 sum을 정의하고 0으로 초기화한다.
int sum = 0;
//days는 며칠째인지를 표시하는 변수로
//1로 초기화하고 반복될 때마다 1씩 증가한다.
int days = 1;
//money는 저금액을 의미하는 변수로
//첫날 1000원에서 반복될 때마다 두 배씩 증가한다.
int money = 1000;
//while(true)는 조건식이
//항상 true이므로 무한이 반복되는 루프이다.
while(true)
{
//sum에 money를 더해준다.
sum += money;
//며칠째인지(days)와 그날의 저금액(money)과
//총 저금액(sum)을 출력한다.
WriteLine("{0,2}일차 : {1,8:C},
sum = {2,11:C}", days, money, sum);
//총 저금액이 1000000보다 큰지 비교하여 더크면
if (sum >= 1000000)
{
//break문을 사용하여 while문을 빠져나간다.
break;
}
//반복될때 마다 days를 하나 증가시키고
days++;
//money는 2배로 만든다.
money *= 2;
}
//break에 의해 while문이 끝나면 며칠만에
//총 저금액이 얼마인지 출력한다.
WriteLine("{0}일차에 {1:###,###}원이 됩니다.", days, sum);
//while문과 같은 동작을 하는 for문으로 만든 반복문이다.
//sum,days,money를 초기화하고 반복할 때마다
//days++,money *= 2로 바꾼다.
for(sum = 0, days = 1, money = 1000; ; days++, money *= 2)
{
sum += money;
WriteLine("{0,2}일차 : {1,8:C},
sum = { 2, 11:C}", days, money, sum);
//while문과 같이 sum이 1백만보다 크면
if (sum >= 1000000)
{
//break로 for문을 빠져나온다.
break;
}
}
//며칠 만에 총 저금액이 1백만원이 넘는지,
//그리고 그게 얼마인지 출력한다.
WriteLine("{0}일차에 {1:###,###}원이 됩니다.", days, sum);
}
}
}
결과
1일차 : ₩1,000, sum = ₩1,000
2일차 : ₩2,000, sum = ₩3,000
3일차 : ₩4,000, sum = ₩7,000
4일차 : ₩8,000, sum = ₩15,000
5일차 : ₩16,000, sum = ₩31,000
6일차 : ₩32,000, sum = ₩63,000
7일차 : ₩64,000, sum = ₩127,000
8일차 : ₩128,000, sum = ₩255,000
9일차 : ₩256,000, sum = ₩511,000
10일차 : ₩512,000, sum = ₩1,023,000
10일차에 1,023,000원이 됩니다.
'C# > 문법 정리' 카테고리의 다른 글
C# - if~else 조건문 (0) | 2024.07.28 |
---|---|
C# - object 타입과 박싱(Boxing),언박싱(Unboxing) (0) | 2024.07.27 |
C# - Nullable형 (0) | 2024.07.19 |
C# - 변수의 초기화와 default (0) | 2024.07.18 |
C# - Null 조건 연산자(Conditional Operator, ?) (0) | 2024.07.17 |