Kotlin

내일배움캠프 12.04 TIL

공부처음하는사람 2023. 12. 22. 20:46

학습 내용

코딩 컨벤션 (Coding Convention)

  • CamelCase
    • 주로 변수 메소드의 이름을 지정할때 사용한다.
seoulFood (O)
seoul_food (X)
seoulfood (X)
  • snake_case
    • 주로 상수의 이름을 지정할때 사용한다.
      seoul_food (O)
      SeoulFood (X)
  • PascalCase
    • 주로 클래스의 이름을 지정할때 사용한다.
      SeoulFood (O)
      Seoul_Food (X)

Input과 Output

  • Input 이란
    • 다른 장치로부터 데이터를 불러와 프로그램에서 확인하는 행위
      ex1) 키보드에서 입력한 내용을 불러와서 프로그램에서 확인
      ex2) 마이크에서 녹음한 목소리를 불러와서 프로그램에서 확인
      ex3) 메모장의 내용을 불러와서 프로그램에서 확인
      ex4) USB의 파일목록을 불러와서 프로그램에서 확인
val dataString = readLine()
println("나는 ${dataString }를 입력했어요!")
  • Output이란
    • 프로그램에서 다른 장치로 데이터를 전송하는 행위
      ex1) 프로그램의 결과를 모니터로 정보 출력
      ex2) 프로그램에서 스피커로 사운드 출력
println("안녕하세요")
println("나는 코틀린이 좋아요")
print("나는 코틀린으로 앱을 만들거예요")
println("고마워요!")
println("굿럭!")

자료형

  • 자주쓰이는건 Int, Long, Double, String

변수와 상수

변수 : var (variable)
상수 : val (value)

var은 변수 초기화로 입력값을 변경할 수 있지만
val은 불가능함


연산자

덧셈, 뺄셈, 곱셈, 나눗셈, 나머지를 연산하는게 연산자이다.

        var num1 = 30
    var num2 = 10

    // 덧셈 연산자(+)사용해서 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}이야")

    // num2를 10에서 7로 변경
    num2 = 7

    // 나머지 연산자(%)사용해서 num1에서 num2를 나눈 나머지를 modResult에 대입함
    var modResult = num1 % num2
    println("num1 % num2는 정수로 ${modResult}야")
  • 산술연산자와 대입연산자, 증감연산자
  • 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}")
  • boolean 자료형
  • var baseAge = 20 var myAge = 20 var teacherAge = 50 var babyAge = 7 var isMyAgePass = myAge == baseAge var isTeacherAgePass = teacherAge == baseAge var isBabyAgeNoPass = babyAge != baseAge println("어서오세요~") println("이번 이벤트는 ${baseAge}살만 참여할 수 있습니다!") println("================신분증 검사중================") println("내 나이는 ${myAge}니까 ${isMyAgePass}다!") println("선생님 연세는 ${teacherAge}니까 ${isTeacherAgePass}네요.. 미안해요!") println("${babyAge}살은 참여할수 없는게 맞아요! ${isBabyAgeNoPass}")
// 영어는 60점
var englishScore = 60

// 국어점수가 60점 이상인지 판단
var isEnglishMiddleRank = englishScore >= 60

// 60점 이상이라면 true (참)
// 60점 미만이라면 false (거짓)
println("내 영어점수는 턱걸이로 중위권이 맞나요? ${isEnglishMiddleRank}")
boolean : true, false 결과 출력가능
(>, >=, <, <=, ==, !=) 까지만 이해한다.

>조건문

Kotlin에서는 if, else, when을 활용해 조건을 관리한다.

- if-else 구조
```kotlin
// 조건식은 앞서배운 비교 연산자를 사용합니다
// 즉, 조건식 자리에는 true 또는 false의 결과가 들어갑니다
// 조건식이 true일때 중괄호 안의 코드를 실행합니다
if(조건식) {
     // 실행할 코드
}


// 둘 중 한개의 코드만 실행됩니다
if(조건식) {
    // 조건식이 true일때 실행할 코드
} else {
  // 조건식이 false일때 실행할 코드
}
  • when의 구조
  • when(변수 또는 상수) { 값1 -> { // 실행할 코드 } 값2 -> { // 실행할 코드 } else -> { // 실행할 코드 } }
  • 조건문이 쓰이는 경우
    • 특정 이름을 가진 사람일때 축하메시지를 띄워줘요
    • 일반게임과 랭크게임을 선택해서 게임방을 만들 수 있어요
    • 티켓 100개가 전부 매진되면 더 이상 구매할 수 없다고 알림창을 띄워줘요
    • 비가오면 잔잔한 음악이 재생되도록 해요
    • 기말고사 평균점수를 구간별로 나눠서 A,B,C,D 등급을 매겨요
  • 꿀팁
    else if가 많아질때는 when을 사용하는게 더욱 가독성이 좋아요
    if는 최악의 경우에 모든 조건을 비교한다는 단점을 고려해주세요
  • 예시
  • 티켓 100개가 전부 매진되면 더 이상 구매할 수 없다고 알림창을 띄워줘요의 예시입니다.

var ticketCount = 0

if(ticketCount > 0) {
println("티켓을 구매했어요")
} else {
println("티켓이 모두 매진되었습니다")
}


> 반복문

Kotlin에선 for, while 을 활용해 반복적인 로직을 관리한다.

- 반복문 사용 예시
    - **매일 10시**에 A,B,C의 주식가격을 출력해요
    - **매일 퇴근전**에 검색 → 엑셀에 저장 → 메일전송하는 행위를 코드로 반복시켜요
    - 전화번호부에서 이름이 “참새”인 **사람을 찾을때까지 한명씩 조회**하고 비교해요
    - 상자에서 사료를꺼내 고양이에게 **10번 먹여줘요**


- for 예시
```kotlin
내 이름을 10번 출력해요 (for)의 예시입니다

// 1부터 10까지 변화하는 i변수
for(i in 1..10) {
     println("${i}번째: 내 이름은 참새")
}
  • while 예시
  • var i = 0 while(i < 10) { println("${i}번째: 내 이름은 참새") i++ }
  • break (가장 가까운 반복문에서 탈출 후 다음 블록으로 넘어감
  • continue (이후에 코드를 실행하지 않음.)
  • var infos = arrayOf("꿩", "닭", "참새", "오목눈이", "공작새") for(info in infos) { if(info == "참새") { println("찾았다 참새!") break } else { continue } }

2주차 실습물

    val worldName = "스코월드"
    var myName = readLine()
    var myAge = readLine()!!.toInt()
    var myJob = readLine()

    var isNamePass = true
    var isAgePass = true
    var isJobPass = true

    var names = arrayOf("참새", "꿩", "비둘기")
    for(name in names) {
        if(myName == name) {
            println("중복된 이름이 존재합니다.")
            isNamePass = false
            break
        }
    }

    if(myAge < 12) {
        println("12세 미만은 이용할 수 없습니다.")
        isAgePass = false
    }
    if(myJob == "전사") {
        println("일시적으로 전사를 이용할 수 없습니다.")
        isJobPass = false
    }

    // 모든 조건을 통과한 경우에만 환영
    if(isNamePass && isAgePass && isJobPass) {
        println("==================${worldName}에 오신것을 환영합니다==================")
        println("당신의 정보는 다음과 같습니다.")
        println("이름: ${myName}입니다.")
        println("나이: ${myAge}입니다.")
        println("직업: ${myJob}입니다.")
        println("모험을 떠나 볼까요?")
    }

오늘은 강의 첫날이다. 기대한 만큼 실망이 큰걸까?
강의가 너무 어려웠다. 아마 비전공자, 입문자가 많은것으로 아는데
선수지식이 없으면 3주차 클래스부터는 나에겐 도저히 이해할 수 없는 구조였다. 갑자기 메소드, 데이터클래스, 실드클래스, 생성자 뭐 이런말이 난무하는데 다시 보고 또 보고 또 봐도 이해가 안갔다.
3주차 강의를 듣고 생각이 많아져 머리가 복잡해지기 시작했다.
java에 최소 다형성까진 알고 있어야 어려운 설명을 이해하기 쉬울 듯 하다.

뭐 공부해야지 어쩌겠나.. 오늘 캠프에서 뜻이 같은 사람들이 모여 공부를 하기로 했는데 스터디는 무슨 기초강의 먼저 들어야겠다.. 스터디는 수요일이나 돼야 할 수 있을 듯..

30분만 쉬고 공부하러 가야겠다.

'Kotlin' 카테고리의 다른 글

내일배움캠프 12.08 TIL  (2) 2023.12.22
내일배움캠프 12.07 TIL  (1) 2023.12.22
순수 함수  (0) 2023.12.22
내일배움캠프 12.06 TIL  (2) 2023.12.22
객체지향 프로그래밍  (2) 2023.12.22