개발 초보 2022. 6. 23. 19:46

지난 글 : [알고리즘/Do it 알고리즘] - 알고리즘이란

 

1부터 n까지 정수의 합 구하기

n값으로 2를 입력하면 1과 2의 합을 구하고 3을 입력하면 1, 2와 3의 합을 구한다. 즉 1 + 2 + ... + n을 구하는 알고리즘이다.

출력 결과

while문 반복

어떤 조건이 성립하는 동안 처리를 반복해 실행하는 것은 반복(repetition)이라 하며 루프(loop)라 부른다. 이때 while문은 실행 전에 반복을 계속할지 판단하는데, 이런 구조를 '사전판단반복'이라 한다. 제어식의 평갓값이 true면 프로그램 명령문을 반복한다. 아래는 while문의 형식이다. 여기서 반복의 대상이 되는 '명령문'을 문법적으로는 '루프 부분'이라 한다.

while (제어식) {
	명령문
}

 

for문 반복

하나의 변수를 사용하는 반복문은 while문 보다 for문을 사용하는 것이 더 효율적이다.

출력 결과

아래는 for문의 형식이다.

for(초기화 부분; 제어식; 업데이트 부분) {
	명령문
}

초기화 부분은 for문을 실행하기 전 한 번만 실행한다, 제어식을 평가한 값이 true면 for문의 명령문을 반복한다. 명령문을 실행한 후 업데이트 부분을 실행한다. 위 프로그램의 for문은 카운터용 변수 i값을 1, 2, 3, ... 으로 1부터 n까지 1씩 증가시키며 루프 본문 sum += i;를 실행한다. 

 

양수만 입력받아 1부터 n까지의 합 구하기

만약 위 프로그램에서 음수인 -5를 입력하면 아래처럼 출력된다.

1부터 -5까지의 합은 0입니다.

이 출력 결과는 수학에서 정확한 표현이 아니다. 원래 이 프로그램은 n값으로 양수만 입력받게 해야한다. 아래처럼 수정해보자.

출력 결과

프로그램을 실행하고 0이나 음숫값을 입력하면 다시 'n값:'이 출력되며 사용자에게 새로 입력할 것을 요구한다. 아래는 do while문 형식이다.

do while문(제어식);		//while문이나 for문과 다리 do while문의 끝에 세미콜른(;)을 붙인다.

do while문은 일단 루프 본문을 한 번 실행한 후 계속 반복할 것인지를 판단하는 사후판단반복문이다. while문처럼 ( ) 안의 제어식을 평가한 값이 true면 명령문이 반복된다.

 

반복 과정에서 조건 판단하기 1

아래는 1부터 n까지의 합과 그 값을 구하는 과정을 출력하도록 수정한 프로그램이다.

출력 결과

 

반복 과정에서 조건 판단하기 2

이 프로그램은 지정한 개수의 기호를 중간에 줄 바꿈 없이 연속해서 보여 주는 프로그램이다. +, - 기호를 번갈아 출력한다.

 

출력 결과

 

반복 과정에서 조건 판단하기 3

아래는 *를 n개 출력하되 w개마다 줄 바꿈을 하는 프로그램이다.

출력 결과

다중 루프 다루기

지금껏 다룬 프로그램은 단순한 반복을 수행했다. 하지만 반복 안에서 다시 반복할 수도 있다. 이런 반복을 루프가 중첩되는 수준에 따라 '이중 루프', '삼중 루프'라고 한다.

 

곱셈표

이중 루프를 사용해 구구단 곱셈표를 출력하는 프로그램이다.

출력 결과

 

참고 서적 :