1. Antes de começar
Neste curso, você vai criar apps escrevendo código na linguagem de programação Kotlin, recomendada pelo Google para a criação de novos apps Android.
Kotlin é uma linguagem de programação moderna que ajuda os desenvolvedores a serem mais produtivos. Por exemplo, Kotlin possibilita que você crie código mais conciso e escreva menos linhas para a mesma funcionalidade em comparação a outras linguagens de programação. Os apps criados com Kotlin também têm menos probabilidade de falhar, resultando em um app mais estável e robusto para os usuários. Com Kotlin, você pode programar apps Android melhores em menos tempo. Como resultado, Kotlin está ganhando espaço no setor e é a linguagem usada pela maioria dos desenvolvedores Android profissionais.
Para começar a criar apps Android em Kotlin, é importante primeiro estabelecer uma base sólida de conceitos de programação em Kotlin. Com os codelabs deste programa de aprendizagem, você vai aprender sobre os conceitos básicos de programação em Kotlin antes de começar a criar apps.
O que você vai criar
- Programas curtos em Kotlin que mostram mensagens quando você os executa.
O que você vai aprender
- Como criar e executar um programa simples em Kotlin.
- Como modificar um programa simples para mudar a saída.
O que é necessário
- Um computador com acesso à Internet e um navegador da Web.
2. Primeiros passos
Neste codelab, você vai explorar e modificar programas simples no Kotlin. Pense em um programa como uma série de instruções para que um computador ou dispositivo móvel realize uma ação, como mostrar uma mensagem a um usuário ou calcular o custo dos itens em um carrinho de compras. As instruções detalhadas do que o computador precisa fazer são chamadas de código. Quando você modifica o código em um programa, a saída pode mudar.
Para escrever e editar um código, você usa uma ferramenta conhecida como editor de código. Essa ferramenta se parece com um editor de texto em que você pode escrever e editar textos, mas também possibilita escrever códigos com mais precisão. Por exemplo, um editor de código mostra sugestões de preenchimento automático enquanto você digita, além de exibir mensagens de erro quando o código está incorreto.
Para praticar as noções básicas da linguagem Kotlin, você vai usar um editor de código interativo chamado Playground Kotlin. Você pode acessar o editor em um navegador da Web, sem a necessidade de instalar softwares no computador. É possível editar e executar o código Kotlin diretamente no Playground Kotlin e ver a saída.
Não é possível criar apps Android no Playground Kotlin. Nos próximos módulos, você vai instalar e usar uma ferramenta chamada Android Studio para criar e editar o código do app Android.
Agora que você aprendeu noções básicas de Kotlin, dê uma olhada no seu primeiro programa.
3. Abrir o Playground Kotlin
Em um navegador da Web no computador, abra o Playground Kotlin.
Você vai ver uma página da Web parecida com esta imagem:
Já há um código padrão preenchido no editor. Estas três linhas de código formam um programa simples:
fun main() {
println("Hello, world!")
}
Mesmo que você nunca tenha programado antes, consegue adivinhar o que o programa faz?
Confira se acertou na próxima seção.
4. Executar seu primeiro programa
Clique em para executar o programa.
Quando você clica no botão Executar, muitas coisas acontecem. O objetivo de códigos na linguagem de programação Kotlin é ser entendido por humanos para que as pessoas possam ler, escrever e colaborar em programas com mais facilidade. No entanto, computadores não entendem essa linguagem de forma imediata.
Você precisa de algo chamado compilador Kotlin, que usa o código que foi escrito, o analisa linha por linha e traduz em algo que o computador entenda. Esse processo é chamado de compilação do código.
Se o código for compilado com sucesso, o programa vai ser executado. Quando o computador executa o programa, ele segue cada uma das instruções. Comparando a uma receita de culinária, seguir cada etapa da receita é semelhante à execução de cada instrução.
Esta é uma captura de tela do que você vai ver ao executar o programa.
Na parte de baixo do editor de código, será exibido um painel que mostra a saída ou o resultado do programa:
Hello, world!
Legal! O objetivo desse programa é exibir ou mostrar a mensagem Hello, world!
.
Como isso funciona? Um programa em Kotlin precisa ter uma função principal, que é o local específico do código onde ele é iniciado. A função principal é o ponto de entrada, ou ponto de partida, do programa.
Você pode estar se perguntando: o que é uma função?
5. Partes de uma função
Uma função é uma seção de um programa que realiza uma tarefa específica. Seu programa pode ter uma ou mais funções.
Definir ou chamar uma função
Em um código, primeiro você define uma função. Isso significa que você especifica todas as instruções necessárias para realizar essa tarefa.
Depois que a função é definida, você pode a chamar para que as instruções dela sejam realizadas ou executadas.
Veja uma analogia. Você vai escrever instruções detalhadas de como fazer um bolo de chocolate. Esse conjunto de instruções pode ter um nome: bakeChocolateCake
(cozinhar um bolo de chocolate). Sempre que você quiser fazer um bolo, vai poder executar as instruções em bakeChocolateCake
. Se quiser três bolos, precisa seguir as instruções de bakeChocolateCake
três vezes. O primeiro passo é definir as etapas e dar um nome a elas. Isso é considerado a definição da função. Em seguida, você pode consultar as etapas sempre que quiser que elas sejam executadas. Isso é considerado a chamada da função.
Definir uma função
Estas são as principais partes necessárias para definir uma função:
- A função precisa de um nome pelo qual possa ser chamada depois.
- Talvez ela também precise de algumas entradas ou informações a serem fornecidas quando a função for chamada. A função usa essas entradas para alcançar a finalidade dela. Exigir entradas é opcional.
- A função também tem um corpo, que contém as instruções para executar a tarefa.
Para converter o diagrama acima em código Kotlin, use a seguinte sintaxe ou formato para definir uma função. A ordem desses elementos é importante. A palavra fun
precisa vir primeiro, seguida do nome da função, das entradas entre parênteses e das chaves ao redor do corpo da função.
Observe as principais partes no exemplo da função main
que você viu no Playground Kotlin:
- A definição da função começa com a palavra
fun
. - O nome da função é
main
. - Como não há entradas para a função, os parênteses estão vazios.
- Há uma linha de código no corpo da função,
println("Hello, world!")
, localizada entre as chaves de abertura e de fechamento da função.
Cada parte da função é explicada com mais detalhes abaixo.
Palavra-chave da função
Para indicar que você está prestes a definir uma função em Kotlin, use a palavra especial fun
(abreviação de "function", função em inglês) em uma nova linha. Digite fun
exatamente como mostrado, com todas as letras minúsculas. Não é possível escrever "func", "function" ou outra grafia alternativa, porque o compilador Kotlin não reconheceria o que você quer dizer.
Essas palavras especiais são chamadas de palavras-chave em Kotlin e são reservadas para uma finalidade específica, como criar uma nova função.
Nome da função
As funções têm nomes para que seja possível as diferenciar umas das outras, da mesma forma que as pessoas têm nomes para se identificarem. O nome da função vem após a palavra-chave fun
.
Escolha um nome adequado para a função com base na finalidade que ela tem. Geralmente, o nome é um verbo ou uma frase verbal. Não é permitido usar palavras-chave do Kotlin (link em inglês) como nomes de funções.
Os nomes das funções precisam seguir a convenção de concatenação, em que a primeira palavra é escrita com letras minúsculas. Se houver várias palavras no nome, não pode haver espaços entre elas e todas as outras palavras precisam começar com letra maiúscula.
Exemplos de nomes de função:
calculateTip
displayErrorMessage
takePhoto
Entradas da função
O nome da função sempre é seguido por parênteses. Use parênteses para listar as entradas da função.
Uma entrada é um dado de que a função precisa para executar a finalidade dela. Ao definir uma função, você pode pedir que determinadas entradas sejam transmitidas quando a função for chamada. Se não houver entradas necessárias para uma função, os parênteses vão ficar vazios ()
.
Veja alguns exemplos de funções com um número diferente de entradas:
O diagrama a seguir mostra uma função com o nome addOne
(adicionar 1). O objetivo da função é somar 1 a determinado número. Há uma entrada, que é o número fornecido. Dentro do corpo da função, há um código que adiciona 1 ao número transmitido à função.
No próximo exemplo, há uma função com o nome printFullName
(mostrar nome completo). Há duas entradas necessárias para a função: uma para o nome e outra para o sobrenome. O corpo da função exibe o nome e o sobrenome na saída para mostrar o nome completo da pessoa.
Este último exemplo mostra uma função que não precisa receber nenhuma entrada quando é chamada. Quando você chama a função displayHello()
, a mensagem "Hello" é exibida na saída.
Corpo da função
O corpo da função contém as instruções necessárias para alcançar a finalidade da função. O corpo da função está localizado nas linhas de código entre as chaves de abertura e fechamento.
Explicação do programa simples
Volte ao programa simples que você viu anteriormente no codelab.
O programa contém uma função: main
. main
é um nome de função especial em Kotlin. No Playground Kotlin, o código precisa ser escrito dentro da função main()
ou chamado usando a função main()
.
Há apenas uma linha de código no corpo desta função main()
:
println("Hello, world!")
Essa linha de código é uma instrução porque realiza uma ação específica, que é mostrar o texto Hello, world!
no painel de saída. Mais especificamente, a função println()
está sendo chamada nessa linha de código. println()
(link em inglês) é uma função que já está definida na linguagem Kotlin. Isso significa que a equipe de engenheiros que criou essa linguagem já escreveu a declaração da função println()
. Essa função exige uma entrada, que é a mensagem a ser mostrada.
Ao chamar a função println()
, coloque o texto da mensagem entre parênteses depois do nome da função. Use aspas ao redor do texto a ser mostrado, como em "Hello, world!"
.
Quando o programa é executado, a mensagem que foi transmitida para a função println()
é mostrada na saída:
Hello, world!
Testar
Volte ao código original do programa. Você pode modificar o código no Playground Kotlin para que a saída mostre a mensagem abaixo?
Hello, Android!
6. Modificar o programa
- Para mudar a mensagem mostrada na saída, modifique a chamada da função
println()
na segunda linha do programa. Substituaworld
porAndroid
na funçãoprintln()
. Confira se"Hello, Android!"
ainda está entre aspas e entre parênteses.
fun main() {
println("Hello, Android!")
}
- Execute o programa.
- A saída vai mostrar esta mensagem:
Hello, Android!
Bom trabalho! Você modificou seu primeiro programa.
Você consegue mudar o código para que a mensagem seja mostrada duas vezes? Veja a saída esperada:
Hello, Android! Hello, Android!
Exibir mais de uma mensagem
É possível inserir quantas linhas de instruções você precisar em uma função para realizar uma tarefa. No entanto, só pode haver uma instrução por linha em Kotlin. Se você quiser escrever outra instrução, coloque-a em uma nova linha da função.
Para mudar o programa de modo que ele mostre várias linhas de texto:
- Copie a instrução
println()
inicial e cole a segunda instrução abaixo dela no corpo da função. As duas instruçõesprintln()
precisam estar entre as chaves da função "main". Agora você tem duas instruções no corpo da função.
fun main() {
println("Hello, Android!")
println("Hello, Android!")
}
- Execute o programa.
- Ao executar o programa, a saída vai ser:
Hello, Android! Hello, Android!
Você pode ver como as mudanças no código afetam a saída.
- Mude o código para
Hello,
YOUR_NAME
!
.
7. Guia de estilo do Kotlin
Neste curso, você vai aprender boas práticas de programação para desenvolvedores Android. Uma delas é seguir os padrões de programação do Google Android para o código criado em Kotlin. O guia completo é chamado de guia de estilo e explica como o código precisa ser formatado com base na aparência e nas convenções de programação que precisam ser seguidas. Por exemplo, o guia de estilo inclui recomendações de uso de espaços em branco, recuo, nomes e muito mais.
O objetivo do guia de estilo é facilitar a leitura do código e o deixar mais consistente com o modo como outros desenvolvedores Android criam código. Essa consistência é importante quando os desenvolvedores colaboram em projetos grandes para que o estilo do código seja o mesmo em todos os arquivos do projeto.
Veja algumas recomendações relevantes do guia de estilo sobre o que você aprendeu em Kotlin até agora:
- Os nomes das funções precisam usar letras concatenadas e devem ser verbos ou frases verbais.
- Cada declaração precisa estar em uma linha.
- A chave de abertura precisa aparecer no fim da linha em que a função começa.
- É preciso ter um espaço antes da chave de abertura.
- O corpo da função precisa ter recuo de quatro espaços. Não use a tecla Tab para adicionar o recuo ao código. Digite quatro espaços.
- A chave de fechamento fica em uma linha após a última linha do código no corpo da função. A chave de fechamento precisa ficar alinhada com a palavra-chave
fun
no início da função.
Você vai aprender mais sobre as convenções de programação do Android à medida que aumentar seu conhecimento de Kotlin. Confira o guia completo de estilo neste link, mas não se preocupe com os outros tópicos do Kotlin abordados que você ainda não aprendeu.
8. Corrigir erros no código
Ao aprender uma linguagem humana, há regras de sintaxe e gramática sobre a maneira correta de usar palavras e formar frases. Da mesma forma, há regras específicas para as linguagens de programação sobre o que torna um código válido, ou seja, o que faz ele ser compilado corretamente.
Cometer erros e escrever código inválido por engano é uma parte normal do processo de programação. Como iniciante, pode ser confuso ou cansativo encontrar esses erros. Mas não se preocupe, isso é esperado. O código raramente funciona perfeitamente na primeira vez que é escrito. Da mesma forma que para escrever um documento é preciso fazer muitos rascunhos, a criação de um código pode precisar de muitas repetições até que ele funcione conforme esperado.
Se o código não for compilado de forma correta, isso significa que há um erro. Por exemplo, se houver um erro de digitação, como a falta de aspas ou parênteses, o compilador não vai entender o código e não vai o traduzir em etapas para o computador realizar. Se o código não funcionar como esperado ou se você vir uma mensagem de erro no editor, volte e corrija o código. O processo para resolver esses erros é chamado de solução de problemas.
- Copie e cole o snippet de código abaixo no Playground Kotlin e execute o programa. O que você vê?
fun main() {
println("Today is sunny!)
}
O ideal seria ver a mensagem Today is sunny!
. Em vez disso, no painel de saída, há ícones de ponto de exclamação com mensagens de erro.
Mensagem de erro do Playground Kotlin
As mensagens de erro começam com a palavra "Expecting" (esperando) porque o compilador Kotlin espera por algo que não encontrou no código. Nesse caso, o compilador espera aspas de fechamento e um parêntese de fechamento para o código na segunda linha do programa.
Na instrução println()
, observe que a mensagem que seria mostrada tem aspas de abertura, mas não de fechamento. Mesmo que haja um parêntese de fechamento no código, o compilador entende que ele faz parte do texto a ser mostrado, porque não há aspas de fechamento antes do parêntese.
- Adicione as aspas depois do ponto de exclamação e antes do parêntese de fechamento.
fun main() {
println("Today is sunny!")
}
A função "main" contém uma linha de código, que é uma instrução println()
, em que o texto é colocado entre aspas dentro dos parênteses: "Today is sunny!"
.
- Execute o programa novamente.
Não vai haver erros e o painel de saída vai mostrar este texto:
Today is sunny!
Parabéns por corrigir o erro! Depois de aprender a criar código e resolver erros, você vai perceber a importância de prestar atenção em letras maiúsculas, ortografia, espaços, símbolos e nomes ao digitar o código.
Na próxima seção, você vai trabalhar em uma série de exercícios para praticar o que aprendeu. As soluções são fornecidas no fim do codelab, mas tente encontrar a resposta por conta própria.
9. Exercícios
- Você consegue ler o código deste programa e adivinhar qual vai ser a saída (sem precisar executar no Playground Kotlin)?
fun main() {
println("1")
println("2")
println("3")
}
Quando tiver um palpite, copie e cole esse código no Playground Kotlin para conferir sua resposta.
- Use o Playground Kotlin para criar um programa que gere as mensagens abaixo:
I'm learning Kotlin!
- Copie e cole esse programa no Playground Kotlin.
fun main() {
println("Tuesday")
println("Thursday")
println("Wednesday")
println("Friday")
println("Monday")
}
Corrija o programa para que ele mostre esta saída:
Monday Tuesday Wednesday Thursday Friday
Para praticar a solução de problemas, corrija os erros nos exercícios a seguir. Para cada exercício, copie o código no Playground Kotlin no navegador. Ao tentar executar o programa, você vai ver uma mensagem de erro.
- Corrija o erro do programa para que ele gere a saída esperada.
fun main() {
println("Tomorrow is rainy")
Saída esperada:
Tomorrow is rainy
- Corrija o erro do programa para que ele gere a saída esperada.
fun main() {
printLine("There is a chance of snow")
}
Saída esperada:
There is a chance of snow
- Corrija o erro do programa para que ele gere a saída esperada.
fun main() {
println("Cloudy") println("Partly Cloudy") println("Windy")
}
Saída esperada:
Cloudy Partly Cloudy Windy
- Corrija o erro do programa para que ele gere a saída esperada.
fun main() (
println("How's the weather today?")
)
Saída esperada:
How's the weather today?
Depois de concluir os exercícios, confira suas respostas nas soluções apresentadas na próxima seção.
10. Soluções
- A saída do programa é:
1 2 3
- O código do programa vai ficar assim:
fun main() {
println("I'm")
println("learning")
println("Kotlin!")
}
- Este é o código correto do programa:
fun main() {
println("Monday")
println("Tuesday")
println("Wednesday")
println("Thursday")
println("Friday")
}
- Está faltando uma chave de fechamento que indica o fim do corpo da função
main
na terceira linha do programa.
Código correto:
fun main() {
println("Tomorrow is rainy")
}
Saída:
Tomorrow is rainy
- Ao executar o programa, você vê o erro
Unresolved reference: printLine
. Isso ocorre porqueprintLine()
não é uma função reconhecida em Kotlin. Você também pode ver a parte do código que causa o erro destacada em vermelho no Playground Kotlin. Mude o nome da função paraprintln
a fim de mostrar uma linha de texto na saída, o que corrige o erro.
Código correto:
fun main() {
println("There is a chance of snow")
}
Saída:
There is a chance of snow
- Ao executar o programa, você vê o erro
Unresolved reference: println
. Essa mensagem não diz diretamente como corrigir o problema. Às vezes isso acontece durante a solução de um erro. É necessário que você examine mais detalhadamente o código para resolver o comportamento inesperado.
Note que a segunda chamada de função println()
do código fica vermelha, indicando onde está o problema. O Kotlin espera somente uma instrução por linha. Nesse caso, você pode mover a segunda e a terceira chamadas de função println()
para linhas separadas a fim de resolver o problema.
Código correto:
fun main() {
println("Cloudy")
println("Partly Cloudy")
println("Windy")
}
Saída:
Cloudy Partly Cloudy Windy
- Se você executar o programa, o erro
Function 'main' must have a body
vai aparecer. O corpo de uma função precisa ser colocado entre uma chave de abertura e uma chave de fechamento { }, não entre parênteses de abertura e fechamento ( ).
Código correto:
fun main() {
println("How's the weather today?")
}
Saída:
How's the weather today?
11. Conclusão
Você fez um ótimo trabalho nesta introdução ao Kotlin.
Trabalhou com programas simples em Kotlin e os executou para ver o texto mostrado na saída. Modificou os programas de maneiras diferentes e observou como essas mudanças afetaram a saída. É normal cometer erros ao programar. Portanto, você também começou a aprender como resolver problemas e corrigir erros no código, uma habilidade importante que vai ser muito útil no futuro.
No próximo codelab, vai aprender a usar variáveis em Kotlin para criar programas mais interessantes.
Resumo
- Um programa em Kotlin exige uma função
main
como ponto de entrada. - Para definir uma função no Kotlin, use a palavra-chave
fun
, seguida do nome da função, das entradas entre parênteses e do corpo da função entre chaves. - O nome de uma função precisa seguir a convenção de concatenação e começar com uma letra minúscula.
- Use a chamada de função
println()
para mostrar um texto na saída. - Consulte o guia de estilo do Kotlin para ver as convenções de formatação e de código a serem seguidas ao programar nessa linguagem.
- A solução de problemas é o processo de resolver erros no código.
Saiba mais
- Hello World (link em inglês)
- Ponto de entrada do programa (link em inglês)
- Exibir na saída padrão (link em inglês)
- Sintaxe básica das funções
- Palavras-chave e operadores (link em inglês)
- Conceito de funções
println()
- Guia de estilo do Kotlin