일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 추상화함수
- ESP32_S2_WROVER
- 라즈베리파이 피코
- androidstudio
- L293D
- 아두이노 모터 드라이버
- 우송대학교
- 코틀린
- 공약수
- 카이캐드 설치
- ESP32_S2
- 약수 구하기
- 안드로이드스튜디오
- 우송대
- string함수
- 아두이노
- GCD
- 카이캐드
- PICO4
- ATmega328p
- 업캐스팅
- KiCad
- kotlin
- 재정의함수
- 개발 보드
- 유클리드 호제법
- 7세그먼트
- 카이캐드 다운로드
- Arduoin
- 우송대 라즈베리파이 피코
- Today
- Total
개발자의 생활
조건문, 반복문 (연산자) 본문
이번에는 프로그래밍에서 빠지면 안 되는 필수적인 존재 조건문, 반복문 그리고 연산자에 대해 알아보겠습니다.
1. 조건문
코틀린에서 조건문에는 if와 when 이 있습니다.
1. if문
코틀린에사 if 조건문은 다른 언어와 사용법이 비슷하지만 추가적인 기능이 있습니다.
fun main() {
if(false){
println("참")
}else{
println("거짓")
}
if(false){
println("1")
}else if(false){
println("2")
}else{
println("3")
}
}
일반적인 다른 언어와 동일하게 사용이 가능합니다.
하지만 코틀린에서는 추가적인 기능이 있습니다. 재미있게도 if문을 통해 값을 반환할 수도 있습니다.
코드를 보겠습니다.
fun main() {
val a = if(true){
"참"
} else {
"거짓"
}
println(a)
}
이처럼 내부 데이터를 조건에 따라 값을 반환하여 변수에 담을 수 있습니다.
다만 반환값을 가지기 위해서는 else 가 1개 이상 있어야 합니다. 조건이 false 일 경우에 반환 데이터를 가져오지 못하기 때문이겠네요
코드를 보니 마치 삼항 연산자를 합쳐놓은 느낌이네요 하지만 코틀린의 if문 쪽이 더 유연하고 편리한 거 같습니다.
2. when
when 은 다른 언어에서 switch와 비슷하지만 이또한 if문처럼 유연하면서 몇 가지 기능이 추가된 조건문입니다.
fun main() {
dataCheck(1)
dataCheck(5)
dataCheck(10)
dataCheck("text")
dataCheck("a")
}
fun dataCheck(data: Any){
when(data){
1 -> println("1 입니다.")
is Int -> println("Int형 입니다.")
10 -> println("10 입니다.")
"text" -> println("text 입니다.")
else -> println("없음")
}
}
일단 다양한 데이터를 테스트하기 위해 함수를 만들고 Any타입으로 파라미터를 받아 조건을 비교할 수 있도록 구성하였습니다.
사용법은 switch와 비슷하지만 구성이 조금 다릅니다. 가장 먼저 case문이 없이 비교할 데이터를 입력하시면 됩니다. 그리고 : 대신 ->를 이용해서 실행구문과 구별을 하시면 됩니다. 그리고 일반적으로 switch문은 조건이 참이면 그다음부터 계속 실행되기 때문에 break문으로 멈춰주어야 했지만 Any은 처음 조건이 만족하면 해당 실행문만 실행하고 넘어가게 됩니다.
만약 실행할 코드 라인이 더 있다면
1 -> {
print("1 ")
println("입니다.")
}
이런 식으로 중괄호로 감싸면 됩니다.
when도 if문처럼 값을 반환할 수 있습니다.
fun main() {
dataCheck(1)
dataCheck(5)
dataCheck(10)
dataCheck("text")
dataCheck("a")
}
fun dataCheck(data: Any){
val str = when(data){
1 -> "1 입니다."
is Int -> "Int형 입니다."
10 -> "10 입니다."
"text" -> "text 입니다."
else -> "없음"
}
println(str)
}
이처럼 when이 반환한 값을 변수에 담을 수도 있습니다.
***추가로 is는 추후에 자세히 알아보겠지만 데이터 타입을 확인하는 키워드입니다.
2. 반복문
코틀린에서도 for문 while, do while문 이 있습니다.
1.for
for문은 c, java 등의 언어에서 사용하는 방법이 다릅니다. 다른 언어에서는 (초기식, 조건식, 증감식)으로 구분하였지만 코틀린에서는 혼합되면서 간소화되었습니다.
fun main() {
//0 ~ 10까지 반복(1씩 증가)
for(a in 0..10){
print("$a ")
}
println()//분 바꿈
//0 ~ 10까지 반복(2씩 증가)
for(a in 0..10 step 2){
print("$a ")
}
println()//분 바꿈
//10 ~ 0 까지 반복(1씩 감소)
for(a in 10 downTo 0){
print("$a ")
}
println()//분 바꿈
//10 ~ 0 까지 반복(3씩 감소)
for(a in 10 downTo 0 step 3){
print("$a ")
}
}
위 코드를 하나씩 살펴보겠습니다.
for(a in 0..10){
print("$a ")
}
먼저 보이는 a는 보이지는 않지만 val로 선언된 변수입니다. 그래서 for내부에서 a값을 변경할 수가 없습니다.
다음으로 in을 붙이고 반복할 값을 지정하면 됩니다.
0..10 은 0부터 시작해서 10까지 기본으로 1씩 증가시키게 됩니다.
for(a in 0..10 step 2){
print("$a ")
}
이 코드에는 step 키워드가 추가되었는데요 이 키워드를 이용해서 증가값을 지정할 수 있습니다.
하지만 지정할 수 있는 값은 정수만 가능합니다. 만약 실수값으로 증가시켜야 한다면 while문을 이용하는 방법이 있습니다.
for(a in 10 downTo 0){
print("$a ")
}
값을 감소시키기 위해서는 .. 대신 downTo키워드를 사용해야 합니다. 10.. 0 이런 식으로 작성하면 에러가 발생하게 됩니다.
for(a in 10 downTo 0 step 3){
print("$a ")
}
이 코드는 10부터 시작해서 0까지 3씩 감소하는 코드입니다.
*추가 1
for문은 숫자뿐 아니하 배열이나 리스트 등 데이터를 순서대로 가져올 수도 있습니다.
fun main() {
val a = listOf(0, 1, 2, 3, 4, 5)
val b = setOf(3, 2, 5, 1, 2, 5, 1)
val c = mapOf(0 to "num0", 1 to "num1", 2 to "num2")
val d = arrayOf(5, 4, 3, 2, 1, 0)
for (data in a){
print("$data ")
}
println()//줄 바꿈
for (data in b){
print("$data ")
}
println()//줄 바꿈
for (data in c){
print("$data ")
}
println()//줄 바꿈
for (data in d){
print("$data ")
}
}
이렇게 java에서 향상된 for문과 동일한 기능이라고 보시면 됩니다.
*추가 2
만약 리스트나 배열등의 값을 가져오면서 동시에 인덱스번호도 알아야 하는 경우가 있을 수 있습니다.
그런 경우에는
val a = arrayOf(3, 1, 4, 1, 5, 9, 2)
for (data in 1 .. a.size){
println("인덱스 번호: ${data - 1} 데이터: ${a[data - 1]}")
}
이런 식으로 코드를 작성해도 되지만
*추가정보: "" 내부에서 $에 {}를 붙이면 내부에 수식, 조건문, 반복문 등 로직을 수행할 수 있습니다.
for ((indexNum, data) in a.withIndex()){
println("인덱스 번호: $indexNum 데이터: $data")
}
이렇게 변수 쪽에 괄호를 열고 (indexNum, data) 2개의 변수명을 작성한 뒤 배열이나 리스트 등의 데이터에 withIndex() 함수를 이용하면 인덱스 번호와 데이터를 동시에 가져올 수 있습니다.
2. while, do while
이 반복문은 java와 c에서 사용하는 방법이 완전히 동일하기 때문에 따로 예제코드는 작성하지 않겠습니다.
3. 연산자
코틀린에서 기본적인 연산자는 java와 동일하지만 언어 차원에서 변경된 부분이 일부 있습니다.
바로 비교 연산자인데요 일반적으로 ==를 사용하게 되는데요 이는 자바에서는 참조타입 변수는 참조를 비교하게 되며 원시타입 변수는 값을 비교하는 반면 코틀린에서는 ==는 값을 비교하는 연산자입니다.
즉 자바에서의 equals문과 동일한 역할을 하게 됩니다.
그리고 참조를 비교하는 연산자는 코틀린에서 === 를 사용하게 됩니다.
정리하면
(참조타입을 비교할 경우)
== : 값을 비교 (자바에서 equals와 동일)
=== : 참조를 비교 (자바에서 == 와 동일)
(원시타입을 비교할 경우)
== ,=== 모두 값을 비교
이상으로 조건문, 반복문 (연산자)에 대한 설명을 마치겠습니다.
감사합니다
'kotlin(코틀린) 강좌' 카테고리의 다른 글
스코프, 접근제한자 + 프로젝트 구조 (0) | 2024.10.04 |
---|---|
class 사용 (4) | 2024.09.16 |
함수 (0) | 2024.08.30 |
List, Set, Map 컬렉션(Collection) (0) | 2024.08.29 |
배열 기본 사용법 (0) | 2024.08.26 |