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 guarda un solo valor a la vez. Cuando asignas uno nuevo, el anterior se pierde.
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?
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
- a) ¿Cuáles son los valores finales de
xyy?
- b) Explica por qué el programa no intercambia los valores.
- c) Reescribe el programa usando una tercera variable
temppara que los intercambie correctamente.
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 2es 0 sines par y 1 si es impar. -
Divisibilidad:
n MOD 5 = 0significa quenes múltiplo de 5. -
Cosas que dan la vuelta: relojes, días de la semana, turnos.
-
Convertir unidades: 200 minutos son
200 MOD 60 = 20minutos sobrantes y(200 - 20) / 60 = 3horas.
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.
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:
- a)
17 MOD 5
- b)
20 MOD 4
- c)
3 MOD 8
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.
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.
- a) Si el reloj marca 9 y él espera 20 horas, ¿qué hora marca el reloj?
- b) ¿Qué da la expresión cuando
start + hourses exactamente 24, y por qué?
- c) ¿Cómo puedes usar
MOD 2para comprobar si un número es par?
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)tomalengthcaracteres destrempezando en la posiciónstart.
Las posiciones empiezan en 1. El primer carácter está en la posición 1.
Así, SUBSTRING("computer", 1, 3) es "com", y SUBSTRING("computer", 4, 2) es "pu".
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.
- a) ¿Cuál es el resultado de concatenar
"cyber"y"space"?
- b) ¿Cuál es
SUBSTRING("computer", 1, 3)?
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)
- a) ¿Qué se muestra?
- b) ¿Cuántos caracteres tendría el nombre de usuario si
numfuera2026en lugar de2026 MOD 100?
- c) Escribe una línea que construya el nombre de usuario de Priya Shah con el mismo estilo, usando las variables
firstylast.
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.
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
}
- a) Haz una tabla con los valores de
aybdespués de cada repetición.
- b) ¿Cuáles son los valores finales de
ayb?
- c) Explica por qué no se puede predecir el resultado final sin llevar la cuenta del orden de las dos asignaciones dentro del ciclo.
Resumen
-
Una variable guarda un valor;
x ← exprcalcula el lado derecho y lo guarda enx, 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 bda el residuo de dividiraentreb; sirve para pares/impares, relojes y convertir minutos a horas. -
Una cadena es texto;
CONCATune cadenas ySUBSTRING(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.