Sintaxis y Semántica de los Lenguajes

Ciencias de la Computación

ISI-205 • Nivel 2

Lenguajes formales y autómatas. Gramáticas, autómatas y proceso de compilación.

Conceptos clave

Teoría de lenguajes formalesAutómatasGramáticasCompilaciónJerarquía de Chomsky

Créditos

4

Horas Estimadas

38h

Temas

11

Correlativas

Temario

1

Gramáticas y lenguajes formales

Definición formal, derivaciones, árboles, ambigüedad

3h 20min

2

Jerarquía de Chomsky

Regulares, libres de contexto, sensibles, enumerables

3h 0min

3

Autómatas finitos

AFD, AFN, minimización, equivalencia, Pumping

4h 0min

4

Expresiones regulares

Sintaxis, equivalencia AFN, aplicación (grep, lex)

3h 0min

5

Gramáticas independientes del contexto

Formas normales, simplificación, parsing

3h 20min

6

Autómatas push-down

AP determinista y no determinista, parsing LL/LR

4h 0min

7

Análisis sintáctico

Descendente recursivo, LL(1), shift-reduce, LR(0)

4h 20min

8

Máquinas de Turing

Definición, variantes, decidibilidad

3h 20min

9

Semántica de lenguajes

Estática, tipado, ámbito, operacional

3h 0min

10

Análisis semántico

Tabla de símbolos, verificación de tipos

3h 0min

11

Proceso de compilación

Fases: léxico, sintáctico, semántico, optimización

3h 20min

Objetivos

  • Comparar y contrastar paradigmas de programación.
  • Implementar soluciones usando programación funcional.
  • Implementar soluciones usando programación lógica.
  • Comprender los fundamentos teóricos de los lenguajes de programación.

Competencias

  • Programar en al menos tres paradigmas distintos.
  • Analizar ventajas y desventajas de cada paradigma.
  • Implementar algoritmos funcionales y lógicos.
  • Comparar lenguajes de programación según sus características.

Metodología de cursada

Teoría

Clase teórica sobre paradigmas de programación, semántica, tipos de datos y comparación de lenguajes.

Práctica

Laboratorio de programación en múltiples paradigmas: imperativo, orientado a objetos, funcional, lógico.

Actividades

  • Implementación en Haskell (funcional)
  • Implementación en Prolog (lógico)
  • Implementación en Python/Java (OOP)
  • Comparación de paradigmas
  • Trabajos Prácticos de programación

Forma de evaluación

Regularidad

Aprobar como mínimo 2 parciales con nota >= 4. Asistencia regular obligatoria (80% mínimo).

Promoción

Examen final escrito y práctico de programación en múltiples paradigmas.

Recuperatorio

Recuperatorio en el primer semestre del año siguiente.

Criterios

  • 2 Parciales (cada uno 40% de la nota de cursada)
  • Trabajos Prácticos de programación (20%)
  • Examen final (100% de la nota final)

Bibliografía

Oficial

  • •Sebesta, R. Concepts of Programming Languages. 12ª edición. Pearson.
  • •Tucker, A. & Noonan, R. Programming Languages: Principles and Paradigms. McGraw-Hill.
  • •Lewis, B. Concepts of Programming Languages. Pearson.

Complementaria

  • •Louden, K. Programming Languages: Principles and Practice. Cengage.
  • •Scott, M. Programming Language Pragmatics. Morgan Kaufmann.

Ejercicios tipo parcial

Preguntas oficiales con resolución para practicar antes del examen.

Programación funcional

Pregunta: Implementar en Haskell una función que filtre números pares y los multiplique por 2.

Solución: f = map (*2) . filter even

Programación lógica

Pregunta: Escribir en Prolog un programa que determine si un número es primo.

Solución: primo(N) :- N>1, forall(between(2,N-1,I), N mod I == 0).

Preguntar al Tutor

Resolvé dudas sobre esta materia

Practicar

Ejercicios adaptativos por tema

Crear Flashcards

Repetición espaciada para memorizar

Cargando materiales...