Menu
Coddy logo textTech

Condiciones con 'every'

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 14 de 65.

Mientras que any() comprueba si al menos un elemento cumple una condición, a veces es necesario verificar que todos los elementos de una lista satisfacen un requisito específico. El método every() proporciona esta funcionalidad probando cada uno de los elementos con tu condición y devolviendo true solo si todos la cumplen.

El método every() toma una función de prueba que devuelve true o false para cada elemento. Si algún elemento falla la prueba, every() devuelve inmediatamente false. Solo cuando cada elemento pasa la prueba devuelve true.

List<int> examScores = [75, 82, 68, 91, 77];

// Comprobar si todos los estudiantes aprobaron (puntuación > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed);  // true

Este método es particularmente útil para escenarios de validación en los que necesitas asegurarte de que todos los elementos cumplan con ciertos criterios antes de continuar. El método every() deja de comprobar tan pronto como encuentra un elemento que no supera la prueba, lo que lo hace eficiente para listas grandes donde se requiere un cumplimiento universal.

challenge icon

Desafío

Fácil

Crea un programa que gestione un sistema de control de calidad verificando que todos los productos de un lote cumplan con los estándares requeridos. Tu programa debe:

  1. Leer una entrada de tipo cadena que represente el nombre de la fábrica (factory name)
  2. Leer múltiples entradas de números enteros que representen las puntuaciones de calidad del producto (la entrada terminará cuando recibas -1)
  3. Leer una entrada de número entero que represente el umbral mínimo del estándar de calidad
  4. Usar el método every() para comprobar si todas las puntuaciones de los productos son mayores o iguales al umbral mínimo
  5. Imprimir los resultados del control de calidad en el formato exacto que se muestra a continuación

Por ejemplo, si el nombre de la fábrica es "Electronics Factory", las puntuaciones de calidad son 85, 92, 78, 88, 95, y el umbral mínimo es 75, tu programa debería mostrar:

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

Si el nombre de la fábrica es "Textile Mill", las puntuaciones de calidad son 68, 82, 74, 91, y el umbral mínimo es 70, tu programa debería mostrar:

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

Si el nombre de la fábrica es "Food Processing", las puntuaciones de calidad son 95, 98, 92, y el umbral mínimo es 90, tu programa debería mostrar:

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

Tu programa debe usar el método every() para verificar que todas las puntuaciones de calidad sean mayores o iguales al umbral mínimo. Muestra "Batch approved for shipment" si todos los productos cumplen con el estándar, o "Batch rejected - quality improvement required" si algún producto no cumple con el requisito mínimo.

Hoja de referencia

El método every() comprueba si todos los elementos de una lista cumplen una condición específica. Devuelve true solo si cada elemento supera la prueba, y false si algún elemento falla.

List<int> examScores = [75, 82, 68, 91, 77];

// Comprobar si todos los estudiantes aprobaron (score > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed);  // true

El método every() deja de comprobar tan pronto como encuentra un elemento que falla la prueba, lo que lo hace eficiente para listas grandes donde se necesita un cumplimiento universal.

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Leer el nombre de la fábrica
  String? factoryName = stdin.readLineSync();
  
  // Leer las puntuaciones de calidad hasta que se encuentre -1
  List<int> qualityScores = [];
  while (true) {
    int score = int.parse(stdin.readLineSync()!);
    if (score == -1) {
      break;
    }
    qualityScores.add(score);
  }
  
  // Leer el umbral mínimo
  int minThreshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Escribe tu código a continuación
  // Usa el método every() para verificar si todas las puntuaciones cumplen con el estándar mínimo
  
  // Imprimir los resultados en el formato requerido
  print('Factory: $factoryName');
  print('Quality scores: $qualityScores');
  print('Minimum standard: $minThreshold');
  print('Checking if all scores >= $minThreshold');
  // Imprimir si todos los productos pasaron y el estado final
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo