viernes, 28 de junio de 2013
Declaración de un tipo parametrizado
Al nombre de la colección le sigue el tipo de los elementos entre paréntesis angulares (< tipo>):
Coleccion<tipo> v;
Si se parametrizan dos tipos, como ocurre con los mapas, se separan con coma:
Coleccion<tipoClave,tipoValor> cc;
Por ejemplo:
Stack<Double> pila;
SortedMap<Integer,String> mapa;
Realmente con el tipo parametrizado es como si se hubiera declarado otra clase, en consecuencia
las instancias de colecciones parametrizadas se crean con esa clase, es decir new
Coleccion<tipo> crea la instancia. Por ejemplo:
pila = newStack<Double>();
mapa = newTreeMap<Integer,String>();
Constantes Php
Usar constantes
Hasta ahora el capítulo se ha concentrado en las variables, que son útiles para almacenar y
cambiar valores durante el tiempo de vida del script PHP. Pero, ¿qué sucede si necesitas almacenar
un valor fijo, que permanezca estático durante el curso del script? Bien, en esos casos se
debe utilizar una constante.
Como su nombre lo sugiere, las constantes son contenedores de PHP para valores que
permanecen constantes y que nunca cambian. Por lo regular se utilizan para valores bien
conocidos de antemano y que son utilizados, sin cambio alguno, en diferentes lugares de la
aplicación. Buenos candidatos para constantes son los niveles de depuración y registro, los
números de versión, las marcas de configuración y las fórmulas.
Las constantes se definen en PHP con la función define(), la cual acepta dos argumentos:
el nombre de la constante y su valor. Los nombres de las constantes deben seguir las
mismas reglas que las variables, con una sola excepción: el prefijo $ no se requiere para los
nombres de constantes.
He aquí un ejemplo para definir y utilizar una constante dentro de un script:
<?php
// define constantes
define('PROGRAMA', 'The Matrix');
define('VERSION', 11.7);
// usar constantes
// datos de salida: 'Bienvenido a The Matrix (versión 11.7)'
echo 'Bienvenido a ' . PROGRAMA . ' (versión ' . VERSION . ')';
?>
Hasta ahora el capítulo se ha concentrado en las variables, que son útiles para almacenar y
cambiar valores durante el tiempo de vida del script PHP. Pero, ¿qué sucede si necesitas almacenar
un valor fijo, que permanezca estático durante el curso del script? Bien, en esos casos se
debe utilizar una constante.
Como su nombre lo sugiere, las constantes son contenedores de PHP para valores que
permanecen constantes y que nunca cambian. Por lo regular se utilizan para valores bien
conocidos de antemano y que son utilizados, sin cambio alguno, en diferentes lugares de la
aplicación. Buenos candidatos para constantes son los niveles de depuración y registro, los
números de versión, las marcas de configuración y las fórmulas.
Las constantes se definen en PHP con la función define(), la cual acepta dos argumentos:
el nombre de la constante y su valor. Los nombres de las constantes deben seguir las
mismas reglas que las variables, con una sola excepción: el prefijo $ no se requiere para los
nombres de constantes.
He aquí un ejemplo para definir y utilizar una constante dentro de un script:
<?php
// define constantes
define('PROGRAMA', 'The Matrix');
define('VERSION', 11.7);
// usar constantes
// datos de salida: 'Bienvenido a The Matrix (versión 11.7)'
echo 'Bienvenido a ' . PROGRAMA . ' (versión ' . VERSION . ')';
?>
Pedir un número entre 0 y 9.999 y decir cuantas cifras tiene
package bol01ej11;
public class Main {
public static void main(String[] args) {
int num;
System.out.print("Introduzca un número entre 0 y 99.999: ");
num=Entrada.entero();
if(num<10)
System.out.println("tiene 1 cifra");
else{
if(num<100)
System.out.println("tiene 2 cifras");
else{
if(num<1000)
System.out.println("tiene 3 cifras");
else{
if(num<10000)
System.out.println("tiene 4 cifras");
else{
if(num<100000)
System.out.println("tiene 5 cifras");
}
}
}
}
}
public class Main {
public static void main(String[] args) {
int num;
System.out.print("Introduzca un número entre 0 y 99.999: ");
num=Entrada.entero();
if(num<10)
System.out.println("tiene 1 cifra");
else{
if(num<100)
System.out.println("tiene 2 cifras");
else{
if(num<1000)
System.out.println("tiene 3 cifras");
else{
if(num<10000)
System.out.println("tiene 4 cifras");
else{
if(num<100000)
System.out.println("tiene 5 cifras");
}
}
}
}
}
Pedir tres números y mostrarlos ordenados de mayor a menor.
package bol01ej10;
public class Main {
public static void main(String[] args) {
int a,b,c;
System.out.print("Introduzca primer número: ");
a=Entrada.entero();
System.out.print("Introduzca segundo número: ");
b=Entrada.entero();
System.out.print("Introduzca tercer número: ");
c=Entrada.entero();
if(a>b && b>c)
System.out.println( a+", "+b+", "+c);
else{
if(a>c && c>b)
System.out.println(a+", "+c+", "+b);
else{
if(b>a && a>c)
System.out.println(b+", "+a+", "+c);
else{
if(b>c && c>a)
System.out.println(b+", "+c+", "+a);
else{
if(c>a && a>b)
System.out.println(c+", "+a+", "+b);
else{
if(c>b && b>a)
System.out.println(c+", "+b+", "+a);
}
}
}
}
}
}
}
public class Main {
public static void main(String[] args) {
int a,b,c;
System.out.print("Introduzca primer número: ");
a=Entrada.entero();
System.out.print("Introduzca segundo número: ");
b=Entrada.entero();
System.out.print("Introduzca tercer número: ");
c=Entrada.entero();
if(a>b && b>c)
System.out.println( a+", "+b+", "+c);
else{
if(a>c && c>b)
System.out.println(a+", "+c+", "+b);
else{
if(b>a && a>c)
System.out.println(b+", "+a+", "+c);
else{
if(b>c && c>a)
System.out.println(b+", "+c+", "+a);
else{
if(c>a && a>b)
System.out.println(c+", "+a+", "+b);
else{
if(c>b && b>a)
System.out.println(c+", "+b+", "+a);
}
}
}
}
}
}
}
Pedir dos números y decir cual es el mayor o si son iguales.
package bol01ej08;
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1==n2)
System.out.println("Son iguales");
else
{
if(n1>n2)
System.out.println(n1 + " es mayor que " + n2);
else
System.out.println(n2 + " es mayor que " + n1);
}
}
}
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1==n2)
System.out.println("Son iguales");
else
{
if(n1>n2)
System.out.println(n1 + " es mayor que " + n2);
else
System.out.println(n2 + " es mayor que " + n1);
}
}
}
Pedir dos números y decir cual es el mayor.
package bol01ej07;
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
// si ambos números son iguales diría que n2 es mayor que n1
if(n1>n2)
System.out.println(n1 + " es mayor que " + n2);
else
System.out.println(n2 + " es mayor que " + n1);
}
}
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
// si ambos números son iguales diría que n2 es mayor que n1
if(n1>n2)
System.out.println(n1 + " es mayor que " + n2);
else
System.out.println(n2 + " es mayor que " + n1);
}
}
Pedir dos números y decir si uno es múltiplo del otro
package bol01ej06;
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1%n2==0)
System.out.println("Son múltiplos");
else
System.out.println("No son múltiplos");
}
}
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1%n2==0)
System.out.println("Son múltiplos");
else
System.out.println("No son múltiplos");
}
}
Pedir dos números y decir si son iguales o no. Java
package bol01ej04;
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1==n2)
System.out.println("Son iguales");
else
System.out.println("No son iguales");
}
}
public class Main {
public static void main(String[] args) {
int n1,n2;
System.out.print("Introduce un número: ");
n1=Entrada.entero();
System.out.print("Introduce otro número: ");
n2=Entrada.entero();
if(n1==n2)
System.out.println("Son iguales");
else
System.out.println("No son iguales");
}
}
jueves, 27 de junio de 2013
Características únicas e PHP
Si estás familiarizado con otros lenguajes que se ejecutan del lado del servidor, como ASP.
NET o JSP, tal vez te preguntes qué tiene de especial PHP o qué lo hace tan diferente de esas
opciones competidoras. Bien, he aquí algunas razones:
Rendimiento Los scripts escritos en PHP se ejecutan más rápido que los escritos en otros
lenguajes de creación de scripts; numerosos estudios comparativos independientes ponen
este lenguaje por encima de sus competidores como JSP, ASP.NET y Perl. El motor de PHP
5.0 fue completamente rediseñado con un manejo óptimo de memoria para mejorar su rendimiento
y es claramente más veloz que las versiones previas. Además, están disponibles aceleradores
de terceros que pueden mejorar aún más el rendimiento y el tiempo de respuesta.
Portabilidad PHP está disponible para UNIX, Microsoft Windows, Mac OS y OS/2 y los
programas escritos en PHP se pueden transportar de una plataforma a otra. Como resultado,
las aplicaciones PHP desarrolladas en Windows, por ejemplo, se ejecutarán en UNIX sin
grandes contratiempos. Esta capacidad de desarrollar fácilmente para múltiples plataformas es
muy valiosa, en especial cuando se trabaja en un ambiente corporativo de varias plataformas o
cuando se intenta atacar diversos sectores del mercado.
Fácil de usar “La sencillez es la mayor sofisticación”, dijo Leonardo da Vinci y, de acuerdo
con ello, PHP es un lenguaje de programación extremadamente sofisticado. Su sintaxis es
clara y consistente y viene con una documentación exhaustiva para las más de 5 000 funciones
incluidas en la distribución principal. Esto reduce de manera importante la curva de aprendizaje
tanto para los desarrolladores novatos como para los expertos, y es una de las razones por
las que PHP es favorecido como una herramienta rápida para la creación de prototipos que
permitan el desarrollo de aplicaciones basadas en Web.
Código libre PHP es un proyecto de código libre; el lenguaje es desarrollado por un grupo
de programadores voluntarios distribuidos por todo el mundo, quienes ponen a disposición
gratuita el código fuente a través de Internet, y puede ser utilizado sin costo, sin pagos por licencia
y sin necesidad de grandes inversiones en equipo de cómputo ni programas. Con ello se
reduce el costo del desarrollo de programas sin afectar la flexibilidad ni la confiabilidad de los
productos. La naturaleza del código libre implica que cualquier desarrollador, dondequiera que
se encuentre, puede inspeccionar el árbol de código, detectar errores y sugerir posibles correcciones;
con esto se produce un producto estable y robusto, en que las fallas, una vez descubiertas,
se corrigen rápidamente, en algunas ocasiones, ¡horas después de ser descubiertas!
Soporte comunitario Una de las mejores características de los lenguajes a los que da soporte
una comunidad, como PHP, es el acceso que ofrece a la creatividad e imaginación de
cientos de desarrolladores ubicados en diferentes partes del mundo. En la comunidad PHP, los
frutos de esta creatividad pueden ser encontrados en PEAR (PHP Extension and Application
Repository), el repositorio de extensiones y aplicaciones de PHP (http://pear.php.net), y en
PECL (PHP Extension Community Library), la biblioteca de la comunidad de extensiones
PHP (http://pecl.php.net), que contienen cientos de soluciones y extensiones que los desarrolladores
pueden ocupar para añadir sin esfuerzo nuevas funcionalidades a sus aplicaciones
PHP. Utilizar estas soluciones suele ser una mejor opción en tiempo y costo, en vez de desarrollar
desde cero tu propio código.
Soporte a aplicaciones de terceros Una de las fortalezas históricas de PHP ha sido su
soporte a una amplia gama de diferentes bases de datos, entre las cuales se incluyen MySQL,
PostgreSQL, Oracle y Microsoft SQL Server. PHP 5.3 soporta más de quince diferentes motores
de bases de datos, e incluye una API (interfaz de programación de aplicaciones) común
para el acceso a base de datos. El soporte para XML facilita la lectura (y escritura) de documentos
XML como si fueran estructuras de datos nativas de PHP; es posible accesar a colecciones
de nodos XML utilizando XPath y transformar código XML en otros formatos con las
hojas de estilo XSLT.
Y no termina aquí. La arquitectura extensible de PHP permite que los desarrolladores
escriban sus propias adiciones personalizadas al lenguaje, de manera que hoy en día los desarrolladores
de PHP pueden hacer que sus aplicaciones lean y registren imágenes en formato
GIF, JPEG y PNG; enviar y recibir correos electrónicos utilizando protocolos SMTP, IMAP y
POP3; colaborar con servicios Web utilizando protocolos SOAP y REST; validar datos de entrada
utilizando expresiones regulares de Perl, además de crear y manipular documentos PDF.
Más aún, PHP puede acceder a las bibliotecas de C, las clases de Java y los objetos COM, ¡y
aprovechar el código escrito en esos lenguajes!
NET o JSP, tal vez te preguntes qué tiene de especial PHP o qué lo hace tan diferente de esas
opciones competidoras. Bien, he aquí algunas razones:
Rendimiento Los scripts escritos en PHP se ejecutan más rápido que los escritos en otros
lenguajes de creación de scripts; numerosos estudios comparativos independientes ponen
este lenguaje por encima de sus competidores como JSP, ASP.NET y Perl. El motor de PHP
5.0 fue completamente rediseñado con un manejo óptimo de memoria para mejorar su rendimiento
y es claramente más veloz que las versiones previas. Además, están disponibles aceleradores
de terceros que pueden mejorar aún más el rendimiento y el tiempo de respuesta.
Portabilidad PHP está disponible para UNIX, Microsoft Windows, Mac OS y OS/2 y los
programas escritos en PHP se pueden transportar de una plataforma a otra. Como resultado,
las aplicaciones PHP desarrolladas en Windows, por ejemplo, se ejecutarán en UNIX sin
grandes contratiempos. Esta capacidad de desarrollar fácilmente para múltiples plataformas es
muy valiosa, en especial cuando se trabaja en un ambiente corporativo de varias plataformas o
cuando se intenta atacar diversos sectores del mercado.
Fácil de usar “La sencillez es la mayor sofisticación”, dijo Leonardo da Vinci y, de acuerdo
con ello, PHP es un lenguaje de programación extremadamente sofisticado. Su sintaxis es
clara y consistente y viene con una documentación exhaustiva para las más de 5 000 funciones
incluidas en la distribución principal. Esto reduce de manera importante la curva de aprendizaje
tanto para los desarrolladores novatos como para los expertos, y es una de las razones por
las que PHP es favorecido como una herramienta rápida para la creación de prototipos que
permitan el desarrollo de aplicaciones basadas en Web.
Código libre PHP es un proyecto de código libre; el lenguaje es desarrollado por un grupo
de programadores voluntarios distribuidos por todo el mundo, quienes ponen a disposición
gratuita el código fuente a través de Internet, y puede ser utilizado sin costo, sin pagos por licencia
y sin necesidad de grandes inversiones en equipo de cómputo ni programas. Con ello se
reduce el costo del desarrollo de programas sin afectar la flexibilidad ni la confiabilidad de los
productos. La naturaleza del código libre implica que cualquier desarrollador, dondequiera que
se encuentre, puede inspeccionar el árbol de código, detectar errores y sugerir posibles correcciones;
con esto se produce un producto estable y robusto, en que las fallas, una vez descubiertas,
se corrigen rápidamente, en algunas ocasiones, ¡horas después de ser descubiertas!
Soporte comunitario Una de las mejores características de los lenguajes a los que da soporte
una comunidad, como PHP, es el acceso que ofrece a la creatividad e imaginación de
cientos de desarrolladores ubicados en diferentes partes del mundo. En la comunidad PHP, los
frutos de esta creatividad pueden ser encontrados en PEAR (PHP Extension and Application
Repository), el repositorio de extensiones y aplicaciones de PHP (http://pear.php.net), y en
PECL (PHP Extension Community Library), la biblioteca de la comunidad de extensiones
PHP (http://pecl.php.net), que contienen cientos de soluciones y extensiones que los desarrolladores
pueden ocupar para añadir sin esfuerzo nuevas funcionalidades a sus aplicaciones
PHP. Utilizar estas soluciones suele ser una mejor opción en tiempo y costo, en vez de desarrollar
desde cero tu propio código.
Soporte a aplicaciones de terceros Una de las fortalezas históricas de PHP ha sido su
soporte a una amplia gama de diferentes bases de datos, entre las cuales se incluyen MySQL,
PostgreSQL, Oracle y Microsoft SQL Server. PHP 5.3 soporta más de quince diferentes motores
de bases de datos, e incluye una API (interfaz de programación de aplicaciones) común
para el acceso a base de datos. El soporte para XML facilita la lectura (y escritura) de documentos
XML como si fueran estructuras de datos nativas de PHP; es posible accesar a colecciones
de nodos XML utilizando XPath y transformar código XML en otros formatos con las
hojas de estilo XSLT.
Y no termina aquí. La arquitectura extensible de PHP permite que los desarrolladores
escriban sus propias adiciones personalizadas al lenguaje, de manera que hoy en día los desarrolladores
de PHP pueden hacer que sus aplicaciones lean y registren imágenes en formato
GIF, JPEG y PNG; enviar y recibir correos electrónicos utilizando protocolos SMTP, IMAP y
POP3; colaborar con servicios Web utilizando protocolos SOAP y REST; validar datos de entrada
utilizando expresiones regulares de Perl, además de crear y manipular documentos PDF.
Más aún, PHP puede acceder a las bibliotecas de C, las clases de Java y los objetos COM, ¡y
aprovechar el código escrito en esos lenguajes!
Algoritmo de las 8 reinas en Java
public boolean solucionReinas()
{
solucion = false;
ponerReina(1);
return solucion;
} private void ponerReina(int i)
{
int j;
j = 0; // inicializa posibles movimientos
do {
j++;
reinas[i] = j; // prueba a colocar reina i en fila j,
// a la vez queda anotado el movimiento
if (valido(i))
{
if (i < N) // no completado el problema
{
ponerReina(i+1);
// vuelta atrás
if (!solucion)
reinas[i] = 0;
}
else // todas las reinas colocadas
solucion = true;
}
} while(!solucion && (j < 8));
}
private boolean valido(int i)
{
/* Inspecciona si la reina de la columna i es atacada por
alguna reina colocada anteriormente */
int r;
boolean libre;
libre = true;
for (r = 1; r <= i-1; r++)
{
// no esté en la misma fila
libre = libre && (reinas[i] != reinas[r]);
// no esté en alguna de las dos diagonales
libre = libre && ((i + reinas[i]) != (r + reinas[r]));
libre = libre && ((i - reinas[i]) != (r - reinas[r]));
}
{
solucion = false;
ponerReina(1);
return solucion;
} private void ponerReina(int i)
{
int j;
j = 0; // inicializa posibles movimientos
do {
j++;
reinas[i] = j; // prueba a colocar reina i en fila j,
// a la vez queda anotado el movimiento
if (valido(i))
{
if (i < N) // no completado el problema
{
ponerReina(i+1);
// vuelta atrás
if (!solucion)
reinas[i] = 0;
}
else // todas las reinas colocadas
solucion = true;
}
} while(!solucion && (j < 8));
}
private boolean valido(int i)
{
/* Inspecciona si la reina de la columna i es atacada por
alguna reina colocada anteriormente */
int r;
boolean libre;
libre = true;
for (r = 1; r <= i-1; r++)
{
// no esté en la misma fila
libre = libre && (reinas[i] != reinas[r]);
// no esté en alguna de las dos diagonales
libre = libre && ((i + reinas[i]) != (r + reinas[r]));
libre = libre && ((i - reinas[i]) != (r - reinas[r]));
}
Suscribirse a:
Entradas (Atom)