Download Herramienta didáctica interactiva para el aprendizaje de los

Document related concepts
no text concepts found
Transcript
TRABAJO FIN DE ESTUDIOS
PROYECTO FIN DE CARRERA
Herramienta didáctica interactiva para el
aprendizaje de los ultrasonidos
Javier Cariñanos Rodríguez
Tutor: Javier Esteban Vicuña Martínez
Curso 2012-2013
Herramienta didáctica interactiva para el aprendizaje de los ultrasonidos,
trabajo fin de estudios
de Javier Cariñanos Rodríguez, dirigido por Javier Esteban Vicuña Martínez (publicado por
la Universidad de La Rioja), se difunde bajo una Licencia
Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.
Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los
titulares del copyright.
©
©
El autor
Universidad de La Rioja, Servicio de Publicaciones, 2013
publicaciones.unirioja.es
E-mail: [email protected]
HERRAMIENTA DIDÁCTICA INTERACTIVA PARA
EL APRENDIZAJE DE LOS ULTRASONIDOS
TITULACIÓN: I.T.I. Electrónica Industrial
AUTOR: Javier Cariñanos Rodríguez
DIRECTOR DEL PROYECTO: Javier Esteban Vicuña Martínez
DEPARTAMENTO: Departamento de Ingeniería Eléctrica.
CURSO ACADÉMICO: 2012/2013
HERRAMIENTA DIDÁCTICA
INTERACTIVA PARA EL
APRENDIZAJE DE LOS
ULTRASONIDOS
ÍNDICE GENERAL
Javier Cariñanos Rodríguez
ÍNDICE GENERAL
MEMORIA
1 INTRODUCCIÓN ..................................................................................................................................... 7
2 OBJETO.................................................................................................................................................. 8
3 ALCANCE ............................................................................................................................................... 9
4 ANTECEDENTES ................................................................................................................................... 10
4.1 ULTRASONIDOS ................................................................................................................................. 10
4.2 LENGUAJES DE PROGRAMACIÓN ............................................................................................................ 10
4.2.1 Java ...................................................................................................................................... 10
4.2.2 HTML .................................................................................................................................... 11
4.3 BASES DE DATOS. MYSQL ..................................................................................................................... 12
5 NORMAS Y REFERENCIAS .................................................................................................................... 14
5.1 DISPOSICIONES LEGALES YNORMAS APLICADAS .......................................................................................... 14
5.2 BIBLIOGRAFÍA ................................................................................................................................... 14
5.3 PROGRAMAS .................................................................................................................................... 15
6 ABREVIATURAS ................................................................................................................................... 16
7 ANÁLISIS DE SOLUCIONES ................................................................................................................... 18
7.1 PARTE INTERACTIVA ........................................................................................................................... 18
7.1.1 Ejecutable ............................................................................................................................. 18
7.1.1.1 Visual Basic ............................................................................................................................................ 18
7.1.1.1.1 Ventajas e inconvenientes ........................................................................................................... 19
7.1.1.2 C++ Builder ............................................................................................................................................ 20
7.1.1.2.1 Ventajas e inconvenientes ........................................................................................................... 21
7.1.2 Aplicación Web ..................................................................................................................... 21
7.1.2.1 Visual Basic Script.................................................................................................................................. 22
7.1.2.1.1 Ventajas e inconvenientes ........................................................................................................... 23
7.1.2.2 JavaScript ............................................................................................................................................... 23
7.1.2.2.1 Ventajas e inconvenientes ........................................................................................................... 24
7.1.2.3 ActiveX ................................................................................................................................................... 24
7.1.2.3.1 Ventajas e inconvenientes ........................................................................................................... 25
7.1.2.4 ActionScript 3.0 ..................................................................................................................................... 25
7.1.2.4.1 Ventajas e inconvenientes ........................................................................................................... 26
7.1.2.5 Applets de Java...................................................................................................................................... 26
7.1.2.5.1 Ventajas e inconvenientes ........................................................................................................... 27
7.1.3 Conclusiones ......................................................................................................................... 28
7.2 BASE DE DATOS ................................................................................................................................ 28
7.2.1 MySQL .................................................................................................................................. 29
7.2.1.1 Ventajas e inconvenientes .................................................................................................................... 29
7.2.2 SQL Server ............................................................................................................................ 30
7.2.2.1 Ventajas e inconvenientes .................................................................................................................... 31
7.2.3 Oracle Database ................................................................................................................... 31
7.2.3.1 Ventajas e inconvenientes .................................................................................................................... 32
7.2.4 Conclusiones ......................................................................................................................... 33
7.3 EVALUACIÓN .................................................................................................................................... 33
7.3.1 PHP....................................................................................................................................... 34
7.3.1.1 Ventajas e inconvenientes .................................................................................................................... 34
7.3.2 JSP ........................................................................................................................................ 35
7.3.2.1 Ventajas e inconvenientes .................................................................................................................... 36
7.3.3 ASP.NET ................................................................................................................................ 36
7.3.3.1 Ventajas e inconvenientes .................................................................................................................... 37
7.3.4 Conclusiones ......................................................................................................................... 37
8 RESULTADOS FINALES ......................................................................................................................... 39
-2-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ÍNDICE GENERAL
8.1 TEORÍA ........................................................................................................................................... 39
8.1.1 Introducción a los ultrasonidos: relación frecuencia-longitud de onda y movimiento
oscilatorio ..................................................................................................................................... 40
8.1.2 Tipos de onda U.S. ................................................................................................................ 45
8.1.3 Velocidad de transmisión ...................................................................................................... 48
8.1.4 Reflexión y refracción de las ondas. Transmisión................................................................... 53
8.1.5 Efecto Doppler ...................................................................................................................... 61
8.1.6 Atenuación del ultrasonido ................................................................................................... 65
8.1.7 Generación y detección de ultrasonidos ................................................................................ 68
8.1.8 Aplicaciones .......................................................................................................................... 73
8.2 APPLETS.......................................................................................................................................... 80
8.2.1 Propagación de los ultrasonidos. Relación entre frecuencia y longitud de onda .................... 80
8.2.2 Oscilación de dos partículas .................................................................................................. 82
8.2.3 Applets de los tipos de onda de oscilación ............................................................................. 84
8.2.3.1 Ondas longitudinales ............................................................................................................................ 84
8.2.3.2 Ondas transversales .............................................................................................................................. 85
8.2.3.3 Ondas esféricas ..................................................................................................................................... 86
8.2.3.4 Ondas de choque .................................................................................................................................. 86
8.2.4 Dependencia de la velocidad de transmisión con respecto a la temperatura ......................... 87
8.2.5 Reflexión y refracción de ondas............................................................................................. 88
8.2.5.1 Leyes de Snell ........................................................................................................................................ 88
8.2.5.2 Acoplamiento entre medios ................................................................................................................. 90
8.2.5.2.1 Acoplamiento teórico ................................................................................................................... 91
8.2.5.2.2 Acoplamiento real ........................................................................................................................ 92
8.2.6 Efecto Doppler ...................................................................................................................... 93
8.2.6.1 Dos receptores estáticos y un emisor en movimiento ........................................................................ 93
8.2.6.2 Un receptor y un emisor ....................................................................................................................... 94
8.2.7 Atenuación ........................................................................................................................... 94
8.2.7.1 Absorción............................................................................................................................................... 95
8.2.7.2 Dispersión o Scattering ......................................................................................................................... 95
8.2.7.3 Difracción .............................................................................................................................................. 96
8.3 SEGUIMIENTO DEL APRENDIZAJE............................................................................................................ 97
8.3.1 Base de datos ....................................................................................................................... 97
8.3.2 Profesor y alumno................................................................................................................. 99
8.3.2.1 Profesor ................................................................................................................................................. 99
8.3.2.1.1 Nick y contraseña ......................................................................................................................... 99
8.3.2.1.2 Crear pregunta............................................................................................................................ 100
8.3.2.1.3 Modificar pregunta..................................................................................................................... 101
8.3.2.1.4 Ver resultados de los test........................................................................................................... 102
8.3.2.1.5 Ver errores por tema.................................................................................................................. 103
8.3.2.1.6 Elegir tipo de Test a realizar por los alumnos ........................................................................... 104
8.3.2.1.7 Elegir número de preguntas del test ......................................................................................... 105
8.3.2.1.8 Ver test del alumno .................................................................................................................... 105
8.3.2.1.9 Ver fallos del alumno en cada test por tema ............................................................................ 106
8.3.2.2 Alumno ................................................................................................................................................ 107
8.3.2.2.1 Inscribirse en la herramienta ..................................................................................................... 107
8.3.2.2.2 Realización del test ..................................................................................................................... 108
8.3.3 Continuación de la herramienta .......................................................................................... 109
ANEXO I. CÓDIGO DE LOS APPLETS
1 PROGRAMACIÓN DE LOS APPLETS ........................................................................................................ 3
1.1 EASY JAVA SIMULATIONS ....................................................................................................................... 3
1.2 CÓDIGO DE LOS APPLETS ....................................................................................................................... 4
1.2.1 Propagación de los ultrasonidos. Relación entre frecuencia y longitud de onda ...................... 4
1.2.2 Oscilación de dos partículas .................................................................................................... 8
-3-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ÍNDICE GENERAL
1.2.3 Applets de los tipos de onda de oscilación ............................................................................. 10
1.2.3.1 Ondas longitudinales ............................................................................................................................ 10
1.2.3.2 Ondas transversales .............................................................................................................................. 14
1.2.3.3 Ondas esféricas ..................................................................................................................................... 15
1.2.3.4 Ondas de choque .................................................................................................................................. 17
1.2.4 Dependencia de la velocidad de transmisión con respecto a la temperatura ......................... 19
1.2.5 Reflexión y refracción de ondas............................................................................................. 23
1.2.5.1 Leyes de Snell ........................................................................................................................................ 23
1.2.5.2 Acoplamiento entre medios ................................................................................................................. 29
1.2.5.2.1 Teórico .......................................................................................................................................... 29
1.2.5.2.2 Real................................................................................................................................................ 34
1.2.6 Efecto Doppler ...................................................................................................................... 40
1.2.6.1 Dos receptores estáticos y un emisor en movimiento ........................................................................ 40
1.2.6.2 Un receptor y un emisor ....................................................................................................................... 44
1.2.7 Atenuación ........................................................................................................................... 47
1.2.7.1 Dispersión o Scattering ......................................................................................................................... 47
1.2.7.2 Difracción .............................................................................................................................................. 56
1.2.7.3 Absorción............................................................................................................................................... 57
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
1 INTRODUCCIÓN ..................................................................................................................................... 3
2 BASE DE DATOS (MYSQL) ...................................................................................................................... 4
3 LOGIN.JSP .............................................................................................................................................. 6
4 USUARIONUEVO.JSP ............................................................................................................................. 8
5 MENSAJE.JSP ....................................................................................................................................... 11
6 MENU.JSP............................................................................................................................................ 14
7 INSERTARPREGUNTA.JSP .................................................................................................................... 18
8 MENSAJE2.JSP ..................................................................................................................................... 23
9 LISTADOPREGUNTAS.JSP .................................................................................................................... 29
10 MENSAJE3.JSP ................................................................................................................................... 34
11 RESULTADOS ..................................................................................................................................... 39
12 RESULTADOERROR.JSP...................................................................................................................... 43
13 TEST.JSP ............................................................................................................................................ 49
14 CORRECCION.JSP ............................................................................................................................... 55
15 TIPOTEST.JSP ..................................................................................................................................... 64
16 MENSAJE4.JSP ................................................................................................................................... 68
17 MENSAJE5.JSP ................................................................................................................................... 70
18 TEST2.JSP .......................................................................................................................................... 72
19 TEST3.JSP .......................................................................................................................................... 86
20 CORRECCION2.JSP ............................................................................................................................. 90
21 CORRECCION3.JSP ........................................................................................................................... 100
22 PRUEBA_NOTA.JSP.......................................................................................................................... 109
-4-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ÍNDICE GENERAL
23 PRUEBA_TEMAS.JSP ........................................................................................................................ 112
24 RESULTADOPERSONAL.JSP .............................................................................................................. 115
25 RESULTADOPERSONAL2.JSP ............................................................................................................ 118
26 RESULTADOTEMA.JSP ..................................................................................................................... 121
27 MENSAJE6.JSP ................................................................................................................................. 127
28 NUMPREGUNTAS.JSP ...................................................................................................................... 130
PLIEGO DE CONDICIONES
1 CONDICIONES GENERALES .................................................................................................................... 4
1.1 INTRODUCCIÓN ................................................................................................................................... 4
1.2 CONDICIONES DE DESARROLLO ............................................................................................................... 4
1.3 DISTRIBUICIÓN .................................................................................................................................... 5
2 CONDICIONES DE MATERIALES Y EQUIPOS ........................................................................................... 6
2.1 RECURSOS DE HARDWARE ..................................................................................................................... 6
2.2 RECURSOS DE SOFTWARE ...................................................................................................................... 7
3 CONDICIONES DE MONTAJE Y EJECUCIÓN ............................................................................................ 9
3.1 REQUERIMIENTOS MÍNIMOS ................................................................................................................... 9
3.2 INSTALACIÓN Y USO ............................................................................................................................. 9
3.3 LIMITACIONES DE LA HERRAMIENTA ......................................................................................................... 9
4 CONDICIONES ECONÓMICAS .............................................................................................................. 11
5 GUIA DE USUARIO ............................................................................................................................... 12
5.1 PRESENTANCIÓN DE LA HERRAMIENTA .................................................................................................... 12
5.2 REQUISITOS DEL SISTEMA .................................................................................................................... 12
5.3 EJECUCIÓN....................................................................................................................................... 12
5.4 DESCRIPCIÓN DEL INTERFAZ ................................................................................................................. 13
5.4.1 Herramienta didáctica .......................................................................................................... 13
5.4.1.1 Portada y presentación ......................................................................................................................... 13
5.4.1.2 Índice principal ...................................................................................................................................... 14
5.4.1.3 Índice de los temas ............................................................................................................................... 14
5.4.1.4 Páginas de los temas ............................................................................................................................. 15
5.4.1.5 Páginas con applets .............................................................................................................................. 16
5.4.2 Herramienta de evaluación ................................................................................................... 17
5.4.2.1 Login ...................................................................................................................................................... 17
5.4.2.2 Inscripción en el curso .......................................................................................................................... 18
5.4.2.3 Menú principal ...................................................................................................................................... 18
5.4.2.3.1 Alumno .......................................................................................................................................... 18
5.4.2.3.2 Profesor......................................................................................................................................... 19
5.4.2.4 Test ........................................................................................................................................................ 20
5.4.2.5 Crear pregunta ...................................................................................................................................... 20
5.4.2.6 Modificar pregunta ............................................................................................................................... 21
5.4.2.7 Elección del tipo de test........................................................................................................................ 22
5.4.2.8 Elección del número de preguntas ....................................................................................................... 23
5.4.2.9 Notas de los test ................................................................................................................................... 24
5.4.2.10 Resultado de los test........................................................................................................................... 25
5.4.2.11 Errores por tema ................................................................................................................................. 26
5.4.2.12 Errores de temas en cada test ............................................................................................................ 28
-5-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ÍNDICE GENERAL
PRESUPUESTO
1 PRESUPUESTO ....................................................................................................................................... 3
1.1 UNIDADES DE PROYECTO ....................................................................................................................... 3
1.2 PRECIOS UNITARIOS ............................................................................................................................. 3
1.3 MEDICIONES ...................................................................................................................................... 3
1.4 PRESUPUESTO PARCIAL ......................................................................................................................... 3
1.5 RESUMEN DEL PRESUPUESTO .................................................................................................................. 4
-6-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
HERRAMIENTA DIDÁCTICA
INTERACTIVA PARA EL
APRENDIZAJE DE LOS
ULTRASONIDOS
MEMORIA
Javier Cariñanos Rodríguez
MEMORIA
ÍNDICE
1 INTRODUCCIÓN ..................................................................................................................................... 7
2 OBJETO.................................................................................................................................................. 8
3 ALCANCE ............................................................................................................................................... 9
4 ANTECEDENTES ................................................................................................................................... 10
4.1 ULTRASONIDOS ................................................................................................................................. 10
4.2 LENGUAJES DE PROGRAMACIÓN ............................................................................................................ 10
4.2.1 Java ...................................................................................................................................... 10
4.2.2 HTML .................................................................................................................................... 11
4.3 BASES DE DATOS. MYSQL ..................................................................................................................... 12
5 NORMAS Y REFERENCIAS .................................................................................................................... 14
5.1 DISPOSICIONES LEGALES YNORMAS APLICADAS .......................................................................................... 14
5.2 BIBLIOGRAFÍA ................................................................................................................................... 14
5.3 PROGRAMAS .................................................................................................................................... 15
6 ABREVIATURAS ................................................................................................................................... 16
7 ANÁLISIS DE SOLUCIONES ................................................................................................................... 18
7.1 PARTE INTERACTIVA ........................................................................................................................... 18
7.1.1 Ejecutable ............................................................................................................................. 18
7.1.1.1 Visual Basic ............................................................................................................................................ 18
7.1.1.1.1 Ventajas e inconvenientes ........................................................................................................... 19
7.1.1.2 C++ Builder ............................................................................................................................................ 20
7.1.1.2.1 Ventajas e inconvenientes ........................................................................................................... 21
7.1.2 Aplicación Web ..................................................................................................................... 21
7.1.2.1 Visual Basic Script.................................................................................................................................. 22
7.1.2.1.1 Ventajas e inconvenientes ........................................................................................................... 23
7.1.2.2 JavaScript ............................................................................................................................................... 23
7.1.2.2.1 Ventajas e inconvenientes ........................................................................................................... 24
7.1.2.3 ActiveX ................................................................................................................................................... 24
7.1.2.3.1 Ventajas e inconvenientes ........................................................................................................... 25
7.1.2.4 ActionScript 3.0 ..................................................................................................................................... 25
7.1.2.4.1 Ventajas e inconvenientes ........................................................................................................... 26
7.1.2.5 Applets de Java...................................................................................................................................... 26
7.1.2.5.1 Ventajas e inconvenientes ........................................................................................................... 27
7.1.3 Conclusiones ......................................................................................................................... 28
7.2 BASE DE DATOS ................................................................................................................................ 28
7.2.1 MySQL .................................................................................................................................. 29
7.2.1.1 Ventajas e inconvenientes .................................................................................................................... 29
7.2.2 SQL Server ............................................................................................................................ 30
7.2.2.1 Ventajas e inconvenientes .................................................................................................................... 31
7.2.3 Oracle Database ................................................................................................................... 31
7.2.3.1 Ventajas e inconvenientes .................................................................................................................... 32
7.2.4 Conclusiones ......................................................................................................................... 33
7.3 EVALUACIÓN .................................................................................................................................... 33
7.3.1 PHP....................................................................................................................................... 34
7.3.1.1 Ventajas e inconvenientes .................................................................................................................... 34
7.3.2 JSP ........................................................................................................................................ 35
7.3.2.1 Ventajas e inconvenientes .................................................................................................................... 36
7.3.3 ASP.NET ................................................................................................................................ 36
7.3.3.1 Ventajas e inconvenientes .................................................................................................................... 37
7.3.4 Conclusiones ......................................................................................................................... 37
8 RESULTADOS FINALES ......................................................................................................................... 39
-2-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.1 TEORÍA ........................................................................................................................................... 39
8.1.1 Introducción a los ultrasonidos: relación frecuencia-longitud de onda y movimiento
oscilatorio ..................................................................................................................................... 40
8.1.2 Tipos de onda U.S. ................................................................................................................ 45
8.1.3 Velocidad de transmisión ...................................................................................................... 48
8.1.4 Reflexión y refracción de las ondas. Transmisión ................................................................... 53
8.1.5 Efecto Doppler ...................................................................................................................... 61
8.1.6 Atenuación del ultrasonido ................................................................................................... 65
8.1.7 Generación y detección de ultrasonidos ................................................................................ 68
8.1.8 Aplicaciones .......................................................................................................................... 73
8.2 APPLETS.......................................................................................................................................... 80
8.2.1 Propagación de los ultrasonidos. Relación entre frecuencia y longitud de onda .................... 80
8.2.2 Oscilación de dos partículas .................................................................................................. 82
8.2.3 Applets de los tipos de onda de oscilación ............................................................................. 84
8.2.3.1 Ondas longitudinales ............................................................................................................................ 84
8.2.3.2 Ondas transversales .............................................................................................................................. 85
8.2.3.3 Ondas esféricas ..................................................................................................................................... 86
8.2.3.4 Ondas de choque .................................................................................................................................. 86
8.2.4 Dependencia de la velocidad de transmisión con respecto a la temperatura ......................... 87
8.2.5 Reflexión y refracción de ondas............................................................................................. 88
8.2.5.1 Leyes de Snell ........................................................................................................................................ 88
8.2.5.2 Acoplamiento entre medios ................................................................................................................. 90
8.2.5.2.1 Acoplamiento teórico ................................................................................................................... 91
8.2.5.2.2 Acoplamiento real ........................................................................................................................ 92
8.2.6 Efecto Doppler ...................................................................................................................... 93
8.2.6.1 Dos receptores estáticos y un emisor en movimiento ........................................................................ 93
8.2.6.2 Un receptor y un emisor ....................................................................................................................... 94
8.2.7 Atenuación ........................................................................................................................... 94
8.2.7.1 Absorción............................................................................................................................................... 95
8.2.7.2 Dispersión o Scattering ......................................................................................................................... 95
8.2.7.3 Difracción .............................................................................................................................................. 96
8.3 SEGUIMIENTO DEL APRENDIZAJE............................................................................................................ 97
8.3.1 Base de datos ....................................................................................................................... 97
8.3.2 Profesor y alumno................................................................................................................. 99
8.3.2.1 Profesor ................................................................................................................................................. 99
8.3.2.1.1 Nick y contraseña ......................................................................................................................... 99
8.3.2.1.2 Crear pregunta............................................................................................................................ 100
8.3.2.1.3 Modificar pregunta..................................................................................................................... 101
8.3.2.1.4 Ver resultados de los test........................................................................................................... 102
8.3.2.1.5 Ver errores por tema.................................................................................................................. 103
8.3.2.1.6 Elegir tipo de Test a realizar por los alumnos ........................................................................... 104
8.3.2.1.7 Elegir número de preguntas del test ......................................................................................... 105
8.3.2.1.8 Ver test del alumno .................................................................................................................... 105
8.3.2.1.9 Ver fallos del alumno en cada test por tema ............................................................................ 106
8.3.2.2 Alumno ................................................................................................................................................ 107
8.3.2.2.1 Inscribirse en la herramienta ..................................................................................................... 107
8.3.2.2.2 Realización del test ..................................................................................................................... 108
8.3.3 Continuación de la herramienta .......................................................................................... 109
ÍNDICE DE ILUSTRACIONES:
FIGURA 1. EJEMPLO DE CÓDIGO HTML .................................................................................................. 12
FIGURA 2. ENTORNO DEL VISUAL BASIC ................................................................................................ 19
FIGURA 3. ENTORNO DEL C++ BUILDER ................................................................................................. 21
-3-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
FIGURA 4. EJEMPLO DE VBSCRIPT .......................................................................................................... 22
FIGURA 5. EJEMPLO DE PROGRAMACIÓN EN JAVASCRIPT .................................................................... 24
FIGURA 6. EJEMPLO DE PROGRAMACIÓN EN ACTIONSCRIPT 3.0 .......................................................... 26
FIGURA 7. EJEMPLO DE UN APPLET DE JAVA ......................................................................................... 27
FIGURA 8. LOGO DE MYSQL ................................................................................................................... 29
FIGURA 9. EJEMPLO DE ENTORNO DE PROGRAMACIÓN DE SQL SERVER .............................................. 31
FIGURA 10. BASE DE DATOS CON ORACLE ............................................................................................. 32
FIGURA 11. EJEMPLO DE PROGRAMACIÓN EN PHP ............................................................................... 34
FIGURA 12. EJEMPLO DE PROGRAMACIÓN EN JSP ................................................................................ 35
FIGURA 13. EJEMPLO DE ASP.NET .......................................................................................................... 37
FIGURA 14. ÍNDICE DE LA HERRAMIENTA .............................................................................................. 40
FIGURA 15. ÍNDICE DEL TEMA 1 ............................................................................................................. 40
FIGURA 16. PARTÍCULAS VIBRANDO ...................................................................................................... 41
FIGURA 17. EJEMPLOS DE FRECUENCIA ................................................................................................. 42
FIGURA 18. OSCILACIÓN DE PARTÍCULAS EN MEDIO ISOTRÓPICO ........................................................ 42
FIGURA 19. FÓRMULA DE LA ELONGACIÓN ........................................................................................... 43
FIGURA 20. REPRESENTACIÓN DE UNA LONGITUD DE ONDA ................................................................ 44
FIGURA 21. RELACIÓN ENTRE LONGITUD DE ONDA, VELOCIDAD DE TRANSMISIÓN Y FRECUENCIA ..... 44
FIGURA 22. ECUACIONES DE DESPLAZAMIENTO DE UNA PARTÍCULA ................................................... 45
FIGURA 23. VELOCIDAD DE LAS PARTÍCULAS Y BALANCES DE ENERGÍA ................................................ 45
FIGURA 24. ÍNDICE DEL TEMA 2 ............................................................................................................. 46
FIGURA 25. ÍNDICE DEL TEMA 3 ............................................................................................................. 48
FIGURA 26. VELOCIDAD DE PROPAGACIÓN EN SÓLIDOS ....................................................................... 49
FIGURA 27. MÓDULO DE YOUNG........................................................................................................... 50
FIGURA 28. VELOCIDAD DE PROPAGACIÓN EN LÍQUIDOS ..................................................................... 50
FIGURA 29. VELOCIDAD DE PROPAGACIÓN EN GASES........................................................................... 51
FIGURA 30. DEPENDENCIA DE LA VELOCIDAD CON RESPECTO A LA TEMPERATURA EN GASES ............ 53
FIGURA 31. ÍNDICE DEL TEMA 4 ............................................................................................................. 53
FIGURA 32. INCIDENCIA ORTOGONAL ................................................................................................... 54
FIGURA 33. INCIDENCIA OBLICUA .......................................................................................................... 54
FIGURA 34. LEYES DE SNELL ................................................................................................................... 55
FIGURA 35. INCIDENCIA OBLICUA .......................................................................................................... 55
FIGURA 36. CANTIDADES TRANSMITIDAS Y REFLEJADAS....................................................................... 57
FIGURA 37. REPRESENTACIÓN DE CANTIDADES TRANSMITIDAS Y REFLEJADAS .................................... 57
FIGURA 38. ÁNGULO CRÍTICO ................................................................................................................ 58
FIGURA 39. ÁNGULOS DESTACADOS...................................................................................................... 60
FIGURA 40. ECUACIONES DE ACOPLAMIENTO ....................................................................................... 60
-4-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
FIGURA 41. ÍNDICE DEL TEMA 5 ............................................................................................................. 61
FIGURA 42. EJEMPLO VISUAL DEL EFECTO DOPPLER ............................................................................. 62
FIGURA 43. ECUACIONES DEL EFECTO DOPPLER .................................................................................... 64
FIGURA 44. ÍNDICE DEL TEMA 6 ............................................................................................................. 65
FIGURA 45. ZONA FRESNEL Y FRAUNHOFER .......................................................................................... 67
FIGURA 46. ÍNDICE DEL TEMA 7 ............................................................................................................. 68
FIGURA 47. TRANSDUCTOR PIEZOELÉCTRICO ........................................................................................ 69
FIGURA 48. TRANSDUCTOR ELECTROESTÁTICO ..................................................................................... 70
FIGURA 49. MICRÓFONO DE CONDENSADOR ........................................................................................ 71
FIGURA 50. DEFORMACIÓN POR MAGNETOESTRICCIÓN ....................................................................... 71
FIGURA 51. CORTE TRANSVERSAL DE UN TRANSDUCTOR MAGNETOSTRICTIVO................................... 72
FIGURA 52. TRANSDUCTOR ELECTROMAGNÉTICO ................................................................................ 73
FIGURA 53. SILBATO DE GALTON ........................................................................................................... 73
FIGURA 54. ÍNDICE DEL TEMA 8 ............................................................................................................. 74
FIGURA 55. ENSAYO NO DESTRUCTIVO DE MATERIALES ....................................................................... 75
FIGURA 56. ENSAYO DE MATERIALES EN ESTRUCTURAS ....................................................................... 76
FIGURA 57. ESCÁNER DE CUERPO HUMANO ......................................................................................... 76
FIGURA 58. MÁQUINA DE SOLDADURA POR ULTRASONIDO ................................................................. 77
FIGURA 59. MÁQUINA DE LIMPIEZA POR ULTRASONIDO ...................................................................... 78
FIGURA 60. MÁQUINA DE TALADRADO POR ULTRASONIDO ................................................................. 78
FIGURA 61. SISTEMA ANTIRROBO ......................................................................................................... 79
FIGURA 62. SONAR ................................................................................................................................ 80
FIGURA 63. DISPLAY DE UN SONAR ....................................................................................................... 80
FIGURA 64. APPLET QUE RELACIONA FRECUENCIA Y LONGITUD DE ONDA ........................................... 81
FIGURA 65. APPLET PARA VER EL DESFASE ENTRE PARTÍCULAS DE UN MISMO MEDIO ........................ 83
FIGURA 66. PARTÍCULAS EN REPOSO ..................................................................................................... 84
FIGURA 67. ONDA LONGITUDINAL EN PROPAGACIÓN .......................................................................... 84
FIGURA 68. PARTÍCULAS EN REPOSO ..................................................................................................... 85
FIGURA 69. ONDA TRANSVERSAL EN PROPAGACIÓN ............................................................................ 85
FIGURA 70. ONDA ESFÉRICA .................................................................................................................. 86
FIGURA 71. SIMULACIÓN DE UNA ONDA DE CHOQUE ........................................................................... 86
FIGURA 72. DEPENDENCIA DE LA VELOCIDAD DE LOS ULTRASONIDOS CON RESPECTO A LA
TEMPERATURA ...................................................................................................................................... 87
FIGURA 73. APPLET DE LAS LEYES DE SNELL ........................................................................................... 89
FIGURA 74. ACOPLAMIENTO DE MEDIOS (TEÓRICO) ............................................................................. 91
FIGURA 75. ACOPLAMIENTO DE MEDIOS (REAL) ................................................................................... 92
FIGURA 76. EFECTO DOPPLER CON DOS RECEPTORES ........................................................................... 93
FIGURA 77. EFECTO DOPPLER CON UN RECEPTOR ................................................................................. 94
-5-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
FIGURA 78. APPLET DEL FENÓMENO DEL SCATTERING.......................................................................... 96
FIGURA 79. APPLET DE LA DIFRACCIÓN ................................................................................................. 97
FIGURA 80. MENÚ DEL PROFESOR ....................................................................................................... 100
FIGURA 81. EJEMPLO DE PREGUNTA LARGA ........................................................................................ 100
FIGURA 82. LISTADO DE PREGUNTAS................................................................................................... 101
FIGURA 83. MODIFICACIÓN DE LAS PREGUNTAS ................................................................................. 101
FIGURA 84. RESULTADOS DE LOS TEST POR ALUMNO ......................................................................... 102
FIGURA 85. GRÁFICA CON LA NOTA DEL ALUMNO .............................................................................. 102
FIGURA 86. ERRORES POR TEMAS DE UN ALUMNO ............................................................................ 103
FIGURA 87. DIAGRAMA DE BARRAS CON LOS ERRORES EN CADA TEMA ............................................ 103
FIGURA 88. ELECCIÓN DE TIPO DE TEST ............................................................................................... 104
FIGURA 89. ELECCIÓN DE PREGUNTAS ................................................................................................. 104
FIGURA 90. ELECCIÓN DEL NÚMERO DE PREGUNTAS .......................................................................... 105
FIGURA 91. ELECCIÓN DEL ALUMNO Y DE TEST ................................................................................... 105
FIGURA 92. LISTADO CON LAS PREGUNTAS DEL TEST Y SI ACERTÓ O FALLO ....................................... 106
FIGURA 93. ELECCIÓN DEL ALUMNO Y DEL TEMA A SEGUIR ................................................................ 106
FIGURA 94. LISTADO DE TEST Y FALLOS EN EL TEMA CORRESPONDIENTE ........................................... 107
FIGURA 95. INSCRIPCIÓN EN EL CURSO ............................................................................................... 107
FIGURA 96. MENÚ DE LOS ALUMNOS .................................................................................................. 108
FIGURA 97. PANTALLA DE CORRECCIÓN .............................................................................................. 108
ÍNDICE DE GRÁFICOS:
GRÁFICO 1. GRÁFICA DE DEPENDENCIA DE LA VELOCIDAD DE PROPAGACIÓN, EN EL AGUA, CON
RESPECTO A LA TEMPERATURA ............................................................................................................. 52
GRÁFICA 2. DESFASE ENTRE DOS PARTÍCULAS....................................................................................... 83
GRÁFICA 3. EFECTO DE LA FRECUENCIA EN EL FENÓMENO DE LA ABSORCIÓN ..................................... 95
ÍNDICE DE TABLAS:
TABLA 1. B.D DE PREGUNTAS Y RESPUESTAS......................................................................................... 98
TABLA 2. B.D DE USUARIOS, ERRORES Y RESULTADOS .......................................................................... 98
TABLA 3. B.D. PREGUNTAS ACERTADAS................................................................................................. 98
TABLA 4. B.D NÚMERO DE PREGUNTAS ................................................................................................. 99
-6-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
1 INTRODUCCIÓN

TÍTULO: “Herramienta Didáctica Interactiva para el Aprendizaje
de los Ultrasonidos”

EMPLAZAMIENTO: Escuela de Enseñanzas Científicas y Técnicas
de la Universidad de La Rioja.

PETICIONARIO: Universidad de La Rioja.

AUTOR DEL PROYECTO.
Javier Cariñanos Rodríguez
DNI: 16610148P
Razón Social: Logroño (La Rioja)
Director del Proyecto: Javier Esteban Vicuña Martínez,
profesor del departamento de Ingeniería Eléctrica de la
Universidad de La Rioja.
E-mail: [email protected]
-7-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
2 OBJETO
Este proyecto nace con el objetivo de hacer los ultrasonidos y su
comportamiento más accesible y comprensible al público en general, dado que
los ultrasonidos son vibraciones no perceptibles por el ser humano. Para ello se
planteó la creación de una aplicación, en la cual se incluya los conceptos
teóricos acerca de su naturaleza, comportamiento, etc, para hacerlos más
cercanos al alumno. Serán acompañados de una serie de simulaciones con las
que poder asentar mejor estos conocimientos, y una aplicación que permita
realizar pruebas de evaluación de lo aprendido de esa teoría y esas
simulaciones. El proyecto se realizó mediante dos de los lenguajes más
utilizados actualmente en programación: Java y HTML. Juntos permiten
realizar aplicaciones dinámicas que ayudan a la comprensión de muchos
conceptos.
Una vez definido nuestro objetivo, fue necesario establecer las siguientes
fases para su consecución:
1. Selección los conceptos para incluir en nuestra herramientas interactivas
y el estudio correspondiente a cada uno de ellos.
2. Aprendizaje de lenguajes de programación con los que poder realizar
las herramientas interactivas, ya que la herramienta basada en TICs, es un buen
método para que la interacción sea más clara y efectiva en términos didácticos.
Una vez realizados, se seleccionaron los contenidos que queríamos
ejemplificar y hacer más comprensibles, para posteriormente desarrollar una
serie de aplicaciones interactivas que acompañasen a los conceptos teóricos,
todo ello incluido sobre código HTML, que puede ser presentado en cualquier
navegador web.
-8-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
3 ALCANCE
El código a desarrollar, se basará principalmente en el lenguaje Java.
Dicho lenguaje permite la realización de aplicaciones integrables fácilmente en
páginas de código HTML, además de la realización de aplicaciones dinámicas
muy vistosas. Lo cual resulta atractivo y se alinea con los objetivos del proyecto
Se trata de un proyecto de software didáctico que contempla tres aspectos:

El curso interactivo de ultrasonidos, que cuenta con la teoría
necesaria para explicar la naturaleza y comportamiento de este tipo
de ondas vibracionales.

Un conjunto de aplicaciones dinámicas que permiten visualizar los
conceptos de teoría, acompañando la de simulaciones que
permitirán una mejor comprensión.

La parte de la autoevaluación, tanto desde el punto de vista del
profesor como del alumno, que permitirá reforzar el aprendizaje y
realizar un seguimiento del mismo, detectando errores de concepto
y su corrección Se apoya en la gestión de bases de datos (MySQL)
mediante Java.
-9-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
4 ANTECEDENTES
4.1 ULTRASONIDOS
En el año 1883, Galton investigó los límites de la audición humana, fijando
la frecuencia máxima a la que podía oír una persona. Llegó a la conclusión de
que los sonidos con frecuencias inaudibles por el ser humano, presentaban
fenómenos de propagación similares al resto de las ondas sonoras, aunque con
una absorción mucho mayor por parte del aire.
A partir de entonces, se empezó a investigar en temas relacionados con la
generación de ultrasonidos:

Los hermanos Curie descubrieron la piezoelectricidad en 1880.
Fueron Lippmann y Voigt en la década de los 80 del siglo XIX
quienes experimentaron con el llamado efecto piezoeléctrico
inverso, aplicable realmente a la generación de ultrasonidos,
como veremos.

Joule en 1847 y Pierce en 1928 descubrieron el efecto
magnetoestrictivo, directo e inverso.

A lo largo del siglo XX, se han producido grandes avances en el
estudio de los ultrasonidos, especialmente en lo relacionado con
aplicaciones: acústica subacuática, medicina, industria, etc.
Concretamente, Langevin lo empleó durante la primera guerra
mundial para sondeos subacuáticos, realizando un sencillo
procesado de las ondas y sus ecos. Richardson y Fessenden, en la
década de los años 10 idearon un método para localizar icebergs,
con un procedimiento similar al utilizado hoy en día (método de
impulsos, lo veremos). Mulhauser y Firestone, entre 1933 y 1942
aplicaron los ultrasonidos a la industria y a la inspección de
materiales.
4.2 LENGUAJES DE PROGRAMACIÓN
4.2.1 Java
Java se creó como una herramienta de programación para ser usada en un
proyecto de set-top-box en una pequeña operación denominada the Green
Project en Sun Microsystems en el año1991. El equipo (Green Team), compuesto
por trece personas y dirigido por James Gosling, trabajó durante 18 meses en
Sand Hill Road en Menlo Park en su desarrollo.
-10-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
El lenguaje se denominó inicialmente Oak (por un roble que había fuera
de la oficina de Gosling), luego pasó a denominarse Green tras descubrir
que Oak era ya una marca comercial registrada para adaptadores de tarjetas
gráficas y finalmente se renombró a Java.
Los objetivos de Gosling eran implementar una máquina virtual y un
lenguaje con una estructura y sintaxis similar a C++. Entre junio y julio de 1994,
tras una sesión maratoniana de tres días entre John Gaga, James Gosling,
Patrick Naughton, Wayne Rosing y Eric Schmidt, el equipo reorientó la
plataforma hacia la Web. Sintieron que la llegada del navegador Web Mosaic,
propiciaría que Internet se convirtiese en un medio interactivo, como el que
pensaban era la televisión por cable. Naughton creó entonces un prototipo de
navegador, WebRunner, que más tarde sería conocido como HotJava.
En 1994, se les hizo una demostración de HotJava y la plataforma Java a
los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero
hubo que esperar al 23 de mayo de 1995, durante las conferencias de SunWorld,
a que vieran la luz pública Java y HotJava, el navegador Web. El acontecimiento
fue anunciado por John Gage, el Director Científico de Sun Microsystems. El
acto estuvo acompañado por una pequeña sorpresa adicional, el anuncio por
parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, de que Java
sería soportado en sus navegadores. El 9 de enero del año siguiente, 1996, Sun
fundó el grupo empresarial JavaSoft para que se encargase del desarrollo
tecnológico.
La promesa inicial de Gosling era Write Once, Run Anywhere (Escríbelo
una vez, ejecútalo en cualquier lugar), proporcionando un lenguaje
independiente de la plataforma y un entorno de ejecución (la JVM) ligero y
gratuito para las plataformas más populares de forma que los binarios
(bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma.
El entorno de ejecución era relativamente seguro y los principales
navegadores Web pronto incorporaron la posibilidad de ejecutar applets Java
incrustadas en las páginas Web.
4.2.2 HTML
HTML, siglas de HyperText Markup Language («lenguaje de marcado de
hipertexto»), hace referencia al lenguaje de marcado predominante para la
elaboración de páginas Web que se utiliza para describir y traducir la estructura
y la información en forma de texto, así como para complementar el texto con
objetos tales como imágenes. El HTML se escribe en forma de «etiquetas»,
-11-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
rodeadas por corchetes angulares (<,>). HTML también puede describir, hasta
un cierto punto, la apariencia de un documento, y puede incluir un script (por
ejemplo JavaScript), el cual puede afectar el comportamiento de navegadores
Web y otros procesadores de HTML.1
HTML también sirve para referirse al contenido del tipo de
MIME text/html o todavía más ampliamente como un término genérico para el
HTML, ya sea en forma descendida del XML (como XHTML 1.0 y posteriores) o
en forma descendida directamente de SGML (como HTML 4.01 y anteriores).
Figura 1. Ejemplo de código HTML
4.3 BASES DE DATOS. MYSQL
Una base de datos o banco de datos es un conjunto de datos pertenecientes
a un mismo contexto y almacenados sistemáticamente para su posterior uso. En
este sentido, una biblioteca puede considerarse una base de datos compuesta en
su mayoría por documentos y textos impresos en papel e indexados para su
consulta. Actualmente, y debido al desarrollo tecnológico de campos como
la informática y la electrónica, la mayoría de las bases de datos están en formato
digital (electrónico), que ofrece un amplio rango de soluciones al problema de
almacenar datos.
MySQL es un sistema de gestión de bases de datos relacional, multihilo
y multiusuario con más de seis millones de instalaciones. MySQL AB—desde
enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle
Corporation desde abril de 2009— desarrolla MySQL como software libre en un
esquema de licenciamiento dual.
Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con
esta licencia, pero para aquellas empresas que quieran incorporarlo en
productos privativos deben comprar a la empresa una licencia específica que les
permita este uso. Está desarrollado en su mayor parte en ANSI C.
-12-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Al contrario de proyectos como Apache, donde el software es desarrollado
por una comunidad pública y los derechos de autor del código están en poder
del autor individual, MySQL es patrocinado por una empresa privada, que
posee el copyright de la mayor parte del código.
Esto es lo que posibilita el esquema de licenciamiento anteriormente
mencionado. Además de la venta de licencias privativas, la compañía ofrece
soporte y servicios. Para sus operaciones contratan trabajadores alrededor del
mundo que colaboran vía Internet. MySQL AB fue fundado por David
Axmark, Allan Larsson y Michael Widenius.
-13-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
5 NORMAS Y REFERENCIAS
5.1 DISPOSICIONES LEGALES YNORMAS APLICADAS
Criterios generales para la elaboración de proyectos:

La estructura del proyecto, está realizada en base a la norma UNE
157001:2002.
Dado el carácter del proyecto y la escasa normativa que se dispone para
temas de programación, no se seguirá ningún tipo de normativa legal.
5.2 BIBLIOGRAFÍA
Para la realización del presente proyecto, se ha necesitado acudir a varios
sitios para encontrar la información necesaria que engloba el mismo.
A continuación se enumeran distintas fuentes consultadas:
Páginas Web.

http://casidiablo.net/java/
programar en java.

http://www.ehu.es/acustica/bachillerato/index.html : curso de
acústica.

http://www.um.es/fem/EjsWiki/pmwiki.php?userlang=es
:
página con el programa e información para crear los applets de
Java.

www.wikipedia.es : página con información en general.
:
página
con
información
Libros.



Ultrasónica:
Autor: Benson Carlin.
Editorial: URMO.
Año: 1979.
Ultrasonidos:
Autor: A.P. Cracknell.
Editorial: PARANINFO.
Año: 1983.
Ingeniería Acústica:
Autor: Manuel Recuerdo.
-14-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
para
MEMORIA

Editorial: PARANINFO.
Año: 1995.
Ultrasonic Measurements and technologies:
Autor: Stefan Kocis y Zdenko Figura.
Editorial: Chapman and Hall.
Año: 1996.
Apuntes.

Sistemas de Percepción.
Universidad de la Rioja.

Desarrollo de aplicaciones en entornos de 4ª generación y con
herramientas CASE. Eduardo López Martínez. IES Comercio.

Desarrollo e implementación de páginas Web. Universidad de la
Rioja.
Javier
Esteban
Vicuña
Martínez.
5.3 PROGRAMAS
Macromedia Dreamweaver MX2004. Programa para crear de forma visual
páginas Web.
Easy Java Simulations. Este programa permite crear simulaciones en
lenguaje Java.
Sqldeveloper. Este programa permite crear bases de datos y visualizarla
durante el funcionamiento.
Apache Tomcat. Este programa te permite simular que tienes en un
servidor la base de datos del Sqldeveloper y así poder probar la programación
que llevas.
JCreator. Programa de edición de texto que reconoce los tipos de lenguaje
y te facilita el trabajo para trabajar con Java y HTML.
Microsoft Word.
-15-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
6 ABREVIATURAS
Abreviaturas.

KHz. Kilohercio.

MHz. Megahercio.

Longitud de onda.

c. velocidad de propagación.

f. frecuencia.

T. Periodo.

a. Amplitud de onda.

Densidad.

Ep. Módulo de elasticidad.

ad. Coeficiente adiabático de compresibilidad.

 Coeficiente absoluto de temperatura.

P. Presión.

DLL. Dynamic-link library.

HTML. HyperText Markup Language.

VBScript. Visual Basic Script.

ISO. International Organization for Standardization.

DOM. Document Object Model.

SSJS. Server-Side JavaScript.

JVM. Java Virtual Machine.

AVM2. ActionScript Virtual Machine 2.

ECMA 262. European Computer Manufacturers Association.
-16-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

JRE. Java Runtime Environment.

DDL. Data Description Language.

DML. Data Manipulation Language.

SQL. Structured Query Language.

PHP. Personal Home Page.

JSP. Java Server Programming.
-17-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
7 ANÁLISIS DE SOLUCIONES
En este apartado se realizará un estudio con las distintas alternativas
estudiadas para la realización del proyecto.
Para ello lo primero es distinguir claramente las tres partes en las que
podemos dividir el proyecto: la parte interactiva, la base de datos y la de
evaluación.
7.1 PARTE INTERACTIVA
En esta parte se quiso conseguir una aplicación interactiva para que los
usuarios pudieran aprender la teoría de los ultrasonidos y a la vez pudieran
probar con simulaciones la teoría vista y asimilarla mejor.
Para conseguir esto se pensó en dos tipos de soluciones generales:

Una aplicación en sí misma como ejecutable.

Una aplicación Web.
7.1.1 Ejecutable
Dentro de esta opción se pensó en dos programas para realizarlo, ya que
son los dos programas más utilizados durante el desarrollo de la carrera:

Visual Basic.

C++ Builder.
7.1.1.1 Visual Basic
El lenguaje de programación Visual Basic está dirigido hacia eventos. Este
lenguaje es un derivado de BASIC.
Los programas con los que se programa en Visual Basic generan un código
que requiere una o más librerías dinámicas para que se pueda ejecutar,
conocidas como DLL (siglas que significan dynamic-link library). Estas
bibliotecas DLL contienen las funciones básicas ya desarrolladas para este
lenguaje, conteniendo rutinas en código ejecutable que son cargadas bajo
demanda en tiempo de ejecución. Además de las bibliotecas mínimas para el
funcionamiento de los algoritmos, existe un gran número de DLL con variedad
de funciones, con las que se facilita el acceso a la mayoría de las funciones del
-18-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
sistema operativo o las que proveen conexiones con otras aplicaciones (como
puede ser Matlab, Excel…).
Dentro del mismo Entorno de desarrollo integrado (IDE) de Visual Basic
se permite el ejecutar el algoritmo que se esté desarrollando, es decir en
modo intérprete para probar lo creado hasta ese momento. Desde ese entorno
también se puede generar el archivo en código ejecutable (exe); con lo que la
aplicación creada se puede ejecutarse sin requerir del ambiente de
programación, aunque si será necesario que las librerías DLL usadas por la
aplicación desarrollada se encuentren en el sistema para posibilitar su ejecución.
El propio Visual Basic contiene un soporte para empaquetad, es decir,
permite generar un instalador que contiene a la aplicación ejecutable y a las
bibliotecas DLL necesarias para su ejecución. Con ese módulo la aplicación
desarrollada se distribuye y puede ser instalada en cualquier equipo (que tenga
un sistema operativo compatible).
Figura 2. Entorno del Visual Basic
7.1.1.1.1 Ventajas e inconvenientes
Las ventajas de usar este medio de programación son las siguientes:

Integra el diseño e implementación de formularios de Windows.
-19-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Permite usar con facilidad la plataforma de los sistemas Windows,
dado que tiene acceso prácticamente total a la API de Windows,
incluidas librerías actuales.

Es uno de los lenguajes de uso más extendido, por lo que resulta
fácil encontrar información, documentación y fuentes para los
proyectos.

Fácilmente extensible mediante librerías DLL y componentes
ActiveX de otros lenguajes.
Los inconvenientes son:

No existe forma alguna de exportar el código a otras plataformas
diferentes a Windows.

Los ejecutables generados son relativamente lentos.

Pobre soporte para programación orientada a objetos

La capacidad de utilizar controles en un solo formulario es muy
limitada en comparación a otras herramientas.
7.1.1.2 C++ Builder
C++Builder es un entorno de desarrollo para la creación de aplicaciones en
lenguaje C++ para Windows.
C++Builder combina la biblioteca Visual Component Library y el IDE
escrito en Delphi con un compilador de C++.
C++Builder contiene herramientas las cuales permiten desarrollar
aplicaciones de forma visual. Se puede arrastrar y soltar componentes sobre la
aplicación, haciendo el desarrollo de la aplicación algo mucho más fácil al
incorporar constructor de interfaz gráfica WYSIWYG en su IDE.
-20-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 3. Entorno del C++ Builder
7.1.1.2.1 Ventajas e inconvenientes
Estas son las ventajas de programar con este entorno:

Usa el concepto de RAD: Rapid Application Develpment,
Desarrollo Rápido de Aplicaciones.

Gran cantidad de componentes incluidos en la distribución básica.

La biblioteca VCL y el código generado usan código nativo lo que le
permite ejecutarse con gran velocidad.

El compilador de C++ es de reciente actualización, incluye soporte
al estándar ISO C++98, C++0x y TR1.

Soporta las reconocidas bibliotecas Boost.
Los inconvenientes son los siguientes:

Uso de DLLs muy complejas.

Manejo de punteros y memoria respecto a ello.

Baja velocidad en la compilación/enlace de los programas creados.
7.1.2 Aplicación Web
Esta opción se basa básicamente en crear una página Web programada en
HTML, en la que se incluyeran componentes dentro de la misma que
permitieran hacer las simulaciones.
Para hacer estas simulaciones dentro de esta opción, se estudiaron varias
alternativas, para conseguir el objetivo final:
-21-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Visual Basic Script.

JavaScript.

ActiveX.

ActionScript 3.0.

Applets de Java.
7.1.2.1 Visual Basic Script
VBScript (abreviatura de Visual Basic Script) es un lenguaje
interpretado por el Windows Scripting Host de Microsoft. El propio nombre
refleja su origen como variación del lenguaje de programación Visual Basic,
anteriormente mencionado. Dentro del sistema operativo de Windows permite
un gran margen de actuación y flexibilidad.
VBScript es interpretado por dentro del sistema operativo de la siguiente
manera:
La librería vbscript.dll, que puede ser invocada por el
motor ASP asp.dll en un entorno Web, por proyecto.exe en un entorno
Windows de interfaz gráfica, por proyecto.exe en un entorno de soy full elite
enforce y por iexplore.exe cuando se trata de scripts a nivel de cliente.
Cuando se emplea en Internet Explorer se procesa el código contenido en
el documento HTML.
Figura 4. Ejemplo de VBScript
-22-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
7.1.2.1.1 Ventajas e inconvenientes
Las ventajas de este tipo de lenguaje son las siguientes:

Fácil uso y manejo de la programación.

Sintaxis clara.

Rapidez en acceso a datos.

Gran portabilidad.
Las desventajas son las siguientes:

Funciona solo en Internet Explorer.

Es un lenguaje desfasado.

Pocas opciones a acceso a datos.

Lenguaje difícil a la hora de interpretarlo.
7.1.2.2 JavaScript
El JavaScript es un lenguaje interpretado, dialecto del estándar
ECMAScript. Se define como orientado a objetos, basado en prototipos.
Se utiliza mayormente en su forma del lado del cliente (client-side), creado
como parte de un navegador Web permitiendo mejoras en la interfaz y páginas
Web dinámicas, en bases de datos locales al navegador... aunque existe una
forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso
en aplicaciones externas a la Web, por ejemplo en documentos PDF,
aplicaciones de escritorio (mayoritariamente widgets) es también significativo.
JavaScript se diseñó siguiendo la forma de programar de C, aunque usa
nombres y convenciones del lenguaje de programación Java. Sin
embargo Java y JavaScript no tienen relación entre ellos y tienen sintaxis y fines
diferentes.
Todos los navegadores actuales reconocen el código JavaScript creado
dento de las páginas Web. Para interactuar con una página Web se provee al
lenguaje JavaScript de una implementación del Document Object
Model (DOM).
-23-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 5. Ejemplo de programación en JavaScript
7.1.2.2.1 Ventajas e inconvenientes
Las ventajas en este tipo de programación son las siguientes:

Lenguaje de programación bastante sencillo.

Mucha información en internet.

Lenguaje muy liviano, lo que permite crear páginas Webs con poco
consumo de recursos y manteniendo un tiempo de descarga muy
rápido.
Los inconvenientes de este lenguaje son:

Al poderse desactivar el Javasript de los navegadores, se puede
perder la funcionalidad.

Recursos poco extensos.
7.1.2.3 ActiveX
ActiveX es un entorno de programación para definir algoritmos de
software reusables de forma independiente del lenguaje de programación.
Las aplicaciones de software pueden ser creadas por uno o más de estos
componentes para así alcanzar el resultado final.
Los controles ActiveX son pequeños bloques empleados para la creación
de algoritmos más complejos, usados en navegadores Web. Sirven entre otras
cosas para la visualización de animaciones.
-24-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
7.1.2.3.1 Ventajas e inconvenientes
Estas son las ventajas de este tipo de programación:

Fácil de utilizar.

Sintaxis clara.
Esta es su principal desventaja:

Las aplicaciones creadas solo se pueden utilizar en Internet
Explorer.
7.1.2.4 ActionScript 3.0
ActionScript es el lenguaje de programación de la plataforma Adobe
Flash.
La programación con ActionScript permite una gran eficiencia en los
algoritmos de Flash para crear animaciones de todo tipo, desde simples a
complejas, ricas en datos e interfaces interactivas.
La versión más utilizada en la actualidad es ActionScript 3.0, la cual
permite la programación orientada a objetos al ajustarse muy bien al estándar
ECMA-262 y es la que utiliza en las últimas versiones de Adobe Flash y Flex y
en anteriores versiones de Flex.
ActionScript 3.0 otorga un modelo de programación robusto. Algunas de
las principales características de ActionScript 3.0 son:

Una nueva máquina virtual ActionScript, denominada AVM2, que
proporciona importantes mejoras de rendimiento.

Una base de código de compilador más moderna, que se ajusta
mejor al estándar ECMAScript (ECMA 262) y que realiza mejores
optimizaciones que las versiones anteriores del compilador.

Una interfaz de programación de aplicaciones (API) ampliada y
mejorada, con un control de bajo nivel de los objetos y un auténtico
modelo orientado a objetos.
-25-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 6. Ejemplo de programación en ActionScript 3.0
7.1.2.4.1 Ventajas e inconvenientes
Las ventajas de este tipo de programación son:

Facilita la creación de aplicaciones muy complejas.

Es un lenguaje muy rápido de ejecutar.
Las desventajas son:

Para que el navegador visualice las Páginas en Flash, debe ser un
navegador actualizado y tener todos los plugins actualizados.

Muchas veces los Textos o Imágenes Dentro de flash se ven de una
manera en unos navegadores y distintos en otros, por lo cual la
página pierde su contenido a nivel visual y estético.

Las páginas cuando son demasiado grandes se usan cargadores.
7.1.2.5 Applets de Java
Un applet Java es un contenedor desarrollado en el lenguaje de
programación Java. Dichos applets de Java pueden ejecutarse en un navegador
Web utilizando para ello la Java Virtual Machine (JVM) o el AppletViewer
de Sun.
Cuando un navegador Web carga una página Web que contiene un
applet, lo que hace es descargarse en el navegador Web y ejecutarse. Esto
permite crear aplicaciones que cualquier usuario puede usar con tan solo entrar
en la página Web.
-26-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 7. Ejemplo de un applet de Java
7.1.2.5.1 Ventajas e inconvenientes
Las ventajas de este tipo de programación:

Son multiplataforma (funciona en cualquier sistema operativo en el
que exista una Java Virtual Machine).

El mismo applet puede ejecutarse en cualquier versión de Java, y no
sólo la última.

Es compatible en la casi totalidad de navegadores Web.

Se puede almacenar en la memoria caché del ordenador lo que
permite que cuando se vuelva a ejecutar la aplicación está funcione
rápidamente. Aunque puede quedar atascada en la caché,
provocando que cuando hay nuevas versiones halla fallos.

Tiene una gran velocidad de ejecución.
-27-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Las desventajas de este tipo de programas son las siguientes:

Requiere el plugin de Java, que no está disponible en todos los
navegadores Web por defecto.

La primera ejecución de un applet puede ser lenta, ya que se tiene
que ejecutar la JVM.

Si no está firmado como aplicación confiable, tiene acceso limitado
al ordenador (como por ejemplo al disco duro).

Un applet podría exigir una versión específica del JRE.
7.1.3 Conclusiones
Después del estudio anteriormente hecho con las dos opciones
principalmente comentadas, versión ejecutable o versión Web, se opto por la
versión Web. La principal razón para elegir versión Web es que mientras las
opciones estudiadas para la realización de la herramienta solo se podían
ejecutar en el sistema operativo de Windows, las opciones Web permitían más
opciones. Aunque también se tuvieron en cuenta ventajas de la opción Web
como la posibilidad de tener acceso a la aplicación desde cualquier ordenador
con acceso a internet.
Dentro de las opciones para crear la aplicación interactiva se eligió los
applets de Java. La principal característica por la se eligió la applet de Java fue
porque es una manera de programar que permite su ejecución en cualquier
sistema operativo con un navegador Web actual no como ActiveX o Visual
Basic Script. Otra de las razones es que se pueden ejecutar las aplicaciones
aunque la versión de Java del sistema que se esté usando no esté actualizada, no
como con ActionScript. Y la última razón es la potencia de Java contra
JavaScript.
Además de que gracias al programa Easy Java Simulations la
programación de los applets de Java son bastante fáciles.
7.2 BASE DE DATOS
En este apartado se estudiará las posibles bases de datos a usar para
nuestro proyecto. En esta base de datos se guardan los usuarios, para que
puedan loguearse, y las preguntas de la parte de la última parte de este
proyecto que es la parte de evaluación.
-28-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Para entender bien lo que queremos conseguir con la base de datos lo
primero es saber que es una base de datos. Una base de datos relacional archiva
datos en tablas separadas en vez de colocar todos los datos en un gran archivo.
Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones
definidas que hacen posible combinar datos de diferentes tablas.
Las bases de datos consideradas para la realización del proyecto son las
siguientes:

MySQL.

SQL Server.

Oracle Database.
7.2.1 MySQL
MySQL es un sistema de gestión de bases de datos relacional, multihilo y
multiusuario. También es un sistema de administración relacional de bases de
datos.
MySQL es un software de fuente abierta. Fuente abierta quiere decir que
cualquier persona puede usarlo y modificarlo. Es decir cualquier persona puede
descargarse el código fuente de MySQL y usarlo sin pagar. Cualquier
interesado puede estudiar el código fuente y modificarlo a su antojo.
Figura 8. Logo de MySQL
7.2.1.1 Ventajas e inconvenientes
Las ventajas de este tipo de bases de datos son las siguientes:

El servidor de la base de datos es muy rápido, fiable y rápido de
usar.
-29-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Funciona en todos los sistemas operativos.

Hay una gran cantidad de software de contribuidores. Lo que
proporciona una gran cantidad de herramientas para la
administración del servidor MySQL, tanto en modo consola como
en modo gráfico.

Tiene un buen control de acceso de usuarios y de datos.

Gran portabilidad entre distintas plataformas.

Se permite trabajar con bases de datos duplicadas, como maestros y
esclavos.

Es gratuita.
Las desventajas son:

Las bases de datos no son intuitivas como otros tipos (por ejemplo
Access).

Gran parte de las utilidades de MySQL no están documentadas.
7.2.2 SQL Server
SQL Server es un modo para la gestión de bases de datos creado por
Microsoft basado en el modelo relacional.
Las características de este modo de gestión son:

Soporte de transacciones.

Soporta procedimientos almacenados.

Incluye un entorno gráfico de gestión, que permite el uso de
comandos DDL y DML.

Permite funcionar en modo cliente-servidor, donde la información
y datos se guardan en el servidor y los terminales o clientes de
la red sólo acceden a la información.

Además permite la gestión de información de otras bases de datos.
-30-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 9. Ejemplo de entorno de programación de SQL Server
7.2.2.1 Ventajas e inconvenientes
Las ventajas de SQL Server son las siguientes:

Es un Sistema de Gestión de Bases de Datos Relacionales (SGBDR).

Ofrece una potente forma de unir SQL e Internet.

Permite agregar, en local, otros servidores SQL Server.

Tiene una gran seguridad. Permite administrar todos los servicios
(lectura, escritura y ejecución).
Desventajas:

El programa de Microsoft SQL Server consume muchos recursos.

Solo se puede usar en el sistema operativo de Windows.

Tiene muchas restricciones.

Hay que pagar la licencia para poder usarlo.
7.2.3 Oracle Database
Oracle es un sistema de gestión de base de datos objeto-relacional.
Oracle está considerado como uno de los sistemas de bases de datos más
completos, destacando:
-31-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Soporte de transacciones.

Estabilidad.

Escalabilidad.

Soporte multiplataforma.
Gracias a lo anteriormente comentado, Oracle es la gestión de base de
datos más utilizado por las empresas.
Figura 10. Base de datos con Oracle
7.2.3.1 Ventajas e inconvenientes
Las ventajas de usar Oracle Database son las siguientes:

Es el motor de base de datos relacional más utilizado a nivel
mundial.

Puede ejecutarse en todos los sistema operativos.

Permite hacer particiones para mejorar la eficiencia.

Es la base de datos con más orientación hacia Internet.

Tiene un buen soporte.
-32-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Desventajas:

El mayor inconveniente de este tipo de base de datos es el precio,
incluso las licencias personales son muy caras.

Dificultad en el aprendizaje en todo aquello que no sea la
instalación y administración.
7.2.4 Conclusiones
Después del estudio realizado sobre los distintos tipos de gestión de bases
de datos se decidió a usar MySQL.
La principal razón fue que este tipo de gestión es gratuita.
La gestión de Oracle se descarto directamente por el precio, era demasiado
cara.
Una vez descartada esta opción quedo elegir entre MySQL y SQL Server.
La potencia de una con respecto a otra no es significativa por lo que en ese
sentido no se descarta ninguna. Lo que si se tuvo en cuenta es que SQL Server
solo se puede usar con Windows mientras MySQL se puede usar en distintos
sistemas operativos. Además que MySQL al ser una herramienta abierta se
pueden encontrar muchas ayudas por Internet para realizar la herramienta
necesaria en este proyecto.
7.3 EVALUACIÓN
Por último se realizará un estudio con las posibles soluciones para
conectarnos a la base de datos y realizar las operaciones necesarias con la
misma. Ya sea leer o escribir en ella, y en el caso de lectura realizar lo necesario
con la información recogida.
El objetivo era tener una aplicación en la que el profesor pudiera subir una
serie de preguntas para que el alumno pudiera responder. Las preguntas serán
de tres tipos: verdadero y falso, respuesta numérica y por último una pregunta
con tres respuestas de las cuales una es verdadera. El profesor podrá crear
preguntas, modificarlas, borrarlas y ver los resultados de los alumnos. Los
alumnos podrán responder a las preguntas.
Para hacer lo anteriormente descrito se pensó en crear una aplicación Web
que se comunicase con una base de datos (la que ya hemos elegido antes,
MySQL).
-33-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Para la creación de la página Web se pensó en hacer una combinación de
código HTML y otro lenguaje para la conexión con la base de datos y para el
tratamiento de la información. Para este lenguaje se pensaron las siguientes
opciones:

PHP.

JSP.

ASP.NET.
7.3.1 PHP
PHP es una sintaxis de programación de uso general de script del lado del
servidor originalmente diseñado para el desarrollo Web. El código es
reconocido por un servidor Web con un módulo capaz de procesar PHP que
genera la página Web final. PHP es una sintaxis que se puede usar en la
mayoría de los servidores Web.
Figura 11. Ejemplo de programación en PHP
7.3.1.1 Ventajas e inconvenientes
Estas son las ventajas de programar en PHP:

Fácil de aprender.

Es un lenguaje multiplataforma, Linux y Windows entre otros.
-34-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Capacidad de uso de módulos para aumentar sus posibilidades.

Descripción y ejemplos de las funciones en la página oficial.

Es libre.
Desventajas:

Se necesita instalar un servidor Web

La claridad de interpretación se ve afectada por la mezcla de código
HTML y PHP.

La programación hacia objetos es deficiente.

Todo el trabajo lo realiza el servidor y esto puede llevar a la
ineficiencia.
7.3.2 JSP
Con JSP se pueden crear aplicaciones Web para ejecutar en servidores
Web. Este lenguaje se puede ejecutar en varias plataformas. Las páginas creadas
con JSP están compuestas por una mezcla de código HTML y Java.
Las páginas creadas con esta sintaxis son muy parecidas a como se
programa en PHP. Lo que se hace es crear archivos .jsp que incluyen el código
HTML y las sentencias Java a ejecutar en el servidor. Para que estos archivos
sean funcionales, el motor de JSP hace una traducción en un servlet.
Figura 12. Ejemplo de programación en JSP
-35-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
7.3.2.1 Ventajas e inconvenientes
Estas son las ventajas de este tipo de sintaxis:

La ventaja más importante de JSP frente a otros lenguajes es que
permite usar clases Java (.class) lo que te permite separar en
niveles las aplicaciones Web.

Es un lenguaje libre, se puede desarrollar sin pagar un gasto
adicional.

Puede funcionar en cualquier plataforma.

Las páginas JSP son eficientes, se cargan en memoria dentro del
contenedor al recibirse la primera solicitud.

Velocidad y escalabilidad.
Las desventajas son:

Tiempos de desarrollo un poco mayores que otras tecnologías.

Curva de aprendizaje un poco más difícil que otras sintaxis.
7.3.3 ASP.NET
ASP.NET es un framework para aplicaciones Web desarrollado y
comercializado por Microsoft. Es utilizado para crear páginas Web dinámicas y
aplicaciones Web.
Esta tecnología, que lleva el nombre de .NET, tiene un lenguaje nuevo
denominado C#, una versión nueva de Visual Basic, cuyo nombre es Visual
Basic.Net y otra serie de tecnologías, entre las que se encuentra: ASP.NET, que
viene a reemplazar a las Active Server Pages (ASP), logrando el desarrollo de
aplicaciones Web mucho más dinámicas, con un código bastante claro y limpio,
y además reusable, multiplataforma y definitivamente más simple, ya que el
entorno ASP.NET te permite el desarrollo automático de muchas de las tareas
más comunes para un diseñador Web, cómo los formularios o la validación de
los datos.
-36-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 13. Ejemplo de ASP.NET
7.3.3.1 Ventajas e inconvenientes
Las ventajas de ASP.NET son las siguientes:

Se encarga de detectar el navegador usado por el cliente al realizar
una petición al servidor, para elegir el HTML que soporta.

Es liviano.

Fácil de programar.

Facilidad de conexión con la base de datos.
Las desventajas:

Para funcionar tiene que usarse en un ordenador con Windows y
un servidor Web.

Es un código cerrado y hacen falta licencias.
7.3.4 Conclusiones
Después del estudio realizado sobre estas tres tecnologías, la primera que
se descarto fue ASP.NET. La principal razón fue que solo se puede usar con
ordenadores cuyo sistema operativo es Windows, y durante las otras tres
opciones se tuvo en cuenta el tema de poder usarse con varias plataformas. Otra
razón era el tener que pagar las licencias.
-37-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
De entre las dos opciones restantes que quedaron para elegir, PHP y JSP,
se eligió para hacer el proyecto la tecnología JSP. La razón de elección fue que
JSP es un lenguaje más seguro y con más funcionalidad. Además de que la
sintaxis es mucho más clara lo hace mucho más fácil para si se necesitasen
modificaciones posteriores.
-38-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8 RESULTADOS FINALES
8.1 TEORÍA
Los ultrasonidos son ondas acústicas que tienen una frecuencia superior a
la del espectro auditivo del ser humano, es decir no son perceptibles (como ya
se comento anteriormente). Lo que provoca que tenga conceptos un poco
difíciles de entender, por eso es tan importante para realización de este
proyecto la elección de la teoría a desarrollar.
Después del análisis de la bibliografía de referencia de ultrasonidos,
indicados en el apartado de bibliografía, se seleccionó el siguiente índice de
contenidos agrupados en temas a desarrollar en la aplicación:

Introducción a los ultrasonidos: relación frecuencia-longitud de
onda y movimiento oscilatorio.

Tipos de ondas U.S.

Velocidad de transmisión.

Reflexión y refracción de las ondas. Transmisión.

Efecto Doppler.

Atenuación de las ondas ultrasónicas.

Generación y detección de los ultrasonidos.

Aplicaciones.
En la siguiente imagen se puede observar el índice implementado en la
aplicación para la navegación por los distintos temas comentados.
-39-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 14. Índice de la herramienta
8.1.1 Introducción a los ultrasonidos: relación frecuencia-longitud de
onda y movimiento oscilatorio
El objetivo en este tema fue que el alumno después de estudiarlo,
alcanzará a entender los siguientes puntos:

Entender la definición de ultrasonidos.

Conocer qué es la frecuencia y qué la longitud de onda.

Estudiar la relación existente entre longitud de onda y frecuencia.

Conocer los movimientos de onda, velocidad y balance de energía.
Figura 15. Índice del tema 1
-40-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Para alcanzar estos objetivos se desarrollo el siguiente índice y esta teoría:
Introducción
Movimiento de onda
Frecuencia y longitud de onda
Ecuaciones
Introducción
Definición de vibración
Vibración: es el movimiento de vaivén que ejercen las partículas de un cuerpo
debido a una excitación.
Existe una relación entre el estudio de las vibraciones mecánicas del sonido, si un
cuerpo sonoro vibra el sonido escuchado está estrechamente relacionado con la
vibración mecánica, por ejemplo una cuerda de guitarra vibra produciendo el tono
correspondiente al número de ciclos por segundo de vibración.
Para que un cuerpo o sistema pueda vibrar sus partículas deben poseer
características potenciales y cinéticas. Se habla de cuerpo y sistema si un cuerpo no
tiene la capacidad de vibrar se puede unir a otro y formar un sistema que vibre; por
ejemplo, una masa y resorte donde la masa posee características energéticas
cinéticas, y el resorte, características energéticas potenciales.
Otro ejemplo de un sistema vibratorio es una masa y una cuerda empotrada
de un extremo donde la masa nuevamente forma la parte cinética y el cambio de
posición la parte potencial.
Figura 16. Partículas vibrando
-41-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Definición de ultrasonido
Se denominan ultrasonidos a aquellas vibraciones mecánicas de un medio
material cuya frecuencia supera el límite audible por el oído humano medio.
La frecuencia audible por el oído humano varía de una persona a otra, cambia
con la edad (se pierde agudeza auditiva). El ser humano medio percibe vibraciones
(sonidos) comprendidas entre los Hz y los 18kHz. Se adopta el límite superior de 20
kHz, para considerar a una onda como ultrasonido.
Figura 17. Ejemplos de frecuencia
Movimientos de onda
En esta sección estudiaremos la propagación de las ondas en un medio
isotrópico (sus propiedades físicas no depende de la dirección); el estudio será válido
tanto para ultrasonidos como para el sonido audible, ya que la frecuencia no está
restringida. Dado que la frecuencia mínima que se puede clasificar como ultrasónica
no se puede fijar con gran precisión, ya que no ocurre un cambio notable en las
propiedades de la onda.
Figura 18. Oscilación de partículas en medio isotrópico
En la figura se puede ver un generador de tensión alterna senoidal que excita a
un transductor (por ejemplo de tipo piezoeléctrico, el cual produce vibraciones
mecánicas de una frecuencia de valor f). Las partículas que se encuentran en
contacto con este transductor son las primeras que reciben la vibración y por tanto,
las primeras que empiezan a abandonar su posición de equilibrio oscilando en torno a
esta al ritmo que impone la vibración, estos es a la frecuencia f (como se puede
-42-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
observar en el applet de la derecha). La oscilación de estas partículas contagiará a las
partículas vecinas y estas a su vez a las siguientes próximas en la dirección x esto
provocara que la vibración se propague en la dirección x de este medio a una
velocidad de c m/s.
Las partículas abandonan su posición de equilibrio de acuerdo con la expresión
que se muestra a continuación. A la posición de estas partículas con respecto al
equilibrio se llama elongación u(t).
Figura 19. Fórmula de la elongación
Lo que haremos es, a través de la expresión u(t) anterior, obtener la expresión
que nos da la expresión de cualquier partícula situada a una distancia L del origen de
propagación en función de el tiempo desde que comenzó la vibración. Se trata por
tanto de introducir un desplazamiento tx en la expresión. Teniendo en cuenta que tx
es el tiempo que tardará la vibración en recorrer la distancia L, la expresión queda
por tanto en función de dos variables t y x.
Desarrollando:
En la expresión obtenida aparece un factor T·c que representa a la que
denominaremos longitud de onda. Tiene unidades de longitud y de la que se deduce
que si x equivale a T·c o a un múltiplo entero de esta cantidad la expresión obtenida
aparece con un periodo de repetición que indica que esas partículas estarán vibrando
en fase. A las partículas que vibran en fase se les llama frentes de onda.
-43-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
T·c se llama longitud de onda y se denota como landa.
La velocidad instantánea de la partícula se encuentra diferenciando la
ecuación de movimiento; la energía E de la partícula será, en general, parcialmente
potencial y parcialmente cinética.
La longitud de onda en un haz de ultrasonido es la distancia existente entre dos
planos inmediatos de partículas del medio que estén en el mismo estado de
elongación. Es igual, como en cualquier otro tipo de onda, a la velocidad de
propagación de la onda dividida por la frecuencia.
Figura 20. Representación de una longitud de onda
Frecuencia y longitud de onda
Ahora cabe comentar la relación que mantienen entre estas dos características
de las ondas ultrasónicas. Dicha relación es:
Figura 21. Relación entre longitud de onda, velocidad de transmisión y frecuencia
-44-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Ecuaciones
Figura 22. Ecuaciones de desplazamiento de una partícula
Figura 23. Velocidad de las partículas y balances de energía
8.1.2 Tipos de onda U.S.
Al igual que el tema anterior, este tiene marcado los objetivos que el
alumno debe conocer al finalizar de estudiarlo.
Dichos objetivos son los siguientes:

Conocer los tipos de onda.
-45-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Estudiar los dos tipos de clasificaciones más comunes, con sus
respectivos tipos dentro de cada uno.
Figura 24. Índice del tema 2
Esta es la teoría y el índice para alcanzar los objetivos marcados para este
tema:
Índice:
Tipos de ondas y su clasificación
Ondas de choque
Tipos de onda
La energía ultrasónica se propaga por medio de vibraciones de las partículas
del material. La energía es transmitida de átomo a átomo por pequeños
desplazamientos. La dirección en la que vibran las partículas (átomos) con respecto a
la dirección de la propagación del haz ultrasónico, depende de la forma de vibración.
Según desplazamiento por el medio
Existen dos tipos de ondas sonoras dependiendo de cómo se desplacen las
partículas por el medio:

Ondas Longitudinales: La forma de onda longitudinal o compresional
está caracterizada por el movimiento de las partículas paralelo a la
dirección de propagación del haz ultrasónico, como se observa en el
applet siguiente. Esta forma de onda se propaga en sólidos, líquido y
gases.
-46-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Ondas transversales: La forma de onda de corte o transversal está
caracterizada por el movimiento perpendicular de las partículas con
respecto a la dirección de propagación del haz ultrasónico como se
observa en la figura siguiente. Las ondas de corte viajan a
aproximadamente la mitad de la velocidad a la que viajan las ondas
longitudinales. Las ondas transversales solo se transmiten en sólidos.
Las ondas superficiales o de Rayleigh son un tipo especial de ondas
transversales en las que el movimiento de las partículas está confinado a
una profundidad pequeña dentro del material. Las ondas superficiales
son capaces de viajar a través de extremos curvos. Las ondas
superficiales sólo se transmiten en sólidos. El movimiento de las partículas
es elíptico. La velocidad de propagación de las ondas superficiales es
aproximadamente el 90% de la velocidad de las ondas transversales en
el mismo medio.
Según como sean los frentes de onda
Las ondas sonoras se desplazan en todas las direcciones constituyendo "frentes
de onda" que corresponderían con las superficies "equipotenciales" de las ondas.
Dependiendo como sean estos podremos clasificar a las ondas sonoras como:

Ondas Planas: Las superficies que contienen los puntos que tienen los
mismos valores de amplitud son planos perpendiculares a la dirección de
propagación. Se producen cuando la propagación de la onda solo se
realiza en una dirección.

Ondas Esféricas: Las superficies equipotenciales son esferas concéntricas
que se desplazan incrementado su radio y se producen cuando el sonido
se propaga en todas las direcciones con igual intensidad. Por ser cada
vez mayor la superficie que contiene la excitación, se atenúan con el
cuadrado de la distancia, convirtiéndose cuando el radio es
suficientemente grande a efectos prácticos, en ondas planas.

Estas dos mencionadas son las más importantes dentro de esta
clasificación pero hay otras más, como son:

Ondas cilíndricas: Cuando la fuente de sonido esta constituida por una
recta, los frentes de onda se desplazan alejándose de ella formando
superficies de cilindro cuyo radio se va incrementando, por lo que la
superficie que contiene la excitación va en aumento y sufren una
atenuación que es inversamente proporcional a la distancia, lo mismo
que en las ondas esféricas que, cuando se encuentran muy lejos de la
fuente, se comportan como ondas planas.
-47-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Ondas progresivas: Cuando los frentes de onda viajan libremente
transfiriendo energía.

Ondas estacionarias: Cuando una onda se encuentra limitada en un
recinto, de forma que no existe transferencia neta de energía en ninguna
dirección.
Ondas de choque
Las ondas de choque son ondas esféricas que surgen cuando la fuente emisora
se mueve a una velocidad mayor que la de propagación de las ondas en el medio.
Entonces se forma una especie de “cuña”.
Las ondas de choque son importantes ya que son utilizadas para el
tratamiento desintegrador de cálculos renales, ureterales vesicales pancreáticos y
salivares, recientemente estas ondas también se utilizan para el tratamiento de
ciertos procesos musculoesqueléticos que cursan con inflamación, calcificación de
partes blandas, afectación condral etc.
8.1.3 Velocidad de transmisión
En este tema lo que se pretende es que el alumno llegue a entender lo
siguiente:

La velocidad de propagación de las ondas según el medio.
Figura 25. Índice del tema 3
El índice y la teoría de este tema son los siguientes:
Velocidad de propagación
Introducción y en sólidos
-48-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
En líquidos
En gases
Dependencia de la velocidad-temperatura
Velocidad de propagación. Sólidos
La velocidad de propagación de una onda ultrasónica depende de las
características del medio en el que se transmite. A veces esas carecteristicas son
diferentes debido a la presión, temperatura, humedad, entre otros.
En general, la velocidad del sonido es mayor en los sólidos que en los líquidos y
en los líquidos mayor que en los gases.
Velocidad de propagación en los sólidos
La velocidad de propagación en un medio solido viene dada por la siguiente
fórmula:
Figura 26. Velocidad de propagación en sólidos
El módulo de Young o módulo de elasticidad longitudinal es un parámetro que
caracteriza el comportamiento de un material elástico.
Para un material elástico lineal e isótropo, el módulo de Young tiene el mismo
valor para una tracción que para una compresión, siendo una constante
independiente del esfuerzo siempre que no exceda de un valor máximo denominado
límite elástico.
En la imagen de la derecha se puede ver un ensayo de tracción-compresión
para determinar el límite elástico.
-49-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 27. Módulo de Young
La velocidad de propagación en los sólidos se puede considerar constante bajo
cualquier tipo de condición dada, es decir que aunque varié la temperatura, presión,
humedad, etc, la velocidad se mantiene. Sin embargo sí que varía según el tipo de
onda que usemos (longitudinal o transversales).
Velocidad de propagación. Líquidos
Velocidad de propagación en los líquidos
En líquidos la velocidad viene dada al igual que el anterior punto por una
fórmula:
Figura 28. Velocidad de propagación en líquidos
-50-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Por último comentar en este apartado, que la velocidad de propagación en
soluciones depende de la concentración de las sustancias.
Velocidad de propagación. Gases
Velocidad de propagación en los gases
Se puede expresar con la fórmula dicha en el apartado de los sólidos:
Figura 29. Velocidad de propagación en gases
Dependencia Velocidad-Temperatura
Velocidad de propagación en los sólidos
La dependencia de la velocidad de propagación en los sólidos con respecto a la
temperatura es mínima. Por lo que se puede despreciar y considerarla constante ante
cualquier tipo de temperatura.
Velocidad de propagación en los líquidos
En este tipo de medios hay cambios de la velocidad de propagación con
respecto a la temperatura.
Estas dependencias se obtienen con datos experimentales de laboratorio. Con
los datos que sacamos en el laboratorio se consigue modular ecuaciones para obtener
la dependencia matemáticamente.
Dos ejemplos de estas fórmulas son las siguientes:
-51-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Agua destilada:
Gráfico 1. Gráfica de dependencia de la velocidad de propagación, en el agua, con respecto a la
temperatura

Agua de mar:
Velocidad de propagación en los gases
Esta es la dependencia más importante, ya que la velocidad de propagación
varía más significativamente ante los cambios de temperatura. En la siguiente
imagen se puede ver la dependencia de los gases perfectos:
-52-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 30. Dependencia de la velocidad con respecto a la temperatura en gases
8.1.4 Reflexión y refracción de las ondas. Transmisión
En este tema lo que se pretende es que el alumno llegue a entender los
siguientes puntos:

Conocer las leyes de Snell.

Entender los términos impedancia acústica e intensidad acústica,
así como su relación con la transmisión.
Figura 31. Índice del tema 4
-53-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
El índice y la teoría de este tema son los siguientes:
Introducción y leyes de Snell
Trayectorias
Cantidad transmitida y reflejada
Ángulos destacados
Acoplamiento de impedancias entre medios
Introducción y leyes de Snell
Cuando una vibración acústica o ultrasónica que se está propagando mediante
ondas planas longitudinales por un medio 1, a una velocidad de propagación c1,
incide sobre el límite de unión con un medio 2, una porción de la energía de la
vibración consigue introducirse en el medio 2 y otra porción se refleja y no abandona
el medio 1.
Podemos distinguir dos situaciones:

Incidencia ortogonal.
Figura 32. Incidencia ortogonal

Incidencia oblicua.
Figura 33. Incidencia oblicua
-54-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Ecuaciones de las leyes de Snell:
Figura 34. Leyes de Snell
Trayectorias
Cogiendo el caso de incidencia oblicua y las leyes de Snell llegamos a dos casos
extremos del comportamiento de la transmisión.
Figura 35. Incidencia oblicua
El estudio de estos casos son las siguientes situaciones:

Caso 1: c1>>c2. En esta situación el ángulo de transmisión será
considerablemente pequeño por mucho que agrandemos el ángulo de
incidencia. En este tipo de incidencias siempre hay transmisión del medio
1 al medio 2.

Caso 2: c2>>c1. Sin embargo en esta situación el ángulo de transmisión
será bastante grande, aunque el ángulo de incidencia sea pequeño. En
este tipo de situaciones se puede conseguir un ángulo de incidencia en el
-55-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
que el de transmisión forme 90 grados con la normal, este ángulo se
llama ángulo crítico.
Justificación matemática de las dos situaciones explicadas:

c1>>c2

c2>>c1
Como se ha comentado se puede conseguir un ángulo de transmisión cuyos
grados son 90 con respecto a la normal, a partir de esta situación no se produce
transmisión y por tanto no se cumple la segunda ley de Snell.
Cantidad transmitida y reflejada
Otra consideración a tener en cuenta en la reflexión y transmisión de ondas es
conocer la cantidad de onda que es reflejada y la cantidad que es transmitida. Para
ello es muy importante saber lo que es la impedancia acústica de un medio y la
intensidad acústica.
Definición de impedancia acústica: es la resistencia que opone un medio a
las ondas que se propagan sobre este y por lo tanto es equivalente a la impedancia
eléctrica, es decir una forma de disipación de energía de las ondas que se desplazan
en un medio.
Definición de intensidad acústica: es una magnitud que da idea de la
cantidad de energía que está fluyendo por el medio como consecuencia de la
propagación de la onda.
-56-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 36. Cantidades transmitidas y reflejadas
Figura 37. Representación de cantidades transmitidas y reflejadas
Se pueden dar tres casos importantes en este apartado:

Z1 más o menos igual a Z2: apoyándonos en las fórmulas de cantidad
reflejada y transmitida se puede decir que en esta situación se transmite
casi toda la energía que lleva la señal incidente.

Z1>>Z2: si nos ayudamos de las fórmulas llegamos a la conclusión de que
en este caso, la energía se refleja casi toda.

Z2>>Z1: en este caso, aunque es el contrario al anterior, la energía se
refleja casi toda.
-57-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Ángulos destacados
Ángulo crítico
Una situación particular se puede encontrar operando con las expresiones
anteriores, que consiste en determinar el ángulo de incidencia límite, con el que la
parte transmitida lo hace a 90 grados de la normal, esto es, se transmite por el límite
frontera entre los dos medios y por tanto estrictamente, la onda no se propagará por
el segundo medio. A este ángulo de incidencia se le denomina ángulo crítico.
Estudio para que casos existe el ángulo crítico:
Por lo tanto para que exista: c2≥c1
Figura 38. Ángulo crítico
En la imagen se puede observar el ángulo crítico y que es lo que pasa al incidir
ondas con ángulos mayores o menores de dicho ángulo.
Podemos imaginar un cono invertido cuya generatriz forma el ángulo crítico
con el eje. Toda vibración que se propagase con trayectorias dentro del cono,
producirán ondas reflejadas y también transmitidas. Aquellas vibraciones que incidan
con ángulos superiores al crítico, sólo producirán reflexión, no transmisión y por tanto
no se cumplirá la 2ª ley de Snell.
-58-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Ángulo de intromisión
Se trata de un ángulo particular en el cual la totalidad de la vibración se
transmite al medio 2 y por tanto nada se refleja.
La demostración matemática de este ángulo se puede hacer por dos caminos,
que son los siguientes:

Igualando a cero la formula de la cantidad reflejada:

O bien igualando a uno la cantidad transmitida:
Con estas dos formas lo único que hay que hacer es despejar el ángulo de
incidencia, ayudándote de ecuaciones trigonométricas. Llegaremos a la siguiente
expresión:
-59-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 39. Ángulos destacados
Acoplamiento de impedancias entre medios
Existen ocasiones en que se desea transmitir una vibración de un medio 1 a un
medio 2 de la manera más eficiente posible, esto es que la cantidad transmitida sea
más o menos 1 y por tanto la parte reflejada 0. Puesto que dependen la porción
transmitida y reflejada de las impedancias de los dos medios, poco podríamos hacer
para conseguirlo directamente, pero podemos intercalar entre ambos un medio que
sirva de acoplamiento entre las impedancias, de manera que se consiga nuestro
propósito. El medio de acoplamiento deberá tener una impedancia apropiada, que
se calcula como la media geométrica de las impedancias de los medios a acoplar.
Además otro factor práctico es el espesor de este medio. Se consiguen buenos
acoplamientos cuando el espesor e es inferior a 1/4 de la longitud de onda del medio
de acoplamiento.
Figura 40. Ecuaciones de acoplamiento
-60-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.1.5 Efecto Doppler
En este tema lo que se pretende es que el alumno llegue a entender lo
siguiente:

Conocer el efecto Doppler.
Figura 41. Índice del tema 5
El índice y la teoría de este tema son los siguientes:
Efecto Doppler
Fórmulas
Ejemplos visuales
Efecto Doppler
El efecto Doppler consiste en una variación de la frecuencia y la longitud de
onda recibidas respecto de la frecuencia y la longitud de onda emitidas, que es
causada por el movimiento relativo entre el foco emisor de las ondas y el receptor.
Fue propuesto por Cristian Doppler (1803-1853) en 1842. Fizeau descubrió
independientemente el mismo fenómeno en 1848 (en Francia se conoce como efecto
Doppler-Fizeau).
Mientras el foco-emisor permanece en reposo, todos los frentes de onda son
concéntricos alrededor del foco, tienen la misma separación en todas las direcciones y
en cualquier lugar, la longitud de onda y la frecuencia recibidas es igual a las
emitidas. No se produce efecto Doppler. Sin embargo, cuando el foco se desplaza va
emitiendo sucesivos frentes de onda desde diferentes posiciones. Como la velocidad de
propagación de la onda es independiente de ese movimiento del foco, los frentes de
onda dejan de ser concéntricos: se aprietan en el sentido hacia donde avanza el foco y
se separan en el sentido desde donde se aleja dicho foco. Como consecuencia de esto,
-61-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
la longitud de onda recibida es mayor en las zonas que ven alejarse al foco emisor y
es menor en las zonas que lo ven acercarse. Lo contrario le ocurre a la frecuencia.
Para entender esto hay que recordar:
Figura 42. Ejemplo visual del efecto Doppler
Ejemplo gráfico:
Un micrófono inmóvil registra las sirenas de los policías en movimiento en
diversos tonos dependiendo de su dirección relativa.
En la gráfica bajo el micrófono se puede ver que la frecuencia del coche verde
(que se está alejando) es menor que la del otro que se acerca.
Distintos casos donde se da el efecto Doppler y su ecuación:

Emisor dinámico y receptor estático.
En esta situación se pueden dar dos casos, el emisor se acerca o se aleja.
-62-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Emisor estático y receptor dinámico.
Al igual que en el anterior puede darse dos casos, el receptor se aleja o se
acerca.

Emisor y receptor estático.
En este caso el emisor y el receptor están en estático, lo que se mueve es
un obstáculo que es lo que provoca ese cambio aparente de frecuencia.
El obstáculo se puede acercar o alejar.
-63-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Resumen de ecuaciones
Figura 43. Ecuaciones del efecto Doppler
-64-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.1.6 Atenuación del ultrasonido
En este tema lo que se pretende es que el alumno llegue a entender los
siguientes objetivos:

Conocer las causas de atenuación de los ultrasonidos.

Ser capaz de calcular los efectos de la absorción.
Figura 44. Índice del tema 6
El índice y la teoría de este tema son los siguientes:
Absorción
Dispersión o Scattering
Difracción
Introducción y absorción
Cuando intentamos comunicarnos a través de sonido, por ejemplo utilizando
nuestra voz, observamos cómo el sonido se atenúa conforme se propaga a través del
aire. Esto nos obliga a elevar la intensidad de la vibración para que el oyente distante
sea capaz de entendernos.
Existen 3 casos principales por los que una vibración se atenua, debido a 3
fenómenos que son:

Atenuación por absorción.

Atenuación por dispersión (Scattering).

Difracción.
-65-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Absorción
Consideraciones teóricas. Ha habido gran número de investigaciones sobre la
cantidad de absorción de varios sólidos, líquidos y gases. Los resultados no han sido
uniformes y, en la mayoría de los casos, los resultados teóricos y los prácticos no han
coincidido.
La mayor parte de las últimas investigaciones realizadas en el campo de la
absorción dependen de la medida de la presión de radiación del sonido en varios
puntos a lo largo de la trayectoria ultrasónica.
La explicación clásica de la absorción de energía ultrasónica está contenida en
la siguiente descripción de Stokes:
Stokes y Kirchhoff asimilaron que la absorción del sonido a la conducción
calorífica y a la fricción interna. La cantidad 2·α es el coeficiente de absorción de
intensidad de una onda plana y está definido por:
Donde:

f: frecuencia de la onda.

c: velocidad de propagación.

n: coeficiente de viscosidad.

ρ: densidad media del medio.

Cp: calor específico.

k: relación de calores específicos.
Ya sabemos de que depende la atenuación por absorción, observando las
fórmulas se deduce que la mejor manera de controlar este efecto no deseable es
mediante la frecuencia. Ya que cambiar las demás variables significa cambiar el
medio, y es mucho más difícil. Si se estudia las fórmulas se llega a la conclusión que a
mayor frecuencia mayor atenuación por absorción.
-66-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Dispersión o Scattering
Otra de las causas por las que se atenúan los ultrasonidos es debido a la
dispersión o Scattering. Cuando una onda ultrasónica que se propaga a una
velocidad c concreta y a una longitud de onda adecuada a la frecuencia de la
aplicación y se encuentra con partículas cuyo diámetro está cercano a la longitud de
onda, estas partículas al vibrar desvían parte de la intensidad que reciben en
intensidad que se dispersa en ondas esféricas. A este fenómeno se le denomina
Scattering. Las partículas se convierten en emisores de ondas esféricas, por
consiguiente parte de la intensidad se desvía de su trayectoria principal, esto supone
una pérdida. Si las partículas son muchos menores que la longitud de onda el
fenómeno no se produce. Por el contrario si las partículas son mucho mayores
estaríamos en el caso de perdidas por reflexión y por tanto sería valido todo lo que se
ve en el tema 4.
Difracción
Otras de las posibles causas por las que una onda acústica se atenúa consiste en
el fenómeno denominado difracción. Cuando un haz ultrasónico es generado por un
transductor de diámetro D, este permanece agrupado sin variar de trayectoria
durante una cierta distancia denominada zona Fresnel, la zona donde se dispersa se
llama zona Fraunhofer. A partir de esa distancia el haz tiende a abrirse (se difracta) y
parte de la intensidad se propaga en otra dirección formada por un ángulo Θ. Toda
la intensidad que no se propague en la trayectoria principal en considerada una
perdida. Lo ideal es que la zona Fresnel fuera lo más grande posible y que el ángulo
Θ fuera lo más pequeño posible.
Figura 45. Zona Fresnel y Fraunhofer
Ecuación de Θ:
-67-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Longitud Fresnel:
Como se aprecia en la figura el ángulo Θ es función de la longitud de onda, una
constante y del diámetro. Atendiendo a esta expresión para D grandes en los emisores
producen haces de ultrasonidos menos difractados, por tanto con menores perdidas.
Se da la paradoja de que aparece la longitud de onda en la expresión anterior y
puesto que es igual c/f, a frecuencias altas ayudaría a tener rayos menos difractados,
pero recordemos que atendiendo a las perdidas por absorción las frecuencias bajas se
atenúan menos. Esto es una relación de compromiso para la selección de la
frecuencia atendiendo al tipo de pérdidas que más afecten a la aplicación que se
trate.
8.1.7 Generación y detección de ultrasonidos
En este tema lo que se pretende es que el alumno llegue a entender los
siguientes objetivos:

Conocer los tipos de generación y detección de ultrasonidos.
Figura 46. Índice del tema 7
El índice y la teoría de este tema son los siguientes:
Transductores piezoeléctricos
Transductores electrostáticos
Transductores magnetostrictivos
Transductores electromagnéticos y mecánicos
-68-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Transductores piezoeléctricos
La forma más común de conseguir actualmente ultrasonidos de que tenga una
frecuencia alta, consiste en la generación de oscilaciones eléctricas de la frecuencia
requerida y su posterior conversión en oscilaciones mecánicas. De esta forma es
posible definir la frecuencia con bastante precisión. Además, el empleo de oscilaciones
eléctricas, que es necesario para la generación de ultrasonido de muy alta frecuencia,
es también conveniente en la práctica para la generación de ultrasonido de
frecuencias menores. Igualmente la manera más fácil de conseguir la detección de
ultrasonidos, sin tener en cuenta la medida de intensidades ultrasónicas, es convertir
las oscilaciones mecánicas, de nuevo, en oscilaciones eléctricas. Los componentes
activos que interconvierten las oscilaciones eléctricas ultrasónicas reciben el nombre de
transductores. La manera más normal, con mucho, de llevar a cabo las conversiones
electromecánicas para la generación y detección del ultrasonido, consiste en el
empleo de la propiedad conocida por piezoelectricidad.
Supongamos que una rodaja de un crista eléctricamente aislante, se comprime
aplicando fuerzas en sus superficies. Debido a estas fuerzas el cristal se deformará
ligeramente y, si la simetría de la estructura interna del cristal cumple determinadas
condiciones, pueden aparecer cargas eléctricas sobre el cristal, positivas en una
superficie y negativas en la opuesta. En el interior del cristal se crea un campo de
potencial electrostático. Si se eliminan las fuerzas externas, las cargas desaparecen. Un
cristal que muestre este fenómeno recibe el nombre de piezoeléctrico.
El efecto contrario del efecto piezoeléctrico supondrá que, al colocar un cristal
piezoeléctrico en un campo eléctrico, el cristal adquirirá cierta distorsión; si se elimina
el campo eléctrico, la distorsión desaparecerá. Una manera conveniente de producir
el campo eléctrico consiste en recubrir las superficies de la placa con una película
conductora y aplicar un voltaje entre estos recubrimientos metálicos.
Figura 47. Transductor piezoeléctrico
Transductores electrostáticos
Llegamos al transductor electrostático. Si entre las placas de un condensador de
placas paralelas, se aplica una diferencia de potencial electrostático Vo, aparecen
-69-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
cargas positivas y negativas sobre las placas y surge una fuerza de atracción entre
ellas. Si se superpone a este voltaje constante una tensión alterna de amplitud inferior
a Vo y frecuencia f, la fuerza de atracción tendrá una modulación sinusoidal de
frecuencia f. Si una de las placas está débilmente “sujeta” se moverá hacia adelante y
atrás a esta frecuencia y generará oscilaciones mecánicas en el medio circundante. La
fuerza entre las placas viene dada por:
Donde A es el área de cada placa, d la separación entre placas y V la diferencia
de potencial existente entre ellas. De aquí se obtiene que es F es proporcional a la
permisividad relativa del material existente entre las placas. Consecuentemente,
cuanto mayor sea el valor de V, para una amplitud dada de las oscilaciones del
voltaje aplicado, mayor será la amplitud de la onda ultrasónica generada. Un
transductor electrostático puede emplearse también como detector de ultrasonido. Si
una onda de vibraciones mecánicas de frecuencia f, incide sobre una placa de un
condensador que sea capaz de oscilar, la capacidad variará según estas oscilaciones a
la frecuencia f y estas oscilaciones pueden detectarse y amplificarse mediante un
circuito electrónico adecuado. Es decir, tendremos el principio del “micrófono
condensador”.
Figura 48. Transductor electroestático
-70-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 49. Micrófono de condensador
Transductores magnetostrictivos
La magnetoestricción tiene lugar en los materiales ferromagnéticos y
ferrimagnéticos, si se varía la magnetización de un material de este tipo se desarrolla
la correspondiente deformación mecánica. Una varilla de material ferromagnético tal
como hierro o níquel, colocada en el interior de un solenoide, sufre variaciones de
longitud al producirse un campo magnético por la conexión de la corriente. Que este
cambio suponga un aumento o una disminución de longitud depende del material
constitutivo de la varilla, no dependiendo del sentido del campo magnético aplicado.
El níquel, por ejemplo, disminuye de longitud cuando se aplica en campo. Si pasa a
través de la bobina una corriente eléctrica oscilatoria de frecuencia f, la longitud de la
varilla disminuirá y volverá a su longitud original una vez cada medio ciclo de la
oscilación eléctrica, pudiendo considerarse la varilla como un generador de
vibraciones mecánicas de frecuencia 2·f. En la práctica se incorporan varias
modificaciones a este sencillo esquema. La relación entre el esfuerzo mecánico y el
campo magnético aplicado se representa en la siguiente figura, para cierto número
de materiales distintos.
Figura 50. Deformación por magnetoestricción
-71-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
El efecto es bastante grande en el níquel, que ha demostrado ser un material de
muy buenos resultados para su empleo en transductores magnetoestrictivo. Se
encuentran dificultades a la hora de colocar la bobina excitadoras y también con las
pérdidas por corrientes de Foucault que limitan el rango de frecuencias práctico por
debajo de unos 100 KHz. Esto último podría evitarse usando ferritas, ya que estos
materiales no son metálicos; sin embargo, debido a sus pobres propiedades
mecánicas, se emplean ocasionalmente en los transductores. Los transductores
magnetoestricitvos se usan principalmente en generadores para aplicaciones de alta
potencia para frecuencias bajas. El inverso del efecto magnetoestritivo, es decir, el
cambio de magnetización de un material de este tipo que resulta de una
deformación mecánica, puede explotarse en transductores empleados como
detectores.
Figura 51. Corte transversal de un transductor magnetostrictivo
Corte transversal de un transductor el cual contiene: material magnetostrictivo
(interior), la bobina de magnetización, y la carcasa magnética que completa el
circuito magnético (en el exterior)
Los transductores electromagnéticos son, en realidad, desarrollo técnico de los
altavoces convencionales que se emplean en frecuencias de audio. Pueden emplearse
a frecuencias ultrasónicas relativamente bajas para generar alta potencia y se han
empleado a frecuencias muy elevadas, para realizar medidas de fricción interna.
Transductores electromagnéticos y mecánicos
Transductores electromagnéticos
Un transductor electromagnético es un transductor que transforma electricidad
en energía magnética o viceversa. Por ejemplo, un electroimán es un dispositivo que
convierte la electricidad en magnetismo o viceversa (flujo magnético en electricidad).
Constan de una película muy delgada de mylar o poliéster cubierta de varias
cintas conductoras de aluminio, que actúan como la bobina de un transductor
electrodinámico, suspendida entre varios imanes dispuestos en filas creando un
potente campo magnético. Cuando la energía atraviesa el compuesto de membrana
y cinta, se ve repelida o atraída por los imanes colindantes, produciendo sonido
-72-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
radiado directamente al aire. Se pueden utilizar para ultrasonidos pero no tienen un
nivel óptimo.
Figura 52. Transductor electromagnético
Transductores mecánicos
Los primeros trabajos del siglo diecinueve sobre ultrasonido, empleaban
generadores mecánicos que eran desarrollos de silbatos, sirenas o diapasones. Un
ejemplo de este tipo de generadores es el silbato de Galton. Dicho silbato está
fabricado de un tubo de latón con un diámetro interno menor de una décima de
pulgada y con un tapón móvil en un extremo para variar la longitud efectiva del
silbato.
Figura 53. Silbato de Galton
Estos transductores han quedado desfasados y su estudio es más por historia que
por su uso. Ya que con dichos transductores es prácticamente imposible alcanzar altas
frecuencias.
8.1.8 Aplicaciones
En este tema lo que se pretende es que el alumno llegue a conocer las
posibles aplicaciones de los ultrasonidos.
-73-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 54. Índice del tema 8
El índice y la teoría de este tema son los siguientes:
Introducción
Desarrollo de las aplicaciones
Introducción a las aplicaciones
Actualmente, se han proyectado y empleado equipos en los siguientes campos
(entre otros):

Ensayo no destructivo de materiales
o Técnica de impulsos
o Técnica de resonancia
o Técnica de transmisión
o Ensayo de características de materiales

Aplicaciones médicas
o Aplicaciones a diagnósticos
o Equipo de terapia
o Medición biológica

Limpieza en alta y baja frecuencia

Soldadura de materiales sin flujos

Taladrado industrial y dental
-74-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Sistemas ultrasónicos de alarma

Aplicaciones diversas, tales como fluxómetros, viscosímetros, televisión,
etc.
Desarrollo de las aplicaciones
Técnica de impulsos
El medio más práctico de ensayar el material con ultrasonidos es mediante el
método de los ecos (encontrar irregularidades en los materiales), el que se envía un
impulso de energía ultrasónica y se mide el tiempo entre la emisión la recepción de
un eco.
Figura 55. Ensayo no destructivo de materiales
Técnica de resonancia
El método de la resonancia puede ensayar satisfactoriamente el espesor de
partes comprendidas entre 0.12 y 12 mm. Además de medir el espesor, también puede
encontrar grietas o defectos. Sin embargo su uso como mecanismo localizador de
grietas es discutible, excepto en medidas en piezas comparativamente delgadas.
Transmisión de ultrasonidos continuos
Los sistemas que emplean las ondas continuas para el ensayo de grietas
raramente se emplean debido a las engorrosas reflexiones existentes dentro del
sistema, que hacen casi imposible interpretar los resultados. Sin embargo, se han
usado modificaciones de los sistemas cuando las grietas a localizar eran lo bastante
grandes como para interrumpir sustancialmente todo el haz de ensayo.
-75-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 56. Ensayo de materiales en estructuras
Equipo médico
La aplicación de los ultrasonidos a la medicina está probablemente en su
infancia. Básicamente, los ultrasonidos se prestan a diferentes de aplicaciones:
diagnósticos y terapéutica:

Diagnóstico. Uno de los primeros dispositivos para diagnósticos fue el
estetoscopio, que es básicamente acústico, pero el mismo principio se
puede aplicar en la región ultrasónica. Por ejemplo, un dispositivo
reciente se ha empleado para localizar cálculos hepáticos mediante una
salida sónica asociada con el golpeteo de los mismos.

Equipo de diagnosis. La ventriculografía ultrasónica, o exploración de los
ventrículos para buscar tumores, se ha realizado recientemente.
Básicamente, éste es un medio para hacer pasar las ondas ultrasónicas a
través del cerebro y para recogerlas en el otro lado, mediante emisores y
receptores separados.
Figura 57. Escáner de cuerpo humano
-76-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Soldadura al estaño y al latón
Se ha demostrado que los metales se pueden soldar sin fusión sometiéndolos a
vibración ultrasónica. Los ultrasonidos quitan el óxido, permitiendo que se adhiera la
soldadura. En general, los soldadores de baja temperatura (hasta unos 315 ºC) han
sido los más empleados en el comercio.
Han aparecido varios procedimientos para la soldadura por ultrasonidos, en los
que las unidades se han construido empleando un transductor con un extremo que se
podría poner en contacto con el material que se estaba soldando. Se ha encontrado
que entonces se forma cavitación cerca del extremo y quita el óxido del material. Se
puede entonces aplicar calor, y el soldador se aplica al material desnudo.
Soldadura por fusión
Se ha demostrado recientemente que los medios para unir materiales por la
introducción de la energía vibratoria ultrasónica es un procedimiento nuevo muy
valioso.
Se han empleado un solo punto o una serie de puntos superpuestos, o una
soldadura continua, para juntar una amplia variedad de objetos. Por ejemplo, una
de las primeras aplicaciones que tuvo éxito fue la soldadura de un pequeño nervio a
una pesada barra de aluminio. Se usaron puntos superpuesto para obtener una
soldadura continua. Además, del aluminio, se han soldado con éxito otros materiales,
tales como el acero inoxidable, el molibdeno, el inconel y el titanio.
Equipo de soldadura: el equipo ultrasónico de soldadura consiste básicamente
en un generador ultrasónico normal y un transductor, además de soportes, sujeciones,
etc., que son especiales y que están proyectados para mantener y sujetar los
materiales que se van a soldar. La soldadura puede tener lugar bajo un espectro de
frecuencias muy amplio. Sin embargo, las frecuencias del margen ultrasónico inferior
han sido las más ampliamente aplicadas
Figura 58. Máquina de soldadura por ultrasonido
-77-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Limpieza
La limpieza por ultrasonidos parece deberse a una combinación de cavitación y
a una aceleración del fluido limpiador. Los experimentos en limpieza de materiales,
particularmente de metales, se han realizado en altas y en bajas frecuencias. En este
caso, la alta frecuencia se refiere a una frecuencia del orden de 1 MHz, mientras que
la baja se refiere a una frecuencia de menos de 0.1 MHz.
Figura 59. Máquina de limpieza por ultrasonido
Taladrado
El taladrado ultrasónico consiste en activar un transductor que acciona una
herramienta, mientras para un abrasivo, tal como el carburo de boro, el carburo de
silicio o el óxido de aluminio suspendido en un líquido sobre la pieza sometida a
trabajo. El carburo de silicio se emplea en el cristal, en las cerámicas, en el cuarzo, etc.
El carburo de boro se utiliza para los aceros duros, el polvo de diamante se emplea
para cortar piedras preciosas, etc. Los ultrasonidos producidos por la herramienta
fuerzan las partículas de abrasivo contra el material que es cortado con una
aceleración del orden de varios miles de veces la de la gravedad.
Figura 60. Máquina de taladrado por ultrasonido
Alarma contra robos
Es posible emplear las ondas ultrasónicas en el aire para distintas aplicaciones
de señalización. Una de éstas son los sistemas de protección. El área que se va a
-78-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
proteger tiene ondas ultrasónicas transmitidas a través de ella. Los ecos con devueltos
por los distintos objetos que reflejan las ondas. Si el objeto se mueve, la frecuencia del
eco difiere de la frecuencia de la onda transmitida causante del eco, por las relaciones
bien conocidas de Doppler. Los ecos reflejados se recogen entonces y se amplifican y se
comparan en frecuencia con la onda original. Si la frecuencia es diferente, se pone en
funcionamiento un sistema de alarma.
Figura 61. Sistema antirrobo
Dispositivos diversos
A continuación se nombran unas cuantas aplicaciones:

Microscopios y telescopios

Localizadores de pescado y sondas de profundidad

Indicador del nivel del depósito

Dispositivos para medir la viscosidad

Fluxómetro

Objetivos de radar

Analizadores sónicos de gas

Captador de vibraciones
Imágenes del funcionamiento del sonar y de un display para su visualización:
-79-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 62. Sonar
Figura 63. Display de un sonar
8.2 APPLETS
Después de la elección de la teoría quedaba la parte más importante del
curso interactivo. Esta parte era la elección de los conceptos más difíciles de
entender y que por lo tanto hacían falta unos applets.
Con ayuda de estos applets y guiando a los alumnos en su uso se pretende
que interiorice los conceptos más complejos del tema. Estos applets serán
totalmente interactivos, se podrán cambiar valores (frecuencia, temperatura,
materiales…), además de poder visualizar los resultados de esos ejemplos.
A continuación se describirá los distintos applets realizados. Explicando el
por qué de la elección de ese concepto, los ítems a poder modificar de la
simulación y poniendo una imagen del applet.
8.2.1 Propagación de los ultrasonidos. Relación entre frecuencia y
longitud de onda
El concepto que se muestra en este applet es la relación que mantiene la
frecuencia y la longitud de onda:
-80-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Donde:

λ: es la longitud de onda.

c: velocidad de propagación.

f: frecuencia.
Se habla de relación entre longitud de onda y frecuencia, omitiendo la
velocidad de propagación ya que se supone que el medio se mantiene constante
durante la propagación.
Se hizo una simulación de este concepto porque es una parte de los
ultrasonidos a tener muy en cuenta. Sobre todo en temas de atenuación, ya que
si tenemos una longitud de onda pequeño y realizamos una propagación por el
aire con partículas en suspensión, si estas partículas son del orden de la
longitud de onda se produce una gran pérdida de energía en el ultrasonido.
Como se puede sacar de la fórmula, la longitud de onda es inversamente
proporcional a la frecuencia y eso es lo que se quiere mostrar en la simulación.
Imagen del applet:
Figura 64. Applet que relaciona frecuencia y longitud de onda
Estos son los ítems que se pueden cambiar en el applet:

Los botones de On y Off para realizar la propagación por el medio
isotrópico.
-81-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

La elección del material donde se propagarán los ultrasonidos, y
por tanto la velocidad de propagación.

La frecuencia de simulación, está se podrá cambiar al principio con
un cuadro numérico y durante la simulación con un Scrollbar
situado a la derecha del applet.
Además de estos ítems también tendremos otros dos, con los cuales
podremos visualizar la longitud de onda y la velocidad de transmisión.
8.2.2 Oscilación de dos partículas
Este applet se trata el concepto de la oscilación de partículas dentro de una
onda longitudinal de un ultrasonido. Ya que cada partícula, dentro del medio
de propagación, oscila alrededor de su posición de reposo.
La oscilación comentada resulta que depende del tiempo y de la posición
de la partícula dentro del medio. Por lo cual las partículas irán desfasadas entre
sí. Sin embargo las partículas separadas por una distancia proporcional a la
longitud de onda van en fase.
Estas ideas comentadas son las que se quieren plasmar en el applet, para
que al alumno le quede bien claro que las partículas del medio propagación no
tienen porque moverse al unísono.
La fórmula, que plasma este movimiento, es la siguiente:
Donde:

a: amplitud de la partícula.

λ: es la longitud de onda.

T: periodo de oscilación.

x: posición de equilibrio.

t: tiempo.
Imagen del applet:
-82-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 65. Applet para ver el desfase entre partículas de un mismo medio
Además de la pantalla principal del applet, también tenemos una pantalla
secundaria donde se recogen las gráficas de oscilación de cada partícula. Para
así poder ver el desfase entre ellas en caso de que la distancia no sea
proporcional a la longitud de onda.
Gráfica 2. Desfase entre dos partículas
Ítems para poder modificar la simulación:

X1: para poder elegir la distancia de la primera partícula al emisor.

X2: distancia entre las dos partículas.

Prop. a landa: con esto podremos ver una partícula en fase con la
primera, por estar separadas por una distancia proporcional a la
longitud de onda.

Tendremos un botón comenzar, con el cual pondremos en marcha
la simulación.
-83-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Y por último tendremos una opción para mostrar la gráfica, donde
podremos observar el desfase entre las partículas.
Además tendremos otros ítems para poder ver la longitud de onda y la
distancia entre partículas.
8.2.3 Applets de los tipos de onda de oscilación
Estos son unos applets muy sencillitos, con el único interés de que el
alumno pueda visualmente comprobar la forma de propagarse las ondas. Ya
que muchas veces con verlo por escrito o en un dibujo sin animación, no es
suficiente para poder asimilar el concepto.
8.2.3.1 Ondas longitudinales
Imágenes del applet.
Sin propagación:
Figura 66. Partículas en reposo
Con propagación:
Figura 67. Onda longitudinal en propagación
-84-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Como se puede observar es una applet donde se pueden observar las
partículas en su posición inicial, y como después de empezar a emitirse oscilan
en torno a esa posición y desfasadas unas con respecto a otras.
8.2.3.2 Ondas transversales
Imágenes del applet.
Sin propagación:
Figura 68. Partículas en reposo
Con propagación:
Figura 69. Onda transversal en propagación
Es un applet para poder observar una onda transversal en propagación. Se
puede observar como las partículas en este caso forman una onda senoidal.
-85-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.2.3.3 Ondas esféricas
Imagen del applet:
Figura 70. Onda esférica
Esta realizado para ver cómo se van desplazando los frentes de onda, en
una onda de este tipo.
8.2.3.4 Ondas de choque
Imagen del applet:
Figura 71. Simulación de una onda de choque
Es un applet con que queda claro como el emisor, se mueve más rápido
que los frentes de onda.
-86-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.2.4 Dependencia de la velocidad de transmisión con respecto a la
temperatura
Con esta simulación lo que se quiere plasmar en la propiedad de los
ultrasonidos, que produce el cambio de velocidad con respecto a la
temperatura.
Es un concepto a tener bien claro, sobre todo la idea de que en los gases es
más importante que en los líquidos y a su vez este es más importante que los
sólidos.
Es una propiedad muy útil en el caso de los gases, ya que gracias a esto
podemos calcular temperaturas en un horno. Si colocamos varios emisores y
receptores que se crucen y creen como una especie de malla podremos sacar las
isotermas dentro de ese horno.
Se usarán distintas fórmulas para los gases, para el agua destilada y para
los sólidos.
Imagen del applet:
Figura 72. Dependencia de la velocidad de los ultrasonidos con respecto a la temperatura
Ítems para poder cambiar en la simulación:

Material en el que se produce la propagación.

Distancia a recorrer el ultrasonido.

Temperatura del medio.
-87-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
A parte de eso tendremos tres campos numéricos más para poder ver la
velocidad de transmisión y los tiempos de la actual simulación y de la anterior.
8.2.5 Reflexión y refracción de ondas
8.2.5.1 Leyes de Snell
Con este applet lo que se quiere conseguir es que el alumno consiga
comprender las leyes de Snell. Estas leyes describen el comportamiento de una
onda plana longitudinal cuando se transmite de un medio a otro con distintas
característica mecánicas, ópticas…
Estas leyes definen desde los ángulos con los que se transmite y sale
reflejada, hasta las cantidades de la onda original que se transmiten o se
reflejan.
Estas leyes son las siguientes:

Ley de reflexión:

Ley de refracción:

Cantidades transmitidas y reflejadas:
Donde:

es el ángulo de incidencia.

es el ángulo de reflexión.

es el ángulo de refracción.
-88-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

son las impedancias de los medios.

cantidad reflejada.

cantidad transmitida.
Además de estos conceptos, también se tratan otros dos muy importantes.
Como son el ángulo crítico y el ángulo de intromisión.
El ángulo crítico es aquel ángulo que provoca que la energía que lleva la
onda se refleje. Y el ángulo de intromisión es todo lo contrario.
Se eligió este concepto para plasmar en la simulación, ya que conocer el
comportamiento de una onda al transmitirse es muy importante. Sobre todo
para aplicaciones como el aislamiento de un medio. Ya que conociendo de que
depende la parte transmitida, se podrá elegir la forma de aislar dicho medio.
Imagen del applet:
Figura 73. Applet de las leyes de Snell
Ítems a poder modificar:

Los materiales de los dos medios donde se producirá la
transmisión.

El ángulo que tiene la onda al cambiar de un medio a otro.
-89-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Además de esto tendremos otros cuadros numéricos donde se podrán ver
los datos más importantes en el caso de la transmisión de un medio a otro:

Ángulos crítico y de intromisión.

Cantidad de energía transmitida y reflejada.

Ángulos de reflexión y transmisión.

Impedancias acústicas, tanto del medio uno como del medio dos.
8.2.5.2 Acoplamiento entre medios
Lo que se pretende con esta simulación es que el alumno vea la función de
poner un medio de acoplamiento cuando se quiera transmitir una onda de un
medio a otro. Con este medio lo que se quiere conseguir es que la cantidad
transmitida sea la máxima.
Para la realización de este applet se debe tener en cuenta tanto las leyes
del anterior applet comentado, como lo siguiente:
Con esta fórmula se define la impedancia acústica que debe tener el medio
de acoplamiento.
Para este concepto se crearán dos applets. El primero de ellos será un
ejemplo teórico, donde la impedancia acoplamiento será directamente el
resultado de la ecuación anterior. Y el segundo será un ejemplo más práctico
donde se podrá elegir el material de acoplamiento.
-90-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.2.5.2.1 Acoplamiento teórico
Imagen del applet:
Figura 74. Acoplamiento de medios (teórico)
Ítems a poder modificar:

Los materiales de los dos medios donde se producirá la
transmisión.

El ángulo que tiene la onda al cambiar del primer medio al de
acoplamiento.
Además de esto tendremos otros cuadros numéricos donde se podrán ver
los datos más importantes en el caso de la transmisión de un medio a otro:

Cantidad de energía transmitida y reflejada, entre el medio uno y el
de acoplamiento.

Cantidad de energía transmitida y reflejada, entre el medio de
acoplamiento y el dos.

Impedancia de acoplamiento.
-91-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Ángulos de transmisión, desde el medio uno al de acoplamiento y
desde este al dos.
8.2.5.2.2 Acoplamiento real
Imagen del applet:
Figura 75. Acoplamiento de medios (real)
Ítems a poder modificar:

Los materiales de los dos medios donde se producirá la
transmisión.

El medio de acoplamiento.

El ángulo que tiene la onda al cambiar del primer medio al de
acoplamiento.
Además de esto tendremos otros cuadros numéricos donde se podrán ver
los datos más importantes en el caso de la transmisión de un medio a otro:

Cantidad de energía transmitida y reflejada, entre el medio uno y el
de acoplamiento.

Cantidad de energía transmitida y reflejada, entre el medio de
acoplamiento y el dos.
-92-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Impedancia de acoplamiento.

Ángulos de transmisión, desde el medio uno al de acoplamiento y
desde este al dos.
8.2.6 Efecto Doppler
Con estos applet lo que se pretende es que hacer un ejemplo visual del
efecto Doppler. Ya que es un concepto que es más fácil de entender si lo vemos
visualmente que intentando imaginárnoslo a través de una fórmula.
El efecto Doppler consiste en el cambio de percepción de la frecuencia
recibida desde un emisor en movimiento.
Para este concepto se crearán dos applets:

El primero de ellos tendrá dos receptores estáticos y un emisor en
movimiento.

El segundo tendrá un emisor y un receptor, los dos en movimiento.
8.2.6.1 Dos receptores estáticos y un emisor en movimiento
Imagen del applet:
Figura 76. Efecto Doppler con dos receptores
En el applet se puede ver el emisor (la pelota roja) y los receptores (las
pelotas azules).
Ítems a poder modificar:

Tres botones:
o Empezar: arrancar la simulación.
-93-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
o Paso: ejecutar paso a paso.
o Reset: volver todo a cero para empezar.
Además de esto tendremos una gráfica para poder ver los cambios de
frecuencia producidos, cuando se aleja y cuando se acerca.
8.2.6.2 Un receptor y un emisor
Imagen del applet:
Figura 77. Efecto Doppler con un receptor
En este applet tanto el receptor (azul) como el emisor (rojo) están en
movimiento.
Ítems a poder modificar:

Tres botones:
o Empezar: arrancar la simulación.
o Paso: ejecutar paso a paso.
o Reset: volver todo a cero para empezar.
Además de esto tendremos una gráfica para poder ver los cambios de
frecuencia producidos, cuando se aleja y cuando se acerca.
8.2.7 Atenuación
Con estas simulaciones lo que se pretende es que el alumno interiorice los
efectos de la atenuación en los ultrasonidos. Estos efectos son causados por tres
causas:

Absorción.

Dispersión o Scattering.
-94-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Difracción.
Se hace un ejemplo visual para cada una de estas causas porque son tres
cosas difíciles de ver. Sobre todo en el caso de la difracción y del Scattering.
8.2.7.1 Absorción
Este tipo de atenuación es un concepto bastante más fácil de entender que
los dos anteriores. La absorción consiste en que cuanto más distancia recorre el
ultrasonido menos energía lleva.
Como es un concepto bastante fácil de entender sin necesidad de ver un
ejemplo visual, con simplemente una gráfica ya se entiende. Lo que se realizará
es un applet donde se pueda ver cómo actúa la frecuencia en este efecto y a que
distancia con esas características la intensidad se atenúa en 3 dBs.
Imagen del applet:
Gráfica 3. Efecto de la frecuencia en el fenómeno de la absorción
Lo único que se puede modificar en este applet es el valor de la frecuencia.
Esto se puede hacer a través del scrollbar de la parte de superior o del cuadro
de texto correspondiente.
8.2.7.2 Dispersión o Scattering
El Scattering son las pérdidas que sufren las ondas sónicas cuando se
transmiten en un medio gaseoso o líquido, con partículas en suspensión. Estas
partículas tienen que ser de un tamaño parecido a la longitud de onda de la
onda.
-95-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
En este applet se puede ver perfectamente cómo funciona este tipo de
atenuación.
Imagen del applet:
Figura 78. Applet del fenómeno del Scattering
Ítems a poder modificar:

Dos cuadros numéricos donde se podrá cambiar la frecuencia de la
onda ultrasónica y el diámetro de la partícula en suspensión.

Un botón para poder arrancar la simulación y también poderla
reiniciar.
Además tendremos un cuadro numérico con el que poder visualizar el
valor de la longitud de onda.
8.2.7.3 Difracción
La difracción hace mención al fenómeno que provoca que un haz acústico
se disperse al cabo de una longitud, llamada Fresnel, siguiendo un ángulo
nombrado como Θ.
En el applet se puede observar perfectamente como varia el ángulo Θ
según variamos el radio y la frecuencia.
Los términos de la difracción nombrados, zona Fresnel y Θ, se basan en las
siguientes fórmulas teóricas:
-96-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Imagen del applet:
Figura 79. Applet de la difracción
Ítems a poder modificar:

Dos Scrollbar para modificar la frecuencia y el radio.
Además tendremos una serie de cuadros numéricos con los que poder
visualizar el valor de la longitud de onda, el radio, la frecuencia, la longitud
Fresnel y el ángulo Θ.
8.3 SEGUIMIENTO DEL APRENDIZAJE
Esta será una parte del proyecto muy diferenciada de lo anteriormente
hecho. Ya que la parte anterior era el curso propiamente dicho y ahora es una
herramienta para complementar.
Con esta herramienta se podrán crear test por parte del profesor para que
el alumno los haga.
8.3.1 Base de datos
Será una herramienta, basada en bases de datos, con el que poder hacer un
seguimiento del aprendizaje del alumno.
La base de datos tendrá las siguientes tablas y con sus relaciones:
-97-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Las tablas donde se guardarán las preguntas y las respuestas.
PREGUNTAS
CodPregunta
Clase
Enunciado
Tema
Validada
RESBUENAS
CodResBuena
Respuesta
CodPregunta
Correcta
PRE_TEST
Código
CodPregunta
Tabla 1. B.D de preguntas y respuestas

Las tablas de usuarios, los resultados de los test y la de errores por
tema.
RESULTADOS
CodResultado
CodUsuario
Fecha
NumAciertos
USUARIOS
CodUsuario
Nombre
Apellidos
Nick
Pass
Tipo
Test
ERRORES
CodError
CodUsuario
Tema
NumErrores
Tabla 2. B.D de usuarios, errores y resultados

Una tabla que se relaciona tanto con las de usuario como las
preguntas:
TEST_PRE
CodResultado
CodPregunta
Acierto
Tabla 3. B.D. preguntas acertadas
-98-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA

Una tabla con las preguntas que se quiere que salgan en los test:
NUMPREGUNTAS
Codigo
Tema1
Tema2
Tema3
Tema4
Tema5
Tema6
Tema7
Tema8
PregAle
Tabla 4. B.D número de preguntas
8.3.2 Profesor y alumno
Como es lógico está herramienta tendrá que ser realizada desde dos
puntos de vista bien diferenciados, profesor y alumno.
A continuación se nombra las posibilidades de cada tipo de usuario.
8.3.2.1 Profesor
8.3.2.1.1 Nick y contraseña
Lo primero a comentar es que el usuario de tipo profesor ya estará creado
y no se podrán dar más de alta desde la misma herramienta. Esta medida se
toma para que cualquiera no se pudiera dar de alta como profesor y gestionar la
base de datos. El Nick y la contraseña del usuario profesor serán:

Nick: Admin.

Contraseña: Ultrasonido.
Una vez logueado como este usuario tendremos está ventana:
-99-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 80. Menú del profesor
8.3.2.1.2 Crear pregunta
En la opción “Crear pregunta nueva” se permitirá al usuario crear
preguntas que se guardarán en la base de datos con sus respectivas preguntas.
Se podrá elegir qué tipo de pregunta se quiere:

Verdadero y falso.

Respuesta numérica.

Respuesta larga (tipo a, b y c).
Además se podrá elegir de qué tema es la pregunta, para así después
poder llevar un control de cuáles son los temas en los que más fallan los
alumnos.
Figura 81. Ejemplo de pregunta larga
-100-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.3.2.1.3 Modificar pregunta
Con esta opción el profesor podrá ver un listado de preguntas ya creadas.
Se verán ordenadas por fecha de creación y podremos ver el tema al que
pertenece y el enunciado.
Figura 82. Listado de preguntas
En la tabla creada para ver las preguntas, en la parte de la derecha se
tendrá la opción de poder modificar la pregunta.
Figura 83. Modificación de las preguntas
-101-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.3.2.1.4 Ver resultados de los test
Cuando el profesor pinche en esta opción, podrá elegir el alumno al que
quiere ver sus resultados.
Una vez elegido al alumno le saldrá una tabla donde se verá el nombre y
apellidos del alumno, así como la fecha de la realización de cada test y la nota.
Figura 84. Resultados de los test por alumno
Además tendrá la opción de poder ver los resultados en una gráfica, lo
cual hace más intuitivo poder observar la evolución del alumno.
Figura 85. Gráfica con la nota del alumno
-102-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.3.2.1.5 Ver errores por tema
Al pinchar en dicha opción el usuario podrá elegir el alumno al que quiere
ver los errores que ha realizado en cada tema. Esto servirá al profesor para
saber en qué temas hacer refuerzo o que temas ya están suficientemente
interiorizados por el alumno.
Figura 86. Errores por temas de un alumno
En este caso se tendrá la opción de poder ver una gráfica de barras que
representa los fallos del alumno en los temas.
Figura 87. Diagrama de barras con los errores en cada tema
-103-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.3.2.1.6 Elegir tipo de Test a realizar por los alumnos
Al hacer click en esta opción el usuario podrá elegir entre tres tipos de test
para realizar por parte del alumno:

20 preguntas aleatorias.

5 preguntas por tema.

20 preguntas elegidas por el profesor.
Figura 88. Elección de tipo de Test
Si se elige la tercera opción nos saldrá una página donde podremos elegir
las 20 preguntas.
Figura 89. Elección de preguntas
-104-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.3.2.1.7 Elegir número de preguntas del test
Al pinchar en esta opción el profesor podrá elegir el número de preguntas
que quiere que salgan en los test aleatorios o las preguntas que quiere que
salgan de cada tema.
Figura 90. Elección del número de preguntas
8.3.2.1.8 Ver test del alumno
Al elegir está opción el profesor podrá elegir el alumno al que quiere
observar y el test que quiere ver (ver las preguntas que respondió y cuales
fallo).
Figura 91. Elección del alumno y de test
-105-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 92. Listado con las preguntas del test y si acertó o fallo
8.3.2.1.9 Ver fallos del alumno en cada test por tema
Al pinchar está opción se podrá elegir el alumno que se quiere observar y
la evolución que tiene dicho alumno en fallos de cada tema.
Figura 93. Elección del alumno y del tema a seguir
-106-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Figura 94. Listado de test y fallos en el tema correspondiente
8.3.2.2 Alumno
8.3.2.2.1 Inscribirse en la herramienta
Este tipo de usuarios sí que se podrán crear desde la misma herramienta.
Como es lógico, ya que así los alumnos podrán darse de alta y poder realizar los
test.
Figura 95. Inscripción en el curso
-107-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
Este será el menú de un usuario tipo alumno:
Figura 96. Menú de los alumnos
8.3.2.2.2 Realización del test
Comparando el usuario de tipo alumno con uno de tipo profesor, el de
tipo alumno es muy básico ya que solo tendrá una opción que es la realización
del test.
Al pinchar en la opción de “Hacer test”, saldrá un test según la opción
elegida por el profesor (preguntas aleatorias, preguntas por tema y 20
preguntas seleccionadas anteriormente por el profesor). El alumno podrá
contestarlas y al enviarlas podrá ver directamente su resultado.
Figura 97. Pantalla de corrección
-108-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
MEMORIA
8.3.3 Continuación de la herramienta
Esta herramienta se ha realizado con lenguaje jsp. Ya que es un lenguaje
bastante claro y fácil de entender para el que sabe programar con él. Por lo
tanto la herramienta se deja abierta para poderla mejorar posteriormente.
Una de las posibles mejoras es recoger los datos de las respuestas de los
alumnos y hacer un estudio estadístico de esos resultados. Para ver el
rendimiento entre otras cosas.
-109-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
HERRAMIENTA DIDÁCTICA
INTERACTIVA PARA EL
APRENDIZAJE DE LOS
ULTRASONIDOS
ANEXO I. CÓDIGO DE LOS APPLETS
Javier Cariñanos Rodríguez
ANEXO I. CÓDIGO DE LOS APPLETS
ÍNDICE
1 PROGRAMACIÓN DE LOS APPLETS ........................................................................................................ 3
1.1 EASY JAVA SIMULATIONS ....................................................................................................................... 3
1.2 CÓDIGO DE LOS APPLETS ....................................................................................................................... 4
1.2.1 Propagación de los ultrasonidos. Relación entre frecuencia y longitud de onda ...................... 4
1.2.2 Oscilación de dos partículas .................................................................................................... 8
1.2.3 Applets de los tipos de onda de oscilación ............................................................................. 10
1.2.3.1 Ondas longitudinales ............................................................................................................................ 10
1.2.3.2 Ondas transversales .............................................................................................................................. 14
1.2.3.3 Ondas esféricas ..................................................................................................................................... 15
1.2.3.4 Ondas de choque .................................................................................................................................. 17
1.2.4 Dependencia de la velocidad de transmisión con respecto a la temperatura ......................... 19
1.2.5 Reflexión y refracción de ondas............................................................................................. 23
1.2.5.1 Leyes de Snell ........................................................................................................................................ 23
1.2.5.2 Acoplamiento entre medios ................................................................................................................. 29
1.2.5.2.1 Teórico .......................................................................................................................................... 29
1.2.5.2.2 Real................................................................................................................................................ 34
1.2.6 Efecto Doppler ...................................................................................................................... 40
1.2.6.1 Dos receptores estáticos y un emisor en movimiento ........................................................................ 40
1.2.6.2 Un receptor y un emisor ....................................................................................................................... 44
1.2.7 Atenuación ........................................................................................................................... 47
1.2.7.1 Dispersión o Scattering ......................................................................................................................... 47
1.2.7.2 Difracción .............................................................................................................................................. 56
1.2.7.3 Absorción............................................................................................................................................... 57
ÍNDICE DE ILUSTRACIONES:
FIGURA 1. OPCIÓN VISTA DE LA APLICACIÓN .......................................................................................... 3
FIGURA 2. OPCIÓN “MODELO” DE LA APLICACIÓN .................................................................................. 4
FIGURA 3. ELEMENTOS DEL APPLET RELACIÓN FRECUENCIA LONGITUD DE ONDA ................................. 4
FIGURA 4. ELEMENTOS DEL APPLET DE OSCILACIÓN DE PARTÍCULAS ..................................................... 8
FIGURA 5. ELEMENTOS DEL APPLET ONDAS LONGITUDINALES ............................................................. 10
FIGURA 6. ELEMENTOS DEL APPLET ONDAS TRANSVERSALES ............................................................... 14
FIGURA 7. ELEMENTOS DEL APPLET ONDAS ESFÉRICAS ......................................................................... 15
FIGURA 8. ELEMENTOS DEL APPLET ONDAS DE CHOQUE ...................................................................... 17
FIGURA 9. ELEMENTOS DEL APPLET VARIACIÓN DE ‘C’ POR TEMPERATURA ......................................... 19
FIGURA 10. ELEMENTOS DEL APPLET LEYES DE SNELL ........................................................................... 23
FIGURA 11. ELEMENTOS DEL APPLET ACOPLAMIENTO ENTRE MEDIOS (TEÓRICO) ............................... 29
FIGURA 12. ELEMENTOS DEL APPLET ACOPLAMIENTO ENTRE MEDIOS (REAL) ..................................... 34
FIGURA 13. ELEMENTOS DEL APPLET ACOPLAMIENTO EFECTO DOPPLER (DOS RECEPTORES) .............. 40
FIGURA 14. ELEMENTOS DEL APPLET ACOPLAMIENTO EFECTO DOPPLER (UN RECEPTOR) ................... 44
FIGURA 15. ELEMENTOS DEL APPLET SCATTERING ................................................................................ 47
FIGURA 16. ELEMENTOS DEL APPLET DE DIFRACCIÓN ........................................................................... 56
FIGURA 17. ELEMENTOS DEL APPLET DE ABSORCIÓN............................................................................ 57
-2-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
1 PROGRAMACIÓN DE LOS APPLETS
1.1 EASY JAVA SIMULATIONS
Easy Java Simulations es el nombre del programa utilizado para la
programación de los applets de java. Este programa nos permite de forma
sencilla elegir los elementos que queremos en la simulación, para después
programar el funcionamiento de esos elementos.
Figura 1. Opción Vista de la aplicación
En la anterior imagen se puede ver la opción “Vista” del interfaz que es
para elegir los elementos de nuestro algoritmo. Además como se puede ver en
la siguiente imagen esta la opción de “Modelo”.
-3-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Figura 2. Opción “Modelo” de la aplicación
Esta ventana, sin quitarle importancia a la anterior, es la más importante.
Ya que en ella crearemos las variables, inicializaremos las variables al ejecutar el
algoritmo y se programará el funcionamiento de la aplicación.
También se debe comentar que no toda la programación estará en la
opción “Modelo”. En la opción “Vista” algunos elementos permiten ejecutar
programación al usarlos según acciones, entre ellos botones, scrollbar, cuadros
numéricos, listas de opciones, selectores…
1.2 CÓDIGO DE LOS APPLETS
1.2.1 Propagación de los ultrasonidos. Relación entre frecuencia y
longitud de onda
En la siguiente imagen se puede ver el árbol principal de los elementos de
la simulación:
Figura 3. Elementos del applet Relación frecuencia Longitud de onda
-4-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Inicialización de las variables para simulación:
encendido=false;
f=20;
cont=0;
visible=false;
estado=true;
int i;
for(i=0;i<90;i++){
posicion[i]=3.5;
}
propagacion=false;
error=false;
error1=false;
error_U=false;
atenuacion=false;
cont1=0;
barra_f=false;
num_frentes=0;
//inicializamos las variables necesarias
//inicializamos todos los errores a cero
//colocamos los frentes de onda
Programa principal del applet:
int ans;
if (propagacion){
if (encendido==true && posicion[cont]<17.2 && cont<89){
visible=true;
estado=false;
//vamos dibujando los frentes de onda
ans=cont;
cont=cont+1;
num_frentes=cont;
posicion[cont]=posicion[ans]+landa*6;
ultima_pos=posicion[cont];
}
}
if (atenuacion){
estado=true;
int i;
for(i=cont;i<90;i++){
//coloco las que no he usado al final
posicion[i]=ultima_pos;
}
if (cont1<=cont){
posicion[cont1]=ultima_pos;
//voy quitando los frentes de onda
cont1=cont1+1;
}
else{
visible=false;
//reinicio los valores de la simulación
-5-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
}
}
Al arrastrar el scrollbar:
landa=c/(f*1000);
int i;
int ans;
posicion[0]=3.5;
for(i=1;i<=num_frentes;i++){ //Cambiamos la posición de los frentes de onda
ans=i-1;
posicion[i]=posicion[ans]+landa*6;
ultima_pos=posicion[i];
}
Acción al cambiar el cuadro numérico de la frecuencia:
if (f>=20){
landa=c/(f*1000);
}
else{
error_U=true;
}
//Cálculo la landa
Acción de la lista de materiales:
//Configuro el valor de la velocidad según el medio
String str1=new String("Aluminio");
if(str1.equals(material)){
c=5150;
}
String str2=new String("Acero");
if(str2.equals(material)){
c=5050;
}
String str3=new String("Hierro");
if(str3.equals(material)){
c=3700;
}
String str4=new String("Oro");
if(str4.equals(material)){
c=2000;
}
String str5=new String("Alcohol(20ºC)");
-6-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
if(str5.equals(material)){
c=11500;
}
String str6=new String("Gasolina(20ºC)");
if(str6.equals(material)){
c=1540;
}
String str7=new String("Hidrógeno(0ºC)");
if(str7.equals(material)){
c=1269.5;
}
String str8=new String(" ");
if(str8.equals(material)){
c=0;
}
landa=c/(f*1000);
Botón “On”:
//Inicio la simulación
int i;
for(i=0;i<90;i++){
posicion[i]=3.5;
}
cont=0;
num_frentes=0;
propagacion=true;
atenuacion=false;
if (landa!=0 && landa>=0.01){
encendido=true;
barra_f=true;
}
if (landa==0){
error=true;
}
if (landa<0.01 && landa>0){
error1=true;
}
Botón “Off”:
//Inicio el paro de la propagación
cont1=0;
atenuacion=true;
propagacion=false;
-7-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
encendido=false;
barra_f=false;
1.2.2 Oscilación de dos partículas
En la siguiente imagen se puede ver el árbol principal de los elementos de
la simulación:
Figura 4. Elementos del applet de Oscilación de partículas
Inicialización de las variables:
//inicializo todas las variables pertinentes, tiempo, desfases, frecuencia, landa…
t=0;
desfase=false;
error=false;
error1=false;
error2=false;
x1=70;
x2=160;
visible_cuota=true;
f=20;
landa=343/(f*1000);
Programa principal:
t=t+0.0001;
//En estos 3 if hago que las particulas no se puedan poner fuera del medio
if (x1<30){
x1=30;
}
if ((x1+x2)>270){
x2=270-x1;
}
if (x2<40){
-8-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
x2=40;
}
//Para evitar frecuencias por debajo de los ultrasonidos
if (f<20){
_pause();
error2=true;
}else{
if (elegir_distancia==false){
//En caso de estar oscilando desfasados, distancia no proporcional a landa
visible_cuota=true;
x2bis=x1+x2;
//mover la simulación 1º particula
pos_part1=x1/10+2*Math.sin(2*pi*t*f*10-2*pi*(x1/100)/landa);
//mover la simulación 2º particula
pos_part2=x2bis/10+2*Math.sin(2*pi*t*f*10-2*pi*(x2bis/100)/landa);
//varible para mostrar en la gráfica la primera particula
x1g=3*Math.sin(2*pi*t*f*10-2*pi*(x1/100)/landa);
//varible para mostrar en la gráfica la segunda partícula
x2g=3*Math.sin(2*pi*t*f*10-2*pi*(x2bis/100)/landa);
dist_real=((x2bis/10+a*Math.sin(2*pi*t*f*1000-2*pi*(x2bis/10)/landa))(x1/10+a*Math.sin(2*pi*t*f*1000-2*pi*(x1/10)/landa)))*100;
}
else{
//distancia proporcional a landa, oscilan en fase
visible_cuota=false;
x2bis=x1/100+landa*propor;
pos_part1=7+2*Math.sin(2*pi*t*f*10-2*pi*(x1/100)/landa);
x1g=3*Math.sin(2*pi*t*f*10-2*pi*(x1/100)/landa);
pos_part2=23+2*Math.sin(2*pi*t*f*10-2*pi*x2bis/landa);
x2g=3*Math.sin(2*pi*t*f*10-2*pi*(x2bis)/landa);
dist_real=((x2bis+a*Math.sin(2*pi*t*f*1000-2*pi*x2bis/landa))(x1/100+a*Math.sin(2*pi*t*f*1000-2*pi*(x1/100)/landa)))*1000;
}
}
Acción del botón “Comenzar”:
//Coloco las partículas en rango por si se han puesto fuera
if (x1<30){
x1=30;
}
if ((x1+x2)>270){
x2=270-x1;
}
_play();
-9-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Acción del cuadro numérico “frecuencia”:
//Calculo landa
landa=343/(f*1000);
Cuadro numérico X1:
// Muevo las partículas a su posición visualmente
pos_part1=x1/10;
pos_part2=x1/10+x2/10;
Cuadro numérico X2:
pos_part2=x1/10+x2/10;
1.2.3 Applets de los tipos de onda de oscilación
1.2.3.1 Ondas longitudinales
Árbol de elementos:
Figura 5. Elementos del applet Ondas Longitudinales
Inicialización de las variables:
//Inicializo landa y las posición inicial de las partículas
landa=11;
x=0;
x1=1;
x2=2;
x3=3;
x4=4;
x5=5;
x6=6;
x7=7;
x8=8;
x9=9;
-10-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
x10=10;
x11=11;
x12=12;
x13=13;
x14=14;
x15=15;
//Inicialización de los colores de las partículas
color1=java.awt.Color.red;
color2=java.awt.Color.blue;
color3=java.awt.Color.blue;
color4=java.awt.Color.blue;
color5=java.awt.Color.blue;
color6=java.awt.Color.blue;
color7=java.awt.Color.blue;
color8=java.awt.Color.blue;
color9=java.awt.Color.blue;
color10=java.awt.Color.blue;
color11=java.awt.Color.blue;
color12=java.awt.Color.blue;
color13=java.awt.Color.blue;
color14=java.awt.Color.blue;
color15=java.awt.Color.blue;
color16=java.awt.Color.blue;
Programa principal:
t=t+0.004;
//Produzco el movimiento de las particulas
if (t<=0.15){
part=4+Math.sin(2*pi*t*10-2*pi*x/landa);
part1=5+Math.sin(2*pi*t*10-2*pi*x1/landa);
part2=6+Math.sin(2*pi*t*10-2*pi*x2/landa);
part3=7+Math.sin(2*pi*t*10-2*pi*x3/landa);
part4=8+Math.sin(2*pi*t*10-2*pi*x4/landa);
part5=9+Math.sin(2*pi*t*10-2*pi*x5/landa);
part6=10+Math.sin(2*pi*t*10-2*pi*x6/landa);
part7=11+Math.sin(2*pi*t*10-2*pi*x7/landa);
part8=12+Math.sin(2*pi*t*10-2*pi*x8/landa);
part9=13+Math.sin(2*pi*t*10-2*pi*x9/landa);
part10=14+Math.sin(2*pi*t*10-2*pi*x10/landa);
part11=15+Math.sin(2*pi*t*10-2*pi*x11/landa);
part12=16+Math.sin(2*pi*t*10-2*pi*x12/landa);
part13=17+Math.sin(2*pi*t*10-2*pi*x13/landa);
part14=18+Math.sin(2*pi*t*10-2*pi*x14/landa);
-11-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
part15=19+Math.sin(2*pi*t*10-2*pi*x15/landa);
}
//Cuando termina la simulación las pongo en su posición inicial
else{
part=4;
part1=5;
part2=6;
part3=7;
part4=8;
part5=9;
part6=10;
part7=11;
part8=12;
part9=13;
part10=14;
part11=15;
part12=16;
part13=17;
part14=18;
part15=19;
}
//Reinicio la simulación
if (t>=0.2){
_reset();
t=0;
color1=java.awt.Color.red;
_play();
}
Cambio de color de las partículas:
//Con este if hago el cambio de color
if (t<=0.15){
if (Math.sin(2*pi*t*10-2*pi*x/landa)>=0.5 && color1==java.awt.Color.red){
color1=java.awt.Color.blue;
color2=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x1/landa)>=0.5 && color2==java.awt.Color.red){
color2=java.awt.Color.blue;
color3=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x2/landa)>=0.5 && color3==java.awt.Color.red){
color3=java.awt.Color.blue;
-12-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
color4=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x3/landa)>=0.5 && color4==java.awt.Color.red){
color4=java.awt.Color.blue;
color5=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x4/landa)>=0.5 && color5==java.awt.Color.red){
color5=java.awt.Color.blue;
color6=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x5/landa)>=0.5 && color6==java.awt.Color.red){
color6=java.awt.Color.blue;
color7=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x6/landa)>=0.5 && color7==java.awt.Color.red){
color7=java.awt.Color.blue;
color8=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x7/landa)>=0.5 && color8==java.awt.Color.red){
color8=java.awt.Color.blue;
color9=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x8/landa)>=0.5 && color9==java.awt.Color.red){
color9=java.awt.Color.blue;
color10=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x9/landa)>=0.5 && color10==java.awt.Color.red){
color10=java.awt.Color.blue;
color11=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x10/landa)>=0.5 && color11==java.awt.Color.red){
color11=java.awt.Color.blue;
color12=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x11/landa)>=0.5 && color12==java.awt.Color.red){
color12=java.awt.Color.blue;
color13=java.awt.Color.red;
}
-13-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
if (Math.sin(2*pi*t*10-2*pi*x12/landa)>=0.5 && color13==java.awt.Color.red){
color13=java.awt.Color.blue;
color14=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x13/landa)>=0.5 && color14==java.awt.Color.red){
color14=java.awt.Color.blue;
color15=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x14/landa)>=0.5 && color15==java.awt.Color.red){
color15=java.awt.Color.blue;
color16=java.awt.Color.red;
}
if (Math.sin(2*pi*t*10-2*pi*x15/landa)>=0.5 && color16==java.awt.Color.red){
color16=java.awt.Color.blue;
}
}
Acciones de los botones “Arrancar” y “Parar”
_play()
_pause()
1.2.3.2 Ondas transversales
Árbol de elementos:
Figura 6. Elementos del applet Ondas Transversales
-14-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Programa principal:
//Ecuaciones para configurar la posición de las partículas
t=t+0.025;
part=Math.sin(2*pi*t);
part1=Math.sin(2*pi*t+pi/6);
part2=Math.sin(2*pi*t+2*pi/6);
part3=Math.sin(2*pi*t+3*pi/6);
part4=Math.sin(2*pi*t+4*pi/6);
part5=Math.sin(2*pi*t+5*pi/6);
part6=Math.sin(2*pi*t+6*pi/6);
part7=Math.sin(2*pi*t+7*pi/6);
part8=Math.sin(2*pi*t+8*pi/6);
part9=Math.sin(2*pi*t+9*pi/6);
part10=Math.sin(2*pi*t+10*pi/6);
part11=Math.sin(2*pi*t+11*pi/6);
part12=Math.sin(2*pi*t+12*pi/6);
part13=Math.sin(2*pi*t+13*pi/6);
part14=Math.sin(2*pi*t+14*pi/6);
part15=Math.sin(2*pi*t+15*pi/6);
Acciones de los botones “Empezar”, “Paso a Paso” y “Parar”:
_play()
_step()
_pause()
1.2.3.3 Ondas esféricas
Árbol de elementos:
Figura 7. Elementos del applet Ondas Esféricas
-15-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Inicialización de las variables:
//Inicializo las variables
x1=0;
y1=0;
x2=0;
y2=0;
x3=0;
y3=0;
x4=0;
y4=0;
x5=0;
y5=0;
Programa principal:
//Voy emitiendo por el medio hasta que llega a una distancia proporcional a landa
if (x1<2.8){
x1=x1+0.2;
y1=y1+0.2;
}
if (x2<5.6){
x2=x2+0.2;
y2=y2+0.2;
}
if (x3<8.4){
x3=x3+0.2;
y3=y3+0.2;
}
if (x4<11.2){
x4=x4+0.2;
y4=y4+0.2;
}
if (x5<13.8){
x5=x5+0.2;
y5=y5+0.2;
}
Acción del botón “Reiniciar”:
_reset()
-16-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
1.2.3.4 Ondas de choque
Árbol de elementos:
Figura 8. Elementos del applet Ondas de Choque
Inicialización de las variables:
//Inicializo las variables de la simulación
visible0=false;
visible=false;
visible1=false;
visible2=false;
visible3=false;
visible4=false;
visible5=false;
pos_x=0;
cont=0;
radiox0=0.1;
radioy0=0.1;
radiox=0.1;
radioy=0.1;
radiox1=0.1;
radioy1=0.1;
radiox2=0.1;
radioy2=0.1;
radiox3=0.1;
radioy3=0.1;
radiox4=0.1;
radioy4=0.1;
radiox5=0.1;
radioy5=0.1;
-17-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Programa principal:
//Este código permite mover el emisor
if (pos_x<18){
pos_x=pos_x+0.1125;
}else
_pause();
//Con este voy poniendo el centro de las ondas que se emiten y las hago visibles
if (cont==20){
visible=true;
centro1=pos_x;
}
if (cont==40){
visible1=true;
centro2=pos_x;
}
if (cont==60){
visible2=true;
centro3=pos_x;
}
if (cont==80){
visible3=true;
centro4=pos_x;
}
if (cont==100){
visible4=true;
centro5=pos_x;
}
if (cont==120){
visible5=true;
centro6=pos_x;
}
if (cont==140){
visible0=true;
centro0=pos_x;
}
cont=cont+1;
//Una vez que hacemos visible las ondas vamos propagándolas
if (visible0){
radiox0=radiox0+0.08;
radioy0=radioy0+0.08;
}
if (visible){
radiox=radiox+0.08;
radioy=radioy+0.08;
-18-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
}
if (visible1){
radiox1=radiox1+0.08;
radioy1=radioy1+0.08;
}
if (visible2){
radiox2=radiox2+0.08;
radioy2=radioy2+0.08;
}
if (visible3){
radiox3=radiox3+0.08;
radioy3=radioy3+0.08;
}
if (visible4){
radiox4=radiox4+0.08;
radioy4=radioy4+0.08;
}
if (visible5){
radiox5=radiox5+0.08;
radioy5=radioy5+0.08;
}
Acciones de los botones “Empezar”, “Paso a Paso” y “Parar”:
_play()
_step()
_pause()
1.2.4 Dependencia de la velocidad de transmisión con respecto a la
temperatura
Árbol de elementos:
Figura 9. Elementos del applet variación de ‘c’ por temperatura
-19-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Inicialización de las variables:
//Se inicializan las variables de la simulación
temperatura=20;
color_resistencia=new java.awt.Color(255,255,255);
etiqueta="Tiempo para recorrer distancia: ";
etiqueta1="Tiempo de la anterior simulación: ";
x=0;
Programa principal:
//Con este código lo que hacemos es simular la propagación a través de la flecha
if (aux_dist && x<18){
x=x+2;
}
if (aux_dist==false && x<18){
x=x+1;
}
if (x==18){
_pause();
}
Acción del botón “Calcular”:
x=0;
//Se comprueba el tiempo de la simulación anterior era ms o seg para ponerlo en la
//etiqueta de tiempo anterior
if (etiqueta=="Tiempo para recorrer distancia(ms):"){
etiqueta1="Tiempo anterior(ms):";
}
if (etiqueta=="Tiempo para recorrer distancia(seg):"){
etiqueta1="Tiempo anterior(seg):";
}
tiempo_ant=tiempo;
//Cálculo los nuevos tiempos de la simulación y lo guardo
if (aux_dist){
tiempo=dist_num/c*1000;
etiqueta="Tiempo para recorrer distancia(ms):";
}
else{
tiempo=dist_num/c;
etiqueta="Tiempo para recorrer distancia(seg):";
}
_play();
-20-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Acción de la lista de materiales:
//Compruebo opción elegida y según sea guardo en ‘c’ la temperature de
//propagación, la temperatura inicial y creo una variable auxiliar para saber que
//fórmula usar para la variación de ‘c’
String str1=new String("Agua(dest)");
if(str1.equals(material)){
temperatura=20;
c=1481;
liquido=1;
}
String str2=new String("Agua(mar)");
if(str2.equals(material)){
temperatura=13;
c=1474.5;
liquido=2;
}
String str5=new String("Aire");
if(str5.equals(material)){
temperatura=20;
c=343;
liquido=3;
}
String str6=new String("Oxígeno");
if(str6.equals(material)){
temperatura=0;
c=317.2;
liquido=3;
}
String str7=new String("CO2");
if(str7.equals(material)){
temperatura=0;
c=258;
liquido=3;
}
String str8=new String("Aluminio");
if(str8.equals(material)){
temperatura=20;
c=5150;
liquido=4;
}
String str9=new String(" ");
if(str9.equals(material)){
temperatura=20;
c=0;
liquido=3;
}
-21-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
aux=temperatura;
color_resistencia=new java.awt.Color(255,255,255);
Acción de la lista de distancias:
//Compruebo la opción elegida en la lista y guardo la distancia a recorrer. Además
//inicializo una variable “aux_dist” para después usarla para saber si debo poner el
//tiempo en segundos o milisegundos
String str10=new String("30 cm");
if(str10.equals(distancia)){
dist_num=0.30;
aux_dist=true;
}
String str20=new String("1 m");
if(str20.equals(distancia)){
dist_num=1;
aux_dist=true;
}
String str30=new String("30 m");
if(str30.equals(distancia)){
dist_num=30;
aux_dist=false;
}
String str40=new String("500 m");
if(str40.equals(distancia)){
dist_num=500;
aux_dist=false;
}
String str50=new String("350 km");
if(str50.equals(distancia)){
dist_num=350000;
aux_dist=false;
}
String str80=new String(" ");
if(str80.equals(material)){
dist_num=0;
}
Acción del cuadro numérico de temperatura:
//Si aumento la temperatura pongo las resistencias en rojo, sino en azul
if (temperatura>aux){
color_resistencia=rojo;
}
else{
-22-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
color_resistencia=azul;
}
//Compruebo que tipo de elemento he elegido en la lista y según el que sea uso una
//fórmula o otra
if (liquido==1){//agua destilada
c=1403+5*temperatura0.06*Math.pow(temperatura,2)+0.0003*Math.pow(temperatura,3);
}
if (liquido==2){//agua de mar
c=a1+a2*temperatura+a3*Math.pow(temperatura,2)+a4*Math.pow(temperatura,3)+a5
*(S-35)+a6*z+a7*Math.pow(z,2)+a8*temperatura*(S35)+a9*temperatura*Math.pow(z,3);
}
if (liquido==3){//es un gas
c=c+0.6*(temperatura-aux);
}
if (liquido==4){//es un sólido
c=c;
}
aux=temperatura;
1.2.5 Reflexión y refracción de ondas
1.2.5.1 Leyes de Snell
Árbol de elementos:
Figura 10. Elementos del applet Leyes de Snell
Inicialización de las variables:
//Se inicializan las variables de la aplicación
x1=0;
y1=0;
x2=0;
-23-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
y2=0;
x3=0;
y3=0;
cambio=false;
visible=false;
visible1=false;
Z1=0;
Z2=0;
anguloi=0;
angulot=0;
c1=0;
c2=0;
alphar=0;
alphat=0;
angtaux=0;
avancext=0;
avanceyt=0;
alphar=0;
alphat=0;
simular=true;
error=false;
Programa principal:
if (y1>-20){
x1=x1+avancexr;
y1=y1-avanceyr;
//en esta parte lo único
//que hago es ir dibujando
//lo que yo genero
}
else{
cambio=true;
//cambia de medio
visible1=true;
}
if (cambio){
x2=x2+avancext;
//dibujo la transmisión y la
y2=y2-avanceyt;
//la reflexión
x3=x3+avancexr;
y3=y3+avanceyr;
}
if (y2<-30 || y3>30){
_pause();
//terminamos la simulación
}
-24-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Acción del botón “Reset”:
_reset();
Acción de la lista de materiales 1:
//Compruebo la opción elegida y guardo sus características: impedancia (Z1),
//velocidad de propagación (c1) y densidad (d1)
String str1=new String("Agua(dest)");
if(str1.equals(material1)){
Z1=1.48E6;
c1=1481;
d1=998;
}
String str2=new String("Aluminio");
if(str2.equals(material1)){
Z1=13.9E6;
c1=5150;
d1=2700;
}
String str5=new String("Aire");
if(str5.equals(material1)){
Z1=428;
c1=343;
d1=1.293;
}
String str6=new String("Oxígeno");
if(str6.equals(material1)){
Z1=453;
c1=317.2;
d1=1.43;
}
String str7=new String("CO2");
if(str7.equals(material1)){
Z1=512;
c1=258;
d1=1.98;
}
String str8=new String(" ");
if(str8.equals(material1)){
Z1=0;
c1=0;
d1=0;
}
String str9=new String("Alcohol");
if(str9.equals(material1)){
-25-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Z1=0.91E6;
c1=11500;
d1=790;
}
String str10=new String("Hormigón");
if(str10.equals(material1)){
Z1=8E6;
c1=3100;
d1=2600;
}
String str11=new String("Cuarzo");
if(str11.equals(material1)){
Z1=14.5E6;
c1=5450;
d1=2650;
}
Acción de la lista de materiales 2:
//Compruebo la opción elegida y guardo sus características: impedancia (Z2),
//velocidad de propagación (c2) y densidad (d2)
String str1=new String("Gasolina");
if(str1.equals(material2)){
Z2=1.45E6;
c2=1540;
d2=950;
}
String str2=new String("Mercurio");
if(str2.equals(material2)){
Z2=19.7E6;
c2=1450;
d2=13600;
}
String str5=new String("Hidrógeno");
if(str5.equals(material2)){
Z2=114;
c2=1269.5;
d2=0.09;
}
String str6=new String("Vapor");
if(str6.equals(material2)){
Z2=404.8;
c2=404.8;
d2=0.6;
}
String str7=new String("Estaño");
-26-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
if(str7.equals(material2)){
Z2=18E6;
c2=2500;
d2=7300;
}
String str8=new String(" ");
if(str8.equals(material2)){
Z2=0;
c2=0;
d2=0;
}
String str9=new String("Zinc");
if(str9.equals(material2)){
Z2=24E6;
c2=3400;
d2=7100;
}
String str10=new String("Corcho");
if(str10.equals(material2)){
Z2=0.12E6;
c2=500;
d2=240;
}
String str11=new String("Oro");
if(str11.equals(material2)){
Z2=39E6;
c2=2000;
d2=19300;
}
Acción del botón “Simular”:
//Compruebo que se han elegido materiales
String str1=new String(" ");
if(str1.equals(material1) || str1.equals(material2)){
error=true;
}
else{
simular=false;
//compruebo si hay transmisión
if (c2/c1*Math.sin(anguloi*Math.PI/180)<1){
//cálculo los ángulos
angulot=Math.asin(c2/c1*Math.sin(anguloi*Math.PI/180))*180/Math.PI;
angiaux=(90-anguloi)*Math.PI/180;
//Configuro el avance las flechas para que avance el ángulo elegido
avancexr=0.5*Math.cos(angiaux);
-27-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
avanceyr=0.5*Math.sin(angiaux);
veces=20/avanceyr;
longx=veces*avancexr;
//con esto pongo lo que tiene que avanzar cada onda
angtaux=(90-angulot)*Math.PI/180;
avancext=0.5*Math.cos(angtaux);
avanceyt=0.5*Math.sin(angtaux);
//Cálculo cantidades transmitidas y reflejadas
alphar=Math.pow((Z2*Math.cos(anguloi*Math.PI/180)Z1*Math.cos(angulot*Math.PI/180)),2)/Math.pow((Z2*Math.cos(anguloi*Math.PI/18
0)+Z1*Math.cos(angulot*Math.PI/180)),2);
alphat=4*Z1*Z2*Math.cos(anguloi*Math.PI/180)*Math.cos(angulot*Math.PI/180)/Ma
th.pow((Z2*Math.cos(anguloi*Math.PI/180)+Z1*Math.cos(angulot*Math.PI/180)),2);
}
else{ //se refleja todo
angulot=0;
angiaux=(90-anguloi)*Math.PI/180;
avancexr=0.5*Math.cos(angiaux);
avanceyr=0.5*Math.sin(angiaux);
veces=20/avanceyr;
longx=veces*avancexr;
//con esto pongo lo que tiene que avanzar cada onda
alphar=1;
}
if (c2>=c1){ //compruebo que halla ángulo crítico
ang_critico=Math.asin(c1/c2);
}
else{
ang_critico=0;
}
aux=(Math.pow(c1/c2,2)-1)/(Math.pow(d2/d1,2)-Math.pow(c1/c2,2));
if (aux>=0){ //compruebo si existe el angulo de transmisión
aux=1/Math.sqrt(aux);
ang_intromision=Math.atan(aux);
}
else{
ang_intromision=0;
}
visible=true;
_play();
}
-28-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
1.2.5.2 Acoplamiento entre medios
1.2.5.2.1 Teórico
Árbol de elementos:
Figura 11. Elementos del applet Acoplamiento entre medios (teórico)
Inicialización de las variables:
//Variables a inicializar
y1=0;
x1=0;
y2=0;
x3=0;
y3=0;
x2=0;
y4=0;
x4=0;
y5=0;
x5=0;
cambio=false;
cambio1=false;
visible=false;
visible1=false;
visible2=false;
Z1=0;
Z2=0;
z3=0;
c1=0;
c2=0;
z3=0;
alphar=0;
alphat=0;
alphar1=0;
alphat1=0;
-29-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
error=false;
simular=true;
ang=0;
c3=3500;
error_t=false;
Programa principal:
if (y1>-16.5){
y1=y1-avanceyt;
x1=x1+avancext;
//en esta parte lo único
//que hago es ir dibujando
//la onda generada
}
else{
cambio=true;
//cambia de medio
visible1=true;
}
if (cambio && cambio1==false){
y2=y2-avanceyt1;
//dibujo la transmisión y la
x3=x3+avancext1;
//la reflexion
if (y3<16.5){
y3=y3+avanceyt;
//tenemos en cuenta que la
x2=x2+avancext;
//reflexión no se salga
}
}
if (y2<-7){
cambio1=true;
visible2=true;
//cambiamos al segundo medio
}
if (cambio1){
if (y3<16.5){
y3=y3+avanceyt;
//la primera reflexión no se
x2=x2+avancext;
//salga de la pantalla
}
if (y4<7){
y4=y4+avanceyt1; //la reflexión no cambie otra
x4=x4+avancext1; //vez al primer medio
}
y5=y5-avanceyt2;
x5=x5+avancext2;
}
if (y5<-16){
_pause();
}
-30-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Acción del la lista de materiales 1:
//Compruebo la opción elegida y guardo sus características: impedancia (Z1),
//velocidad de propagación (c1) y densidad (d1)
String str1=new String("Agua(dest)");
if(str1.equals(material1)){
Z1=1.48E6;
c1=1481;
d1=998;
}
String str2=new String("Aluminio");
if(str2.equals(material1)){
Z1=13.9E6;
c1=5150;
d1=2700;
}
String str5=new String("Aire");
if(str5.equals(material1)){
Z1=428;
c1=343;
d1=1.293;
}
String str6=new String("Oxígeno");
if(str6.equals(material1)){
Z1=453;
c1=317.2;
d1=1.43;
}
String str7=new String("CO2");
if(str7.equals(material1)){
Z1=512;
c1=258;
d1=1.98;
}
String str8=new String(" ");
if(str8.equals(material1)){
Z1=0;
c1=0;
d1=0;
}
String str9=new String("Alcohol");
if(str9.equals(material1)){
Z1=0.91E6;
c1=11500;
d1=790;
}
String str10=new String("Hormigón");
-31-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
if(str10.equals(material1)){
Z1=8E6;
c1=3100;
d1=2600;
}
String str11=new String("Cuarzo");
if(str11.equals(material1)){
Z1=14.5E6;
c1=5450;
d1=2650;
}
Acción de la lista de materiales 2:
//Compruebo la opción elegida y guardo sus características: impedancia (Z2),
//velocidad de propagación (c2) y densidad (d2)
String str1=new String("Gasolina");
if(str1.equals(material2)){
Z2=1.45E6;
c2=1540;
d2=950;
}
String str2=new String("Mercurio");
if(str2.equals(material2)){
Z2=19.7E6;
c2=1450;
d2=13600;
}
String str5=new String("Hidrógeno");
if(str5.equals(material2)){
Z2=114;
c2=1269.5;
d2=0.09;
}
String str6=new String("Vapor");
if(str6.equals(material2)){
Z2=404.8;
c2=404.8;
d2=0.6;
}
String str7=new String("Estaño");
if(str7.equals(material2)){
Z2=18E6;
c2=2500;
d2=7300;
}
-32-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
String str8=new String(" ");
if(str8.equals(material2)){
Z2=0;
c2=0;
d2=0;
}
String str9=new String("Zinc");
if(str9.equals(material2)){
Z2=24E6;
c2=3400;
d2=7100;
}
String str10=new String("Corcho");
if(str10.equals(material2)){
Z2=0.12E6;
c2=500;
d2=240;
}
String str11=new String("Oro");
if(str11.equals(material2)){
Z2=39E6;
c2=2000;
d2=19300;
}
Acción del botón “Simular”:
//Compruebo que se halla elegido los materiales
String str1=new String(" ");
if(str1.equals(material1) || str1.equals(material2)){
error=true;
}
else{
angt=Math.asin(c3/c1*Math.sin(ang*Math.PI/180))*180/Math.PI;
//Compruebo que hay transmisión
if (c3/c1*Math.sin(ang*Math.PI/180)<1 || c2/c3*Math.sin(angt*Math.PI/180)<1){
//hay transmisión
simular=false;
//Cálculo la impedancia de acoplamiento
z3=Math.sqrt(Z1*Z2);
//Configuro el avance de las flechas
avanceyt=0.5*Math.cos(ang*Math.PI/180);
avancext=0.5*Math.sin(ang*Math.PI/180);
veces=16.5/avanceyt;
x=-veces*avancext;
-33-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
//Cálculo los ángulos necesarios
angr=ang;
angt=Math.asin(c3/c1*Math.sin(ang*Math.PI/180))*180/Math.PI;
angr1=angt;
angt1=Math.asin(c2/c3*Math.sin(angt*Math.PI/180))*180/Math.PI;
avancext1=0.5*Math.sin(angt*Math.PI/180);
avanceyt1=0.5*Math.cos(angt*Math.PI/180);
veces1=7/avanceyt1;
x6=veces1*avancext1;
avancext2=0.5*Math.sin(angt1*Math.PI/180);
avanceyt2=0.5*Math.cos(angt1*Math.PI/180);
//Cálculo cantidades reflejadas y transmitidas
alphar=Math.pow((z3-Z1),2)/Math.pow((z3+Z1),2);
alphat=4*Z1*z3/Math.pow((z3+Z1),2);
alphar1=Math.pow((Z2-z3),2)/Math.pow((Z2+z3),2);
alphat1=4*z3*Z2/Math.pow((Z2+z3),2);
visible=true;
_play();
}else{
error_t=true;
}
}
1.2.5.2.2 Real
Árbol de elementos:
Figura 12. Elementos del applet Acoplamiento entre medios (real)
Inicialización de las variables:
//Variables a inicializar
y1=0;
x1=0;
-34-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
y2=0;
x3=0;
y3=0;
x2=0;
y4=0;
x4=0;
y5=0;
x5=0;
cambio=false;
cambio1=false;
visible=false;
visible1=false;
visible2=false;
visible3=false;
Z1=0;
Z2=0;
z3=0;
c1=0;
c2=0;
z3=0;
alphar=0;
alphat=0;
alphar1=0;
alphat1=0;
error=false;
simular=true;
ang=0;
c3=3500;
material1=" ";
material2=" ";
material3=" ";
error_t=false;
Programa principal:
if (y1>-16.5){
y1=y1-avanceyt;
x1=x1+avancext;
//en esta parte lo único
//que hago es ir dibujando
//la onda generada
}
else{
cambio=true;
//cambia de medio
if (alphar*100!=0){
visible1=true;
}
visible3=true;
-35-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
}
if (cambio && cambio1==false){
y2=y2-avanceyt1;
//dibujo la transmisión y la
x3=x3+avancext1;
//la reflexión
if (y3<16.5){
y3=y3+avanceyt;
//tenemos en cuenta que la
x2=x2+avancext;
//reflexión no se salga
}
}
if (y2<-7){
cambio1=true;
visible2=true;
//cambiamos al segundo medio
}
if (cambio1){
if (y3<16.5){
y3=y3+avanceyt;
//la primera reflexión no se
x2=x2+avancext;
//salga de la pantalla
}
if (y4<7){
y4=y4+avanceyt1; //la reflexión no cambie otra
x4=x4+avancext1; //vez al primer medio
}
y5=y5-avanceyt2;
x5=x5+avancext2;
}
if (y5<-16){
_pause();
}
Acción de la lista de materiales 1:
//Compruebo la opción elegida y guardo sus características: impedancia (Z1),
//velocidad de propagación (c1) y densidad (d1)
String str1=new String("Aluminio");
if(str1.equals(material1)){
Z1=13.9E6;
c1=5150;
d1=2700;
}
String str2=new String("Hierro");
if(str2.equals(material1)){
Z1=28.5E6;
c1=3700;
d1=7700;
}
String str5=new String("Plata");
-36-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
if(str5.equals(material1)){
Z1=28.4E6;
c1=2700;
d1=10500;
}
String str6=new String("Hormigón");
if(str6.equals(material1)){
Z1=8E6;
c1=3100;
d1=2600;
}
String str7=new String("Cadmio");
if(str7.equals(material1)){
Z1=21.5E6;
c1=2500;
d1=8600;
}
String str8=new String(" ");
if(str8.equals(material1)){
Z1=0;
c1=0;
d1=0;
}
Acción de la lista de materiales 2:
//Compruebo la opción elegida y guardo sus características: impedancia (Z2),
//velocidad de propagación (c2) y densidad (d2)
String str1=new String("Cobre");
if(str1.equals(material2)){
Z2=33E6;
c2=3700;
d2=8900;
}
String str2=new String("Acero");
if(str2.equals(material2)){
Z2=39E6;
c2=5050;
d2=7700;
}
String str5=new String("Platino");
if(str5.equals(material2)){
Z2=60E6;
c2=2800;
d2=21400;
}
-37-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
String str6=new String("Antimonio");
if(str6.equals(material2)){
Z2=22E6;
c2=3400;
d2=6600;
}
String str7=new String("Oro");
if(str7.equals(material2)){
Z2=39E6;
c2=2000;
d2=19300;
}
String str8=new String(" ");
if(str8.equals(material2)){
Z2=0;
c2=0;
d2=0;
}
Acción de la lita de materiales de acoplamiento:
//Compruebo la opción elegida y guardo sus características: impedancia (Z3),
//velocidad de propagación (c3) y densidad (d3)
String str1=new String("Berilio");
if(str1.equals(material3)){
z3=21.6E6;
c3=12000;
d3=1800;
}
String str2=new String("Cobre");
if(str2.equals(material3)){
z3=33E6;
c3=3700;
d3=8900;
}
String str5=new String("Nikel");
if(str5.equals(material3)){
z3=43E6;
c3=4900;
d3=8800;
}
String str6=new String("Aluminio");
if(str6.equals(material3)){
z3=13.9E6;
c3=5150;
d3=2700;
-38-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
}
String str7=new String("Bronce");
if(str7.equals(material3)){
z3=29.8E6;
c3=3500;
d3=8500;
}
String str8=new String(" ");
if(str8.equals(material3)){
z3=0;
c3=0;
d3=0;
}
Acción del botón “Simular”:
//Compruebo que se han elegido los materiales
String str1=new String(" ");
if(str1.equals(material1) || str1.equals(material2) || str1.equals(material3)){
error=true;
}
else{
angt=Math.asin(c3/c1*Math.sin(ang*Math.PI/180))*180/Math.PI;
//Compruebo si hay transmisión
if (c3/c1*Math.sin(ang*Math.PI/180)<1 || c2/c3*Math.sin(angt*Math.PI/180)<1){
//hay transmisión
simular=false;
//Configuro el avance de las flechas
avanceyt=0.5*Math.cos(ang*Math.PI/180);
avancext=0.5*Math.sin(ang*Math.PI/180);
veces=16.5/avanceyt;
x=-veces*avancext;
//Cálculo los ángulos
angr=ang;
angt=Math.asin(c3/c1*Math.sin(ang*Math.PI/180))*180/Math.PI;
angr1=angt;
angt1=Math.asin(c2/c3*Math.sin(angt*Math.PI/180))*180/Math.PI;
//Avance flechas
avancext1=0.5*Math.sin(angt*Math.PI/180);
avanceyt1=0.5*Math.cos(angt*Math.PI/180);
veces1=7/avanceyt1;
x6=veces1*avancext1;
avancext2=0.5*Math.sin(angt1*Math.PI/180);
avanceyt2=0.5*Math.cos(angt1*Math.PI/180);
//Cantidades transmitidas
alphar=Math.pow((z3-Z1),2)/Math.pow((z3+Z1),2);
-39-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
alphat=4*Z1*z3/Math.pow((z3+Z1),2);
alphar1=Math.pow((Z2-z3),2)/Math.pow((Z2+z3),2);
alphat1=4*z3*Z2/Math.pow((Z2+z3),2);
visible=true;
_play();
}else{
error_t=true;
}
}
1.2.6 Efecto Doppler
1.2.6.1 Dos receptores estáticos y un emisor en movimiento
Árbol de elementos:
Figura 13. Elementos del applet Acoplamiento efecto Doppler (dos receptores)
Inicialización de las variables:
//Se inicializan las variables necesarias para el applet
t=0;
empieza=false;
empieza2=false;
empieza3=false;
empieza4=false;
empieza5=false;
empieza6=false;
empieza7=false;
empieza8=false;
empieza9=false;
vel_pro=0;
vel_pro2=0;
vel_pro3=0;
vel_pro4=0;
vel_pro5=0;
-40-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
vel_pro6=0;
vel_pro7=0;
vel_pro8=0;
vel_pro9=0;
Programa principal:
vel_em=vel_em+emisor;
//muevo el emisor a una velocidad constante
if (vel_em>=1 && empieza==false)
{
//empiezo a emitir la primera onda
pos=vel_em;
empieza=true;
}
if (vel_em>=2 && empieza2==false)
{
//empiezo a emitir la segunda onda
pos2=vel_em;
empieza2=true;
}
if (vel_em>=3 && empieza3==false)
{
//empiezo a emitir la tercera onda
pos3=vel_em;
empieza3=true;
}
if (vel_em>=4 && empieza4==false)
{
//empiezo a emitir la cuarta onda
pos4=vel_em;
empieza4=true;
}
if (vel_em>=5 && empieza5==false)
{
//empiezo a emitir la quinta onda
pos5=vel_em;
empieza5=true;
}
if (vel_em>=6 && empieza6==false)
{
//empiezo a emitir la sexta onda
pos6=vel_em;
empieza6=true;
}
if (vel_em>=7 && empieza7==false)
{
//empiezo a emitir la séptima onda
pos7=vel_em;
empieza7=true;
}
if (vel_em>=8 && empieza8==false)
{
//empiezo a emitir la octava onda
pos8=vel_em;
-41-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
empieza8=true;
}
if (vel_em>=9 && empieza9==false)
{
//empiezo a emitir la novena onda
pos9=vel_em;
empieza9=true;
}
if (empieza==true)
{
//propago la primera onda
vel_pro=vel_pro+propagacion;
}
if (empieza2==true)
{
//propago la segunda onda
vel_pro2=vel_pro2+propagacion;
}
if (empieza3==true)
{
//propago la tercera onda
vel_pro3=vel_pro3+propagacion;
}
if (empieza4==true)
{
//propago la cuarta onda
vel_pro4=vel_pro4+propagacion;
}
if (empieza5==true)
{
//propago la quinta onda
vel_pro5=vel_pro5+propagacion;
}
if (empieza6==true)
{
//propago la sexta onda
vel_pro6=vel_pro6+propagacion;
}
if (empieza7==true)
{
//propago la séptima onda
vel_pro7=vel_pro7+propagacion;
}
if (empieza8==true)
{
//propago la octava onda
vel_pro8=vel_pro8+propagacion;
}
if (empieza9==true)
{
//propago la novena onda
vel_pro9=vel_pro9+propagacion;
}
//termino la simulación
if (vel_em>=10.5)
{
-42-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
_pause();
}
//simulación de las gráficas
t=t+0.150;
//gráfica del primer receptor
if (vel_em<=2)
{ //calculo la frecuencia y le doy color azul
color1=java.awt.Color.BLUE;
valor1=1*Math.sin(2*Math.PI*1/((1/emisor)*propagacion-1)*t);
}
if (vel_em>2)
{ //calculo la nueva frecuencia y cambio el color para ver
color1=java.awt.Color.ORANGE;
valor1=1*Math.sin(2*Math.PI*1/((1/emisor)*propagacion+1)*t);
}
//gráfica del segundo receptor
if (vel_em<=8)
{
color2=java.awt.Color.BLUE;
valor2=1*Math.sin(2*Math.PI*1/((1/emisor)*propagacion-1)*t);
}
if (vel_em>8)
{
color2=java.awt.Color.ORANGE;
valor2=1*Math.sin(2*Math.PI*1/((1/emisor)*propagacion+1)*t);
}
Acciones de los botones “Empezar”, “Paso” y “Parar”:
_play()
_step()
_pause()
-43-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
1.2.6.2 Un receptor y un emisor
Árbol de elementos:
Figura 14. Elementos del applet Acoplamiento efecto Doppler (un receptor)
Inicialización de las variables:
//Se inicializan las variables necesarias para el applet
t=0;
empieza=false;
empieza2=false;
empieza3=false;
empieza4=false;
empieza5=false;
empieza6=false;
empieza7=false;
empieza8=false;
empieza9=false;
vel_pro=0;
vel_pro2=0;
vel_pro3=0;
vel_pro4=0;
vel_pro5=0;
vel_pro6=0;
vel_pro7=0;
vel_pro8=0;
vel_pro9=0;
Programa principal:
vel_em=vel_em+emisor;
vel_re=vel_re+receptor;
//muevo el emisor a una velocidad constante
//muevo el receptor a una velocidad constante
-44-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
if (vel_em>=1 && empieza==false)
{
//empiezo a emitir la primera onda
pos=vel_em;
empieza=true;
}
if (vel_em>=2 && empieza2==false)
{
//empiezo a emitir la segunda onda
pos2=vel_em;
empieza2=true;
}
if (vel_em>=3 && empieza3==false)
{
//empiezo a emitir la tercera onda
pos3=vel_em;
empieza3=true;
}
if (vel_em>=4 && empieza4==false)
{
//empiezo a emitir la cuarta onda
pos4=vel_em;
empieza4=true;
}
if (vel_em>=5 && empieza5==false)
{
//empiezo a emitir la quinta onda
pos5=vel_em;
empieza5=true;
}
if (vel_em>=6 && empieza6==false)
{
//empiezo a emitir la sexta onda
pos6=vel_em;
empieza6=true;
}
if (vel_em>=7 && empieza7==false)
{
//empiezo a emitir la séptima onda
pos7=vel_em;
empieza7=true;
}
if (vel_em>=8 && empieza8==false)
{
//empiezo a emitir la octava onda
pos8=vel_em;
empieza8=true;
}
if (vel_em>=9 && empieza9==false)
{
//empiezo a emitir la novena onda
pos9=vel_em;
empieza9=true;
}
if (empieza==true)
{
//propago la primera onda
-45-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
vel_pro=vel_pro+propagacion;
}
if (empieza2==true)
{
//propago la segunda onda
vel_pro2=vel_pro2+propagacion;
}
if (empieza3==true)
{
//propago la tercera onda
vel_pro3=vel_pro3+propagacion;
}
if (empieza4==true)
{
//propago la cuarta onda
vel_pro4=vel_pro4+propagacion;
}
if (empieza5==true)
{
//propago la quinta onda
vel_pro5=vel_pro5+propagacion;
}
if (empieza6==true)
{
//propago la sexta onda
vel_pro6=vel_pro6+propagacion;
}
if (empieza7==true)
{
//propago la séptima onda
vel_pro7=vel_pro7+propagacion;
}
if (empieza8==true)
{
//propago la octava onda
vel_pro8=vel_pro8+propagacion;
}
if (empieza9==true)
{
//propago la novena onda
vel_pro9=vel_pro9+propagacion;
}
//termino la simulación
if (vel_em>=10.5)
{
_pause();
}
//simulación de las gráficas
t=t+0.150;
//gráfica del primer receptor
if (vel_em<=vel_re)
{ //calculo la frecuencia y le doy color azul
-46-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
color1=java.awt.Color.BLUE;
valor1=1*Math.sin(2*Math.PI*1/((1/emisor)*propagacion-1)*t);
}
if (vel_em>vel_re)
{ //calculo la nueva frecuencia y cambio el color para ver
color1=java.awt.Color.ORANGE;
valor1=1*Math.sin(2*Math.PI*1/((1/emisor)*propagacion+1)*t);
}
Acciones de los botones “Empezar”, “Paso” y “Parar”:
_play()
_step()
_pause()
1.2.7 Atenuación
1.2.7.1 Dispersión o Scattering
Árbol de elementos:
Figura 15. Elementos del applet Scattering
Inicialización de las variables:
//Inicializo la posición de los frentes de onda longitudinal
x1=2.5;
x2=2.5;
x3=2.5;
x4=2.5;
x5=2.5;
x6=2.5;
-47-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
x7=2.5;
x8=2.5;
x9=2.5;
x10=2.5;
x11=2.5;
x12=2.5;
x13=2.5;
x14=2.5;
x15=2.5;
x16=2.5;
x17=2.5;
x18=2.5;
x19=2.5;
x20=2.5;
//Inicializo el tamaño de las variables de las ondas esféricas
ver1=0;
ver2=0;
ver3=0;
ver4=0;
ver5=0;
ver6=0;
ver7=0;
//Inicializo el tamaño de las variables de las ondas esféricas
ve1=0;
ve2=0;
ve3=0;
ve4=0;
ve5=0;
ve6=0;
ve7=0;
//Inicializo el tamaño de las variables de las ondas esféricas
v1=0;
v2=0;
v3=0;
v4=0;
v5=0;
v6=0;
v7=0;
//tamaño real de la partícula
tamaño=10;
//diametro de la partícula para mostrar
diametro=0.098624*tamaño-0.0457;
//velocidad de fase del aire a 20ºC
c=343;
f=20;
//en paso meto lo que avanza una landa en el dibujo
paso=0;
-48-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
//velocidad de propagación
vel=0.1;
//inicializo landa
landa=c/f;
//error para que landa no sea menor que la partícula
error=false;
//variable para saber cuándo se tiene que empezar a propagar las ondas esféricas
ondas_esf=false;
ondas_esf1=false;
ondas_esf2=false;
//variable para saber si ha simulado
inicio=false;
boton=true;
//Variables para saber cuando llegan los US a las partículas
cambio=false;
cambio1=false;
cambio2=false;
Programa principal:
//Para parar el avance de la onda longitudinal en caso de que el diámetro
//y landa sea del mismo orden (la paro al llegar a la partícula)
if (tamaño>=(0.8*landa) && tamaño<=(1.2*landa)){
//Repartición de cantidad repartida entre ondas planas y ondas esféricas
if (tamaño<=11.433 && cambio2==false){
cambio2=true;
por=0.2624*tamaño-2.2;
antes=grosorE;
grosorE=antes*por;
grosorP=antes-grosorE;
}if (tamaño>11.433 && cambio2==false){
cambio2=true;
por=-0.2624*tamaño+3.8;
grosorE=antes*por;
grosorP=antes-grosorE;
}
if (x7<14 && x8<14 && x15<14 && x9<14 && x10<14 && x11<14 && x12<14 &&
x13<14 && x14<14){
if (x1<(2.5+paso)){
x1=x1+vel;
}
if (x2<(2.5+2*paso)){
x2=x2+vel;
}
-49-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
if (x3<(2.5+3*paso)){
x3=x3+vel;
}
if (x4<(2.5+4*paso)){
x4=x4+vel;
}
if (x5<(2.5+5*paso)){
x5=x5+vel;
}
if (x6<(2.5+6*paso)){
x6=x6+vel;
}
if (x7<(2.5+7*paso)){
x7=x7+vel;
}
if (x8<(2.5+8*paso)){
x8=x8+vel;
}
if (x9<(2.5+9*paso)){
x9=x9+vel;
}
if (x10<(2.5+10*paso)){
x10=x10+vel;
}
if (x11<(2.5+11*paso)){
x11=x11+vel;
}
if (x12<(2.5+12*paso)){
x12=x12+vel;
}
if (x13<(2.5+13*paso)){
x13=x13+vel;
}
if (x14<(2.5+14*paso)){
x14=x14+vel;
}
if (x15<(2.5+15*paso)){
x15=x15+vel;
}
if (x16<(2.5+16*paso)){
x16=x16+vel;
}
if (x17<(2.5+17*paso)){
x17=x17+vel;
}
if (x18<(2.5+18*paso)){
x18=x18+vel;
-50-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
}
if (x19<(2.5+19*paso)){
x19=x19+vel;
}
if (x20<(2.5+20*paso)){
x20=x20+vel;
}
}else{
ondas_esf=true;
}
//simulo en caso de que la partícula sea menor que landa
}else{if (tamaño<landa){
if (x11<20.2 && x12<20.2 && x13<20.2 && x14<20.2 && x15<20.2 && x16<20.2 &&
x17<20.2 && x18<20.2 && x19<20.2 && x20<20.2){
if (x1<(2.5+paso)){
x1=x1+vel;
}
if (x2<(2.5+2*paso)){
x2=x2+vel;
}
if (x3<(2.5+3*paso)){
x3=x3+vel;
}
if (x4<(2.5+4*paso)){
x4=x4+vel;
}
if (x5<(2.5+5*paso)){
x5=x5+vel;
}
if (x6<(2.5+6*paso)){
x6=x6+vel;
}
if (x7<(2.5+7*paso)){
x7=x7+vel;
}
if (x8<(2.5+8*paso)){
x8=x8+vel;
}
if (x9<(2.5+9*paso)){
x9=x9+vel;
}
if (x10<(2.5+10*paso)){
x10=x10+vel;
}
if (x11<(2.5+11*paso)){
x11=x11+vel;
}
-51-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
if (x12<(2.5+12*paso)){
x12=x12+vel;
}
if (x13<(2.5+13*paso)){
x13=x13+vel;
}
if (x14<(2.5+14*paso)){
x14=x14+vel;
}
if (x15<(2.5+15*paso)){
x15=x15+vel;
}
if (x16<(2.5+16*paso)){
x16=x16+vel;
}
if (x17<(2.5+17*paso)){
x17=x17+vel;
}
if (x18<(2.5+18*paso)){
x18=x18+vel;
}
if (x19<(2.5+19*paso)){
x19=x19+vel;
}
if (x20<(2.5+20*paso)){
x20=x20+vel;
}else{
boton=true;
_pause();
}
}else{
boton=true;
_pause();
}
//si landa es más pequeño que la partícula estaríamos en el caso de transmisión entre
//medios
}else{
error=true;
boton=true;
_pause();
}
}
//Simulación de la propagación de las ondas esféricas de la primera partícula
if (ondas_esf==true){
if ((ver1/1.75)<2*paso){
ver1=ver1+2*vel;
-52-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
}
if ((ver2/1.75)<(4*paso)){
ver2=ver2+2*vel;
}
if ((ver3/1.75)<(6*paso)){
ver3=ver3+2*vel;
}
if ((ver4/1.75)<(8*paso)){
ver4=ver4+2*vel;
}
if ((ver5/1.75)<(10*paso)){
ver5=ver5+2*vel;
}
if ((ver6/1.75)<(12*paso)){
ver6=ver6+2*vel;
}
if ((ver7/1.75)<(14*paso)){
ver7=ver7+2*vel;
}else{
_pause();
boton=true;
}
}
//Simulación de la propagación de las ondas esféricas de la segunda partícula
if (x11>=15.5){
ondas_esf1=true;
//División de energía
if (tamaño<=11.433 && cambio==false){
cambio=true;
por=0.2624*tamaño-2.2;
antes=grosorP;
grosorE1=antes*por;
grosorP=antes-grosorE1;
}if (tamaño>11.433 && cambio==false){
cambio=true;
por=-0.2624*tamaño+3.8;
antes=grosorP;
grosorE1=antes*por;
grosorP=antes-grosorE1;
}
if ((ve1/1.75)<2*paso){
ve1=ve1+3*vel;
}
if ((ve2/1.75)<(4*paso)){
ve2=ve2+3*vel;
-53-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
}
if ((ve3/1.75)<(6*paso)){
ve3=ve3+3*vel;
}
if ((ve4/1.75)<(8*paso)){
ve4=ve4+3*vel;
}
if ((ve5/1.75)<(10*paso)){
ve5=ve5+3*vel;
}
if ((ve6/1.75)<(12*paso)){
ve6=ve6+3*vel;
}
if ((ve7/1.75)<(14*paso)){
ve7=ve7+3*vel;
}
}
//Simulación de la propagación de las ondas esféricas de la tercera partícula
if (x13>=17.5){
ondas_esf2=true;
//División de energía
if (tamaño<=11.433 && cambio1==false){
cambio1=true;
por=0.2624*tamaño-2.2;
antes=grosorP;
grosorE2=antes*por;
grosorP=antes-grosorE2;
}if (tamaño>11.433 && cambio1==false){
cambio1=true;
por=-0.2624*tamaño+3.8;
antes=grosorP;
grosorE2=antes*por;
grosorP=antes-grosorE2;
}
if ((v1/1.75)<2*paso){
v1=v1+3*vel;
}
if ((v2/1.75)<(4*paso)){
v2=v2+3*vel;
}
if ((v3/1.75)<(6*paso)){
v3=v3+3*vel;
}
if ((v4/1.75)<(8*paso)){
v4=v4+3*vel;
-54-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
}
if ((v5/1.75)<(10*paso)){
v5=v5+3*vel;
}
if ((v6/1.75)<(12*paso)){
v6=v6+3*vel;
}
if ((ve7/1.75)<(14*paso)){
v7=v7+3*vel;
}
}
Acción del botón “Simular/Reset”:
//Limito la frecuencia de simulación entre 20 y 40kHz
if (inicio==false){
if (f<20){
f=20;
}
if (f>40){
f=40;
}
landa=c/f;
//Calculo el valor que tiene que avanzar en cada longitud de onda, para que tenga
//todas las medidas relación
paso=-0.043952*f+2.524747;
boton=false;
inicio=true;
_play();
}
else{
_reset();
}
Acción del cuadro numérico del diámetro:
//Hago que la partícula tenga el tamaño para mostrar en relación con la longitud de
//onda
diametro=0.098624*tamaño-0.0457;
Acción del cuadro numérico de la frecuencia:
//Calculo la longitud de onda de la simulación
landa=c/f;
-55-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
1.2.7.2 Difracción
Árbol de elementos:
Figura 16. Elementos del applet de Difracción
Inicialización de las variables:
//Variables a inicializar
f=20;
c=343;
landa=c/f;
r=20;
Lf=Math.pow(r,2)/landa;
theta=Math.asin(1.22*landa/(2*r))*180/Math.PI;
y=8.8*Math.tan(theta*Math.PI/180);
Acción al arrastrar el Scrollbar de la frecuencia:
//Cambio las variables
Lf=Math.pow(r,2)/landa;
theta=Math.asin(1.22*landa/(2*r))*180/Math.PI;
landa=c/f;
y=8.8*Math.tan(theta*Math.PI/180);
Acción al arrastrar el Scrollbar del radio:
//Cambio las variables
Lf=Math.pow(r,2)/landa;
theta=Math.asin(1.22*landa/(2*r))*180/Math.PI;
y=8.8*Math.tan(theta*Math.PI/180);
-56-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
1.2.7.3 Absorción
Árbol de elementos:
Figura 17. Elementos del applet de Absorción
Inicialización de las variables:
//Variables a inicializar
f=60;
Io=200;
ate=Io*0.708;
dist=(Math.log(ate/Io))/(-7.48966*Math.pow(10,-5)*f);
Función a mostrar:
En eje ‘x’:
"x"
En eje ‘y’:
"Io*Math.exp(-7.48966*Math.pow(10,-5)*f*x)"
Acción del cuadro numérico de la frecuencia:
//Limito la frecuencia a entre 20 y 100 kHz
if (f<20){
f=20;
}
if (f>100){
f=100;
}
//Calculo la distancia a la que se atenúa 3 dBs
dist=(Math.log(ate/Io))/(-7.48966*Math.pow(10,-5)*f);
-57-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO I. CÓDIGO DE LOS APPLETS
Acción al arrastrar el Scrollbar:
//Calculo de la distancia a la que se atenúa 3 dBs
dist=(Math.log(ate/Io))/(-7.48966*Math.pow(10,-5)*f);
-58-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
HERRAMIENTA DIDÁCTICA
INTERACTIVA PARA EL
APRENDIZAJE DE LOS
ULTRASONIDOS
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL
APRENDIZAJE
Javier Cariñanos Rodríguez
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
ÍNDICE
1 INTRODUCCIÓN ..................................................................................................................................... 3
2 BASE DE DATOS (MYSQL) ...................................................................................................................... 4
3 LOGIN.JSP .............................................................................................................................................. 6
4 USUARIONUEVO.JSP ............................................................................................................................. 8
5 MENSAJE.JSP ....................................................................................................................................... 11
6 MENU.JSP............................................................................................................................................ 14
7 INSERTARPREGUNTA.JSP .................................................................................................................... 18
8 MENSAJE2.JSP ..................................................................................................................................... 23
9 LISTADOPREGUNTAS.JSP .................................................................................................................... 29
10 MENSAJE3.JSP ................................................................................................................................... 34
11 RESULTADOS ..................................................................................................................................... 39
12 RESULTADOERROR.JSP...................................................................................................................... 43
13 TEST.JSP ............................................................................................................................................ 49
14 CORRECCION.JSP ............................................................................................................................... 55
15 TIPOTEST.JSP ..................................................................................................................................... 64
16 MENSAJE4.JSP ................................................................................................................................... 68
17 MENSAJE5.JSP ................................................................................................................................... 70
18 TEST2.JSP .......................................................................................................................................... 72
19 TEST3.JSP .......................................................................................................................................... 86
20 CORRECCION2.JSP ............................................................................................................................. 90
21 CORRECCION3.JSP ........................................................................................................................... 100
22 PRUEBA_NOTA.JSP.......................................................................................................................... 109
23 PRUEBA_TEMAS.JSP ........................................................................................................................ 112
24 RESULTADOPERSONAL.JSP .............................................................................................................. 115
25 RESULTADOPERSONAL2.JSP ............................................................................................................ 118
26 RESULTADOTEMA.JSP ..................................................................................................................... 121
27 MENSAJE6.JSP ................................................................................................................................. 127
28 NUMPREGUNTAS.JSP ...................................................................................................................... 130
-2-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
1 INTRODUCCIÓN
El código que se incluye en el presente documento es el realizado para
construir la herramienta del seguimiento del aprendizaje.
Se expone tanto el código MySQL para la realización de la base de datos y
el código jsp para la gestión de la misma.
La función de cada página se explica tanto en la memoria como en el
pliego de condiciones. Las páginas que no están explicadas en los documentos
mencionados son páginas intermedias sin interés para el usuario, que se
encargan en la mayoría de los casos de guardar lo necesario en la base de datos
(como por ejemplo las preguntas, el tipo de test…).
-3-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
2 BASE DE DATOS (MYSQL)
rem Creación Base de Datos: PFC
create table PREGUNTAS
(CodPregunta
number(3),
Clase
varchar2(50),
Enunciado
varchar2(200),
Tema
number(38),
Validada
char(1),
constraint pk_pregunta primary key (CodPregunta))
;
create table RESBUENAS
(CodResBuena
number(3),
Respuesta
varchar2(200),
CodPregunta number(3),
Correcta
char(1),
constraint pk_ResBuena primary key (CodResBuena),
constraint fk_cod_pregunta foreign key (CodPregunta) references
PREGUNTAS)
;
create table ERRORES
(CodError number(3),
CodUsuario
number(20),
Tema number(3),
NumErrores number(3),
constraint pk_ResMala primary key (CodError),
constraint fk_cod_res_buena foreign key (CodUsuario) references
USUARIOS)
;
create table PRE_TEST
(Codigo
number(3),
CodPregunta number(3),
constraint pk_ResMala primary key (Codigo),
constraint fk_cod_res_buena foreign key (CodPregunta) references
PREGUNTAS)
;
create table
TEST_PRE
(CodResultado number(3),
CodPregunta number(3),
Acierto char(1),
constraint pk_ResMala primary key (CodResultado),
constraint fk_cod_res_buena foreign key (CodPregunta) references
PREGUNTAS)
;
create table USUARIOS
(CodUsuario
number(3),
Nombre
varchar2(100),
Apellidos
varchar2(100),
Nick varchar2(20),
Pass varchar2(20),
Tipo varchar2(10),
Test number(3),
constraint pk_Usuarios primary key (CodUsuario))
-4-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
;
create table RESULTADOS
(CodResultado number(3),
CodUsuario
number(3),
Fecha date,
NumAciertos number(3),
constraint pk_Resultado primary key (CodResultado),
constraint fk_cod_usuario foreign key (CodUsuario) references
USUARIOS)
;
-5-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
3 LOGIN.JSP
<%@ page import="java.sql.*" %>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%--Recuperar informaci�n caso de retorno--%>
<%String rellenado = request.getParameter ("rellenado");
%>
<title>LOGING</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<p align="right"><a href='index.html'>Volver al curso interactivo</a></p>
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center>Introduce tu usuario y la contraseña><br><br>
<%--Formulario de registro--%>
<form method="POST" action='Menu.jsp' >
<table border="0" cellspacing="5">
<tr>
<th align="left">Usuario:</th>
<td align="left"><input type="text" name="usuario"></td>
</tr>
<tr>
<th align="left">Contrase�/span></th>
<td align="left"><input type="password" name="contrasena"></td>
</tr>
</table>
<%--Mensaje en caso de retorno--%>
<%if (rellenado!=null && rellenado.equals("false")){%>
Usuario o contrase�ncorrectos
<%}%>
-6-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<br>
<input type="reset" value="Borrar">&nbsp&nbsp&nbsp<input type="submit"
value="Registrarse"><br><br>
</form></center>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a href='UsuarioNuevo.jsp'>Inscribirse...</a>
</td>
</tr>
</table>
</body>
</html>
-7-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
4 USUARIONUEVO.JSP
<%@ page import="java.sql.*" %>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
//Campos que te devuelve en caso de faltar algn campo por rellenar
String rellenado = request.getParameter ("rellenado");
String nombre = request.getParameter ("nombre");
String apellidos = request.getParameter ("apellidos");
String nick = request.getParameter ("nick");
String pass = request.getParameter ("pass");
String tipo = request.getParameter ("tipo");
//Para cuando vienes por primera vez desde LOGING
if(nombre==null || apellidos==null || nick==null || pass==null){
nombre="";
apellidos="";
nick="";
pass="";
}
%>
<title>USUARIO NUEVO</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center>
<form method="POST" action='Mensaje.jsp' >
<table border="0" cellspacing="5">
-8-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%--rellenado variable de la p�na mensaje que comprueba los campos vacios--%>
<%if(rellenado!=null && rellenado.equals("false")){%>
<tr align="center">
Tiene que rellenar todos los campos del formulario
</tr>
<%}%>
<tr>
<th align="left">Nombre:</th>
<td align="left"><input type="text" name="nombre" size="20" value=<%=nombre%>></td>
</tr>
<tr>
<th align="left">Apellidos:</th>
<td align="left"><input type="text" name="apellidos" size="40"
value=<%=apellidos%>></td>
</tr>
<tr>
<th align="left">Nick:</th>
<td align="left"><input type="text" name="nick" value=<%=nick%>></td>
</tr>
<tr>
<th align="left">Contrase�/span></th>
<td align="left"><input type="password" name="pass" value=<%=pass%>></td>
</tr>
<tr>
<th align="left">Tipo:</th>
<td align="left">
<%--Solo puede ser alumno--%>
<select name="tipo">
<option selected="true">Alumno
</select>
</td>
</tr>
</table>
<br>
<input type="reset" value="Borrar">&nbsp&nbsp&nbsp<input type="submit"
value="Guardar"><br><br>
-9-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
</form></center>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a href='Login.jsp'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-10-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
5 MENSAJE.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
Boolean rellenado=true;
//Datos del usuario a guardar
String nombre = request.getParameter ("nombre");
String apellidos = request.getParameter ("apellidos");
String nick = request.getParameter ("nick");
String pass = request.getParameter ("pass");
String tipo = request.getParameter ("tipo");
if(nombre=="" || apellidos=="" || nick=="" || pass==""){
rellenado=false;
}
//Si algun campo vacio retorna a la pagina UsuarioNuevo
if(rellenado==false){
%>
<%--En caso de que falte algn dato vuelve a la p�na anterior y devuelve los
parametros para no tener que volver a rellenar--%>
<jsp:forward page="UsuarioNuevo.jsp">
<jsp:param name="nombre" value="<%=nombre%>"/>
<jsp:param name="apellidos" value="<%=apellidos%>"/>
<jsp:param name="nick" value="<%=nick%>"/>
<jsp:param name="pass" value="<%=pass%>"/>
<jsp:param name="tipo" value="<%=tipo%>"/>
<jsp:param name="rellenado" value="false"/>
</jsp:forward>
<%
-11-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
}
else{
//Guarda los datos como un usuario nuevo
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
//Autonumerico para el codigo del usuario
//Busca en la base de datos el nmero mἯspan>ximo
String orden="select max(CODUSUARIO) as maximo from USUARIOS";
ResultSet rset=stmt.executeQuery(orden);
int cod=0;
//se�pan>alo con el puntero la direcci�pan>n en la base de datos del mἯspan>ximo
while(rset.next()){
cod=rset.getInt("maximo");
}
//sumas 1 al ltimo c�pan>digo de usuario creado
cod=cod+1;
//Guardo el usuario en la base de datos
orden="INSERT INTO USUARIOS (CODUSUARIO, NOMBRE, APELLIDOS, NICK, PASS, TIPO)"+
"VALUES("+cod+", '"+nombre+"', '"+apellidos+"', '"+nick+"', '"+pass+"', '"+tipo+"')";
int n=stmt.executeUpdate(orden);
-12-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
rset.close();
stmt.close();
con.close();
}
%>
<title>MENSAJE</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<br><br><center>
El<b> <%=tipo%></b> ha sido guardado correctamente con los datos:<br><br>
<%--Muestra los datos del usuario--%>
Nombre: <%=apellidos%>, <%=nombre%><br>
Nick: <%=nick%><br>
Contrase�<%=pass%><br><br><br>
<a href='Login.jsp'>Volver...</a>
</center>
</td>
</tr>
</table>
</body>
</html>
-13-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
6 MENU.JSP
<%@ page import="java.sql.*" %>
<%@ page errorPage="/Errores.jsp" %>
<html>
<head>
<%
Boolean rellenado=true;
//Variable codUsu para cuando el alumno hace el test se guarde su c�pan>digo en el resultado
int codUsu=0;
//Para si vuelve desde cualquier otra pἯspan>gina que no sea desde LOGIN
String tipo = request.getParameter ("tipo");
//Conecta
//Recojo parametros enviados desde LOGIN
String usu = request.getParameter ("usuario");
String contrasena = request.getParameter ("contrasena");
if (usu=="" || contrasena==""){
rellenado=false;
}
if(rellenado==false){%>
<jsp:forward page="Login.jsp">
<jsp:param name="rellenado" value="false"/>
</jsp:forward>
<%}
/*//Conexi�pan>n con la base de datos
String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
-14-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
//Busca el usuario dentro de la tabla de la base de datos
String orden="select * from USUARIOS where nick ='"+usu+"' and pass='"+contrasena+"'";
ResultSet rset=stmt.executeQuery(orden);
while(rset.next()){
tipo=rset.getString("TIPO");
codUsu=rset.getInt("CODUSUARIO");
}
if (codUsu == 0){
codUsu = Integer.parseInt(request.getParameter ("codUsu"));
}%>
<title>MENU</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<p align="right"><a href='Login.jsp'>Cerrar sesi�span></a></p>
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<%--Menu de la aplicacion--%>
<h1>Opciones:</h1>
<br>
-15-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<ul>
<%--Miro el tipo de usuario y le muestro sus opciones--%>
<%if(tipo.equals("Alumno")){
orden="select TEST from USUARIOS where CODUSUARIO=1";
rset=stmt.executeQuery(orden);
while(rset.next()){
if (rset.getString("TEST").equals("1")){%>
<li>1.<a href='Test.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Hacer
Test</a></li><br><br>
<%}
else if(rset.getString("TEST").equals("2")){%>
<li>1.<a href='Test2.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Hacer
Test</a></li><br><br>
<%}
else{%>
<li>1.<a href='Test3.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Hacer
Test</a></li><br><br>
<%}
}
}else{%>
<li>1.<a href='InsertarPregunta.jsp?tipo=<%=tipo%>'>Crear pregunta
nueva</a></li><br><br>
<li>2.<a href='ListadoPreguntas.jsp?tipo=<%=tipo%>'>Modificar
pregunta</a></li><br><br>
<li>3.<a href='TipoTest.jsp?tipo=<%=tipo%>'>Elegir tipo de Test</a></li><br><br>
<li>4.<a href='NumPreguntas.jsp?tipo=<%=tipo%>'>Elegir el nmero de preguntas por
Test</a></li><br><br>
<li>5.<a href='Resultados.jsp?tipo=<%=tipo%>'>Ver notas de los
Test</a></li><br><br>
<li>6.<a href='ResultadoPersonal.jsp?tipo=<%=tipo%>'>Ver resultados de los
Test</a></li><br><br>
<li>7.<a href='ResultadoError.jsp?tipo=<%=tipo%>'>Ver errores por
temas</a></li><br><br>
<li>8.<a href='/PFC/jspdemo/ResultadoTema.jsp?tipo=<%=tipo%>'>Ver errores de los
temas por Test </a></li><br><br>
<%}%>
</ul>
-16-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
</td>
</tr>
</table>
<br><br>
<%
rset.close();
stmt.close();
con.close();
%>
</body>
</html>
-17-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
7 INSERTARPREGUNTA.JSP
<html>
<head>
<%
int i=1;
int seleccionada=0;
//Devolver usuario a MENU
String tipo = request.getParameter ("tipo");
//Por si le das a guardar y falta un campo, que no se pierda lo rellenado
String clase = request.getParameter ("clase");
String pregunta = request.getParameter ("pregunta");
String respuesta = request.getParameter ("respuesta");
String respuesta2 = request.getParameter ("respuesta2");
String respuesta3 = request.getParameter ("respuesta3");
String vyf = request.getParameter ("vyf");
String tema = request.getParameter ("tema");
if(clase==null){
clase="";
}
if(pregunta==null){
pregunta="";
}
if(respuesta==null){
respuesta="";
}
if(respuesta2==null){
respuesta2="";
}
-18-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
if(respuesta3==null){
respuesta3="";
}
//En caso de null al entrar en la pἯspan>gina se le manda como tema seleccionado el 1
if (tema==null){
seleccionada=1;
}
else{
seleccionada = Integer.parseInt(tema);
}
%>
<title>INSERTAR PREGUNTA</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center>
<%--Select para elegir el tipo de la pregunta--%>
<form method="POST" action='InsertarPregunta.jsp' >
<select name="clase">
<%--Para que siga saliendo la opci�legida al darle a Guardar--%>
<%if(clase==""){%>
<option selected="true">
<option>Verdadero y Falso
<option>Num鲩ca
<option>Respuesta Larga
<%}
else{
if(clase.equals("Verdadero y Falso")){%>
<option selected="true">Verdadero y Falso
<option>Num鲩ca
<option>Respuesta Larga
<%}
-19-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
else if(clase.equals("Numerica")){%>
<option>Verdadero y Falso
<option selected="true">Num鲩ca
<option>Respuesta Larga
<%}
else{%>
<option>Verdadero y Falso
<option>Num鲩ca
<option selected="true">Respuesta Larga
<%}
}%>
</select>
<input type="submit" value="Ok">
</form>
<%--Formulario de registro--%>
<form method="POST" action='Mensaje2.jsp?clase=<%=clase%>&tipo=<%=tipo%>'>
<%if(clase==null || clase==""){%>
Elija el tipo de pregunta antes
<%}
else{%>
<%--A partir de aqui ya he elegido la opci� voy guardar la pregunta--%>
<table border="0" cellspacing="5">
<%--Creo el input para meter la pregunta, ya que siempre va estar--%>
<tr>
<th align="left">Pregunta:</th>
<td align="left"><input type="text" name="pregunta" size="50"
value=<%=pregunta%>></td>
</tr>
<tr>
<%--Observo el tipo de pregunta elegida y creo los input necesarios para esa pregunta--%>
<th align="left">Respuesta:</th>
<td align="left">
<%if(clase.equals("Verdadero y Falso")){
if(vyf==null){
%>
<input type="radio" name="vyf" value="verdadero">Verdadero</input>
-20-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<input type="radio" name="vyf" value="falso">Falso</input>
<%}
//Para si vuelve que ya este elegida la opci�pan>n
else if(vyf.equals("verdadero")){%>
<input type="radio" name="vyf" value="verdadero" CHECKED>Verdadero</input>
<input type="radio" name="vyf" value="falso">Falso</input>
<%}else{%>
<input type="radio" name="vyf" value="verdadero" >Verdadero</input>
<input type="radio" name="vyf" value="falso" CHECKED>Falso</input>
<%}
}
else if(clase.equals("Respuesta Larga")){%>
<input type="text" name="respuesta" size="50" value=<%=respuesta%>>
</td>
</tr>
<tr>
<th align="left">Incorrectas:</th>
<td align="left"><input type="text" name="respuesta2" size="50"
value=<%=respuesta2%>></td>
</tr>
<tr>
<th align="left"></th>
<td align="left"><input type="text" name="respuesta3" size="50"
value=<%=respuesta3%>>
<%}
else{%>
<input type="text" name="respuesta" size="10" value=<%=respuesta%>>
<%}%>
</td>
</tr>
<tr>
<th align="left">Tema:</th>
<td align="left">
<select name="tema">
<% for (i=1; i<=8; i++){
if (i == seleccionada){%>
<option selected="true"><%=i%>
-21-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%}else{%>
<option><%=i%>
<%}%>
<%}%>
<option>TV
</select>
</td>
</tr>
</table>
<br>
<%--Manda a Mensaje2--%>
<input type="reset" value="Borrar">&nbsp&nbsp&nbsp<input type="submit"
value="Guardar"><br><br>
<%}
int codUsu=1;
%>
</form></center>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-22-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
8 MENSAJE2.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
Boolean rellenado=true;
String tipo = request.getParameter ("tipo");
//Datos de las preguntas recogidas en InsetarPregunta
String clase = request.getParameter ("clase");
String pregunta = request.getParameter ("pregunta");
String respuesta = request.getParameter ("respuesta");
String respuesta2 = request.getParameter ("respuesta2");
String respuesta3 = request.getParameter ("respuesta3");
String vyf = request.getParameter ("vyf");
String tema = request.getParameter ("tema");
//Se observa si falta algo se vuelve a la pἯspan>gina anterior
if(clase.equals("Verdadero y Falso")){
if(pregunta=="" || vyf==null){
rellenado=false;
}
}
else if(clase.equals("Respuesta Larga")){
if(pregunta=="" || respuesta=="" || respuesta2=="" || respuesta3==""){
rellenado=false;
}
}
else{
if(pregunta=="" || respuesta==""){
rellenado=false;
}
}
-23-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
//Si algun campo estᠼ/span>vacio retorna a la pagina InsertarPregunta
if(rellenado==false){
%>
<jsp:forward page="InsertarPregunta.jsp">
<jsp:param name="clase" value="<%=clase%>"/>
<jsp:param name="pregunta" value="<%=pregunta%>"/>
<jsp:param name="respuesta" value="<%=respuesta%>"/>
<jsp:param name="respuesta2" value="<%=respuesta2%>"/>
<jsp:param name="respuesta3" value="<%=respuesta3%>"/>
<jsp:param name="tema" value="<%=tema%>"/>
<jsp:param name="rellenado" value="false"/>
</jsp:forward>
<%
}
else{
String validada="";
if (tema.equals("TV")){
tema="9";
validada="v";
}
else{
validada="f";
}
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
-24-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
//Autonum鼯span>rico para el c�pan>digo de pregunta
String orden="select max(CODPREGUNTA) as maximo from PREGUNTAS";
ResultSet rset=stmt.executeQuery(orden);
int codPregunta=0;
while(rset.next()){
codPregunta=rset.getInt("maximo");
}
codPregunta=codPregunta+1;
//Autonum鼯span>rico de respuesta
orden="select max(CODRESBUENA) as maximo from RESBUENAS";
rset=stmt.executeQuery(orden);
int codRespuesta=0;
while(rset.next()){
codRespuesta=rset.getInt("maximo");
}
codRespuesta=codRespuesta+1;
int n=0;
//Mira el tipo de pregunta es, y la guarda
if(clase.equals("Respuesta Larga")){
orden="INSERT INTO PREGUNTAS (CODPREGUNTA, ENUNCIADO, CLASE, TEMA, VALIDADA)"+
"VALUES("+codPregunta+", '"+pregunta+"', '"+clase+"', "+tema+", '"+validada+"')";
n=stmt.executeUpdate(orden);
orden="INSERT INTO RESBUENAS (CODRESBUENA, RESPUESTA, CODPREGUNTA, CORRECTA)"+
"VALUES("+codRespuesta+", '"+respuesta+"', "+codPregunta+", 'v')";
n=stmt.executeUpdate(orden);
codRespuesta=codRespuesta+1;
orden="INSERT INTO RESBUENAS (CODRESBUENA, RESPUESTA, CODPREGUNTA, CORRECTA)"+
"VALUES("+codRespuesta+", '"+respuesta2+"', "+codPregunta+", 'f')";
n=stmt.executeUpdate(orden);
-25-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
codRespuesta=codRespuesta+1;
orden="INSERT INTO RESBUENAS (CODRESBUENA, RESPUESTA, CODPREGUNTA, CORRECTA)"+
"VALUES("+codRespuesta+", '"+respuesta3+"', "+codPregunta+", 'f')";
n=stmt.executeUpdate(orden);
}
else if(clase.equals("Verdadero y Falso")){
orden="INSERT INTO PREGUNTAS (CODPREGUNTA, ENUNCIADO, CLASE, TEMA, VALIDADA)"+
"VALUES("+codPregunta+", '"+pregunta+"', '"+clase+"', "+tema+", '"+validada+"')";
n=stmt.executeUpdate(orden);
orden="INSERT INTO RESBUENAS (CODRESBUENA, RESPUESTA, CODPREGUNTA, CORRECTA)"+
"VALUES("+codRespuesta+", '"+vyf+"', "+codPregunta+", 'v')";
n=stmt.executeUpdate(orden);
}
else{
orden="INSERT INTO PREGUNTAS (CODPREGUNTA, ENUNCIADO, CLASE, TEMA, VALIDADA)"+
"VALUES("+codPregunta+", '"+pregunta+"', '"+clase+"', "+tema+", '"+validada+"')";
n=stmt.executeUpdate(orden);
orden="INSERT INTO RESBUENAS (CODRESBUENA, RESPUESTA, CODPREGUNTA, CORRECTA)"+
"VALUES("+codRespuesta+", '"+respuesta+"', "+codPregunta+", 'v')";
n=stmt.executeUpdate(orden);
}
rset.close();
stmt.close();
con.close();
}
%>
<title>MENSAJE2</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
-26-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<br><br><center>
<h3>La pregunta ha sido guardada correctamente</h3><br><br>
<table border="0" cellspacing="5">
<tr>
<th align="left"><b>Pregunta:</b></th>
<td align="left"><%=pregunta%></td>
</tr>
<%if(clase.equals("Respuesta Larga")){%>
<tr>
<th align="left"><b>Respuesta correcta:</b></th>
<td align="left"><%=respuesta%></td>
</tr>
<tr>
<th align="left"><b>Respuestas Incorrectas:</b></th>
<td align="left"><%=respuesta2%></td>
</tr>
<tr>
<th align="left"></th>
<td align="left"><%=respuesta3%></td>
</tr>
<%}
else if(clase.equals("Verdadero y Falso")){%>
<tr>
<th align="left"><b>Respuesta:</b></th>
<td align="left"><%=vyf%></td>
</tr>
<%}
else{%>
<tr>
<th align="left"><b>Respuesta:</b></th>
<td align="left"><%=respuesta%></td>
</tr>
<%}%>
<tr>
<th align="left"><b>Tema:</b></th>
-27-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<td align="left"><%=tema%></td>
</tr>
</table>
<br>
<%
int codUsu=1;
%>
<a href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</center>
</td>
</tr>
</table>
</body>
</html>
-28-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
9 LISTADOPREGUNTAS.JSP
<%@ page import="java.sql.*" %>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
int j=1;
int seleccionada=0;
//Para cuando vuelves a Menu
String tipo = request.getParameter ("tipo");
String pregunta = request.getParameter ("pregunta");
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
int i=0;
%>
<title>LISTADOPREGUNTAS</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
-29-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<td>
<%
//Si CodPregunta es null muestra el listado de todoas las preguntas, sino la pregunta
seleccionada para modificar
if(pregunta==null){
String orden="SELECT * FROM PREGUNTAS ORDER BY CODPREGUNTA";
ResultSet rset=stmt.executeQuery(orden);
%>
<h1>Lista de preguntas:</h1>
<table border="5" bordercolor=black align="center" bgcolor=CBC9C5 width=90%>
<tr bgcolor=8D8981>
<td align="center" width=10%>C�o Pregunta</td>.
<td align="center">Tema</td>
<td align="center">Pregunta</td>
<td></td>
</tr>
<%while(rset.next()){
i=i+1;%>
<tr height=40>
<td align="center"><%=rset.getInt("CODPREGUNTA")%></td>
<td align="center"><%=rset.getInt("TEMA")%></td>
<td><%=rset.getString("ENUNCIADO")%></td>
<td align="center"><a
href='ListadoPreguntas.jsp?pregunta=<%=i%>'>Modificar</a></td>
</tr>
<%}%>
</table>
<%
rset.close();
stmt.close();
con.close();
}
else{
//Lees la pregunta de la BBDD
String orden="SELECT P.CODPREGUNTA, P.ENUNCIADO, P.CLASE, RB.RESPUESTA, RB.CODRESBUENA,
P.TEMA FROM PREGUNTAS P, RESBUENAS RB WHERE P.CODPREGUNTA=RB.CODPREGUNTA AND
P.CODPREGUNTA="+pregunta+" ORDER BY RB.CODRESBUENA";
-30-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
ResultSet rset=stmt.executeQuery(orden);
while(rset.next()){%>
<center>
<form method="POST"
action='Mensaje3.jsp?clase=<%=rset.getString("CLASE")%>&codPregunta=<%=pregunta%>&cod
Respuesta=<%=rset.getString("CODRESBUENA")%>&tipo=<%=tipo%>'>
<table border="0" cellspacing="5">
<tr>
<th align="left">Pregunta:</th>
<td align="left"><%=rset.getString("ENUNCIADO")%></td>
</tr>
<tr>
<th align="left">Nueva Pregunta:</th>
<td align="left"><input type="text" name="pregunta"></td>
</tr>
<%if(rset.getString("CLASE").equals("Verdadero y Falso")){%>
<tr>
<th align="left">Respuestas:</th>
<td align="left">
<%if(rset.getString("RESPUESTA").equals("verdadero")){%>
<input type="radio" name="vyf" value="verdadero" CHECKED>Verdadero</input>
<input type="radio" name="vyf" value="falso">Falso</input>
<%}else{%>
<input type="radio" name="vyf" value="verdadero">Verdadero</input>
<input type="radio" name="vyf" value="falso" CHECKED>Falso</input>
<%}%>
</td>
</tr>
<%}else if(rset.getString("CLASE").equals("Respuesta Larga")){%>
<tr>
<th align="left">Respuestas Correcta:</th>
<td align="left"><%=rset.getString("RESPUESTA")%></td>
</tr>
<tr>
<th align="left"></th>
<td align="left"><input type="text" name="respuesta"></td>
-31-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
</tr>
<%rset.next();%>
<tr>
<th align="left">Respuestas Falsas</th>
<td align="left"><%=rset.getString("RESPUESTA")%></td>
</tr>
<tr>
<th align="left"></th>
<td align="left"><input type="text" name="respuesta2"></td>
</tr>
<%rset.next();%>
<tr>
<th align="left"></th>
<td align="left"><%=rset.getString("RESPUESTA")%></td>
</tr>
<tr>
<th align="left"></th>
<td align="left"><input type="text" name="respuesta3"></td>
</tr>
<%}else{%>
<tr>
<th align="left">Respuestas:</th>
<td align="left"><%=rset.getString("RESPUESTA")%></td>
</tr>
<tr>
<th align="left">Nueva respuestas:</th>
<td align="left"><input type="text" name="respuesta"></td>
</tr>
<%}
seleccionada = rset.getInt("TEMA");
%>
<tr>
<th align="left">Tema:</th>
<td align="left">
<select name="tema">
<% for (j=1; j<=8; j++){
if (j == seleccionada){%>
-32-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<option selected="true"><%=j%>
<%}else{%>
<option><%=j%>
<%}%>
<%}%>
<option>TV
</select>
</td>
</tr>
<%}%>
</table>
<br>
<input type="submit" value="Modificar">
</form></center>
<%
rset.close();
stmt.close();
con.close();
}%>
<%
int codUsu=1;
%>
<br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-33-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
10 MENSAJE3.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
//Para volver a Menu
String tipo = request.getParameter ("tipo");
Boolean rellenado=true;
//Datos de preguntas a modificar
String clase = request.getParameter ("clase");
String pregunta = request.getParameter ("pregunta");
String respuesta = request.getParameter ("respuesta");
String respuesta2 = request.getParameter ("respuesta2");
String respuesta3 = request.getParameter ("respuesta3");
String vyf = request.getParameter ("vyf");
String tema = request.getParameter ("tema");
String codPregunta = request.getParameter ("codPregunta");
String numRespuesta = request.getParameter ("codRespuesta");
int codRespuesta = Integer.parseInt(numRespuesta);
if(clase.equals("Verdadero y Falso")){
if(pregunta=="" || vyf==null){
rellenado=false;
}
}
else if(clase.equals("Respuesta Larga")){
if(pregunta=="" || respuesta=="" || respuesta2=="" || respuesta3==""){
rellenado=false;
}
}
else{
-34-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
if(pregunta=="" || respuesta==""){
rellenado=false;
}
}
//Si algun campo vacio retorna a la pagina Listado Preguntas
if(rellenado==false){
%>
<jsp:forward page="ListadoPreguntas.jsp">
<jsp:param name="pregunta" value="<%=codPregunta%>"/>
<jsp:param name="tema" value="<%=tema%>"/>
</jsp:forward>
<%
}
else{
String validada="";
if (tema.equals("TV")){
tema="9";
validada="v";
}
else{
validada="f";
}
//Guarda los datos de la respuesta modificada
/*//Conecta con la BBDD
String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
-35-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
int n=0;
//Comando de SQL para modificar
String orden="update PREGUNTAS set ENUNCIADO='"+pregunta+"' where CODPREGUNTA="+codPregunta;
n=stmt.executeUpdate(orden);
orden="update PREGUNTAS set TEMA="+tema+" where CODPREGUNTA="+codPregunta;
n=stmt.executeUpdate(orden);
orden="update PREGUNTAS set VALIDADA='"+validada+"' where CODPREGUNTA="+codPregunta;
n=stmt.executeUpdate(orden);
if(clase.equals("Respuesta Larga")){
orden="update RESBUENAS set RESPUESTA='"+respuesta+"' where CODRESBUENA="+codRespuesta;
n=stmt.executeUpdate(orden);
codRespuesta=codRespuesta+1;
orden="update RESBUENAS set RESPUESTA='"+respuesta2+"' where CODRESBUENA="+codRespuesta;
n=stmt.executeUpdate(orden);
codRespuesta=codRespuesta+1;
orden="update RESBUENAS set RESPUESTA='"+respuesta3+"' where CODRESBUENA="+codRespuesta;
n=stmt.executeUpdate(orden);
}
else if(clase.equals("Verdadero y Falso")){
orden="update RESBUENAS set RESPUESTA='"+vyf+"' where CODRESBUENA="+codRespuesta;
n=stmt.executeUpdate(orden);
}
else{
orden="update RESBUENAS set RESPUESTA='"+respuesta+"' where CODRESBUENA="+codRespuesta;
-36-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
n=stmt.executeUpdate(orden);
}
stmt.close();
con.close();
}
%>
<title>MENSAJE3</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<br><br><center>
<%--Mostrar lo modificado--%>
<h3>La pregunta ha sido modificada correctamente</h3><br><br>
<table border="0" cellspacing="5">
<tr>
<th align="left"><b>Pregunta:</b></th>
<td align="left"><%=pregunta%></td>
</tr>
<%if(clase.equals("Respuesta Larga")){%>
<tr>
<th align="left"><b>Respuesta correcta:</b></th>
<td align="left"><%=respuesta%></td>
</tr>
<tr>
<th align="left"><b>Respuestas Incorrectas:</b></th>
<td align="left"><%=respuesta2%></td>
</tr>
<tr>
<th align="left"></th>
<td align="left"><%=respuesta3%></td>
-37-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
</tr>
<%}
else if(clase.equals("Verdadero y Falso")){%>
<tr>
<th align="left"><b>Respuesta:</b></th>
<td align="left"><%=vyf%></td>
</tr>
<%}
else{%>
<tr>
<th align="left"><b>Respuesta:</b></th>
<td align="left"><%=respuesta%></td>
</tr>
<%}%>
</table>
<br>
<%
int codUsu=1;
%>
<a href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</center>
</td>
</tr>
</table>
</body>
</html>
-38-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
11 RESULTADOS
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<html>
<head>
<%
//Volver a Menu
String tipo = request.getParameter ("tipo");
String usuario = request.getParameter ("usuario");
//Conectarse a la base de datos
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario1 = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario1,clave);
Statement stmt=con.createStatement();
%>
<title>RESULTADOS</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<h1>Notas:</h1>
-39-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%
//Si CodPregunta es null muestra el listado de todoas las preguntas, sino la pregunta
seleccionada para modificar
if(usuario==null){
String orden="select CODUSUARIO, NOMBRE, APELLIDOS from USUARIOS where CODUSUARIO>1 order
by APELLIDOS";
ResultSet rset=stmt.executeQuery(orden);
%>
<form method="POST" action='Resultados.jsp'>
<select name="usuario">
<%while(rset.next()){%>
<option
value="<%=rset.getInt("CODUSUARIO")%>"><%=rset.getString("NOMBRE")%>
<%=rset.getString("APELLIDOS")%>
<%}%>
</select>
<input type="submit" value="Ok">
</form>
<%
rset.close();
stmt.close();
con.close();
}
else{
String orden="select CODUSUARIO, NOMBRE, APELLIDOS from USUARIOS where CODUSUARIO>1 order
by APELLIDOS";
ResultSet rset=stmt.executeQuery(orden);
%>
<form method="POST" action='Resultados.jsp'>
<select name="usuario">
<%while(rset.next()){%>
<option
value="<%=rset.getInt("CODUSUARIO")%>"><%=rset.getString("NOMBRE")%>
<%=rset.getString("APELLIDOS")%>
<%}%>
</select>
-40-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<input type="submit" value="Ok">
</form>
<a href="/PFC/jspdemo/prueba_nota.jsp?codUsu=<%=usuario%>">Ver grafica con los
resultados</a>
<%//Lees la pregunta de la BBDD
orden="select U.NOMBRE, U.APELLIDOS, R.FECHA, R.NUMACIERTOS from USUARIOS U, RESULTADOS R
where U.CODUSUARIO=R.CODUSUARIO and U.CODUSUARIO="+usuario+" order by R.CODRESULTADO";
rset=stmt.executeQuery(orden);
%>
<table border="0" bordercolor=black align="center" bgcolor=CBC9C5 width=90%>
<tr bgcolor=8D8981>
<td align="center">C�o</td>
<td align="center">Nombre</td>
<td align="center">Apellidos</td>
<td align="center">Fecha</td>
<td align="center">Nota</td>
</tr>
<%int k=1;
while(rset.next()){%>
<tr height=40>
<td align="center"><%=k%></td>
<td align="center"><%=rset.getString("NOMBRE")%></td>
<td align="center"><%=rset.getString("APELLIDOS")%></td>
<td align="center"><%=rset.getString("FECHA")%></td>
<td align="center"><%=rset.getFloat("NUMACIERTOS")%></td>
</tr>
<%k++;
}%>
</table>
<%
rset.close();
stmt.close();
con.close();
}%>
<%
int codUsu=1;
%>
-41-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-42-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
12 RESULTADOERROR.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<html>
<head>
<%
//Volver a Menu
String tipo = request.getParameter ("tipo");
String usuario = request.getParameter ("usuario");
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario1 = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario1,clave);
Statement stmt=con.createStatement();
%>
<title>RESULTADOS</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<h1>Resultados:</h1>
<%
//Si CodPregunta es null muestra el listado de todas las preguntas, sino la pregunta
seleccionada para modificar
-43-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
if(usuario==null){
String orden="select CODUSUARIO, NOMBRE, APELLIDOS from USUARIOS where CODUSUARIO>1 order
by APELLIDOS";
ResultSet rset=stmt.executeQuery(orden);
%>
<form method="POST" action='ResultadoError.jsp'>
<select name="usuario">
<%while(rset.next()){%>
<option
value="<%=rset.getInt("CODUSUARIO")%>"><%=rset.getString("NOMBRE")%>
<%=rset.getString("APELLIDOS")%>
<%}%>
</select>
<input type="submit" value="Ok">
</form>
<%}
else{
String orden="select CODUSUARIO, NOMBRE, APELLIDOS from USUARIOS where CODUSUARIO>1 order
by APELLIDOS";
ResultSet rset=stmt.executeQuery(orden);
%>
<form method="POST" action='ResultadoError.jsp'>
<select name="usuario">
<%while(rset.next()){%>
<option
value="<%=rset.getInt("CODUSUARIO")%>"><%=rset.getString("NOMBRE")%>
<%=rset.getString("APELLIDOS")%>
<%}%>
</select>
<input type="submit" value="Ok">
</form>
<%
orden="select NOMBRE, APELLIDOS from USUARIOS where CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
-44-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%=rset.getString("NOMBRE")%> <%=rset.getString("APELLIDOS")%>
<%}%>
<br>
<a href="/PFC/jspdemo/prueba_temas.jsp?codUsu=<%=usuario%>">Ver en diagrama de barras</a>
<table border="0" bordercolor=black align="center" bgcolor=CBC9C5 width=90%>
<tr bgcolor=8D8981>
<td align="center">Tema</td>
<td align="center">Nmero Errores</td>
</tr>
<%
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA=1 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">1</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}%>
<%
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA=2 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">2</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}%>
<%
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA=3 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
-45-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<tr height=40>
<td align="center">3</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}%>
<%
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA=4 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">4</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}%>
<%
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA=5 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">5</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}%>
<%
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA=6 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">6</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
-46-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%}%>
<%
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA=7 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">7</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}%>
<%
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA=8 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">8</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}%>
<%/*
orden="select sum (NUMERRORES) as SUMA from ERRORES where TEMA=9 and
CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">9</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}%>
<%
orden="select sum (NUMERRORES) as SUMA from ERRORES where TEMA=10 and
CODUSUARIO="+usuario;
-47-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
rset=stmt.executeQuery(orden);
while(rset.next()){
%>
<tr height=40>
<td align="center">10</td>
<td align="center"><%=rset.getInt("SUMA")%></td>
</tr>
<%}*/
rset.close();
stmt.close();
con.close();%>
</table>
<%}%>
<%
int codUsu=1;
%>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-48-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
13 TEST.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
String tipo = request.getParameter ("tipo");
//Guardar el c�pan>digo para guardar sus resultados
String codUsu = request.getParameter ("codUsu");
//Conecto con la BBDD
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
//Cuenta el nmero de preguntas
String orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where VALIDADA='f'";
ResultSet rset=stmt.executeQuery(orden);
//Pasa el nmero de preguntas a una variable de Java
int numPreguntas=0;
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosPreg;
-49-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
codigosPreg = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where VALIDADA='f' order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
int j=0;
while(rset.next()){
codigosPreg[j]=rset.getInt("CODPREGUNTA");
j++;
}
//Recojo el nmero de preguntas que quiero en el Test y lo guardo en cuestiones
orden="Select PREGALE from numpreguntas";
rset=stmt.executeQuery(orden);
int cuestiones=0;
while(rset.next()){
cuestiones=rset.getInt("PREGALE");
}
int[] preguntas;
preguntas = new int[cuestiones];
int i=0;
int aleatorio;
int[] numeros;
numeros = new int[cuestiones];
boolean igual;
while (i<cuestiones){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
igual=false;
while (j<=i && igual==false){
if (aleatorio==numeros[j]){
-50-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
igual=true;
}
j=j+1;
}
if (igual==false){
numeros[i]=aleatorio;
i=i+1;
}
}
for (j=0; j<cuestiones; j++){
preguntas[j] = codigosPreg[numeros[j]];
}
%>
<title>TEST</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center><h1>Test</h1><br>
<%
String preguntasRealizadas = "";
for (j=0; j<cuestiones; j++){
preguntasRealizadas = preguntasRealizadas + preguntas[j] + "/";
}
String respuesta1 = "";
String respuesta2 = "";
String respuesta3 = "";
int aleatorio1 = 0;
%>
<form method="POST"
action='Correccion.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>&preguntas=<%=preguntasRealizadas%>'>
<table border="3">
-51-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%
for (int x=1;x<=cuestiones;x++){
orden="Select P.CODPREGUNTA, P.ENUNCIADO, P.CLASE, RB.RESPUESTA from PREGUNTAS P,
RESBUENAS RB where P.CODPREGUNTA=RB.CODPREGUNTA and P.CODPREGUNTA="+preguntas[x-1]+"
order by P.CODPREGUNTA";
rset=stmt.executeQuery(orden);
while(rset.next()){
String clase=rset.getString("CLASE");
%>
<tr>
<th align="left" width="70%"><%=x%>) <%=rset.getString("ENUNCIADO")%></th>
<td align="left">
<%if(clase.equals("Verdadero y Falso")){%>
<%--Creo el contenedor de las variables--%>
<input type="radio" name="respuesta<%=x%>"
value="verdadero">Verdadero</input>
<input type="radio" name="respuesta<%=x%>" value="falso">Falso</input>
<%}
else if(clase.equals("Respuesta Larga")){
aleatorio1 = new Double(Math.random() * 3).intValue();
aleatorio1 = aleatorio1+1;
respuesta1=rset.getString("RESPUESTA");
rset.next();
respuesta2=rset.getString("RESPUESTA");
rset.next();
respuesta3=rset.getString("RESPUESTA");
if (aleatorio1 == 1){
%>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input>
-52-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%}
if (aleatorio1 == 2){
%>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input>
<%}
if (aleatorio1 == 3){
%>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input>
<%}
}
else{%>
<input type="text" name="respuesta<%=x%>" size="5">
<%}
}%>
</td>
</tr>
<%}
rset.close();
stmt.close();
con.close();
%>
</table>
-53-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%=aleatorio1%>
<input type="reset" value="Borrar">&nbsp&nbsp&nbsp<input type="submit" value="Enviar">
</form>
</td>
</tr>
</table>
</body>
</html>
-54-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
14 CORRECCION.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario1 = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario1,clave);
Statement stmt=con.createStatement();
//Para volver al Men
String tipo = request.getParameter ("tipo");
//Para guardar el resultado al usuario que ha hecho el test
String codUsu = request.getParameter ("codUsu");
int codVusu = Integer.parseInt(codUsu);
//Recojo preguntas realizadas
String preguntasRealizadas = request.getParameter ("preguntas");
//Recojo el nmero de preguntas que quiero en el Test y lo guardo en cuestiones
String orden="Select PREGALE from numpreguntas";
ResultSet rset=stmt.executeQuery(orden);
int cuestiones=0;
-55-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
while(rset.next()){
cuestiones=rset.getInt("PREGALE");
}
// split te regresa un arreglo de palabras separadas por el parἯspan>metro indicado. En preg meto los
codpreguntas
String[] preg = preguntasRealizadas.split ("/");
//Recoje los valores aleatorios de las preguntas
int[] preguntas;
preguntas = new int[cuestiones];
int j = 0;
for (j=0; j<cuestiones; j++){
preguntas[j] = Integer.parseInt(preg[j]);
}
//Recojo las respuestas
String[] respuestas;
respuestas = new String[cuestiones];
String res = "respuesta";
for (j=0; j<cuestiones; j++){
res = res + (j+1);
respuestas[j] = request.getParameter (res);
res = "respuesta";
}
//Variable para contar el nmero de errores de cada tema
int numTema1 = 0;
int numTema2 = 0;
int numTema3 = 0;
int numTema4 = 0;
int numTema5 = 0;
int numTema6 = 0;
int numTema7 = 0;
-56-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
int numTema8 = 0;
int numTema9 = 0;
int numTema10 = 0;
//Conencto con la BBDD
/*String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
//Creo el autonum鼯span>rico del resultado
orden="select max(CODRESULTADO) as maximo from RESULTADOS";
rset=stmt.executeQuery(orden);
int codResultado=0;
while(rset.next()){
codResultado=rset.getInt("maximo");
}
codResultado=codResultado+1;
//Inicializo las variables
int numAciertos=0;
double
double
double
double
valor = 0;
valorMin = 0;
valorMax = 0;
respuesta = 0;
boolean acertado=false;
int n=0;
for(int i=0; i<cuestiones; i++){
-57-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
orden="select R.CODPREGUNTA, R.RESPUESTA, R.CORRECTA, P.CLASE, P.TEMA from RESBUENAS R, PREGUNTAS
P where P.CODPREGUNTA=R.CODPREGUNTA and CORRECTA='v' and R.CODPREGUNTA="+preguntas[i];
rset=stmt.executeQuery(orden);
while(rset.next()){
if (rset.getString("CLASE").equals("Numerica")){
valor = Double.parseDouble(rset.getString("RESPUESTA"));
valorMin = 0.95 * valor;
valorMax = 1.05 * valor;
respuesta = Double.parseDouble(respuestas[i]);
//Compruebo la respuesta y si es buena sumo un punto
if (respuesta > valorMin && respuesta < valorMax){
numAciertos=numAciertos+1;
acertado=true;
}
else{
switch(rset.getInt("TEMA")){
case 1:
numTema1=numTema1+1;
break;
case 2:
numTema2=numTema2+1;
break;
case 3:
numTema3=numTema3+1;
break;
case 4:
numTema4=numTema4+1;
break;
case 5:
numTema5=numTema5+1;
break;
case 6:
numTema6=numTema6+1;
break;
case 7:
-58-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
numTema7=numTema7+1;
break;
case 8:
numTema8=numTema8+1;
break;
case 9:
numTema9=numTema9+1;
break;
default:
numTema10=numTema10+1;
}
}
}else{
//Compruebo los otros dos tipos de preguntas y si son buenas sumo
if(respuestas[i]!=null && respuestas[i].equals(rset.getString("RESPUESTA"))){
numAciertos=numAciertos+1;
acertado=true;
}
else {
switch(rset.getInt("TEMA")){
case 1:
numTema1=numTema1+1;
break;
case 2:
numTema2=numTema2+1;
break;
case 3:
numTema3=numTema3+1;
break;
case 4:
numTema4=numTema4+1;
break;
case 5:
numTema5=numTema5+1;
break;
case 6:
numTema6=numTema6+1;
-59-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
break;
case 7:
numTema7=numTema7+1;
break;
case 8:
numTema8=numTema8+1;
break;
case 9:
numTema9=numTema9+1;
break;
default:
numTema10=numTema10+1;
}
}
}
}
if (acertado==true){
orden="INSERT INTO TEST_PRE (CODRESULTADO, CODPREGUNTA, ACIERTO)"+
"VALUES("+codResultado+", "+preguntas[i]+",'v')";
n=stmt.executeUpdate(orden);
}
else{
orden="INSERT INTO TEST_PRE (CODRESULTADO, CODPREGUNTA, ACIERTO)"+
"VALUES("+codResultado+", "+preguntas[i]+",'f')";
n=stmt.executeUpdate(orden);
}
acertado=false;
}
//Guardo en la BBDD el resultado del test
double nota = (double) numAciertos;
nota = (nota / cuestiones) * 10;
orden="INSERT INTO RESULTADOS (CODRESULTADO, CODUSUARIO, FECHA, NUMACIERTOS)"+
"VALUES("+codResultado+", "+codUsu+", NOW(), "+nota+")";
n=stmt.executeUpdate(orden);
-60-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
//Creo el autonum鼯span>rico de la tabla ERRORES
orden="select max(CODERROR) as maximo from ERRORES";
rset=stmt.executeQuery(orden);
int codError=0;
while(rset.next()){
codError=rset.getInt("maximo");
}
codError=codError+1;
//Guardo en la BBDD el nmero de errores por tema
if (numTema1!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 1, "+numTema1+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema2!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 2, "+numTema2+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema3!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 3, "+numTema3+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema4!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 4, "+numTema4+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema5!=0){
-61-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 5, "+numTema5+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema6!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 6, "+numTema6+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema7!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 7, "+numTema7+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema8!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 8, "+numTema8+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema9!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 9, "+numTema9+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema10!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 10, "+numTema10+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
rset.close();
-62-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
stmt.close();
con.close();
%>
<title>CORRECCIӎ</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center>
<h1>Correcci�span></h1>
Nmero de aciertos: <%=numAciertos%><br>
Nmero de preguntas: <%=cuestiones%><br><br>
T nota es: <%=nota%><br>
<br><br><br>
</center>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-63-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
15 TIPOTEST.JSP
<%@ page import="java.sql.*" %>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
int numTest=0;
int i=0;
//Devolver usuario a MENU
String tipo = request.getParameter ("tipo");
String retorno = request.getParameter ("retorno");
if (retorno==null){
retorno="false";
}
/*String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
-64-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
String orden="select TEST from USUARIOS where CODUSUARIO=1";
ResultSet rset=stmt.executeQuery(orden);
while(rset.next()){
numTest=rset.getInt("TEST");
}
%>
<title>TIPO TEST</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<br><br><center>
<%if (retorno.equals("false")){%>
<form method="POST" action='Mensaje4.jsp?tipo=<%=tipo%>' >
<%if (numTest==1){%>
&nbsp<input type="radio" name="tTest"
value="1" CHECKED>Test aleatorio de tantas preguntas como elijas</input><br>
<input type="radio" name="tTest"
value="2">Test de x preguntas por tema segn elecci�span></input><br>
<input type="radio" name="tTest"
value="3">Test de 20 preguntas elegidas
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
&nbsp&nbsp&nbsp&nbsp&nbsp</input><br><br>
<input type="submit" value="Guardar">
<%}
else if(numTest==2){%>
&nbsp<input type="radio" name="tTest"
value="1">Test aleatorio de tantas preguntas como elijas</input><br>
<input type="radio" name="tTest" value="2"
CHECKED>Test de x preguntas por tema segn elecci�span></input><br>
-65-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<input type="radio" name="tTest" value="3">Test de 20 preguntas elegidas
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&
nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input><br><br>
<input type="submit" value="Guardar">
<%}
else if(numTest==3){%>
&nbsp<input type="radio" name="tTest" value="1">Test aleatorio de tantas
preguntas como elijas</input><br>
<input type="radio" name="tTest" value="2">Test de x preguntas por tema segn
elecci�span></input><br>
<input type="radio" name="tTest" value="3" CHECKED>Test de 20 preguntas
elegidas
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&
nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</input><br><br>
<input type="submit" value="Guardar">
<%}%>
</form>
<%}
else{%>
<form method="POST" action='Mensaje5.jsp?tipo=<%=tipo%>' >
<%for (i=1; i<=20; i++){%>
Pregunta <%=i%>:
<select name="pregunta<%=i%>" style="width: 100%">
<%
orden="select CODPREGUNTA, ENUNCIADO from PREGUNTAS order by TEMA";
rset=stmt.executeQuery(orden);
while(rset.next()){%>
<option
value="<%=rset.getInt("CODPREGUNTA")%>"><%=rset.getString("ENUNCIADO")%>
<%}%>
</select>
<br>
<%}%>
<input type="submit" value="Guardar">
</form>
<%}%>
-66-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<br>
<%
int codUsu=1;
%>
<a href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</center>
</td>
</tr>
</table>
<%
rset.close();
stmt.close();
con.close();
%>
</body>
</html>
-67-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
16 MENSAJE4.JSP
<%@ page import="java.sql.*" %>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
//Devolver usuario a MENU
String tipo = request.getParameter ("tipo");
String tTest = request.getParameter ("tTest");
String elegidos = request.getParameter ("elegidos");
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
int n=0;
if (tTest!=null && (tTest.equals("1") || tTest.equals("2"))){
String orden="update USUARIOS set TEST="+tTest+" where CODUSUARIO=1";
n=stmt.executeUpdate(orden);
//rset.close();
stmt.close();
con.close();
}
-68-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
else if(tTest.equals("3")){%>
<jsp:forward page="TipoTest.jsp">
<jsp:param name="retorno" value="<%=true%>"/>
</jsp:forward>
<%}
%>
<title>MENSAJE4</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<br><br><center>
<%if (tTest.equals("1")){%>
Has elegido un Test aleatorio de tantas preguntas como elijas
<%}else{%>
Test de x preguntas por tema segn elecci�
<br>
<br>
<br>
<%
int codUsu=1;
%>
</center>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-69-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
<%}%>
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
17 MENSAJE5.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
int i=0;
String codigo = "";
//Devolver usuario a MENU
String tipo = request.getParameter ("tipo");
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
int n=0;
String orden="update USUARIOS set TEST=3 where CODUSUARIO=1";
n=stmt.executeUpdate(orden);
for(i=1; i<=20; i++){
codigo = request.getParameter("pregunta"+i);
orden="update PRE_TEST set NUMPREGUNTA="+codigo+" where CODIGO="+i;
n=stmt.executeUpdate(orden);
}
-70-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
//rset.close();
stmt.close();
con.close();
%>
<title>MENSAJE5</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<br><br><center>
Las preguntas deseadas han sido guardas correctamente
<br>
<br>
<%
int codUsu=1;
%>
<a href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</center>
</td>
</tr>
</table>
</body>
</html>
-71-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
18 TEST2.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
//Cuenta el nmero de preguntas por tema
String orden="Select * from numpreguntas";
ResultSet rset=stmt.executeQuery(orden);
int[] pregTema;
pregTema = new int[8];
while (rset.next()){
pregTema[0] = rset.getInt("TEMA1");
pregTema[1] = rset.getInt("TEMA2");
pregTema[2] = rset.getInt("TEMA3");
pregTema[3] = rset.getInt("TEMA4");
pregTema[4] = rset.getInt("TEMA5");
pregTema[5] = rset.getInt("TEMA6");
pregTema[6] = rset.getInt("TEMA7");
-72-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
pregTema[7] = rset.getInt("TEMA8");
}
//Sumo el numero de preguntas totales
int
totales=pregTema[0]+pregTema[1]+pregTema[2]+pregTema[3]+pregTema[4]+pregTema[5]+pregTema[6]+pregTema[
7];
int[] preguntas;
preguntas = new int[totales];
int[] tema;
tema = new int[totales];
int conTema=1;
int numPreguntas=0;
int i=0;
int aleatorio;
int j=0;
boolean igual;
String tipo = request.getParameter ("tipo");
//Guardar el c�pan>digo para guardar sus resultados
String codUsu = request.getParameter ("codUsu");
//Conecto con la BBDD
/*String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
-73-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
//----------------------------------------------------------TEMA 1
orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where TEMA=1";
rset=stmt.executeQuery(orden);
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosTema1;
codigosTema1 = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where TEMA=1 order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
while(rset.next()){
codigosTema1[j]=rset.getInt("CODPREGUNTA");
j++;
}
while (i<pregTema[0]){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
igual=false;
while (j<=i && igual==false){
if (aleatorio==tema[j]){
igual=true;
}
j=j+1;
}
if (igual==false){
tema[i]=aleatorio;
i=i+1;
}
}
for (j=0; j<pregTema[0]; j++){
-74-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
preguntas[j] = codigosTema1[tema[j]];
}
//----------------------------------------------------------TEMA 2
orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where TEMA=2";
rset=stmt.executeQuery(orden);
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosTema2;
codigosTema2 = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where TEMA=2 order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
j=0;
while(rset.next()){
codigosTema2[j]=rset.getInt("CODPREGUNTA");
j++;
}
i=0;
while (i<pregTema[1]){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
igual=false;
while (j<=i && igual==false){
if (aleatorio==tema[j]){
igual=true;
}
j=j+1;
}
if (igual==false){
tema[i]=aleatorio;
-75-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
i=i+1;
}
}
for (j=0; j<pregTema[1]; j++){
preguntas[j+pregTema[0]] = codigosTema2[tema[j]];
}
//----------------------------------------------------------TEMA 3
orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where TEMA=3";
rset=stmt.executeQuery(orden);
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosTema3;
codigosTema3 = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where TEMA=3 order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
j=0;
while(rset.next()){
codigosTema3[j]=rset.getInt("CODPREGUNTA");
j++;
}
i=0;
while (i<pregTema[2]){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
igual=false;
while (j<=i && igual==false){
if (aleatorio==tema[j]){
igual=true;
}
-76-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
j=j+1;
}
if (igual==false){
tema[i]=aleatorio;
i=i+1;
}
}
for (j=0; j<pregTema[2]; j++){
preguntas[j+pregTema[0]+pregTema[1]] = codigosTema3[tema[j]];
}
//----------------------------------------------------------TEMA 4
orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where TEMA=4";
rset=stmt.executeQuery(orden);
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosTema4;
codigosTema4 = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where TEMA=4 order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
j=0;
while(rset.next()){
codigosTema4[j]=rset.getInt("CODPREGUNTA");
j++;
}
i=0;
while (i<pregTema[3]){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
-77-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
igual=false;
while (j<=i && igual==false){
if (aleatorio==tema[j]){
igual=true;
}
j=j+1;
}
if (igual==false){
tema[i]=aleatorio;
i=i+1;
}
}
for (j=0; j<pregTema[3]; j++){
preguntas[j+pregTema[0]+pregTema[1]+pregTema[2]] = codigosTema4[tema[j]];
}
//----------------------------------------------------------TEMA 5
orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where TEMA=5";
rset=stmt.executeQuery(orden);
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosTema5;
codigosTema5 = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where TEMA=5 order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
j=0;
while(rset.next()){
codigosTema5[j]=rset.getInt("CODPREGUNTA");
j++;
}
-78-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
i=0;
while (i<pregTema[4]){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
igual=false;
while (j<=i && igual==false){
if (aleatorio==tema[j]){
igual=true;
}
j=j+1;
}
if (igual==false){
tema[i]=aleatorio;
i=i+1;
}
}
for (j=0; j<pregTema[4]; j++){
preguntas[j+pregTema[0]+pregTema[1]+pregTema[2]+pregTema[3]] = codigosTema5[tema[j]];
}
//----------------------------------------------------------TEMA 6
orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where TEMA=6";
rset=stmt.executeQuery(orden);
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosTema6;
codigosTema6 = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where TEMA=6 order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
-79-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
j=0;
while(rset.next()){
codigosTema6[j]=rset.getInt("CODPREGUNTA");
j++;
}
i=0;
while (i<pregTema[5]){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
igual=false;
while (j<=i && igual==false){
if (aleatorio==tema[j]){
igual=true;
}
j=j+1;
}
if (igual==false){
tema[i]=aleatorio;
i=i+1;
}
}
for (j=0; j<pregTema[5]; j++){
preguntas[j+pregTema[0]+pregTema[1]+pregTema[2]+pregTema[3]+pregTema[4]] = codigosTema6[tema[j]];
}
//----------------------------------------------------------TEMA 7
orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where TEMA=7";
rset=stmt.executeQuery(orden);
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosTema7;
-80-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
codigosTema7 = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where TEMA=7 order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
j=0;
while(rset.next()){
codigosTema7[j]=rset.getInt("CODPREGUNTA");
j++;
}
i=0;
while (i<pregTema[6]){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
igual=false;
while (j<=i && igual==false){
if (aleatorio==tema[j]){
igual=true;
}
j=j+1;
}
if (igual==false){
tema[i]=aleatorio;
i=i+1;
}
}
for (j=0; j<pregTema[6]; j++){
preguntas[j+pregTema[0]+pregTema[1]+pregTema[2]+pregTema[3]+pregTema[4]+pregTema[5]] =
codigosTema7[tema[j]];
}
//----------------------------------------------------------TEMA 8
orden="Select count(CODPREGUNTA) as NUM from PREGUNTAS where TEMA=8";
rset=stmt.executeQuery(orden);
-81-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
while(rset.next()){
numPreguntas=rset.getInt("NUM");
}
int[] codigosTema8;
codigosTema8 = new int[numPreguntas];
orden="Select CODPREGUNTA from PREGUNTAS where TEMA=8 order by CODPREGUNTA";
rset=stmt.executeQuery(orden);
j=0;
while(rset.next()){
codigosTema8[j]=rset.getInt("CODPREGUNTA");
j++;
}
i=0;
while (i<pregTema[7]){
aleatorio = new Double(Math.random() * numPreguntas).intValue();
j=0;
igual=false;
while (j<=i && igual==false){
if (aleatorio==tema[j]){
igual=true;
}
j=j+1;
}
if (igual==false){
tema[i]=aleatorio;
i=i+1;
}
}
for (j=0; j<pregTema[7]; j++){
-82-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
preguntas[j+pregTema[0]+pregTema[1]+pregTema[2]+pregTema[3]+pregTema[4]+pregTema[5]+pregTema[6]]
= codigosTema8[tema[j]];
}
String preguntasRealizadas = "";
for (j=0; j<totales; j++){
preguntasRealizadas = preguntasRealizadas + preguntas[j] + "/";
}
String respuesta1 = "";
String respuesta2 = "";
String respuesta3 = "";
int aleatorio1 = 0;
%>
<title>TEST</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center><h1>Test</h1><br>
<form method="POST"
action='Correccion2.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>&preguntas=<%=preguntasRealizadas%>'>
<table border="3">
<%
for (int x=1;x<=totales;x++){
orden="Select P.CODPREGUNTA, P.ENUNCIADO, P.CLASE, RB.RESPUESTA from PREGUNTAS P,
RESBUENAS RB where P.CODPREGUNTA=RB.CODPREGUNTA and P.CODPREGUNTA="+preguntas[x-1]+"
order by P.CODPREGUNTA";
rset=stmt.executeQuery(orden);
while(rset.next()){
String clase=rset.getString("CLASE");
%>
<tr>
<th align="left"><%=x%>) <%=rset.getString("ENUNCIADO")%></th>
<td align="left">
-83-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%if(clase.equals("Verdadero y Falso")){%>
<%--Creo el contenedor de las variables--%>
<input type="radio" name="respuesta<%=x%>"
value="verdadero">Verdadero</input>
<input type="radio" name="respuesta<%=x%>" value="falso">Falso</input>
<%}
else if(clase.equals("Respuesta Larga")){
aleatorio1 = new Double(Math.random() * 3).intValue();
aleatorio1 = aleatorio1+1;
respuesta1=rset.getString("RESPUESTA");
rset.next();
respuesta2=rset.getString("RESPUESTA");
rset.next();
respuesta3=rset.getString("RESPUESTA");
if (aleatorio1 == 1){
%>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input>
<%}
if (aleatorio1 == 2){
%>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input>
<%}
-84-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
if (aleatorio1 == 3){
%>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input>
<%}
}
else{%>
<input type="text" name="respuesta<%=x%>" size="5">
<%}
}%>
</td>
</tr>
<%}
rset.close();
stmt.close();
con.close();
%>
</table>
<input type="reset" value="Borrar">&nbsp&nbsp&nbsp<input type="submit" value="Enviar">
</form>
</td>
</tr>
</table>
</body>
</html>
-85-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
19 TEST3.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
int[] preguntas;
preguntas = new int[20];
int i=0;
String tipo = request.getParameter ("tipo");
//Guardar el c�pan>digo para guardar sus resultados
String codUsu = request.getParameter ("codUsu");
//Conecto con la BBDD
/*String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
String orden="Select NUMPREGUNTA from PRE_TEST order by CODIGO";
-86-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
ResultSet rset=stmt.executeQuery(orden);
while(rset.next()){
preguntas[i]=rset.getInt("NUMPREGUNTA");
i++;
}
String respuesta1 = "";
String respuesta2 = "";
String respuesta3 = "";
int aleatorio1 = 0;
%>
<title>TEST</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center><h1>Test</h1><br>
<form method="POST" action='Correccion3.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>
<table border="3">
<%
for (int x=1;x<=20;x++){
orden="Select P.CODPREGUNTA, P.ENUNCIADO, P.CLASE, RB.RESPUESTA from PREGUNTAS P,
RESBUENAS RB where P.CODPREGUNTA=RB.CODPREGUNTA and P.CODPREGUNTA="+preguntas[x-1]+"
order by P.CODPREGUNTA";
rset=stmt.executeQuery(orden);
while(rset.next()){
String clase=rset.getString("CLASE");
%>
<tr>
<th align="left"><%=x%>) <%=rset.getString("ENUNCIADO")%></th>
<td align="left">
<%if(clase.equals("Verdadero y Falso")){%>
<%--Creo el contenedor de las variables--%>
-87-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<input type="radio" name="respuesta<%=x%>"
value="verdadero">Verdadero</input>
<input type="radio" name="respuesta<%=x%>" value="falso">Falso</input>
<%}
else if(clase.equals("Respuesta Larga")){
aleatorio1 = new Double(Math.random() * 3).intValue();
aleatorio1 = aleatorio1+1;
respuesta1=rset.getString("RESPUESTA");
rset.next();
respuesta2=rset.getString("RESPUESTA");
rset.next();
respuesta3=rset.getString("RESPUESTA");
if (aleatorio1 == 1){
%>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input>
<%}
if (aleatorio1 == 2){
%>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input>
<%}
if (aleatorio1 == 3){
%>
-88-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta3%>><%=respuesta3%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta2%>><%=respuesta2%></input><br>
<input type="radio" name="respuesta<%=x%>"
value=<%=respuesta1%>><%=respuesta1%></input>
<%}
}
else{%>
<input type="text" name="respuesta<%=x%>" size="5">
<%}
}%>
</td>
</tr>
<%}
rset.close();
stmt.close();
con.close();
%>
</table>
<input type="reset" value="Borrar">&nbsp&nbsp&nbsp<input type="submit" value="Enviar">
</form>
</td>
</tr>
</table>
</body>
</html>
-89-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
20 CORRECCION2.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario1 = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario1,clave);
Statement stmt=con.createStatement();
//Cuenta el nmero de preguntas por tema
String orden="Select * from numpreguntas";
ResultSet rset=stmt.executeQuery(orden);
int[] pregTema;
pregTema = new int[8];
while (rset.next()){
pregTema[0] = rset.getInt("TEMA1");
pregTema[1] = rset.getInt("TEMA2");
pregTema[2] = rset.getInt("TEMA3");
pregTema[3] = rset.getInt("TEMA4");
pregTema[4] = rset.getInt("TEMA5");
pregTema[5] = rset.getInt("TEMA6");
pregTema[6] = rset.getInt("TEMA7");
pregTema[7] = rset.getInt("TEMA8");
-90-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
}
//Sumo el numero de preguntas totales
int
totales=pregTema[0]+pregTema[1]+pregTema[2]+pregTema[3]+pregTema[4]+pregTema[5]+pregTema[6]+pregTema[
7];
//Para volver al Men
String tipo = request.getParameter ("tipo");
//Para guardar el resultado al usuario que ha hecho el test
String codUsu = request.getParameter ("codUsu");
int codVusu = Integer.parseInt(codUsu);
//Recojo preguntas realizadas
String preguntasRealizadas = request.getParameter ("preguntas");
// split te regresa un arreglo de palabras separadas por el parἯspan>metro indicado. En preg meto los
codpreguntas
String[] preg = preguntasRealizadas.split ("/");
//Recoje los valores aleatorios de las preguntas
int[] preguntas;
preguntas = new int[totales];
int j = 0;
for (j=0; j<totales; j++){
preguntas[j] = Integer.parseInt(preg[j]);
}
//Recojo las respuestas
String[] respuestas;
respuestas = new String[totales];
String res = "respuesta";
for (j=0; j<totales; j++){
-91-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
res = res + (j+1);
respuestas[j] = request.getParameter (res);
res = "respuesta";
}
//Variable para contar el nmero de errores de cada tema
int numTema1 = 0;
int numTema2 = 0;
int numTema3 = 0;
int numTema4 = 0;
int numTema5 = 0;
int numTema6 = 0;
int numTema7 = 0;
int numTema8 = 0;
int numTema9 = 0;
int numTema10 = 0;
//Conencto con la BBDD
/*String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
//Creo el autonum鼯span>rico del resultado
orden="select max(CODRESULTADO) as maximo from RESULTADOS";
rset=stmt.executeQuery(orden);
int codResultado=0;
while(rset.next()){
codResultado=rset.getInt("maximo");
}
codResultado=codResultado+1;
-92-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
//Inicializo las variables
int numAciertos=0;
double valor = 0;
double valorMin = 0;
double valorMax = 0;
double respuesta = 0;
boolean acertado = false;
int n=0;
for(int i=0; i<totales; i++){
orden="select R.CODPREGUNTA, R.RESPUESTA, R.CORRECTA, P.CLASE, P.TEMA from RESBUENAS R, PREGUNTAS
P where P.CODPREGUNTA=R.CODPREGUNTA and CORRECTA='v' and R.CODPREGUNTA="+preguntas[i];
rset=stmt.executeQuery(orden);
while(rset.next()){
if (rset.getString("CLASE").equals("Numerica")){
valor = Double.parseDouble(rset.getString("RESPUESTA"));
valorMin = 0.95 * valor;
valorMax = 1.05 * valor;
respuesta = Double.parseDouble(respuestas[i]);
//Compruebo la respuesta y si es buena sumo un punto
if (respuesta > valorMin && respuesta < valorMax){
numAciertos=numAciertos+1;
acertado=true;
}
else{
switch(rset.getInt("TEMA")){
case 1:
numTema1=numTema1+1;
break;
case 2:
numTema2=numTema2+1;
break;
case 3:
-93-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
numTema3=numTema3+1;
break;
case 4:
numTema4=numTema4+1;
break;
case 5:
numTema5=numTema5+1;
break;
case 6:
numTema6=numTema6+1;
break;
case 7:
numTema7=numTema7+1;
break;
case 8:
numTema8=numTema8+1;
break;
case 9:
numTema9=numTema9+1;
break;
default:
numTema10=numTema10+1;
}
}
}else{
//Compruebo los otros dos tipos de preguntas y si son buenas sumo
if(respuestas[i]!=null && respuestas[i].equals(rset.getString("RESPUESTA"))){
numAciertos=numAciertos+1;
acertado=true;
}
else {
switch(rset.getInt("TEMA")){
case 1:
numTema1=numTema1+1;
break;
case 2:
numTema2=numTema2+1;
-94-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
break;
case 3:
numTema3=numTema3+1;
break;
case 4:
numTema4=numTema4+1;
break;
case 5:
numTema5=numTema5+1;
break;
case 6:
numTema6=numTema6+1;
break;
case 7:
numTema7=numTema7+1;
break;
case 8:
numTema8=numTema8+1;
break;
case 9:
numTema9=numTema9+1;
break;
default:
numTema10=numTema10+1;
}
}
}
}
if (acertado==true){
orden="INSERT INTO TEST_PRE (CODRESULTADO, CODPREGUNTA, ACIERTO)"+
"VALUES("+codResultado+", "+preguntas[i]+",'v')";
n=stmt.executeUpdate(orden);
}
else{
orden="INSERT INTO TEST_PRE (CODRESULTADO, CODPREGUNTA, ACIERTO)"+
"VALUES("+codResultado+", "+preguntas[i]+",'f')";
n=stmt.executeUpdate(orden);
-95-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
}
acertado=false;
}
//Guardo en la BBDD el resultado del test
double nota = (double) numAciertos;
nota = (nota / totales) * 10;
nota = nota*(java.lang.Math.pow(10, 2));
nota = java.lang.Math.round(nota);
nota = nota/java.lang.Math.pow(10, 2);
orden="INSERT INTO RESULTADOS (CODRESULTADO, CODUSUARIO, FECHA, NUMACIERTOS)"+
"VALUES("+codResultado+", "+codUsu+", NOW(), "+nota+")";
n=stmt.executeUpdate(orden);
//Creo el autonum鼯span>rico de la tabla ERRORES
orden="select max(CODERROR) as maximo from ERRORES";
rset=stmt.executeQuery(orden);
int codError=0;
while(rset.next()){
codError=rset.getInt("maximo");
}
codError=codError+1;
//Guardo en la BBDD el nmero de errores por tema
if (numTema1!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 1, "+numTema1+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
-96-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
}
if (numTema2!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 2, "+numTema2+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema3!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 3, "+numTema3+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema4!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 4, "+numTema4+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema5!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 5, "+numTema5+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema6!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 6, "+numTema6+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema7!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 7, "+numTema7+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
-97-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
if (numTema8!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 8, "+numTema8+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema9!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 9, "+numTema9+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema10!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 10, "+numTema10+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
rset.close();
stmt.close();
con.close();
%>
<title>CORRECCIӎ</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center>
<h1>Correcci�span></h1>
Nmero de aciertos: <%=numAciertos%><br>
Nmero de preguntas: <%=totales%><br><br>
T nota es: <%=nota%><br>
<br><br><br>
</center>
-98-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-99-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
21 CORRECCION3.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
//Para volver al Men
String tipo = request.getParameter ("tipo");
//Para guardar el resultado al usuario que ha hecho el test
String codUsu = request.getParameter ("codUsu");
int codVusu = Integer.parseInt(codUsu);
//Recoje los valores aleatorios de las preguntas
int[] preguntas;
preguntas = new int[20];
//Recojo las respuestas
String[] respuestas;
respuestas = new String[20];
respuestas[0] = request.getParameter ("respuesta1");
respuestas[1] = request.getParameter ("respuesta2");
respuestas[2] = request.getParameter ("respuesta3");
respuestas[3] = request.getParameter ("respuesta4");
respuestas[4] = request.getParameter ("respuesta5");
respuestas[5] = request.getParameter ("respuesta6");
respuestas[6] = request.getParameter ("respuesta7");
respuestas[7] = request.getParameter ("respuesta8");
respuestas[8] = request.getParameter ("respuesta9");
respuestas[9] = request.getParameter ("respuesta10");
respuestas[10] = request.getParameter ("respuesta11");
respuestas[11] = request.getParameter ("respuesta12");
-100-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
respuestas[12]
respuestas[13]
respuestas[14]
respuestas[15]
respuestas[16]
respuestas[17]
respuestas[18]
respuestas[19]
=
=
=
=
=
=
=
=
request.getParameter
request.getParameter
request.getParameter
request.getParameter
request.getParameter
request.getParameter
request.getParameter
request.getParameter
("respuesta13");
("respuesta14");
("respuesta15");
("respuesta16");
("respuesta17");
("respuesta18");
("respuesta19");
("respuesta20");
//Variable para contar el nmero de errores de cada tema
int numTema1 = 0;
int numTema2 = 0;
int numTema3 = 0;
int numTema4 = 0;
int numTema5 = 0;
int numTema6 = 0;
int numTema7 = 0;
int numTema8 = 0;
int numTema9 = 0;
int numTema10 = 0;
//Conencto con la BBDD
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario1 = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario1,clave);
Statement stmt=con.createStatement();
//
String orden="Select NUMPREGUNTA from PRE_TEST order by CODIGO";
-101-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
ResultSet rset=stmt.executeQuery(orden);
int k=0;
while(rset.next()){
preguntas[k]=rset.getInt("NUMPREGUNTA");
k++;
}
//Creo el autonum鼯span>rico del resultado
orden="select max(CODRESULTADO) as maximo from RESULTADOS";
rset=stmt.executeQuery(orden);
int codResultado=0;
while(rset.next()){
codResultado=rset.getInt("maximo");
}
codResultado=codResultado+1;
//orden="Select * from USUARIOS";
//rset=stmt.executeQuery(orden);
//Inicializo las variables
int numAciertos=0;
double valor = 0;
double valorMin = 0;
double valorMax = 0;
double respuesta = 0;
boolean acertado = false;
int n=0;
for(int i=0; i<20; i++){
orden="select R.CODPREGUNTA, R.RESPUESTA, R.CORRECTA, P.CLASE, P.TEMA from RESBUENAS R, PREGUNTAS
P where P.CODPREGUNTA=R.CODPREGUNTA and CORRECTA='v' and R.CODPREGUNTA="+preguntas[i];
rset=stmt.executeQuery(orden);
-102-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
while(rset.next()){
if (rset.getString("CLASE").equals("Numerica")){
valor = Double.parseDouble(rset.getString("RESPUESTA"));
valorMin = 0.95 * valor;
valorMax = 1.05 * valor;
respuesta = Double.parseDouble(respuestas[i]);
//Compruebo la respuesta y si es buena sumo un punto
if (respuesta > valorMin && respuesta < valorMax){
numAciertos=numAciertos+1;
acertado = true;
}
else{
switch(rset.getInt("TEMA")){
case 1:
numTema1=numTema1+1;
break;
case 2:
numTema2=numTema2+1;
break;
case 3:
numTema3=numTema3+1;
break;
case 4:
numTema4=numTema4+1;
break;
case 5:
numTema5=numTema5+1;
break;
case 6:
numTema6=numTema6+1;
break;
case 7:
numTema7=numTema7+1;
break;
case 8:
numTema8=numTema8+1;
-103-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
break;
case 9:
numTema9=numTema9+1;
break;
default:
numTema10=numTema10+1;
}
}
}else{
//Compruebo los otros dos tipos de preguntas y si son buenas sumo
if(respuestas[i]!=null && respuestas[i].equals(rset.getString("RESPUESTA"))){
numAciertos=numAciertos+1;
acertado = true;
}
else {
switch(rset.getInt("TEMA")){
case 1:
numTema1=numTema1+1;
break;
case 2:
numTema2=numTema2+1;
break;
case 3:
numTema3=numTema3+1;
break;
case 4:
numTema4=numTema4+1;
break;
case 5:
numTema5=numTema5+1;
break;
case 6:
numTema6=numTema6+1;
break;
case 7:
numTema7=numTema7+1;
break;
-104-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
case 8:
numTema8=numTema8+1;
break;
case 9:
numTema9=numTema9+1;
break;
default:
numTema10=numTema10+1;
}
}
}
}
if (acertado==true){
orden="INSERT INTO TEST_PRE (CODRESULTADO, CODPREGUNTA, ACIERTO)"+
"VALUES("+codResultado+", "+preguntas[i]+",'v')";
n=stmt.executeUpdate(orden);;
}
else{
orden="INSERT INTO TEST_PRE (CODRESULTADO, CODPREGUNTA, ACIERTO)"+
"VALUES("+codResultado+", "+preguntas[i]+",'f')";
n=stmt.executeUpdate(orden);
}
acertado=false;
}
//Guardo en la BBDD el resultado del test
double nota = (double) numAciertos;
nota = (nota / 20) * 10;
orden="INSERT INTO RESULTADOS (CODRESULTADO, CODUSUARIO, FECHA, NUMACIERTOS)"+
"VALUES("+codResultado+", "+codUsu+", NOW(), "+nota+")";
n=stmt.executeUpdate(orden);
//Creo el autonum鼯span>rico de la tabla ERRORES
orden="select max(CODERROR) as maximo from ERRORES";
-105-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
rset=stmt.executeQuery(orden);
int codError=0;
while(rset.next()){
codError=rset.getInt("maximo");
}
codError=codError+1;
//Guardo en la BBDD el nmero de errores por tema
if (numTema1!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 1, "+numTema1+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema2!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 2, "+numTema2+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema3!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 3, "+numTema3+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema4!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 4, "+numTema4+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema5!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 5, "+numTema5+")";
n=stmt.executeUpdate(orden);
-106-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
codError=codError+1;
}
if (numTema6!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 6, "+numTema6+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema7!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 7, "+numTema7+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema8!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 8, "+numTema8+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema9!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 9, "+numTema9+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
if (numTema10!=0){
orden="INSERT INTO ERRORES (CODERROR, CODUSUARIO, TEMA, NUMERRORES)"+
"VALUES("+codError+", '"+codUsu+"', 10, "+numTema10+")";
n=stmt.executeUpdate(orden);
codError=codError+1;
}
rset.close();
stmt.close();
con.close();
%>
-107-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<title>CORRECCIӎ</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center>
<h1>Correcci�span></h1>
Nmero de aciertos: <%=numAciertos%><br>
Nmero de preguntas: 20<br><br>
T nota es: <%=nota%><br>
<br><br><br>
</center>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-108-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
22 PRUEBA_NOTA.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<%@page import="ChartDirector.*" %>
<%
String codUsu = request.getParameter ("codUsu");
String tipo="Profesor";
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
String orden="Select count(CODRESULTADO) as maximo from RESULTADOS where CODUSUARIO="+codUsu;
ResultSet rset=stmt.executeQuery(orden);
int numResultados=0;
while(rset.next()){
numResultados=rset.getInt("maximo");
}
// The data for the line chart
double[] data;
data = new double[numResultados];
//--double[] data = {80 ,75, 50, 100};
// The labels for the line chart
-109-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
String[] labels;
labels = new String[numResultados];
//--String[] labels = {"0", "1", "2", "3"};
orden="Select NUMACIERTOS from RESULTADOS where CODUSUARIO="+codUsu;
rset=stmt.executeQuery(orden);
int i=0;
while(rset.next()){
data[i] = rset.getDouble("NUMACIERTOS");
labels[i] = Integer.toString(i);
i++;
}
rset.close();
stmt.close();
con.close();
// Create a XYChart object of size 250 x 250 pixels
XYChart c = new XYChart(800, 400);
// Set the plotarea at (30, 20) and of size 200 x 200 pixels
c.setPlotArea(30, 20, 800, 400);
// Add a line chart layer using the given data
c.addLineLayer(data);
// Set the labels on the x axis.
c.xAxis().setLabels(labels);
// Display 1 out of 3 labels on the x-axis.
c.xAxis().setLabelStep(3);
// Output the chart
String chart1URL = c.makeSession(request, "chart1");
// Include tool tip for the chart
-110-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
String imageMap1 = c.getHTMLImageMap("", "",
"title='Hour {xLabel}: Traffic {value} GBytes'");
%>
<html>
<body style="margin:5px 0px 0px 5px" bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<br>
<br>
<center>
<img src='<%=response.encodeURL("getchart.jsp?"+chart1URL)%>'
usemap="#map1" border="0">
<map name="map1"><%=imageMap1%></map>
</center>
<br><br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a href='/PFC/Resultados.jsp?tipo=<%=tipo%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-111-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
23 PRUEBA_TEMAS.JSP
<%@page import="ChartDirector.*" %>
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<%
String codUsu = request.getParameter ("codUsu");
String tipo="Profesor";
// The data for the bar chart
//double[] data = {85, 156, 179.5, 211, 123, 100 ,200, 50};
double[] data;
data = new double[8];
/*String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
int i;
String orden="select * from USUARIOS";
ResultSet rset=stmt.executeQuery(orden);
int errores = 0;
-112-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
for (i=0;i<8;i++){
orden="select SUM(NUMERRORES) as SUMA from ERRORES where TEMA="+(i+1)+" and CODUSUARIO="+codUsu;
rset=stmt.executeQuery(orden);
while(rset.next()){
errores=rset.getInt("SUMA");
}
data[i] = (double) errores;
}
rset.close();
stmt.close();
con.close();
// The labels for the bar chart
String[] labels = {"Tema 1", "Tema 2", "Tema 3", "Tema 4", "Tema 5", "Tema 6", "Tema 7", "Tema 8"};
// The colors for the bar chart
int[] colors = {0xb8bc9c, 0xa0bdc4, 0x999966, 0x333366, 0xc3c3e6};
// Create a XYChart object of size 300 x 220 pixels. Use golden background color. Use
// a 2 pixel 3D border.
XYChart c = new XYChart(700, 400, Chart.goldColor(), -1, 2);
// Add a title box using 10 point Arial Bold font. Set the background color to
// metallic blue (9999FF) Use a 1 pixel 3D border.
c.addTitle("Errores por Tema", "Arial Bold", 10).setBackground(Chart.metalColor(
0x9999ff), -1, 1);
// Set the plotarea at (40, 40) and of 240 x 150 pixels in size
c.setPlotArea(40, 40, 650, 320);
// Add a multi-color bar chart layer using the given data and colors. Use a 1 pixel
// 3D border for the bars.
c.addBarLayer3(data, colors).setBorderColor(-1, 1);
-113-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
// Set the labels on the x axis.
c.xAxis().setLabels(labels);
// Output the chart
String chart1URL = c.makeSession(request, "chart1");
// Include tool tip for the chart
String imageMap1 = c.getHTMLImageMap("", "", "title='{xLabel}: {value} GBytes'");
%>
<html>
<body style="margin:5px 0px 0px 5px" bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<br>
<br>
<center>
<img src='<%=response.encodeURL("getchart.jsp?"+chart1URL)%>'
usemap="#map1" border="0">
<map name="map1"><%=imageMap1%></map>
</center>
<br><br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a href='/PFC/ResultadoError.jsp?tipo=<%=tipo%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-114-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
24 RESULTADOPERSONAL.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<html>
<head>
<%
//Volver a Menu
String tipo = request.getParameter ("tipo");
String usuario = request.getParameter ("usuario");
//Conectarse a la base de datos
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario1 = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario1,clave);
Statement stmt=con.createStatement();
%>
<title>RESULTADOS</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<h1>Resultados:</h1>
<%
-115-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
//Si CodPregunta es null muestra el listado de todoas las preguntas, sino la pregunta
seleccionada para modificar
if(usuario==null){
String orden="select CODUSUARIO, NOMBRE, APELLIDOS from USUARIOS where CODUSUARIO>1 order
by APELLIDOS";
ResultSet rset=stmt.executeQuery(orden);
%>
<form method="POST" action='ResultadoPersonal.jsp'>
<select name="usuario">
<%while(rset.next()){%>
<option
value="<%=rset.getInt("CODUSUARIO")%>"><%=rset.getString("NOMBRE")%>
<%=rset.getString("APELLIDOS")%>
<%}%>
</select>
<input type="submit" value="Ok">
</form>
<%
rset.close();
stmt.close();
con.close();
}
else{
String orden="select CODUSUARIO, NOMBRE, APELLIDOS from USUARIOS where CODUSUARIO>1 order
by APELLIDOS";
ResultSet rset=stmt.executeQuery(orden);%>
<form method="POST" action='ResultadoPersonal.jsp'>
<select name="usuario">
<%while(rset.next()){%>
<option
value="<%=rset.getInt("CODUSUARIO")%>"><%=rset.getString("NOMBRE")%>
<%=rset.getString("APELLIDOS")%>
<%}%>
</select>
<input type="submit" value="Ok">
</form>
<br>
-116-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<%
orden="select * from USUARIOS where CODUSUARIO="+usuario;
rset=stmt.executeQuery(orden);
while(rset.next()){%>
<%=rset.getString("NOMBRE")%> <%=rset.getString("APELLIDOS")%>
<%}%>
<form method="POST" action='ResultadoPersonal2.jsp?usuario=<%=usuario%>'>
<select name="test">
<%orden="select distinct TP.CODRESULTADO from TEST_PRE TP, RESULTADOS R where
TP.CODRESULTADO=R.CODRESULTADO and CODUSUARIO="+usuario+" order by TP.CODRESULTADO";
rset=stmt.executeQuery(orden);
int j=1;
while(rset.next()){%>
<option value="<%=rset.getInt("CODRESULTADO")%>">Test <%=j%>
<%j++;
}%>
</select>
<input type="submit" value="Ok">
</form>
<%
rset.close();
stmt.close();
con.close();
}%>
<%
int codUsu=1;
%>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-117-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
25 RESULTADOPERSONAL2.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<html>
<head>
<%
//Volver a Menu
String tipo = request.getParameter ("tipo");
String test = request.getParameter ("test");
String usuario = request.getParameter ("usuario");
//Conectarse a la base de datos
/*String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario1 = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario1,clave);
Statement stmt=con.createStatement();
%>
<title>RESULTADOS</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
-118-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<h1>Resultados:</h1>
<%
String orden="select * from USUARIOS where CODUSUARIO="+usuario;
ResultSet rset=stmt.executeQuery(orden);
while(rset.next()){%>
<%=rset.getString("NOMBRE")%> <%=rset.getString("APELLIDOS")%>
<%}%>
<%
orden="select ENUNCIADO, ACIERTO from PREGUNTAS P, TEST_PRE TP, RESULTADOS R where
P.CODPREGUNTA=TP.CODPREGUNTA and TP.CODRESULTADO=R.CODRESULTADO and R.CODUSUARIO="+usuario+"
and R.CODRESULTADO="+test;
rset=stmt.executeQuery(orden);
%>
<table border="0" bordercolor=black align="center" bgcolor=CBC9C5 width=90%>
<tr bgcolor=8D8981>
<td></td>
<td align="center">Enunciado</td>.
<td align="center">Acertada</td>
</tr>
<%
int i=0;
while(rset.next()){
i=i+1;%>
<tr height=40>
<td align="center"><%=i%></td>
<td align="center"><%=rset.getString("ENUNCIADO")%></td>
<td><%=rset.getString("ACIERTO")%></td>
</tr>
<%}
rset.close();
stmt.close();
con.close();
-119-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
%></table>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='ResultadoPersonal.jsp?tipo=<%=tipo%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-120-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
26 RESULTADOTEMA.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<%@page import="ChartDirector.*" %>
<html>
<head>
<%
//--double[] data = {80 ,75, 50, 100};
String tipo = request.getParameter ("tipo");
String usuario = request.getParameter ("usuario");
String tema = request.getParameter ("tema");
//Conectarse a la base de datos
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario1 = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario1,clave);
Statement stmt=con.createStatement();
%>
<title>RESULTADOS</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
-121-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<tr>
<td>
<h1>Resultados:</h1>
<%
String orden="select CODUSUARIO, NOMBRE, APELLIDOS from USUARIOS where CODUSUARIO>1 order
by APELLIDOS";
ResultSet rset=stmt.executeQuery(orden);%>
<form method="POST" action='ResultadoTema.jsp'>
<select name="usuario">
<%while(rset.next()){%>
<option
value="<%=rset.getInt("CODUSUARIO")%>"><%=rset.getString("NOMBRE")%>
<%=rset.getString("APELLIDOS")%>
<%}%>
</select>
<br>Tema:
<select name="tema">
<%int i=0;
for (i=1; i<=8; i++){%>
<option><%=i%>
<%}%>
</select>
<input type="submit" value="Ok">
</form>
<%if(usuario!=null && tema!=null){
//Cuento el numero de test con errores en j
orden="select TP.CODRESULTADO, TEMA, CODUSUARIO from TEST_PRE TP, PREGUNTAS P, RESULTADOS
R where TP.CODPREGUNTA=P.CODPREGUNTA and TP.CODRESULTADO=R.CODRESULTADO and ACIERTO='f'
and TEMA="+tema+" and CODUSUARIO="+usuario+" order by TP.CODRESULTADO";
rset=stmt.executeQuery(orden);
int j=0;
/*while(rset.next()){
-122-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
j++;
}*/
int anterior1=0;
int codResultado=0;
while(rset.next()){
codResultado=rset.getInt("CODRESULTADO");
if (anterior1==0){
anterior1=codResultado;
j=1;
}else{
if (codResultado!=anterior1){
anterior1=codResultado;
j=j+1;
}
}
}
// The labels for the line chart, variable para meter el eje x de la grἯspan>fica
String[] labels;
labels = new String[j+1];
// The data for the line chart
double[] data;
data = new double[j+1];
int k=0;
for (k=0;k<j;k++){
labels[k] = Integer.toString(k);
}
labels[j] = Integer.toString(j);
int[] test;
test = new int[j];
-123-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
orden="select TP.CODRESULTADO, TEMA, CODUSUARIO from TEST_PRE TP, PREGUNTAS P, RESULTADOS
R where TP.CODPREGUNTA=P.CODPREGUNTA and TP.CODRESULTADO=R.CODRESULTADO and ACIERTO='f'
and TEMA="+tema+" and CODUSUARIO="+usuario+" order by TP.CODRESULTADO";
rset=stmt.executeQuery(orden);
//Cuento los errores del alumno por tema elegido
int recorre=0;
int errores=1;
int anterior=0;
while(rset.next()){
codResultado=rset.getInt("CODRESULTADO");
if (anterior==codResultado){
errores=errores+1;
}else{
if (codResultado!=0){
if (anterior!=0){
test[recorre]=errores;
data[recorre]=errores;
recorre=recorre+1;
}
anterior=codResultado;
errores=1;
}
}
}
if (j!=0){
test[j-1]=errores;
data[j-1]=errores;
}
data[j]=0;
//Parametros para la grἯspan>fica
// Create a XYChart object of size 250 x 250 pixels
XYChart c = new XYChart(800, 400);
// Set the plotarea at (30, 20) and of size 200 x 200 pixels
c.setPlotArea(30, 20, 800, 400);
-124-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
// Add a line chart layer using the given data
c.addLineLayer(data);
// Set the labels on the x axis.
c.xAxis().setLabels(labels);
// Display 1 out of 3 labels on the x-axis.
c.xAxis().setLabelStep(3);
// Output the chart
String chart1URL = c.makeSession(request, "chart1");
// Include tool tip for the chart
String imageMap1 = c.getHTMLImageMap("", "",
"title='Hour {xLabel}: Traffic {value} GBytes'");
%>
<table border="0" bordercolor=black align="center" bgcolor=CBC9C5 width=90%>
<tr bgcolor=8D8981>
<td align="center" width=10%>Test</td>.
<td align="center">Errores en el Tema <%=tema%></td>
</tr>
<%
for(i=0;i<j;i++){%>
<tr height=40>
<td align="center"><%=i+1%></td>
<td align="center"><%=test[i]%>
</td>
</tr>
<%}%>
</table>
<br>
<br>
<center>
<img src='<%=response.encodeURL("getchart.jsp?"+chart1URL)%>'
usemap="#map1" border="0">
-125-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<map name="map1"><%=imageMap1%></map>
</center>
<%
}%>
<%
rset.close();
stmt.close();
con.close();
int codUsu=1;
%>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='/PFC/Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-126-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
27 MENSAJE6.JSP
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*"%>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
int i=0;
String codigo = "";
//Devolver usuario a MENU
String tipo = request.getParameter ("tipo");
String
String
String
String
String
String
String
String
String
numAleatorias = request.getParameter ("numAleatorias");
numTema1 = request.getParameter ("numTema1");
numTema2 = request.getParameter ("numTema2");
numTema3 = request.getParameter ("numTema3");
numTema4 = request.getParameter ("numTema4");
numTema5 = request.getParameter ("numTema5");
numTema6 = request.getParameter ("numTema6");
numTema7 = request.getParameter ("numTema7");
numTema8 = request.getParameter ("numTema8");
//Conexi�pan>n con la base de datos
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
-127-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
Statement stmt=con.createStatement();
int n=0;
String orden="update numpreguntas set TEMA1="+numTema1+" where CODIGO=1";
n=stmt.executeUpdate(orden);
orden="update numpreguntas set TEMA2="+numTema2+" where CODIGO=1";
n=stmt.executeUpdate(orden);
orden="update numpreguntas set TEMA3="+numTema3+" where CODIGO=1";
n=stmt.executeUpdate(orden);
orden="update numpreguntas set TEMA4="+numTema4+" where CODIGO=1";
n=stmt.executeUpdate(orden);
orden="update numpreguntas set TEMA5="+numTema5+" where CODIGO=1";
n=stmt.executeUpdate(orden);
orden="update numpreguntas set TEMA6="+numTema6+" where CODIGO=1";
n=stmt.executeUpdate(orden);
orden="update numpreguntas set TEMA7="+numTema7+" where CODIGO=1";
n=stmt.executeUpdate(orden);
orden="update numpreguntas set TEMA8="+numTema8+" where CODIGO=1";
n=stmt.executeUpdate(orden);
orden="update numpreguntas set PREGALE="+numAleatorias+" where CODIGO=1";
n=stmt.executeUpdate(orden);
//rset.close();
stmt.close();
con.close();
%>
<title>MENSAJE6</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<br><br><center>
Se han guardado el nmero de preguntas por Test
-128-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
<br>
<br>
<%
int codUsu=1;
%>
<a href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</center>
</td>
</tr>
</table>
</body>
</html>
-129-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
28 NUMPREGUNTAS.JSP
<%@ page import="java.sql.*" %>
<jsp:useBean id="acceso" class="pInfo.Info" scope="session"/>
<jsp:setProperty name="acceso" property="*"/>
<html>
<head>
<%
int[] preguntas;
preguntas = new int[9];
//Para cuando vuelves a Menu
String tipo = request.getParameter ("tipo");
String pregunta = request.getParameter ("pregunta");
/*//Conexi�pan>n a la BBDD
String driver="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url="jdbc:oracle:thin:JAVI/JAVI@localhost:1521/XE";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();*/
/*parametros para la conexion*/
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:1523/test";
String usuario = "root";
String clave = "1234";
/*procedimiento de la conexion*/
Class.forName(driver);
Connection con = DriverManager.getConnection(url,usuario,clave);
Statement stmt=con.createStatement();
String orden="Select * from numpreguntas";
ResultSet rset=stmt.executeQuery(orden);
-130-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
while (rset.next()){
preguntas[0] = rset.getInt("PREGALE");
preguntas[1] = rset.getInt("TEMA1");
preguntas[2] = rset.getInt("TEMA2");
preguntas[3] = rset.getInt("TEMA3");
preguntas[4] = rset.getInt("TEMA4");
preguntas[5] = rset.getInt("TEMA5");
preguntas[6] = rset.getInt("TEMA6");
preguntas[7] = rset.getInt("TEMA7");
preguntas[8] = rset.getInt("TEMA8");
}
int i=0;
%>
<title>NUMERO DE PREGUNTAS</title>
</head>
<body bgcolor="grey" link="#ffffcc" vlink="#ffffcc" alink="#ffffcc">
<br><br><br><br>
<table border="0" align="center" width=70% height=65% bgcolor=D20000>
<tr>
<td>
<center>
<form method="POST" action='Mensaje6.jsp?tipo=<%=tipo%>'>
Nmero de preguntas aleatorias:<input type="text" name="numAleatorias" size="5"
value="<%=preguntas[0]%>"><br><br>
Nmero de preguntas del Tema 1:<input type="text" name="numTema1" size="5"
value="<%=preguntas[1]%>"><br>
Nmero de preguntas del Tema 2:<input type="text" name="numTema2" size="5"
value="<%=preguntas[2]%>"><br>
Nmero de preguntas del Tema 3:<input type="text" name="numTema3" size="5"
value="<%=preguntas[3]%>"><br>
Nmero de preguntas del Tema 4:<input type="text" name="numTema4" size="5"
value="<%=preguntas[4]%>"><br>
Nmero de preguntas del Tema 5:<input type="text" name="numTema5" size="5"
value="<%=preguntas[5]%>"><br>
-131-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
ANEXO II. CÓDIGO DEL SEGUIMIENTO DEL APRENDIZAJE
Nmero de preguntas del Tema 6:<input type="text" name="numTema6" size="5"
value="<%=preguntas[6]%>"><br>
Nmero de preguntas del Tema 7:<input type="text" name="numTema7" size="5"
value="<%=preguntas[7]%>"><br>
Nmero de preguntas del Tema 8:<input type="text" name="numTema8" size="5"
value="<%=preguntas[8]%>"><br><br>
<input type="submit" value="Enviar">
</form>
</center>
<%
int codUsu=1;
rset.close();
stmt.close();
con.close();
%>
<br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a
href='Menu.jsp?tipo=<%=tipo%>&codUsu=<%=codUsu%>'>Volver...</a>
</td>
</tr>
</table>
</body>
</html>
-132-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
HERRAMIENTA DIDÁCTICA
INTERACTIVA PARA EL
APRENDIZAJE DE LOS
ULTRASONIDOS
PLIEGO DE CONDICIONES
Javier Cariñanos Rodríguez
PLIEGO DE CONDICIONES
ÍNDICE
1 CONDICIONES GENERALES .................................................................................................................... 4
1.1 INTRODUCCIÓN ................................................................................................................................... 4
1.2 CONDICIONES DE DESARROLLO ............................................................................................................... 4
1.3 DISTRIBUICIÓN .................................................................................................................................... 5
2 CONDICIONES DE MATERIALES Y EQUIPOS ........................................................................................... 6
2.1 RECURSOS DE HARDWARE ..................................................................................................................... 6
2.2 RECURSOS DE SOFTWARE ...................................................................................................................... 7
3 CONDICIONES DE MONTAJE Y EJECUCIÓN ............................................................................................ 9
3.1 REQUERIMIENTOS MÍNIMOS ................................................................................................................... 9
3.2 INSTALACIÓN Y USO ............................................................................................................................. 9
3.3 LIMITACIONES DE LA HERRAMIENTA ......................................................................................................... 9
4 CONDICIONES ECONÓMICAS .............................................................................................................. 11
5 GUIA DE USUARIO ............................................................................................................................... 12
5.1 PRESENTANCIÓN DE LA HERRAMIENTA .................................................................................................... 12
5.2 REQUISITOS DEL SISTEMA .................................................................................................................... 12
5.3 EJECUCIÓN....................................................................................................................................... 12
5.4 DESCRIPCIÓN DEL INTERFAZ ................................................................................................................. 13
5.4.1 Herramienta didáctica .......................................................................................................... 13
5.4.1.1 Portada y presentación ......................................................................................................................... 13
5.4.1.2 Índice principal ...................................................................................................................................... 14
5.4.1.3 Índice de los temas ............................................................................................................................... 14
5.4.1.4 Páginas de los temas ............................................................................................................................. 15
5.4.1.5 Páginas con applets .............................................................................................................................. 16
5.4.2 Herramienta de evaluación ................................................................................................... 17
5.4.2.1 Login ...................................................................................................................................................... 17
5.4.2.2 Inscripción en el curso .......................................................................................................................... 18
5.4.2.3 Menú principal ...................................................................................................................................... 18
5.4.2.3.1 Alumno .......................................................................................................................................... 18
5.4.2.3.2 Profesor......................................................................................................................................... 19
5.4.2.4 Test ........................................................................................................................................................ 20
5.4.2.5 Crear pregunta ...................................................................................................................................... 20
5.4.2.6 Modificar pregunta ............................................................................................................................... 21
5.4.2.7 Elección del tipo de test........................................................................................................................ 22
5.4.2.8 Elección del número de preguntas ....................................................................................................... 23
5.4.2.9 Notas de los test ................................................................................................................................... 24
5.4.2.10 Resultado de los test........................................................................................................................... 25
5.4.2.11 Errores por tema ................................................................................................................................. 26
5.4.2.12 Errores de temas en cada test ............................................................................................................ 28
ÍNDICE DE ILUSTRACIONES:
FIGURA 1. PORTADA DE LA HERRAMIENTA ........................................................................................... 13
FIGURA 2. PRÓLOGO DE LA HERRAMIENTA ........................................................................................... 13
FIGURA 3. ÍNDICE GENERAL DE LA APLICACIÓN ..................................................................................... 14
FIGURA 4. EJEMPLO DE ÍNDICE DE TEMA ............................................................................................... 14
FIGURA 5. ICONO DE NAVEGACIÓN A ÍNDICE GENERAL ........................................................................ 15
-2-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
FIGURA 6. EJEMPLO DE PÁGINA DEL TEMA ........................................................................................... 15
FIGURA 7. BOTONES PARA NAVEGAR POR LA APLICACIÓN ................................................................... 16
FIGURA 8. EJEMPLO DE PÁGINA CON APPLET ........................................................................................ 16
FIGURA 9. PÁGINA DE LOGIN ................................................................................................................. 17
FIGURA 10. OPCIÓN PARA INSCRIBIRSE ................................................................................................. 17
FIGURA 11. VOLVER AL CURSO INTERACTIVO ........................................................................................ 17
FIGURA 12. INSCRIPCIÓN COMO NUEVO USUARIO ............................................................................... 18
FIGURA 13. MENÚ DEL ALUMNO ........................................................................................................... 18
FIGURA 14. MENÚ DEL PROFESOR ......................................................................................................... 19
FIGURA 15. EJEMPLO DE TEST ................................................................................................................ 20
FIGURA 16. ELECCIÓN DE TIPO DE PREGUNTA ....................................................................................... 20
FIGURA 17. CREACIÓN DE LA PREGUNTA ............................................................................................... 21
FIGURA 18. ELECCIÓN DE PREGUNTA A MODIFICAR .............................................................................. 21
FIGURA 19. MODIFICACIÓN DE LA PREGUNTA ...................................................................................... 22
FIGURA 20. ELECCIÓN DE TIPO DE TEST ................................................................................................. 22
FIGURA 21. ELECCIÓN DE LAS PREGUNTAS ............................................................................................ 23
FIGURA 22. NÚMERO DE PREGUNTAS EN CADA TEST............................................................................ 23
FIGURA 23. ELECCIÓN DEL ALUMNO PARA RESULTADOS ...................................................................... 24
FIGURA 24. RESULTADOS ....................................................................................................................... 24
FIGURA 25. OPCIÓN PARA VER LA GRÁFICA .......................................................................................... 25
FIGURA 26. GRÁFICA CON LOS RESULTADOS DEL ALUMNO .................................................................. 25
FIGURA 27. SELECCIÓN DEL ALUMNO Y DEL TEST .................................................................................. 26
FIGURA 28. LISTADO DE PREGUNTAS QUE RESPONDIÓ Y CUALES FALLÓ Y ACERTÓ ............................. 26
FIGURA 29. ELECCIÓN DEL ALUMNO PARA ERRORES ............................................................................ 27
FIGURA 30. VISUALIZACIÓN DE LOS ERRORES ....................................................................................... 27
FIGURA 31. OPCIÓN PARA VER EL GRÁFICO DE BARRAS........................................................................ 27
FIGURA 32. GRÁFICO DE BARRAS CON LOS ERRORES POR TEMA .......................................................... 28
FIGURA 33. ELECCIÓN DE ALUMNO Y TEMA A SEGUIR .......................................................................... 28
FIGURA 34. LISTADO DE TEST Y PREGUNTAS FALLADAS DEL TEMA ELEGIDO ........................................ 29
ÍNDICE DE TABLAS:
TABLA 1. B.D DE PREGUNTAS Y RESPUESTAS........................................................................................... 7
TABLA 2. B.D DE USUARIOS, ERRORES Y RESULTADOS ............................................................................ 8
TABLA 3. B.D. PREGUNTAS ACERTADAS................................................................................................... 8
TABLA 4. B.D NÚMERO DE PREGUNTAS ................................................................................................... 8
-3-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
1 CONDICIONES GENERALES
1.1 INTRODUCCIÓN
La realización del presente proyecto titulado Herramienta Didáctica
Interactiva para el Aprendizaje de los Ultrasonidos se enmarca bajo la designación
de proyecto fin de carrera y tiene como propósito culminar con éxito los
estudios de Ingeniería Técnica Industrial bajo la especialidad de Electrónica
Industrial.
El autor del presente proyecto ha cursado estos estudios en la Universidad
de la Rioja.
1.2 CONDICIONES DE DESARROLLO
El proyecto desarrollado presenta una parte importante de trabajo en
aspectos concretos de la realización e implementación de aplicaciones
informáticas.
Actualmente no existe una normativa específica para la elaboración de
programas por ordenador, así que resulta imposible referirse a condiciones
legales o administrativas.
Sin embargo, todo software debe ofrecer al usuario las condiciones
mínimas que se expondrán a continuación:

La utilización del software no debe alterar el normal
funcionamiento del sistema operativo ni del resto de programas
instalados. Por eso durante la programación se ha de prestar
especial atención a no modificar, a la hora de la ejecución, ningún
aspecto de la configuración del sistema.

Siempre se debe buscar la máxima compatibilidad posible: el
software ha de poder ser utilizado por el mayor número de
usuarios posibles. Los requerimientos mínimos del sistema para el
software desarrollado se detallarán en el apartado 3 del presente
pliego de condiciones.

En el momento en el que el usuario abandone la aplicación el
programa debe liberar automáticamente todos los recursos de
memoria utilizada durante su ejecución.
-4-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
1.3 DISTRIBUICIÓN
El presente proyecto se concibe como una herramienta didáctica para uso
en un ámbito universitario. Por lo que en se permite la libre distribución en ese
contexto.
-5-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
2 CONDICIONES DE MATERIALES Y EQUIPOS
Para cumplir los objetivos inicialmente planteados en el presente proyecto
se han utilizado diversos recursos hardware y software. En este apartado se
detallan las especificaciones de los materiales y equipos incluidos en cada uno
de estos apartados.
Los recursos descritos a continuación son los utilizados para la solución
final y se consideran los más apropiados para el cumplimiento con éxito del
presente proyecto en el momento de su realización. Esta afirmación no implica
que sean las más adecuadas para la realización de las tareas; son los que se han
considerado mejores entre todos los disponibles durante la realización del
presente proyecto.
2.1 RECURSOS DE HARDWARE
La presente aplicación dada su complejidad y volumen de cálculo precisa
de unos requerimientos hardware más o menos importantes para desarrollar
sus funciones de forma adecuada. Los requerimientos mínimos adecuados los
podemos fijar en un equipo:

Procesador como mínimo a 800 MHz.

521 MB de memoria RAM

Tarjeta gráfica compatible con DirectX 9.

32 MB de memoria de gráficos.

Disco duro de 20 gigabytes (GB) con 15 GB de espacio libre.
Estos requerimientos mínimos son aptos para el desarrollo de las
funciones de simulación, monitorización y observación de forma adecuada,
pero no aportan la potencia para el desarrollo fluido. Por eso se indica como
equipo recomendado para el perfecto funcionamiento de la aplicación un PC
compatible con las siguientes características:

Core 2 Duo a 2 GHz.

Disco Duro 60 GB ATA 100

4 GB de RAM.

ATI Mobility Radeon HD 4530.
-6-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES

Monitor 17’’ LG Flatron.
2.2 RECURSOS DE SOFTWARE
Debido a la modalidad de ejecución que presenta la aplicación los
requerimientos de software son los siguientes. Para poder llevar a cabo la
ejecución en sus distintos formatos será necesario disponer de una JVM (java
virtual machine) ajustada a la plataforma en la que se quiera ejecutar la
aplicación, un navegador Web comercial que soporte la apertura de páginas con
applets de Java.
Además se deberá tener instalada una base de datos de MySQL cuya
propiedades son las siguientes:

Nombre del usuario: root.

Contraseña: 1234.

Nombre del Host: localhost.

Puerto: 1523.

SID: test.
Además deberá tener instaladas las siguientes tablas:

Las tablas donde se guardarán las preguntas y las respuestas.
PREGUNTAS
CodPregunta
Clase
Enunciado
Tema
Validada
RESBUENAS
CodResBuena
Respuesta
CodPregunta
Correcta
PRE_TEST
Código
CodPregunta
Tabla 1. B.D de preguntas y respuestas
-7-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES

Las tablas de usuarios, los resultados de los test y la de errores por
tema.
USUARIOS
CodUsuario
Nombre
Apellidos
Nick
Pass
Tipo
Test
RESULTADOS
CodResultado
CodUsuario
Fecha
NumAciertos
ERRORES
CodError
CodUsuario
Tema
NumErrores
Tabla 2. B.D de usuarios, errores y resultados

Una tabla que se relaciona tanto con las de usuario como las
preguntas:
TEST_PRE
CodResultado
CodPregunta
Acierto
Tabla 3. B.D. preguntas acertadas

Una tabla con las preguntas que se quiere que salgan en los test:
NUMPREGUNTAS
Codigo
Tema1
Tema2
Tema3
Tema4
Tema5
Tema6
Tema7
Tema8
PregAle
Tabla 4. B.D número de preguntas
-8-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
3 CONDICIONES DE MONTAJE Y EJECUCIÓN
3.1 REQUERIMIENTOS MÍNIMOS
Los requerimientos mínimos para la ejecución de la aplicación son los
siguientes:

Procesador como mínimo a 800 MHz.

521 MB de memoria RAM

Tarjeta gráfica compatible con DirectX 9.

32 MB de memoria de gráficos.

Monitor SuperVGA 15”.
El sistema mínimo detallado mediante la enumeración anterior, representa
la configuración mínima necesaria para que el sistema sea capaz de iniciar el
programa. En ningún momento se garantiza que esta configuración pueda
ejecutar de forma satisfactoria para el usuario la presente aplicación.
3.2 INSTALACIÓN Y USO
La instalación y uso adecuada de la presente aplicación en el sistema se
detalla en el apartado 5 del presenta documento, Manual de Usuario.
Para la utilización adecuada de la presente aplicación se remite al usuario
a la documentación citada.
3.3 LIMITACIONES DE LA HERRAMIENTA
Las limitaciones de la presente herramienta didáctica se presentan en la
parte del auto-aprendizaje. Estas limitaciones son las siguientes:

Los campos a guardar en la base de datos están limitados a unos
caracteres. Aunque estos son lo suficientemente considerables para
que esto no sea un problema.

Solo habrá un usuario como profesor, cuyo Nick y Pass será:
o Nick: Admin.
o Pass: Ultrasonido
-9-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES

Las preguntas de tipo numérica admitirán un error entre un más
menos diez por ciento.

Las preguntas que no sean ni verdadero y falso ni numéricas
siempre serán con tres opciones como respuesta.

No se podrán borrar las preguntas pero si modificarlas.
Sin embargo no todo son limitaciones ya que la herramienta permite un
número tan grande de usuarios que se puede considerar ilimitado. Y lo mismo
se puede decir de las preguntas a poder guardar y el resultado de test
guardados.
-10-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
4 CONDICIONES ECONÓMICAS
En el presente proyecto se prescinde de establecer condiciones económicas
contractuales al no estar sujeto a un contrato de ejecución.
Puesto que la aplicación desarrollada no tiene un fin comercial, no se ha
elaborado el presupuesto pensando en el precio final de una licencia. El precio
se ha estimado conforme a las horas de trabajo empleadas y a todos los
materiales y equipos utilizados.
El precio final hace referencia, por tanto, al coste global que supondría
desarrollar este proyecto en su totalidad.
-11-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
5 GUIA DE USUARIO
Esta sección tiene como fin explicar a los usuarios la forma de utilizar la
herramienta, para lo que se describen el interfaz y las operaciones más
comunes. Se pretende que este manual sea claro, conciso y autocontenido.
5.1 PRESENTANCIÓN DE LA HERRAMIENTA
La presente aplicación es una herramienta didáctica para el aprendizaje, y
el seguimiento del mismo, de los ultrasonidos.
Su principal propósito es el de guiar al usuario en el aprendizaje de
conceptos difíciles alcanzar por su condición de intangibles, además de
permitirle la creación de test y su resolución.
Los alumnos, con la herramienta, podrán estudiar los contenidos y realizar
los test. El profesor podrá realizar un seguimiento de los alumnos a la hora de
realizar los test (resultados en los test y temas en los que más se equivoca).
5.2 REQUISITOS DEL SISTEMA
Requisitos de hardware:

Procesador como mínimo a 800 MHz.

521 MB de memoria RAM

Tarjeta gráfica compatible con DirectX 9.

32 MB de memoria de gráficos.

Monitor SuperVGA 15”.

Conexión a internet.
Requisitos de software:

JVM (Java Virtual Machine).

Navegador de internet que permita la ejecución de applets de Java.
5.3 EJECUCIÓN
Para comenzar a utilizar la aplicación debe abrirse el navegador web
correspondiente y navegar a la página web de la aplicación.
-12-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
5.4 DESCRIPCIÓN DEL INTERFAZ
En esta sección se describe el interfaz de la herramienta, distinguiendo las
pantallas y secciones que la componen, así como su funcionamiento.
5.4.1 Herramienta didáctica
5.4.1.1 Portada y presentación
Figura 1. Portada de la herramienta
Figura 2. Prólogo de la herramienta
Se encarga simplemente de presentar la aplicación.
-13-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
5.4.1.2 Índice principal
Está página nos permitirá el acceso a los distintos temas, clickando en
dicho tema, así como a la herramienta de evaluación pinchando en la opción de
recursor.
Figura 3. Índice general de la aplicación
5.4.1.3 Índice de los temas
En esta página se podrá navegar a los contenidos del tema Al igual que en
el índice general basta con clickar en el contenido que se desea ver.
Figura 4. Ejemplo de índice de tema
-14-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
Se podrá volver al índice general a través del icono con una figura de casa
de la parte superior izquierda.
Figura 5. Icono de navegación a índice general
5.4.1.4 Páginas de los temas
En estas páginas se encontrara la teoría desarrollada para ese tema.
Además se encontraran normalmente tres botones en la parte superior derecha
que permitirá la navegación por la herramienta (retroceder, ir al índice del tema
y avanzar). Los tres botones estarán en todas las páginas excepto en la primera
y última de cada tema, ya que en ellas no se puede retroceder o avanzar.
Figura 6. Ejemplo de página del tema
-15-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
Figura 7. Botones para navegar por la aplicación
5.4.1.5 Páginas con applets
En dichas páginas se encuentran los applets creados para afianzar
conceptos y a su derecha las instrucciones necesarias a seguir, para el buen
entendimiento del concepto tratado en el applet.
Figura 8. Ejemplo de página con applet
-16-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
5.4.2 Herramienta de evaluación
5.4.2.1 Login
En esta página el usuario podrá loguearse como usuario de la aplicación o
darse de alta en la aplicación como alumno.
Figura 9. Página de login
Para darse de alta hay que clickar en la opción de la izquierda
“Inscribirse…”.
También se podrá volver al curso interactivo con la opción de la parte
superior a la derecha.
Figura 10. Opción para inscribirse
Figura 11. Volver al curso interactivo
-17-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
5.4.2.2 Inscripción en el curso
Para inscribirse solo habrá que rellenar todos los campos en blanco. Una
vez rellenados pinchar en “Guardar” y el usuario ya habrá sido guardado. En
caso de falta de datos no se permitirá el guardar y se avisará.
Figura 12. Inscripción como nuevo usuario
5.4.2.3 Menú principal
5.4.2.3.1 Alumno
Una vez logueado en la herramienta, el alumno pinchando en la opción
“Hacer test” podrá acceder a un test aleatorio con el que podrá comprobar sus
conocimientos de los ultrasonidos.
Figura 13. Menú del alumno
-18-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
5.4.2.3.2 Profesor
Cuando se conecte el profesor, podrá realizar las siguientes tareas:

Crear preguntas con la opción “Crear pregunta nueva”.

Modificar las preguntas creadas con la opción “Modificar
pregunta”.

Elegir el tipo de test que se quiere que hagan los alumnos “Elegir
tipo de test”.

Ver la nota de los test de cada alumno con la opción “Ver notas de
los test”.

Ver los test individualizados, con las preguntas que entraron al
alumno y cuales fallo con la opción “Ver resultados de los Test”.

Ver los errores de los alumnos en cada tema con la opción “Ver
errores por temas”.

Observar los errores que tuvo el alumno de cada tema por test que
realizo, con la opción “Ver los errores de los temas por test”.
Figura 14. Menú del profesor
-19-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
5.4.2.4 Test
En esta página el alumno tendrá las preguntas con sus posibles respuestas,
a no ser que sea una respuesta de tipo numérica (en el que se aceptará un error
del más menos diez por ciento).
Figura 15. Ejemplo de test
5.4.2.5 Crear pregunta
Figura 16. Elección de tipo de pregunta
Al pinchar, el profesor, en la opción para crear una pregunta te saldrá la
anterior página para que elijas que tipo de pregunta quieres:

Verdadero y falso.
-20-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES

Tipo numérica.

Respuesta a elegir entre tres opciones.
Una vez elegida la pregunta, nos saldrá un formulario para guardarla
correspondiente al tipo de pregunta (en el ejemplo siguiente es de tipo
numérica).
Figura 17. Creación de la pregunta
Si se elige en tema la opción “TV” se guardará un tipo de pregunta que no
saldrá en ningún test aleatorio, solo podrá elegir el profesor cuando sale. Esto
será para que cuando el profesor lo decida lance esas preguntas y compruebe
que el aprendizaje es el correcto y que el alumno no responde bien por simple
memorización.
5.4.2.6 Modificar pregunta
Al elegir esta opción nos saldrá un listado con todas las preguntas
guardas. En la columna de la derecha tendremos la opción que nos llevará a la
modificación de la misma.
Figura 18. Elección de pregunta a modificar
-21-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
Una vez elegida la pregunta nos saldrá un formulario para poder
modificar la pregunta.
Figura 19. Modificación de la pregunta
5.4.2.7 Elección del tipo de test
Al elegir esta opción el profesor podrá elegir el tipo de test que quiera que
hagan los alumnos. Podrán ser de dos tipos:

Test de preguntas aleatorias.

Test con preguntas de cada tema.

Test con 20 preguntas elegidas por el profesor.
Figura 20. Elección de tipo de test
-22-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
La opción elegida será guardada en la base de datos y el alumno al entrar
a realizar los test le aparecerá el tipo de test elegido.
En caso de elegir la opción de 20 preguntas elegidas por el profesor nos
aparecerá la siguiente página para seleccionar las preguntas deseadas.
Figura 21. Elección de las preguntas
5.4.2.8 Elección del número de preguntas
Al pinchar en dicha opción al profesor le saldrá una pantalla donde elegirá
el número de preguntas que quiere para el test aleatorio y para el test de tantas
preguntas por tema (podrá elegir el número de preguntas en cada tema).
Figura 22. Número de preguntas en cada test
-23-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
5.4.2.9 Notas de los test
Dentro de esta opción lo primero será elegir el alumno al que queremos
ver su evolución.
Figura 23. Elección del alumno para resultados
Una vez elegido el alumno saldrá un listado con todos los test realizados.
En el listado pondrá el nombre, la fecha y la nota del alumno.
Figura 24. Resultados
-24-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
Si se elige la opción “Ver gráfica con los resultados”:
Figura 25. Opción para ver la gráfica
Saldrá una pantalla nueva con una gráfica que representa las notas del
alumno y por tanto se observará su progreso:
Figura 26. Gráfica con los resultados del alumno
5.4.2.10 Resultado de los test
Al seleccionar estar opción nos saldrá combo para poder elegir el alumno
y una vez seleccionado nos dará la opción de poder elegir el test que queremos
al que queremos ver sus resultados particularizados.
-25-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
Figura 27. Selección del alumno y del test
Una vez seleccionado lo anterior nos saldrá una lista con las preguntas
que le entraron y en la que acertó y falló.
Figura 28. Listado de preguntas que respondió y cuales falló y acertó
5.4.2.11 Errores por tema
Al entrar en esta opción nos saldrá para poder elegir el alumno al que
queremos ver los errores que ha cometido en cada tema.
-26-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
Figura 29. Elección del alumno para errores
Al elegir el alumno nos saldrá un listado en que podremos ver los errores
que ha cometido ese alumno en cada tema.
Figura 30. Visualización de los errores
Si se elige la opción “Ver en diagrama de barras”:
Figura 31. Opción para ver el gráfico de barras
Saldrá una pantalla nueva con un gráfico que representa los errores del
alumno en cada tema.
-27-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
Figura 32. Gráfico de barras con los errores por tema
5.4.2.12 Errores de temas en cada test
Al pinchar en esta opción se podrá elegir el alumno y el tema que se
quiere seguir. Al hacer click en “Ok” saldrá un listado con las preguntas que se
fallaron del tema elegido en cada test realizado.
Figura 33. Elección de alumno y tema a seguir
-28-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PLIEGO DE CONDICIONES
Figura 34. Listado de test y preguntas falladas del tema elegido
Logroño, 5 de Diciembre de 2012
El autor:
Fdo.: Javier Cariñanos Rodríguez
-29-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
HERRAMIENTA DIDÁCTICA
INTERACTIVA PARA EL
APRENDIZAJE DE LOS
ULTRASONIDOS
PRESUPUESTO
Javier Cariñanos Rodríguez
PRESUPUESTO
ÍNDICE
1 PRESUPUESTO ....................................................................................................................................... 3
1.1 UNIDADES DE PROYECTO ....................................................................................................................... 3
1.2 PRECIOS UNITARIOS ............................................................................................................................. 3
1.3 MEDICIONES ...................................................................................................................................... 3
1.4 PRESUPUESTO PARCIAL ......................................................................................................................... 3
1.5 RESUMEN DEL PRESUPUESTO .................................................................................................................. 4
ÍNDICE DE TABLAS:
TABLA 1. UNIDADES DE PROYECTO.......................................................................................................... 3
TABLA 2. PRECIOS UNITARIOS ................................................................................................................. 3
TABLA 3. CANTIDADES ............................................................................................................................. 3
TABLA 4. PRESUPUESTO PARCIAL DEL DISEÑO DE LA APLICACIÓN .......................................................... 3
TABLA 5. VALOR DEL DISEÑO DE LA APLICACIÓN .................................................................................... 3
TABLA 6. PRESUPUESTO PARCIAL DE PROGRAMACIÓN .......................................................................... 4
TABLA 7. VALOR DE PROGRAMACIÓN ..................................................................................................... 4
-2-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PRESUPUESTO
1 PRESUPUESTO
1.1 UNIDADES DE PROYECTO
CAPÍTULOS
DESCRIPCIÓN
DISEÑO DE APLICACIÓN
Diseñador gráfico: Herramienta Didáctica
Diseñador gráfico: Evaluación
Programador de lenguaje Java y HTML
Programador de lenguaje JSP
PROGRAMACIÓN
Tabla 1. Unidades de proyecto
1.2 PRECIOS UNITARIOS
Desglose de los capítulos con sus precios unitarios:
CAPÍTULOS
DESCRIPCIÓN
DISEÑO DE APLICACIÓN
Diseñador gráfico: Herramienta Didáctica
Diseñador gráfico: Evaluación
Programador de lenguaje Java y HTML
Programador de lenguaje JSP
PROGRAMACIÓN
PU (€)
27
27
40
40
Tabla 2. Precios unitarios
1.3 MEDICIONES
CAPÍTULOS
DESCRIPCIÓN
DISEÑO DE APLICACIÓN
Diseñador gráfico: Herramienta Didáctica
Diseñador gráfico: Evaluación
Programador de lenguaje Java y HTML
Programador de lenguaje JSP
PROGRAMACIÓN
Nº
UNIDADES
25
10
300
200
Tabla 3. Cantidades
1.4 PRESUPUESTO PARCIAL
Desglose de los precios de cada capítulo:
DISEÑO DE LA APLICACIÓN
DESCRIPCIÓN
Diseñador gráfico: Herramienta Didáctica
Diseñador gráfico: Evaluación
UNIDADES Nº
UNIDADES
HORAS
25
HORAS
10
PU (€)
27
27
SUBTOTAL
(€)
675
270
Tabla 4. Presupuesto parcial del diseño de la aplicación
Suma de la partida
945
Tabla 5. Valor del diseño de la aplicación
-3-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PRESUPUESTO
PROGRAMACIÓN
DESCRIPCIÓN
UNIDADES
Programador de lenguaje Java y HTML
Programador de lenguaje JSP
HORAS
HORAS
Nº
UNIDADES
300
200
PU (€)
40
40
SUBTOTAL
(€)
12000
8000
Tabla 6. Presupuesto parcial de programación
Suma de la partida
20000
Tabla 7. Valor de programación
1.5 RESUMEN DEL PRESUPUESTO
El Presupuesto global del proyecto está compuesto por todas las partidas
descritas anteriormente, correspondientes a la ejecución material, incluye los
Gastos Generales, el Beneficio Industrial y el I.V.A.
A continuación se desglosan las diferentes partidas que componen el
presupuesto:
CAPÍTULOS
EUROS
Diseños de aplicación………………… 945
Programación……………………………. 20000
Total de ejecución: 20945€
Beneficio Industrial (6%): 1256,70€
Aplicando el I.V.A. del 21%: 1520,61€
Total: 22465,61€
Asciende el presupuesto general a la expresada cantidad de VEINTE Y
DOS MIL CUATROCIENTOS SESENTA Y CINCO EUROS con SESENTA Y
UN CÉNTIMOS.
Por último comentar que el presupuesto está realizado con precios de
2012, en caso de ejecutarlo posteriormente habría que actualizar dichos precios.
Además que se utilizan varios programas gratuitos para este proyecto, pero en
caso de querer vender la aplicación habría que pagar las licencias de dichos
programas.
-4-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos
PRESUPUESTO
Logroño, 5 de Diciembre de 2012
El autor:
Fdo.: Javier Cariñanos Rodríguez
-5-
Herramienta Didáctica Interactiva para el Aprendizaje de los Ultrasonidos