안녕하세요 코틀린 다섯번째 포스팅은 <반복문과 증감연산자>입니다
반복문의 예시에서 증감연산자가 사용되기 때문에 증감연산자 먼저 알아보도록 하겠습니다!
<증감 연산자>
증감 연산자는 증가 연산자(increment operators)와 감소 연산자(decrement operators)를 통칭한 것을 말하는데요
1. 증가 연산자 increment operators
: 증가 연산자는 변수의 앞이나 뒤에 플러스(+)를 두개 붙여 사용하는 연산자로,
변수의 값을 '1' 증가시켜주는 역할을 합니다
ex) ++a, a++
2. 감소 연산자 decrement operators
: 증가 연산자와 반대로 변수의 앞이나 뒤에 마이너스(-)를 두개 붙여 사용하는 연산자로,
변수의 값을 '1' 감소시켜주는 역할을 합니다
ex) --a, a--
그럼 플러스와 마이너스를 앞에 붙이는 것과 뒤에 붙이는 것은 어떤 차이점이 있을까요?
연산자를 앞에 붙일 경우 앞에 위치한다고 하여 (前 앞 전, 位 자리 위) 전위 연산자 prefix operators 라고 하고,
전위 연한자는 연산자가 포함된 구문에서 이미 증감된 수를 반영하여 연산이 진행됩니다
그리고 연산자를 뒤에 붙일 경우는 후위 연산자 postfix operators 라고 하며,
후위 연산자는 증가나 감소된 수를 해당 구문에서 사용하지 않고 '다음 구문'부터 사용한다는 차이가 있습니다
<반복문>
반복문은 조건형 반복문과 범위형 반복문으로 크게 2가지 형태가 있는데요
1. 조건형 반복문
: 조건이 참인 경우 반복을 유지
- while, do...while
1) while
fun main() {
var a = 0
while(a < 5) {
println(a++)
}
}
/* 출력
0
1
2
3
4
*/
먼저 변수 a에 0을 넣어두고
while문에 a<5 라는 조건을 넣습니다
그리고 위 코드를 실행시키면 먼저 while에 포함된 조건식이 참인지 확인을 합니다
참이라면 while에 따르는 구문을 1회 수행합니다 -> println(a++)
*이때 a++은 후위 연산자이므로 화면에 a값이 출력된 이후에 증가값이 반영됩니다
그러므로 출력은 0이 되겠죠?
그 후 다시 while문으로 돌아와서 조건을 확인하게 됩니다
그리고 while문이 거짓이 되는 순간 (여기서는 a가 5가 되는 순간) 반복을 중단하고 다음 구문으로 넘어가게 됩니다
여기서는 반복시마다 a가 1씩 증가되기 때문에
0
1
2
3
4
가 찍히게 되고 5에서 조건이 거짓이 되어 프로그램이 종료됨을 알 수 있습니다
이때 여기서 println안에 들어있는 a++이 후위가 아닌 전위 연산자라면 어떻게 동작할까요?
위의 증감연산자에 나와있듯 전위 연산자는 해당 구문 내에서 증가된 값을 즉시 반영하기 때문에
증가가 먼저 된 후 화면에 출력하게 됩니다
1
2
3
4
5
println(++a)라면 위와 같이 출력이 되겠죠?
그렇다면 이번엔 do...while문은 어떤 차이가 있는지 알아보겠습니다
2) do...while
fun main() {
var a = 0
do {
println(a++)
} while (a < 5)
}
do...while문은 while에 의해 조건을 체크하여 반복한다는 점은 같지만
최초 한 번은 조건없이 do 에서 구문을 실행한 후 while로 조건을 체크한다는 선후관계에 차이가 있습니다
따라서 조건과 관계없이 '반드시 한번은 실행'해야 한다면 do...while문을 사용하는 것이 좋습니다!
2. 범위형 반복문
: 반복 범위를 정해 반복을 수행
- for
1) for
for의 사용법은 고전적인 언어들과는 조금 다른데요
최신 언어들이 제공하고 있는 조금 더 사람이 이해하기 쉬운 형태로 사용하실 수 있습니다
- .. (숫자 1씩 증가)
fun main() {
for (i in 0..9) {
print(i)
}
}
/* 출력
0123456789
*/
for문의 괄호 안에 index로 사용할 변수명으로 i를 지정해줍니다
이때 인덱스로 사용할 변수 i의 앞에는 var 등을 붙이지 않아도 됩니다
그리고 0부터 9까지 반복하기 위해 in을 쓰고 0..9라고 써줍니다
i가 0부터 9이내에서 동작한다는 의미입니다
기본적으로 for문은 값을 1씩 증가시키며 반복하게 됩니다
중괄호 안에는 i의 변화값을 확인하기 위해서 *print(i)를 작성해줍니다
*print는 println과 달리 줄을 떼지 않고 붙여서 출력할 때 사용합니다
실행해보면 아래와 같이 0부터 9까지 1씩 증가하며 인덱스 값을 출력하고 종료되었음을 알 수 있습니다
0123456789
..은 작성한 마지막 숫자까지 증가시키는데요,
until을 사용하면 마지막 숫자 전까지 증가시키고 for문이 끝나게 됩니다
- until (마지막 숫자 전까지 증가)
fun main() {
for (i in 0 until 9) {
print(i)
}
}
/* 출력
012345678
*/
위의 예시를 보면 ..을 사용했을 때와 달리 0 until 9를 작성 후 실행시키면
마지막 숫자 9의 이전 숫자인 8까지만 출력되는 결과를 확인할 수 있습니다
그런데 증가값을 1이 아닌 다른 값으로 하려면 어떻게 해야 할까요?
그럴 땐 단계를 뜻하는 step을 옵션으로 붙여주면 됩니다
- step (숫자 증가값 설정)
fun main() {
for (i in 0..9 step 3) {
print(i)
}
}
/* 출력
0369
*/
step 3 을 붙인 후 다시 실행시켜 보면 0369로 3씩 증가되었음을 확인할 수 있습니다
그렇다면 이번엔 감소시키는 법을 알아보겠습니다
숫자를 감소시키기 위해서는 .. 대신에 downTo 라는 키워드를 사용합니다
- downTo (숫자 감소)
fun main() {
for (i in 9 downTo 0) {
print(i)
}
}
/* 출력
9876543210
*/
9 downTo 0 이라고 적으면 9에서 0까지 1씩 감소하며 반복되는 것을 확인할 수 있습니다
그리고 감소 또한 뒤에 step을 붙이면 단계를 변경할 수 있습니다
fun main() {
for (i in 9 downTo 0 step 3) {
print(i)
}
}
/* 출력
9630
*/
뿐만 아니라 for문은 char 자료형에도 사용할 수 있는데요
'a'부터 'e'까지 증가하며 반복하는 예시를 보도록 하겠습니다
- for문을 이용한 문자 출력
fun main() {
for (i in 'a'..'e') {
print(i)
}
}
/* 출력
abcde
*/
for문의 조건으로 in 뒤에 숫자 대신 'a'..'e'를 작성하고 실행시키면
abcde가 출력되는 것을 확인할 수 있습니다
<반복문과 증감연산자> 포스팅은 여기서 마치도록 하겠습니다
감사합니다:)
*위 글은 유튜브 테크과학! DeMo님의 강좌를 참고하여 작성하였습니다
'Kotlin' 카테고리의 다른 글
[Kotlin] 07. 클래스의 기본 구조 (0) | 2023.07.18 |
---|---|
[Kotlin] 06. 흐름제어와 논리연산자 (0) | 2023.07.17 |
[Kotlin] 04. 조건문과 비교연산 (0) | 2023.07.15 |
[Kotlin] 03. 타입추론과 함수 (0) | 2023.07.14 |
[Kotlin] 02. 형변환과 배열 (0) | 2023.07.13 |