Publicado el 3 de Julio del 2019
485 visualizaciones desde el 3 de Julio del 2019
10,3 MB
125 paginas
Creado hace 7a (06/06/2016)
Trabajo Fin de Grado
Grado en Ingeniería de las Tecnologías de
Telecomunicación
Implementación de un recurso docente sobre iOS
para el autoaprendizaje de un lenguaje de
programación
Autor: Javier López Aguirre
Tutor: Antonio J. Sierra Collado
Equation Chapter 1 Section 1
Dep. de Ingeniería Telemática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2016
Trabajo Fin de Grado
Grado en Ingeniería de las Tecnologías de Telecomunicación
Implementación de un recurso docente sobre iOS
para el autoaprendizaje de un lenguaje de
programación
Autor:
Javier López Aguirre
Tutor:
Antonio J. Sierra Collado
Profesor titular
Dep. de Ingeniería Telemática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2016
iii
Trabajo Fin de Grado: Implementación de un recurso docente sobre iOS para el autoaprendizaje de un
lenguaje de programación
Autor:
Javier López Aguirre
Tutor: Antonio J. Sierra Collado
El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:
Presidente:
Vocales:
Secretario:
Acuerdan otorgarle la calificación de:
Sevilla, 2016
v
El Secretario del Tribunal
Resumen
E
ste proyecto consiste en el desarrollo de una aplicación que permita aprender, de forma básica, a
programar. Está dirigido a usuarios que no dispongan de conocimientos de programación y quieran
aprender las estructuras básicas presentes en la mayoría de los lenguajes de programación. El proyecto
surge a partir de otro realizado el año pasado, en el que se desarrollaba para dispositivos Android, mientras que
éste se desarrollará para dispositivos iOS.
Se ha optado desarrollarlo en esta plataforma debido a que entre los dispositivos Android e iOS suman una
cuota de mercado del 96,4%, según los datos de la consultora IDC para el segundo trimestre de 2014. Para
llegar a la mayor cantidad de usuarios posibles, es necesario desarrollar las aplicaciones para estas dos
plataformas, como mínimo.
La aplicación se ha desarrollado con el objetivo de conseguir un videojuego en el que el usuario obtenga los
conocimientos básicos de programación. Está divido en niveles y el usuario debe escribir programas para
resolverlos.
El usuario deberá desarrollar sus conocimientos en cada nivel, ya que es necesario programar sentencias y
estructuras para ir avanzando a través de ellos. Cada nivel irá aumentando la dificultad y se deberán usar
expresiones más complejas. Para conseguir resolverlos, se proporcionarán ayudas como información de
estructuras que se pueden utilizar, código ya escrito al inicio de un nivel o un teclado en el que se tratará de
evitar la mayor parte de errores sintácticos.
El teclado se ha diseñado para que resulte sencillo escribir las sentencias, pulsando un botón se puede escribir
una sentencia correcta sintácticamente. Además, se ha dividido agrupando los componentes del mismo estilo,
por un lado los métodos, por otro los bucles, etc.
El juego tiene un personaje principal, cuyo nombre es Ada, el cual será programado por el usuario. Las
sentencias que se escriban permitirán que Ada realice diversas acciones y cumpla los objetivos de cada misión.
Para resolver el nivel, se ejecutará línea por línea, el código escrito por el usuario. El juego dispone de un
tablero en el que se podrá observar, de forma gráfica, los efectos de cada línea de código. Por ejemplo, se
mostrarán animaciones al andar, golpear, etc.
Además, se permitirá seleccionar entre un lenguaje orientado a objetos, como Java, u otro estructurado, como
C. El objetivo será que el usuario pueda comprobar las similitudes y diferencias entre distintos lenguajes y
distintos modos de programación.
Los apuntes y niveles se han escrito teniendo en cuenta los aspectos que diferencian a estos lenguajes, de
forma que sea posible resolverlo de cualquiera de las dos formas.
En esta memoria se realiza una introducción a las herramientas y tecnologías utilizadas, el funcionamiento del
juego y como se ha implementado.
vii
Índice
Resumen
Índice
Índice de Tablas
Índice de Ilustraciones
1 Objetivos
2
Introducción
2.1
2.2
2.3
Aplicaciones móviles
Videojuegos
Aplicaciones existentes
3 Hardware utilizado
4
iOS
Arquitectura de iOS
Tecnologías utilizadas
4.1
4.1.1
4.2
4.3
4.4
Swift
Estructura de una aplicación
Entorno de desarrollo
5 Requisitos del sistema
5.1
5.2
5.2.1
5.2.2
5.3
5.3.1
5.3.2
5.3.3
5.3.4
Requisitos generales del Sistema
Requisitos funcionales del Sistema
Casos de uso
Requisitos de información
Requisitos no funcionales del Sistema
Requisitos de usabilidad
Requisitos de mantenibilidad
Requisitos de portabilidad
Requisitos de seguridad
6 Diseño
Clases
Clase Mapa
Clase Apuntes
Clase Historia
Clase Resumen
Clase CrearCodigo
Clase Resolver
Clase Variable
Clase Codigo
Clase Tablero
6.1
6.1.1
6.1.2
6.1.3
6.1.4
6.1.5
6.1.6
6.1.7
6.1.8
6.1.9
6.1.10 Clase Sprite
6.1.11 Clase ParserJson
ix
vii
ix
xii
xiii
1
11
11
11
11
13
15
15
15
20
20
23
31
31
32
33
36
37
37
37
38
38
40
40
40
41
41
42
42
43
44
44
45
46
46
7
8
Interfaz gráfica
Interfaz Mapa
Interfaz Apuntes
Interfaz Historia
Interfaz Resumen
Interfaz CrearCodigo
Interfaz Resolver
6.1.12 Clase Keyboard
6.2
6.2.1
6.2.2
6.2.3
6.2.4
6.2.5
6.2.6
6.3
6.3.1
6.3.2
6.3.3
6.3.4
Arranque del sistema
Diálogo
Resolver nivel
Fin nivel
Comportamiento del sistema
Interfaz gráfica
UITableView
Teclado
UIWebView
Alerta
Niveles
JSON
Estructura mapa
Estructura nivel
Implementación
7.1
7.1.1
7.1.2
7.1.3
7.1.4
7.2
7.2.1
7.2.2
7.2.3
7.3
7.3.1
7.4
7.5
7.5.1
7.5.2
7.6
7.6.1
7.7
Sprite
Tablero
Resolver
Código
Crear código
Lectura JSON
Tablero y Sprites
Leer líneas
Preferencias del usuario
Definición
Ejecución
Pruebas
8.1
8.2
Prueba 1
8.2.1
Prueba 2
8.2.2
Prueba 3
8.2.3
Prueba 4
8.2.4
Prueba 5
8.2.5
Prueba 6
8.2.6
Prueba 7
8.2.7
Prueba 8
8.2.8
8.2.9
Prueba 9
8.2.10 Prueba 10
9
Planificación
10
Conclusiones
10.1 Dificultades encontradas
10.2 Líneas futuras
10.3 Valoraciones finales
11
Bibliografía
47
48
48
48
49
50
50
51
52
52
52
53
54
56
56
58
59
61
63
64
64
65
66
67
68
73
73
73
76
77
80
83
85
85
87
87
88
89
90
90
91
92
93
94
94
96
97
97
97
97
98
100
100
100
109
109
110
112
113
114
116
117
117
12
Anexo
12.1 Glosario de términos
12.2 Manual de usuario
12.3 Swift
12.3.1 Básico
12.3.2 Control de flujo
12.3.3
12.3.4 Objetos y clases
12.3.5
12.3.6 Protocolos y extensiones
12.3.7 Genéricos
12.3.8 Opcionales
Funciones y closures
Enumeración y estructuras
xi
Tabla 1. RG_01: Aplicación didáctica
Tabla 2. RG_02: Niveles
Tabla 3. RG_03: Información de ayuda
Tabla 4. RG_04: Resolver niveles
Tabla 5. RG_05: Reiniciar sistema
Tabla 6. RG_06: Seguridad
Tabla 7. RG_07: Portabilidad
Tabla 8. AC_01: Usuario
Tabla 9. CU_01: Mostrar ayuda
Tabla 10. CU_02: Iniciar nivel
Tabla 11. CU_03: Reiniciar preferencias compartidas
Tabla 12. CU_04: Reiniciar
Tabla 13. CU_05: Cambiar lenguaje
Tabla 14. RFI_01: Guardar datos del usuario
Tabla 15. RFI_02: Almacenar información de ayuda
Tabla 16. RFNU_01: Tutorial
Tabla 17. RNFU_02: Indicaciones de ayuda
Tabla 18. RNFM_01: Nuevos niveles
Tabla 19. RNFP_01: Compatibilidad con otros dispositivos
Tabla 20. RNFP_02: Adaptabilidad a los dispositivos
Tabla 21. RNFS_01: Privacidad del usuario
Tabla 22. Prueba 1
Tabla 23. Prueba 2
Tabla 24. Prueba 3
Tabla 25. Prueba 4
Tabla 26. Prueba 5
Tabla 27. Prueba 6
Tabla 28. Prueba 7
Tabla 29. Prueba 8
Tabla 30. Prueba 9
Tabla 31. Prueba 10
ÍNDICE DE TABLAS
31
31
31
32
32
32
32
34
34
34
35
35
36
36
36
37
37
38
38
38
39
85
85
85
86
86
86
86
87
87
87
ÍNDICE DE ILUSTRACIONES
Ilustración 1. Portátil Macbook
Ilustración 2. iPhone
Ilustración 3. Arquitectura iOS
Ilustración 4. Modelo-Vista-Controlador
Ilustración 5. Estructura de aplicación iOS
Ilustración 6. Procesamiento de eventos en una aplicación iOS
Ilustración 7. Cambios de estado en una aplicación iOS
Ilustración 8. Xcode
Ilustración 9. Creación de un proyecto (1)
Ilustración 10. Creación de un proyecto (2).
Ilustración 11. Informacion general proyecto
Ilustración 12. Interfaz principal Xcode
Ilustración 13. Añadir restricciones a botón
Ilustración 14. Ajuste horizontal y vertical
Ilustración 15. Ajuste botón sobre la pantalla
Ilustración 16. Ejecución aplicación simple
Ilustración 17. Outlet desde interfaz
Ilustración 18. Outlet en código.
Ilustración 19. Ventana de outlets
Ilustración 20. Conexión de una acción desde interfaz
Ilustración 21. Conexión de una acción en el código
Ilu
Comentarios de: Implementación de un recurso docente sobre iOS para el autoaprendizaje de un lenguaje de programación (0)
No hay comentarios