Instruções Gerais:

  • Resolva as atividades em ordem progressiva de maturidade.
  • Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
  • Consulte o gabarito comentado ao final de cada questão para autoavaliação.

🎯 Nível 1: Fundamentos

Problema 06.1 — Null Safety e Expressões Idiomáticas em Kotlin

Contexto: Null Safety e Expressões Idiomáticas em Kotlin no contexto de Linguagem Kotlin: Sintaxe Moderna, Null Safety e Coroutines.

Requisitos de Execução:

  1. Declarar variáveis anuláveis e processar com operador Elvis ?: e Safe Call ?..

Resultado Esperado

Operações seguras sem risco de NullPointerException.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_06_1_SeuNome
  2. Envie na tarefa: Atividade Cap 06 - Linguagem Kotlin: Sintaxe Moderna, Null Safety e Coroutines
🔑 Gabarito de Código & Solução Comentada
fun formatarUsuario(nome: String?): String {
    return nome?.trim()?.uppercase() ?: "USUARIO_PADRAO"
}

fun main() {
    println(formatarUsuario("Ricardo"))
    println(formatarUsuario(null))
}

🔍 Nível 2: Prática

Problema 06.2 — Extension Functions e Data Classes Imutáveis

Contexto: Extension Functions e Data Classes Imutáveis no contexto de Linguagem Kotlin: Sintaxe Moderna, Null Safety e Coroutines.

Requisitos de Execução:

  1. Criar data class Produto(val id: Int, val preco: Double) e extensão Double.paraReais().

Resultado Esperado

Extensão customizada enriquecendo classes existentes.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_06_2_SeuNome
  2. Envie na tarefa: Atividade Cap 06 - Linguagem Kotlin: Sintaxe Moderna, Null Safety e Coroutines
🔑 Gabarito de Código & Solução Comentada
data class Produto(val id: Int, val nome: String, val preco: Double)

fun Double.paraReais(): String = "R$ %.2f".format(this)

fun main() {
    val p = Produto(1, "Monitor 4K", 2899.90)
    println("Produto: ${p.nome} custa ${p.preco.paraReais()}")
}

⚡ Nível 3: Integração

Problema 06.3 — Concorrência com Kotlin Coroutines (launch, async e await)

Contexto: Concorrência com Kotlin Coroutines (launch, async e await) no contexto de Linguagem Kotlin: Sintaxe Moderna, Null Safety e Coroutines.

Requisitos de Execução:

  1. Executar chamadas paralelas assíncronas utilizando coroutineScope e async.

Resultado Esperado

Chamadas assíncronas paralelas consolidadas sem travar threads.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_06_3_SeuNome
  2. Envie na tarefa: Atividade Cap 06 - Linguagem Kotlin: Sintaxe Moderna, Null Safety e Coroutines
🔑 Gabarito de Código & Solução Comentada
import kotlinx.coroutines.*

suspend fun buscarPreco(): Double { delay(50); return 150.0 }
suspend fun buscarFrete(): Double { delay(50); return 20.0 }

fun main() = runBlocking {
    val preco = async { buscarPreco() }
    val frete = async { buscarFrete() }
    val total = preco.await() + frete.await()
    println("Total calculado assincronamente: R$ $total")
}

🏆 Nível 4: Desafio Corporativo

Problema 06.4 — Processamento Reativo com Kotlin Flow (cold streams)

Contexto: Processamento Reativo com Kotlin Flow (cold streams) no contexto de Linguagem Kotlin: Sintaxe Moderna, Null Safety e Coroutines.

Requisitos de Execução:

  1. Emitir sequência reativa com operador flow, filter e coletar com collect.

Resultado Esperado

Fluxo de eventos reativo com alta performance.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_06_4_SeuNome
  2. Envie na tarefa: Atividade Cap 06 - Linguagem Kotlin: Sintaxe Moderna, Null Safety e Coroutines
🔑 Gabarito de Código & Solução Comentada
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*

fun gerarNumeros(): Flow<Int> = flow {
    for (i in 1..5) { emit(i) }
}

fun main() = runBlocking {
    gerarNumeros()
        .filter { it % 2 != 0 }
        .collect { print("$it ") }
    println("
Fluxo reativo concluido.")
}