Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Desafios #55

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/aprenda-kotlin-com-exemplos-lab.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/jpa-buddy.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions aprenda-kotlin-com-exemplos-lab
Submodule aprenda-kotlin-com-exemplos-lab added at 0eb811
27 changes: 19 additions & 8 deletions desafio.kt
Original file line number Diff line number Diff line change
@@ -1,21 +1,32 @@
// [Template no Kotlin Playground](https://pl.kotl.in/WcteahpyN)
enum class Nivel { BASICO, INTERMEDIARIO, AVANCADO }

enum class Nivel { BASICO, INTERMEDIARIO, DIFICIL }

class Usuario
class Usuario(val nome: String)

data class ConteudoEducacional(var nome: String, val duracao: Int = 60)

data class Formacao(val nome: String, var conteudos: List<ConteudoEducacional>) {

val inscritos = mutableListOf<Usuario>()

fun matricular(usuario: Usuario) {
TODO("Utilize o parâmetro $usuario para simular uma matrícula (usar a lista de $inscritos).")
inscritos.add(usuario)
println("Usuário ${usuario.nome} matriculado na formação $nome.")
}
}

fun main() {
TODO("Analise as classes modeladas para este domínio de aplicação e pense em formas de evoluí-las.")
TODO("Simule alguns cenários de teste. Para isso, crie alguns objetos usando as classes em questão.")
// Criação de alguns usuários e conteúdos educacionais
val usuario1 = Usuario("João")
val usuario2 = Usuario("Maria")

val conteudo1 = ConteudoEducacional("Introdução ao Kotlin")
val conteudo2 = ConteudoEducacional("Programação Orientada a Objetos em Kotlin")

// Criação de uma formação e matrícula de usuários
val formacaoKotlin = Formacao("Formação Kotlin", listOf(conteudo1, conteudo2))
formacaoKotlin.matricular(usuario1)
formacaoKotlin.matricular(usuario2)

// Impressão dos usuários matriculados
println("Usuários matriculados na formação ${formacaoKotlin.nome}: ${formacaoKotlin.inscritos.map { it.nome }}")
}
21 changes: 21 additions & 0 deletions desafioProjeto/calculoSalarial.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
object ReceitaFederal {
fun calcularImposto(salario: Double): Double {
val aliquota = when {
(salario >= 0 && salario <= 1100) -> 0.05
(salario > 1100.01 && salario <= 2500) -> 0.1
(salario > 2500.01) ->0.15
else -> throw IllegalArgumentException("Salário inválido")
}
return aliquota * salario
}
}

fun main() {
val valorSalario = readLine()!!.toDouble();
val valorBeneficios = readLine()!!.toDouble();

val valorImposto = ReceitaFederal.calcularImposto(valorSalario);
val saida = valorSalario - valorImposto + valorBeneficios;

println(String.format("%.2f", saida));
}
25 changes: 25 additions & 0 deletions desafioProjeto/dataExtenso.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
fun main() {
val entrada: String? = readLine()

// Utiliza o conceito de "destructuring" para atribuir cada parte da data (dia/mes/ano).
// Referência: https://kotlinlang.org/docs/destructuring-declarations.html
val (dia, mes, ano) = entrada!!.split("/")

val mesPorExtenso = when (mes.toInt()) {
1 -> "Janeiro"
2 -> "Fevereiro"
3 -> "Marco"
4 -> "Abril"
5 -> "Maio"
6 -> "Junho"
7 -> "Julho"
8 -> "Agosto"
9 -> "Setembro"
10 -> "Outubro"
11 -> "Novembro"
12 -> "Dezembro"
else -> "Mês Inválido!"
}

println("$dia de $mesPorExtenso de $ano")
}
9 changes: 9 additions & 0 deletions desafioProjeto/mediaFinalAluno.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
fun main() {
val media = readLine()!!.toDouble();

when {
media < 5 -> println("REP")
media > 7 -> println("APR")
else -> println("REC")
}
}
38 changes: 38 additions & 0 deletions desafioProjeto/numeralRomano.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
fun main() {
val numeroRomano: String? = readLine()

val numerosRomanos = mapOf(
'I' to 1,
'V' to 5,
'X' to 10,
'L' to 50,
'C' to 100,
'D' to 500,
'M' to 1000
)

//TODO("Criar uma variável mutável para armazenar o $resultado")
var resultado = 0

for (i in numeroRomano!!.indices) {
// Recupera o valor em romano do indice atual.
val atual = numerosRomanos.getValue(numeroRomano[i])
// Recupera o valor em romano do próximo indice (caso exista).
val proximo = when (i + 1) {
// Caso o próximo indice não exista, atribui 0 à variável $proximo.
numeroRomano.length -> 0
// Caso contrário, atribui o valor em romano equivalente ao próximo indice.
else -> numerosRomanos.getValue(numeroRomano[i + 1])
}

//TODO("Criar as condições para o cálculo do $resultado (usando $atual e $proximo)")
if (atual < proximo) {
resultado -= atual
} else {
resultado += atual
}

}

print(resultado)
}
24 changes: 24 additions & 0 deletions desafioProjeto/taxaCrescimento.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
data class Pais(var habitantes: Double, val taxaCrescimento: Double) {
fun crescerPopulacaoAnual() {
//TODO("Criar a lógica de crescimento populacional, usando as propriedades do [Pais]")
habitantes += habitantes * (taxaCrescimento / 100)
}
}

fun main() {
val habitantesPaisA = readLine()!!.toDouble();
val habitantesPaisB = readLine()!!.toDouble();
val paisA = Pais(habitantesPaisA, taxaCrescimento = 3.0)
val paisB = Pais(habitantesPaisB, taxaCrescimento = 1.5)

var quantidadeAnos = 0
while (paisA.habitantes < paisB.habitantes) {
//TODO("Invocar a função que consolida o crescimento anual de cada [Pais]")
paisA.crescerPopulacaoAnual()
paisB.crescerPopulacaoAnual()
//TODO("Garantir de a variável mutável $quantidadeAnos seja atualizada")
quantidadeAnos++
}

println("$quantidadeAnos anos")
}
38 changes: 38 additions & 0 deletions padroesProjetos/singleton.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
class User(val id: Int, val name: String)

/*
* No Kotlin, a declaração de um objeto (por meio da palavra-chave object)
* é uma maneira concisa e eficaz de implementar o padrão Singleton.
*/
object UserManager {

private val users = mutableListOf<User>()

fun addUser(name: String) {
//TODO("Implementar a lógica de adicionar um novo usuário na lista mutável $users.")
val newUser = User(users.size + 1, name)
users.add(newUser)
}

fun listUsers() {
//TODO("Implementar a impressão dos $users, seguindo o padrão definido no enunciado.")
if(users.isEmpty()){
println("Nenhum usuário cadastrado.")
}else{
users.forEach{ user ->
println("${user.id} - ${user.name}")
}
}
}
}

fun main() {
val quantity = readLine()?.toIntOrNull() ?: 0

for (i in 1..quantity) {
val name = readLine() ?: ""
UserManager.addUser(name)
}

UserManager.listUsers()
}
Binary file added request-credit-system.zip
Binary file not shown.
40 changes: 40 additions & 0 deletions request-credit-system/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### Kotlin ###
.kotlin
3 changes: 3 additions & 0 deletions request-credit-system/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions request-credit-system/.idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions request-credit-system/.idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading