Blog Daniel Luque

Pequeña calculadora nutricional en JavaScript

1 Comentario

Hola!.

Hace unas semanas cree una pequeña calculadora nutricional en JavaScript para hacer de manera rápida y fácil un trabajo que consistía en hacer los cálculos nutricionales de las 4 comidas diarias durante una semana (el trabajo en si no era complicado pero cansaba ya que se repetía constantemente la misma operación).

Introducción:

Creamos un sencillo formulario en el que se piden dos datos (Alimento y Masa del alimento expresada en gramos), luego estos datos son usados para hacer los cálculos y mostrarlos en una nueva ventana.

El script se compone de 3 archivos:

  • Un archivo “.html” (en mi caso fue index.html) en el que se crea el formulario necesario para introducir los datos en el script.
  • 2 Archivos JavaScript (“.js”) un archivo para las funciones del script y otro para almacenar las Array con los valores de cada alimento.

Archivo .HTML:

En este archivo se crea tanto el formulario como los enlaces a los ficheros javascript que contienen las funciones las cuales seran llamadas al hacer click en el boton del formulario.

Documento HTML Completo:

<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Calculadora</title>
 <!-- Llamadas a los archivos JS -->
 <script src="lista.js" type="text/javascript"></script>
 <script src="funciones.js" type="text/javascript"></script>
</head>

<body>
 <!-- Formulario -->
 <form name="frm">
  <p>Alimento:
   <input type="text" name="txtAlimento" tabindex="1" />
   Masa(g):
   <input type="text" name="txtMasa" tabindex="2" />
   <button name="btnCalcular" onclick="obtener_datos();" tabindex="3">Calcular</button>
  </p>
 </form>
</body>
</html>

Continuación paso a explicar las partes claves del archivo.

Head:
En el Head podemos observar las etiquetas “Script” las cuales se encargan de enlazar a los archivos “.js” que contienen las funciones.

 <!-- Llamadas a los archivos JS -->
 <script src="lista.js" type="text/javascript"></script>
 <script src="funciones.js" type="text/javascript"></script>

Formulario:
El cuerpo del documento es básicamente un formulario de nombre “frm” el cual se encarga de recoger los datos y llamar a las funciones del script.

 <!-- Formulario -->
 <form name="frm">
  <p>Alimento:
   <input type="text" name="txtAlimento" tabindex="1" />
   Masa(g):
   <input type="text" name="txtMasa" tabindex="2" />
   <button name="btnCalcular" onclick="obtener_datos();" tabindex="3">Calcular</button>
  </p>
 </form>

Lista de Alimentos .js:

Uno de los archivos “.js” se encarga de almacenar las arrays correspondientes a cada alimento, en estas arrays se guarda los valores de cada nutriente del alimento (el valor de los nutrientes corresponde a 100g del alimento).

Ejemplo de algunas arrays de este archivo:

//====================================================================================
//								LISTA DE ALIMENTOS
//				 	(cantidad de nutrientes en 100g de alimento)
//====================================================================================

//CEREALES====
 Pan = new Array();
  Pan[0]=258;//Kcal
  Pan[1]=7.8;//Proteinas
  Pan[2]=1;//Lípidos
  Pan[3]=38;//Glúcidos
  Pan[4]=2.2;//Fibra
  Pan[5]=19;//Calcio
  Pan[6]=1.7;//Hierro
  Pan[7]=0;//Vita A
  Pan[8]=0;//Vit C
  Pan[9]=0;//Vit B

 Arroz = new Array();
  Arroz[0]=362;
  Arroz[1]=7;
  Arroz[2]=0.9;
  Arroz[3]=86;
  Arroz[4]=0.2;
  Arroz[5]=10;
  Arroz[6]=0.5;
  Arroz[7]=0;
  Arroz[8]=0;
  Arroz[9]=0;

Nota: solo he puesto dos de las arrays ya que cada alimento tiene su propia array y el archivo acaba teniendo muchas lineas de codigo.

para añadir un alimento basta con crear una array con el nombre del alimento.

Funciones .js:

Este archivo es el que contiene todas las funciones del script, como por ejemplo la función “calcular_valores()” encargada de hacer los cálculos.

Archivo completo:

//============================
//			FUNCIONES
//============================

 //ARRAYS
 valores = new Array(); //Almacenar valores obtenidos de la funcion obtener_datos()
 //Array que almaena los nombres de los nutrientes.
 nombres_nutrientes = new Array("Kcal","Proteinas(g)","Lípidos(g)","Glúcidos(g)","Fibra(g)","Calcio(mg)","Hierro(mg)","Vit A(μg)","Vit C(mg)","Vit B(μg)");

 //Función que se encarga de recoger los datos del formulario
 function obtener_datos() {
	alimento = document.frm.txtAlimento.value; //La variable alimentos toma el valor del alimento
    masa = document.frm.txtMasa.value; //La variable masa toma el valor de la masa del alimento
	alimento = alimento.toUpperCase(); //convertir el contenido de la variable a mayusculas

	 //Asociar el alimento con su array y pasarlo a la funcion de calculo
	 switch(alimento) {
		 case "PAN":
		  calcular_valores(masa,Pan[0],Pan[1],Pan[2],Pan[3],Pan[4],Pan[5],Pan[6],Pan[7],Pan[8],Pan[9]);
		  break;
		 case "ARROZ":
		  calcular_valores(masa,Arroz[0],Arroz[1],Arroz[2],Arroz[3],Arroz[4],Arroz[5],Arroz[6],Arroz[7],Arroz[8],Arroz[9]);
		  break;
                       //En caso de que no se encuentre el alimento se muestra un mensaje
		 default:
		  alert("No se encuentra el alimento indicado");
		 }
		//calcular_valores(masa,);
	 }

 //Función para calcular los valores
 function calcular_valores(masa,valor0,valor1,valor2,valor3,valor4,valor5,valor6,valor7,valor8,valor9){
	 //Asignamso los valores del alimento al Array valores.
	 valores[0]=valor0;
	 valores[1]=valor1;
	 valores[2]=valor2;
	 valores[3]=valor3;
	 valores[4]=valor4;
	 valores[5]=valor5;
	 valores[6]=valor6;
	 valores[7]=valor7;
	 valores[8]=valor8;
	 valores[9]=valor9;

	 //Un vucle con una variable "i=0" para calcular todo automaticamente
	 for(i=0;i<valores.length;i++){
		 valores[i]=valores[i]*masa/100;
		 }
	 mostrar_resultado();
	 }

 //Funcion para msotrar el resutlado
 function mostrar_resultado() {
	 //Crear nueva ventana para mostrar el resultado
	 ventana_resultado = window.open("","Resultado","toolbar=no, status=no,top=50, left=50, width=200, height=300");

	 //Vucle que escribe los resultados automaticamente
	 for (i=0;i<valores.length;i++) {
		 ventana_resultado.document.write(nombres_nutrientes[i]+": "+valores[i]+"<br />");
		 }
	 }

Explicare las partes del archivo una a una.

ARRAYS:
Se declaran dos arrays la primera se usara para almacenar los valores de los nutrientes de cada alimento y la segunda contiene el nombre de cada nutriente.

 //ARRAYS
 //Almacenar valores obtenidos de la funcion obtener_datos()
 valores = new Array();
 //Array que almaena los nombres de los nutrientes.
 nombres_nutrientes = new Array("Kcal","Proteinas(g)","Lípidos(g)","Glúcidos(g)","Fibra(g)","Calcio(mg)","Hierro(mg)","Vit A(μg)","Vit C(mg)","Vit B(μg)");

obtener_datos():
Esta función se encarga de recoger los datos del formulario y asignarlo a las variables.

    alimento = document.frm.txtAlimento.value; //La variable alimentos toma el valor del alimento
    masa = document.frm.txtMasa.value; //La variable masa toma el valor de la masa del alimento
    alimento = alimento.toUpperCase(); //convertir el contenido de la variable a mayusculas

lo siguiente es mediante un “switch” asociar el nombre de cada alimento con su “case” correspondiente el cual llama a la función calcular_valores().
Al hacer la llamada a la la función se le pasan los valores de la masa y el array del alimento.

	 //Asociar el alimento con su array y pasarlo a la funcion de calculo
	 switch(alimento) {
		 case "PAN":
		  calcular_valores(masa,Pan[0],Pan[1],Pan[2],Pan[3],Pan[4],Pan[5],Pan[6],Pan[7],Pan[8],Pan[9]);
		  break;
		 case "ARROZ":
		  calcular_valores(masa,Arroz[0],Arroz[1],Arroz[2],Arroz[3],Arroz[4],Arroz[5],Arroz[6],Arroz[7],Arroz[8],Arroz[9]);
		  break;
         //En caso de que no se encuentre el alimento se muestra un mensaje
		 default:
		  alert("No se encuentra el alimento indicado");
		 }

Para agregar otro alimento basta con crear un nuevo case con el nombre del alimento y con la función que pase los valores del array correspondiente.

calcular_valores():
Esta función es la encargada de hacer los cálculos nutricionales de los alimentos.

Al ejecutar la función se le asignan los valores de los alimentos a la Array valores la cual los usara para realizar los cálculos nutricionales.

 //Función para calcular los valores
 function calcular_valores(masa,valor0,valor1,valor2,valor3,valor4,valor5,valor6,valor7,valor8,valor9){
	 //Asignamso los valores del alimento al Array valores.
	 valores[0]=valor0;
	 valores[1]=valor1;
	 valores[2]=valor2;
	 valores[3]=valor3;
	 valores[4]=valor4;
	 valores[5]=valor5;
	 valores[6]=valor6;
	 valores[7]=valor7;
	 valores[8]=valor8;
	 valores[9]=valor9;

A continuación la parte encargada de realizar los cálculos y guardarlos en la array, los cálculos se realizan mediante un bucle for el cual hace que la variable aumente y los cálculos se realicen y guarden en la array.

	 //Un bucle con una variable "i=0" para calcular todo automaticamente
	 for(i=0;i<valores.length;i++){
		 valores[i]=valores[i]*masa/100;
		 }
	 mostrar_resultado();
	 }

mostrar_resultado():
Por ultimo esta función que es la que se encarga de mostrar los resultados de los calculos.

La primera parte de la función crea una nueva ventana en la que se mostraran los resultados.

 function mostrar_resultado() {
	 //Crear nueva ventana para mostrar el resultado
	 ventana_resultado = window.open("","Resultado","toolbar=no, status=no,top=50, left=50, width=200, height=300");

Y por ultimo un bucle for escribe en la nueva ventana los resultados de los cálculos.

	 //Vucle que escribe los resultados automaticamente
	 for (i=0;i<valores.length;i++) {
		 ventana_resultado.document.write(nombres_nutrientes[i]+": "+valores[i]+"<br />");
		 }
	 }

Cambien puedes descargar los archivos completos del script haciendo click aquí

Nota: El script es bastante sencillo y puede ser mejorado por ejemplo mostrando los resultados de los cálculos de alguna otra forma, pero con esas características ya me era suficiente para realizar el trabajo.

Demo de HTML5

Dejar un comentario

Hola a todos.

Como no otra vez con HTML5.

En esta ocasión os dejare un enlace donde podréis ver la demo de HTML 5 en youtube, os aconsejo que le echéis un vistazo a su codigo fuente vereis como se usa y lo comprenderéis mejor.

DEMO DE HTML 5

Si tu navegador no muestra bien la pagina es por que no soporta HTML5, pero los navegadores mas usados lo tienen ya incorporado.

Saludos.

Uso de algunas de las neuvas etiqeutas de HTML 5

Dejar un comentario

Hola a todos de nuevo.

En esta ocasión seguiré hablando de HTML 5 y sus novedades mas concretamente de estas etiquetas.

 

Como sabrán en html 4 para hacer el diseño de una web sencilla avía que distribuir las etiquetas de una forma concreta como en el siguiente ejemplo:

Ejemplo de distribución de diseño en html 4

Ejemplo de distribución de diseño en html 4

Sin embargo en HTML 5 gracias a las etiquetas que cite al principio de la entrada se usarían esas etiquetas para hacer el diseño básico de una web como en el siguiente ejemplo.

Diseño de una pagina web sencilla en html 5

Diseño de una pagina web sencilla en html 5

Bueno como seguro abréis visto la utilidad de esas etiquetas no las explicare, en mi opinión me gustan esas nuevas etiquetas por que se supone que no abra que usar tantos div pero la verdad me encanta eso de usar muchos div.

Bueno espero que os halla servido esta entrada, gracias a Bruce Lawson’s por las imágenes.

saludos.

Diferencia entre HTML 4 y HTML 5

Dejar un comentario

Hola a todos de nuevo.

Esta entrada es original de Zonamasters.

Estas son las diferencias entre HTML 5 y HTML 4, espero que os sirva de ayuda ami desde luego me a ayudado bastante con algunas etiquetas de HTML 5 que no conocía su función.

  • 4: indica si el elemento está definido en HTML 4.01
  • 5: indica si el elemento está definido en HTML 5
Etiqueta Descripción 4 5
<!–…–> Para incrustar comentarios 4 5
<!DOCTYPE> Para indicar el tipo de documento 4 5
<a> El hipervínculo de toda la vida 4 5
<abbr> Para abreviaciones 4 5
<acronym> No soportado. Define un acrónimo 4
<address> Define un elemento de la dirección 4 5
<applet> No soportado. Define un applet 4
<area> Define un área dentro de un mapa de imagen 4 5
<article> Define un artículo 5
<aside> Define el contenido, aparte de contenido de la página 5
<audio> Define el contenido de sonido 5
<b> Define texto en negrita 4 5
<base> Define una URL base para todos los enlaces en una página 4 5
<basefont> No soportado. Usar CSS en lugar 4
<bdo> Define la dirección de la pantalla de texto 4 5
<big> No soportado. Define texto grande 4
<blockquote> Defines a long quotation Define una larga cita 4 5
<body> Defines the body element Define el cuerpo elemento 4 5
<br> Inserts a single line break Inserta un salto de línea 4 5
<button> Defines a push button Define un botón 4 5
<canvas> Defines graphics Define gráficos 5
<caption> Defines a table caption Define una tabla título 4 5
<center> Not supported. Defines centered text No soportado. Define texto centrado 4
<cite> Defines a citation Define una cita 4 5
<code> Define el código de texto 4 5
<col> Define las características de las columnas de la tabla 4 5
<colgroup> Define grupos de columnas de la tabla 4 5
<command> Define un botón de comando 5
<datagrid> Define los datos en una lista de árboles 5
<datalist> Define una lista desplegable 5
<datatemplate> Define una plantilla de datos 5
<dd> Define una descripción de la definición 4 5
<del> Define texto suprimido 4 5
<details> Define los detalles de un elemento 5
<dialog> Define un cuadro de diálogo (conversación) 5
<dir> No soportado. Define una lista de directorio 4
<div> Define una sección en un documento 4 5
<dfn> Define un termino definición 4 5
<dl> Define una lista de definición 4 5
<dt> Define un termino definición 4 5
<em> Define destacó texto 4 5
<embed> Define un elemento embebido de contenido interactivo 5
<eventsource> Define un objetivo para los eventos enviados por un servidor 5
<fieldset> Define un fieldset 4 5
<figure> Define un grupo de los contenidos de los medios, y su leyenda 5
<font> Obsoleto. Define texto fuente, el tamaño y el color 4
<footer> Define un pie de página de una sección o página 5
<form> Define un formulario 4 5
<frame> No soportado. Define una sub ventana (un marco) 4
<frameset> No soportado. Define un conjunto de marcos 4
<h1> a <h6> Define tamaño de la cabecera 1 a 6 4 5
<head> Provee información sobre el documento 4 5
<header> Define un encabezado de una sección o página 5
<hr> Define una línea horizontal 4 5
<html> Define un documento html 4 5
<i> Define texto en cursiva 4 5
<iframe> Define una línea sub ventana (frame) 4 5
<img> Define una imagen 4 5
<input> Define un campo de entrada 4 5
<ins> Define texto insertado 4 5
<isindex> No soportado. Define un único campo de entrada de línea 4
<kbd> Define el teclado de texto 4 5
<label> Define una etiqueta para formularios 4 5
<legend> Define un título en un fieldset 4 5
<li> Define un elemento de la lista 4 5
<link> Define un recurso de referencia 4 5
<mark> Define texto marcado 5
<map> Define un mapa de imagen 4 5
<menu> Define una lista de menú 4 5
<meta> Define la información de metadatos 4 5
<meter> Define medición dentro de un rango predefinido 5
<nav> Define vínculos de navegación 5
<nest> Define una nestingpoint en un datatemplate 5
<noframes> No soportado. Noframe Define una sección 4
<noscript> Define una sección noscript 4 5
<object> Define un objeto incrustado 4 5
<ol> Define una lista ordenada 4 5
<optgroup> Define un grupo de opciones 4 5
<option> Define una opción en una lista desplegable 4 5
<output> Define algunos tipos de producción 5
<p> Define un párrafo 4 5
<param> Define un parámetro para un objeto 4 5
<pre> Define texto preformateado 4 5
<progress> Define el progreso de una tarea de cualquier tipo 5
<q> Define una breve cita 4 5
<rule> Define las normas de actualización de una plantilla 5
<s> No soportado. Define texto tachado 4
<samp> Define el código de muestra 4 5
<script> Un Script 4 5
<section> Una sección 5
<select> Lista seleccionable 4 5
<small> Texto en pequeño 4 5
<source> Definir un recurso media 5
<span> Una sección del documento 4 5
<strike> No soportado. Define texto tachado 4
<strong> Texto en negrita 4 5
<style> Para definir un estilo 4 5
<sub> Para subíndices 4 5
<sup> Para superíndice 4 5
<table> Para definir una tabla 4 5
<tbody> Cuerpo de la tabla 4 5
<td> Una celda de la tabla 4 5
<textarea> Define una área de texto 4 5
<tfoot> Pie (Footer) de una tabla 4 5
<th> Define una cabecera de la tabla 4 5
<thead> Define una cabecera de la tabla 4 5
<time> Defina una fecha 5
<title> Para el titulo de la página web 4 5
<tr> Fila de una tabla 4 5
<tt> No soportado. Define texto teletipo 4
<u> No soportado. Define texto subrayado 4
<ul> Para listas desordenadas 4 5
<var> Para definir una variable 4 5
<video> Para indicar que queremos incrustar un video 5
<xmp> No soportado. Define texto preformateado 4

Sobre las etiquetas META

2 Comentarios

Hola a todos de nuevo.

En primer lugar pedirles disculpas por que hace tiempo que no escrib? ningun articulo, la raz?n es que estos d?as e estado algo ocupadillo ya se sabe como son los examenes…

Bueno pues hoy pens? en escribir este articulo explicando todo lo que se sobre las etiquetas META

?Bueno pues amnos a la obra!

?Que son las etiquetas meta?
Son etiquetas XHTML/HTML que se introducen en la cabecera de la web.

?Para qu esirven?
Sirven para proporcionar datos de nuestro sitio a otros sistemas inform?tico como por ejemplo:
-Buscadores
-Navegadores

?donde se colocan?
se colocan en la cabecera de la web osea entre las etiquetas:

1
2
<head>
</head>

?como se escriben?
son etiquetas del grupo de las etiquetas no cerradas por lo tanto se escriben de la siguiente manera:

1
<meta  />

estas etiquetas tienen varios atributos que son:
-name=”" Indica que tipo de etiqueta se va a usar.
-contet=”" Indica el contenido de la etiqueta.
-http-equiv=”" indica al navegador alg?n tipo de acci?n.
Ejemplo de como quedar?a una etiqueta meta bien escrita e insertada:

1
2
3
<head>
 <meta name="keywords" content="ejemplo, de, una, etiqueta, meta">
</head>

Lista de meta ?tiles
Bueno aqu? les dejo algunas meta que son muy ?tiles:

1
2
3
4
5
6
7
8
9
<meta name="description" content="introduce una descripcci?n sobre tu sitio">
<meta name="keywords" content="aqui, coloca, palabras, clave, para, los, buscadores, separadas, por, comas" />
<!-- la etiqueta de abajo sirve para indicar a los robots que indexen o no la pagina y sus vinculos pvara no indexarlas pon antes de index y follow la palabra "No" -->
<meta name="robots" content="index, follow" />
<!-- la etiqueta de abajo indica cada cuanto tiempo deven los robots visitar esa pagian el valor se indica en d?as -->
<meta name="revisit-after" content="1 days" />
<!-- en la etiqueta de abjao se especifica el idioma de la pagian con dos letras  -->
<meta http-equiv="content-lenguage" content="es" />
<meta name="author"  content="aqui va el nombre del autor del sitio" />

Bueno son las etiquetas mas importantes si quer?is saber algunas mas pod?is mirar aqu?

Espero que os sirva de algo.

Saludos.