Conceptos sobre lenguajes de programación JOSÉ LUIS LEÓN

Get Started. It's Free
or sign up with your email address
Conceptos sobre lenguajes de programación JOSÉ LUIS LEÓN by Mind Map: Conceptos sobre lenguajes de programación JOSÉ LUIS LEÓN

1. Comparación entre intérpretes y compiladores: Ventajas

1.1. Inetérprete

1.1.1. Notifica un error en cuanto lo escribimos

1.1.2. Fácil depuración

1.1.3. Multiplataforma

1.2. Compilador

1.2.1. Mayor velocidad

2. Interpretación.

2.1. Compiladores.

2.1.1. Programa que traduce de alto nivel a lenguaje ensamblador

2.1.2. Traduce todo el programa a objeto

2.2. Intérpretes

2.2.1. Compila y ejecuta instrucción a instruccióin

2.2.2. No hay independencia entre las etaas de traducción y ejecucióna

3. Descripción de sintaxis

3.1. BNF

3.1.1. Símbols terminales, no terminales y de partida

3.2. EBNF

3.2.1. Símbolos para elementos opcionales o repetibles

4. Variables

4.1. Identificador

4.1.1. Referencia hacia la variable

4.2. Dirección

4.2.1. Espacio de memoria contenedor

4.3. Tipo

4.3.1. Operaciones que se pueden realizar con ella

4.4. Ligado

4.4.1. Ligado de tipos

4.4.1.1. Establecer un tipo para la variable

4.4.1.1.1. Ligado estático

4.4.1.1.2. Ligado dinámico

4.4.2. Ligado a memoria y tiempo de vida

4.4.2.1. Asignación de un espacio en memoria

4.4.2.1.1. Variables estáticas

4.4.2.1.2. Variables dinámicas de stack

4.4.2.1.3. Variables dinámicas de heap

4.5. Verificación de tipo

4.5.1. Asegurar compatibilidad entre operandos

4.6. Disciplina de tipos

4.6.1. Tipado fuerte

4.6.1.1. Siempre se detectan los errores de tipo

4.7. Compatibilidad de tipos

4.7.1. Nominal

4.7.1.1. Mismo nombre de tipo

4.7.2. Estructural

4.7.2.1. Misma estructura

4.7.3. Equivalencia en declaración

4.7.3.1. Si uno de los dos está definido con el nombre del otro

4.8. Ámbito

4.8.1. Rango de sentencia en la que es visible

4.8.2. Una variable es visible desde una sentencia si puede reverenciarse desde ésta

4.8.3. Ámbito estático

4.8.4. Ámbito dinámico

5. Tipos de Datos

5.1. Simples

5.1.1. Primitivos

5.1.1.1. Númerico

5.1.1.1.1. Entero

5.1.1.1.2. Punto flotante

5.1.1.1.3. Decimal

5.1.1.2. Booleano

5.1.1.3. Caracter

5.1.2. De representación

5.1.2.1. Números enteros

5.1.2.2. Número de punto fijo

5.1.2.3. Número de punto flotante

5.1.3. Definidos por el usuario

5.1.3.1. Objetos

5.2. Estructurados

5.2.1. Array

5.2.1.1. Conjunto de elementos ordenados por su posición relativa mediante un índice

5.2.2. Registro

5.2.2.1. Composición heterogénea de elementos que se identifican por una característica en particular

5.2.3. String

5.2.3.1. Cadena de caracteres

5.2.3.2. Textos

5.3. Punteros

5.3.1. Su valor corresponde a una dirección de memoria,

6. Translación de lenguajes de programación

6.1. Compilación.

6.1.1. Traducción de lenguaje de alto nivel a lenguaje ensamblador

6.2. Análisis del programa fuente

6.2.1. Construicción carácter por caráctede la estructura del programa

6.3. Análisis léxico.

6.3.1. Recibe como entrada el código fuente de otro programa y produce una salida compuesta de tokens o símbolos

6.4. Análisis sintáctico.

6.4.1. Analiza una cadena de símbolos de acuerdo a las reglas de una gramática formal.

6.5. Análisis semántico

6.5.1. Se procesan las estructuras sintácticas reconocidas por el analizador sintáctico

6.5.2. Puente entre las partes de análisis yde síntesis de la traducción

6.5.3. Produce una forma interna del programa ejecutable final

6.6. Tabla de símbolos.

6.6.1. Estructura de datos que usa el proceso de traducción de un lenguaje de programación cdonde cada símbolo en el código fuente de un programa está asociado con información

6.7. Síntesis del programa objeto

6.7.1. Esta fase implica generación de código y su optimización

6.8. Generación de código.

6.8.1. Dar el formato apropiadoa al código optimizado

6.9. Programa objeto.

6.9.1. Programa ejecutable final listo para usarse

7. Expresiones y Asignaciones

7.1. Expresiones aritméticas

7.1.1. Orden de evaluación por las reglas de precedencia y asociatividad

7.1.2. Paréntesis fuerzan determinado orden

7.2. Expresiones lógicas

7.2.1. Operadores lógicos

7.2.2. Operadores relacionales

7.3. Sobrecarga de operadores

7.3.1. Realizar dos operaciones en una

7.4. Conversiones de tipo

7.4.1. Permite asignar un nuevo tipo a una variable

7.5. Evaluación con corto-circuito

7.5.1. Atajo en la resolución de expresiones lógicas

8. Estructuras de Control

8.1. Sentencias Compuestas

8.1.1. Conjunto de sentencias

8.2. Sentencias de Selección

8.2.1. Selección binaria

8.2.1.1. if-else

8.2.2. Selección múltiple

8.3. Sentencias Iterativas

8.3.1. Bucles controlados por contador

8.3.2. Bucles controlados por condición

8.3.3. Bucles controlados por Estructuras de Datos

8.4. Salto Incondicional

8.4.1. Uso de rótulos o etiquetas

8.4.1.1. Sólo rótulos en el ámbito de la variable

8.4.1.2. Rótulos deben ser constantes

9. Subprogramas

9.1. Características

9.1.1. Permite crear abstracción de proceso

9.1.2. Permite reutilizar código, ahorrando memoria y tiempo de codificación.

9.1.3. Existe en forma de procedimiento y función

9.2. Firmas y Protocolos de la Interfaz

9.2.1. Firma

9.2.1.1. Definición de la semántica

9.2.2. Protocolo

9.2.2.1. Especifica cómo debe realizarse la comunicación de parámetros y resultados

9.3. Parámetros

9.3.1. Definición

9.3.1.1. Variables mudas que se ligan a los parámetros reales cuando se activa el subprograma

9.3.2. Comunicación

9.3.2.1. Explícita

9.3.2.2. Implícita

9.3.3. Modo de interacción

9.3.3.1. Entrega de valor (IN)

9.3.3.2. Recibo de valor (OUT)

9.3.3.3. ambos (INOUT)

9.3.4. Implementación de la transferencia de datos

9.3.4.1. Copiando valores

9.3.4.2. Copiando referencias

9.3.5. Paso de Parámetros

9.3.5.1. Paso por Valor

9.3.5.1.1. Modo IN

9.3.5.1.2. Copia de valor

9.3.5.2. Paso por Resultado

9.3.5.2.1. Modo OUT

9.3.5.2.2. Copia de valor

9.3.5.3. Paso por Valor-Resultado

9.3.5.3.1. Modo INOUT

9.3.5.3.2. Copia de valor

9.3.5.4. Paso por Referencia

9.3.5.4.1. Modo INOUT

9.3.5.4.2. Copia de referencia

9.4. Sobrecarga de Subprogramas

9.4.1. En el mismo ámbito existen diferentes subprogramas con el mismo nombre

9.4.2. Cada versión debiera tener una firma diferente

9.4.3. Las versiones pueden diferir en la codificación

9.5. Subprogramas Genéricos

9.5.1. Diferentes subprogramas que implementan el mismo algoritmo, el cual actúa sobre diferentes tipos de datos

9.5.1.1. Polimorfismo paramétrico:

9.5.1.1.1. Parámetros genéricos

9.5.1.2. Polimorfismo ad-hoc

9.5.1.2.1. Sobrecarga de subprogramas