5단 분석법
순서 | 분석 | 단어 | 내용 |
1 | 일반 명사 | 반복 | 같은 행위를 되풀이함 |
문 | 문장의 문 | ||
반복문 | 같은 행위를 되풀이하는 문장 | ||
2 | 고유 명사 | 반복문 | 특정 부분의 코드가 일정횟수만큼 반복하여 실행될 수 있도록 하는 구문 |
3 | 사용 이유 | 반복문 | - 반복동작 코드의 중복을 방지
- 많은 양의 데이터를 처리하기 쉽게 하려고
- 사람의 실수를 줄이기 위해서 |
4 | 사용 방법 | 반복문 | for, while등의 문법을 사용해 지정된 작업을 반복적으로 실행 |
5 | 다른 기술과의 비교 | 반복문 | - |
반복문의 정의
반복문은 ‘반복’과 문장의 ‘문’이 합쳐진 단어입니다.
일반 명사
반복 | 같은 행위를 되풀이함 |
문 | 문장의 문 |
반복문 | 같은 행위를 되풀이하는 문장 |
반복의 일반 명사는 “같은 행위를 되풀이함” 입니다.
문의 일반 명사는 “문장의 문” 입니다.
즉, 반복문의 일반 명사는 “같은 행위를 되풀이하는 문장” 입니다.
시계에서 초침이 움직이는 것도 같은 행위가 반복되는 것이고, 생산 기계가 같은 물건을 계속 생산하는 행위도 반복되는 것입니다.
계단을 오르는 행위도 반복문에 예시라고 할 수 있습니다.
집이나 학교를 가기 위해서 계단을 오를 때, 한 계단씩 발을 옮겨 위로 올라갑니다.
여기서, “한 계단 올라가기”는 반복되는 동작이며, “마지막 계단에 도달할 때까지”가 반복을 멈추는 조건이 됩니다.
그렇다면, 반복문의 고유 명사는 무엇일까요?
고유 명사
반복문 | 특정 부분의 코드가 일정횟수만큼 반복하여 실행될 수 있도록 하는 구문 |
반복문의 고유 명사는 “특정 부분의 코드가 일정횟수만큼 반복하여 실행될 수 있도록 하는 구문” 입니다.
100개의 변수를 선언하고, 각각의 변수마다 1부터 100의 값을 할당하려고 합니다.
이때 100줄의 코드를 작성하는 것이 아니라, 변수를 선언하고 할당하는 한 줄의 코드가 반복하여 실행될 수 있도록 한다면 그 코드가 반복문이 된다고 볼 수 있습니다.
사용해야하는 이유
반복문 | - 반복동작 코드의 중복을 방지
- 많은 양의 데이터를 처리하기 쉽게 하려고
- 사람의 실수를 줄이기 위해서 |
반복문을 사용하는 이유는 “반복동작 코드의 중복을 방지하고, 많은 양의 데이터를 처리하기 쉽게 하고, 사람의 실수를 줄이기 위해서” 입니다.
위 내용을 3가지로 정리해보면 아래와 같이 표현할 수 있습니다.
1.
자동화에 특화적이다.
2.
코드 최적화에 도움이 된다.
3.
사람의 실수를 방지할 수 있다.
위 3가지에 초점을 맞춰 사용 이유에 대해 알아보도록 하겠습니다.
자동화에 특화적
컴퓨터가 발명되었을 당시에는 사람보다 연산을 빠르게 할 수 있기 때문에 도입이 되었습니다.
연산 동작을 수행의 관점에서 바라보면 반복되는 행위를 빠르게 한다고도 볼 수 있습니다.
컴퓨터는 같은 작업을 보다 정확하고 빠르게 반복할 수 있습니다.
이러한 이유로 반복적인 작업을 자동화하기 위해 반복문을 사용하는 것입니다.
코드 최적화
Javascript
Python
Java
Dart
컴퓨터언어에서 반복문은 보편적으로 같은 코드 블록을 여러 번 실행하는 데 사용됩니다.
예를 들어, 특정 작업을 10번 실행해야 한다면 똑같은 동작 코드를 10번의 중복 코드로 작성하는 것이 아니라 반복문을 사용하여 코드를 한 번 작성하고 반복적으로 실행할 수 있습니다.
실수 방지
Javascript
Python
Java
Dart
출력 결과 |
15 |
위 코드는 1부터 5까지의 숫자를 모두 더하는 코드입니다.
이 코드가 현재는 1부터 5까지지만 500까지 더해야한다고 한다면 엄청난 횟수를 반복해서 작성해야할 것입니다.
사람이 같은 작업을 지속해서 반복하게 되면 결국 한 번쯤은 실수하기 마련입니다. 이러한 상황을 반복문을 사용한다면 손쉽게 해결할 수 있습니다.
따라서, 반복문은 기계적인 작업을 자동화하고 코드를 간결하게 유지하는 데 도움이 되는 필수적인 도구입니다.
다음으로는 사용 방법을 알아 보도록 하겠습니다.
사용 방법
반복문 | for, while등의 문법을 사용해 지정된 작업을 반복적으로 실행 |
반복문 사용 방법은 “for, while등의 문법을 사용해 지정된 작업을 반복적으로 실행” 입니다.
문법의 형식
반복문은 크게 ‘for 문’ 과 ‘while 문’ 두 가지가 존재합니다.
두 반복문의 기본 문법은 아래와 같습니다.
컴퓨터는 일반적으로 위에서부터 아래로 하나씩 코드를 읽습니다.
항상 이 생각을 하면서 코드를 읽는 것을 추천 드립니다.
for를 사용한 반복문
Javascript
Python
Java
Dart
for문의 경우 소괄호 안에 초기식과 조건식, 증감식 이렇게 총 3개의 식이 들어가게 됩니다.
각각의 식은 어떠한 값을 가지는 것인지 알아보기 전 5단 분석법을 사용하여 각각 식을 분석해보겠습니다.
순서 | 분석 | 단어 | 내용 |
1 | 일반 명사 | 초기 | 정해진 기간 또는 일의 처음이 되는 시기 |
식 | 방식의 식 | ||
2 | 고유 명사 | 초기식 | 처음 반복을 시작할 때 한 번만 실행하는 식 |
3 | 사용 이유 | 초기식 | 반복문이 시작될 때 반복 조건 값에 초기값을 할당하기 위해서 |
4 | 사용 방법 | 초기식 | 변수명 = 초기값;
Ex) let i = 0; |
5 | 다른 기술과의 비교 | - | - |
순서 | 분석 | 단어 | 내용 |
1 | 일반 명사 | 조건 | 어떤 일이 이루어지기위해 갖춰야 하는 상태 또는 요소 |
식 | 방식의 식 | ||
2 | 고유 명사 | 조건식 | 조건이나 규칙에 따라서 참인지 거짓인지 구분하는 식 |
3 | 사용 이유 | 조건식 | 반복문이 종료되는 시점을 구분하기 위해서 |
4 | 사용 방법 | 조건식 | 반복문이 반복하는 조건을 작성
Ex) i < 10 → i가 10보다 작을 때 동안 계속 반복 |
5 | 다른 기술과의 비교 | - | - |
순서 | 분석 | 단어 | 내용 |
1 | 일반 명사 | 증감 | 많아지거나 적어지는 것을 의미 |
식 | 방식의 식 | ||
2 | 고유 명사 | 증감식 | 반복 동작을 한 후 증가 또는 감소가 이루어지는 식 |
3 | 사용 이유 | 증감식 | 동작이 반복될 때마다 반복 횟수를 세기 위해서 |
4 | 사용 방법 | 증감식 | 초기값 연산자 증감수
Ex) i += 1 → i의 ㅏ값을 매번 1씩 증가 시키기 |
5 | 다른 기술과의 비교 | - | - |
초기식, 조건식, 증감식을 정리해보면 아래와 같습니다.
•
초기식
◦
처음 반복을 시작할 때 한 번만 실행하는 식 입니다.
◦
반복문이 시작될 때 반복 조건 값에 초기값을 할당하기 위해서 사용합니다.
•
조건식
◦
조건이나 규칙에 따라서 참인지 거짓인지 구분하는 식 입니다.
◦
반복문이 종료되는 시점을 구분하기 위해서 사용합니다.
•
증감식
◦
반복 동작을 한 후 증가 또는 감소가 이루어지는 식 입니다.
◦
동작이 반복될 때마다 반복 횟수를 세기 위해서 사용합니다.
while을 사용한 반복문
Javascript
Python
Java
Dart
for 문과 비슷한 것 같지만 조금 다른 모양처럼 보입니다. 하지만 동작하는 방법만 이해하면 for 문과 다르지 않다는 것을 알 수 있을 것입니다. while 문도 for 문과 같이 초기식과 조건식, 증감식이 모두 들어갑니다.
반복문을 사용 하는 방법을 알아 보았습니다. 사용 예시를 보며 한번 더 사용법을 익히도록 하겠습니다.
사용 예시
실제로 사용하는 쉬운 예시를 보여 드리며 자세히 알려 드리도록 하겠습니다.
1부터 5까지 숫자를 출력해보세요.
반복문을 모르는 상황에서는 아마 이렇게 출력할 것입니다.
Javascript
Python
Java
Dart
출력 결과 |
1
2
3
4
5 |
위 코드를 보면 똑같은 기능을 하긴 하지만 값이 다른 출력문을 5번 사용하는 것을 볼 수 있습니다.
위 코드는 5번만 반복하면 되기 때문에 일일이 작성할 수 있지만, 1,000번, 10,000번 작성한다고 가정해보면 어떻게 될까요?
귀찮고 시간이 오래 걸리고, 오랜 시간 단순작업을 반복하다보니 실수할 가능성도 높을 것 입니다.
그럼 이를 해결하기 위해서 반복문을 사용해볼까요?
먼저 for문으로 작성한 코드를 보면서 for 문의 초기식과 조건식, 증감식을 하나씩 살펴보며 설명 하겠습니다.
Javascript
Python
Java
Dart
이번에는 while문으로 작성한 코드를 살펴보도록 하겠습니다.
Javascript
Python
Java
Dart
반복문은 아래의 동작 과정을 이해하면 매우 쉬운 문법입니다.
1.
초기 값을 기준으로 첫 번째 반복 시작
2.
조건을 검사해서 참인 경우 실행할 코드 동작, 거짓인 경우 실행할 코드를 동작하지 않고 반복문 종료
3.
동작 부분의 코드가 모두 실행되면 증감식을 따라 증가 또는 감소 연산
4.
증감 연산 처리가 된 초기 값을 기준으로 두 번째 반복 시작
위와 같은 과정을 통해 반복되는 동작 코드를 깔끔하게 반복문으로 작성할 수 있습니다.
알아두면 좋은 정보
연산자
for문과 while문을 살펴보면서 의문점이 한 가지 들었을 수도 있습니다.
+= 가 뭔가요? 처음보는 연산자인데요?
이전에 조건문에서 연산자를 배울 때 산술연산, 비교연산, 논리연산에 대해서만 설명했었습니다.
하지만 for 문에서는 ‘증감 연산자’ 또는 ‘할당 연산자’ 라는 것을 사용합니다. 우리 교재에서는 할당 연산자를 기준으로 설명 및 진행할 것이지만 증감 연산자를 쓰는 개발자도 많으므로 두 가지 개념을 모두 배우고 지나가겠습니다.
증감 연산자
증감 연산자에는 증가 연산자와 감소 연산자가 존재합니다.
증가 연산자 | ++ |
감소 연산자 | -- |
증감 연산자는 연산자가 붙는 값을 증가(+1)시키거나, 감소(-1)시킨 뒤 연산자 위치에 따라 감소하기 전이나 후의 값을 반환합니다. 이해하기 어려우실 수 있으니 일반적인 산술 연산과 비교해 설명 해드리겠습니다.
Javascript
let i = 3;
let j = i++;
console.log(`i = ${i}, j = ${j}`);
JavaScript
복사
출력 결과 |
i = 4, j = 3 |
let i = 3;
let j = i--;
console.log(`i = ${i}, j = ${j}`);
JavaScript
복사
출력 결과 |
i = 2, j = 3 |
Java, Python, Dart
위의 예시를 실제로 출력해보면 주석과 같이 출력될 것입니다.
기본적으로 1을 더하거나 빼는 것인데 중요한 건 단순히 1을 더하고 빼는 것이 아니라 증감 연산자가 앞에 붙는지 뒤에 붙는지에 따라서 할당되는 값이 달라집니다.
이를 전위 연산, 후위 연산이라고 표현합니다.
Javascript
// 전위 연산
let i = 3;
let j = ++i;
console.log(`i = ${i}, j = ${j}`);
JavaScript
복사
출력 결과 |
i = 4, j = 4 |
// 후위 연산
let i = 3;
let j = i++;
console.log(`i = ${i}, j = ${j}`);
JavaScript
복사
출력 결과 |
i = 4, j = 3 |
Java, Python, Dart
위의 예제와 같이 증감 연산자가 뒤에 붙으면 후위 연산, 앞에 붙으면 전위 연산입니다.
전위 연산은 증감 연산을 진행한 후 그 값을 반환합니다. 후위 연산은 증감 연산을 한 후 연산을 하기 전 값을 반환합니다.
처음엔 이해가 어려우실 수 있지만, for 문을 사용하다 보면 금방 이해할 수 있으니 잘 따라오시기 바랍니다.
할당 연산자
우리 교재에서 증감 연산자 대신 주로 사용할 연산자인 할당 연산자입니다.
덧셈 할당 연산자 | += |
뺄셈 할당 연산자 | -= |
곱셈 할당 연산자 | *= |
나눗셈 할당 연산자 | /= |
할당 연산자는 오른쪽 피연산자의 값을 변수에 더한 결과를 다시 변수에 할당하는 연산을 진행합니다.
이렇게만 설명하면 이해하기가 좀 어려울 수 있습니다. 아래에서 설명을 더 해보겠습니다.
Javascript
Python
Java
Dart
출력 결과 |
4 |
i += 1은 i = i + 1과 같은 결과를 가지게 됩니다. 컴퓨터 언어에서의 ‘=’ 는 변수 편에서 배운 것처럼 수학에서 사용하는 ‘=’ 과 완벽히 같게 생각하시면 안 됩니다. 컴퓨터 언어에서의 ‘=’ 는 오른쪽 값을 왼쪽 변수에 할당한다는 뜻입니다.
a = 5
Java
복사
수학적 개념을 갖고 위 식을 바라본다면 ‘a는 5와 같다’ 라고 이해할 수 있습니다. 하지만 컴퓨터언어에는 다르게 생각해야 합니다.
a라는 변수에 5라는 값을 넣는다(할당한다)’ 라고 생각을 해야 합니다.
컴퓨터언어에서 ‘같다’ 라는 연산은 ‘==’ 를 통해 진행합니다. ‘=’ 와 ‘==’ 의 차이를 잘 숙지하고 있어야 합니다.
let i = 0;
// i = i + 1 와 같음
i += 1;
JavaScript
복사
이것을 생각하며 다시 위 식을 해석해 보겠습니다.
let i = 0;
→ i 변수에 0을 넣는다.
→ i += 1은 i = 0 + 1과 같다.
i = 0 + 1
-> 0 + 1을 i 변수에 넣는다.
-> i == 1 |
위와 같은 과정을 거쳐 결국 i 가 1이라는 값을 갖게 됩니다.
우리 교재는 앞으로 예시에서 증감 연산자는 사용하지 않고 할당 연산자만 사용합니다.
명확하고 통일된 코드를 작성하기 위해 할당 연산자를 사용하는 것이니 유의 해주세요!
증감 연산자와 할당 연산자는 어떤 언어를 사용하던 꼭 알고 있어야 하는 연산자입니다.
어렵더라도 반복문 실습을 여러 번 해보면서 이해를 하는 게 제일 좋은 방향입니다.