Condições com 'every'
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 14 de 65.
Enquanto any() verifica se pelo menos um elemento atende a uma condição, às vezes você precisa verificar se todos os elementos em uma lista satisfazem um requisito específico. O método every() fornece essa funcionalidade testando cada elemento individualmente em relação à sua condição e retornando true apenas se todos passarem.
O método every() recebe uma função de teste que retorna true ou false para cada elemento. Se qualquer elemento falhar no teste, o every() retorna imediatamente false. Somente quando todos os elementos passam no teste é que ele retorna true.
List<int> examScores = [75, 82, 68, 91, 77];
// Verifica se todos os alunos passaram (nota > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // trueEste método é particularmente útil para cenários de validação onde você precisa garantir que todos os itens atendam a certos critérios antes de prosseguir. O método every() para de verificar assim que encontra um elemento que falha no teste, tornando-o eficiente para listas grandes onde você precisa de conformidade universal.
Desafio
FácilCrie um programa que gerencie um sistema de controle de qualidade, verificando se todos os produtos em um lote atendem aos padrões exigidos. Seu programa deve:
- Ler uma entrada de string representando o nome da fábrica (factory name)
- Ler múltiplas entradas de inteiros representando as pontuações de qualidade do produto (a entrada terminará quando você receber
-1) - Ler uma entrada de inteiro representando o limite mínimo do padrão de qualidade (minimum quality standard threshold)
- Usar o método
every()para verificar se todas as pontuações dos produtos são maiores ou iguais ao limite mínimo - Imprimir os resultados do controle de qualidade no formato exato mostrado abaixo
Por exemplo, se o nome da fábrica for "Electronics Factory", as pontuações de qualidade forem 85, 92, 78, 88, 95, e o limite mínimo for 75, seu programa deve exibir:
Factory: Electronics Factory
Quality scores: [85, 92, 78, 88, 95]
Minimum standard: 75
Checking if all scores >= 75
All products passed: true
Status: Batch approved for shipmentSe o nome da fábrica for "Textile Mill", as pontuações de qualidade forem 68, 82, 74, 91, e o limite mínimo for 70, seu programa deve exibir:
Factory: Textile Mill
Quality scores: [68, 82, 74, 91]
Minimum standard: 70
Checking if all scores >= 70
All products passed: false
Status: Batch rejected - quality improvement requiredSe o nome da fábrica for "Food Processing", as pontuações de qualidade forem 95, 98, 92, e o limite mínimo for 90, seu programa deve exibir:
Factory: Food Processing
Quality scores: [95, 98, 92]
Minimum standard: 90
Checking if all scores >= 90
All products passed: true
Status: Batch approved for shipmentSeu programa deve usar o método every() para verificar se todas as pontuações de qualidade são maiores ou iguais ao limite mínimo. Exiba "Batch approved for shipment" se todos os produtos atenderem ao padrão, ou "Batch rejected - quality improvement required" se qualquer produto não atingir o requisito mínimo.
Folha de consulta
O método every() verifica se todos os elementos em uma lista satisfazem uma condição específica. Ele retorna true apenas se cada elemento passar no teste, e false se qualquer elemento falhar.
List<int> examScores = [75, 82, 68, 91, 77];
// Check if all students passed (score > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // trueO método every() interrompe a verificação assim que encontra um elemento que falha no teste, tornando-o eficiente para listas grandes onde você precisa de conformidade universal.
Experimente você mesmo
import 'dart:io';
void main() {
// Ler o nome da fábrica
String? factoryName = stdin.readLineSync();
// Ler as pontuações de qualidade até que -1 seja encontrado
List<int> qualityScores = [];
while (true) {
int score = int.parse(stdin.readLineSync()!);
if (score == -1) {
break;
}
qualityScores.add(score);
}
// Ler o limite mínimo
int minThreshold = int.parse(stdin.readLineSync()!);
// TODO: Escreva seu código abaixo
// Use o método every() para verificar se todas as pontuações atendem ao padrão mínimo
// Imprimir os resultados no formato exigido
print('Factory: $factoryName');
print('Quality scores: $qualityScores');
print('Minimum standard: $minThreshold');
print('Checking if all scores >= $minThreshold');
// Imprimir se todos os produtos passaram e o status final
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos