Volver a la portadaPrincipios de Computación AP® · Principios de Computación AP · Cambiar asignatura
Empezar gratis
Computación AP · Principios de Computación AP®
AP Computer Science Principles: Datos, algoritmos e impacto · Gran idea 3: Algoritmos y programación

Expresiones booleanas, condicionales e iteración

Imagina la regla de una montaña rusa: «Para subir necesitas medir al menos 48 pulgadas, y tener 12 años o ir con un adulto». Un guardia aplica esa regla a cada persona de la fila, una y otra vez, y decide quién sube. Un programa hace lo mismo: evalúa condiciones, elige un camino y repite pasos. En esta página aprenderás a evaluar esas condiciones y a predecir qué hace un programa, justo lo que se pide en el examen AP®. Al final volveremos a la montaña rusa.

Expresiones booleanas

Una expresión booleana es una expresión que da como resultado verdadero (true) o falso (false). Nada más. Las comparaciones son la forma más simple:

Operador Significa
= igual a
≠ distinto de
> , < mayor que, menor que
≥ , ≤ mayor o igual, menor o igual

Si x ← 7, entonces x > 5 es verdadero y x = 3 es falso. Con MOD (el residuo de una división) también se pueden hacer preguntas como «¿es impar?»: x MOD 2 = 1 es verdadero para 7, porque $7 \div 2$ da residuo 1.

Para combinar expresiones se usan tres operadores lógicos:

Todo se resume en una tabla de verdad:

A B A AND B A OR B NOT A
verdadero verdadero verdadero verdadero falso
verdadero falso falso verdadero falso
falso verdadero falso verdadero verdadero
falso falso falso falso verdadero

¿Por qué funciona así? AND es como «y» en una regla estricta: un solo requisito sin cumplir basta para fallar. OR es permisivo: con un solo requisito cumplido alcanza.

Practica★☆☆Sin empezar
Sea A verdadero y B falso. Evalúa cada expresión: a) A AND B b) A OR B c) NOT B d) NOT (A AND B)

Sea A verdadero y B falso. Evalúa cada expresión:

  1. a) A AND B
  1. b) A OR B
  1. c) NOT B
  1. d) NOT (A AND B)
Resolver
Practica★☆☆Sin empezar
Sea x ← 7. Evalúa cada una como verdadera o falsa: a) (x > 5) AND (x < 10) b) (x < 3) OR (x MOD 2 = 1) c) NOT (x = 7)

Sea x ← 7. Evalúa cada una como verdadera o falsa:

  1. a) (x > 5) AND (x < 10)
  1. b) (x < 3) OR (x MOD 2 = 1)
  1. c) NOT (x = 7)
Resolver

Condicionales: elegir un camino

Un condicional (selection) permite que el programa ejecute código solo si una condición es verdadera.

IF (condición) {

   instrucciones si es verdadera

}

ELSE {

   instrucciones si es falsa

}

La parte ELSE es opcional. Solo se ejecuta uno de los dos caminos. Dentro de un camino puede haber otro IF: eso es un condicional anidado. Sirve para decidir en etapas, como en la calificación de un examen:

IF (score ≥ 90) {

   DISPLAY("A")

}

ELSE {

   IF (score ≥ 80) {

      DISPLAY("B")

   }

   ELSE {

      DISPLAY("C")

   }

}

Lee la estructura de arriba abajo: el segundo IF solo se revisa si el primero fue falso. Por eso, en la rama ELSE ya sabemos que score es menor que 90.

Ahora volvamos a la montaña rusa. La regla height ≥ 48 AND (age ≥ 12 OR withAdult) es una expresión booleana usada en un condicional. Para Malik (52 in., 13 años, sin adulto): 52 ≥ 48 es verdadero, 13 ≥ 12 es verdadero, así que verdadero AND verdadero da verdadero: sube.

Practica★★☆Sin empezar
a) ¿Qué se muestra cuando score es 95, 85, 80 y 79? b) Si la primera condición se cambiara a score > 90, ¿qué valor de puntaje daría un resultado distinto? ¿Qué se…
IF (score ≥ 90)

{

  DISPLAY("A")

}

ELSE

{

  IF (score ≥ 80)

  {

    DISPLAY("B")

  }

  ELSE

  {

    DISPLAY("C")

  }

}
  1. a) ¿Qué se muestra cuando score es 95, 85, 80 y 79?
  1. b) Si la primera condición se cambiara a score > 90, ¿qué valor de puntaje daría un resultado distinto? ¿Qué se mostraría?
Resolver
Practica★★☆Sin empezar
La regla de una montaña rusa dice: un visitante puede subir si height ≥ 48 AND (age ≥ 12 OR withAdult), donde height está en pulgadas y withAdult es verdadero o falso.…

La regla de una montaña rusa dice: un visitante puede subir si height ≥ 48 AND (age ≥ 12 OR withAdult), donde height está en pulgadas y withAdult es verdadero o falso.

Evalúa la regla para cada visitante:

Visitante Estatura (in.) Edad Con un adulto
Chloe 50 10 falso
Malik 52 13 falso
Camila 45 15 verdadero

Da verdadero o falso para cada uno, y luego escribe una expresión booleana que diga cuándo un visitante no puede subir.

Resolver

Iteración: repetir instrucciones

La iteración repite un bloque de instrucciones. En AP hay dos formas principales.

REPEAT n TIMES repite el cuerpo un número fijo de veces:

n ← 0

REPEAT 5 TIMES {

   n ← n + 2

}

Después de las 5 vueltas, n vale 10 (suma 2 cinco veces).

REPEAT UNTIL (condición) repite hasta que la condición sea verdadera. La condición se revisa antes de cada vuelta; si ya es verdadera desde el inicio, el cuerpo no se ejecuta ni una vez.

n ← 1

REPEAT UNTIL (n > 50) {

   n ← n * 2

}

DISPLAY(n)

La mejor forma de entender un ciclo es una tabla de trazado (hand tracing):

Vuelta n al empezar ¿n > 50? n al terminar
1 1 no 2
2 2 no 4
3 4 no 8
4 8 no 16
5 16 no 32
6 32 no 64
— 64 sí se detiene

Se muestra 64 y el cuerpo se ejecutó 6 veces.

Ciclos infinitos y errores comunes

Un ciclo infinito ocurre cuando la condición de REPEAT UNTIL nunca se vuelve verdadera. El programa no termina. Casi siempre es una de estas causas:

  • Olvidar actualizar la variable (por ejemplo, quitar i ← i + 1).

  • Actualizarla en la dirección equivocada.

  • Una condición que «salta» sobre el valor buscado.

Practica★☆☆Sin empezar
a) ¿Cuántas veces se muestra "Go" con REPEAT 4 TIMES { DISPLAY("Go") }? b) ¿Cuál es el valor final de n?
  1. a) ¿Cuántas veces se muestra "Go" con REPEAT 4 TIMES { DISPLAY("Go") }?
  1. b) ¿Cuál es el valor final de n?
n ← 0

REPEAT 5 TIMES

{

  n ← n + 2

}
Resolver
Practica★★☆Sin empezar
a) ¿Qué se muestra? b) ¿Cuántas veces se ejecuta el cuerpo del ciclo? c) ¿Qué pasaría si la condición fuera n < 0 en lugar de la original?
n ← 1

REPEAT UNTIL (n > 50)

{

  n ← n * 2

}

DISPLAY(n)
  1. a) ¿Qué se muestra?
  1. b) ¿Cuántas veces se ejecuta el cuerpo del ciclo?
  1. c) ¿Qué pasaría si la condición fuera n < 0 en lugar de la original?
Resolver
Practica★★★Sin empezar
a) ¿Qué se muestra y cuántas veces se ejecuta el cuerpo del ciclo? b) ¿Qué pasaría si se quitara la línea i ← i + 1? Explica. c) Describe el cambio necesario para que el…
i ← 1

total ← 0

REPEAT UNTIL (i > 10)

{

  IF (i MOD 3 = 0)

  {

    total ← total + i

  }

  i ← i + 1

}

DISPLAY(total)
  1. a) ¿Qué se muestra y cuántas veces se ejecuta el cuerpo del ciclo?
  1. b) ¿Qué pasaría si se quitara la línea i ← i + 1? Explica.
  1. c) Describe el cambio necesario para que el programa sume los números pares del 1 al 10.
Resolver
Practica★★★Sin empezar
Tres programadores escribieron ciclos que deberían mostrar 1, 2, 3, 4, 5. Versión A: Versión B: Versión C: a) Para cada versión, da la salida o di que nunca termina. b)…

Tres programadores escribieron ciclos que deberían mostrar 1, 2, 3, 4, 5.

Versión A:

i ← 1

REPEAT UNTIL (i = 5)

{

  DISPLAY(i)

  i ← i + 1

}

Versión B:

i ← 1

REPEAT UNTIL (i = 6)

{

  DISPLAY(i)

  i ← i + 1

}

Versión C:

i ← 1

REPEAT UNTIL (i = 4)

{

  DISPLAY(i)

  i ← i + 2

}
  1. a) Para cada versión, da la salida o di que nunca termina.
  1. b) Explica qué tiene de malo la Versión A y cómo corregirla.
  1. c) Explica por qué la Versión C es un ciclo infinito y describe una condición que la haría terminar con seguridad.
Resolver

Vuelve al principio: la regla de la montaña rusa es una expresión booleana con AND y OR. El guardia la aplica a cada persona de la fila: eso es un ciclo con un condicional dentro. Para decir quién no puede subir, se usa NOT sobre toda la regla.

Resumen

  • Una expresión booleana da verdadero o falso; se combinan con AND (ambas verdaderas), OR (al menos una) y NOT (invierte).

  • IF/ELSE ejecuta solo uno de dos caminos; los IF anidados deciden en etapas. Cuidado con > frente a ≥ en los límites.

  • REPEAT n TIMES repite un número fijo de veces; REPEAT UNTIL revisa la condición antes de cada vuelta.

  • Una tabla de trazado te permite predecir la salida paso a paso.

  • Si la variable de control no cambia bien, el ciclo puede ser infinito; prefiere condiciones como > en vez de = cuando haya saltos.

Ver todos los ejercicios de este apartado