1. 코딩 컨벤션
- 다른 사람들도 이해하기 쉽게 코드를 작성하는 규칙
- 필요한 이유
1) 코드의 가독성 증가 → 나중에 봐도 쉽게 이해 가능
2) 유지보수 용이
3) 효율적인 협업 가능
- 자주 사용하는 표기법
1) 주로 변수, 메소드의 이름을 지정할 때 사용하는 camelCase 표기법 (예: seoulFood)
2) 주로 상수의 이름을 지정할 때 사용하는 snake_case 표기법 (예: seoul_food)
3) 주로 클래스의 이름을 지정할 때 사용하는 PascalCase 표기법 (예: SeoulFood)
2. 코틀린의 출력과 입력
- 모니터에 데이터를 출력
fun main() {
println("안녕하세요.")
println("아주 간단하네요~")
println("출력은 println!")
}
<출력결과>
안녕하세요.
아주 간단하네요~
출력은 println!
- 키보드에서 입력한 내용(텍스트)을 출력
fun main() {
val dataString = readLine()
println("내가 입력한 게 ${dataString}(이)라뇨...")
}
<출력결과>
kotlin
내가 입력한 게 kotlin(이)라뇨...
- 키보드에서 입력한 내용(숫자)을 출력
fun main() {
val dataNumber = readLine()!!.toInt()
val sum = dataNumber + 3
println("내가 입력한 숫자가 ${dataNumber}인데 3을 더하면 ${sum} 맞죠?")
}
<출력결과>
5
내가 입력한 숫자가 5인데 3을 더하면 8 맞죠?
3. 자료형
- 프로그램의 모든 정보를 데이터 또는 자료라고 하는데 이 자료를 저장할 수 있는 적절한 형태
- 비트 : 컴퓨터 메모리를 구성하는 방 한 칸(8 비트 = 1 바이트)
- 자료형의 종류
자료형 | 크기 | 특징 |
Long | 64비트 | 정수 |
Int | 32비트 | 정수 |
Short | 16비트 | 정수 |
Byte | 8비트 | 정수 |
Double | 64비트 | 실수(소수) |
Float | 32비트 | 실수(소수) |
Char | 16비트 | 하나의 문자 |
Boolean | 8비트 | 논리(참 또는 거짓) |
String | x | 문자열 |
- 자료형이 중요한 이유
1) 컴퓨터의 하드웨어 사양은 한정적이기 때문에
2) 목적에 맞는 자료형이 다르기 때문에
4. 변수와 상수
- 변수
1) 숫자를 나타내는 변수
fun main() {
// var num1:Int = 1
// var 변수이름:자료형(생략가능) = 값
// 값을 특정 자료형을 저장할 수 있는 변수이름에 대입한다
var num1 = 1
println("num1 변수에는 ${num1}이 들어있어")
num1 = 5
println("변경한 num1 변수에는 ${num1}이 들어있어")
}
<출력결과>
num1 변수에는 1이 들어있어
변경한 num1 변수에는 5이 들어있어
2) 문자를 나타내는 변수
fun main() {
// var one1:Char = '김'
// var 변수이름:타입(생략가능) = 값
var one1 = '김'
println("내 one1 변수에는 ${one1}이 들어있어")
one1 = '나'
println("변경한 one1 변수에는 ${one1}가 들어있어")
}
<출력결과>
내 one1 변수에는 김이 들어있어
변경한 one1 변수에는 나가 들어있어
3) 문자열을 나타내는 변수
fun main() {
// var name:String = "참새"
var name = "참새"
println("새의 이름을 저장하는 name 변수에는 ${name}가 들어있어")
name = "조롱박이"
println("변경한 name 변수에는 ${name}가 들어있어")
}
<출력결과>
새의 이름을 저장하는 name 변수에는 참새가 들어있어
변경한 name 변수에는 조롱박이가 들어있어
- 상수
fun main() {
// var가 아니라 val를 앞에 붙임
val num1 = 1
println("내 첫변수 num1 변수에는 ${num1}이 들어있어")
// Val cannot be reassigned 에러 발생!!
// num1은 var이 아니라 val이기때문에 들어있는 값을 변경하지 못함
num1 = 5
println("변경한 변수 num1 변수에는 ${num1}이 들어있어")
}
<출력결과>
Error: Val cannot be reassigned
5. 연산자의 종류
- 산술 연산자(사칙연산 + 나머지 연산에 해당하는 연산자)
fun main() {
var num1 = 30
var num2 = 10
println("num1 : ${num1}, num2 : ${num2}")
// 덧셈 연산자(+)를 사용해서 num1과 num2를 더한 후에 plusResult에 대입함
var plusResult = num1 + num2
println("num1 + num2 = ${plusResult}")
// 뺄셈 연산자(-)를 사용해서 num1에서 num2를 뺀 후에 minusResult에 대입함
var minusResult = num1 - num2
println("num1 - num2 = ${minusResult}")
// 곱셈 연산자(*)를 사용해서 num1과 num2를 곱한 후에 multipleResult에 대입함
var multipleResult = num1 * num2
println("num1 * num2 = ${multipleResult}")
// 나눗셈 연산자(/)를 사용해서 num1에서 num2를 나눈 후에 divideResult에 대입함
var divideResult = num1 / num2
println("num1 / num2 = ${divideResult}\n")
// num2를 10에서 7로 변경
num2 = 7
println("num1 : ${num1}, num2 : ${num2}")
// 나머지 연산자(%)를 사용해서 num1에서 num2를 나눈 나머지를 modResult에 대입함
var modResult = num1 % num2
println("num1 % num2 = ${modResult}")
}
<출력결과>
num1 : 30, num2 : 10
num1 + num2 = 40
num1 - num2 = 20
num1 * num2 = 300
num1 / num2 = 3
num1 : 30, num2 : 7
num1 % num2 = 2
- 대입 연산자(값을 변수에 대입하는 연산자)
fun main() {
// = 기준으로
// 오른쪽: "참새"
// 왼쪽의 이름: name
// 즉, "참새"를 name변수에 대입한다라고 읽을 수 있음
var name = "참새"
println("내 이름은 ${name}")
// = 기준으로
// 오른쪽: 10
// 왼쪽의 이름: age
// 즉, 10을 age변수에 대입한다라고 읽을 수 있음
val age = 10
println("내 나이는 ${age}")
}
<출력결과>
내 이름은 참새
내 나이는 10
- 복합대입 연산자(산술 연산자 + 대입 연산자)
fun main() {
var num1 = 30
var num2 = 10
println("num1: ${num1}, num2: ${num2}")
// 산술연산자와 대입연산자를 따로 사용
// num1의 값을 10 증가시켜서 40을 만들고 싶다면?
num1 = num1 + 10
println("산술, 대입 따로 적용한 결과 -> num1 : ${num1}")
// 복합대입연산자를 사용
// num2의 값을 10 증가시켜서 20을 만들고 싶다면?
num2 += 10
println("복합대입연산자(덧셈) 적용한 결과 -> num2 : ${num2}")
// 뺄셈, 곱셈, 나눗셈, 나머지연산도 동일하게 사용가능해요
// 뺄셈: a-=b
num1 -= 20
println("복합대입연산자(뺄셈) 적용한 결과 -> num1 : ${num1}")
// 곱셈: a*=b
num2 *= 20
println("복합대입연산자(곱셈) 적용한 결과 -> num2 : ${num2}")
// 나눗셈: a/=b
num2 /= 10
println("복합대입연산자(나눗셈) 적용한 결과 -> num2 : ${num2}")
// 나머지: a%=b
num1 %= 3
println("복합대입연산자(나머지) 적용한 결과 -> num1 : ${num1}")
}
<출력결과>
num1: 30, num2: 10
산술, 대입 따로 적용한 결과 -> num1 : 40
복합대입연산자(덧셈) 적용한 결과 -> num2 : 20
복합대입연산자(뺄셈) 적용한 결과 -> num1 : 20
복합대입연산자(곱셈) 적용한 결과 -> num2 : 400
복합대입연산자(나눗셈) 적용한 결과 -> num2 : 40
복합대입연산자(나머지) 적용한 결과 -> num1 : 2
- 증감 연산자(특수한 경우에 1을 더하거나 뺄 때에 사용하는 연산자)
fun main() {
var num1 = 30
var num2 = 10
// num1의 값을 1 증가시키고 싶다면?
// 1) 산술연산자, 대입연산자 따로 사용
num1 = num1 + 1
println("(num1_1): 산술,대입 연산자 따로 사용해서 1증가 ${num1}")
// 2) 복합대입연산자 사용
num1 += 1
println("(num1_2): 복합대입연산자 사용해서 1증가 ${num1}")
// 3) 증감 연산자
num1++
println("(num1_3): 증가연산자 사용해서 1증가 ${num1}")
println("====================================================")
// num2의 값을 1 감소시키고 싶다면?
// 1) 산술연산자, 대입연산자 따로 사용
num2 = num2 - 1
println("(num2_1): 산술,대입 연산자 따로 사용해서 1감소 ${num2}")
// 2) 복합대입연산자 사용
num2 -= 1
println("(num2_2): 복합대입연산자 사용해서 1감소 ${num2}")
// 3) 증감 연산자
num2--
println("(num2_3): 증가연산자 사용해서 1감소 ${num2}")
// 후위연산자는 println연산을 실행후에 증감해요
println("후위연산자")
println(num1++)
println(num1)
println(num2--)
println(num2)
// 전위연산자는 println연산 실행전에 증감해요
println("전위연산자")
println(++num2)
println(num2)
println(--num1)
println(num1)
}
<출력결과>
(num1_1): 산술,대입 연산자 따로 사용해서 1증가 31
(num1_2): 복합대입연산자 사용해서 1증가 32
(num1_3): 증가연산자 사용해서 1증가 33
====================================================
(num2_1): 산술,대입 연산자 따로 사용해서 1감소 9
(num2_2): 복합대입연산자 사용해서 1감소 8
(num2_3): 증가연산자 사용해서 1감소 7
후위연산자
33
34
7
6
전위연산자
7
7
33
33
- 비교 연산자
fun main() {
// 수학은 94점
var mathScore = 94
// 영어는 60점
var englishScore = 60
// 수학점수가 90점 초과인지 판단
var isMathHighRank = mathScore > 90
// 영어점수가 60점 이상인지 판단
var isEnglishMiddleRank = englishScore >= 60
// 90점 초과라면 true (참)
// 90점 이하라면 false (거짓)
println("내 수학점수는 1등급이 맞나요? ${isMathHighRank}")
// 60점 이상이라면 true (참)
// 60점 미만이라면 false (거짓)
println("내 영어점수는 턱걸이로 3등급이 맞나요? ${isEnglishMiddleRank}")
println("=======================================")
var baseAge = 20
var myAge = 20
var babyAge = 7
var isMyAgePass = myAge == baseAge
var isBabyAgeNoPass = babyAge != baseAge
println("어서오세요~")
println("이번 이벤트는 ${baseAge}살만 참여할 수 있습니다!")
println("================신분증 검사중================")
println("내 나이는 ${myAge}니까 ${isMyAgePass}다!")
println("${babyAge}살은 참여할수 없는게 맞아요! ${isBabyAgeNoPass}")
}
<출력결과>
내 수학점수는 1등급이 맞나요? true
내 영어점수는 턱걸이로 3등급이 맞나요? true
=======================================
어서오세요~
이번 이벤트는 20살만 참여할 수 있습니다!
================신분증 검사중================
내 나이는 20니까 true다!
7살은 참여할수 없는게 맞아요! true
6. 조건문의 사용
- if-else문(최악의 경우에 모든 조건을 비교한다는 단점을 가짐)
fun main() {
var todayNumber = readLine()!!.toInt()
if (todayNumber == 1) {
println("재물이 들어올것입니다")
} else if (todayNumber == 2) {
println("검정색을 조심하세요")
} else if (todayNumber == 3) {
println("지인과의 관계에 조심하세요")
} else {
println("물을 조심하십시오...")
}
}
<출력결과>
3
지인과의 관계에 조심하세요
- when문(elseif가 많을 때는 when문을 사용하는게 더욱 가독성이 좋음)
fun main() {
var todayNumber = readLine()!!.toInt()
when(todayNumber) {
1 -> {
println("재물이 들어올것입니다")
}
2 -> {
println("검정색을 조심하세요")
}
3 -> {
println("지인과의 관계에 조심하세요")
}
else -> {
println("물을 조심하십시오...")
}
}
}
<출력결과>
2
검정색을 조심하세요
7. 반복문의 사용
- for문
fun main() {
var infos = arrayOf("꿩", "닭", "참새", "오목눈이", "공작새")
for(info in infos) {
if(info == "참새") {
println("찾았다 참새!")
// 반복문 탈출
break
} else {
// 다음 요소로 넘어감
continue
}
}
for(idx in 0..infos.size - 1) {
if(infos[idx] == "참새") {
println("찾았다 참새!")
// 반복문 탈출
break
} else {
// 다음 요소로 넘어감
continue
}
}
for(idx in 0 until infos.size) {
if(infos[idx] == "참새") {
println("찾았다 참새!")
// 반복문 탈출
break
} else {
// 다음 요소로 넘어감
continue
}
}
for(idx in infos.indices) {
if(infos[idx] == "참새") {
println("찾았다 참새!")
// 반복문 탈출
break
} else {
// 다음 요소로 넘어감
continue
}
}
}
<출력결과>
찾았다 참새!
찾았다 참새!
찾았다 참새!
찾았다 참새!
- while문
fun main() {
var infos = arrayOf("꿩", "닭", "참새", "오목눈이", "공작새")
val target = "참새"
var index = 0
var currentInfo = infos[index]
while (true) {
if (currentInfo == target) {
println("찾았다 참새!")
// 반복문 탈출
break
} else {
currentInfo = infos[++index]
// 다시 반복문의 처음으로 감
continue
}
}
}
<출력결과>
찾았다 참새!
'Kotlin > StoreInfo' 카테고리의 다른 글
<정리> 계산기 구현 (0) | 2023.11.30 |
---|---|
<강의> Kotlin 문법 종합반 5주차 (0) | 2023.11.30 |
<강의> Kotlin 문법 종합반 4주차 (1) | 2023.11.29 |
<강의> Kotlin 문법 종합반 3주차 (2) | 2023.11.28 |
<강의> Kotlin 문법 종합반 1주차 (0) | 2023.11.27 |