Mobile App Development · Dart/Flutter
Nove exercícios para praticar funções void, com retorno, parâmetros nomeados, valores padrão e arrow function.
Exercício 1
Função void com um parâmetro posicional String, chamada duas vezes com nomes diferentes para mostrar a reutilização do mesmo código.
// Demonstração de função sem retorno (void) com parâmetro posicional.
// 'void' indica que a função não retorna nenhum valor.
// O parâmetro 'nome' recebe um valor quando a função é chamada.
// Função 'saudar': recebe um nome (String) e imprime uma saudação.
void saudar(String nome) {
// Usa interpolação de String para inserir o parâmetro na mensagem.
print('Ola, $nome!');
}
void main() {
// Chama a função com diferentes argumentos — reutilizando o mesmo código.
saudar('Ana');
saudar('Dart');
}
Saída esperada
Ola, Ana! Ola, Dart!
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/exercicio_01_saudacao.dart
Exercício 2
Função com retorno int: recebe dois números inteiros, soma e devolve o resultado, que é armazenado em uma variável antes de ser exibido.
// Demonstração de função com retorno de valor (int).
// O tipo antes do nome da função indica o tipo do valor que ela retorna.
// 'return' encerra a função e devolve o valor ao ponto de chamada.
// Função 'somar': recebe dois inteiros e retorna a soma deles.
int somar(int primeiroNumero, int segundoNumero) {
// A expressão após 'return' é calculada e enviada de volta ao chamador.
return primeiroNumero + segundoNumero;
}
void main() {
// O valor retornado por 'somar' é armazenado na variável 'resultado'.
int resultado = somar(10, 7);
print('Resultado: $resultado');
}
Saída esperada
Resultado: 17
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/exercicio_02_soma.dart
Exercício 3
Função com retorno double e múltiplos parâmetros: calcula o total de uma compra (preço × quantidade) e formata o resultado com toStringAsFixed(2) no padrão de moeda.
// Demonstração de função com múltiplos parâmetros e retorno de double.
// A função encapsula um cálculo repetitivo, tornando o código mais legível.
// Calcula o valor total de uma compra: preço unitário × quantidade.
double calcularTotal(double precoUnitario, int quantidade) {
// Multiplica os dois parâmetros e retorna o resultado como double.
return precoUnitario * quantidade;
}
void main() {
// Chama a função com preço 39.90 e quantidade 3 → total = 119.70.
double total = calcularTotal(39.90, 3);
// toStringAsFixed(2) formata o resultado com 2 casas decimais.
print('Total da compra: R\$ ${total.toStringAsFixed(2)}');
}
Saída esperada
Total da compra: R$ 119.70
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/exercicio_03_total_compra.dart
Exercício 4
Função com três parâmetros nomeados obrigatórios (required) para exibir um perfil de usuário — a chamada informa cada valor pelo nome do parâmetro, em qualquer ordem.
// Demonstração de parâmetros nomeados em Dart.
// Parâmetros nomeados são definidos entre chaves {} e identificados pelo nome ao chamar.
// 'required' indica que o parâmetro é obrigatório e não tem valor padrão.
// Exibe o perfil de um usuário com três parâmetros nomeados obrigatórios.
void exibirPerfil({
required String nome, // Parâmetro nomeado obrigatório do tipo String.
required int idade, // Parâmetro nomeado obrigatório do tipo int.
required String cidade, // Parâmetro nomeado obrigatório do tipo String.
}) {
print('Nome: $nome');
print('Idade: $idade');
print('Cidade: $cidade');
}
void main() {
// Ao chamar, os parâmetros nomeados podem ser passados em qualquer ordem.
// O nome do parâmetro deve ser informado explicitamente: nome: 'Bia'.
exibirPerfil(nome: 'Bia', idade: 27, cidade: 'Recife');
}
Saída esperada
Nome: Bia Idade: 27 Cidade: Recife
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/exercicio_04_parametros_nomeados.dart
Exercício 5
Parâmetro nomeado prefixo com valor padrão 'Info', tornando-o opcional, ao lado de um parâmetro texto obrigatório — duas chamadas mostram o comportamento com e sem o prefixo informado.
// Demonstração de parâmetros nomeados com valor padrão.
// Um parâmetro com valor padrão é opcional: se não for informado na chamada,
// o valor padrão é utilizado automaticamente.
// Exibe uma mensagem formatada com prefixo opcional e texto obrigatório.
void exibirMensagem({
// 'prefixo' tem valor padrão 'Info' — pode ser omitido na chamada.
String prefixo = 'Info',
// 'texto' é obrigatório pois usa 'required' sem valor padrão.
required String texto,
}) {
// Formata a saída como "[PREFIXO] mensagem".
print('[$prefixo] $texto');
}
void main() {
// Chamada sem informar 'prefixo' → usa o valor padrão 'Info'.
exibirMensagem(texto: 'Curso iniciado');
// Chamada informando 'prefixo' → substitui o valor padrão por 'Aviso'.
exibirMensagem(prefixo: 'Aviso', texto: 'Resolva os exercicios');
}
Saída esperada
[Info] Curso iniciado [Aviso] Resolva os exercicios
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/exercicio_05_valores_padrao.dart
Exercício 6
Duas arrow functions (=>) — uma que dobra um número e outra que verifica se ele é par — mostrando a forma curta de escrever funções de uma única expressão.
// Demonstração de arrow functions (funções de seta) em Dart.
// A sintaxe => (fat arrow) é uma forma compacta de escrever funções com apenas
// uma expressão: o resultado da expressão é automaticamente retornado.
// Equivalente a: int dobrar(int numero) { return numero * 2; }
// Retorna o dobro de um número inteiro.
int dobrar(int numero) => numero * 2;
// Retorna true se o número for par (resto da divisão por 2 igual a zero).
bool ehPar(int numero) => numero % 2 == 0;
void main() {
int numero = 8;
// Chama a arrow function 'dobrar' → 8 * 2 = 16.
print('Dobro: ${dobrar(numero)}');
// Chama a arrow function 'ehPar' → 8 % 2 == 0 → true.
print('E par: ${ehPar(numero)}');
}
Saída esperada
Dobro: 16 E par: true
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/exercicio_06_arrow_function.dart
Exercício 7 · extra
Material de reforço (versão mais simples, anterior à sequência numerada): a mesma ideia de função com parâmetros posicionais, chamada três vezes com argumentos diferentes — inclusive um negativo — para reforçar a reutilização.
// Exercício: criar uma função com dois parâmetros e reutilizá-la com diferentes valores.
// Demonstra como parâmetros posicionais permitem passar dados distintos em cada chamada.
// Soma dois inteiros e retorna o resultado.
int somar(int a, int b) {
return a + b;
}
// Chama a mesma função três vezes com argumentos diferentes para mostrar reutilização.
void main() {
print('Resultado 1: ${somar(5, 3)}');
print('Resultado 2: ${somar(10, -2)}');
print('Resultado 3: ${somar(2, 8)}');
}
Saída esperada
Resultado 1: 8 Resultado 2: 8 Resultado 3: 10
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/funcaocomparemetro.dart
Exercício 8 · extra
Material de reforço: função sem nenhum parâmetro que sempre retorna a mesma String fixa — útil quando o comportamento não varia entre chamadas.
// Exercício: criar uma função sem parâmetros que retorna uma String fixa.
// Funções sem parâmetros são úteis quando o comportamento não varia a cada chamada.
// Retorna sempre a mesma mensagem de boas-vindas.
String obterMensagemBoasVindas() {
return 'Bem-vindo(a) ao estudo de funcoes em Dart!';
}
void main() {
print(obterMensagemBoasVindas());
}
Saída esperada
Bem-vindo(a) ao estudo de funcoes em Dart!
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/funcaosemparametro.dart
Exercício 9 · extra
Material de reforço: função que aplica um desconto percentual sobre um preço, encapsulando a fórmula (preço − preço × percentual / 100) para reutilização.
// Exercício: aplicar desconto percentual sobre um preço usando uma função.
// Encapsular a fórmula em uma função facilita reutilização e testes isolados.
// Calcula o preço com desconto: preço - (preço × percentual / 100).
double aplicarDesconto(double preco, double percentual) {
return preco - (preco * percentual / 100);
}
void main() {
// Preço original antes de qualquer desconto.
final double precoOriginal = 40.0;
// Aplica 10% de desconto: 40.0 - 4.0 = 36.0.
final double precoComDesconto = aplicarDesconto(precoOriginal, 10);
print('Preco original: R\$ ${precoOriginal.toStringAsFixed(2)}');
print('Preco com 10%: R\$ ${precoComDesconto.toStringAsFixed(2)}');
}
Saída esperada
Preco original: R$ 40.00 Preco com 10%: R$ 36.00
Como executar
dart run 03-Funcoes/02-Exercicios/codigo_fonte/funcoescalculos.dart