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: publicaciones@unirioja.es 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: javier.carinanos@alum.unirioja.es -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">   <input type="submit" value="Registrarse"><br><br> </form></center>        <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">   <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>        <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">   <input type="submit" value="Guardar"><br><br> <%} int codUsu=1; %> </form></center>        <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>       <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        <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; %>        <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">   <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>        <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){%>  <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                       </input><br><br> <input type="submit" value="Guardar"> <%} else if(numTest==2){%>  <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     </input><br><br> <input type="submit" value="Guardar"> <%} else if(numTest==3){%>  <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     </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>        <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">   <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">   <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        <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>        <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>        <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>        <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; %>        <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>        <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; %>        <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>       <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