Proyecto 1 Agregar los siguientes operadores a Tiny, con la precedencia y asociatividad indicada OperadorTipoPrecAsociatividad ** binario altaderecha -,

Slides:



Advertisements
Presentaciones similares
Análisis Sintáctico Capítulo 4.
Advertisements

Compiladores e intérpretes Generación de código intermedio II
Inicio Índice Siguiente Anterior Final Dudas CAPITULO 3 CONTROL DE FLUJO Las instrucciones de control de un lenguaje especifico es el orden en el que se.
Instrucciones y excepciones
Programación Estructurada
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Diseño y análisis de algoritmos
Estructura General de Un Programa Programación Estructurada
Seminario de Actualización - Excel Avanzado y Macros
Estructuras de Control
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
Curso de Programación 1 Plan 97
Módulo 5: Estructuras de Decisión y Bucles
FORTRAN 77 y Cómputo Científico
Estructuras de control
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
Programación.
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
PROGRAMACIÓN ESTRUCTURADA
Tema 4: Sentencias de control
Docente. Christian Alexander Martínez Arteaga
Estructuras de Control
Sesión 6 Sentencias de Repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Análisis de Algoritmos
Página Web del Lenguaje Pascal.
CICLOS por Profesora Lillian Bras
Conversión cadena a número
Introducción a la Programación
Sentencias de selección
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Parte 4: Estructura FOR Basada en diapositivas de Prof. Elizabeth Vidal Duarte.
Informática Ingeniería en Electrónica y Automática Industrial
1002 JM while not detener: adivina = int(raw_input('Ingrese un entero : ')) if adivina == numero: print 'Felicitaciones, haz adivinado!.' detener = True.
Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.
Tema 3: Operadores Antonio J. Sierra. Índice Aritméticos A nivel de bit Relacionales Lógicos Asignación.
Teoría – Alejandro Gonzalez
EXPRESIONES Y SENTENCIAS
El Concepto de Tipo Los tipos permiten indicar la característica de los valores (datos) manipulados en un programa. Toda variable tiene asociado un tipo.
Control de Flujo.
Tema 6: Estructuras de Control
Agenda Clase 6 Iteradores. Enumeración sin iteradores. Loops lógicos. Recursión vs. Iteración. Recursión de Cola. Orden de Evaluación Normal y Aplicativo.
Operadores y estructuras de control
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Alto Nivel. Y Es un compilador. YContiene un conjunto de palabras.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
COMPUTO III Ing. Jimmy Ojeda Arnica.
Estructuras de Control en Visual Basic.net
29/5/2002 Sesión 18 Tipos de datos Estruturados Archivos de Caracteres Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Estructuras de Control en Visual Basic.net
Se pueden incluir comentarios en cualquier parte de un programa pero deben delimitarse con llaves o con paréntesis y asterisco:
Programación para Ingenieros I IIS
Fundamentos de Programación
Estructuras de Decisión
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
Estructuras de Control
PROGRAMACIÓN EN PHP Y MYSQL Tema 4: Estructuras de control Jose Miguel Vidagany Igual.
1 Desarrollo Web en Entorno Servidor Tema 4: Estructuras de control. Estructuras Selectivas. Operadores de comparación. Operadores Lógicos. Operadores.
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
1 Control de Secuencia Øyvind Mo Edgar Acosta Adrián López.
MODULA Lenguaje de Programación Anabel Martín González
Visual Basic Prof.: Carol Briones García. Uso de Archivos  Definición  Es un conjunto de información que se almacena en algún medio de escritura que.
Estructuras de Decisión en Visual Basic 6.0
CICLOS ESTRUCTURA DE REPETICIÓN PROG 2270LGUILLERMO SOLLA.
1 Clase 6: control (1ª parte) iic1102 – introducción a la programación.
 Do- While y Do- Until Las instrucciones Do-while y Do-until permiten repetir un bloque de código mientras cierta condición sea True o hasta que cierta.
Operadores relacionales y lógicos.. Operadores relacionales  Son símbolos que se usan para comparar dos valores.  Dependiendo de la expresión comparada,
2012-BM5A. Unos tips antes de empezar: C# es Case Sensitive (sensible a mayúsculas) Pepe ≠ pepe ≠ pEpE Las asignaciones se hacen con “=” y las comparaciones.
Unidad V: Estatutos en Basic De control o selección if. De ciclos: Do, for, while. Otros estatutos. Solución de problemas aplicando estatutos de control.
Control, adquisición y monitoreo con Arduino y Visual Basic .net
Diego Hernández R. Archivos Diego Hernández R.
Transcripción de la presentación:

Proyecto 1 Agregar los siguientes operadores a Tiny, con la precedencia y asociatividad indicada OperadorTipoPrecAsociatividad ** binario altaderecha -, +, not unario derecha *, /, and, mod binario izquierda +, -, or binario izquierda, >=, binario bajaninguna

Proyecto 1 Agregar las siguientes constantes a Tiny: –true, false Agregar la siguiente función intrínseca a Tiny: –eof Hacer que la cláusula else sea opcional. Permitir expresiones múltiples en la instrucción output.

Proyecto 2 Agregar la instrucción de intercambio: x:=:y Agregar la instrucción “repeat” a Tiny. Constrainer: E debe ser booleano; processar S 1, … S n Generador de Código: Hacer cascada con CurrLabel, S 1, … S n repeat S1ESn... L2(CL?) S1 S2 … Sn E COND L1 L2 L1

Proyecto 2 Instrucción loop-pool con exit loop n=read; if (n=0)then exit else output(n); pool; Constrainer: En nodo ’program’: DTEnter(LOOP_CTXT,T,T) En nodo ‘loop’: -- Open_Scope; -- DTEnter(LOOP_CTXT,T,T); // LOOP_CTXT es ‘ ’ -- Procesar hijos; -- Close_scope; -- if (Decoration(T)=0) print (‘Warning: no ‘exit’) En nodo ‘exit’: -- Temp = Lookup(LOOP_CTXT); -- if NodeName(Temp) <> LoopNode then Error -- Decorate(T,Temp); Decorate(Temp,T); loop S1Sn... exit

Proyecto 2 Instrucción loop-pool con exit loop n=read; if (n=0)then exit else output(n); pool; Generador de Código: En nodo ’loop’: -- Decorate (T, L1=Makelabel); -- Generar código (ver diagrama); En nodo ‘exit’: -- L1=Decoration(Decoration(T)); -- CodeGen1(GOTOOP, L1, Currlabel) L2(CL?) S1 S2 … Sn GOTO L2 L1 GOTO L1 loop S1S1 SnSn... exit L1

Proyecto 2: Instrucción ‘for’ de Pascal (upto y downto) upto i IFS for i := I to F do S Constrainer: En node ‘program’ : DTEnter(FOR_CTXT, T); En nodo ‘upto’: Temp = Lookup(FOR_CTXT); Decorate (T,Temp); Open_scope; DTEnter(FOR_CTXT,T); DTEnter(LOOP_CTXT); // disallows “exit” Procesar hijos // assumir que tiene el tipo correcto. while NodeName(Temp) != ProgramNode // i debe ser distinto if (NN(FK(FK(Temp)) = NN(FK(FK(T)) then Error // de todas las vcl’s de Temp = Decoration(Temp) // loops anidados Close_scope; Siguiente ‘for’ anidado No se permite exit

Instrucción ‘for’ de Pascal (cont’d) upto i IFS for i := I to F do S Constrainer: En nodo ‘assign’ : Temp = Lookup(FOR_CTXT); while NodeName(Temp) != ProgramNode if (NN(FK(FK(Temp)) = NN(FK(FK(T)) then Error // x (izquierda de assign) Temp = Decoration(Temp) // no puede ser igual a la // vcl de ningun ‘loop’ // anidado Siguiente ‘for’ anidado Prohibir assignación a i !

Instrucción ‘for’ de Pascal (cont’d) upto i IFS for i := I to F do S CL F I ST i L1 DUP LD i BOP BGE COND L2 L3 L2 S LD i UNOP USUCC ST i GOTO L1 L3 POP 1 LIT 0 ST i CodeGenerator: Generar código (duh, ver diagrama) Recuerde: ProcessNode siempre devuelve una etiqueta return Nolabel

Proyecto 2: Instrucción ‘case’ case v of 1..3: S1; 2: S2; otherwise S3 end; case E case_clauseotherwisecase_clause... CL1S1CLnSnS opcional dos posibilidades: n.. lu o bien Constrainer: Assumir E está correcto, comparar con los demás

Instrucción ‘case’ case E case_clauseotherwisecase_clause... CL1S1CLnSnS opcional CL E CL1 COND L1 L2 L1 POP 1 S1 GOTO LE L2 CL2 COND L3 L4 L3 POP 1 S2 GOTO LE Ln CLn COND L 2n-1 L 2n L 2n-1 POP 1 Sn GOTO LE... L DUP DUP LIT l BOP BGE SWAP LIT u BOP BLE BOP BAND L DUP LIT n BOP BEQ Cada CLi es uno de estos dos sin ‘otherwise’ L 2n POP 1 S LE L 2n POP 1 LE con ‘otherwise’ OR