La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Conceptos y Lenguaje Imperativo

Presentaciones similares


Presentación del tema: "Conceptos y Lenguaje Imperativo"— Transcripción de la presentación:

1 Conceptos y Lenguaje Imperativo
AYUDANTÍA 1 Conceptos y Lenguaje Imperativo

2 Sintaxis y Semántica Sintaxis: Palabras claves y símbolos reservados que pertenecen al lenguaje (parentesis, comentarios, delimitadores). Semántica: Significado de expresiones y sentencias (puede variar de acuerdo al lenguaje).

3 Gramática Métodos formales de descripcion: Backus Naur Form (BNF) Extended BNF (EBNF). Ejemplo: while_stmt ::= “while” <condición> “:” <sentencias> [“else” “:” <sentencias>]

4 Ejemplo (EBNF)->Parse tree
<switch_stmt>::= switch <identifier> {<case_stnt>}[<default_stmt>] <case_stmt>::= case <value>: {<stmts>} break; <default_stmt>::= default: {<stmts>} <identifier>::= <leter>{<leter>|<digit>} switch(T){ case 1: func1(); break; case 2: func2(); break; default: salir(); }

5 switch_stmt switch T default_stmt case_stmt case_stmt default: salir(); case 1: func1(); break; case 2: func2(); break;

6 Eliminar Ambigüedades
Agrupación (), []. Precedencia. Orden sintáctico (izquierda a derecha). Anidación.

7 Proceso de Compilación
Programa fuente (código). Análisis Léxico (Tokens léxicos). Análisis Sintáctico (Parse tree). Análisis Semántico (Código intermedio). Generación de código (Programa objeto).

8 Conceptos Nombres: Identificador que designa el lenguaje
Variables: Representación de un objeto de memoria Identificador Dirección Contenido Tipo de dato (determina operaciones válidas) Tiempo de vida (cuando se crea y destruye) Ámbito (donde se puede referenciar).

9 Memoria Al ejecutar un programa, el Sistema Operativo carga el código ejecutable en una zona de memoria. Zonas de memoria: Memoria Global: Aquí se almacenan el bloque de código main() y las funciones. Ej: Variables estáticas (static int x = 1024;). Stack: Se utiliza como una pila. Ej: Variables que no sean estáticas ni direcciones de memoria (int y = 512;). Heap: Se utiliza cuando es necesario y de manera aleatoria (la memoria no se asigna en un orden particular). Ej: int *x; (dirección de memoria en Stack). x = (int *)malloc(sizeof(int)); (apunta al heap). *x = 16; (guarda el valor en el heap).

10 Ligado y Memoria Asociación de un atributo a una entidad del lenguaje. La variable debe ser “ligada” para que pueda ser usada. Ligado Estático: Declaración de variables. Ligado Dinámico: Se realiza al momento de asignar una variable. Es importante que una variable tenga un “tiempo de vida”. Liberación Implícita: Garbage Colector (JVM). Liberación Explícita: free(...);

11 Ligado de Variables Variables Estáticas: Son ligadas antes de la ejecución. Ej: static float pi = 3,14; Variables Dinámicas de Stack: Son ligadas en el momento en que la ejecución alcanza el código asociado. Ej: int mil = 1000; (al darse cuenta que es int, le asigna el espacio de memoria necesario para un int). Variables Dinámicas de Heap: Son ligadas explícitamente (reservando memoria). malloc( ), free( ).

12 Tipos de Datos Primitivos:
Enteros: signed, unsinged, char, short, int, long, long long. Punto flotante: float, double y long double. Booleano (ocupa un byte). Carácter: char. Arreglos: Secuencia de elementos que se identifican por su posición mediante un índice. Almacenados contiguos en memoria. DIR(Array[x]) = DIR(Array[0]) + x*sizeof(tipo). Arreglos Multidimensionales: DIR(Array[x][y]) = DIR(Array[0][0])+(y * MAXx + x) * sizeof(tipo). Arreglos Asociativos (Python): Arr = {key1:value1, ... , keyN:valueN} (foreach). Hashing: ARI.


Descargar ppt "Conceptos y Lenguaje Imperativo"

Presentaciones similares


Anuncios Google