Sunteți pe pagina 1din 51

1

Facultad de Ingeniería
TEORIA Y ANALISIS DE LA DECISION
(Proyecto final)

Alumnos: Jonatan Joel Muñoz Garza 184748


Erick Humberto Soto Martínez 185311
Everardo de Paz Márquez 167402
Richard Silvestre Rodríguez Rodríguez 185948
Francisco Javier Capetillo Lerma 185034
Lizeth Alexandra Martínez Ramírez 178322
Maestro: Rafael Sánchez Hernández
Grupo: IAS 9A
Turno: Nocturno

10 de agosto del 2018


2

RESUMEN

En resumen, este proyecto ha sido uno de los más extensos que hemos presentado
desde el inicio de la carrera. Al tener que trabajar todo el grupo como uno, ha puesto el
proyecto a un nivel de dificultad mayor, ya que dependemos de los demás compañeros
para realizar y completar el proyecto. Metiendo más a fondo en nuestra parte del
proyecto, hemos completado lo pactado que dimos a conocer con el diagrama de
Gantt. Tanto la documentación como el mismo programa, como los diccionarios
utilizados para generar las palabras más comunes para concretar el proyecto. Todos
los campaneros trabajamos arduamente para completar este proyecto, tanto los que
apoyamos con la documentación como los compañeros que crearon el programa. Fue
un tetramestre muy exhausto, especialmente porque hasta cierto punto no podíamos
iniciar con todas nuestras actividades ya que esperábamos a los demás compañeros
de los otros equipos para hacernos entrega de su parte del proyecto. Esta experiencia
nos deja mucho aprendizaje y nos abre los ojos a la realidad de nuestras vidas, la
comunicación. Al principio estábamos con un poco de incertidumbre ya que en ningún
tetramestre habíamos trabajado con todo el salón como quipo especialmente con una
materia que pide demasiado de nuestra parte. Creo que esta experiencia nos deja más
de lo que nos podemos imaginar. Gracias Profe. Rafa.
3

INDICE

Contents
RESUMEN................................................................................................................................................... 2
INTRODUCCION............................................................................................................................................. 4
REQUISITOS DEL SISTEMA PARA LA INSTALACIÓN DE LA SOLUCIÓN ........................................................... 4
TECNOLOGÍA UTILIZADA PARA LA REALIZACIÓN DE LA SOLUCIÓN .............................................................. 4
¿POR QUÉ UTILIZAR C#? ............................................................................................................................... 5
CONECTIVIDAD.............................................................................................................................................. 5
PROPUESTA DE CONTRATO DE SERVICIOS ................................................................................................... 6
FUNCIONAMIENTO DE LA APLICACIÓN. ....................................................................................................... 7
ENFOQUE Y MÉTODO EMPLEADO .............................................................................................................. 12
DIAGRAMA DE GANTT ................................................................................................................................ 13
ANALISIS BREVE EDT ........................................................................................................................... 14
CALENDARIOS ............................................................................................................................................. 15
HITOS DEL PROYECTO ................................................................................................................................. 18
ANALISIS FODA ............................................................................................................................................ 19
PLAN DE CONTIGENCIAS ............................................................................................................................. 20
DIAGRAMA DE FLUJO Y PSEUDOCODIGO ................................................................................................... 21
CONCLUSION............................................................................................................................................... 49
REFERENCIAS............................................................................................................................................... 51
4

INTRODUCCION

Objetivo General
Generar un conjunto de softwares con el cual se consiga simular un juego de sopa de
letras, buscando demostrar la Teoría de Juegos dinámicos para participar en la
solución del juego, con el cual se consiga averiguar qué equipo es más hábil en
desarrollar estrategias de solución de palabras ocultas en una “sopa de letras”.

Objetivo del equipo:


Desarrollar, estructurar y diseñar un programa encargado de resolver una “Sopa de
letras”, mediante el uso de la teoría de juegos, haciendo posible la búsqueda de la
mayoría de las palabras ocultas posibles dentro de la sopa, con ello podremos
demostrar que el uso de juegos dinámicos son un método factible en la resolución de
estos juegos.

Requisitos del Sistema para la instalación de la solución

Sistemas operativos compatibles

Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2008 R2 SP1,
Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Server 2012 R2,
Windows Vista Service Pack 2
Requisitos de Hardware
Procesador de 2 GHz o superior
2 GB de RAM
5 GB de espacio disponible en el disco duro (x86)
5 GB de espacio disponible en el disco duro (x64)

Tecnología utilizada para la realización de la solución

Lenguaje de programación utilizado: C Sharp


C Sharp (C#) es un lenguaje de programación orientado a objetos desarrollado y
estandarizado por Microsoft como parte de su plataforma.NET, que después fue
aprobado como un estándar por la ECMA e ISO.
5

Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET


el cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes (entre
ellos Delphi).

¿Por qué utilizar C#?

Facilidad de uso: su ambiente de trabajo es muy cómodo y que tiene un ambiente


amigable, su forma de programación es muy fácil de usar para quien este familiarizado
con C++ ya que su estructura básica es muy similar.

Programación Orientada a Objetos: De esta forma se ahorra mucho código, y algunas


partes del código son reutilizables.

Administración de Memoria: C# tiene la característica de inicializar los datos o


variables declaradas en el programa, además de que también de forma automática libera
la memoria cuando el mismo programa lo cree conveniente. Es decir tiene constructores
y destructores, y estos actúan automáticamente a menos que se manipulen desde el
código.

Todas las ventajas mencionadas anteriormente nos da una idea clara de que C# es la
mejor opción para llevar a cabo la solución del proyecto que se nos encomendó.

Conectividad

La conectividad entre la solución propuesta por el equipo 4 y el equipo 2 se llevara a


cabo mediante ficheros de texto o tipo dat, los cuales contendrán una estructura
previamente definida, el equipo 2 será el encargado de crear esta estructura y el equipo
4 teniendo la estructura previa del layout deberá ser capaz de leer el fichero aplicando
los algoritmos de programación necesarios y la tecnología necesaria para procesar dicha
información y llevar a cabo el objetivo, el cual será obtener las palabras ocultas en la
sopa de letras previamente estructurada

Servicios de Internet
La solución propuesta no tendrá como requisito forzoso la conexión a internet ya que el
archivo con la estructura de la sopa de letras deberá ser obtenido de alguna unidad de
almacenamiento previamente conectada al equipo de cómputo.
6

Propuesta de Contrato de Servicios

Solicito: Revisión y Aprobación


De Proyecto de Desarrollo de Software

Ing. Rafael Sánchez Hernández


Catedrático de la Universidad Metropolitana de Monterrey.
Por medio de la presente, me (nos) dirijo (jimos) a usted con la finalidad de solicitar la
revisión y aprobación del proyecto de desarrollo de software:
Desarrollo de la solución para lectura y búsqueda de palabras dentro de una matriz cuyas
dimensiones son de 15 filas por 15 columnas, esta aplicación se encarga de encontrar
todas las palabras contenidas en dicha matriz.
El proyecto será llevado a cabo durante el mes de Mayo a Agosto del año en curso, por
(el, la, los, las) Ingenieros Administradores de Sistemas:
Everardo De Paz Márquez
Erick Humberto Soto Martínez
Jonatan Joel Muñoz Garza
Francisco Javier Capetillo Lerma
Richard Silvestre Rodríguez Rodríguez
Lizeth Alexandra Martínez Ramírez
de la Universidad Metropolitana de Monterrey suscritos a la Licenciatura como Ingeniero
Administrador de Sistemas, quienes llevaran a cabo el proyecto de desarrollo del sistema
para la búsqueda de palabras dentro de la matriz de caracteres.
Estamos a su total disposición y espero (amos) que el proyecto sea exitoso en cualquier
ámbito y permita alcanzar un nivel óptimo.

_________________________________________
Ing. Rafael Sánchez Hernández
Catedrático de la Universidad Metropolitana de Monterrey
7

Funcionamiento de la aplicación.

1.- Dar clic en el icono.

2.- Se abrirá la ventana principal del programa.

3.- Se deberá presionar el botón de examinar para buscar la matriz a cargar.


8

4.- Navegar hasta la ubicación donde se encuentra la matriz, seleccionarla y presionar


el botón abrir.

5.- Presionar el botón de procesar para comenzar con la búsqueda de las palabras.
9

6.- Antes de iniciar la búsqueda, nos preguntara que si en realidad deseamos


comenzar, presionamos el botón “SI”

7.- Después de presionar el botón “SI” la búsqueda iniciara, y mostrara resultados en la


región derecha de la ventana.
10

8.- Se muestran resultados.

9.- Al terminar la búsqueda se mostrara un cuadro de dialogo en el cual nos indicara


que la búsqueda termino.
11

10.- Después de presionar el botón de aceptar, se abrirá un archivo de texto (.txt) al


cual fueron importados los resultados.

11.- El archivo exportado se encontrara en la ruta del escritorio.

12.- Para salir del programa, presionamos el botón salir, nos preguntara que si en
realidad deseamos salir, presionamos el botón si y el programa terminara.
12

Enfoque y método empleado

Para tener éxito en la resolución de la sopa de letras decidimos utilizar una base de datos con las
200,000 palabras más utilizadas en el idioma español según la Corpus de Referencia del Español Actual
(CREA) de la RAE.
13

DIAGRAMA DE GANTT
14

ANALISIS BREVE EDT


15

CALENDARIOS

n la siguiente representación, se muestra detalladamente la realización de las actividades


y los días asignados por actividad.

Junio 2018
Domingo Lunes Martes Miercoles Jueves Viernes Sabado
1 2

3 4 5 6 7 8 9

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

Equipo 1 Elaboracion de topicos y palabras


16

Julio 2018
Domingo Lunes Martes Miercoles Jueves Viernes Sabado
1 2 3 4 5 6 7

Equipo 1 Elaboracion de topicos y palabras

8 9 10 11 12 13 14

Equipo 1 Elaboracion de topicos


Equipo 2: Elaboracion de claves y matriz de palabras
y palabras

15 16 17 18 19 20 21

Equipo 2: Elaboracion de claves y matriz de palabras

22 23 24 25 26 27 28
Equipo
Definición del
2:Elaboracion Definición del
Definición del Reunion equipo plan de trabajo Programación de la aplicación
de claves y plan de
proyecto 2 (Topicos) y delegación de (Recursion sobre matriz)
matriz de contingencia
actividades
palabras
29 30 21 Notes:

Crear diccionario de palabras


17

Agosto 2018
Domingo Lunes Martes Miercoles Jueves Viernes Sabado
1 2 3 4

Programación de la aplicación Pruebas y mejoras sobre el


(Buscar palabras) programa

5 6 7 8 9 10 11

Entrega y
Pruebas y mejoras sobre el
Documentacion presentación
programa
del proyecto

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29 30 31 Notes:
18
Hitos del proyecto

Etapa de Repartición de Desarrollo del plan Reunión con equipo 2 y Etapa de desarrollo
planificación actividades de contingencias transferencia de información del software

Inicio

Definimos la manera en la Se genera la matriz


que resolveremos la sopa de datos
de letras
Mar 27/07/18
Vie 23/07/18

Realizar búsqueda de palabras en Construcción, diseño y Se realizan las pruebas Entrega y revisión del
español, nombres, marcas, etc programación del software de software proyecto

Fin

Reunir base de datos Programación del


completa software

Mar 29/07/18 Dom 02/08/18


19

ANALISIS FODA

ANALISIS FODA DEL PROYECTO / EQUIPO 4


Debilidades Amenazas
• Falta de coordinación entre
equipos para mejora de
rendimiento. • Demora en la entrega de los datos
• Falta de una estructura (Base de datos y matriz)
organizacional en cada equipo • Problemas técnicos al momento de
específica para el control de programar.
actividades. • Errores en la administración de
• Contar con disponibilidad para tareas y comprensión del proyecto.
supervisar a fondo el proyecto y
evitar estancamiento.

Fortalezas Oportunidades
• Comunicación con las diferentes áreas
(Equipos) respecto a la información
• Equipo de trabajo dedicado y
compartida.
competitivo.
• Entrega anticipada de los datos por
• Conocimiento en lenguajes de
parte de los equipos encargados
programación para el desarrollo del
generar la base de datos y la matriz.
programa.
• Soluciones inmediatas ante cualquier
• Buena administración interna en el
imperfección tanto interna como
equipo, comunicación y relaciones
externa (Administrativa, software,
para el manejo de la información.
técnico) .
• Se cuentan con los recursos necesarios
• Revisión contante y mejoras al
para el desarrollo del programa.
proyecto para evitar presentar algún
riesgo.
20

PLAN DE CONTIGENCIAS

PLAN DE CONTINGENCIAS
No. Contingencia Solución Responsable(s)
1 Fallas en el programa en la Consultar los posibles errores en el proceso Erick Soto, Richard
ejecución. mediante el uso de diagramas de flujo. Rodríguez
2 Demoras en entrega de la Verificarlo con el equipo 2 para identificar Alexa
matriz los motivos de la demora.
3 Problemas con la ejecución Realizar una revisión periódica para que el Javier Capetillo
de tareas trabajo se realice de forma fluida, en caso
de problemas solucionarlos en conjunto.
4 Ausencia de algún miembro Se deberá tener algún suplente en dado Jonatan Muñoz
del equipo. caso de que la actividad se quede
incompleta para que esta pueda llevarse a
cabo en tiempo y forma.
5 Fallas o mal funcionamiento Brindar apoyo técnico para la reparación Richard Rodríguez
en el equipo de computo del equipo afectado.
6 Problemas externos en los Se tendrá que conversar con los Everardo De Paz
diferentes equipos encargados de cada equipo que problemas
están presentando para poder apoyar de
alguna forma y evitar el estancamiento.
7 Actividades con errores Cada actividad deberá pasar una revisión Everardo De Paz
rápida para detectar posibles fallas antes
de proceder con la siguiente actividad
8 Compatibilidad de datos en Se tendrá que avisar de inmediato al Alexa
la entrega equipo 2 que entrega la matriz para
indicarle la situación y comparta el archivo
correcto.
9 Actividades duplicadas Llevar una bitácora de las actividades que Jonatan Muñoz, Javier
están pendientes para ver cuales se están Capetillo
terminando y cuales siguen en proceso.
10 Error durante la pruebas del Se tendrán que hacer las pruebas con Everardo de paz, Erick
programa y revisión de la amenos 2-3 días de anticipación para en Soto, Richard
documentación caso de haber fallas se pueda hacer el Rodríguez, Jonatan
ajuste correspondiente. Muñoz, Javier Capetillo,
Alexa
21

DIAGRAMA DE FLUJO Y PSEUDOCODIGO

Inicio

Se declaran variables DataGridView, string

Se declaran variables de función frmPrincipal

Declaración de función btrExaminar

Declaración de función btrProcesar

Fin
22

Inicio

Se ejecuta función InitializeComponent()

Fin
23
24

Inicio

Si- ¿Se genero algun error?

Imprimir- Hubo un error al intentar obtener la matriz

Sino-

Declaración de variables dataGridView, string y archivos.


Se le asigna a variable la función funBuscarArchivo( )
Si- El archivo no está vacío
Se inicializan variables
Se le asigna a variable la función funObtenerJuegoClave
Se le asigna a variable la función funLeeArchivo
Si- Las dimensiones del archivo son correctas
Por- i = 0, i < largo de la línea, i + 1
Se le asigna a la coordenada la letra en la matriz
Se muestra la matriz en pantalla
Sino-

Se imprime- La matriz proporcionada no es uniforme

Fin
25
26
27

Inicio

Declaracion de variables

Imprimir- "¿Realmente desea iniciar la búsqueda, esto puede demorar algunos instantes?"
Si- Si/No

Declaración de variables e inicialización


Si- Palabras que encontrar es mayor que cero
Declaración de variables e inicialización
Leer- Lectura de datos a las variables
Mientras- Mientras se lean datos
Inicialización de variables
28

Si- la línea no es nula


Inicialización y creación de variables
Se ejecuta función funBuscaHorizontal
Si- Se encontró palabra
Inicialización y creación de variables
Imprimir- “Palabras encontradas” + Se imprime ubicación y
palabra
Sino-
FunBuscaVertical
Si- Se encontró palabra
Inicialización y creación de variables
Imprimir- “Palabras encontradas” + Se imprime
ubicación y palabra
Sino-
funBuscaDiagonalIzqDer

Si- Se encontró palabra

Inicialización y creación de variables


Imprimir- “Palabras encontradas” + Se
imprime ubicación y palabra
Sino-

funBuscaInferiorlIzqDer

Si- Se encontró Palabra

Inicialización y creación de
variables
Imprimir- “Palabras
encontradas” + Se imprime
ubicación y palabra

Imprimir- La búsqueda término

Imprimir- No se ha cargado el archivo de texto.

Fin
29
30

Inicio

Declaración de función funBuscarArchivo

Declaración de función funLeeArchivo

Declaración de función funBuscaHorizontal

Declaración de función funBuscaVertical

Declaración de función funDiagonalIzqDer

Declaración de función funTxtClaves

Declaración de función funObtenerJuegoClave

Declaración de función funExportarResultados

Declaración de función funObtenerTotalPalabrasDiccionario

Fin
31

Inicio

Se crean e inicializan variables

Si- Si el título del archivo es igual al archivo seleccionado

Se carga el archivo

Sino-

Se guarda “”

Se regresa dato guardado

Fin
32
33

Inicio

Si- ¿Existe el archivo?

Se carga archivo para lectura

Mientras- La línea no sea nula

Se almacena cada línea

Se regresan las líneas almacenadas

Sino-

Imprimir- “El archivo no se encontró”

Fin
34
35

Inicio

Se crean e inicializan variables

Por- i = 0, i < cantidad de filas, i + 1

Se inicializa variable

Por- x = 0, x < cantidad de columnas, x + 1

Cadena se le asignan cordenadas de la variable

Si- La cadena contiene la variable

Se obtniene la columna y columna inicial

Si- La cadena al reves contiene la variable

Se obtiene columna inicial y columna inicial

Se regresa cordenadas

Fin
36
37

Inicio

Se crean e inicializan variables

Por- i = 0, i < cantidad de columna, i + 1

Se inicializa variable

Por- x = 0, x < cantidad de fila, x + 1

Cadena se le asignan cordenadas de la variable

Si- La cadena contiene la variable

Se obtniene la fila y fila inicial

Si- La cadena al reves contiene la variable

Se obtiene fila inicial y fila inicial

Se regresa cordenadas

Fin
38
39

Inicio

Se crean inicializan variables

Por- x = 0, x < cantidad de columnas, x++

Se crean e inicializan variables

Por- i = 0, i < cantidad de columnas, i++

Se asigna a la cadena los datos de la cadena


40

Si- variable es menor al número de filas

Cadena se le asigna el valor de la celda de la columna y fila

Se modifican las variables

Si- tenemos cadena superior

Se calcula columna y fila inicial y final

Si- Palabra está en cadena superior al revés

Se calcula columna y fila inicial y final

Si- Palabra está en la cadena principal

Se calcula columna y fila inicial y final

Se regresa coordenadas

Fin
41
42
43

Inicio

Se crean inicializan variables

Por- x = 0, x < cantidad de columnas, x++

Se crean e inicializan variables

Por- i = 0, i < cantidad de columnas, i++

Se asigna a la cadena los datos de la cadena

Si- variable es menor al número de filas

Cadena se le asigna el valor de la celda de la columna y fila

Se modifican las variables

Si- tenemos cadena superior

Se calcula columna y fila inicial y final

Si- Palabra está en cadena superior al revés

Se calcula columna y fila inicial y final

Si- Palabra está en la cadena principal

Se calcula columna y fila inicial y final

Se regresa coordenadas

Fin
44

Inicio

Se crean variables para encapsulamiento

Fin
45
46

Inicio

Se crean e inicialisan variables

Mientras- la linea leida no sea nula

Se le agrega a la variable lo optenido por la cadena

Mientras- tenga aun lineas

Se le asigna a variable lo optenido

Por- i = 0, i < la cadena, i + 1

Si- La clave obtenida es igual a la existente

Asignar a la variable el resultado obtenido

Fin
47

Inicio

Se crean variables y se inicializan

Si- Si el archivo existe

Por- i = 0, I < longitud de las líneas del archivo

Se escribe la línea obtenida en la variable

Regresa el archivo creado

Fin
48

Inicio

Mientras- Tengas líneas que leer

Mientras- La línea no sea nula

Se aumenta en uno la cantidad de palabras

Fin
49

CONCLUSION

Everardo de paz Márquez

Para poder realizar este proyecto tuvimos que basarnos en la estrategia de la “teoría de juegos”,
trabajamos de la mano con 3 equipos más que nos entregaron la información necesaria con la
concluiríamos nuestro proyecto final. El trabajo en equipo fue la razón principal por la que conseguimos
finalizar con éxito la última parte de lo que sería nuestra “sopa de letras” comprobando que la teoría de
juegos no solo aplica a los juegos de razonamiento, sino también a los juegos cotidianos en los que
normalmente se desconoce el funcionamiento del mismo.

Erick Humberto Soto Martínez

La estrategia que utilizamos (teoría de juegos) difiere entre el interés individual y la moralidad donde el
objetivo principal es ganar, por tal motivo desarrollamos un sistema donde podremos evaluar que jugador
ganara en el juego “sopa de letras” donde programamos criterios de evaluación en coordinación con los
demás equipos, y asignados por el maestro.

Sin embargo, no podemos considerar que la teoría de juegos predice las decisiones de los involucrados,
tan solo sugiere que resultados podrían ser los más convenientes para uno o demás jugadores.

Francisco Javier Capetillo Lerma

Trabajamos con la teoría de juegos para analizar y crear un esquema que nos ayude a resolver situaciones
estratégicamente, haciendo uso de probabilidades ya que desconocemos cual será la decisión de los
demás jugadores.

Aprendemos a explicar las interacciones entre las personas y colectivas en escenarios comunes como
mediante el juego de “sopa de letras”

Jonatan Joel Muñoz garza

EL proyecto presentado en este entregable final es el resultado de un complejo trabajo en equipo de los
4 diferentes equipos que participamos, ya que a manera grupal fue difícil coordinar los tiempos en los que
se trabajó para poder realizar nuestras actividades, sin embargo, durante el desarrollo de las mismas
pudimos resolver dichas situaciones que nos ayudaron a comprender un poco más la teoría de juegos con
la que estábamos trabajando.

Aplicamos la teoría de juegos en este juego, cada uno de los jugadores trata de conseguir ser el ganador
sin importar el resultado del competidor.

Así como en los juegos sencillos de mesa vemos la teoría de juegos reflejada en diferentes áreas de la vida
diaria.
50

Richard silvestre Rodríguez Rodríguez

En base al trabajo en equipo, la organización y en conjunto con los demás equipos, finalizamos el proyecto
en tiempo y forma obteniendo como resultado un sistema al que llamamos “sopa de letras” que nos
permitirá encontrar palabras dentro de una tabla que contiene letras aleatorias estratégicamente
colocadas permitiendo la interacción de jugadores y obteniendo un solo resultado ganador.

Lizeth Alexandra Martinez Ramírez

Al finalizar este proyecto que realizamos en conjunto con otros equipos, pudimos darnos cuenta de que
incluso para trabajar con diferentes equipos sobre el mismo proyecto, estaríamos aplicando la “teoría de
juegos” ya que existen tres posibilidades de resultados para completar nuestra parte del proyecto: que el
equipo anterior haya cumplido con su parte, que lo haya hecho parcialmente, o que no hiciera lo que le
corresponde, por lo tanto, nuestro equipo tendría que resolver de diferente maneras dichas situaciones.

Por tal motivo, sabemos que la teoría de juego no solo en los sistemas es aplicada, si no también, en la
cotidianeidad de la vida.

Conclusión general

El trabajo en equipo y el compromiso que dedicamos como equipo, ha sido parte fundamental para
concluir con el proyecto donde aplicamos la teoría de juegos, donde aprendimos a aplicar soluciones en
software para acoplar un sistema funcional y resolver problemas, así como la mejora de procesos.
51

REFERENCIAS

ricardo, r. (2018). C sharp - Ventajas de C#. Retrieved from


https://www.lawebdelprogramador.com/foros/C-sharp/284565-Ventajas-de-C.html

Follow, F. (2018). Calendar and Schedule Templates. Retrieved from


https://www.wincalendar.com/Calendar-and-Schedule-Templates

(2018). Retrieved from https://script.byu.edu/Documents/Spanish-Apellidos.pdf

(2018). Retrieved from https://script.byu.edu/Documents/Spanish-Apellidos.pdf

(2018). Retrieved from https://script.byu.edu/Documents/Spanish-Apellidos.pdf

S-ar putea să vă placă și