VARIABLES
Friday, October 30, 2020 9:13 AM
Variables en KOTLIN MUTABLES INMUTABLES DEFINIDAS CON val
1. Mutables. DEFINIDAS CON var
2. Inmutables. val saludo = "Bienvenido"
var edad = 10
val saludo: String ="Este es un saludo"
var edad: Int = 100
EN KOTLIN NO ES NECESARIO INICIALIZAR LAS VARIABLES, SE PUEDE DEFINIR SU VALOR
POSTERIORMENTE.
var name:String
val salario
name = "Jaime"
salario = 11325.00
KOTLIN página 1
OPERADORES
Friday, October 30, 2020 9:11 AM
1. ARITMÉTICOS. ARITMÉTICOS RELACIONALES ASIGNACIÓN
2. RELACIONALES. + > += a+=b a.plusAssign(b)
3. DE ASIGNACIÓN. - <
-= a-=b a.minusAssign(b)
4. UNARIO. * >=
5. LÓGICOS. / <= *= a*=b a.timesAssign(b)
6. RANGO. % == /= a/=b a.divAssign(b)
7. OPERADOR in. != %= a%=b a.remAssign(b)
8. ACCESO INDEXADO.
LÓGICOS OPERADOR DE RANGO
UNARIO
&& and .. a in 1..10
+ +a a.unaryPlus()
|| or
- -a a.unaryMinus()
! not
++ ++a a.inc()
-- --a a.dec()
! !a a.not()
OPERADOR in ACCESO INDEXADO
in a in b b.contains(a) a[i] a.get(i)
!in a !in b !b.contains(a) a[i,n] a.get(i,n)
a[1,2,..,n] a.get(1,2,…,n)
a[i] = b a.set(i,b)
a[i,n] = b a.set(i,n,b)
a[i1,i2,…,in] = b a.set(i1,i2,…,in,b)
KOTLIN página 2
TIPOS DE DATOS Y CONVERSIÓN ENTRE TIPOS
Friday, October 30, 2020 9:38 AM
1. Numérico. fun main(args: Array<String>) fun main(args: Array<String>)
• Byte. { {
• Short. var value1 = 100 var value3 = Long 100
• Int. val value2 : Long = value1.toLong() val value4 : Int = value3.toInt()
• Long. } }
• Double.
• Float.
2. Caracter. short 4B = 16b BYTE
3. Booleano. 2^16 = 65,536 val rango: Byte = 80
4. Cadena. CON SIGNO EL RANGO ES -32768 a 32767 println($rango)
• Escaped. SIN SIGNO 0 a 65535
• Raw.
5. Arreglo.
DOUBLE INT
val distancia: Double = 999.54 val score:Int = 100000
println($distancia) println($score)
RAW ARRAY
SON DECLARADAS CON TRIPLE (""" """) val id = arrayOf(1,2,3,4,5)
val firstid = id[0]
val rawstring:String = "Soy una raw String" val ultimo = id[id.size -1]
print($rawstring)
KOTLIN página 3
CADENAS
Friday, October 30, 2020 9:44 AM
var str: String = "Saludos" CREAR CADENA VACÍA OPERADOR INDEXADO
var str = "Saludos" var str = "Hola Mundo"
var newstring: String = 'Saludos' //ERROR var s = String() println(str[0]) //IMPRIME H
var newstring: String = 2 //ERROR
\$ ITERACIÓN SOBRE UNA CADENA SECUENCIAS DE ESCAPE
\n NUEVA LÍNEA
var nombre: String = "Cualquier nombre" for (elemento in str)
\t TABULADOR
var edad: Short = 15 {
println(elemento) \b BACKSPACE
println("Bienvenid@ $nombre tu edad es $edad") } \' COMILLA SIMPLE
\" COMILLAS DOBLES
\\ BACKSLASH
\r RETORNO DE CARRO
\$ PLANTILLA DE
CADENA
KOTLIN página 4
COMENTARIOS
Saturday, October 31, 2020 8:55 AM
// UNA LÍNEA
/**/ MÚLTIPLES LÍNEAS
KOTLIN página 5
IF
Friday, October 30, 2020 9:12 AM
If(condición) If(condición) If(condición)
{} {} {}
else else if (condición)
{} {}
else
{}
var x = 2 var y = 1 val num1 = 10
If(x%2 == 0) If(y%2 == 0) val num2 = 20
println("Es número par") println("Número par") val result = if (num1 > num2)
else {"$num1 es mayor que $num2"}
println("Número inpar") else if (num2 > num1)
{"$num2 es mayor que $num1"}
else
{"Es el mismo número"}
KOTLIN página 6
WHEN (SWITCH Ó SELECCIÓN MÚLTIPLE)
Saturday, October 31, 2020 8:56 AM
fun main (args: Array<Strings>) fun main (args: Array<Strings>)
{ {
var number = 4 var number = 4
var numberProvided = when (number) when (number)
{ {
1-> "Uno" 1-> "Uno"
2-> "Dos" 2-> "Dos"
3-> "Tres" 3-> "Tres"
4-> "Cuatro" 4-> "Cuatro"
5-> "Cinco" 5-> "Cinco"
else -> println "Valor no válido" else -> println "Valor no válido"
} }
println("Número capturado $numberProvided") }
}
fun main (args: Array<Strings>) fun main (args: Array<Strings>)
{ {
var number = 9 var mes = 11
when (number) when (mes)
{ {
1,3,5,7,9-> println("Número inpar") in 3..6 -> println("Primavera")
2,4,6,8-> println("Número par") in 7..9-> println("Verano")
else -> println "Valor no válido" in 10..11 -> println("Otoño")
} 12, in 1..2 -> println("Invierno")
println("Número capturado $number") else -> println "Valor no válido"
} }
}
fun main (args: Array<Strings>)
{
var dia = 1
when (dia)
{
1 -> { println("Hoy es Lunes")
println("primer día de la semana") }
2 -> { println("Hoy es Martes")
println("segundo día de la semana") }
3 -> { println("Hoy es Miércoles")
println("tercer día de la semana") }
4 -> { println("Hoy es Jueves")
println("cuarto día de la semana") }
KOTLIN página 7
println("cuarto día de la semana") }
5 -> { println("Hoy es Viernes")
println("quinto día de la semana") }
6 -> { println("Hoy es Sábado")
println("sexto día de la semana") }
7 -> { println("Hoy es Domingo")
println("Séptimo día de la semana") }
else -> println "Valor no válido"
}
}
KOTLIN página 8
WHILE LOOP
Tuesday, November 3, 2020 9:53 AM
while (Expresión a evaluar) fun main(args: Array<String>) fun main(args: Array<String>)
{ { {
//Sentencias del while var i = 0 var i = 100
} while (i <= 10) var sum = 0
{ while (i != 0)
println(i) {
i++ // i = i + 1 ó i += 1 sum += i
} --i
} }
println("El total es: $sum")
}
KOTLIN página 9
LOOP
Tuesday, November 3, 2020 9:30 AM
fun main (args: Array<Strings>)
for (item in collection) {
{ //IMPRIME DEL 1 AL 5
//Sentencias o cuerpo del loop println("for i in 1..5")
} for (i in 1..5) print(i)
println ()
fun main (args: Array<Strings>) //NO IMPRIME DEL 5 AL 1
{ println("for i in 5..1")
val precios = arrayOf(80.0,85.0,92.50,98.45,99.99) for (i in 5..1) print(i)
for (item in precios) println ()
{ println (item) }
} //IMPRIME DEL 1 AL 5
println("for i in 5..1")
for (i in 5 downTo 1 ) print(i)
fun main (args: Array<Strings>) println ()
{
val precios = arrayOf(80.0,85.0,92.50,98.45,99.99) //IMPRIME NÚMEROS PARES DEL 2 AL 10
for (item in precios.indices) println("for i in 2..10")
{ println ("precios[$item] = " + precios[item]) } for (i in 2..10 step 2) print(i)
} println ()
Precios[0] = 80.0 //IMPRIME NÚMEROS PARES DEL 10 AL 2
Precios[1] = 85.0 println("for i in 10..2")
Precios[2] = 92.50 for (i in 10..2 step 2) print(i)
Precios[3] = 98.45 println ()
Precios[4] = 99.99 }
KOTLIN página 10
BREAK
Wednesday, November 4, 2020 9:13 AM
fun main(args: Array<String>) fun main(args: Array<String>) Break etiquetado
{ {
for (i in 1..10) var sum = 0 fun main(args: Array<String>)
{ var num: Int {
if ( i == 5) while (true) primero@ for (i in 1..10)
{ break } { {
println(i) print("Escribe un número: ") segundo@ for (j in 1..10)
} num = readLine()!!.toInt {
} if ( num == 0) println("i = $i; j = $j")
break if ( i == 5)
sum += num break @primero
} }
println("Suma = $sum") }
} }
KOTLIN página 11
JUMP
Wednesday, November 4, 2020 9:34 AM
fun main(args: Array<String>)
{
for (i in 1..3)
{
println("i = $i")
if (j == 2)
{ continue }
}
}
KOTLIN página 12
FUN
Wednesday, November 4, 2020 9:40 AM
Librería estándar Función definida por el usuario
fun main(args: Array<String>) fun Nombre_de_la_función ()
{ {
//AQUÍ ESCRIBE SENTENCIAS //CUERPO DE LA FUNCIÓN
} }
PARA INVOCAR A UNA FUNCIÓN DEBEMOS ESCRIBIR SU NOMBRE Y LOS
PARÁMETROS QUE SEAN NECESARIOS, EN CASO NO REQUERIR
PARÁMETROS LA FUNCIÓN SOLO DEBE TERMINAR CON ().
fun main(args: Array<String>)
{
suma()
}
Fun suma()
{
var num1 = 10
var num2 = 8
println ("El resultado de la suma de $num1 + $num2 es de: " + (num1 + num2))
}
fun main(args: Array<String>)
{
var num1 = 10
var num2 = 8
suma(num1,num2)
}
Fun suma(n1,n2)
{ println ("El resultado de la suma de $n1 + $n2 es de: " + (n1 + n2)) }
fun main(args: Array<String>)
{
var num1: Int
var num2: Int
print ("Capture el primer número: ")
num1 = readLine()!!.toInt()
print ("\n Capture el segundo número: ")
num2 = readLine()!!.toInt()
suma(num1,num2)
resta(num1,num2)
mult(num1,num2)
divi(num1,num2)
}
Fun suma(n1,n2)
KOTLIN página 13
Fun suma(n1,n2)
{ println ("El resultado de la suma de $n1 + $n2 es de: " + (n1 + n2)) }
Fun resta(n1,n2)
{ println ("El resultado de la resta de $n1 - $n2 es de: " + (n1 - n2)) }
Fun mult(n1,n2)
{ println ("El resultado de la suma de $n1 * $n2 es de: " + (n1 * n2)) }
Fun divi(n1,n2)
{ println ("El resultado de la suma de $n1 / $n2 es de: " + (n1 / n2)) }
KOTLIN página 14
RECURSIVE FUNCTION
Thursday, November 5, 2020 9:11 AM
fun main(args: Array<String>)
{
recursiva()
}
fun recursiva()
{
recursiva()
}
var contador = 0 fun main(args: Array<String>)
fun reg () {
{ val num = 10
contador++ val res: Long
if (contador <= 5) res = factorial (num)
{ println("El factorial de $num es: $res")
println(contador) }
reg()
} fun factorial (n: Int): Long
} {
return if (n == 1)
fun main(args: Array<String>) { n.toLong }
{ else
reg() { n * factorial (n - 1) }
} }
fun main(args: Array<String>)
{
var num = 100000.toLong()
var sumarecursiva = recursiva(num)
println("El resultado de la suma es: $sumarecursiva")
}
tailrec fun sumarecursiva (n: Long, semiresult:Long = 0): Long
{
return if (n <= 0)
{ semiresult }
else
{ sumarecursiva ((n - 1), n + semiresult }
}
KOTLIN página 15
HIGH ORDER FUNCTION
Thursday, November 5, 2020 9:55 AM
fun myfun(org: String, portal: String, val result = fn(org, portal)
{
println(result)
}
fun myfun (org: String, portal:String, fn: (String,String) -> String): Unit
{
val result = fn(org, portal)
print(result)
}
fun main(args: Array<String>)
{
val fn:(String, String) ->String={org, portal ->"$org desarrolla $portal"}
myfun("dev.org","neilsoft.com", fn)
}
KOTLIN página 16
FUNCIÓN LAMBDA
Friday, November 6, 2020 9:16 AM
Las funciones LAMBDA no poseen un nombre y están definidas entre {}
parámetros cuerpo
{ a: Int, b: Int -> a * b} {variable -> cuerpo de la función}
Ejemplo de una suma de dos números enteros utilizando una función normal:
Fun main (args: Array<String>)
{
suma(10,12)
}
Fun suma (a: Int, b: Int)
{
val sum = a + b
print("La suma de $a + $b = " + sum)
}
Ejemplo con una función Lambda
Fun main (args: Array<String>)
{
//FUNCIÓN LAMBDA
val flambda : (Int) -> Unit={s: Int -> print("El resultado es = " + s)}
suma(10,12,flambda)
}
Fun suma (a: Int, b: Int, flambda : (Int) -> Unit)
{
val sum = a + b
flambda(sum)
}
KOTLIN página 17
FUNCIÓN INLINE
Friday, November 6, 2020 9:37 AM
Las funciones en línea no soportan:
• Declaración de clases locales.
• Declaración de función local.
• Valor por default para parámetros opcionales.
• Expresiones de funciones.
• Declaración de clases anidadas.
Ejemplo básico de una función en línea:
Fun main (args: Array<String>)
{
inlineFunction({
println("Llamando a funciones en línea")})
}
inline fun inlinefunction(myFun: () -> Unit)
{
myFun()
println("Código dentro de una función en línea")
}
Ejemplo básico de una control de flujo no local:
Fun main (args: Array<String>)
{
inlineFunction(
{ println("Llamando a funciones en línea") return},
{ println("Parámetro siguiente (next) en una función en línea")}
)
}
inline fun inlinefunction(myFun: () -> Unit, nextFun: () -> Unit)
{
myFun()
nextFun()
println("Código dentro de una función en línea")
}
KOTLIN página 18