Volver a la portadaCiencias de la Computación · 8° EBI · Cambiar asignatura
Empezar gratis
8° EBI · Ciencias de la Computación
Control y robótica · Programación textual

Programación textual

En Scratch o en MakeCode armabas programas con «al iniciar», «por siempre» o «si… entonces». En Python escribís esas mismas ideas con texto. Cada línea es una orden exacta y la computadora la ejecuta tal cual, sin adivinar lo que querías decir. ¿Cómo se escribe «por siempre» o «si… entonces» con letras? Eso vamos a ver.

De los bloques al texto

Todo lo que ya sabés de bloques existe en Python con otra forma. Mirá la equivalencia:

Bloques (Scratch / MakeCode) Python
crear variable y darle un valor puntos = 0
mostrar / decir print(...)
preguntar / leer input(...)
si… entonces… si no if … else
repetir 10 veces for i in range(10):
repetir hasta que / mientras while ...:
crear un bloque propio def nombre():
lista [3, 5, 8]
Un bloque «si… entonces… si no» a la izquierda y su equivalente en Python a la derecha, con las líneas if y else y la sangría. si edad ≥ 12 entonces decir «Puedes» si no decir «Aún no» → if edad >= 12: print("Puedes") else: print("Aún no")

Variables y tipos de dato

Variable como caja con etiqueta: tres líneas de código crean la caja puntos con un 0, le suman 1 y muestran su valor en pantalla. Código 1 puntos = 0 2 puntos = puntos + 1 3 print(puntos) Variable (caja) puntos 0 → 1 guarda 0 lee, suma 1, guarda 1 Pantalla

En una variable el signo = no significa «es igual a» como en Matemática: significa «guardá lo de la derecha en la caja de la izquierda». Por eso puntos = puntos + 1 no es una ecuación imposible: primero se calcula la derecha (lo que había más $1$) y después se guarda.

Practica★☆☆Sin empezar
Explicá qué es una variable con el símil de una caja con etiqueta y describí qué hace cada línea: puntos = 0, puntos = puntos + 1, print(puntos). ¿Qué valor aparece en…

Explicá qué es una variable con el símil de una caja con etiqueta y describí qué hace cada línea: puntos = 0, puntos = puntos + 1, print(puntos). ¿Qué valor aparece en pantalla y por qué no es un error sumarle algo a una variable que «ya tenía» un valor?

Resolver
Practica★☆☆Sin empezar
Clasificá estos valores según su tipo de dato (entero, decimal, texto o booleano) y poné un ejemplo de uso para cada tipo en un programa de una tienda: 13, 3,75, "Ana",…

Clasificá estos valores según su tipo de dato (entero, decimal, texto o booleano) y poné un ejemplo de uso para cada tipo en un programa de una tienda: 13, 3,75, "Ana", True.

Resolver
Practica★★☆Sin empezar
Predecí la salida de este programa sin ejecutarlo, siguiendo el valor de las variables línea a línea: a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Escribí la…

Predecí la salida de este programa sin ejecutarlo, siguiendo el valor de las variables línea a línea: a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Escribí la traza completa (qué vale cada variable tras cada línea) y no solo el resultado.

Resolver

Entrada y salida: `input()` y `print()`

Practica★☆☆Sin empezar
Explicá qué hacen las órdenes input() y print() en Python, qué diferencia hay entre ellas y escribí un programa de dos líneas que pregunte tu nombre y te salude usándolo.

Explicá qué hacen las órdenes input() y print() en Python, qué diferencia hay entre ellas y escribí un programa de dos líneas que pregunte tu nombre y te salude usándolo.

Resolver
Practica★★☆Sin empezar
Escribí un programa de tres líneas que pida el nombre y la edad de una persona y escriba una frase completa usándolos (por ejemplo, «Mei tiene 14 años»). Explicá qué…

Escribí un programa de tres líneas que pida el nombre y la edad de una persona y escriba una frase completa usándolos (por ejemplo, «Mei tiene 14 años»). Explicá qué tipo de dato devuelve siempre input() y para qué sirve int() al pedir la edad.

Resolver

Condicionales: `if` y `else`

Código Python con if/else: si edad es mayor o igual que 12 se muestra «Puedes», y si no, «Aún no». Las líneas de cada bloque van con sangría. edad = int(input("Edad: ")) if edad >= 12: print("Puedes") else: print("Aún no") ← condición si es verdadera ← si no si es falsa

Las comparaciones que más vas a usar: == (igual), != (distinto), <, >, <=, >=. Y para combinar condiciones, and (Y), or (O) y not (NO), igual que la lógica booleana de los bloques.

Practica★☆☆Sin empezar
Explicá qué es un condicional con un ejemplo de tu vida diaria (si llueve llevo el paraguas; si no, los lentes de sol) y escribilo en tres líneas de pseudocódigo:…

Explicá qué es un condicional con un ejemplo de tu vida diaria (si llueve llevo el paraguas; si no, los lentes de sol) y escribilo en tres líneas de pseudocódigo: condición, qué pasa si se cumple y qué pasa si no.

Resolver
Practica★☆☆Sin empezar
La figura muestra un diagrama de flujo y, a su lado, el programa que hace lo mismo, pero con la condición tapada. Escribí la condición que falta en la línea del if (debe…

La figura muestra un diagrama de flujo y, a su lado, el programa que hace lo mismo, pero con la condición tapada.

inicio pedir la edad ¿edad ≥ 12? sí podés participar no te falta poco edad = int(input("Edad: ")) if ?: print("Puedes") else: print("Aún no")

Escribí la condición que falta en la línea del if (debe comparar la variable edad con $12$), explicá qué hace int(input("Edad: ")) y por qué las líneas dentro del if y del else van sangradas hacia la derecha.

Resolver
Practica★★☆Sin empezar
Escribí un programa que pida un número y diga si es positivo, negativo o cero. Indicá qué estructura usás (un condicional con dos ramas o tres), qué comparaciones hacés…

Escribí un programa que pida un número y diga si es positivo, negativo o cero. Indicá qué estructura usás (un condicional con dos ramas o tres), qué comparaciones hacés y probalo mentalmente con los valores $7$, $-3$ y $0$.

Resolver

Varias ramas: `elif` y el orden importa

Cuando hay más de dos caminos se usa elif («si no, si…»). Python comprueba las condiciones en orden: en cuanto una es verdadera, ejecuta su bloque y se salta todas las demás.

Practica★★☆Sin empezar
Un programa convierte la nota numérica en calificación: menos de $5$ es «perdido», de $5$ a $6{,}9$ es «aprobado» y de $7$ en adelante es «notable». Escribilo con if,…

Un programa convierte la nota numérica en calificación: menos de $5$ es «perdido», de $5$ a $6{,}9$ es «aprobado» y de $7$ en adelante es «notable». Escribilo con if, elif y else, explicá por qué el orden de las condiciones importa y qué pasaría si la primera condición fuera nota > 5.

Resolver
Practica★★★Sin empezar
Un comercio aplica la siguiente política: compras menores de $\$30$ pagan $4{,}\$50$ de envío; compras entre $\$30$ y $\$50$ tienen envío gratis; compras superiores a…

Un comercio aplica la siguiente política: compras menores de $\$30$ pagan $4{,}\$50$ de envío; compras entre $\$30$ y $\$50$ tienen envío gratis; compras superiores a $\$50$ tienen envío gratis y un $10\ \%$ de descuento sobre el precio de la compra.

Un alumno programó este código:

precio = float(input("Total compra: "))

if precio > 50:

    total = precio * 0.90

if precio >= 30:

    total = precio

else:

    total = precio + 4.50

print("Total a pagar:", total)
  1. a) Realizá la traza con una compra de $60{,}\$00$. ¿Qué precio final imprime el programa? Justificá por qué se produce ese fallo de lógica al encadenar los condicionales.
  2. b) Reescribí el programa de forma correcta utilizando una estructura condicional anidada o con elif, e incluí una validación que avise si se introduce un precio negativo o cero.
Resolver
Practica★★★Sin empezar
Un sistema de calificación calcula la nota final aplicando los siguientes pesos: Trabajo de clase ($20\ \%$), Práctica de taller ($30\ \%$) y Escrito teórico ($50\ \%$).…

Un sistema de calificación calcula la nota final aplicando los siguientes pesos: Trabajo de clase ($20\ \%$), Práctica de taller ($30\ \%$) y Escrito teórico ($50\ \%$). El profesor programó la fórmula así:

trabajo = float(input("Nota trabajo: "))

taller = float(input("Nota taller: "))

examen = float(input("Nota examen: "))

nota_final = trabajo * 0.20 + taller * 0.30 + examen * 0.50 / 3

if nota_final > 5:

    print("Aprobado")

else:

    print("Suspenso")
  1. a) Predecí el resultado que mostrará el programa si el alumno obtiene un $10{,}0$ en los tres apartados. Interpretá la prioridad de operadores para justificar el valor numérico erróneo que almacena nota_final.
  2. b) Justificá por qué este error es de lógica y no de sintaxis, y argumentá por qué los errores lógicos suponen un riesgo mucho mayor en programas de ingeniería o control que los de sintaxis.
  3. c) Detectá un segundo error lógico en la condición del if respecto al criterio habitual de calificación (aprobar con $5{,}0$) y escribí la versión definitiva del programa corregido.
Resolver

Bucle `for`: repetir un número conocido de veces

for i in range(5):

    print("vuelta", i)

Este bucle muestra vuelta 0, vuelta 1, … hasta vuelta 4. El cuerpo se repite cinco veces. La variable i cuenta las vueltas y va cambiando sola.

Practica★☆☆Sin empezar
Explicá la diferencia entre un bucle for (repetir un número conocido de veces) y un bucle while (repetir mientras se cumpla una condición), y poné un ejemplo cotidiano…

Explicá la diferencia entre un bucle for (repetir un número conocido de veces) y un bucle while (repetir mientras se cumpla una condición), y poné un ejemplo cotidiano de cada uno: dar diez vueltas al patio frente a seguir remando hasta llegar a la orilla.

Resolver
Practica★★☆Sin empezar
Escribí un bucle for que muestre la tabla de multiplicar del $3$ (del $3 \cdot 1$ al $3 \cdot 10$), indicá cuántas veces se repite el cuerpo del bucle y explicá qué…

Escribí un bucle for que muestre la tabla de multiplicar del $3$ (del $3 \cdot 1$ al $3 \cdot 10$), indicá cuántas veces se repite el cuerpo del bucle y explicá qué cambiarías para mostrar la tabla del $7$ sin reescribir todo el programa.

Resolver
Practica★★★Sin empezar
Para seleccionar a los clasificados de un torneo de robótica, se leen cinco puntuaciones (del $0$ al $10$). Un compañero propuso este código para contar cuántas son…

Para seleccionar a los clasificados de un torneo de robótica, se leen cinco puntuaciones (del $0$ al $10$). Un compañero propuso este código para contar cuántas son iguales o superiores a $5{,}0$:

aprobados = 0

for i in range(5):

    nota = float(input("Introduce nota: "))

    if nota >= 5:

        aprobados = aprobados + 1

    else:

        aprobados = 0

print("Total de aprobados:", aprobados)
  1. a) Predecí qué mostrará por pantalla si el usuario introduce sucesivamente las notas: $6{,}0$, $8{,}0$, $4{,}0$, $9{,}0$ y $7{,}0$. Justificá por qué el resultado final no es el esperado localizando el error de lógica en la estructura condicional.
  2. b) Corregí el código y modificalo para que descarte del recuento las notas erróneas (menores que $0$ o mayores que $10$), mostrando un mensaje de advertencia específico sin sumar ni reiniciar el contador.
Resolver

Bucle `while`: repetir mientras se cumpla una condición

Comparación entre for, que repite un número fijo de veces, y while, que repite mientras una condición sea verdadera. for: veces fijas for i in range(10): print(3 * i) 10 vueltas exactas while: hasta que… n = 5 while n > 0: print(n) n = n - 1 termina cuando n llega a 0
Practica★★☆Sin empezar
Leé este programa y explicá qué hace: n = 5, while n > 0:, print(n), n = n - 1, y al final print("¡Ya!"). Escribí la salida completa en pantalla y razoná qué pasaría si…

Leé este programa y explicá qué hace: n = 5, while n > 0:, print(n), n = n - 1, y al final print("¡Ya!"). Escribí la salida completa en pantalla y razoná qué pasaría si nos olvidáramos de la línea n = n - 1.

Resolver
Practica★★☆Sin empezar
Un compañero escribe un programa que pide contraseñas hasta acertar: clave = "", while clave != "sol":, y dentro solo print("incorrecta"). Explicá por qué el programa no…

Un compañero escribe un programa que pide contraseñas hasta acertar: clave = "", while clave != "sol":, y dentro solo print("incorrecta"). Explicá por qué el programa no termina nunca, qué línea falta dentro del bucle (volver a pedir la clave) y la regla general sobre los bucles while: algo tiene que poder cambiar la condición.

Resolver
Practica★★★Sin empezar
Diseñá el algoritmo para una terminal de recarga y cobro del comedor del liceo cumpliendo los siguientes requisitos técnicos: La tarjeta parte de un saldo inicial de…

Diseñá el algoritmo para una terminal de recarga y cobro del comedor del liceo cumpliendo los siguientes requisitos técnicos:

  • La tarjeta parte de un saldo inicial de $20{,}\$00$ y cada menú cuesta $4{,}\$50$.

  • En un bucle, el programa pregunta cuántos menús se desean consumir en el día.

  • Si el saldo disponible no alcanza para pagar la cantidad solicitada, la operación se cancela, se informa del importe que falta y el saldo no se modifica.

  • Si hay saldo suficiente, se descuenta el importe y se comprueba si el saldo restante es inferior a $5{,}\$00$, mostrando en tal caso el aviso «Saldo bajo: recargue pronto».

  • El programa debe terminar automáticamente cuando el saldo restante sea menor que el precio de un menú individual ($4{,}\$50$).

  • Justificá qué tipo de bucle utilizaste y explicá cómo evitás que un usuario introduzca un número negativo de menús para aumentar artificialmente su saldo.

Resolver

Listas: guardar varios valores

Una lista de cinco temperaturas dibujada como una fila de casilleros numerados desde la posición 0 hasta la 4. temperaturas = [18, 21, 25, 23, 20] 18 21 25 23 20 posición 0 posición 1 posición 2 posición 3 posición 4

Lo que más se usa con una lista:

Qué hacés Python Resultado con la lista de arriba
Leer un valor temperaturas[2] 25
Cambiar un valor temperaturas[0] = 19 el primero pasa a 19
Agregar al final temperaturas.append(22) la lista tiene 6 valores
Cantidad de valores len(temperaturas) 5
Sumar todos sum(temperaturas) 107
Practica★★★Sin empezar
Reto del tema. Como analista de datos novato, tu misión es crear un programa en Python para analizar el impacto térmico en tu entorno y plantear hábitos eficientes. 1.…

Reto del tema. Como analista de datos novato, tu misión es crear un programa en Python para analizar el impacto térmico en tu entorno y plantear hábitos eficientes.

  1. Recolección de datos: Accedé a la web oficial del INUMET y registrá la temperatura máxima registrada en tu localidad durante los últimos $5$ días consecutivos.

  2. Programación textual: En un editor online gratuito como Trinket.io, escribí un script en Python que guarde estos $5$ valores en una lista. Mediante un bucle for y condicionales if-else, programá el cálculo automático de la temperatura media ($\bar{x}$) y la identificación del día más caluroso.

  3. Informe y propuesta: Generá un documento breve que incluya el código fuente comentado, una captura de pantalla del resultado en la consola y una propuesta justificada con dos medidas de climatización del hogar si la media supera los $21,5$ °C.

Se valorará:

  • Corrección sintáctica del código textual (manejo de listas, bucles y estructuras condicionales).

  • Precisión en la importación de datos reales del INUMET y exactitud del cálculo matemático.

  • Claridad de los comentarios en el programa y viabilidad técnica de la propuesta energética.

Resolver

Funciones

def saludar():

    print("¡Hola!")

saludar()

saludar()

Con una sola definición, saludar() funciona todas las veces que la llames. Si querés cambiar el mensaje, lo cambiás en un solo lugar.

La función area_cuadrado recibe 5 y devuelve 25, y recibe 2,5 y devuelve 6,25. llamada resultado def area_cuadrado(lado): return lado * lado area_cuadrado(5) area_cuadrado(2,5) 25 6,25
Practica★☆☆Sin empezar
Explicá qué es una función en un programa y qué ventaja tiene escribir una vez def saludar(): y poder llamarla muchas veces, en lugar de copiar las mismas líneas una y…

Explicá qué es una función en un programa y qué ventaja tiene escribir una vez def saludar(): y poder llamarla muchas veces, en lugar de copiar las mismas líneas una y otra vez.

Resolver
Practica★★☆Sin empezar
Analizá esta función: def area_cuadrado(lado): y dentro return lado * lado. Explicá qué es el parámetro, qué es el valor que devuelve y qué escribiría en pantalla cada…

Analizá esta función: def area_cuadrado(lado): y dentro return lado * lado. Explicá qué es el parámetro, qué es el valor que devuelve y qué escribiría en pantalla cada llamada: print(area_cuadrado(5)), print(area_cuadrado(2{,}5)).

Resolver
Practica★★★Sin empezar
Un equipo desarrolla el software de una caja registradora usando funciones: a) Al ejecutar este código, Python produce el error: TypeError: unsupported operand type(s)…

Un equipo desarrolla el software de una caja registradora usando funciones:

def calcular_iva(precio):

    total = precio * 1.21

    pass  # El programador olvidó añadir la última línea de esta función

def aplicar_descuento(total, rebaja):

    resultado = total - rebaja

    return resultado

precio_base = 100.0

precio_con_iva = calcular_iva(precio_base)

precio_final = aplicar_descuento(precio_con_iva, 10.0)

print("Precio final:", precio_final)
  1. a) Al ejecutar este código, Python produce el error: TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'. Interpretá el mensaje y explicá exactamente cómo viaja el valor None por las variables del programa.
  2. b) Un compañero sostiene: «Para arreglarlo basta cambiar la línea de la primera función por print(precio * 1.21)». Rebatí su afirmación explicando la diferencia funcional entre mostrar un valor por pantalla y retornar un valor a la llamada principal.
  3. c) Corregí el código y añadí una función es_valido(precio) que devuelva un valor booleano (True o False) para verificar que el importe base no sea negativo antes de procesarlo.
Resolver

Errores de sintaxis y de lógica: depurar

Equivocarse es parte natural de programar: depurar (buscar y corregir errores) es tan importante como escribir. Hay dos grandes tipos de error.

Dos ventanas de código: con un error de sintaxis (comilla sin cerrar) el programa no arranca; con un error de lógica (nota1 + nota2 / 2) arranca pero da 7 en vez de 5. Error de sintaxis input("Tu nombre: ) no arranca Error de lógica media = nota1 + nota2 / 2 nota1 = 4 nota2 = 6 resultado: 7 esperado: 5 arranca, pero mal
Practica★☆☆Sin empezar
Este programa tiene tres errores típicos: nombre = input("Tu nombre: ), if nombre = "Fátima", print("Hola"). Encontrá cada error (una comilla sin cerrar, un = que…

Este programa tiene tres errores típicos: nombre = input("Tu nombre: ), if nombre = "Fátima", print("Hola"). Encontrá cada error (una comilla sin cerrar, un = que debería ser == y explicá la diferencia), reescribí el programa corregido y decí qué mensaje de error daría la computadora en cada caso.

Resolver
Practica★★★Sin empezar
Observá el siguiente programa, cuyo objetivo es pedir la edad al usuario y determinar si tiene edad legal para votar (a partir de $18$ años cumplidos): a) Si intentás…

Observá el siguiente programa, cuyo objetivo es pedir la edad al usuario y determinar si tiene edad legal para votar (a partir de $18$ años cumplidos):

if edad >= "18":

print("Puedes votar")

edad = input("Dime tu edad: ")

else:

    print("No puedes votar")
  1. a) Si intentás ejecutar el programa tal cual, ¿en qué línea se detendrá el intérprete de Python y por qué no llegará a ejecutar la línea del input?
  2. b) Identificá y clasificá todos los errores presentes distinguiendo entre errores de sintaxis (que impiden compilar/interpretar) y errores de tipo o lógica durante la ejecución.
  3. c) Reescribí el código corregido e introducí una comprobación para evitar que el programa se cuelgue si el usuario ingresa su edad con texto (por ejemplo, escribiendo «dieciocho»).
Resolver
Practica★★★Sin empezar
Para regular un cruce escolar se propone este algoritmo en pseudocódigo para un semáforo con pulsador peatonal: a) Detectá un grave fallo de seguridad vial en la…

Para regular un cruce escolar se propone este algoritmo en pseudocódigo para un semáforo con pulsador peatonal:

mientras verdadero:

    verde_autos = ON, rojo_peatones = ON

    si pulsador_activado == 1:

        esperar(5)

        verde_autos = OFF, amarillo_autos = ON

        esperar(3)

        amarillo_autos = OFF, rojo_autos = ON

        rojo_peatones = OFF, verde_peatones = ON

        esperar(10)

        verde_peatones = OFF, rojo_peatones = ON
  1. a) Detectá un grave fallo de seguridad vial en la transición de vuelta: cuando se apaga el verde de peatones, ¿qué ocurre inmediatamente con el tráfico vehicular en la siguiente iteración del bucle?
  2. b) Diseñá una mejora del algoritmo (en pseudocódigo o texto estructurado) que solucione ese fallo y que además impida el colapso del tráfico: si los peatones pulsan repetidamente el botón, el semáforo debe garantizar siempre un mínimo de $20$ segundos ininterrumpidos en verde para los autos entre ciclo y ciclo.
Resolver

Resumen

Volvé al principio: «por siempre» es while True:, «repetir 10 veces» es for i in range(10): y «si… entonces» es if con sangría.

Ver todos los ejercicios de este apartado