Pues eso... ¡Feliz Navidad y Próspero 2013!
Etiquetas
Acceso BD
Access
Algoritmo
Anonimato Online
Array
Array bidimensional
ArrayList
Base de datos
BookWorm
Bucle "do - while"
Bucle "for"
Bucle "while"
Búsqueda
Canvas
Clases
Clases abstractas
Cola
Colección de datos
Consola
Conversión de tipos
Curiosidades
Diseño Web
Eclipse
Exception
Extends
FCT
Flujo de datos
Formularios
Función
Gratis
Herencia
HTML
I/O
If - else
Implements
Interface
Iterator
J2EE
Java
javadoc
JavaScript
Layout
LinkedList
Manual
Matrices
Máximo Común Divisor
Microdatos
Mínimo Común Múltiplo
Nassi-Shneiderman
Ordenación
Pila
Programación
Puente JDBC-ODBC
Rich Snippets
Secuencia
Select... Case
Serialización
SQL Server
Swing
Switch
SyntaxHighlighter
Tor
Utilidades
VB.NET
Web
lunes, 24 de diciembre de 2012
viernes, 15 de junio de 2012
BookWorm
Ya me queda poco para tener finalizado mi proyecto de la asignatura Integración. En breve espero tener suficiente tiempo libre para ir publicando las partes más significativas del código aquí (aunque también subiré el proyecto entero a Bitbucket).
Mientras tanto, puedes verlo en el siguiente enlace: http://bookworm.phpfogapp.com/
¡Espero que te guste!
sábado, 12 de mayo de 2012
Manuales gratis para diseñadores web
¡Buenas! ¡Cuánto tiempo! La verdad es que ando sin un minuto libre últimamente, entre las prácticas (FCT) y el proyecto de fin de curso, no tengo tiempo ni de respirar últimamente... Y mucho menos de tener el blog al día, lo que me fastidia bastante, pero bueno, poco a poco espero ir terminando con las entradas sobre Visual Basic .NET para empezar a mostraros algo sobre mi proyecto. Al final lo estoy haciendo con PHP, utilizando diferentes plugins jQuery y demás, ya cuando empiece con las entradas del proyecto iré contando con más detalle. Además, tendré también que publicar algo sobre programación web con Java, que quedó pendiente... ¡Sigue aumentando mi lista de tareas!
Hoy os dejo un enlace muy interesante:
http://www.instantshift.com/2012/04/10/40-useful-free-online-books-for-web-designers/
Puedes encontrar en él varios manuales gratuitos para diseñadores web, hay de todo (HTML 5, tipografía, CSS, JavaScript...) y tienen muy buena pinta, así que no dudes en investigar un poco, que seguro que encuentras alguno útil.
¡Feliz fin de semana! Yo estaré pensando en la playa y trabajando en el proyecto... ¡Qué injusta es la vida! ;)
sábado, 21 de abril de 2012
Rich Snippets. Introducción y ejemplo
Los "rich snippets" (fragmentos enriquecidos) son líneas de texto que aparecen debajo de cada resultado de búsqueda. La forma más clara de verlo, es con un ejemplo. Buscamos, por ejemplo, una receta (arroz con leche) y algunos de los resultados que aparecen son estos:
Uno de los resultados, el que está rodeado, vemos que tiene una línea en la que aparece la valoración de la receta, el número de opiniones y la duración de la misma. Esto es un fragmento enriquecido.
Para obtener un fragmento enriquecido debemos seguir estos pasos:
- Elegir un formato de marcado:
- Microdatos
- Microformatos.
- RDFa.
- Marcar el contenido. Google ofrece fragmentos enriquecidos para estos tipos. Pero en schema.org, puedes encontrar muchos más y también son comprendidos por Google, entre otros buscadores.
- Probar el marcado. Google ofrece una herramienta para probar tus fragmentos enriquecidos. De esta manera te puedes asegurar de que Google puede leer los datos marcados.
(recomendado por Google). A mí me ha parecido el más sencillo, ya que sólo tienes que añadir algunos atributos a las etiquetas html (normalmente,
<span>
o <div>
).
Si después de haber marcado tu sitio web y haber esperado algunas semanas, los fragmentos enriquecidos siguen sin aparecer en el buscador, puedes visitar este enlace.
PRUEBA - Persona (contacto)
Voy a hacer una prueba para el tipo de dato "persona" que ofrece Google, que puede tener las siguientes propiedades:
- name (nombre).
- LISA MARIE SIMPSON
- nickname (apodo).
- LISA
- photo (foto).
- title (cargo de la persona).
- ESTUDIANTE
- role (función de la persona).
- url (enlace a una página web).
- affiliation (nombre de una organización a la que está afiliada la persona).
- ESCUELA PRIMARIA DE SPRINGFIELD
- friend (identifica una relación social entre la persona descrita y otra).
- MILHOUSE
- contact (identifica una relación social entre la persona descrita y otra).
- acquaintance (identifica una relación social entre la persona descrita y otra).
- address (dirección de la persona).
- street-address
- EVERGREEN TERRACE, 742
- locality
- SPRINGFIELD
- region
- postal-code
- country-name
- USA
<div itemscope itemtype="http://data-vocabulary.org/Person"> <img src="http://mickydenys.galeon.com/images/dibu4.gif" itemprop="photo" /> Soy <span itemprop="name">Lisa Marie Simpson</span>, pero todos me llaman <span itemprop="nickname">Lisa</span>. Esta es la web de mi familia: <a href="http://www.thesimpsons.com/" itemprop="url">LOS SIMPSON</a>. Vivo en la calle <span itemprop="address" itemscope itemtype="http://data-vocabulary.org/Address"> <span itemprop="street-address">Evergreen Terrace, 742</span> en <span itemprop="locality">Springfield</span>, <span itemprop="country-name">USA</span> </span> y soy <span itemprop="title">estudiante</span> en la <span itemprop="affiliation">Escuela Primaria de Springfield</span> Mi amigo es: <a href="http://www.milhouse.com" rel="friend">Milhouse</a> </div>
En la primera línea encontramos los atributos "itemscope" e "itemtype", incluidos en el
Si nos fijamos en la descripción de la dirección, propiedad "address", vemos que se trata de otro elemento. Es decir, un elemento puede, a su vez, estar formado por otros elementos.
<div>
. "itemscope" indica que el contenido del <div>
describe un elemento y con "itemtype" definimos de qué tipo de elemento se trata, en este caso, una persona. En ese <div>
se describen las propiedades de la persona, para ello, a los elementos que contengan alguna de esas propiedades se les añade la etiqueta "itemprop", indicando la propiedad correspondiente, por ejemplo: <span itemprop="title">
.Si nos fijamos en la descripción de la dirección, propiedad "address", vemos que se trata de otro elemento. Es decir, un elemento puede, a su vez, estar formado por otros elementos.
RESULTADO DE LA PRUEBA DEL MARCADO
Podemos ver que en la tercera línea salen algunos de los datos que habíamos indicado y así es como se mostraría el resultado en un buscador. También cabe destacar que no se muestran todos los datos que hemos etiquetado, como por ejemplo la foto. Supongo que el buscador determina, en función del tipo que hayamos elegido y de las propiedades que le hayamos indicado, los datos que muestra.
viernes, 23 de marzo de 2012
Curiosidades - Canvas (HTML)
Hola,
2.- Elige el patrón o imagen que prefieras:
3.- Aparece a la izquierda la imagen elegida y a la derecha el código, que puedes modificar a tu gusto:
4.- Una vez realizadas las modificaciones deseadas, puedes exportar la imagen resultante:
Web del autor: http://elucidatedbinary.com/
hoy os dejo una entrada diferente. Un enlace a una página en la que puedes interactuar con un código y ver los efectos inmediatamente en una serie de imágenes que puedes elegir. Para ello se ha utilizado el elemento HTML Canvas, que permite la generación de gráficos dinámicamente.
1.- Accede a la web:
2.- Elige el patrón o imagen que prefieras:
3.- Aparece a la izquierda la imagen elegida y a la derecha el código, que puedes modificar a tu gusto:
4.- Una vez realizadas las modificaciones deseadas, puedes exportar la imagen resultante:
Web del autor: http://elucidatedbinary.com/
domingo, 11 de marzo de 2012
Ejercicios MCD y MCM
EJERCICIO 1 - Máximo Común Divisor
Realizar una aplicación que calcule el máximo común divisor de dos números introducidos por teclado.
EJERCICIO 2 - Mínimo Común Múltiplo
Realizar una aplicación que calcule el mínimo común múltiplo de dos números introducidos por teclado.
Realizar una aplicación que calcule el máximo común divisor de dos números introducidos por teclado.
Module Module1 Sub Main() Dim numero1, numero2, a As Integer Dim n1, n2 As Integer Console.Write("Número 1: ") numero1 = Console.ReadLine Console.Write("Número 2: ") numero2 = Console.ReadLine n1 = numero1 n2 = numero2 If (numero1 < numero2) Then a = numero2 numero2 = numero1 numero1 = a End If ' Algoritmo de Euclides While (numero1 Mod numero2 <> 0) a = numero1 numero1 = numero2 numero2 = a Mod numero2 End While Console.WriteLine("El MCD de " & n1 & " y " & n2 & " es: " & numero2) Console.ReadKey() End Sub End Module
EJERCICIO 2 - Mínimo Común Múltiplo
Realizar una aplicación que calcule el mínimo común múltiplo de dos números introducidos por teclado.
Module Module1 Sub Main() Dim numero1, numero2, mcm As Integer Console.Write("Número 1: ") numero1 = Console.ReadLine Console.Write("Número 2: ") numero2 = Console.ReadLine mcm = (numero1 / MCD(numero1, numero2)) * numero2 Console.WriteLine("El mcm de " & numero1 & " y " & numero2 & " es: " & mcm) Console.ReadKey() End Sub Function MCD(ByVal num1 As Integer, ByVal num2 As Integer) As Integer Dim a As Integer If (num1 < num2) Then a = num2 num2 = num1 num1 = a End If ' Algoritmo de Euclides While (num1 Mod num2 <> 0) a = num1 num1 = num2 num2 = a Mod num2 End While Return num2 End Function End Module
Ejercicios de búsqueda en tablas
EJERCICIO 1
Realizar una aplicación que contenga la función "Buscar", a la que se le pasará un array de números enteros y el elemento a buscar. Debe devolver un Boolean indicando si lo ha encontrado (true) o no (false).
Module Module1 Sub Main() Dim numeros() As Integer = {32, 5, 3, 2, 66, 2, 7, 45, 90} Dim num As Integer = 91 Dim encontrado As Boolean = Buscar(numeros, num) Console.WriteLine(encontrado) Console.ReadKey() End Sub Function Buscar(ByVal numeros() As Integer, ByVal num As Integer) As Boolean Dim encontrado As Boolean = False For Each n As Integer In numeros If (n = num) Then encontrado = True End If 'Si lo encuentra, sale del "for" If encontrado Then Exit For Next Return encontrado End Function End Module
EJERCICIO 2
Modificar la función anterior para que implemente el algoritmo de búsqueda dicotómica. En este caso se le pasará un array ordenado de menor a mayor.
Module Module1 Sub Main() Dim numeros() As Integer = {2, 2, 3, 5, 7, 32, 45, 66, 90} Dim num As Integer = 4 Dim encontrado As Boolean = Buscar(numeros, num) Console.WriteLine(encontrado) Console.ReadKey() End Sub Function Buscar(ByVal numeros() As Integer, ByVal num As Integer) As Boolean Dim izquierda As Integer = 0 Dim derecha As Integer = numeros.Length - 1 Dim centro As Integer While (izquierda <= derecha) centro = (izquierda + derecha) / 2 If (numeros(centro) = num) Then Return True End If If (numeros(centro) > num) Then derecha = centro - 1 ElseIf (numeros(centro) < num) Then izquierda = centro + 1 End If End While Return False End Function End Module
EJERCICIO 3
Modificar de nuevo la función para que en lugar de un Boolean indicando si ha encontrado o no el elemento buscado, devuelva un entero indicando la posición donde se encuentra dicho elemento. Si el array no contiene ese elemento, devolverá -1.
Module Module1 Sub Main() Dim numeros() As Integer = {2, 2, 3, 5, 7, 32, 45, 66, 90} Dim num As Integer = 90 Dim posicion As Integer = Buscar(numeros, num) If (posicion = -1) Then Console.WriteLine("No encontrado") Else Console.WriteLine("Encontrado en la posicion: " & posicion) End If Console.ReadKey() End Sub Function Buscar(ByVal numeros() As Integer, ByVal num As Integer) As Integer Dim izquierda As Integer = 0 Dim derecha As Integer = numeros.Length - 1 Dim centro As Integer While (izquierda <= derecha) centro = (izquierda + derecha) / 2 If (numeros(centro) = num) Then Return centro End If If (numeros(centro) > num) Then derecha = centro - 1 ElseIf (numeros(centro) < num) Then izquierda = centro + 1 End If End While Return -1 End Function End Module
viernes, 9 de marzo de 2012
Ejercicio ordenar (método de la burbuja)
Realizar una aplicación que solicite la cantidad de números que el usuario quiere introducir, después los vaya pidiendo uno a uno y finalmente los ordene utilizando el algoritmo de ordenación de la burbuja y los muestre en consola.
NOTA: enlace a una página de algoritmos de ordenación http://www.cs.ubc.ca/~harrison/Java/sorting-demo.html
NOTA: enlace a una página de algoritmos de ordenación http://www.cs.ubc.ca/~harrison/Java/sorting-demo.html
Module Module1 Sub Main() Dim temporal As Double Dim cuantos As Integer Console.WriteLine("¿Cuántos números quiere introducir?") cuantos = Console.ReadLine cuantos -= 1 Dim numeros(cuantos) As Double For i As Integer = 0 To cuantos Console.Write("Número: ") numeros(i) = Console.ReadLine Next For i As Integer = 0 To (cuantos - 1) For j As Integer = (i + 1) To cuantos If (numeros(i) > numeros(j)) Then temporal = numeros(i) numeros(i) = numeros(j) numeros(j) = temporal End If Next Next Console.WriteLine("Números ordenados de menor a mayor:") For Each num As Double In numeros Console.WriteLine(num) Next Console.ReadKey() End Sub End Module
lunes, 5 de marzo de 2012
Varios ejercicios
EJERCICIO 1
Realizar una aplicación que recoja 10 números enteros desde teclado y al final muestre el mayor y el menor.
Module Module1 Sub Main() Dim numero, mayor, menor As Integer Console.Write("Número: ") mayor = Console.ReadLine menor = mayor For i As Integer = 1 To 9 Console.Write("Número: ") numero = Console.ReadLine If (numero > mayor) Then mayor = numero ElseIf (numero < menor) Then menor = numero End If Next Console.WriteLine("El número mayor es: " & mayor) Console.WriteLine("El número menor es: " & menor) Console.ReadKey() End Sub End Module
EJERCICIO 2
Realizar una aplicación que genere un array de números aleatorios y los muestre. Para ello se utilizará la clase Random. El array también tendrá tamaño aleatorio.
Module Module1 Sub Main() Dim azar As Random = New Random ' El método Next(int1, int2) de la clase Random devuelve un número aleatorio dentro de ese intervalo Dim cuantos As Integer = azar.Next(1, 100) Dim numeros(cuantos) As Integer For i As Integer = 0 To cuantos numeros(i) = azar.Next(-200, 200) Next For Each num As Integer In numeros Console.WriteLine(num) Next Console.ReadKey() End Sub End Module
Ejercicio "Cambio"
Realizar una aplicación que recoja por teclado la cantidad total a pagar y la cantidad que se ha entregado. La aplicación debe calcular el cambio correspondiente con el menor número de monedas y/o billetes posibles.
Module Module1 Sub Main() Dim total, entregado, vuelta As Double Dim billetes() As Single = {500, 200, 100, 50, 20, 10, 5} Dim monedas() As Single = {200, 100, 50, 20, 10, 5, 2, 1} Dim resultado(14) As Integer Console.Write("Introduzca la cantidad total: ") total = Console.ReadLine Console.Write("Introduzca la cantidad entregada: ") entregado = Console.ReadLine Console.WriteLine() 'Comprobamos las cantidades If (total > entregado) Then Console.WriteLine("Las cantidades no son correctas.") Console.WriteLine("La cantidad entregada debe ser mayor o igual al total.") ElseIf (total = entregado) Then Console.WriteLine("Ha entregado la cantidad exacta. No tiene cambio.") Else 'Calculamos la vuelta vuelta = entregado - total Console.WriteLine("Su vuelta es: " & vuelta & " Euros.") ' 1º con los billetes Dim i As Integer = 0 For Each cantidad As Single In billetes ' \ división entera resultado(i) = vuelta \ cantidad ' Lo que queda es el resto vuelta = vuelta Mod cantidad i += 1 Next ' Me daba error si cogía el valor de las monedas con decimales ' Así que multipliqué tanto el valor de estas como lo que queda de vuelta por 100 vuelta = vuelta * 100 ' 2º con las monedas For Each cantidad As Single In monedas resultado(i) = vuelta \ cantidad vuelta = vuelta Mod cantidad i += 1 Next Dim j As Integer = 0 For i = 0 To 6 If (resultado(j) <> 0) Then Console.WriteLine(resultado(j) & " billetes de " & billetes(i) & " Euros.") End If j += 1 Next For i = 0 To 7 If (resultado(j) <> 0) Then Console.WriteLine(resultado(j) & " monedas de " & (monedas(i) / 100) & " Euros.") End If j += 1 Next End If Console.ReadKey() End Sub End Module
sábado, 3 de marzo de 2012
"While... End" y "Do... Loop"
A continuación se muestra un sencillísimo ejemplo de todas las variantes de estos bucles:
Module Module1 Sub Main() DoLoop() Console.ReadKey() End Sub Sub DoLoop() Dim a As Integer = 1 ' While While (a < 10) a += 1 End While ' Equivalente al while Do While (a < 10) a += 1 Loop ' Evalúa la condición al final ' Por lo tanto el bloque se ejecutará al menos una vez Do a += 1 Loop While (a <= 10) ' Se ejecuta "hasta que", no "mientras" Do Until (a > 10) a += 1 Loop ' Lo mismo, pero el bloque se ejecuta al menos una vez Do a += 1 Loop Until (a > 10) End Sub End Module
Ejercicio "Ecuación de 2º grado"
Realizar una aplicación que calcule las raíces de una ecuación de segundo grado y las muestre, una vez que ha recogido los coeficientes por teclado.
Imports System.Math Module Module1 Sub Main() Dim a, b, c As Integer Dim discriminante As Integer Console.WriteLine("ax^2 + bx + c = 0") Console.WriteLine("Introduce los valores de los coeficientes.") Console.Write("a: ") a = Console.ReadLine Console.Write("b: ") b = Console.ReadLine Console.Write("c: ") c = Console.ReadLine If (a = 0) Then Console.WriteLine("La ecuación no es de segundo grado.") Else discriminante = b ^ 2 - (4 * a * c) If (discriminante = 0) Then Dim raiz As Double raiz = -b / (2 * a) Console.WriteLine("La ecuación tiene un único resultado.") Console.WriteLine("Raíz: " & raiz) ElseIf (discriminante > 0) Then Dim raiz1, raiz2 As Double raiz1 = (-b + (Sqrt(discriminante))) / (2 * a) raiz2 = (-b - (Sqrt(discriminante))) / (2 * a) Console.WriteLine("La ecuación tiene dos resultados.") Console.WriteLine("Raíz 1: " & raiz1) Console.WriteLine("Raíz 2: " & raiz2) Else Console.WriteLine("La ecuación no tiene resultado para esos valores.") End If End If Console.ReadKey() End Sub End Module
Instrucción Select... Case
La instrucción Select... Case es similar al Switch de Java, pero bastante más potente, ya que permite indicar intervalos, expresiones y varios valores en el mismo "Case".
EJEMPLO DE SELECT... CASE
Module Module1 Sub Main() Menu() Console.ReadKey() End Sub Sub Menu() Dim opcion As Integer = 1 While (opcion <> 0) Console.Clear() Console.WriteLine("Menú") Console.WriteLine("====") Console.WriteLine("1. Si introduce uno se ejecuta esta opción") Console.WriteLine("2-5. Si introduce un número entre 2 y 5 se ejecuta esta") Console.WriteLine("6, 9, 10. Si introduce 6, 9 o 10 se ejecuta esta") Console.WriteLine("Mayor de 15. Si es mayor de 15 se ejecuta esta") Console.WriteLine("0. Salir") Console.WriteLine() Try opcion = CInt(Console.ReadLine()) Catch ex As InvalidCastException ' Sólo se ve desde el Visual Studio Debug.WriteLine("Error: " & ex.Message) opcion = 7 Catch e As OverflowException ' lo que queramos hacer End Try Select Case opcion Case 1 Console.WriteLine("Ha seleccionado la opción 1") Case 2 To 5 ' Intervalo Console.WriteLine("Ha seleccionado una opción entre 2 y 5") Case 6, 9, 10 ' Varios valores Console.WriteLine("Ha seleccionado 6, 9 o 10") Case Is > 15 ' Expresión Console.WriteLine("Ha seleccionado una opción mayor que 15") Case 0 Console.WriteLine("Ha elegido salir, ¡adiós!") Case Else ' Si no entra por las anteriores... Console.WriteLine("Ha elegido una opción incorrecta") End Select ' vbCrLf -> constante que representa retorno de carro más salto de línea Console.WriteLine(vbCrLf & "Pulse ENTER para continuar") Console.ReadKey() End While End Sub End Module
EJERCICIO
Realizar una aplicación que tenga un menú que permita elegir entre calcular el área de un círculo o un rectángulo. Dependiendo de lo que se elija, se pedirán los datos correspondientes y se mostrará el resultado.
Realizar una aplicación que tenga un menú que permita elegir entre calcular el área de un círculo o un rectángulo. Dependiendo de lo que se elija, se pedirán los datos correspondientes y se mostrará el resultado.
Module Module1 Sub Main() Const PI As Double = 3.14159265 Dim opcion As Integer Dim ancho, alto As Double Dim radio As Double Do Menu() Console.Write("Elija una opción: ") opcion = Console.ReadLine Console.WriteLine() Select Case opcion Case 1 Console.Write("Ancho: ") ancho = Console.ReadLine Console.Write("Alto: ") alto = Console.ReadLine Console.WriteLine("Área del rectángulo: " & (ancho * alto) & " uds cuadradas") Case 2 Console.Write("Radio: ") radio = Console.ReadLine Console.WriteLine("Área del círculo: " & (PI * (radio ^ 2)) & " uds cuadradas") Case 3 Console.WriteLine("Ha elegido salir del programa.") Case Else Console.WriteLine("Opción incorrecta.") End Select Console.WriteLine(vbCrLf & "Pulse ENTER para continuar") Console.ReadKey() Loop While opcion <> 3 End Sub 'Procedimiento que muestar el menú Sub Menu() Console.Clear() Console.WriteLine("CALCULAR ÁREA") Console.WriteLine() Console.WriteLine("1. Rectángulo") Console.WriteLine("2. Círculo") Console.WriteLine("3. Salir") End Sub End Module
miércoles, 29 de febrero de 2012
Varios ejercicios
EJERCICIO 1
Hacer una aplicación que pida un nombre por teclado y luego salude a esa persona.
Hacer una aplicación que pida un nombre por teclado y luego salude a esa persona.
Module Module1 Sub Main() Dim nombre As String Console.WriteLine("¿Cómo te llamas?") nombre = Console.ReadLine Console.WriteLine() Console.WriteLine("Hola " & nombre) Console.ReadKey() End Sub End Module
EJERCICIO 2
Hacer una aplicación que recoja números desde teclado hasta que se introduzca vacío (cadena ""). Se deben sumar estos números y mostrar el resultado.
Hacer una aplicación que recoja números desde teclado hasta que se introduzca vacío (cadena ""). Se deben sumar estos números y mostrar el resultado.
Module Module1 Sub Main() Dim Numero As String Dim Resultado As Integer = 0 Do Console.Write("Número: ") Numero = Console.ReadLine() Try Resultado = Resultado + CInt(Numero) Catch ex As InvalidCastException End Try Loop While Numero <> "" Console.WriteLine("Resultado final: " & Resultado) Console.ReadKey() End Sub End Module
NOTA: por defecto, se realizan conversiones implícitas de datos, si quisiésemos desactivar esta opción (recomendable), tendremos que poner la siguiente línea al principio de nuestro código (antes de Module Nombre_del_Módulo)
Option Explicit On
En este caso, para realizar las conversiones, se utilizarán las funciones de conversión. Algunas de estas funciones son:
- CDate(expresión): para convertir a tipo Date
- CDbl(expresión): para convertir a tipo Double
- CInt(expresión): para convertir a tipo Integer
- CStr(expresión): para convertir a tipo String
Ver más en Funciones de conversión de tipos.
EJERCICIO 3
Hacer una aplicación que pida por teclado el radio de una circunferencia y muestre su área y su perímetro.
Hacer una aplicación que pida por teclado el radio de una circunferencia y muestre su área y su perímetro.
Module Module1 Sub Main() Dim Radio, Area, Perimetro As Double ' Definición de constantes en VB Const PI As Double = 3.14159265 Console.Write("Radio de la circunferencia: ") Radio = Console.ReadLine Area = PI * (Radio ^ 2) Perimetro = 2 * PI * Radio Console.WriteLine("Área: " & Area & " uds cuadradas") Console.WriteLine("Perímetro: " & Perimetro & "uds") Console.ReadKey() End Sub End Module
martes, 28 de febrero de 2012
Hola Mundo - Comenzando con VB.NET
Como no puede ser de otra manera, empezamos Visual Basic .NET con un "Hola Mundo":
Module MiModulo Sub Main() 'Mostrar un mensaje en consola Console.WriteLine("Hola mundo") 'Para que la consola se quede abierta, 'A la espera de que pulsemos una tecla Console.ReadKey() End Sub End Module
sábado, 18 de febrero de 2012
Desaparecida...
He estado "desaparecida" unas semanas. Se acerca la recta final, antes de la FCT (Formación en Centros de Trabajo) y no tengo mucho tiempo libre, por lo que no he podido dedicarme tanto al blog. Pero quería comentar que, finalmente, para el proyecto de Integración realizaré una aplicación web con JSP/Servlets, por lo que cuando vaya tomando forma, empezaré a colgar el código aquí y también la iré subiendo a Jelastic. Dejaré el enlace a mi sitio cuando haya subido la primera versión.
Mientras tanto, es probable (aunque no prometo nada), que dedique algunas entradas a Visual Basic .NET y a lo que vaya preparando para el proyecto, como por ejemplo, la hoja de estilos.
¡Felices carnavales!
sábado, 28 de enero de 2012
Tor Project
Si estás cansado de esto...
y de esto...
La solución es:
y de esto...
La solución es:
Tor es software libre que no sólo te permite saltarte determinados filtros, sino que además protege tu privacidad online. Estás son algunas de sus principales ventajas:
- Evita que se pueda conocer tu localización o tus hábitos de navegación.
- Sirve para navegadores web, clientes de mensajería instantánea, accesos remotos y mucho más.
- Es software libre y de código abierto para Windows, Mac, Linux/Unix y Android.
Si te apetece investigar un poco más, visita la web del projecto y descárgate Tor: https://www.torproject.org/.
sábado, 14 de enero de 2012
J2EE. Aplicaciones Web con Java
Tras el parón navideño, regreso... Dentro de nada terminaré con Java, por lo menos durante un tiempo. Falta aplicaciones web (con las que empiezo ahora), servicios web y applets.
------
J2EE son las siglas de Java 2 Enterprise Edition. Se trata de una versión ampliada de J2SE, con más API, pensada para crear aplicaciones distribuidas multicapa basadas en componentes, que se ejecutan sobre uno o varios servidores de aplicaciones.
Servidores J2EE. Son el "middleware" que une todos los componentes para que funcionen juntos. Algunos de ellos son:
- JBoss. Implementa toda la especificación J2EE (Contenedor Web + Contenedor EJB)
- GlassFish
- Apache Tomcat. Sólo implementa el Contenedor Web.
Los servidores J2EE estarán formados por dos contenedores y a cada componente le corresponderá uno de ellos:
- Contenedor Web
- Servlets. Permiten la comunicación con el servidor vía HTTP.
- Páginas JSP. Páginas HTML dinámicas que incluyen código Java.
- Contenedor EJB
- EntityBeans
- SessionBeans
- MessageDrivenBeans
Despliegue de aplicaciones J2EE. Desplegar una aplicación es instalarla en un servidor de aplicaciones J2EE.
Los desplegables o módulos J2EE son archivos .zip que contienen ficheros .class, diferentes recursos y el descriptor de despliegue (documento XML).
- WAR. Web ARchive. Sólo contiene componentes del contenedor web, es decir, servlets y páginas JSP y su descriptor de despliegue es el fichero "web.xml".
- EAR. Enterprise ARchive.
- JAR. Java ARchive.
APLICACIONES WEB
Las aplicaciones web se implementan mediante los componentes de la capa web (servlets y páginas JSP). Se distribuyen en forma de WAR que se despliegan en servidores J2EE.
------
De momento, sólo veremos esta última parte de J2EE, por lo que es suficiente con el servidor Apache Tomcat para realizar nuestras pruebas.
En próximas entradas pondré algunos ejemplos de servlets, páginas JSP y filters.
Suscribirse a:
Entradas (Atom)