728x90
반응형

코도바는 오픈소스 모바일 개발 프레임워크이다. 

이 프레임워크는 웹 기술인 HTML5, CSS3, JavaScript를 사용해 모바일 앱을 만들 수 있다.


이것을 사용하면 각 플랫폼(안드로이드, 아이폰, 블랙베리, 윈도우폰 등등)의 언어와 툴로 개발할 필요없이 한번의 개발로 여러 플랫폼의 앱을 만들 수 있다.

또한 네이티브 레벨의 api를 사용해서 네이티브 앱의 구성요소를 추가적으로 넣어서 개발할 수 있다.



코도바 애플리케이션의 구조는 아래 그림과 같다.



728x90
반응형
728x90
반응형

이번에는 흐름제어에 대해서 알아보겠습니다.


흐름제어에는 제어문에 해당하는 if, when이 있고 반복문에 해당하는 for, while이 있습니다.

자바와 다른점은 switch가 보이지 않고 새로운 when이 생겼다는 것입니다.


제어문이란 조건이 참이면 해당 분기로 들어가서 코드를 수행하는 것이고

반복문이란 조건이 참이면 해당 분기로 들어가서 코드를 수행하고 조건이 거짓이 될 때 까지 코드를 반복해서 수행하는 것입니다.


if는 총 3개의 형태를 가지고 있습니다.

  1. if
  2. if...else
  3. if...else if...else
if는 ()안에 조건이 참일 경우에 {}안에 코드를 실행하는 조건문입니다.
if else는 바로 위의 if나 if else가 거짓이고 ()안에 조건이 참일 경우에 {}안에 코드를 실행하는 조건문입니다.
else는 if나 if else가 모두 거짓일 경우 처리하는 조건문 입니다.

var score = 100
if (score >= 90) {
println("A")
} else if (score >= 80) {
println("B")
} else if (score >= 70) {
println("C")
} else {
println("D")
}

위 코드는 score가 

90 이상이면 A

80 이상이면 B

70 이상이면 C

그 외에는 D를 출력하는 코드입니다.



when은 switch의 확장판이라고 보면 좋을 것 같습니다.

val x = 1
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}

위 코드를 보면서 switch와 다른점을 보겠습니다.

- switch가 when으로 변경

- case 1:이 1로 변경

- ->가 새로 추가

- break; 사라짐

- default가 else로 변경

입니다.


when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}

또한 ,를 사용해서 여러개 조건을 동시에 처리 할 수도 있습니다.

마치 break를 사용하지 않고 여러개 case를 처리하는 것과 같다고 볼수 있습니다.


val x = 1
val s = "1"
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}

자바에서는 case에 들어가는 값들은 상수만 가능했지만 when에서는 함수의 결과값을 넣을 수 있습니다.


val x = 5
val validNumbers = ArrayList<Int>()
validNumbers.apply {
add(30)
add(40)
add(50)
}
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}

in 키워드를 사용하면 범위의 값을 확인 할 수 있습니다.

apply는 나중에 설명하겠습니다.



for는 자바에 있는 for-each 문과 비슷합니다.

val validNumbers = ArrayList<Int>()
validNumbers.apply {
add(10)
add(20)
add(30)
add(40)
add(50)
}

for (item in validNumbers) {
println(item)
}

validNumbers에 있는 값들을 item에 첫 번째부터 넣어서 가져옵니다.


for (i in validNumbers.indices) {
println(i)
}

만약 인덱스 값을 가져오고 싶다면 indices값을 사용합니다.


for ((index, value) in validNumbers.withIndex()) {
println("index: ${index}, value: ${value}")
}

index와 value를 같이 가져오고 싶다면 withIndex()를 사용해서 가져올 수 있습니다.



while은 ()안에 값이 참인 경우에 동작하는 반복문 입니다.

자바에 있는 것과 동일하게 사용하시면 됩니다.

var i = 0
while (i < 10) {
println(i)
i++
}

while

var i = 0
do {
println(i)
i++
} while (i < 10)

do while


728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

(Kotlin) Break, Continue  (0) 2017.10.06
(Kotlin) Scanner로 입력받기  (2) 2017.07.12
(Kotlin) 속성 기본 타입  (0) 2017.07.06
(Kotlin) IntelliJ 프로젝트 생성하기  (0) 2017.07.06
(Kotlin) 코틀린이란  (0) 2017.07.06
728x90
반응형

이번 글은 콘솔에서 데이터를 입력 받는 부분에 대해서 알아 보겠습니다.


사용자로부터 데이터를 입력 받기 위해서는 Scanner 객체에 System.in(InputStream)을 넣어서 생성한 인스턴스를 사용해야합니다.


System.in은 키보드와 연결 된 자바의 표준 입력 스트림으로 사용자가 키보드를 통해 입력한 데이터를 컴퓨터를 통해 프로그램에 전달해주는 역할을 합니다.


Scanner객체는 System.in을 통해 전달 된 데이터를 언어의 기본타입으로 변환해주는 역할을 합니다.


위에 설명했던 내용들을 Kotlin 코드로 아래와 같이 나타낼 수 있습니다.

import java.util.Scanner

fun main(args: Array<String>){
val sc: Scanner = Scanner(System.`in`)
}

Java를 했던 사람이라면 위 코드가 어떤 형태인지 금방 이해 할 것입니다.


Scanner객체에 System.in이라는 InputStream을 넣어서 만든 인스턴스를 sc에 저장한 형태입니다.


그리고 Scanner객체는 java.util패키지 안에 있는 클래스이기 때문에 import를 사용해서 추가해줘야합니다.


여기서 Java와 다른점이 System.`in`입니다.


in은 Kotlin에서 사용하는 예약어라서 Java에서 사용하던 변수명을 ``으로 감싸서 사용하는 것입니다.


Scanner 객체에서 사용하는 주요 메소드들입니다.


 메소드

설명 

 next(): String!

 String 타입으로 리턴

 nextByte(): Byte

 Byte 타입으로 리턴

 nextShort(): Short

 Short 타입으로 리턴

 nextInt(): Int

 Int 타입으로 리턴

 nextLong(): Long

 Long 타입으로 리턴

 nextFloat(): Float

 Float 타입으로 리턴

 nextDouble(): Double

 Double 타입으로 리턴

 nextLine(): String!

 '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지 문자열을 String  타입으로 리턴

지금 String뒤에 !에 대해서 몰라도 상관없습니다. 이 부분은 나중에 다루겠습니다.


간단한 예제로 이름과 나이를 입력받고 콘솔에 출력해주는 코드를 작성해 보겠습니다.


fun main(args: Array<String>){
val sc: Scanner = Scanner(System.`in`)

val name = sc.nextLine()
val age = sc.nextInt()

println("name: $name, age: $age")

}

name을 nextLine으로 문자열을 입력받고 age를 nextInt로 정수를 입력받습니다.

그리고 println함수를 사용해 name과 age를 출력합니다. 



위는 결과 화면입니다.



728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

(Kotlin) Break, Continue  (0) 2017.10.06
(Kotlin) 흐름제어 if when for while break continue  (0) 2017.07.12
(Kotlin) 속성 기본 타입  (0) 2017.07.06
(Kotlin) IntelliJ 프로젝트 생성하기  (0) 2017.07.06
(Kotlin) 코틀린이란  (0) 2017.07.06

+ Recent posts