Volver a la portadaInformática · 9.° grado de Secundaria Básica · Cambiar asignatura
Empezar gratis
9° grado · Informática
Programación y robótica · Programación textual

Programación textual

Te conviene dominar: Programación por bloques (8.° grado de Secundaria Básica)
Te conviene dominar: Algoritmos y pensamiento computacional (8.° grado de Secundaria Básica)

Daniela escribió en el laboratorio de computación un algoritmo en pseudocódigo para saludar a quien llegue al círculo de interés. Le queda una duda: ¿cómo hace para que la computadora lo ejecute de verdad? Al final de la página lo sabrás.

Del pseudocódigo al programa

Un lenguaje de programación es un conjunto de reglas para escribir órdenes que una computadora entiende. En Scratch arrastrabas bloques; en un lenguaje textual escribes cada orden con letras y símbolos, y una sola coma fuera de lugar puede hacer que no funcione.

El texto que escribes se llama código fuente. Un programa traductor lo convierte en algo que la máquina ejecuta. Si traduce y ejecuta línea a línea, se llama intérprete; si traduce todo el programa de una vez, compilador. Python, el lenguaje de esta página, se suele usar con intérprete.

Un algoritmo secuencial (entrada, proceso, salida) se escribe casi igual en cualquier lenguaje. Fíjate:

Pseudocódigo Python
leer nombre nombre = input("Nombre: ")
puntos ← 0 puntos = 0
puntos ← puntos + 1 puntos = puntos + 1
escribir puntos print(puntos)

La flecha ← del pseudocódigo se convierte en el signo = de Python. Y en el código los decimales llevan punto (3.5), no coma.

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 Examen 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 Examen teórico ($50\ \%$). El profesor ha programado 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) Predice el resultado que mostrará el programa si el alumno obtiene un $10{,}0$ en los tres apartados. Interpreta la prioridad de operadores para justificar el valor numérico erróneo que almacena nota_final.
  2. b) Justifica por qué este error es de lógica y no de sintaxis, y argumenta por qué los errores lógicos suponen un riesgo mucho mayor en programas de ingeniería o control que los de sintaxis.
  3. c) Detecta un segundo error lógico en la condición del if respecto al criterio legal habitual de calificación (aprobar con $5{,}0$) y escribe la versión definitiva del programa corregido.
Resolver

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 Pantalla 1

Sumarle algo a una variable no es un error: el signo = de programación no dice «es igual a», dice «guarda en la caja lo que resulta de la derecha». Primero se calcula el lado derecho con el valor viejo y después se guarda.

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

Explica qué es una variable con el símil de una caja con etiqueta y describe 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
Clasifica 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",…

Clasifica 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
Predice 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). Escribe la…

Predice 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). Escribe la traza completa (qué vale cada variable tras cada línea) y no solo el resultado.

Resolver

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

Todo algoritmo secuencial tiene tres partes: entrada (los datos), proceso (los cálculos) y salida (el resultado). En Python:

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

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

Resolver
Practica★★☆Sin empezar
Escribe 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»). Explica qué…

Escribe 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»). Explica qué tipo de dato devuelve siempre input() y para qué sirve int() al pedir la edad.

Resolver

Condicionales: `if` y `else`

Un algoritmo secuencial hace siempre lo mismo. Pero en la vida decides: si llueve llevas el paraguas; si no, los espejuelos de sol. Eso es un condicional.

En pseudocódigo se escribe:

si llueve entonces

    paraguas

si no

    espejuelos de sol
Diagrama de flujo de un condicional: se lee la edad y, si edad es mayor o igual que 12, se escribe Puedes; si no, se escribe Aún no. Inicio leer edad edad ≥ 12 ¿verdadero? sí escribir "Puedes" no escribir "Aún no" Fin

El rombo es el símbolo de decisión: sale un camino si la condición es verdadera y otro si es falsa. El mismo diagrama en Python:

edad = int(input("Edad: "))

if edad >= 12:

    print("Puedes")

else:

    print("Aún no")

La sangría indica qué líneas pertenecen a cada rama: las dos de dentro solo se ejecutan si la condición lo permite. La línea print que no tiene sangría se ejecutaría siempre.

Practica★☆☆Sin empezar
Explica qué es un condicional con un ejemplo de tu vida diaria (si llueve tomo el paraguas; si no, los espejuelos de sol) y escríbelo en tres líneas de pseudocódigo:…

Explica qué es un condicional con un ejemplo de tu vida diaria (si llueve tomo el paraguas; si no, los espejuelos de sol) y escríbelo 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. Escribe 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í puedes participar no te falta poco edad = int(input("Edad: ")) if ?: print("Puedes") else: print("Aún no")

Escribe la condición que falta en la línea del if (debe comparar la variable edad con $12$), explica 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
Escribe un programa que pida un número y diga si es positivo, negativo o cero. Indica qué estructura usas (un condicional con dos ramas o tres), qué comparaciones haces…

Escribe un programa que pida un número y diga si es positivo, negativo o cero. Indica qué estructura usas (un condicional con dos ramas o tres), qué comparaciones haces y pruébalo mentalmente con los valores $7$, $-3$ y $0$.

Resolver

Más de dos caminos: `elif` y el orden

A veces hay tres o más opciones. Entonces se encadenan condiciones con elif («si no, y si…»).

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

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

Resolver
Practica★★★Sin empezar
Una tienda 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…

Una tienda 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) Realiza la traza con una compra de $\$60{,}00$. ¿Qué precio final imprime el programa? Justifica por qué se produce ese fallo de lógica al encadenar los condicionales.
  2. b) Reescribe el programa de forma correcta utilizando una estructura condicional anidada o con elif, e incluye una validación que avise si se introduce un precio negativo o cero.
Resolver

Errores de sintaxis y errores de lógica

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 resultado erróneo

Todos los programadores se equivocan; lo importante es reconocer qué tipo de error es.

Practica★☆☆Sin empezar
Este programa tiene tres errores típicos: nombre = input("Tu nombre: ), if nombre = "Fátima", print("Hola"). Encuentra 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"). Encuentra cada error (una comilla sin cerrar, un = que debería ser == y explica la diferencia), reescribe el programa corregido y di qué mensaje de error daría la computadora en cada caso.

Resolver
Practica★★★Sin empezar
Observa 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 intentas…

Observa 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 intentas 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) Identifica y clasifica 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) Reescribe el código corregido e introduce una comprobación para evitar que el programa se cuelgue si el usuario introduce su edad con texto (por ejemplo, escribiendo «dieciocho»).
Resolver

Vuelve al principio: el algoritmo de Daniela pasa a la computadora al escribirlo en un lenguaje como Python y ejecutarlo con un intérprete.

Resumen

Ver todos los ejercicios de este apartado