Seden 5

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Seden 5 as PDF for free.

More details

  • Words: 3,939
  • Pages: 16
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

CICLOS PARA / CICLOS DESDE Otra estructura de control disponible para la realización de ciclos o iteraciones es la estructura desde ó para, dependiendo de la bibliografía consultada, se encontrará uno de los dos términos, pero ambos se refieren a la misma estructura de control.

TEMAS Estructura desde Sintaxis de la estructura desde Diferencias entre las estructuras desde y mientras Seguimiento y prueba de algoritmos con ciclos desde.

Los ciclos desde son muy apropiados cuando se conoce previamente el número exacto de iteraciones que se necesitan en el algoritmo. Por ejemplo, si se sabe que debe realizarse la misma operación cada uno de los días de la semana, se sabe, entonces, que deben realizarse 7 iteraciones. Este es el caso típico en el que un ciclo desde es el más apropiado.

Un ciclo desde, sin embargo, tiene una variable de control, una inicialización, una condición que determina la finalización del ciclo y una actualización establecida siempre mediante un incremento. EXPLICACION SINTAXIS desde i  vi hasta vf hacer sentencia1 sentencia2 ... sentenciaX fin_desde

Una estructura desde, consta de las palabras reservadas desde, hasta, hacer y fin_desde La palabra desde, identifica el encabezado de la estructura repetitiva. i es la variable de control, actúa como un contador que cuenta desde vi hasta vf. vi, es un valor que representa el valor inicial que tomará la variable de control al ingresar al ciclo. vf , es el valor final que tomará la variable de control durante la ejecución del ciclo. Las sentencias sentencia1, sentencia2, . . .

EJEMPLO Diseñar un algoritmo que imprima los números del 1 al 10. Algoritmo Desde01 Variables entero : num inicio para num 1 hasta 10 hacer escribir ( num ) fin_para fin Luís Fernando González Alvarán 1 / 16

OBSERVACION

Los ciclos desde no necesitan una instrucción de actualización, explícita dentro del cuerpo del ciclo. Los ciclos desde actualizan automáticamente la variable de control incrementándola en cada iteración. En los ciclos desde no es necesaria la inicialización previa de la variable de control, ésta se inicializa la primera vez que se alcanza el Ciclos encabezado del ciclo, en el valor

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

FUNCIONAMIENTO DE UN CICLO DESDE Un ciclo desde se ejecuta mientras la variable de control no sobrepase el valor final definido en el encabezado del ciclo. Gráficamente, puede verse el funcionamiento de un ciclo desde así :

inicialización

E JEM PLO D ise ñar un

valor inicial

inicialización

para ivariable  vi hasta vfnohacer de control

sentencia1 sentencia2 si ... sentenciaX

valor final

cuerpo del ciclo

cuerpo del

fin_para incremento de la

variable Nota : Nodeescontrol necesaria una sentencia de actualización en un ciclo desde. La actualización se realiza automáticamente al finalizar cada iteración.

algoritmo que calcule y muestre la tabla de multiplicar del 5. Algoritmo Desde02 Variables entero : num, multi inicio desde num 1 hasta 10 hacer multi 5 * num escribir ( num, " x 5 = ", multi) fin_desde fin PREGUNTAS DE REVISIÓN Cuál es la variable de control en éste ciclo ? Cuál será el valor inicial de la variable de control ? Qué valor tendrá la variable de control durante la última iteración ? Realice una prueba de escritorio del algoritmo. Cuál será el valor de la variable de control al finalizar el algoritmo ?

Luís Fernando González Alvarán 2 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

DIFERENCIAS ENTRE CICLOS DESDE Y CICLOS MIENTRAS En general los ciclos mientras y los ciclos desde son similares en cuanto al orden en el que se ejecutan las sentencias, pero el cuerpo del ciclo es diferente : En los ciclos mientras, es indispensable que una de las sentencias del cuerpo del ciclo sea la actualización de la variable de control, ya sea a través de una operación de lectura o a través de una operación de asignación, en cambio, en los ciclos desde, no debe modificarse el valor de la variable de control dentro del cuerpo del ciclo, esto alteraría por completo el funcionamiento normal de un ciclo desde. característica Inicialización de la variable de control Expresión de prueba

ciclo desde Es una de las expresiones del encabezado del ciclo. Determinada por el valor final establecido en el encabezado del ciclo.

Actualización de la variable de control.

Se realiza un incremento, de forma automática en cada iteración.

Se conoce previamente el número de iteraciones necesarias

Es la estructura repetitiva más apropiada. Pues la variable de control, actúa automáticamente como contador.

No se conoce previamente el número de iteraciones necesarias.

Es difícil o imposible de utilizar.

ciclo mientras Debe realizarse antes de alcanzar el ciclo. Establecida explícitamente en el encabezado del ciclo. Debe incluirse explícitamente dentro del cuerpo del ciclo. Pueden realizarse asignaciones a través de operaciones de asignación o a través de operaciones de lectura. Puede utilizarse, garantizando el uso de un contador en el cuerpo del ciclo, para ser usado como variable de control. Puede utilizarse, estableciendo apropiadamente la condición de parada y la actualización de la variable de control.

EJEMPLO Diseñar un algoritmo que permita calcular el promedio de notas de un grupo de N estudiantes en la asignatura Matemáticas Fundamentales, conociendo la nota definitiva de cada estudiante en esa asignatura. Modelaje : E/S/ A E

Identificad Tipo or n entero

Luís Fernando González Alvarán 3 / 16

Descripción Cantidad de estudiantes del grupo Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

A

suma

real

E A S

nota real estudiante entero promedio real

Acumulador que contendrá la suma de las notas de todos los estudiantes del grupo. Nota de cada uno de los estudiantes. Contador de estudiantes. Controla el ciclo desde Promedio de las notas de la asignatura.

Especificación : PRE :

n, estudiante ∈ { Z, n > 0} nota ∈ { R <= 0 <= 5.0 } suma ∈ { R

POS : { promedio ∈ { R} Procesos Suma = (∑ nota) promedio = suma/n Algoritmo Promedio variables entero : estudiante, n real : nota, promedio, suma inicio escribir (" Cuántos estudiantes hay en el grupo ?") leer ( n ) suma 0 desde estudiante 1 hasta n hacer escribir ("Nota del estudiante ", estudiante) leer (nota) suma suma + nota fin_desde promedio suma / n escribir (" El promedio del grupo es : ", promedio) fin EJEMPLO Diseñar un algoritmo que sume todos los números enteros en un intervalo definido por el usuario. Modelaje : Identificad Tipo E/S/A or enter E A o enter E B o S suma enter Luís Fernando González Alvarán 4 / 16

Descripción Límite del intervalo Límite del intervalo Acumulador usado para sumar todos los números del Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

A

i

A

aux

o enter o enter o

intervalo Contador, generador de los números del intervalo. Controla el ciclo desde Variable usada temporalmente para intercambiar los valores de a y b

Especificación : PRE : a, b,i aux ∈ {Z} POS : Suma ∈ {Z} Procesos i = 0, aux = 0 suma = (∑ i ), a >= i >=b } Algoritmo SumaDesde variables entero : a, b, suma, i, aux inicio escribir (" Límite del intervalo ?") leer ( a ) escribir (" Límite del intervalo ?") leer ( b ) suma 0 si (b > a) entonces aux a a b b aux fin_si desde i b hasta a hacer suma suma + i fin_desde escribir (" La suma es : ", suma) fin INCREMENTO EN LOS CICLOS DESDE De forma predeterminada, el incremento en un ciclo desde, está establecido en 1, es decir, que en cada iteración, la variable de control se incrementa en 1, sin embargo, existe una cláusula opcional en la sintaxis de éstas estructuras repetitivas que permite modificar éste valor.

Luís Fernando González Alvarán 5 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

SINTAXIS

inicialización

valor inicial

para i  vi hasta vf incrementovalor k hacer final

sentencia1 sentencia2 ... sentenciaX

cuerpo del ciclo

valor del incremento

fin_para

El valor del incremento se especifica inmediatamente después de la palabra incremento, de forma que en cada iteración la variable de control del ciclo se incrementará de acuerdo con el valor establecido en esta cláusula. El incremento puede ser cualquier valor positivo o negativo, incluso pueden ser valores de tipo real. Si el incremento es negativo (decremento), la condición de parada se modifica y el cuerpo del ciclo se ejecutará siempre que la variable de control sea mayor o igual que el valor final. EJEMPLO Diseñar un algoritmo que muestre los múltiplos de 4 entre 7 y 57. Algoritmo Multiplos4 Variables entero : i inicio desde i 8 hasta 57 incremento 4 hacer escribir ( i ) fin_desde fin

La variable i, se inicializa en 8 y en cada iteración, se incrementa en un valor de 4, generándose los números 8, 12, 16, 20, ... El ciclo se ejecuta siempre que la variable de control sea menor o igual que el valor final, en este caso 57.

Diseñar un algoritmo que muestre en forma descendente los múltiplos de 3 menores que 100. Algoritmo Multiplos3 Variables entero i inicio desde i 99 hasta 1 incremento –3 hacer escribir (i) fin_desde Luís Fernando González Alvarán 6 / 16

La variable i, se inicializa en 99 y en cada iteración, se incrementa en un valor de –3, es decir, se decrementa en un valor de 3, generándose los números 99, 96, 93, 90, ... El ciclo se ejecuta siempre que la variable de control sea mayor o igual que el valor final, en este Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

fin CICLOS ANIDADOS Al igual que con las otras estructuras de control, los ciclos pueden anidarse, es decir, las instrucciones dentro del cuerpo de un ciclo pueden a su vez ser estructuras repetitivas. Al utilizar estructuras anidadas, la estructura interna debe estar completamente contenida en la estructura externa, no puede haber solapamiento o cruces ente estas estructuras. Al utilizar ciclos anidados debe tenerse en cuenta que no deben confundirse las variables de control de cada uno de los ciclos. El ciclo o los ciclos internos se ejecutan y terminan por completo en cada iteración del ciclo externo. Los siguientes son algunos patrones posibles para estructuras anidadas:

En ningún caso pueden cruzarse las líneas que indican el inicio y el fin de dos ciclos diferentes. EJEMPLO Se desea calcular el promedio de notas de los estudiantes de II semestre, donde cada estudiante está cursando M materias. De cada materia se tiene la nota definitiva del estudiante. Análisis: Para obtener el promedio de notas de los estudiantes de un semestre determinado, debe tenerse primero el promedio de cada uno de los estudiantes, teniendo en cuenta cada una de las materias que el estudiante haya tomado en el semestre. Pueden usarse dos ciclos anidados: El ciclo externo se usa para los estudiantes y dentro de él se usa un ciclo para calcular el promedio de un solo estudiante en todo el semestre. En el ciclo externo, se van acumulando estos promedios individuales para finalmente calcular el promedio del semestre. Modelaje : E/S/ A E E

Identificad Tipo or n entero m entero

Luís Fernando González Alvarán 7 / 16

Descripción Cantidad de estudiantes del semestre Cantidad de materias de cada estudiante Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

E

nota

real

A

estudiante entero

A

materia

entero

A

suma

real

A

prom_estu real

S

promedio

real

Cada una de las notas de un estudiante en cada materia. Contador de estudiantes. Controla el ciclo desde externo Contador de materias de un estudiante. Controla ciclo interno. Acumulador que contendrá la suma de los promedios de cada uno de los estudiantes del semestre Variable que se usa como acumulador para ir sumando las notas de un estudiante en cada materia y posteriormente para calcular el promedio de cada estudiante en el semestre. Promedio de notas del semestre.

Especificación : PRE : { n / n ∈ Z, n > 0, m / m ∈ Z, m > 0, nota / nota ∈ R, 0.0 <= nota <= 5.0 } POS : { n = ∅, m = ∅, nota = ∅, promedio ∈ R, , 0.0 <= promedio <= 5.0 } Algoritmo Algoritmo PromedioSemestre Variables real : nota, suma, promedio, prom_estu entero : estudiante, materia, m, n inicio escribir ("Cuántos estudiantes hay en segundo semestre ?") leer (n) suma 0 desde estudiante 1 hasta n hacer escribir ("Materias del estudiante ", estudiante, " ? " ) leer ( m ) prom_estu 0 desde materia 1 hasta m hacer escribir("Nota del estudiante",estudiante,"en la materia", materia) leer (nota) prom_estu prom_estu + nota fin_desde prom_estu prom_estu / m suma suma + prom_estu fin_desde promedio suma / n escribir ("Promedio semestre = ", promedio) fin Prueba de escritorio Luís Fernando González Alvarán 8 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

materi a # #

n estudiante m

suma prom_estu nota promedio pantalla

# # 4

# 0

#

#

#

Cuantos estudiantes ? 4 Materias estudiante 1 ? 2

1 2 0

Nota estudiante 1 en materia 1 ? 3.2

1 3.2 3.2

Nota estudiante 1 en materia 2 ? 4.8

2 4.8 8.0 3 4.0 4.0

Materias estudiante 2 ? 1

2 n estudiante m

materi a

suma prom_estu nota promedio pantalla

1 0 1 Nota estudiante 2 en materia 1 ? 4.5 4.5 4.5 2 4.5 8.5 3

Materias estudiante 3 ? 3

PREGUNTAS DE REVISIÓN. Termine el seguimiento (prueba de escritorio del algoritmo). Note que por cada iteración del ciclo externo (controlado por estudiante), se realizan TODAS las iteraciones del ciclo interno (controlado por materia). Con qué valores finalizan las variables de control ? Modifique el algoritmo, para que adicionalmente, muestre el promedio de cada estudiante. EJEMPLO

Luís Fernando González Alvarán 9 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

Cuando se anidan ciclos, pueden combinarse los distintos tipos de ciclos. En este ejemplo, se modifica el ejemplo anterior para validar las notas ingresadas por el usuario, utilizando un ciclo mientras. Algoritmo PromedioSemestreValidacion Variables real : nota, suma, promedio, prom_estu entero : estudiante, materia, m, n inicio escribir ("Cuántos estudiantes hay en segundo semestre ?") leer (n) suma 0 desde estudiante 1 hasta n hacer escribir ("Materias del estudiante ", estudiante, " ? " ) leer ( m ) prom_estu 0 desde materia 1 hasta m hacer escribir("Nota del estudiante",estudiante,"en la materia", materia) leer (nota) mientras (nota > 5.0 o nota < 0.0) hacer escribir ("Nota incorrecta, ingrese una nota válida") leer (nota) fin_mientras prom_estu prom_estu + nota fin_desde prom_estu prom_estu / m suma suma + prom_estu fin_desde promedio suma / n escribir ("Promedio semestre = ", promedio) fin En este ejemplo, se lee la nota y sólo se ejecuta el ciclo mientras si la nota está fuera del rango válido, éste ciclo se sigue ejecutando si se siguen presentando notas por fuera del rango válido. El ciclo deja de ejecutarse cuando la nota ingresada está en el rango válido.

Luís Fernando González Alvarán 10 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

EJEMPLOS TIPICOS DE PROGRAMACIÓN CALCULO DE MÁXIMOS O MINIMOS Diseñar un algoritmo que procese la estatura y el peso de todos los estudiantes de un grupo e indique cuál la mayor estatura y cuál el menor peso entre los datos registrados. Análisis. Se deben leer todos los datos correspondientes a estaturas y pesos de los estudiantes, todos estos datos deben ser positivos. Deben compararse entre sí para determinar cuál de todos los datos correspondientes a las estaturas es el mayor y cuál de todos los datos correspondientes a los pesos es el menor. Modelaje. E/S/A Identificad or E h E w S maxh S minw E n A

i

Tipo

Descripción

real real real real enter o enter o

Estatura (Altura) de cada uno de los estudiantes. Peso de cada uno de los estudiantes. Estatura máxima registrada. Peso mínimo registrado. Cantidad de estudiantes Contador de estudiantes – Se usa para controlar el ciclo.

Especificación : PRE : { h / h ∈ R, n / n ∈ Z, w / w ∈ R } minw ∈ R+ }

POS : { h = ∅, n = ∅, w = ∅, maxh∈ R+,

Plan de Solución inicio preguntar cuántos estudiantes hay en el grupo validar la cantidad de estudiantes para garantizar que sea un valor positivo pedir la estatura y el peso del primer estudiante validar los datos para garantizar que son valores positivos suponer que esos datos corresponden a la mayor estatura y al menor peso, inicializando maxh y minw utilizar un ciclo, controlado por contador (i), de 2 a n (desde el segundo estudiante, hasta el último) pedir la estatura y el peso para el estudiante i validar los datos de estatura y peso comparar el peso (w) con el valor minw: Si w < minw entonces minw  w Luís Fernando González Alvarán 11 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

fin_si comparar la estatura (h) con el valor maxh. Si h > maxh entonces maxh h fin_si fin del ciclo. mostrar los resultados almacenados en minw y maxh fin Para encontrar el valor máximo o el valor mínimo de un grupo de datos, es necesario tener un valor de referencia para poder realizar las comparaciones del caso. Lo mejor, es suponer que los primeros valores ingresados son el máximo o el mínimo, o ambos, según sea el caso. En la peor situación, es decir, si sólo se leen esos datos, los valores serán correctos, pero, si se leen nuevos valores, es posible comprobar si la suposición inicial es o no verdadera, en caso de que esta suposición sea falsa, simplemente se reemplazan los valores máximo o mínimo con los nuevos valores, según corresponda. Algoritmo Algoritmo Máximo_y_Minimo Variables entero : i, n real : h, w, minw, maxh inicio escribir ("Cuántos estudiantes hay en el grupo ?) leer (n) mientras (n<=0) hacer escribir ("La cantidad de estudiantes debe ser mayor que cero") escribir("Cuántos estudiantes hay en el grupo ?") leer (n) fin_mientras escribir ("Estatura del estudiante 1") leer (h) mientras ( h <=0 ) hacer escribir ( "La estatura debe ser un valor mayor que cero" ) escribir ("Estatura del estudiante 1") leer ( h ) fin_mientras escribir ("Peso del estudiante 1") leer (w) mientras ( w <=0 ) hacer escribir ( "El peso debe ser un valor mayor que cero" ) escribir ("Peso del estudiante 1") leer ( w ) fin_mientras maxh  h minw  w desde i  2 hasta n hacer escribir ("Estatura del estudiante ", i) leer (h) mientras ( h <=0 ) hacer Luís Fernando González Alvarán 12 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

escribir ( "La estatura debe ser un valor mayor que cero" ) escribir ("Estatura del estudiante ", i) leer ( h ) fin_mientras escribir ("Peso del estudiante ", i) leer (w) mientras ( w <=0 ) hacer escribir ( "El peso debe ser un valor mayor que cero" ) escribir ("Peso del estudiante ", i); leer ( w ) fin_mientras si h > maxh entonces maxh  h fin_si si w < minw entonces minw  w fin_si fin_desde escribir ("El menor peso registrado es :", minw) escribir ("La mayor estatura registrada es : ", maxh) fin GENERACIÓN DE SERIES Se desean generar n términos de la siguiente sucesión : 15, 17, 14, 16, 13, 15, 12, . . . Análisis. Al enfrentarse a problemas que involucran series, debe buscarse la relación entre los términos. Cuando se trata de series recursivas, un término puede generarse a partir de los anteriores. Por la definición de la serie se sabe que el primer término es 15, el segundo término es 17, el tercer término es 14, pero debe encontrarse la forma de calcular el n-ésimo término. En este caso, se puede ver que el segundo término se genera restando dos al primero y el siguiente se genera sumando tres al anterior y se repite la secuencia : primero se resta dos y luego se suma tres. Modelaje: E/S/ A E A A

Identificad Tipo or enter n o enter i o increment enter o o

Descripción Término que desea calcularse Contador de términos Valor que debe sumarse al término inmediatamente anterior para generar el siguiente.

Luís Fernando González Alvarán 13 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

S

t

enter Cada uno de los términos de la serie, a medida que se o generan.

Especificación: PRE : { n / n ∈ Z } POS : { n = ∅, t ∈ Z } Plan de Solución inicio pedir al usuario el valor de n : El término que desea calcular leer (n) si n < 1 entonces mostrar un mensaje de error si_no inicializar t en 15 (el valor para el primer término de la serie) inicializar incremento en 2 utilizar un ciclo desde que vaya entre 1 y n, utilizando i como contador escribir (t) t  t + incremento si incremento = 2 entonces incremento  -3 si_no incremento  2 fin_si finalizar el ciclo finalizar el primer condicional. fin Algoritmo Algoritmo Serie1 Variables : entero : n, i, incremento, t inicio escribir ("Cuántos términos desea de esta serie ?") leer (n) si n < 1 entonces escribir ("Pueden calcularse desde el término 1 en adelante") si_no t 15 incremento 2 desde i 1 hasta n hacer escribir (t) t t + incremento si incremento = 2 entonces Luís Fernando González Alvarán 14 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

si_no

incremento

-3

incremento

2

fin_si fin_desde fin_si fin Prueba de Escritorio. n

i

¿@# 0

¿@#

n

i

¿@# 4

¿@#

incremen t to ¿@# ¿@#

Pantalla

incremen t to ¿@# ¿@#

Pantalla

Cuántos términos desea de esta serie ? 0 Puede calcularse desde el término 1 en adelante

Cuántos términos desea de esta serie ? 4

15 2 1

15 17 -3

2

17 14 2

3

14 16 -3

4

16 13 2

5 PREGUNTAS DE REVISIÒN Suponga el siguiente segmento de programa, con las variables enteras a, b, c, d y e. a = 2; b = a++; c = --a; d += a; e -= b; a *= 3; Luís Fernando González Alvarán 15 / 16

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

Al ejecutarse éste segmento de programa, cuál será el valor final de cada una de las variables involucradas ? supon En una estación meteorológica se registra la temperatura de una zona cada hora del día. Es necesario diseñar un algoritmo que permita calcular el promedio de temperaturas del día y el promedio del mes , así como el día en el que se registró un mayor promedio de temperatura. (Suponga que el mes tiene 30 días, si hay varios días en los que se presenta un mismo promedio de temperaturas y éste corresponde al mayor promedio, sólo debe indicarse uno de los días) BIBLIOGRAFÍA FARREL, Joyce. Introducción a la programación : Lógica y diseño. Thompson, México, 2001. Págs 152 - 172 JOYANES, Luis. Fundamentos de Programación : Algoritmos y Estructura de Datos. McGrawHill, Madrid, 1997, Segunda Edición. Págs 117 – 137. JOYANES, Luis y ZAHONERO, Ignacio. Programación en C: Metodología, estructura de datos y objetos. McGrawHill, Madrid, 2001. Págs 169 - 207

Luís Fernando González Alvarán 16 / 16

Ciclos

Related Documents

Seden 5
November 2019 10
Seden 6
November 2019 11
Seden 7 Sesion 1
November 2019 8
Seden 4 Preseminario
November 2019 5
Seden 7 Sesion 2
November 2019 8
Seden 2 Sesion 1
November 2019 4