Menu
Coddy logo textTech

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);  // true

Este 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.

challenge icon

Desafio

Fácil

Crie 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:

  1. Ler uma entrada de string representando o nome da fábrica (factory name)
  2. Ler múltiplas entradas de inteiros representando as pontuações de qualidade do produto (a entrada terminará quando você receber -1)
  3. Ler uma entrada de inteiro representando o limite mínimo do padrão de qualidade (minimum quality standard threshold)
  4. Usar o método every() para verificar se todas as pontuações dos produtos são maiores ou iguais ao limite mínimo
  5. 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 shipment

Se 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 required

Se 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 shipment

Seu 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);  // true

O 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
}
quiz iconTeste seus conhecimentos

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