지지나

C# - 제어처리 3. for문, while문, continue 본문

기획자의 프로그래밍 걸음마/C#

C# - 제어처리 3. for문, while문, continue

Gygyna 2020. 6. 24. 10:07

지난번에 봤던 제어문은 A조건을 만족하면 A를 수행하고, 그렇지 않으면 B를 수행하는 것을 봤다면

 

이번에는 어떠한 내용을 만족할때까지 작업을 반복처리하는 것을 볼 겁니당. 

 

[for문]

for(초기값; 조건식; 반복식)

반복실행할 코드;

제어변수의 초기값부터 최종값을 만족할때까지 작업을 반복 실행

 

어떤 건지 알았으면 바로 해 본다..ㅎ

나는 이 For 문이 적금 만기 상품일때 금액 계산하기 좋을 거 같다고 생각해서 그렇게 한번 만들어 보기로 함. 

 

주의! for문 식 옆에는 새미콜론;이 없다. 지난번에 한 실수 또 할뻔!

 

 

for 문의 경우 조건에 만족할때까지 그 작업을 반복 실행한다고 했으니, 이 경우 1부터 52까지 숫자만 나열했다. 

 

 

하지만 내가 보고 싶은 것은 내가 일주일에 1만원씩 적금한다고 했을때, 적금 만기인 주에 얼마일지, 한 줄로 보고 싶었다! 

 

사용자가 N주차 적금의 값(m)을 쓰면(Console.Readline에), int로 입력된 값을 숫자(n)로 변환한다.  

int sum = 0; 으로 sum이라는 변수는 초기값이 0입니다. 라고 먼저 해 준다!

for 문에서 " int a라는 변수는 1이라고 만들고, a가 n보다 작거나 같을때까지, 명령을 수행하되 a를 1씩 증가시킨다 "

라고 작성해주었다. 

그리고 sum+=a; 로 'a만큼 누적해서 더해라' 라고 썼다. 

 

1+2+3=6 으로 결과가 잘 나온다

 

[while문]

while(조건식)

반복실행할 코드;

조건식이 참인  동안 작업영역을 반복수행한다. (값은 자동증가 되지 않음, for문과의 차이!)

 

쉬운 것부터 해보면,

a=10 이라고 하고 while문에 a>0일때 a를 하나씩 줄여라! 라고 반복실행할 코드를 주었다면,

10부터 1까지 차례로 작아지면서 반복 실행이 됩니다. 

 

 

while (a>0) 에 블럭{ }을 열어서 while이 참인 동안 실행할 영역 표기를 해 줍니다. 

이번엔 10에서 a를 2만큼 계속 뺐을때, a가 양수라고 조건을 주었으니 10, 8, 6, 4, 2 라고 차례로 표기가 됩니다. 

 

 

같은 맥락으로 아래도 한 번 해 보았어요. (a가 파란색, sum이 빨간색)

++a는 먼저 a 증가후 출력이니 1에서 sum은 0에서 a만큼 누적시키니 0+1=1

a가 100보다 작을때까지 수행이니 ++a 증가해서 2, sum은 1+2=3

a가 100보다 작을때까지 수행이니 ++a 증가해서 3, sum은 3+3=6

a가 100보다 작을때까지 수행이니 ++a 증가해서 4, sum은 6+4=10 ...

 

이번엔 while 문 더 응용을 해볼까요?

 

저는 위의 것을 해 보고, 옛날 동화에 임금님이 현명한 여인에게 "상으로 무엇을 원하느냐!" 하였더니, 그 여인이 하루에 쌀 한 톨씩 더 달라고 청하자 임금님이 '별 것 아니구나~' 하고 흔쾌히 승낙했다가

나중엔 그 값이 커져 울상이었다는 전래 동화가 떠올랐어요ㅋㅋㅋㅋ

 

이렇게 만들어 보았습니다ㅎ..

 

[do while문]

do

{

반복실행할 코드;

}

while(조건식);

먼저 반복실행을 하고, 조건식을 평가하는 구조로 최소 한 번은 실행이 된다! 

 

아래는 해 본 건데, 한번 보면 알 내용입니당.

do while문은 최소 한 번은 조건을 실행한다!

 

좀 더 심화해서 예제를 해볼까요? 

제가 10보다 큰 값을 입력하지 않는한 계속 됩니다. 

 

 

이번에는 프로그램이 종료될 때 합을 구해 보았어요. 

 

아래도 같은 경우인데, 합 18에서 마지막 넣은 10이었던 값을 제외한 8만 출력되게 해 보았습니다. 

윈도우즈 폼으로도 해 볼까요? 

텍스트 상자, 레이블, 버튼 다 불러오고 아래처럼 만들어 주었어요!

 

 

결과확인 버튼을 더블클릭해서 이벤트 페이지로 갑니다.

 

lstart.text를 꼭 입력해주자..! 제발 ㅠㅠ 

 

시작a 와 끝b에 값을 입력하면 그 합을 구하여라! 라고 만들었습니다. 

 

 

이제 좀 익숙해 지셨나요?

 

[break 와 continue]

break - 현재 실행중인 반복문이나 switch문을 중단하려고 할 때

{}밖으로 나감

 

continue - 현재 실행중인 반복문에서 벗어나 다음 작업을 수행 (재실행을 뜻합니다)

{} 밖으로 나가지는 않음

 

 

아래를 보면, i를 나눈 나머지가 0, 즉 짝수인 경우 그 값은 버리고, 다시 루프에서 다음 작업을 한다는 것입니다.

 

위의 것과 정반대인 짝수의 합은 얼마? 를 구해보았어요! 2+4+6+8 의 합 입니다. 

이 경우 조건을 만족하는 홀수는 continue로 버리는 것이죠! 

 

Comments