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

Variables, expresiones y cadenas de texto

Aaliyah está en una app de pedidos de comida. Pasa de 2 a 3 hamburguesas y el total cambia, pero el programa no se reescribe. ¿Cómo "recuerda" el programa un número que cambia, y cómo sabemos qué valor tendrá en cada momento? Eso lo resuelven las variables. Al final de la página volverás a la app de Aaliyah.

Variables y asignación

Una variable es un nombre que guarda un valor. Piensa en una caja con una etiqueta: puedes sacar lo que hay dentro y meter otra cosa.

En el pseudocódigo de AP®, la asignación se escribe con una flecha:

score ← 10

Se lee "a score se le asigna 10". La flecha no es una igualdad de matemáticas. Primero se calcula el lado derecho y después se guarda el resultado en la variable de la izquierda. Por eso es válido escribir score ← score + 5: se toma el valor viejo, se le suma 5 y el resultado nuevo reemplaza al viejo.

Una variable score como una caja: antes guarda 10 y después de score ← score + 5 guarda 15. 10 score (antes) score ← score + 5 15 score (después)

Una variable guarda un solo valor a la vez. Cuando asignas uno nuevo, el anterior se pierde.

Practica★☆☆Sin empezar
Sigue este programa paso a paso: ¿Qué se muestra y cuál es el valor final de b?

Sigue este programa paso a paso:

a ← 5

b ← a + 2

a ← b * 2

DISPLAY(a)

¿Qué se muestra y cuál es el valor final de b?

Resolver
Practica★★☆Sin empezar
Considera este programa, que debería intercambiar los valores de x y y: a) ¿Cuáles son los valores finales de x y y? b) Explica por qué el programa no intercambia los…

Considera este programa, que debería intercambiar los valores de x y y:

x ← 3

y ← 8

x ← y

y ← x
  1. a) ¿Cuáles son los valores finales de x y y?
  1. b) Explica por qué el programa no intercambia los valores.
  1. c) Reescribe el programa usando una tercera variable temp para que los intercambie correctamente.
Resolver

Expresiones aritméticas y MOD

Una expresión es algo que se puede calcular y da un valor. El pseudocódigo AP usa +, -, *, / y MOD.

El orden de las operaciones es el de matemáticas: paréntesis, luego *, / y MOD (de izquierda a derecha), y al final + y -. Ante la duda, usa paréntesis.

a MOD b da el residuo de dividir a entre b.

Expresión División Residuo
17 MOD 5 17 = 3 · 5 + 2 2
20 MOD 4 20 = 5 · 4 + 0 0
3 MOD 8 3 = 0 · 8 + 3 3

Si a es menor que b, el resultado es a mismo, porque b cabe 0 veces.

Para qué sirve MOD

  • Pares e impares: n MOD 2 es 0 si n es par y 1 si es impar.

  • Divisibilidad: n MOD 5 = 0 significa que n es múltiplo de 5.

  • Cosas que dan la vuelta: relojes, días de la semana, turnos.

  • Convertir unidades: 200 minutos son 200 MOD 60 = 20 minutos sobrantes y (200 - 20) / 60 = 3 horas.

Con un reloj de 12 horas que marca 0 a 11, "9 más 5 horas" da (9 + 5) MOD 12 = 2. Al llegar a 12 se vuelve a empezar.

Reloj con las horas de 0 a 11; 12 vuelve a 0, como en MOD 12. 0 1 2 3 4 5 6 7 8 9 10 11
Practica★☆☆Sin empezar
El operador MOD da el residuo después de dividir. Evalúa: a) 17 MOD 5 b) 20 MOD 4 c) 3 MOD 8

El operador MOD da el residuo después de dividir. Evalúa:

  1. a) 17 MOD 5
  1. b) 20 MOD 4
  1. c) 3 MOD 8
Resolver
Practica★★☆Sin empezar
Evalúa cada instrucción y da los valores finales. ¿Cuáles son a, m y h? Explica en una oración qué representan h y m.

Evalúa cada instrucción y da los valores finales.

a ← (17 MOD 5) * 3 + 20 / 4

minutes ← 200

m ← minutes MOD 60

h ← (minutes - m) / 60

¿Cuáles son a, m y h? Explica en una oración qué representan h y m.

Resolver
Practica★★☆Sin empezar
Un reloj de 12 horas muestra las horas de 0 a 11. Ethan usa (start + hours) MOD 12 para hallar la hora después de esperar. a) Si el reloj marca 9 y él espera 20 horas,…

Un reloj de 12 horas muestra las horas de 0 a 11. Ethan usa (start + hours) MOD 12 para hallar la hora después de esperar.

  1. a) Si el reloj marca 9 y él espera 20 horas, ¿qué hora marca el reloj?
  1. b) ¿Qué da la expresión cuando start + hours es exactamente 24, y por qué?
  1. c) ¿Cómo puedes usar MOD 2 para comprobar si un número es par?
Resolver

Cadenas de texto

Una cadena (string) es una secuencia de caracteres entre comillas: "hello", "Go Lakers!", "2026". Observa que "2026" entre comillas es texto, no un número.

Dos operaciones clave:

  • Concatenación: unir cadenas. CONCAT("cyber", "space") da "cyberspace". Los espacios cuentan: CONCAT("hi", "there") da "hithere".

  • Subcadena: SUBSTRING(str, start, length) toma length caracteres de str empezando en la posición start.

Las posiciones empiezan en 1. El primer carácter está en la posición 1.

La cadena computer con sus posiciones numeradas del 1 al 8; SUBSTRING con inicio 1 y longitud 3 toma com. c o m p u t e r 1 2 3 4 5 6 7 8 SUBSTRING("computer", 1, 3)

Así, SUBSTRING("computer", 1, 3) es "com", y SUBSTRING("computer", 4, 2) es "pu".

Practica★☆☆Sin empezar
Supón que las posiciones de una cadena empiezan en 1. SUBSTRING(str, start, length) devuelve length caracteres de str a partir de la posición start, y la concatenación…

Supón que las posiciones de una cadena empiezan en 1. SUBSTRING(str, start, length) devuelve length caracteres de str a partir de la posición start, y la concatenación une dos cadenas.

  1. a) ¿Cuál es el resultado de concatenar "cyber" y "space"?
  1. b) ¿Cuál es SUBSTRING("computer", 1, 3)?
Resolver
Practica★★★Sin empezar
Supón que CONCAT(a, b) une dos cadenas y convierte automáticamente un número en texto. SUBSTRING(str, start, length) empieza en la posición 1. a) ¿Qué se muestra? b)…

Supón que CONCAT(a, b) une dos cadenas y convierte automáticamente un número en texto. SUBSTRING(str, start, length) empieza en la posición 1.

name1 ← "Jayden"

name2 ← "Brooks"

user ← CONCAT(SUBSTRING(name1, 1, 1), name2)

num ← 2026 MOD 100

user ← CONCAT(user, num)

DISPLAY(user)
  1. a) ¿Qué se muestra?
  1. b) ¿Cuántos caracteres tendría el nombre de usuario si num fuera 2026 en lugar de 2026 MOD 100?
  1. c) Escribe una línea que construya el nombre de usuario de Priya Shah con el mismo estilo, usando las variables first y last.
Resolver

Variables dentro de un ciclo

Un REPEAT n TIMES { … } repite las instrucciones de adentro n veces. Las variables conservan su valor entre repeticiones, así que cada vuelta parte de lo que dejó la anterior. Por eso conviene hacer una tabla de seguimiento: una fila por repetición.

El orden de las asignaciones dentro del ciclo cambia el resultado. Si pusieras n ← n * 2 primero, total sumaría 6, 12 y 24 y daría 42.

Practica★★★Sin empezar
Sigue este programa paso a paso. En la expresión a + (b MOD 4), los paréntesis indican que primero se calcula el MOD. a) Haz una tabla con los valores de a y b después…

Sigue este programa paso a paso. En la expresión a + (b MOD 4), los paréntesis indican que primero se calcula el MOD.

a ← 2

b ← 10

REPEAT 3 TIMES

{

  a ← a + (b MOD 4)

  b ← b - a

}
  1. a) Haz una tabla con los valores de a y b después de cada repetición.
  1. b) ¿Cuáles son los valores finales de a y b?
  1. c) Explica por qué no se puede predecir el resultado final sin llevar la cuenta del orden de las dos asignaciones dentro del ciclo.
Resolver

Resumen

  • Una variable guarda un valor; x ← expr calcula el lado derecho y lo guarda en x, reemplazando el valor anterior.

  • Para trazar un programa, sigue las líneas en orden y anota los valores de cada variable. Para intercambiar dos valores necesitas una variable temporal.

  • Las expresiones siguen el orden de las operaciones. a MOD b da el residuo de dividir a entre b; sirve para pares/impares, relojes y convertir minutos a horas.

  • Una cadena es texto; CONCAT une cadenas y SUBSTRING(str, start, length) extrae una parte. Las posiciones empiezan en 1.

  • En un ciclo, las variables conservan su valor de una repetición a la siguiente, y el orden de las asignaciones importa.

Vuelve al principio: la app de Aaliyah "recuerda" el número de hamburguesas en una variable y la actualiza con una asignación como count ← count + 1.

Ver todos los ejercicios de este apartado