공부 자료

 

https://www.youtube.com/watch?v=96rFgaDR5xM&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN&index=6

 

오늘도 화이팅

 

 

 

코틀린에서의 반복문과 증감연산자

 

반복문의 종류

 

조건이 참일 경우 반복을 유지하는 조건형 반복문

 

반복 범위를 정해 반복을 수행하는 범위형 반복문 

 

 

조건형 반복문

 

while, do...while 

 

예제)

 

fun main() {

 

  var a = 0   -------------> 변수 a에 0을 넣는다

  while(a < 5) {   ------------> 조건이 참일 경우

     println(a++)   -------------> a에 1을 더해준다

  }

 

}

 

여기서 증감연산자는,

 

++a, a++, --a, a-- 로써, 1씩 증가시키거나 감소시키는 역할을 한다.

 

그럼, 앞에 붙이는 것과 뒤에 붙이는 것은 어떻게 다른가?

 

전위연산자 ( ++a, --a)는 이미 연산자가 포함된 구문에서 이미 증감된 수를 반영하여 연산이 진행

 

후위연산자 (a++, a--)는 증가나 감소된 수를 해당 구문에서 사용하지 않고 다음 구문부터 사용을 한다

 

간단하게 예를 들어보자,

 

fun main() {

 

  var a = 0 

  while(a < 5) { 

     println(a++)   -------------> [a++ 후위연산자]

  }

 

}

 

후위연산자이니, 현재 구문에서는 사용하지 않는다. 그러므로 출력하면

 

0, 1, 2, 3, 4 가 된다.

 

전위연산자의 경우라면, 현재구문을 포함하니 출력하게 되면

 

1, 2, 3, 4, 5 가 된다.

 

 

그럼 다른 하나인, do...while문은 어떤 차이가 있는가?

 

fun main() {

 

  var a = 0

  do

  {

       println(a++)

  }  while (a < 5)

 

}

 

while에 의한 조건을 체크해 반복한다는 점은 같지만 최초 한번은 조건 없이 do에서 구문을 실행하여 while로 조건을 체크한다는 [선후관계]의 차이가 있다.

 

그러므로, 0, 1, 2, 3, 4가 나오게 된다.

 

따라서, 조건과 관계 없이 반드시 한 번은 실행해야 한다면 do...while문을 사용하여야 한다.

 

 

범위형 반복문 for

 

바로 예를 들어보자.

 

fun main() {

 

  for(i in 0..9) ---> 인덱스로 지정할 변수 i를 생성 ( 이 때, for문에서 변수를 지정하는건 var이 필요없다. ),

                       거기에 in을 붙이고 0..9를 놓으면 0부터 9까지 범위가 지정되어 i가 0부터 9 이내로 동작한다.

 

}

 

기본적으로 for문은 1씩 반복을 하는데

 

fun main() {

 

  for(i in 0..9) {

    print(i)    --------------------> print는 println과 다르게 줄을 떼지 않고 출력해주는 함수이다.

  }

 

}

 

화면에 출력을 해보면

 

0123456789가 출력된다.

 

그럼 증가값을 1이 아닌 다른 값으로 할 수 없을까?

 

이 때는, 단계를 뜻하는 step을 옵션으로 붙여주면 된다.

 

 

for(i in 0..9 step 3) 이렇게 하면

 

0369가 출력된다.

 

 

그럼 감소는?

 

for (i in 9 downTo 0)으로 하면 되고

 

감소 역시 뒤에 step을 붙여주면 감소값을 다르게 설정할 수 있다.

 

 

 

화이팅 내자신

Posted by 노꼴甲
,

 

 

공부 자료

 

https://www.youtube.com/watch?v=gJJVLju4XS0&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN&index=5

 

하루에 딱 2개만 성실하게 배우도록 하자.

 

아직은 어려운 것 같다.

 

 

조건문? 비교연산자?

 

조건문은 간단히 if문이다. if문은 조건이 참일 경우 따라오는 구문을 실행하는 기능을 가진다.

 

fun main() {

  var a = 7        ------> 변수를 만들고

  if(a > 10) {        -------> a가 10보다 클 때

    println("a는 10보다 크다")        -------> "a는 10보다 크다"라고 출력한다.

  }

 

}

 

이렇게만 한다면, 조건이 거짓이기 때문에 아무것도 실행되지 않는다.

 

이럴땐, else가 필요하다.

 

fun main() {

  var a = 7

  if(a > 10) {

    println("a는 10보다 크다")

  }

  else {

    println("a는 10보다 작거나 같다") ------> 그 외의 경우 "a는 10보다 작거나 같다"를 출력한다.

 

}

 

조건이 참일 경우 (a 값이 10보다 클 경우)는 "a는 10보다 크다"가 출력될 것이다.

 

 

이런 조건을 걸 때, 비교연산자라는 것을 사용한다.

 

비교연산자의 종류

 

부등호

 

<(작다) <=(작거나 같다) >(크다) >=(크거나 같다) !=(같지 않다)

 

등호

 

==(같다) [=은 값을 할당한다는 뜻이므로 =를 두번 쳐서 같다고 표시한다.]

 

자료형이 맞는지 틀린지 체크하는

 

is(맞는지) !is(틀린지)

 

[a is Int -> a의 자료형이 Int이다.] <- 형변환까지 한번에 시켜줌

 

등이 있다.

 

 

 

다음으로 다중 조건문을 알아보자.

 

다중 조건문은 if가 참과 거짓만을 비교할 수 있는 반면 when은 하나의 변수를 여러개의 값과 비교할 수 있다는 장점이 있다.

 

fun main() {

 

  doWhen(1)

  doWhen("DiMo")

  doWhen(12L)               --------------> doWhen이라는 함수에 이 값을 할당한다.

  doWhen(3.14159)

  doWhen("Kotlin")

 

}

 

fun doWhen (a: Any) {       ----------------> doWhen이라는 함수를 만들고, 패러미터 a를 만든다.

 

  when(a) {

        1 -> println("정수 1입니다.")     -------------> 1일 경우 출력

        "DiMo" -> println("디모입니다.")      ---------------> "DiMo"일 경우 출력

        is Long -> println("Long 타입 입니다.")  ----------------> Long타입일 경우 출력

        !is String -> println("String 타입이 아닙니다.")    ---------------> String타입이 아닐 경우 출력

        else -> println("어떤 조건도 만족하지 않습니다.")   -------------->그 외의 경우 출력

  }

 

}

 

결과는 직접 알아보면 된다.

 

이제까지 when이 조건문으로 사용되는 것을 보았고,

 

when은 또한 표현식으로도 사용이 가능하다.

 

직접 값으로 사용하려면,

 

1 -> println("정수 1입니다.")    

"DiMo" -> println("디모입니다.") 

 

이 상태에서

 

1 -> "정수 1입니다"

"DiMo" -> "디모입니다"

 

이렇게 사용해주면  변수에 할당하거나 직접 값으로서 사용할 수 있다.

 

 

fun main() {

 

  doWhen(1)

  doWhen("DiMo")

  doWhen(12L)  

  doWhen(3.14159)

  doWhen("Kotlin")

 

}

 

fun doWhen (a: Any) {      --------------------->doWhen이라는 함수가 작동하면

 

  var result = when(a) {      ---------------------> result라는 변수 안에 when(a)를 넣는다.

        1 -> "정수 1입니다."

        "DiMo" -> "디모입니다." 

        is Long -> "Long 타입 입니다." 

        !is String -> "String 타입이 아닙니다."   

        else -> "어떤 조건도 만족하지 않습니다." 

  }

 

}

 

 

열심히 공부하자 화이팅 ㅋ.ㅋ

Posted by 노꼴甲
,

 

 

공부 자료

 

https://www.youtube.com/watch?v=eMfQycxjAsg&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN&index=4

 

제대로 공부를 하겠다! 하고 이틀째로군요. 열심히 한 번 해봅시당~

 

 

시작에 앞서, 타입추론이란?

 

 - 변수나 함수를 선언할 때나 연산이 이루어질 때 자료를 코드에 명시하지 않아도 코틀린이 자동으로 자료형을 추론해주는 기능

 

예시를 들어보자면, 

 

val stringValue: String = "문자열을 할당한다"

 

var intArr: Array<Int> = arrayOf(1, 2, 3, 4, 5)

 

에서 우리는 String과 Array<Int>를 생략한 바 있다.

 

이는 변수가 선언될 때 할당된 값의 형태로 해당 변수가 어떤 자료형을 가지는지 추론이 가능하기 때문이다.

 

대부분 선언할 때 자료를 입력해준다면 굳이 자료형을 명시할 필요가 없다.

 

 

그렇다면 자료형 없이 값을 할당해버리면 어떤 자료형이 지정되는걸까?

 

var a = 1234 라고 놓았을 때는 일반 정수형 Int

var b = 1234L 라고 놓았을 때는 정수형 Long

var c = 12.34 라고 놓았을 때는 일반 실수형 Double

var d = 12.34f 라고 놓았을 때는 실수형 Float

 

Boolean값과 Char도 역시 자료형 없이 추론이 가능하다.

 

 

 

함수

 

main()이나 코드 내에서 사용되는 println("")도 모두 함수.

 

코틀린에서 함수는 어디에나 둘 수 있다.

 

변수가 var이나 val으로 시작되듯 함수도 function의 준말인 fun으로 시작한다.

 

예제

 

fun main() {

 

}

 

fun add(a: Int, b: Int, c: Int): Int {

// a,b,c의 자료형이 Int이고, 결과값의 자료형(반환형)도 Int라는 뜻 //

// 코틀린은 Int끼리 더하면 Int가 나옴. //

    return a + b + c

//return함수는 값을 반환하는 키워드로, return이 발생하면 함수의 중간이더라도 값을 반환하고 함수를 종료하게 된다.//

}

 

여기서 main() 함수 안에 println(add(5,6,7))을 집어넣어 동작시키면

 

a값에는 5, b값에는 6, c값에는 7이 입력되어

 

결과값은 18이 나오게 된다.

 

 

이렇게 단순한 함수는 단일 표현식 함수로 만들 수 있는데,

 

이는 그냥 간단하게 하나의 기능만을 가진 함수이다.

 

fun add(a: Int, b: Int, c: Int) = a + b + c

 

이런식으로 함수를 만드는 것이 가능하다.

 

또한, 단일 표현식 함수에서는 반환형의 타입추론이 가능하므로 반환형을 생략할 수 있다.

fun add(a: Int, b: Int, c: Int): Int = a + b + c 이렇게 안해도 됨.

 

 

전 강의를 다 이해할 수 있도록 열심히 하도록 합시다.

Posted by 노꼴甲
,

 

공부 자료

 

https://www.youtube.com/watch?v=tvtNch-GPEU&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN&index=3

 

열심히 하자

 

적으면서 하니까 뭔가 공부가 되는 느낌이다.

 

 

 

형변환과 배열?

 

이름 듣자마자 공부하기 싫어진다 증말

 

 

일단 함수가 뭔지부터 알아보자.

 

게임에서 매크로와 같은 기능같다. a 버튼을 누르면 이 스킬도 나가고 저 스킬도 나간다.

 

함수를 호출할 시 특정한 동작이나 원하는 결과값을 받아올 수 있다고 한다. 간단히만 알고 가자.

 

 

그럼 형변환?

 

간단히 하나의 변수에 지정된 자료형을 호환되는 다른 자료형으로 변환하는 기능이다. (논리형은 변환 불가)

 

그냥 자료형 바꾸기라고 생각한다.

 

형변환 함수? toByte(), toShort(), toInt() 등 to 뒤에 자료형을 붙이면 된다.

 

 

예를 들어 Int(32bits)인 a변수를 Long(64bits)인 b변수에 넣는다고 하자.

 

fun main() {

 

    var a: Int = 1234

    var b: Long = a

 

}

 

코틀린에서는 그냥 할당만 해서는 자료형을 변환할 수 없다.

 

반드시 Int형 변수에 toLong() 함수를 호출하여 자료형을 Long으로 변환시켜준다.

 

    var a: Int = 1234

    var b: Long = a.toLong()

 

이런식으로 말이다.

 

이것을 전문용어로서는 명시적 형변환이라고 한다고 하며, 코틀린은 다른 언어들이 지원하는 '암시적 형변환'은 지원하지 않는다 한다.

 

 

배열?

 

일반적인 배열이다. Array<T>라고 하던데 무슨 의미인지 모르겠다.

 

fun main() {

 

    var intArr = arrayOf(1, 2, 3, 4, 5)

 

}

 

일단 intArr이라는 변수를 지정해주고, arrayOf 함수를 통해 배열에 저장할 값들을 나열해주면 된다.

 

비어있는 함수를 만들고 싶다면

 

var nullArr = arrayOfNulls<Int>(5) 

 

로 만들어주면 된다. 여기서 (5)는 5의 크기를 가진 Null으로 채워진 배열이 된다는 뜻이다.

 

arrayOfNulls 함수는 <>가 들어가는데 이 안에 자료형을 넣어주면 된다.

 

이를 Generic이라고 하는데, 나중에 알려준다고 한다.

 

 

그럼 배열은 어떻게 사용하는가.

 

아까 선언한 변수 intArr에 대괄호를 붙이면 된다.

 

intArr[2] 이런 식으로 쓰면 되는데 여기서 2는 배열 안의 3번째 값을 말한다. (0번째, 1번째 ... 이런식으로 시작하기 때문)

 

 

fun main() {

 

    var intArr = arrayOf(1, 2, 3, 4, 5)

 

    intArr[2] = 8   -------> 해당 위치의 값을 할당할 수도 있고,

 

    println(intArr[4]) -------> 이런 식으로 값을 사용할 수도 있다.

 

}

 

실행해보면,

 

5가 출력되는 것을 볼 수 있다. (배열은 (1, 2, 8, 4, 5)가 된다. 3번째의 값을 8로 바꿨기 때문)

 

 

열심히 하자

Posted by 노꼴甲
,

 

일단 처음 입문하는 사람에게 코틀린은 상당히 접근하기 쉬운 언어라고 할 수 있는 것 같다.

 

코틀린을 공부하는 사람들은 보통 어플리케이션을 출시 해보려고 이것저것 알아보다가 안드로이드 스튜디오를 알게 되어

 

안드로이드 스튜디오의 베이스 언어는 코틀린과 자바라는 것을 알게되고 그 중에서 코틀린은 자바보다 접근하기 좋은 언어라는 것을 알게 되어 공부를 시작하게 되는 것 같다.

 

나도 마찬가지로 그렇게 시작하였고, 기존 언어를 모르던 사람들은 이 코틀린 언어 공부에 엄청 어려움을 겪고 있을 것이다. (나도 기존 언어를 전혀 알지 못한 채 시작한다.)

 

항상 유튜브를 통해 공부해왔었고, 며칠간 그림과 운동, 게임을 병행하며 생활해왔기 때문에 코딩 공부에 많이 소홀했다.

 

공부를 할 때마다 정리 노트식으로 이 블로그를 활용할 계획이다. 잘 부탁한다.

 

 

공부 자료

 

IT's DiMo : 잇츠 디모 /  [유튜브 강의] : https://www.youtube.com/channel/UCVqKQvma-Cr-eQ4hgxETAFQ

 

IT's DiMo : 잇츠 디모

소프트웨어로 세상을 보는 법, 프로개발자 디모와 함께 하세요! 😉 좋은 영상을 위한 채널 후원, 투네이션을 통해서 해주세요! 후원링크 https://toon.at/donate/dimo 매주 토요일 밤 8시에는 시청자 여러분과 라이브방송으로 소통합니다. 많은 참여 부탁드립니다!

www.youtube.com

 

책 자료

 

안드로이드 with Kotlin 앱 프로그래밍 가이드

 

 

잇츠 디모의 유튜브 강의를 모두 본다면, 패스트캠퍼스의 강의도 들어보려고 하는데, 괜찮으려나 싶다.

 

Posted by 노꼴甲
,