본문으로 바로가기
반응형

저번 주에는 나눗셈과 제어문에 대해서 공부해봤는데요, 오늘은 반복문에 대해서 알아보겠습니다.

 

반복문은 ~동안에 라는 뜻을 가지고 있고, C#에서는 4가지 반복문을 제공합니다.

 

우선 while문을 알아보겠습니다.

while( )

{
}

보통 반복문은 { }에 있는 구문을 반복하는 구문입니다.

근데 계속 반복하면 구문 밑으로 내려가지 못하니까 ( )에 종료 조건/반복 조건을 게시해줘야 합니다.

참고로 ( )에는 참/거짓인 논리 연산이 들어가고, 일종의 신호등 역할을 한다고 보면 됩니다.

만약 고정된 값을 게시하면 무한 반복되기 때문에 변수가 들어가는 것이 포인트입니다.

 

예시를 들어보겠습니다.

무한반복만하고 있을뿐인데 CPU 이용률이 21%가 된 것을 알 수 있다. 

 우리가 간단한 프로그램으로 시작해서 21%만 이용하게 됐는데, 나중에 코드가 길거나 프로그램 여러 개를 돌릴 때 CPU 이용률이 훨씬 증가할 수 있기 때문에 무한반복 프로그램은 되도록 하지 않는 것이 좋습니다.

 

 

다음은 for문을 알아보겠습니다.

 

for문은 변수 선언, 조건, --icount가 전부 들어있는 반복문입니다,

for(ⓐ ;  ; ⓒ )

{

콘솔 코드

}

iCount가 5부터 시작해서 0보다 작을때까지 iCount - 1이되고, 반복할때마다 TEST가 출력되는 것을 확인할 수 있다.

 

 

 

실습 1. for문을 이용해서 구구단 5단을 한번 만들어보자.

 사실 구구단 5단을 만드는 가장 쉬운 방법은 전부다 직접 쳐서 출력하는 것입니다.

노가다식
for문을 이용해서 위의 코드에 비해 줄이 절약된 모습

 5단만 했을 때는 9줄만 쓰면 되지만 1단부터 9단까지 쓰라고 했을 때 노가다식으로 코드를 짜게 되면 엄청 많이 코드를 적어야겠죠. 그래서 반복문을 통해 아주 간단하게 구구단 프로그램을 만들 수 있습니다.

 

 

이번엔 숫자를 입력하면 그 숫자의 구구단(1~9까지)을 출력하는 프로그램을 만들어 봅시다.

7을 입력하면 7단이 출력되는 것을 확인할 수 있다

ReadLine();으로 입력받은 값이 구구단으로 출력할 수 있게 짜보았는데 이번엔 1단부터 9단까지 출력하는 코드를 짜 보겠습니다.

 

for문 중첩을 사용하여 비교적 간단하게 구현할 수 있다

변수를 두 개로 사용하면서 for문을 두 번 쓰는 것이 '중첩'이라고 하는데, 두 개의 변수가 변할 때 사용하면 반복문으로 비교적 간단하게 코드를 짤 수 있습니다.

 

참고로 for문, if문, else if, while문은 모든 언어가 소괄호, 중괄호로 쓰이는 구조가 다 똑같기 때문에 자바 같은 다른 언어에서도 똑같이 사용할 수 있습니다.

 

do while문 : for문, if문과 다르게 수행을 미리하고 조건을 따지는 특징이 있다.( ( ) 뒤에 세미콜론(;)이 오는 것을 기억하자)

do

{

} while( );

 

for, if, else if, while문은 모든 언어가 소괄호, 중괄호로 쓰는 구조가 다 똑같기 때문에 다른 언어에서도 공부할 시간이 줄어든다.

 

 

점프문

break문은 swich에서 사용했는데 반복문에서도 사용할 수 있습니다. 디버 그중에 break를 만나면 그 구문을 탈출합니다.

 

continue문

break문이 루프를 벗어나는 반면, continue는 이후의 반복 구문 실행을 생략하고 곧바로 조건식 평가로 실행을 옮기면서 반복을 계속한다는 차이가 있습니다.

break문 : 이제 더 이상 반복하지 말고, 바로 for문이나 while문을 끝내라.

continue문 : for문이나 while문의 { } 안에서 continue를 만나는 순간 continue문 아래의 실행해야 하는 문장들을 건너뛰고, 다음 반복을 시작

실제로 2, 9, 20, 35, 54, 77, 104 ... 등의 숫자가 출력되지만, continue를 만나서 sum += n;을 건너뛴것을 확인 할 수 있다

 

goto문

원하는 곳으로 보낼 수 있는 구문이지만 대신 표시를 해놔야하는데 이 표시를 라벨이라고합니다.(switch문의 case를 라벨이라고도하죠)

 

goto문은 강제로 우리가 원하는 곳에 보내주어서 편하지만 프로그램이 뒤죽박죽이 되어서 어떻게 돌아가는지 분석할 수 없기때문에 실제로 사용은 하지않는 코드입니다.

 

 

FlowChart(순서도)

프로그램의 순서를 짤때 알고리즘을 알고 있는 것이 정말 중요합니다. 그래서 그림을 이용해서 순서도를 그리는것이 회사나 다른 프로그램을 짤때 많은 도움이 된다고합니다.

출처 : http://tcpschool.com/codingmath/flowchart

메서드

C나 C++에서는 함수라고 부르는 단어입니다. 이때 프로그래밍할때 제일 처음 실행하는 프로그램을 Entry Point(진입 점)이라고 합니다. 여러가지 메서드 중에 진입점이 가장 빨리 실행되는 것이죠.

 

지금까지 제가 코드 캡처를 할때 stastatic void Main(string[] args) 부분을 생략했는데 이제 부터 캡처하는 범위를 더 넓혀서 메서드 부분까지 다뤄보겠습니다.

 

 

우선, static void Main을 static void test로 바꾼다음에 Main에서는 test();로 간단하게 출력해보는 코드입니다.

 

 

그 다음, test1, test2, test3, test4의 메서드를 따로 만들어서 Main에는 간단하게 숫자만 대입해서 저장된 값이 출력되는지 확인해보는 코드입니다.

 

test3, test4에 int형으로 변수를 만드는 것에 주목해보자

 

 

위의 코드는 static void 이름()으로 메서드를 저장했습니다.

void는 비어있다는 뜻이고,

 

 

밑의 코드의 test5가 있는 코드처럼 void를 int형으로 바꾸게되면 return을 따로 기재해줘야합니다. void형에는 return이 생략되있어서 따로 기재할 필요는 없습니다. return에 호출할 값을 적어줘야하는데 이때 호출할 값을 리턴값이라고 합니다. (return을 적어주지 않으면 빨간줄이 그어져서 디버그할때 오류가 발생하게됩니다.)

 

실습 2. 메서드를 작성해서 사칙연산의 결과를 출력해보자

Add +

Sub -

Mul *

Div /

반환값은 정수로 받는 메서드를 작성

 

 

 

실습 2-1 입력받았을때 입력받은 값을 사칙연산을 해줘서 출력해주는 코드

10, 20을 입력했을때 사칙연산후에 출력된다

 

나머지 메서드 강의는 강사님께서 다음에 알려주신다고 하셨으므로 오늘은 패스하겠습니다..

반복문 실습으로 실수를 구하는 예제가있는데 기타 실습에 올리도록 하겠습니다.

 

오늘 포스팅은 여기까지!

반응형