miércoles, 28 de diciembre de 2011
Python, ejemplos prácticos no. 2
1. Programa que acepte un año escrito en cifras arábigas y visualice el año en números romanos, dentro del rango 1000-1999
'''
autor: yo
fecha: 24 de diciembre de 2011
'''
anyo,anyo_desglosado,aux=0,0,0
romano=""
while anyo<=0 and anyo<=1999:
anyo=int(raw_input('Introduce año:'))
print "Año en arábigo [",anyo,"]"
print "\nAño desglosado: "
if (anyo>=1000):
anyo_desglosado=anyo%1000
romano=romano+"M"
aux=1000
print "arábigo:",aux
if (anyo_desglosado>=900):
anyo_desglosado=anyo_desglosado%900
romano=romano+"CM"
aux=900
print "arábigo:",aux
if (anyo_desglosado>=800):
anyo_desglosado=anyo_desglosado%800
romano=romano+"DCCC"
aux=800
print "arábigo:",aux
if (anyo_desglosado>=700):
anyo_desglosado=anyo_desglosado%700
romano=romano+"DCC"
aux=700
print "arábigo:",aux
if (anyo_desglosado>=600):
anyo_desglosado=anyo_desglosado%600
romano=romano+"DC"
aux=600
print "arábigo:",aux
if (anyo_desglosado>=500):
anyo_desglosado=anyo_desglosado%500
romano=romano+"D"
aux=500
print "arábigo:",aux
if (anyo_desglosado>=400):
anyo_desglosado=anyo_desglosado%400
romano=romano+"CD"
aux=400
print "arábigo:",aux
if (anyo_desglosado>=300):
anyo_desglosado=anyo_desglosado%300
romano=romano+"CCC"
aux=300
print "arábigo:",aux
if (anyo_desglosado>=200):
anyo_desglosado=anyo_desglosado%200
romano=romano+"CC"
aux=200
print "arábigo:",aux
if (anyo_desglosado>=100):
anyo_desglosado=anyo_desglosado%100
romano=romano+"C"
aux=100
print "arábigo:",aux
if (anyo_desglosado>=90):
anyo_desglosado=anyo_desglosado%90
romano=romano+"XC"
aux=90
print "arábigo:",aux
if (anyo_desglosado>=80):
anyo_desglosado=anyo_desglosado%80
romano=romano+"LXXX"
aux=80
print "arábigo:",aux
if (anyo_desglosado>=70):
anyo_desglosado=anyo_desglosado%70
romano=romano+"LXX"
aux=70
print "arábigo:",aux
if (anyo_desglosado>=60):
anyo_desglosado=anyo_desglosado%60
romano=romano+"LX"
aux=60
print "arábigo:",aux
if (anyo_desglosado>=50):
anyo_desglosado=anyo_desglosado%50
romano=romano+"L"
aux=50
print "arábigo:",aux
if (anyo_desglosado>=40):
anyo_desglosado=anyo_desglosado%40
romano=romano+"XL"
aux=40
print "arábigo:",aux
if (anyo_desglosado>=30):
anyo_desglosado=anyo_desglosado%30
romano=romano+"XXX"
aux=30
print "arábigo:",aux
if (anyo_desglosado>=20):
anyo_desglosado=anyo_desglosado%20
romano=romano+"XX"
aux=20
print "arábigo:",aux
if (anyo_desglosado>=10):
anyo_desglosado=anyo_desglosado%10
romano=romano+"X"
aux=10
print "arábigo:",aux
if (anyo_desglosado==9):
anyo_desglosado=anyo_desglosado%9
romano=romano+"IX"
aux=9
print "arábigo:",aux
if (anyo_desglosado==8):
anyo_desglosado=anyo_desglosado%8
romano=romano+"VIII"
aux=8
print "arábigo:",aux
if (anyo_desglosado==7):
anyo_desglosado=anyo_desglosado%7
romano=romano+"VII"
aux=7
print "arábigo:",aux
if (anyo_desglosado==6):
anyo_desglosado=anyo_desglosado%6
romano=romano+"VI"
aux=6
print "arábigo:",aux
if (anyo_desglosado==5):
anyo_desglosado=anyo_desglosado%5
romano=romano+"V"
aux=5
print "arábigo:",aux
if (anyo_desglosado==4):
anyo_desglosado=anyo_desglosado%4
romano=romano+"IV"
aux=4
print "arábigo:",aux
if (anyo_desglosado==3):
anyo_desglosado=anyo_desglosado%3
romano=romano+"III"
aux=3
print "arábigo:",aux
if (anyo_desglosado==2):
anyo_desglosado=anyo_desglosado%2
romano=romano+"II"
aux=2
print "arábigo:",aux
if (anyo_desglosado==1):
anyo_desglosado=anyo_desglosado%1
romano=romano+"I"
aux=1
print "arábigo:",aux
print "\nAño en romano: ",romano
2. Obtener salario nuevo
#código Python
'''
autor: yo
fecha : viernes 9 de diciembre del 2011
'''
#función que calcula el nuevo salario --> ganancia
def obtenerGanancia(m,p):
return m+(m*(p/100))
#función que calcula el nuevo salario --> perdida
def obtenerPerdida(m,p):
return m-(p*(p/100))
#variables
salir="s"
monto,porcentaje=0,0
opc=0
while salir == "s":
print "***************************************"
print "[Programa que calcula el salario nuevo]"
print "***************************************"
print ""
#menú
print "1. Obtener ganancia"
print "2. Obtener pérdida"
opc=int(raw_input('Introduce opción: '))
#obtener ganancia
if opc==1:
print "[Obtener ganancia]"
monto=float(raw_input('Monto: '))
print "$",monto,"\n"
porcentaje=float(raw_input('Porcentaje:'))
print porcentaje,"% \n"
print "Ganancia: $",obtenerGanancia(monto,porcentaje)
print ""
#obtener pérdida
if opc==2:
print "[Obtener pérdida]"
monto=float(raw_input('Monto: '))
print "$",monto,"\n"
porcentaje=float(raw_input('Porcentaje:'))
print porcentaje,"% \n"
print "Ganancia: $",obtenerPerdida(monto,porcentaje)
print ""
else:
print "opción inválida"
salir=raw_input('Desea hacer otra operación? (s/n):')
print ""
if salir=="n":
print "adios"
lunes, 26 de diciembre de 2011
Tarot básico en Python
Aqui el código escrito en Python para calcular tu carta del tarot.
def obtenerArcano(arc):
if arc==1:
return "El Mago"
if arc==2:
return "La Papisa"
if arc==3:
return "La Emperatriz"
if arc==4:
return "El Emperador"
if arc==5:
return "El Papa"
if arc==6:
return "El Enamorado"
if arc==7:
return "El Carro"
if arc==8:
return "La Justicia"
if arc==9:
return "El Ermitaño"
if arc==10:
return "La Rueda"
if arc==11:
return "La Fuerza"
if arc==12:
return "El Colgado"
if arc==13:
return "La Muerte"
if arc==14:
return "La Templanza"
if arc==15:
return "El Diablo"
if arc==16:
return "La Torre"
if arc==17:
return "La Estrella"
if arc==18:
return "La Luna"
if arc==19:
return "El Sol"
if arc==20:
return "El Juicio"
if arc==21:
return "El Mundo"
if arc==22:
return "El Loco"
dia_nac=0
mes_nac=""
anyo_nuevo=0
aux=0
suma,i=0,0
cadena=""
sumaTotal=0
dia_nac=int(raw_input('Dia de nacimiento:'))
mes_nac=raw_input('Mes de nacimiento:')
anyo_nuevo=int(raw_input('Año nuevo:'))
print "Datos leidos:\n"
print "\tDía de nacimiento || Mes de nacimiento || Año nuevo que empieza"
print "\t",dia_nac," || ",mes_nac," || ",anyo_nuevo
print ""
if mes_nac=="diciembre":
aux=12
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="noviembre":
aux=11
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="octubre":
aux=10
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="septiembre":
aux=9
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="agosto":
aux=8
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="julio":
aux=7
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="junio":
aux=6
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="mayo":
aux=5
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="abril":
aux=4
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="marzo":
aux=3
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="febrero":
aux=2
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="enero":
aux=1
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
def obtenerArcano(arc):
if arc==1:
return "El Mago"
if arc==2:
return "La Papisa"
if arc==3:
return "La Emperatriz"
if arc==4:
return "El Emperador"
if arc==5:
return "El Papa"
if arc==6:
return "El Enamorado"
if arc==7:
return "El Carro"
if arc==8:
return "La Justicia"
if arc==9:
return "El Ermitaño"
if arc==10:
return "La Rueda"
if arc==11:
return "La Fuerza"
if arc==12:
return "El Colgado"
if arc==13:
return "La Muerte"
if arc==14:
return "La Templanza"
if arc==15:
return "El Diablo"
if arc==16:
return "La Torre"
if arc==17:
return "La Estrella"
if arc==18:
return "La Luna"
if arc==19:
return "El Sol"
if arc==20:
return "El Juicio"
if arc==21:
return "El Mundo"
if arc==22:
return "El Loco"
dia_nac=0
mes_nac=""
anyo_nuevo=0
aux=0
suma,i=0,0
cadena=""
sumaTotal=0
dia_nac=int(raw_input('Dia de nacimiento:'))
mes_nac=raw_input('Mes de nacimiento:')
anyo_nuevo=int(raw_input('Año nuevo:'))
print "Datos leidos:\n"
print "\tDía de nacimiento || Mes de nacimiento || Año nuevo que empieza"
print "\t",dia_nac," || ",mes_nac," || ",anyo_nuevo
print ""
if mes_nac=="diciembre":
aux=12
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="noviembre":
aux=11
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="octubre":
aux=10
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="septiembre":
aux=9
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="agosto":
aux=8
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="julio":
aux=7
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="junio":
aux=6
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="mayo":
aux=5
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="abril":
aux=4
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="marzo":
aux=3
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="febrero":
aux=2
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="enero":
aux=1
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
domingo, 18 de diciembre de 2011
JavaServer Faces: ejemplos básicos
JavaServer Faces
Es una framework (ya tiene varios años que apareció) que nos permite crear aplicaciones web muy parecidas a las de escritorio. JSF trabaja en base a eventos (algo parecido a Swing), mientras que JSP en base a petición(es)/respuesta(s).Existen otras variantes como:
- RichFaces
- PrimeFaces
- OpenFaces
- IceFaces
- MyFaces
Enlaces
OpenFaceshttp://openfaces.org/documentation/developersGuide/index.html
http://openfaces.org/demo/overview/homepage.jsf
RichFaces
http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html_single/
http://livedemo.exadel.com/richfaces-demo/index.jsp
PrimeFaces
http://www.primefaces.org/documentation.html
http://www.primefaces.org/showcase/ui/home.jsf
IceFaces
http://www.icefaces.org/main/resources/
http://www.icefaces.org/main/demos/
MyFaces
http://myfaces.apache.org/docindex.html
Cada una de ellas con diversos componentes muy útiles. Hace algunos meses decidi dejar de usar JSP y probar JSF. No me arrepiento. Creo que ahora escribo código más limpio y legible.
EL: Expression Language
Es un lenguaje especial que nos permite acceder directamente a las propiedades o métodos de los beans desde el código de las páginas (jsp y/o xhtml).Ejemplo
<h3>
#{"Este es un ejemplo"}</h3>
#{"Este es un ejemplo"}</h3>
Este es un ejemplo
Otro ejemplo23+64= #{23+65}
En fin, se pueden realizar todas las operaciones aritméticas y lógicas al igual que en JSP.
ManagedBean
Algo parecido a los Servlets, es una clase java que recibe peticiones y procesa resultados de las páginas web.Faces config
Es un documento xml en el cual defines los beans de tu aplicación. También defines las "reglas de navegación"entre tus páginas . Es importante tenerlo para saber que página debe mostrarse de acuerdo al suceso/evento que la invoca.Bueno, ahora un ejemplo sencillo.
1. Crear una aplicación que genere un número aleatorio, y que el usuario trate de adivinarlo.
Primero creo el Bean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.primefaces.ejemplos; import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.Random;
/**
*
* */
@ManagedBean
@RequestScoped
public class RandomBean {
private int numero;
/** Creates a new instance of RandomBean */
public RandomBean() {
}
/**
* @return the numero
*/
public int getNumero() {
return numero;
}
/**
* @param numero the numero to set
*/
public void setNumero(int numero) {
this.numero = numero;
}
public String ir_calculo(){
return "calculo02";
}
public int obtenerNumero(){
return (int)(Math.random()*100);
}
}
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.primefaces.ejemplos; import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.Random;
/**
*
* */
@ManagedBean
@RequestScoped
public class RandomBean {
private int numero;
/** Creates a new instance of RandomBean */
public RandomBean() {
}
/**
* @return the numero
*/
public int getNumero() {
return numero;
}
/**
* @param numero the numero to set
*/
public void setNumero(int numero) {
this.numero = numero;
}
public String ir_calculo(){
return "calculo02";
}
public int obtenerNumero(){
return (int)(Math.random()*100);
}
}
<h2>Generar número aleatorio</h2>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo4}"></h:outputLabel>
<h:inputText value="#{randomBean.numero}"></h:inputText>
<h:commandButton action="#{randomBean.ir_calculo()}" value="adivinar" />
</h:panelGrid>
</h:form>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo4}"></h:outputLabel>
<h:inputText value="#{randomBean.numero}"></h:inputText>
<h:commandButton action="#{randomBean.ir_calculo()}" value="adivinar" />
</h:panelGrid>
</h:form>
<h2>Datos obtenidos</h2>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo5}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero}"></h:outputLabel>
<h:outputLabel value="#{msgs.titulo6}"></h:outputLabel>
<h:outputText value="#{randomBean.obtenerNumero()}"></h:outputText>
<!-- aqui hago la comparación-->
<h:outputLabel value="#{msgs.titulo7}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero==randomBean.obtenerNumero() ?'Correcto':'Incorrecto'}">
</h:outputLabel>
</h:panelGrid>
</h:form>
<h:outputLink value="http://localhost:8080/pruebaPrimeFaces/faces/index.xhtml"><h:outputText value="Regreso"/></h:outputLink>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo5}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero}"></h:outputLabel>
<h:outputLabel value="#{msgs.titulo6}"></h:outputLabel>
<h:outputText value="#{randomBean.obtenerNumero()}"></h:outputText>
<!-- aqui hago la comparación-->
<h:outputLabel value="#{msgs.titulo7}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero==randomBean.obtenerNumero() ?'Correcto':'Incorrecto'}">
</h:outputLabel>
</h:panelGrid>
</h:form>
<h:outputLink value="http://localhost:8080/pruebaPrimeFaces/faces/index.xhtml"><h:outputText value="Regreso"/></h:outputLink>
<?xml version='1.0' encoding='UTF-8'?> <!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <a href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
" title="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigatio...</a> <from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>calculo02</from-outcome>
<to-view-id>/datos.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>RandomBean</managed-bean-name>
<managed-bean-class>org.primefaces.ejemplos.RandomBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <a href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
" title="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigatio...</a> <from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>calculo02</from-outcome>
<to-view-id>/datos.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>RandomBean</managed-bean-name>
<managed-bean-class>org.primefaces.ejemplos.RandomBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
martes, 13 de diciembre de 2011
Ejemplo de uso de MySQL: una pequeña bitácora
Tener una bitácora nos ayuda a tener un mejor control de nuestra información:
- ver quien hace cambios por “error”
- ver la fecha
- tipo de operación (inserción, actualización y/o borrado)
Bueno he aquí los pasos para crear una pequeña bitácora
1. Crear la base de datos
create database prueba1;
show databases;
use prueba1;
2. Crear una tabla llamadas personas
create table personas (id_persona int auto_increment primary key, nombre varchar (50), apellido_p varchar (50), apellido_m varchar(50), edad int, peso double, talla double);
3. Crear un procedimiento almacenado para insertar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Insertar` $$
CREATE PROCEDURE `prueba1`.`Insertar`(in nombre varchar (50), apellido_p varchar (50), apellido_m varchar(50), edad int, peso double, talla double)
BEGIN
INSERT INTO personas (nombre,apellido_p, apellido_m , edad , peso , talla) VALUES (nombre,apellido_p, apellido_m , edad , peso , talla );
END $$
DELIMITER ;
4. Crear un procedimiento almacenado para actualizar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Actualizar` $$
CREATE PROCEDURE `prueba1`.`Actualizar` (in id_personax int,edadx int,pesox double)
BEGIN
update personas set edad=edadx,peso=pesox where id_persona=id_personax;
END $$
DELIMITER ;
5. Crear un procedimiento almacenado para eliminar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Borrar` $$
CREATE PROCEDURE `prueba1`.`Borrar` (in id int)
BEGIN
delete from personas where id_persona=id;
END $$
DELIMITER ;
6. Invocar los procedimientos almacenados
Call Insertar (‘Horacio’,’Gomez’,’Carmona’,25,65,1.68);
Call Insertar (‘Hugo’,’Torres’,’Mendez’,32,67,1.70);
Call Actualizar (1, 26, 66);
Call Borrar (2)
Ver registros
Select * from personas;
7. Crear un procedimiento almacenado que muestre todos los registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verPersonas` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verPersonas`()
select *from personas $$
DELIMITER ;
Para invocarlo
Call sp_verPersonas();
8. Crear tabla que lleve un control de quien hace cambios en la base de datos prueba1
CREATE TABLE infobase (usuario varchar (50), descripcion varchar (50),
fecha TIMESTAMP default now());
9. Crear trigger para la inserción
delimiter $$
create trigger tr_insercion
befote insert on personas
for each row
begin
insert into infobase values(user(),’persona creada’,now());
end $$
10. Crear trigger para la actualización
delimiter $$
create trigger tr_actualizacion
befote update on personas
for each row
begin
insert into infobase(usuario,descripcion,fecha) values(user(),’persona modificada’,now());
end $$
11. Crear trigger para la eliminación
delimiter $$
create trigger tr_borrado
befote delete on personas
for each row
begin
insert into infobase values(user(),’persona eliminada’,now());
end $$
Ver cambios
Select *from infobase;
12. Crear procedimiento almacenado para ver un registro en particular
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verPersona` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verPersona`(in id_buscar int)
select *from personas where id_persona=id_buscar $$
DELIMITER ;
13. Ahora hacer una operación: calcular el I.M.C. (Índice de Masa Corporal) de las personas registradas
Fórmula: peso/(talla*talla)
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verImc` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verImc`()
select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas $$
DELIMITER ;
14. Programa en Java para ver los registros
package control.pruebas;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class Codemonkey {
public static void main(String[] args) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conecta=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/prueba1","root","root");
System.out.println("Conexión exitosa\n");
Statement sentencia= conecta.createStatement();
ResultSet registro=sentencia.executeQuery("select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas");
while(registro.next()){
System.out.println("\t\nId: "+registro.getInt("id_persona"));
System.out.println("Nombre: "+registro.getString("nombre"));
System.out.println("Edad:"+registro.getInt("edad"));
System.out.println("Peso:"+registro.getDouble("peso"));
System.out.println("Talla: "+registro.getDouble("talla"));
System.out.println("IMC: "+registro.getDouble("peso/(talla*talla)"));
}
conecta.close();
System.out.println("\nConexión cerrada");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
package control.pruebas;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class Codemonkey {
public static void main(String[] args) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conecta=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/prueba1","root","root");
System.out.println("Conexión exitosa\n");
Statement sentencia= conecta.createStatement();
ResultSet registro=sentencia.executeQuery("select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas");
while(registro.next()){
System.out.println("\t\nId: "+registro.getInt("id_persona"));
System.out.println("Nombre: "+registro.getString("nombre"));
System.out.println("Edad:"+registro.getInt("edad"));
System.out.println("Peso:"+registro.getDouble("peso"));
System.out.println("Talla: "+registro.getDouble("talla"));
System.out.println("IMC: "+registro.getDouble("peso/(talla*talla)"));
}
conecta.close();
System.out.println("\nConexión cerrada");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
Suscribirse a:
Entradas (Atom)
Composer, un administrador de dependencias para PHP
Composer es un administrador de dependencias para PHP que rastrea las dependencias locales de sus proyectos y bibliotecas. Para ...

-
Progress ABL es un lenguaje de programación vinculado al entorno Progress OpenEdge , su base de datos y las utilidades que lo rodean. Es s...
-
En esta ocasión veremos como crear un archivo CSV a partir del resultado de una consulta en GCP BigQuery. ¿Qué haremos? Crearemos una...
-
En una pasada entrega vimos cómo calcular el biotipo de una persona en Java . Ahora lo haremos usando el lenguaje de programación C. ...
Etiquetas
- .NET
- 100
- abl
- abstract
- abstractas
- ada
- agile
- algoritmos
- alternativa
- android
- angular
- angularjs
- apache
- apex
- api
- appserv
- aprender
- aprender java
- aprender jsf
- aprender python
- aprendizaje
- area
- args
- aserciones
- asm
- asp
- assembly
- assert
- awk
- aws
- ayuda
- azure
- ballerina
- base de datos
- bases de datos
- bash
- bat
- bd
- beam
- bigquery
- biotipo
- bleam
- blockchain
- blog
- bq
- bucket
- bundle
- c
- c#
- c++
- calculo
- case
- celsius
- ceylon
- cgi
- charp
- chatgpt
- cherrypy
- chino
- clases
- cli
- cliente
- clojure
- closures
- cloud
- cmd
- cmd.bat
- coalesce
- cobol
- codeblocks
- codeigniter
- codes
- código
- códigos
- comando
- comandos
- commit
- comparativa
- compartir
- compilador
- compile
- composer
- comprobación
- computación
- computing
- conceptos
- concurnas
- concurrente
- condicionales
- conectividad
- configuration
- consejos
- const
- constantes
- consultas
- contenedores
- contenedores web
- control de versiones
- conversion
- conversor
- convertidor
- cpan
- cplus
- cpp
- crear
- cripto
- criptomoneda
- CrowdStrike
- crystal
- csharp
- cshtml
- css
- css3
- csv
- curso
- d
- dancer2
- datastage
- datos
- deepseek
- delphi
- deploy
- desarrollo
- determinar
- dev c++
- developer
- devops
- días
- directivas
- disparejo
- distribuido
- django
- dlang
- doc
- docker
- document
- documentación
- dotnet
- driver
- dsl
- dylan
- easyphp
- eclipse
- eclipse y scala
- economica
- editor
- ejb
- ejecutar
- ejemplos
- ejemplos cpp
- ejemplos de csharp
- ejemplos de scala
- ejemplos java
- ejemplos python
- ejmeplo
- elixir
- elixir.
- en línea
- encapsulación
- ensamblador
- enum
- erlang
- error
- errores
- es6
- escribir
- esproc
- esprocsqpl
- estructuras
- ethereum
- euler
- excepciones
- expando
- export
- externa
- f#
- faces
- fahrenheit
- feliz año
- fetch
- filosofía
- firebase
- flask
- foreach
- framework
- fsharp
- funcional
- funciones
- functions
- futuro
- gcc
- gcp
- geany
- gem
- gemfile
- generador de proyectos
- genie
- gestor de proyectos
- github
- glassfish
- gleam
- gnu
- go
- golang
- google web toolkit
- gosu
- gradle
- grapes
- graven
- grok
- grooscript
- groovy
- groovyeConsole
- grpc
- gson
- gui
- gwt
- gwtext
- hashmap
- haskell
- haxe
- herencia
- hibernate
- hola
- hola en ceylon
- horoscopo
- HTA
- html
- html5
- http-server
- ia
- iaas
- iac
- ibm
- IDE
- ide scala
- if
- ifnull
- imc
- import
- importar
- ingeniería
- iniciar glassfish
- iniciar tomcat
- inicio
- inicio en ceylon
- IntelliJ IDEA pycharm
- interface
- interfaces
- interfaz
- interna
- interoperabilidad
- interprete
- interview
- inversión de control
- inyección de dependencias
- ionic
- ios
- jabaco
- java
- java swing
- java y ceylon
- JAVA_HOME
- javadoc
- javascript
- javaserver
- jaxb
- jdbc
- jdbi
- jdk
- jdk8
- jpa
- jpql
- jquery
- jre
- jruby
- jscript
- jsf
- jsni
- json
- juego
- julia
- jvm
- jvm y ceylon
- jython
- kanban
- katas
- kate
- koltin
- kotlin
- kubernetes
- la path
- langchain
- laravel
- learn
- lectura
- lenguaje
- lenguaje scala
- lenguajes
- let
- leyes
- libro
- linux
- list
- lista
- listas
- livescript
- llm
- lua
- macro
- major
- mapas
- maven
- maven y eclipse
- mensajes
- menú
- mercurial
- messagebox
- metaClass
- microsoft
- mix
- mobile
- modularidad
- módulo
- mojo
- mojolicious
- mono
- monodevelop
- ms-dos
- mu
- mvc
- mybatis
- mysql
- netbeans
- nexus
- ng
- nicon notify
- nimrod
- node
- nodejs
- notificaciones
- npm
- nube
- nuevo
- nuget
- nullif
- numericas
- ocaml
- ollama
- online
- opendylan
- openedge
- operaciones
- oracel
- oracle
- orientación a objetos
- otp
- paas
- paas iaas
- package
- packages
- padrino
- pascal
- path groovy
- path java
- patrones de diseño
- pdf-parser
- perl
- phoenix
- php
- pl/1
- plot
- plsql
- pom.xml.build.gradle
- poo
- powershell
- pregunta
- problema
- problemas al ejecutar programa en ceylon
- procedimientos
- procedures
- programa
- programacion
- programación
- programador
- programadores
- programar
- programas
- programas java
- programming
- progress
- proyectos maven
- prueba
- pseint
- pulsaciones
- pyramid
- python
- pyzenity
- questions
- r
- rebar3
- record
- recursos
- regex
- regiones
- remix
- repl
- replace
- repositorios
- REST
- reverse
- romanos
- ruby
- run
- rust
- ruta
- saas
- sanic
- sap
- sas
- sbt
- scala
- scripting
- scripts
- scrum
- sdkman
- semántica
- sentencias
- servidor
- shell
- show
- simplej
- sinatra
- sintaxis
- sitios
- slim
- sms
- smslib
- solidity
- solución
- spark
- spl
- spring
- spring framework
- spring-boot
- spyder
- sql
- standard
- storage
- stored
- strawberry
- struts
- style
- svn
- swift
- symfony
- system
- tarot
- tdd
- técnicas
- terminal
- terraform
- the maven integration requires that eclipse be running in a jdk
- tiempo
- tips
- tomcat
- top-down
- tornadoweb
- tratamiento xml
- triggers
- turbogears
- tutoriales
- type
- typescript
- udf
- unsupported
- usar jdk
- uso
- uwamp
- variables
- vba
- vbscript
- ventanas
- verificar
- version
- version_52.0
- versiones
- videojuegos
- vistazo
- visual code
- visual csharp
- visual studio
- vscode
- wampserver
- web
- web2pybottle
- window
- windows
- wisp
- xampp
- xml
- youtube
- zenity
Archivo del blog
-
►
2024
(58)
- ► septiembre (1)
-
►
2023
(12)
- ► septiembre (1)
-
►
2022
(10)
- ► septiembre (1)
-
►
2021
(26)
- ► septiembre (1)
-
►
2020
(9)
- ► septiembre (2)
-
►
2019
(26)
- ► septiembre (3)
-
►
2015
(24)
- ► septiembre (4)
-
►
2014
(36)
- ► septiembre (1)
-
►
2013
(40)
- ► septiembre (5)
-
►
2012
(46)
- ► septiembre (3)