Mobile App Development · Dart/Flutter
Cinco exercícios com while e do-while: contagem, acumulador, jogo de adivinhação, cálculo de potência e leitura repetida de entrada.
Exercício
Faz uma contagem regressiva de 10 até 0 usando while: a condição contador >= 0 é testada antes de cada iteração, e o contador é decrementado no corpo do laço.
void main() {
var contador = 10;
while (contador >= 0) {
print(contador);
contador--;
}
}
Saída esperada
10 9 8 7 6 5 4 3 2 1 0
Como executar
dart run 11-While/02_Exercicios/codigo_fonte/01_Ex_Contagem_Regressiva.dart
Exercício
Percorre os números de 1 a 100 com while, acumulando em soma apenas os múltiplos de 3 (testados com %).
void main() {
var numero = 1;
var soma = 0;
while (numero <= 100) {
if (numero % 3 == 0) {
soma += numero;
}
numero++;
}
print('Soma dos multiplos de 3 entre 1 e 100: $soma');
}
Saída esperada
Soma dos multiplos de 3 entre 1 e 100: 1683
Como executar
dart run 11-While/02_Exercicios/codigo_fonte/02_Ex_Soma_Dos_Multiplos_de_Tres.dart
Exercício
Clássico jogo de adivinhação: sorteia um número secreto entre 1 e 100 com Random() e repete em while (true) até o jogador acertar, usando continue para entradas inválidas e break para encerrar ao acertar. Como usa número aleatório e stdin, a saída não é determinística.
import 'dart:io';
import 'dart:math';
void main() {
final secreto = Random().nextInt(100) + 1;
var tentativas = 0;
while (true) {
stdout.write('Digite um numero entre 1 e 100: ');
final entrada = stdin.readLineSync() ?? '';
final chute = int.tryParse(entrada);
tentativas++;
if (chute == null) {
print('Entrada invalida.');
continue;
}
if (chute == secreto) {
print('Parabens! Voce acertou em $tentativas tentativas.');
break;
}
print(
chute < secreto ? 'Tente um numero maior.' : 'Tente um numero menor.',
);
}
}
Saída esperada
Não é determinística: o número secreto é sorteado a cada execução e a saída depende dos chutes digitados. Exemplo de execução, se o secreto sorteado for 42:
Digite um numero entre 1 e 100: 50 Tente um numero menor. Digite um numero entre 1 e 100: 42 Parabens! Voce acertou em 2 tentativas.
Como executar
dart run 11-While/02_Exercicios/codigo_fonte/03_Ex_Adivinhe_o_Numero.dart
Exercício
Lê um valor-limite digitado pelo usuário e usa while para encontrar a primeira potência de 2 maior que esse limite, dobrando potencia a cada iteração. Depende de stdin, então a saída varia conforme o valor digitado.
import 'dart:io';
void main() {
stdout.write('Digite um valor limite: ');
final entrada = stdin.readLineSync() ?? '';
final limite = int.tryParse(entrada);
if (limite == null || limite < 1) {
print('Entrada invalida.');
return;
}
var expoente = 0;
var potencia = 1;
while (potencia <= limite) {
expoente++;
potencia *= 2;
}
print('A primeira potencia de 2 maior que $limite e 2^$expoente = $potencia');
}
Saída esperada
Depende do valor digitado. Exemplo, se o usuário digitar 20:
Digite um valor limite: 20 A primeira potencia de 2 maior que 20 e 2^5 = 32
Como executar
dart run 11-While/02_Exercicios/codigo_fonte/DesafioPratico.dart
Exercício
Usa do-while para repetir a leitura de uma linha até o usuário digitar sair — como o corpo executa antes da condição ser testada, a pergunta é feita pelo menos uma vez. Depende de stdin, então a saída varia conforme o número de linhas digitadas.
import 'dart:io';
void main() {
String entrada;
do {
stdout.write("Digite 'sair' para encerrar: ");
entrada = (stdin.readLineSync() ?? '').trim().toLowerCase();
print('Voce digitou: $entrada');
} while (entrada != 'sair');
print('Programa encerrado.');
}
Saída esperada
Depende do que for digitado. Exemplo, se o usuário digitar oi e depois sair:
Digite 'sair' para encerrar: oi Voce digitou: oi Digite 'sair' para encerrar: sair Voce digitou: sair Programa encerrado.
Como executar
dart run 11-While/02_Exercicios/codigo_fonte/Exercicio_doWhile.dart