V Congreso Iberoamericano - Soporte al Conocimiento con la Tecnologia
SOCOTE 2013
http://www.usmpvirtual.edu.pe/socote2013/#wrapper-content
V Congreso Internacional de Computación y Telecomunicaciones
COMTEL 2013
http://www.comtel.pe/
II Congreso Internacional de Sistemas y Computación
Lima UPC
http://www2.upc.edu.pe/html/0/documentos/2-congreso-esc-2013.pdf
I Congreso Internacional de Ingeniería de Software (CIIS) 2013
Arequipa
http://ulasalle.edu.pe/index.php/eventos/prox-eventos/ciis2013
Tecnologías Web, Cloud, Mobile y NoSQL : Java EE, JSF 2, JPA 2, Eclipse, NetBeans, GlassFish, WebLogic, WebSphere Application Server, Apache Tomcat, Google App Engine, Android, MongoDB y muchas cosas más ...
Páginas
Bienvenida
Como todo en la vida, la innovación es la clave del éxito por lo que nos hemos visto en la necesidad de "evolucionar" este blog para abarcar muchos otros temas que estaban quedando de lado en nuestros cursos "oficiales".
Si deseas aprender o profundizar algunos temas en particular, no dudes en contactarnos.
lunes, 16 de septiembre de 2013
2013-II : Práctica Calificada 1 (Programación Java)
¿ Qué tan complicado te parece esto ?
PREGUNTA #1
Escribir un programa Java
que ejecute lo siguiente:
a) Lea
una cadena desde el teclado. Debe validar que todos los caracteres sean ‘0’ ó
‘1’ (es una cadena binaria). Si existieran blancos, deben ser removidos por el
programa.
b) Luego
debe convertir el valor en sistema binario al sistema decimal y mostrarlo en
pantalla.
c) El
programa se debe ejecutar hasta que se ingrese un ‘0’.
PREGUNTA #2
Se
le pide desarrollar un programa que genere la secuencia de Fibonacci.
La
secuencia comienza en 0 y 1 . Los números siguientes son el resultado de la
suma de los dos números previos.
La
secuencia debe continuar hasta llenar una matriz de 5 x 5
Se
le solicita que imprima la matriz original y la matriz transpuesta.
miércoles, 22 de mayo de 2013
1416 - Curso de Programación - Examen Parcial 2013-I
CASO: La Universidad es
una cosa de Locos
Como parte de un estudio sobre el desempeño de los
alumnos en determinado curso de la Facultad de Ingeniería de Sistemas, se
requiere hacer cierta simulación en el cálculo de promedios. Para ello se le
entrega un archivo de texto conteniendo
los datos de los alumnos de un curso así como las notas obtenidas (Descargalo aquí). Usted
debe desarrollar una aplicación que permita ingresar las ponderaciones de cada
nota para poder calcular el promedio final del curso.
PREGUNTA # 1 :
Desarrolle un menú de opciones que permita:
a) Opción 1: Ingresar las ponderaciones
(pesos).
b) Opción 2: Leer archivo de datos.
c) Opción 3: Calcular promedios.
d) Opción 4: Listar información estadística.
e) Opción 5: Salir
Recuerde que la suma de ponderaciones de Examen
Parcial (EP), examen final (EF) y tarea académica (TA) debe sumar 100. Tome en cuenta que la
tarea académica se divide en práctica 1 (PC1),
práctica 2 (PC2), Proyecto de curso (PROY) y otros (OTR),
cuya suma también debe dar como resultado 100.
Debe validar que se ingresen todos los datos, que
sean correctos, etc. Puede controlar el error
utilizando la excepción NumberFormatException por ejemplo.
PREGUNTA #2:
En esta pregunta debe desarrollar una Interface Java
y una clase DAO que implemente la
interface que:
a) Permita leer los datos desde un archivo. La
ruta y nombre del archivo debe ser ingresada por teclado.
b) Permita calcular los promedios finales en
base a las ponderaciones ingresadas. Para calcular el promedio debe eliminarse
(o no tomarse en cuenta) la menor nota
del rubro “otros”.
c) Permita calcular los promedios por cuartil
y sexo.
d) Permita buscar el mejor o peor promedio
Determine usted la mejor estructura para almacenar los datos obtenidos.
La estructura de cada línea del archivo es la
siguiente:
ID, nombre, ep, ef, pc1,
pc2, sexo, proyecto, otro1, otro2
La interface tiene los métodos siguientes:
public List<AlumnoBean> leerArchivo(String rutaArchivo);
public List<AlumnoBean> calculaPromedio(int pesoEP, int pesoEF, int pesoTA,
int pesoPC1, int pesoPC2, int pesoPRO,
int pesoOTR, List<AlumnoBean> ele );
public void calculaPromedioCuartil_x_Sexo(float rango1, float rango2,
String sexo, List<AlumnoBean> ele) ;
public void buscaPromedio(boolean mayor, List<AlumnoBean> ele) ;
En el caso del
método “buscarPromedio”, el parámetro “mayor” es TRUE cuando se desea buscar el
mejor promedio y FALSE cuando se desea el peor promedio.
PREGUNTA #3:
Ejecute su aplicación con las siguientes
ponderaciones:
EP = 30; EF = 40; TA = 30
PC1 = 20 ; PC2 = 20 ; PROY=50; OTR = 10;
En base a los resultados indique el promedio de nota para Hombres y
Mujeres en cada Cuartil:
CUARTIL
|
PROMEDIO
“H”
|
PROMEDIO
“M”
|
CUARTIL 1 : de 00.0 a 25.00
|
|
|
CUARTIL 2 : de 25.01 a 50.00
|
|
|
CUARTIL 3 : de 50.01 a 75.00
|
|
|
CUARTIL 4 : de 75.01 a 100.00
|
|
|
Indique el ID, nombre
y promedio del mejor alumno de la clase
ID
|
Nombre
|
PROMEDIO
|
|
|
|
Indique el ID,
nombre y promedio del último (peor) alumno de la clase
ID
|
Nombre
|
PROMEDIO
|
|
|
|
jueves, 16 de mayo de 2013
16 maneras de torturar a un desarrollador
Pero qué buena !! ...
http://www.genbetadev.com/trabajar-como-desarrollador/manual-para-sadicos-16-maneras-de-torturar-a-un-desarrollador
http://www.genbetadev.com/trabajar-como-desarrollador/manual-para-sadicos-16-maneras-de-torturar-a-un-desarrollador
jueves, 28 de marzo de 2013
Android : Scanner de medios
Al desarrollar aplicaciones que requieren mostrar la galería de imagenes es preciso "copiar" (o hacer push ) de archivos hacia el emulador para poder efectuar las pruebas.
Sin embargo, me ha ocurrido que sale un mensaje de error en el Android Debug Monitor :
En primera cuenta, olvidé crear el emulador con una SDCard. Para ello, en el Editor del AVD, debe indicarse explícitamente el uso de una SDCard como en la figura:
Luego nos damos con la sorpresa que el scanner de medios está desactivado por defecto ( dado que consume recursos ). Entonces, se debe activar manualmente ( por lo menos en la version Jelly Bean ).
Para activarlo se ingresa a la aplicación que dice "Dev Tools".
Luego se presiona el botón de Scan SD Card:
Cuando termina el proceso aparece en la pantalla la ruta :
Esa es la ruta donde se debe copiar los archivos para hacer las pruebas:
En este caso, copiamos 4 archivos de ejemplo ( pueden ser otros archivos ):
Y finalmente, podemos acceder a la galería:
¡ Hasta la próxima !
sábado, 9 de marzo de 2013
Solución al "casito" de Programación
Bien, he aquí "una" de las soluciones: obviamente no hay 2 personas que piensen igual por lo tanto los algoritmos pueden variar, pero el resultado debería ser el mismo.
La pregunta #1 es sencilla:
Codificaremos la interface:
package com.ejemplo.jdbc;
import java.util.List;
public interface AlumnoIF {
public List<AlumnoDTO> calculaPromedio();
public void calculaPromedioCuartil_x_Sexo(float rango1, float rango2, String sexo);
public void calculaPromedioCuartil(float rango1, float rango2);
}
Luego necesitamos un DTO llamado "AlumnoDTO" :
package com.ejemplo.jdbc;
import java.io.Serializable;
public class AlumnoDTO implements Serializable {
private int id;
private String nombre;
private float ep;
private float ta;
private float pc;
private float promedio;
No olvidarse de generar lo getter/setter.
La pregunta #2 implica generar un DAO con la lógica de cada método definido en la interface:
package com.ejemplo.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class AlumnoDAO implements AlumnoIF {
private final String url = "jdbc:mysql://localhost:3306/1416examenfinal?user=root&password=mysql";
public Connection getConnection() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(url);
} catch ( Exception e) {
System.out.println("* * * Ocurrio un ERROR " + e.getLocalizedMessage() );
e.printStackTrace();
}
return con;
}
Para calcular el promedio :
public List<AlumnoDTO> calculaPromedio() {
Connection con = getConnection();
String sql = "SELECT * FROM TBALUMNOS ORDER BY ID";
List<AlumnoDTO> lista = new ArrayList<AlumnoDTO>();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// Borrar tabla
String sql0 = "DELETE FROM TBRPTA";
pstmt = con.prepareStatement(sql0);
pstmt.executeUpdate();
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while ( rs.next() ) {
String sql2 = "INSERT INTO TBRPTA VALUES(?,?,?,?,?,?,?)";
pstmt = con.prepareStatement(sql2);
pstmt.setInt(1, rs.getInt(1) );
pstmt.setString(2, rs.getString(2) );
pstmt.setFloat(3, rs.getFloat(3) );
pstmt.setFloat(4, rs.getFloat(4) );
float pc1 = rs.getFloat(5);
float pc2 = rs.getFloat(6);
float pcMayor = 0;
if ( pc1 > pc2) {
pstmt.setFloat(5, pc1 );
pcMayor = pc1;
} else {
pstmt.setFloat(5, pc2 );
pcMayor = pc2;
}
float promedio = (float) (rs.getFloat(3) *0.3 + rs.getFloat(4) *0.4 + pcMayor *0.3);
pstmt.setFloat(6, promedio );
pstmt.setString(7, rs.getString(7).trim() );
pstmt.executeUpdate();
}
// Leer los resultados
String sql1 = "SELECT * FROM TBRPTA ORDER BY PROMEDIO ASC";
pstmt = con.prepareStatement(sql1);
rs = pstmt.executeQuery();
while ( rs.next() ) {
AlumnoDTO a = new AlumnoDTO();
a.setId( rs.getInt(1) );
a.setNombre( rs.getString(2) );
a.setEp( rs.getFloat(3) );
a.setTa( rs.getFloat(4) ) ;
a.setPc( rs.getFloat(5) ) ;
a.setPromedio(rs.getFloat(6));
lista.add(a);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
pstmt.close();
rs.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return lista;
}
Para calcular el promedio por Cuartil :
public void calculaPromedioCuartil(float rango1, float rango2) {
Connection con = getConnection();
String sql = "SELECT promedio FROM TBRPTA WHERE promedio > ? AND promedio <= ?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = con.prepareStatement(sql);
pstmt.setFloat(1, rango1);
pstmt.setFloat(2, rango2);
rs = pstmt.executeQuery();
int contador = 0;
float suma = 0;
while ( rs.next() ) {
contador = contador + 1;
suma = suma + rs.getFloat(1);
}
System.out.println("CUARTIL : de " + rango1 + " a " + rango2 + " --> " + (suma/contador) ) ;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
pstmt.close();
rs.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Y para calcular el promedio por cuartil y sexo:
public void calculaPromedioCuartil_x_Sexo(float rango1, float rango2, String sexo) {
Connection con = getConnection();
String sql = "SELECT promedio FROM TBRPTA WHERE promedio > ? AND promedio <= ? AND sexo = ? ";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = con.prepareStatement(sql);
pstmt.setFloat(1, rango1);
pstmt.setFloat(2, rango2);
pstmt.setString(3, sexo);
rs = pstmt.executeQuery();
int contador = 0;
float suma = 0;
while ( rs.next() ) {
contador = contador + 1;
suma = suma + rs.getFloat(1);
}
System.out.println("CUARTIL : de " + rango1 + " a " + rango2 + " Sexo : " + sexo + " --> " + (suma/contador) ) ;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
pstmt.close();
rs.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
La pregunta #3 implica crear el programa principal :
package com.ejemplo.pregunta02;
import java.util.List;
import com.ejemplo.jdbc.AlumnoDAO;
import com.ejemplo.jdbc.AlumnoDTO;
import com.ejemplo.jdbc.AlumnoIF;
public class Respuesta02 {
public static void main(String[] args) {
Respuesta02 r02 = new Respuesta02();
r02.calcula();
}
public void calcula() {
AlumnoIF dao = new AlumnoDAO();
List<AlumnoDTO> l = dao.calculaPromedio();
for (int i=0; i < l.size(); i++) {
System.out.println( l.get(i).getId() + "\t " + l.get(i).getNombre() + "\t " + l.get(i).getPc() + "\t" + l.get(i).getPromedio() );
}
// Promedio x Cuartiles
System.out.println("===> Primer Cuadro <====");
dao.calculaPromedioCuartil(0F, 25.00F);
dao.calculaPromedioCuartil(25.01F, 50.00F);
dao.calculaPromedioCuartil(50.01F, 75.00F);
dao.calculaPromedioCuartil(75.01F, 100.00F);
System.out.println("");
// Promedio x Cuartiles x Sexo
System.out.println("===> Segundo Cuadro <====");
dao.calculaPromedioCuartil_x_Sexo(0F, 25.00F,"H");
dao.calculaPromedioCuartil_x_Sexo(0F, 25.00F,"F");
dao.calculaPromedioCuartil_x_Sexo(25.01F, 50.00F,"H");
dao.calculaPromedioCuartil_x_Sexo(25.01F, 50.00F,"F");
dao.calculaPromedioCuartil_x_Sexo(50.01F, 75.00F,"H");
dao.calculaPromedioCuartil_x_Sexo(50.01F, 75.00F,"F");
dao.calculaPromedioCuartil_x_Sexo(75.01F, 100.00F,"H");
dao.calculaPromedioCuartil_x_Sexo(75.01F, 100.00F,"F");
}
}
Al ejecutar este programa salen todos los datos necesarios para llenar los cuadros.
¿ Fácil ?
jueves, 7 de marzo de 2013
Un "casito" de Programación
Este es un caso de programación completo sobre Java básico y JDBC.
El caso consta de 3 preguntas:
PREGUNTA #1:
Generar un proyecto Java usando Eclipse IDE o NetBeans y codificar la siguiente Interface:
public interface AlumnoIF {
public List<AlumnoDTO> calculaPromedio();
public void calculaPromedioCuartil_x_Sexo(float rango1, float rango2, String sexo);
public void calculaPromedioCuartil(float rango1, float rango2);
}
Tener en cuenta que no se pueden crear más métodos en la Interface.
Restaurar la base de datos con el siguiente script de MySQL : base.sql
PREGUNTA #2:
El caso consta de 3 preguntas:
PREGUNTA #1:
Generar un proyecto Java usando Eclipse IDE o NetBeans y codificar la siguiente Interface:
public interface AlumnoIF {
public List<AlumnoDTO> calculaPromedio();
public void calculaPromedioCuartil_x_Sexo(float rango1, float rango2, String sexo);
public void calculaPromedioCuartil(float rango1, float rango2);
}
Tener en cuenta que no se pueden crear más métodos en la Interface.
Restaurar la base de datos con el siguiente script de MySQL : base.sql
PREGUNTA #2:
Generar una Clase Java llamada
“AlumnoDAO” que implemente la interface
definida en la pregunta anterior. Puede adicionar un único método para
obtener la conexión a la base de datos.
Implemente el método “calculaPromedio” de la
interface para que:
a) Lea los datos de cada alumno y elimine la nota de Prácticas
más baja ( entre PC1 y PC2 )
b) Luego debe calcular el promedio de cada
alumno teniendo en cuenta que los pesos son: EP ( 30% ) , EF ( 30% ) y PC (40%)
c) DEBE insertar los resultados en la tabla
auxiliar llamada TBRPTA con la
estructura siguiente:
Implemente el método “calculaPromedioCuartil”
de la interface con cuya información puede llenar el cuadro (a) de la pregunta
3. NO puede usar funciones agregadas
de SQL.
Implemente el método “calculaPromedioCuartil_x_Sexo”
de la interface con cuya información puede llenar el cuadro (b) de la pregunta
3. NO puede usar funciones agregadas
de SQL.
Para asegurarnos que usted ha solucionado esta
pregunta correctamente, desarrolle un
programa MAIN ( Respuesta02.java
) que invoque a los métodos
implementados y además muestre en consola el listado de alumnos con sus
promedios ordenados de menor a mayor.
PREGUNTA #3:
Completar la información de los siguientes cuadros:
a)
Indique
la nota promedio de cada CUARTIL
CUARTIL
|
PROMEDIO
|
CUARTIL 1 : de 00.0 a 25.00
|
|
CUARTIL 2 : de 25.01 a 50.00
|
|
CUARTIL 3 : de 50.01 a 75.00
|
|
CUARTIL 4 : de 75.01 a 100.00
|
|
b)
Indique
el promedio de nota para Hombres y Mujeres en cada Cuartil:
CUARTIL
|
PROMEDIO
“H”
|
PROMEDIO
“M”
|
CUARTIL 1 : de 00.0 a 25.00
|
|
|
CUARTIL 2 : de 25.01 a 50.00
|
|
|
CUARTIL 3 : de 50.01 a 75.00
|
|
|
CUARTIL 4 : de 75.01 a 100.00
|
|
|
c)
Indique
el ID, nombre y promedio del peor alumno de la clase
ID
|
Nombre
|
PROMEDIO
|
|
|
|
¡ Publica tus respuestas !
Suscribirse a:
Entradas (Atom)