Unidad II · 4 horas
Elementos fundamentales
Distinguir los elementos fundamentales de los lenguajes de programación, considerando el entorno de desarrollo, su estructura y sintaxis, para utilizarlos en la creación de programas de cómputo.
Subtemas de la unidad
2.1
Nombres y objetosIdentificadores, ligaduras y la diferencia entre objeto y valor.Apuntes
Disponible
2.2
Entornos, alcance y memoriaBloques, reglas de alcance y administración de la memoria: pila y montículo.Apuntes
Disponible
2.3
Expresiones, comandos y controlExpresiones, comandos, secuencia, selección, iteración y recursión.Apuntes
Disponible
2.4
Subprogramas y paso de parámetrosFunciones, procedimientos y mecanismos de paso de parámetros.Apuntes
Disponible
2.5
Tipos de datosTipos primitivos y compuestos, sistemas de tipos e inferencia.Apuntes
Disponible
Proy.
Proyecto: Diagnóstico comparadoEscriba un programa que ilustre alcance, recursión y paso de parámetros, verifíquelo, compárelo con Java y C++ y redacte un informe de portafolio.Apuntes
Disponible
Actividad en clase
Implementa en Python un programa que contenga: (1) una función anidada que ilustre alcance estático (LEGB), (2) una función recursiva con al menos 2 casos base, (3) una función que reciba una lista y modifique tanto por mutación como por reasignación, imprimiendo el resultado en ambos casos para contrastar el efecto observado desde el llamador. Documenta con comentarios qué mecanismo de scope/paso de parámetros se está observando en cada bloque.
Preguntas de reflexión
- ¿Qué problemas puede causar el alcance dinámico frente al estático en programas grandes?
- ¿Por qué la recursión es central en el paradigma funcional pero opcional en el imperativo?
- ¿Qué ventajas y riesgos trae un sistema de tipos con inferencia frente a uno con anotación explícita?
- Si Python "pasa por referencia de objeto", ¿por qué
incrementar(x)conx = 5nunca modificaxfuera de la función, sin importar cómo se implementeincrementar?
Lecturas recomendadas
- Sebesta, R. (2015). Concepts of programming languages (11th ed.), cap. 5 (Nombres, ligaduras, alcance), cap. 6 (Tipos de datos), cap. 9 (Subprogramas), cap. 10 (Implementación de subprogramas). Pearson.
- Pratt, T., & Zelkowitz, M. (2001). Programming languages: Design and implementation (4th ed.), cap. 3-5. Prentice Hall.
- Scott, M. (2015). Programming language pragmatics (4th ed.), cap. 3 (Nombres, alcance, binding). Morgan Kaufmann.