본문 바로가기
앱개발/안드로이드

[Kotlin] 02-1. 코틀린 프로그래밍 (2)

by 큌 2024. 3. 9.
반응형



코틀린 프로그래밍 (1)에서 배운 개념을 적용하여 실습을 진행해보자.



▷ 실습: 텍스트 RPG 게임 틀 만들어보자 val gameTitle = "미지의 섬 탐험"



var playerName = "탐험가 데레스"

var playerAge = 16

var playerSkill = "박쥐날개 글라이더"

println("${gameTitle}에 오신 것을 환영합니다") 
println("탐험가의 정보는 다음과 같습니다.") 
println("이름: ${playerName}님입니다.") 
println("나이: ${playerAge}살입니다.") 
println("특기: ${playerSkill}입니다.") 
println("이제 미지의 섬을 탐험하러 떠날 준비가 되셨습니까?") 
// 이후 각종 이벤트 및 선택지 등을 구현하여 게임의 완성도를 높일 수 있다.





위의 코드에서는 "미지의 섬 탐험"이라는 게임 제목과 탐험가의 이름, 나이, 특기를 변수로 저장하였다. 이 정보를 출력한 후, 향후 게임에서 시나리오와 선택지 등을 확장하여 완성도 높은 게임을 만들 수 있다.



연산자의 종류

▷ 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산자 변수 score1, score2 두 개를 사용하고 각각을 변경하며 다양한 연산자로 계산하여 출력하는 예시.



var score1 = 50

var score2 = 20

// 덧셈 연산자

var sumResult = score1 + score2 
println("score1 + score2는 ${sumResult} 입니다.") // 뺄셈 연산자

var subtractResult = score1 - score2 
println("score1 - score2는 ${subtractResult} 입니다.") // 곱셈 연산자

var multiplyResult = score1 score2 
println("score1 score2는 ${multiplyResult} 입니다.") // 나눗셈 연산자

var divideResult = score1 / score2 
println("score1 / score2는 ${divideResult} 입니다.") // score2를 15로 변경

score2 = 15

// 나머지 연산자

var modResult = score1 % score2
println("score1 % score2의 나머지는 ${modResult} 입니다.")





이 코드에서는 각 변수에 대해 덧셈, 뺄셈, 곱셈, 나눗셈, 그리고 나머지 연산을 이용해 계산하고 그 결과를 출력한다. 이처럼 다양한 연산자를 활용하여 많은 계산을 할 수 있다.




▷ =를 기준으로 오른쪽에 있는 값을 왼쪽의 변수명 또는 상수명에 대입한다는 것은, 프로그래밍에서 변수 초기화나 값을 변경할 때 사용되는 기본 구조이다.



// = 기준으로
// 오른쪽: "사과"
// 왼쪽의 이름: fruit
// 즉, "사과"를 fruit 변수에 대입한다라고 읽을 수 있음 


var fruit = "사과"
println("나는 ${fruit}를 좋아해") 


// = 기준으로
// 오른쪽: 3.14
// 왼쪽의 이름: pi
// 즉, 3.14를 pi 상수에 대입한다라고 읽을 수 있음


val pi = 3.14
println("원주율은 ${pi}")





이 예시에서 첫 번째 구문에서 문자열 "사과"가 변수 fruit에 대입되며, 두 번째 구문에서 숫자 3.14는 상수 pi에 대입된다. 키워드 var는 변할 수 있는 값을 저장할 변수를 선언하는 데 사용되며, val 키워드는 변하지 않는 상수값을 저장할 때 사용된다.




▷ 복합 대입 연산자는 산술 연산자와 대입 연산자를 결합해서 간결하게 작성할 수 있는 방법이다. 아래 예시는 위에서 산술연산자와 대입연산자를 같이 사용하는 방법을 설명하고 있다.


 

 

var score = 100
var bonus = 20

// 산술 연산자와 대입 연산자를 분리하여 사용 
// score 값에 bonus를 더하려면?

score = score + bonus 
println("산술연산자와 대입연산자를 따로 사용한 결과: ${score}") 


// 복합 대입 연산자 사용
// score 값에 bonus를 다시 더하려면?
score += bonus

println("복합 대입 연산자를 사용한 결과: ${score}") 



// 뺄셈, 곱셈, 나눗셈 및 나머지 연산에서도 복합 대입 연산자를 사용할 수 있다.

var discount = 10 
var quantity = 5 


// 뺄셈: a -= b
score -= discount


// 곱셈: a = b
quantity = 2


// 나눗셈: a /= b
discount /= 2


// 나머지: a %= b
score %= discount


println("뺄셈 결과: ${score}") 
println("곱셈 결과: ${quantity}") 
println("나눗셈 결과: ${discount}") 
println("나머지 결과: ${score}")






이 예시에서는 score, bonus, discount, quantity라는 변수를 사용하고 있으며, 각각의 변수에 값을 추가, 빼기, 곱하기, 나누기 및 나머지를 구하는 복합 대입 연산자를 적용하고 있다. 복합 대입 연산자를 사용하면 기존 변수에 대한 산술 연산과 함께 값을 갱신할 수 있어 코드를 더 간결하게 작성할 수 있다.

 




▷ 1을 더하거나 빼는 특수한 경우에 사용할 수 있는 연산자를 의미



(1) 첫 번째 예시



var temp = 25
var humidity = 60

// temp의 값을 1 증가시키는 방법들 

// 1) 산술연산자, 대입연산자 따로 사용 

temp = temp + 1
println("(temp_1): 산술,대입 연산자 따로 사용해서 1 증가 ${temp}") 


// 2) 복합대입연산자 사용

temp += 1
println("(temp_2): 복합대입연산자 사용해서 1 증가 ${temp}") 


// 3) 증감 연산자

temp++
println("(temp_3): 증가연산자 사용해서 1 증가 ${temp}") 
println("====================================================") 



// humidity의 값을 1 감소시키는 방법들 

// 1) 산술연산자, 대입연산자 따로 사용 

humidity = humidity - 1 
println("(humidity_1): 산술,대입 연산자 따로 사용해서 1 감소 ${humidity}") 


// 2) 복합대입연산자 사용

humidity -= 1
println("(humidity_2): 복합대입연산자 사용해서 1 감소 ${humidity}") 

// 3) 증감 연산자

humidity--
println("(humidity_3): 감소연산자 사용해서 1 감소 ${humidity}")






이 예시에서는 temp와 humidity 변수에 대해 값을 각각 1씩 증가시키고 감소시키는 세 가지 방법(산술 연산자와 대입 연산자의 조합, 복합 대입 연산자, 증감 연산자)을 보여주고 있다. 증감 연산자를 사용하면 코드를 간결하게 작성할 수 있다.





(2) 두 번째 예시


var a = 10
var b = 20
var c = 30



// 후위연산자는 println 연산이 실행된 후에 증가 
println(a++) // 10 출력 (증가 전의 값) 
println(a) // 11 출력 (증가 후의 값) 



// 전위연산자는 println 연산이 실행되기 전에 증가 
println(++b) // 21 출력 (증가 후의 값) 
println(b) // 21 출력 (현재 값) 



c++ // 후위연산자, c 값을 1 증가 (값은 31이 된다.) 
println(c) // 31 출력 (증가 후의 값) 
++c // 전위연산자, c 값을 먼저 1 증가 (값은 32가 된다.) 
println(c) // 32 출력 (증가 후의 값)






이 예시에서 변수 a, b, c에 대해 전위와 후위 증감 연산자를 사용한 결과를 보여준다. 이를 통해 전위 및 후위 연산자가 다른 연산과 함께 사용되었을 때 어떻게 작동하는지 이해할 수 있다. 전위 연산자의 경우 연산을 수행하기 전에 값을 증가시키며, 후위 연산자의 경우 연산이 수행된 후에 값을 증가시킨다.





▷ 비교 연산자는 두 개의 변수나 상수의 관계나 값을 비교하는 데 사용하는 연산자이다. 이들 연산자는 논리 연산자 또는 관계 연산자라고도 하며, 결과는 참(True) 또는 거짓(False)이기 때문에 불린(boolean) 자료형과 함께 사용됩니다. 여기에서는 >, >=, <, <=, ==, != 연산자를 살펴보자.




(1) 첫 번째 예시




// 숫자를 비교할 변수 설정
val x = 15
val y = 9



// x가 y보다 큰지 비교
val isGreaterThan = x > y 


// x가 y보다 작은지 비교 
val isLessThan = x < y 


// x와 y가 같은지 비교 
val isEqual = x == y



// x와 y가 다른지 비교
val isNotEqual = x != y 


println("x가 y보다 큰가요? $isGreaterThan") 
println("x가 y보다 작은가요? $isLessThan") 
println("x와 y가 같은가요? $isEqual") 
println("x와 y가 다른가요? $isNotEqual")






이 예시에서는 두 개의 변수 x와 y를 비교하여 비교 연산자를 사용한 결과를 출력한다. 이를 통해 주어진 숫자 간의 관계나 값이 참(True) 또는 거짓(False)인지 평가할 수 있다.




(2) 두 번째 예시



// 사과의 가격과 오렌지의 가격을 설정 
val applePrice = 1200 
val orangePrice = 1000 


// 사과의 가격이 오렌지의 가격보다 비싼지 확인 
val isAppleMoreExpensive = applePrice > orangePrice 


// 오렌지의 가격이 사과의 가격과 같은지 확인 
val isOrangePriceEqual = applePrice == orangePrice 


println("사과 가격이 오렌지 가격보다 비싼가요? ${isAppleMoreExpensive}") 
println("오렌지 가격이 사과 가격과 같나요? ${isOrangePriceEqual}")





이 예시에서는 사과와 오렌지의 가격을 비교하여, 사과의 가격이 오렌지의 가격보다 비싼지와 오렌지의 가격이 사과의 가격과 같은지를 확인하고 있다. 결과는 참(True) 또는 거짓(False)로 출력된다. 이를 통해 주어진 가격과 기준치를 비교할 수 있다.




(3) 세 번째 예시



val normalTemperature = 36.5 
val myTemperature = 36.4 
val friendTemperature = 36.6 
val siblingTemperature = 37.0 
val isMyTemperatureNormal = myTemperature == normalTemperature 
val isFriendTemperatureNormal = friendTemperature == normalTemperature 
val isSiblingTemperatureNormal = siblingTemperature == normalTemperature 



println("산하온도 기준은 ${normalTemperature}도 입니다.") 
println("온도 체크를 시작합니다.") 
println("======== 온도 체크 중 ========") 
println("내 체온은 ${myTemperature}도이다. 정상인가요? $isMyTemperatureNormal") 
println("친구의 체온은 ${friendTemperature}도이다. 정상인가요? $isFriendTemperatureNormal") 
println("형제의 체온은 ${siblingTemperature}도이다. 정상인가요? $isSiblingTemperatureNormal")





이 예시에서는 기준 몸무게인 4.5kg와 여러 고양이의 몸무게를 비교하여 이상적인 몸무게인지 확인하고 있다. 결과는 참(True) 또는 거짓(False)로 출력된다. 이를 통해 각 고양이의 몸무게가 기준치와 일치하는지 비교해볼 수 있다.

반응형