Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


manejo ESTRUCTURAS REP, Apuntes de Lenguajes de Programación

Lenguajes y Automatas II Lenguajes y Automatas II Lenguajes y Automatas II Lenguajes y Automatas II Lenguajes y Automatas II Lenguajes y Automatas II

Tipo: Apuntes

2020/2021

Subido el 12/01/2021

josh-mahomes
josh-mahomes 🇲🇽

4.8

(6)

5 documentos

1 / 18

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE ECATEPEC
División de Ingeniería en Sistemas Computacionales
Academia de Ciencias de la Ingeniería
EJERCICIOS Y ACTIVIDADES
PERIODO 2020-2
1
FECHA
12/11/2020
GRUPO
5601
LENGUAJES Y AUTÓMATAS II
Actividad No. 19. Generación de código intermedio. ESTRUCTURAS REPETITIVAS.
TRABAJO EN EQUIPO:
El TESE desea: Un reporte con la investigación con por lo menos tres referencias para: Reconocer el manejo de ESTRUCTURAS REPETITIVAS,
para un metacompilador. Desarrolle la Actividad con Grafos sintácticos (Diagrama de Conway) y expresiones de la forma BNF.
1. Mencione qué son las estructuras repetitivas y las reglas para su construcción.
2. Mencione la estructura sintáctica para la construcción de estructuras repetitivas fijas (for) y estructuras repetitivas condicionales
(while y do/while).
Considere:
Tres diferentes lenguajes de programación.
Elemento
C++
Java
Ruby
CONTESTE INDIVIDUAL:
1. ¿Qué ventajas y desventajas conlleva la Generación de código intermedio de estos elementos?
2. Conclusiones.
INTEGRANTE(S): EMPEZANDO POR APELLIDO Y EN ORDEN ALFABÉTICO.
FIRMA
1. Agulera Barajas Joshua
Joshua
2. Galvan Espinosa Diego
Diego
3. Prianti Hernandez Priscila
Priscila
4. Soto Venegas Dulce Joana
Dulce
REFERENCIAS EN ESTILO APA:
1. Elivar Largo. (2016). ESTRUCTURAS DE CONTROL REPETITIVAS EN
JAVA: FOR, WHILE, DO WHILE. 12/11/2020, de ECODEUP Sitio web:
https://www.ecodeup.com/estructuras-de-control-repetitivas-en-java-for-while-do-
while/
2. Alonzo Velázquez, J_. L. (2010, 10 septiembre). Estructuras de control:while y do
while. Universidad de Guanajuato.
https://www.cimat.mx/~pepe/cursos/lenguaje_2010/slides/slide_25.pdf
3. BLOQUE TEMÁTICO II. (2016, 29 octubre). Estructuras repetitivas o bucles.
Programación.
https://www.cartagena99.com/recursos/alumnos/apuntes/Tema%205-
Parte%20IV-Repetitivas%20o%20bucles.pdf
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Vista previa parcial del texto

¡Descarga manejo ESTRUCTURAS REP y más Apuntes en PDF de Lenguajes de Programación solo en Docsity!

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 FECHA 12/11/ GRUPO 5601 LENGUAJES Y AUTÓMATAS II Actividad No. 19. Generación de código intermedio. ESTRUCTURAS REPETITIVAS. TRABAJO EN EQUIPO: El TESE desea: Un reporte con la investigación con por lo menos tres referencias para: Reconocer el manejo de ESTRUCTURAS REPETITIVAS , para un metacompilador. Desarrolle la Actividad con Grafos sintácticos (Diagrama de Conway) y expresiones de la forma BNF.

  1. Mencione qué son las estructuras repetitivas y las reglas para su construcción.
  2. Mencione la estructura sintáctica para la construcción de estructuras repetitivas fijas (for) y estructuras repetitivas condicionales (while y do/while). Considere: Tres diferentes lenguajes de programación. Elemento C++ Java Ruby CONTESTE INDIVIDUAL:
  3. ¿Qué ventajas y desventajas conlleva la Generación de código intermedio de estos elementos?
  4. Conclusiones. INTEGRANTE(S): EMPEZANDO POR APELLIDO Y EN ORDEN ALFABÉTICO. FIRMA
  5. Agulera Barajas Joshua Joshua
  6. Galvan Espinosa Diego Diego
  7. Prianti Hernandez Priscila Priscila
  8. Soto Venegas Dulce Joana Dulce REFERENCIAS EN ESTILO APA:
  9. Elivar Largo. (2016). ESTRUCTURAS DE CONTROL REPETITIVAS EN JAVA: FOR, WHILE, DO WHILE. 12/11/2020, de ECODEUP Sitio web: https://www.ecodeup.com/estructuras-de-control-repetitivas-en-java-for-while-do- while/
  10. Alonzo Velázquez, J _. L. (2010, 10 septiembre). Estructuras de control:while y do while. Universidad de Guanajuato. https://www.cimat.mx/~pepe/cursos/lenguaje_2010/slides/slide_25.pdf
  11. BLOQUE TEMÁTICO II. (2016, 29 octubre). Estructuras repetitivas o bucles. Programación. https://www.cartagena99.com/recursos/alumnos/apuntes/Tema%205- Parte%20IV-Repetitivas%20o%20bucles.pdf

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2

1. MENCIONE QUÉ SON LAS ESTRUCTURAS REPETITIVAS

Y LAS REGLAS PARA SU CONSTRUCCIÓN.

Vamos a necesitar de estas estructuras al momento de programar, y pues bueno este tipo de estructuras de control se las utiliza cuando necesitamos recorrer un conjunto de datos, por ejemplo, al leer un archivo, al leer registros de una base de datos, en fin, en todos los problemas en los que se tenga que hacer iteraciones, bucles, siempre vamos a necesitar de estas estructuras. La estructura de control for tanto en Java como en C++. El ciclo for permite ejecutar un conjunto de sentencias un número fijo de veces y antes de saber cómo funciona esta sentencia, primero que nada, vamos a ver la sintaxis. Su sintaxis es muy simple como lo veremos a continuacion: for(variable_inicializacion;condicion;incremento) { //instrucciones } Sintaxis en Ruby for i in(0..9) puts i end La estructura de control while en Java y C++. El ciclo while permite ejecutar n veces un conjunto de instrucciones siempre y cuando la condición se cumpla o sea verdadera. Sintaxis tanto en Java como en C++ se utilizan de igual manera: while (condicion) { //instrucciones } Sintaxis en Ruby. it = 1 while i < 10 puts it it += 1 End

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2

DIAGRAMA DE CONWAY (FOR)

La semántica de for:

  • El denotador debe serlo de una variable de tipo ordinal
  • La expresión inicial debe ser definida y de tipo ordinal compatible en asigna ción con la variable
  • La expresión final debe ser definida y de tipo ordinal compatible en asignaci ón con la variable
  • Si se sigue el camino to, la variable progresa al sucesor del valor actual y si se sigue el de downto al predecesor.
  • La sentencia puede ser cualquiera.
  • La variable de control queda indefinida al terminar for.

EXPRESIONES BNF (FOR)

Ejemplo de uso de la notación BNF para la descripción de un lenguaje de programación < for >::= for < variable > := < expresion > ( to | downto ) < expresion > do < sentencia >

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2

DIAGRAMA DE CONWAY (WHILE DO/WHILE)

La sentencia while también necesita una condición de tipo boolean y plenamente definida en el mome nto de ejecutar la sentencia while. El ciclo se repite mientras la condición se evalú e a true y se sale la primera vez que se evalúa a false. La sentencia que constituye el cuerpo de while puede ser cualquiera.

EXPRESIONES BNF (WHILE DO/WHILE)

¨ Ejemplo de uso de la notación BNF para la descripción de un lenguaje de programación ::= WHILE <Expresión> DO DONE

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 ESTRUCTUTRA WHILE Y DO/WHILE WHILE : Una estructura repetitiva permite ejecutar una instrucción o un conjunto de instrucciones varias veces. Una ejecución repetitiva de sentencias se caracteriza por:

  • La o las sentencias que se repiten.
  • El test o prueba de condición antes de cada repetición, que motivará que se repitan o no las sentencias. Funcionamiento: En primer lugar se verifica la condición, si la misma resulta verdadera se ejecutan las operaciones que indicamos por la rama del Verdadero. A la rama del verdadero la graficamos en la parte inferior de la condición. Una línea al final del bloque de repetición la conecta con la parte superior de la estructura repetitiva. En caso de que la condición sea Falsa continúa por la rama del Falso y sale de la estructura repetitiva para continuar con la ejecución del algoritmo. El bloque se repite MIENTRAS la condición sea Verdadera. Importante: Si la condición siempre retorna verdadero estamos en presencia de un ciclo repetitivo infinito. Dicha situación es un error de programación, nunca finalizará el programa. EJEMPLO Realizar un programa que imprima en pantalla los números del 1 al 100.

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 fun main(parametro: Array) { var x = 1 while (x <= 100) { println(x) x = x + 1 } } Lo primero que podemos hacer notar que definimos una variable mutable de tipo Int con el valor 1: X= Esta variable x se irá modificando dentro del while por eso la necesidad de definirla con la palabra clave var. La estructura repetitiva while siempre tiene una condición, si se verifica verdadera pasa a ejecutar el bloque de instrucciones encerradas entre llaves (si no hay llaves solo ejecuta la siguiente instrucción del while a modo similar del if) Cada vez que se ejecuta el bloque de instrucciones del while vuelve a verificarse la condición para ver si repite nuevamente o corta el ciclo repetitivo. En nuestro problema x comienza con el valor 1, al ejecutarse la condición retorna VERDADERO porque el contenido de x (1) es menor o igual a 100. Al ser la condición verdadera se ejecuta el bloque de instrucciones que contiene la estructura while. El bloque de instrucciones contiene una salida y una operación. Se imprime el contenido de x, y seguidamente se incrementa la variable x en uno. La operación x = x + 1 se lee como "en la variable x se guarda el contenido de x más 1". Es decir, si x contiene 1 luego de ejecutarse esta operación se almacenará en x un 2. Al finalizar el bloque de instrucciones que contiene la estructura repetitiva se verifica nuevamente la condición de la estructura repetitiva y se repite el proceso explicado anteriormente. Mientras la condición retorne verdadero se ejecuta el bloque de instrucciones; al retornar falso la verificación de la condición se sale de la estructura repetitiva y continua el algoritmo, en este caso finaliza el programa. Lo más difícil es la definición de la condición de la estructura while y qué bloque de instrucciones se van a repetir. Observar que si, por ejemplo, disponemos la condición x >= 100 ( si x es mayor o igual a 100) no provoca ningún error sintáctico pero estamos en presencia de un error lógico porque al evaluarse por primera vez la condición retorna falso y no se ejecuta el bloque de instrucciones que queríamos repetir 100 veces. No existe una RECETA para definir una condición de una estructura repetitiva, sino que se logra con una práctica continua solucionando problemas.

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 } else { System.out.println("Tiene 1 dígito."); } } } while (valor!=0); } }

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 TABLA Tres diferentes lenguajes de programación. Elemento C++ Java Ruby FOR for(int i = valor inicial; i <= valor final; i = i + paso) { .... .... Bloque de Instrucciones.... .... .... } for (inicialización; condición; incremento/decremento){ //Instrucciones a ejecutar varias veces } for i in (0..10) puts i end WHILE int numero; cin >> numero; while(numero <= 100) { cout << "Ingrese un numero "; cin >> numero; } public class Cuadrado{ public static void main(String args[]){ int contador = 1; while ( contador <= 5 ) { System.out.println("*****\n"); contador++; } } } x = 1 while x <= 100 puts x x = x + 1 end DO/WHILE int numero; do { cout << "Ingrese un numero "; cin >> numero; } while(numero <= 100); public class DoWhile {public static void main (String[] args) { final boolean i = false;while(i);// Main.java:5: error: unreachable statementSystem.out.println(i); } } begin puts a a+= end while a< Do while no existe en Ruby

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 Nombre_ Galván Espinosa Diego Grupo 5601 Asignatura Lenguajes y autómatas II Fecha 12/11/ Actividad No. 19 firma Diego Objetivo de la práctica: Conocer el manejo de estructuras repetitivas. Competencia a desarrollar: Investigar las estructuras y su construcción. Desarrollo de la Actividad individual. ¿Qué ventajas y desventajas conlleva la generación de código intermedio de estos elementos? La ventaja es que permite abstraer la máquina, separar operaciones de alto nivel de su implementación a bajo nivel, permite la reutilización de los front-ends y backends, permite optimizaciones generales, y las desventajas son que implica una pasada más para el compilador, dificulta llevar a cabo optimizaciones específicas de la arquitectura destino, suele ser ortogonal a la máquina destino, la traducción a una arquitectura específica será más larga e ineficiente. Conclusión individual. Con esta investigación llegue a la conclusión de que Las estructuras de control repetitivas, son aquellas que permiten ejecutar un conjunto de instrucciones varias veces, de acuerdo con el valor que genere la expresión relacional y/o lógica. Esto significa que una instrucción repetitiva permite saltar a una instrucción anterior para volver a ejecutarla. los ciclos do-while son una estructura de control cíclica, los cuales nos permiten ejecutar una o varias líneas de código de forma repetitiva sin necesidad de tener un valor inicial e incluso a veces sin siquiera conocer cuando se va a dar el valor final, hasta aquí son similares a los ciclos while, sin embargo el ciclo do-while nos permite añadir cierta ventaja adicional y esta consiste que nos

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 da la posibilidad de ejecutar primero el bloque de instrucciones antes de evaluar la condición.

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 Dirigido Acíclico. Las estructuras repetitivas se utilizan cuando se quiere que un conjunto de instrucciones se ejecuten un cierto número finito de veces. La estructura repetitiva for permite ejecutar una serie de instrucciones un número determinado de veces. La estructura while es una estructura de control repetitiva que puede impedir la ejecución de un conjunto de instrucciones, si la evaluación de la expresión relacional y/o lógica es falsa.

División de Ingeniería en Sistemas Computacionales Academia de Ciencias de la Ingeniería EJERCICIOS Y ACTIVIDADES PERIODO 2020- 2 Nombre_ Soto Venegas Dulce Joana Grupo 5601 Asignatura Lenguajes y autómatas II Fecha 12 / 11 / Actividad No. 19 firma Dulce Objetivo de la práctica: Generación de código intermedio de estructuras repetitivas. Competencia a desarrollar: Trabajo en equipo y desarrollo de investigación de dicha actividad. Desarrollo de la Actividad individual. ¿Qué ventajas y desventajas conlleva la generación de código intermedio de estos elementos? Ventajas: permite abstraer la máquina, separar operaciones de alto nivel de su implementación a bajo nivel, permite la reutilización de los front-ends y back- ends; y permite optimizaciones generales. Desventajas: implica una pasada más para el compilador (no se puede utilizar el modelo de una pasada), dificulta llevar a cabo optimizaciones específicas de la arquitectura destino; y suele ser ortogonal a la máquina destino, la traducción a una arquitectura específica será más larga e ineficiente. Conclusión individual. Como conclusión tengo que una estructura de repetición, también llamada lazo o bucle, hace posible la ejecución repetida de secciones específicas de código. Hay dos tipos básicos de estructuras de repetición, cuya diferencia principal radica en cómo se controlan las mismas: Repetición controlada por contador o bucle DO iterativo. Con esta estructura, un bloque de sentencias se ejecuta una vez para cada uno de los valores que va tomando un contador. Se ejecuta un número específico de veces, siendo el número de repeticiones conocido antes de que empiece la