Kotlin - Fluxo de Controle

No capítulo anterior, aprendemos sobre os diferentes tipos de tipos de dados disponíveis no sistema Kotlin. Neste capítulo, discutiremos os diferentes tipos de mecanismo de fluxo de controle disponíveis no Kotlin.

If - Else

Kotlin é uma linguagem funcional, portanto, como toda linguagem funcional em Kotlin “if”é uma expressão, não é uma palavra-chave. A expressão“if”retornará um valor sempre que necessário. Como outras linguagens de programação,“if-else”bloco é usado como um operador de verificação condicional inicial. No exemplo a seguir, compararemos duas variáveis ​​e forneceremos a saída necessária de acordo.

fun main(args: Array<String>) {
   val a:Int = 5
   val b:Int = 2
   var max: Int
   
   if (a > b) {
      max = a
   } else {
      max = b
   }
   print("Maximum of a or b is " +max)
 
   // As expression 
   // val max = if (a > b) a else b
}

O trecho de código acima produz a seguinte saída como resultado no navegador. Nosso exemplo também contém outra linha de código, que descreve como usar“If” declaração como uma expressão.

Maximum of a or b is 5

Uso de quando

Se você está familiarizado com outras linguagens de programação, então deve ter ouvido falar do termo switch statement, que é basicamente um operador condicional quando várias condições podem ser aplicadas a uma determinada variável. “when”operador compara o valor da variável com as condições do ramo. Se estiver satisfazendo a condição de ramificação, ele executará a instrução dentro desse escopo. No exemplo a seguir, aprenderemos mais sobre “quando” em Kotlin.

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1 -> print("x = = 1")
      2 -> print("x = = 2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

O trecho de código acima produz a seguinte saída no navegador.

x is neither 1 nor 2

No exemplo acima, o compilador Kotlin corresponde ao valor de xcom os ramos fornecidos. Se não corresponder a nenhum dos ramos, ele executará a outra parte. Praticamente, quando é equivalente a um bloco if múltiplo. Kotlin oferece outra flexibilidade para o desenvolvedor, onde o desenvolvedor pode fornecer várias verificações na mesma linha, fornecendo “,” dentro das verificações. Vamos modificar o exemplo acima como segue.

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1,2 -> print(" Value of X either 1,2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

Execute o mesmo no navegador, o que produzirá a seguinte saída no navegador.

x is neither 1 nor 2

For Loop

Loop é uma invenção que fornece flexibilidade para iterar por meio de qualquer tipo de estrutura de dados. Como outras linguagens de programação, Kotlin também oferece muitos tipos de metodologia de Looping, no entanto, entre eles“For”é o mais bem sucedido. A implementação e o uso do loop For são conceitualmente semelhantes ao loop for Java. O exemplo a seguir mostra como podemos usar o mesmo em exemplos da vida real.

fun main(args: Array<String>) {
   val items = listOf(1, 2, 3, 4)
   for (i in items) println("values of the array"+i)
}

No trecho de código acima, declaramos uma lista nomeada como “itens” e, usando o loop for, estamos iterando através dessa lista definida e imprimindo seu valor no navegador. A seguir está a saída.

values of the array1
values of the array2
values of the array3
values of the array4

A seguir está outro exemplo de código, onde estamos usando alguma função de biblioteca para tornar nosso trabalho de desenvolvimento mais fácil do que nunca.

fun main(args: Array<String>) {
   val items = listOf(1, 22, 83, 4)
   
   for ((index, value) in items.withIndex()) {
      println("the element at $index is $value")
   }
}

Depois de compilar e executar o trecho de código acima em nosso campo de codificação, ele produzirá a seguinte saída no navegador.

the element at 0 is 1
the element at 1 is 22
the element at 2 is 83
the element at 3 is 4

Loop While e Loop Do-While

While e Do-While funcionam exatamente de maneira semelhante como fazem em outras linguagens de programação. A única diferença entre esses dois loops é que, no caso do loop Do-while, a condição será testada no final do loop. O exemplo a seguir mostra o uso doWhile loop.

fun main(args: Array<String>) {
   var x:Int = 0
   println("Example of While Loop--")
   
   while(x< = 10) {
      println(x)
      x++
   } 
}

O trecho de código acima produz a seguinte saída no navegador.

Example of While Loop--
0
1
2
3
4
5
6
7
8
9
10

Kotlin também tem outro loop chamado loop Do-While, onde o corpo do loop será executado uma vez, somente então a condição será verificada. O exemplo a seguir mostra o uso doDo-while loop.

fun main(args: Array<String>) {
   var x:Int = 0
   do {
      x = x + 10
      println("I am inside Do block---"+x)
   } while(x <= 50)
}

O trecho de código acima produz a seguinte saída no navegador. No código acima, o compilador Kotlin irá executar o bloco DO, então ele irá para a verificação de condição do bloco while.

I am inside Do block---10
I am inside Do block---20
I am inside Do block---30
I am inside Do block---40
I am inside Do block---50
I am inside Do block---60

Uso de Return, Break, Continue

Se você está familiarizado com qualquer linguagem de programação, então deve ter uma ideia de diferentes palavras-chave que nos ajudem a implementar um bom fluxo de controle na aplicação. A seguir estão as diferentes palavras-chave que podem ser usadas para controlar os loops ou qualquer outro tipo de fluxo de controle.

Return- Return é uma palavra-chave que retorna algum valor para a função de chamada da função chamada. No exemplo a seguir, implementaremos esse cenário usando nosso campo de codificação Kotlin.

fun main(args: Array<String>) {
   var x:Int = 10
   println("The value of X is--"+doubleMe(x))
}
fun doubleMe(x:Int):Int {
   return 2*x;
}

No trecho de código acima, estamos chamando outra função e multiplicando a entrada por 2 e retornando o valor resultante para a função chamada que é nossa função principal. Kotlin define a função de uma maneira diferente, que veremos em um capítulo subsequente. Por enquanto, basta entender que o código acima irá gerar a seguinte saída no navegador.

The value of X is--20

Continue & Break- Continuar e interromper são a parte mais vital de um problema lógico. A palavra-chave “break” termina o fluxo do controlador se alguma condição falhar e “continue” faz o oposto. Toda essa operação acontece com visibilidade imediata. Kotlin é mais inteligente do que outras linguagens de programação, em que o desenvolvedor pode aplicar mais de um rótulo como visibilidade. O código a seguir mostra como estamos implementando esse rótulo no Kotlin.

fun main(args: Array<String>) {
   println("Example of Break and Continue")
   myLabel@ for(x in 1..10) { // appling the custom label
      if(x = = 5) {
         println("I am inside if block with value"+x+"\n-- hence it will close the operation")
         break@myLabel //specifing the label
      } else {
         println("I am inside else block with value"+x)
         continue@myLabel
      }
   }
}

O trecho de código acima produz a seguinte saída no navegador.

Example of Break and Continue
I am inside else block with value1
I am inside else block with value2
I am inside else block with value3
I am inside else block with value4
I am inside if block with value5
-- hence it will close the operation

Como você pode ver, o controlador continua o loop, até e a menos que o valor de x é 5. Uma vez que o valor de x chega a 5, ele começa a executar o bloco if e uma vez que a instrução break é alcançada, todo o fluxo de controle termina a execução do programa.