Programa Kotlin para verificar o ano bissexto

Neste programa, você aprenderá a verificar se o ano em questão é bissexto ou não em Kotlin. Isso é verificado usando uma instrução if else e uma instrução when.

Um ano bissexto é exatamente divisível por 4, exceto pelos anos do século (anos que terminam em 00). O ano do século é um ano bissexto apenas se for perfeitamente divisível por 400.

Exemplo 1: programa Kotlin para verificar um ano bissexto usando a instrução if else

 fun main(args: Array) ( val year = 1900 var leap = false if (year % 4 == 0) ( if (year % 100 == 0) ( // year is divisible by 400, hence the year is a leap year leap = year % 400 == 0 ) else leap = true ) else leap = false println(if (leap) "$year is a leap year." else "$year is not a leap year.") )

Quando você executa o programa, a saída será:

 1900 não é um ano bissexto.

No programa acima, dado ano 1900 é armazenado no ano variável.

  • Uma vez que 1900 é divisível por 4 e também é um ano do século (terminando com 00), pode ser dividido por 400 para um ano bissexto. Como não é divisível por 400, 1900 não é um ano bissexto.
  • Mas, se mudarmos o ano para 2000, ele é divisível por 4, é um ano do século e também é divisível por 400. Portanto, 2000 é um ano bissexto.
  • Da mesma forma, se mudarmos o ano para 2012, ele é divisível por 4 e não é um ano do século, portanto, 2012 é um ano bissexto. Não precisamos verificar se 2012 é divisível por 400 ou não.

Aqui está o código Java equivalente: Programa Java para verificar o ano bissexto

Exemplo 2: programa Kotlin para verificar o ano bissexto usando a expressão when

 fun main(args: Array) ( val year = 2012 var leap = false leap = when ( year % 4 == 0 -> ( when ( year % 100 == 0 -> year % 400 == 0 else -> true ) ) else -> false ) println(if (leap) "$year is a leap year." else "$year is not a leap year.") )

Ao executar o programa, a saída será:

 2012 é um ano bissexto.

No programa acima, em vez de usar uma instrução if else, usamos uma expressão when.

A whenexpressão funciona como:

  • Quando o ano é divisível por 4
    • Outra whenexpressão é inserida que verifica se o ano é divisível por 100
      • Se sim, ele verifica novamente se o ano é divisível por 400 ou não, e retorna trueoufalse
    • Se não for divisível por 100, o ano não é um ano do século (terminando com 00) e retorna true
  • Se o ano não for divisível por 4, ele retorna false

Com base no valor de leap, ele imprime a saída usando um if else inline.

Artigos interessantes...