Mobile App Development · Dart/Flutter

10 · For — Exercícios

Sete exercícios com for e for-in: contagem, múltiplos, acumuladores, índice em String, número primo e leitura de entrada do usuário.

Exercício

01_Ex_Imprimir_Numero_de_1_10.dart

Imprime os números inteiros de 1 a 10 usando o for clássico — o caso mais simples, com número de iterações conhecido com antecedência.

// Exercício: imprimir os números inteiros de 1 a 10 usando o laço 'for'.
// O 'for' é ideal quando o número de iterações é conhecido com antecedência.
void main() {
  // Laço de 1 até 10 com incremento unitário.
  for (int i = 1; i <= 10; i++) {
    // Exibe o valor atual do contador.
    print(i);
  }
}

Saída esperada

1
2
3
4
5
6
7
8
9
10

Como executar

dart run 10-For/02_Exercicios/codigo_fonte/01_Ex_Imprimir_Numero_de_1_10.dart

Exercício

02_Desafio_For_Lista_Pares.dart

Percorre uma lista de inteiros com for-in e imprime apenas os números pares, usando o operador módulo (%) para testar a divisibilidade por 2.

// Exercício: percorrer uma lista de inteiros e imprimir apenas os números pares.
// O 'for-in' itera diretamente sobre os elementos sem necessidade de índice.
void main() {
  // Lista de inteiros a ser percorrida.
  final List<int> numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

  // Para cada elemento, verifica se é par antes de imprimir.
  for (final int numero in numeros) {
    // Módulo 0 indica divisibilidade exata por 2.
    if (numero % 2 == 0) {
      print(numero);
    }
  }
}

Saída esperada

2
4
6
8
10

Como executar

dart run 10-For/02_Exercicios/codigo_fonte/02_Desafio_For_Lista_Pares.dart

Exercício

02_Ex_Imprimir_multiplos_5_de_0_50.dart

Percorre todos os inteiros de 0 a 50 e imprime apenas os múltiplos de 5, usando % para verificar a divisibilidade.

// Exercício: imprimir todos os múltiplos de 5 no intervalo de 0 a 50.
// O operador '%' (módulo) verifica se um número é divisível por outro.
void main() {
  // Percorre todos os inteiros de 0 a 50.
  for (int i = 0; i <= 50; i++) {
    // Imprime apenas os divisíveis por 5.
    if (i % 5 == 0) {
      print(i);
    }
  }
}

Saída esperada

0
5
10
15
20
25
30
35
40
45
50

Como executar

dart run 10-For/02_Exercicios/codigo_fonte/02_Ex_Imprimir_multiplos_5_de_0_50.dart

Exercício

03_Ex_Calcular_Numeros_Naturais.dart

Calcula a soma dos 10 primeiros números naturais (1 a 10) usando o padrão de acumulador: uma variável soma que recebe cada valor do laço até formar o total.

// Exercício: calcular a soma dos 10 primeiros números naturais (1 a 10).
// O acumulador 'soma' recebe cada valor do laço até o total ser formado.
void main() {
  // Acumulador que armazena a soma parcial a cada iteração.
  int soma = 0;

  // Percorre os naturais de 1 a 10, somando cada um ao acumulador.
  for (int i = 1; i <= 10; i++) {
    soma += i;
  }

  print('A soma dos primeiros 10 numeros naturais e: $soma');
}

Saída esperada

A soma dos primeiros 10 numeros naturais e: 55

Como executar

dart run 10-For/02_Exercicios/codigo_fonte/03_Ex_Calcular_Numeros_Naturais.dart

Exercício

04_Ex_Caracter_separadamente.dart

Percorre uma String caractere por caractere usando um índice no for: texto.length dá o total de caracteres e texto[i] acessa a posição i.

// Exercício: percorrer uma String caractere por caractere usando índice 'for'.
// 'texto.length' retorna o total de caracteres; o índice vai de 0 até length - 1.
void main() {
  // Texto cujos caracteres serão exibidos individualmente.
  const String texto = 'FIAP';

  // Acessa cada posição da string pelo índice numérico.
  for (int i = 0; i < texto.length; i++) {
    // Exibe o caractere na posição 'i'.
    print(texto[i]);
  }
}

Saída esperada

F
I
A
P

Como executar

dart run 10-For/02_Exercicios/codigo_fonte/04_Ex_Caracter_separadamente.dart

Exercício

05_Ex_Numero_Primo.dart

Verifica se um número é primo testando divisores de 2 até a raiz quadrada do número (i * i <= numero), o que reduz o custo em comparação a testar todos os divisores até numero - 1.

// Exercício: verificar se um número é primo.
// Algoritmo: testa divisores de 2 até a raiz quadrada do número (i * i <= numero),
// o que reduz o custo em comparação a testar todos os divisores até numero - 1.

// Retorna true se 'numero' for primo, false caso contrário.
bool ehPrimo(int numero) {
  // Números menores que 2 não são primos por definição.
  if (numero < 2) return false;

  // Testa divisores potenciais até a raiz quadrada de 'numero'.
  for (int i = 2; i * i <= numero; i++) {
    // Encontrou um divisor exato: não é primo.
    if (numero % i == 0) return false;
  }

  // Nenhum divisor encontrado: é primo.
  return true;
}

void main() {
  // Número a ser testado.
  final int numero = 29;

  print('$numero ${ehPrimo(numero) ? 'e primo' : 'nao e primo'}');
}

Saída esperada

29 e primo

Como executar

dart run 10-For/02_Exercicios/codigo_fonte/05_Ex_Numero_Primo.dart

Exercício

06_Ex_Todos_Input.dart

Lê um número inteiro digitado pelo usuário e calcula a soma de todos os inteiros de 1 até esse número usando for. Como depende de entrada via stdin, a saída varia conforme o que for digitado.

// Exercício: ler um número inteiro fornecido pelo usuário e calcular
// a soma de todos os inteiros de 1 até esse número usando 'for'.
import 'dart:io';

void main() {
  stdout.write('Digite um numero inteiro: ');

  // Lê a entrada como texto; retorna string vazia se a leitura falhar.
  final String entrada = stdin.readLineSync() ?? '';

  // Converte para inteiro; retorna null se o texto não for numérico.
  final int? n = int.tryParse(entrada);

  // Valida: rejeita entradas não numéricas ou menores que 1.
  if (n == null || n < 1) {
    print('Entrada invalida.');
    return;
  }

  // Acumulador da soma de 1 até n.
  int soma = 0;

  // Soma todos os inteiros de 1 até o valor informado.
  for (int i = 1; i <= n; i++) {
    soma += i;
  }

  print('A soma de 1 ate $n e: $soma');
}

Saída esperada

Depende do valor digitado — não é determinística. Exemplo, se o usuário digitar 5:

Digite um numero inteiro: 5
A soma de 1 ate 5 e: 15

Como executar

dart run 10-For/02_Exercicios/codigo_fonte/06_Ex_Todos_Input.dart