lunes, 28 de diciembre de 2009

CSS-Capitulo 3

Lección 3: Colores y fondos

En esta lección aprenderás a aplicar colores y colores de fondo a tus sitios web. Examinaremos también métodos avanzados para posicionar y controlar imágenes de fondo. Se explicarán las siguientes propiedades CSS:

Color de primer plano: la propiedad 'color'

La propiedad color describe el color de primer plano de un elemento.
Por ejemplo, imagina que queremos que todos los títulos de un documento aparezcan con color rojo oscuro. Todos los títulos están marcados con el elemento "h1". El código siguiente establece el color de los elementos "h1" como rojo.
Los colores se pueden introducir como valores hexadecimales, como en el ejemplo anterior: "#" "ff0000" ";" o se pueden usar los nombres de los colores: "red" (rojo), o bien como valores rgb: (rgb(255,0,0)).

La propiedad 'background-color'

La propiedad background-color describe el color de fondo de los elementos.
El elemento "body" contiene todo el contenido de un documento HTML. Así pues, para cambiar el color de fondo de una página, la propiedad background-color debería aplicarse al elemento "body".
También se pueden aplicar colores de fondo a otros elementos, entre ellos, a los encabezados y al texto. En el ejemplo que sigue se aplicarán diferentes colores a los elementos "body" y "h1".
Fíjate cómo hemos aplicado dos propiedades a "h1" separándolas por medio de un punto y coma.

Imágenes de fondo [background-image]

La propiedad CSS background-image se usa para insertar una imagen de fondo.
Para el ejemplo de la imagen de fondo, vamos a usar la mariposa que ves más abajo. Puedes descargar la imagen para usarla en tu propio ordenador (haz clic con el botón derecho sobre la imagen y elige "guardar imagen como..."), o bien puedes usar cualquier otra imagen.
imagen1

Para insertar la imagen de la mariposa como imagen de fondo de una página web, aplica sencillamente la propiedad background-image al elemento "body" y especifica la localización de la imagen.
NOTA: Fíjate cómo hemos especificado la localización de la imagen: url("butterfly.gif"). Esto significa que la imagen está en la misma carpeta que la hoja de estilo. También puedes hacer referencia a imágenes en otras carpetas usando url("../imagenes/butterfly.gif") o incluso imágenes de internet si indicas la dirección completa del fichero: url("http://www.html.net/butterfly.gif").

Repetir la imagen de fondo [background-repeat]

En el ejemplo anterior, ¿te fijaste en que, por defecto, la mariposa se repetía tanto en el eje horizontal como en el vertical para ocupar toda la pantalla? La propiedad background-repeat controla este comportamiento.
La tabla siguiente resume los cuatro valores diferentes para la propiedad background-repeat.
tabla1

Por ejemplo, para evitar que se repita un imagen de fondo, el código que tendríamos que usar sería el siguiente:

Fijar la imagen de fondo [background-attachment]

La propiedad background-attachment especifica si una imagen está fija o se desplaza con el elemento contenedor.
Una imagen de fondo fija no se moverá con el texto cuando el lector se desplace por la página, mientras que una imagen de fondo no fija se desplazará con el texto de la página web.
La tabla siguiente resume los dos valores posibles para la propiedad background-attachment. Haz clic en los ejemplos para ver la diferencia entre la imagen fija y la imagen que se desplaza.
tabla2
Por ejemplo, el siguiente código fijará la imagen de fondo.
codigo5

Ubicación de la imagen de fondo [background-position]

Por defecto, una imagen de fondo se posiciona en la esquina superior izquierda de la pantalla. La propiedad background-position te permitirá cambiar este valor por defecto y posicionar la imagen de fondo en cualquier lugar de la pantalla que quieras.
Hay muchas formas diferentes de establecer los valores de la propiedad background-position. Sin embargo, todas ellas se formatean como un conjunto de coordenadas. Por ejemplo, el valor '100px 200px' posiciona la imagen de fondo a 100 píxeles del margen izquierdo y a 200 píxeles del margen superior del la ventana del navegador.
Las coordenadas se pueden indicar como porcentajes del ancho de la pantalla, como unidades fijas (píxeles, centímetros, etc.) o puedes usar las palabras "top" (superior), "bottom" (inferior), "center" (centro), "left" (izquierda) y "right" (derecha). El modelo siguiente ilustra cómo funciona el sistema:
imagen2


La tabla siguiente proporciona varios ejemplos.
tabla3
El ejemplo de código siguiente posiciona la imagen de fondo en la esquina inferior derecha:

Combinación de propiedades [background]

La propiedad background es una forma abreviada de todas las propiedades de fondo listadas a lo largo de esta lección.
Con la propiedad background se pueden comprimir varias propiedades, y así escribir una hoja de estilo de forma más abreviada, lo que facilitará su lectura.
Por ejemplo, observa estas cinco líneas de código:
Usando background se puede lograr el mismo resultado con una única línea de código:
El orden en que deben aparecer las propiedades individuales es el siguiente:
codigo9


Si se omite alguna propiedad, de forma automática ésta se establecerá con su valor por defecto. Por ejemplo, si se omiten las propiedades background-attachment y background-position del ejemplo anterior, quedando el código de la siguiente manera:
Estas dos propiedades que no se especifican se establecerían, sin más, con sus valores por defecto, que, como ya sabes, son scroll y top left.

domingo, 27 de diciembre de 2009

CSS-Capitulo 2

En esta lección aprenderás a crear tu primera hoja de estilo; conocerás el modelo básico de CSS y qué código es necesario para usar CSS en un documento HTML.
Muchas de las propiedades que se usan en las hojas de estilo en cascada (CSS) son parecidas a las de HTML. Así pues, si estás acostumbrado a usar HTML para cuestiones de presentación, lo más probable es que reconozcas gran parte del código usado. Examinemos un ejemplo concreto.

La sintaxis básica de CSS

Digamos que queremos un bonito color rojo como fondo de nuestra página web:
Usando HTML podríamos haberlo conseguido así:
Con CSS el mismo resultado puede lograrse así:
Como verás, el código usado es más o menos idéntico para HTML y CSS. El ejemplo anterior te muestra además el modelo CSS fundamental:
imagen y codigo2

Pero ¿dónde se sitúa el código CSS? Eso, precisamente, es lo que vamos a estudiar ahora mismo.

Aplicando CSS a un documento HTML

Podemos aplicar CSS a un documento HTML de tres maneras diferentes. Todos estos métodos se explican a continuación. Te recomendamos que te centres en el tercero, es decir, el externo.

Método 1: En línea (el atributo "style")

Un modo de aplicar CSS a HTML es usando el atributo de HTML style. Si ampliamos el ejemplo anterior sobre el color de fondo rojo, CSS se puede aplicar así:

Método 2: Interno (la etiqueta "style")

Otra forma es incluir el código CSS usando la etiqueta HTML
. Por ejemplo, así:

Método 3: Externo (enlace a una hoja de estilo)

El método recomendado es enlazar con lo que se denomina hoja de
estilo externa. A lo largo de este tutorial usaremos este método en
todos nuestros ejemplos.
Una hoja de estilo externa es sencillamente un fichero de texto con la extensión .css. Como cualquier otro fichero, puedes colocar la hoja de estilo en el servidor web o en el disco duro.
Por ejemplo, digamos que tu hoja de estilo se llama style.css y está localizada en una carpeta que se llama style. Esta situación se puede ilustrar de la siguiente manera:
imagen2

El truco consiste en crear un vínculo desde el documento HTML (por
ejemplo, default.htm) con la hoja de estilo (style.css). Dicho vínculo
se puede crear con una sencilla línea de código HTML:
Fíjate cómo la ruta a nuestra hoja de estilo aparece indicada por medio del atributo "href".
La línea de código debe insertarse en la sección de encabezado del código HTML, es decir, entre la etiqueta "head""/head". De esta manera:
Este vínculo indica al navegador que debería usar la presentación
del fichero CSS al mostrar el fichero HTML. Lo realmente bueno de este
método es que se pueden vincular varios documentos HTML con la misma
hoja de estilo. En otras palabras, se puede usar un único fichero CSS
para controlar la presentación del muchos documentos HTML.
imagen3

Esta técnica puede ahorrarte mucho trabajo. Si quisieras cambiar,
por ejemplo, el color de fondo de un sitio web compuesto por 100
páginas, un hoja de estilo puede ahorrarte el tener que cambiar de
forma manual los 100 documentos HTML. Con CSS, el cambio se puede
llevar a cabo en unos segundos modificando parte del código de la hoja
de estilo principal.
Vamos a llevar a la práctica lo que acabamos de aprender.

Pruébalo tú mismo

Abre el Bloc de notas (o el editor de texto que utilices) y crea dos
ficheros - un fichero HTML y un fichero CSS - con el siguiente
contenido:

Fichero default.htm

Fichero estilo.css


Ahora coloca los dos ficheros en la misma carpeta. Recuerda grabar
los ficheros con las extensiones correctas (".htm" y ".css",
respectivamente).
Abre el fichero default.htm con el navegador y
observa que la página tiene un color de fondo rojo. ¡Enhorabuena!
¡Acabas de crear tu primera hoja de estilo!


CSS-Capitulo 1

¿Que es CSS?

Tal vez hayas oido hasta la saciedad hablar de CSS, sin tener idea de lo que estabas oyendo¿cierto?En este post vas a conocer un poco más acerca de CSS.Quien sabe, igual... hasta te agrada la idea de usarlo en tus trabajos. 

CSS es el acronimo de Cascading Style Sheet(Hojas de estilo en cascada).


¿Que puedo hacer con CSS?

CSS es un lenguaje de estilo que define la forma en que se presenta un documento HTML.Abarca cuestiones como margenes, colores,imagenes de fondo,lineas, altura,fuentes y muchos temas más.

Puedes usar HTML,e incluso abusar de él, para añadir un buen formato a tu web, pero CSS es distinto.Es bastante más sofisticado y ofrece más opciones y más precision, sin contar con el hecho de que todos los navegadores actuales lo soportan.Esto quiere decir que, si usas CSS en tu web, esta se va a poder ver en Internet Explorer,Mozilla Firefox, Netscape...sin ningún problema.

Diferencias entre CSS y HTML

HTML se usa para estructurar el contenido.CSS formatea el contenido ya estructurado.

Tu dices:"Ok, vaya lio.No me he enterado de nada con tanta palabreja".Tienes razón.Hablando en cristiano significa que con HTML le das una estructura a tu web.¿Recuerdas los post acerca de crear una web con NVU? Ese código es HTML. Lo que aquí estamos aprendiendo es como dar una forma bonita y ordenada a nuestra web  con CSS.

Recuerda:En nuestra web, HTML da el esqueleto y CSS, la apariencia.(A partir de ahora cuando hablemos de etiquetas HTML entenderemos que siempre van entre signos "<" y ">" y las señalaremos en cursiva.)

Al principio los diseñadores podian marcar sus textos diciendo "Esto es un titulo" (usando etiqueta HTML "h1" )  o " esto es un parrafo" (usando etiqueta HTML "p" ).

A medida que la web iba ganando popularidad los diseñadores buscaron nuevas posibilidades para añadir formato a sus documentos.Como los fabricantes de los navegadores(entonces Netscape y Microsoft) eran muy complacientes inventaron nuevas etiquetas HTML entre ellas "font" que definian el formato....no la estructura.

Se llegó a una situacion en que etiquetas estructurales como por ejemplo "table",se usaban cada vez más de forma incorrecta para dar formato a las páginas en lugar de para añadir estructura.Muchas etiquetas como el caso de "blink" sólo eran soportadas por un determinado tipo de navegador."Necesitas el navegador X para visualizar esta página" se convirtió en una declaración de descargo común en los sitios web.

CSS nació para remediar esta situación dando a los diseñadores web una herramienta sofisticada soportada en todos los navegadores.Por supuesto separar el contenido de los documentos web de su presentacion hace que sea mucho más facil el mantenimiento de nuestro sitio web.

¿Que beneficios obtengo con CSS?

Como ya te puedes imaginar CSS resultó ser toda una revolucion en el mundo de diseño web.Entre los beneficios que podemos encontrar están:
 1.-Control de la presentación de muchos documentos desde una única hoja de estilo;
 2.-Control más preciso de la presentación;
 3.-Aplicación de diferentes presentaciones a diferentes tipos de medios (pantalla, impresión, etc.);
 4.-Numerosas técnicas avanzadas y sofisticadas.

CSS-Introduccion

En esta seria de post vamos a hablar de las CSS.En un post anterior tienes enlaces a webs, recursos....que te van a facilitar un poco conocer la idea general de lo que vamos a hablar en esta serie sobre CSS.

Y como lo primero, es lo primero vamos a comenzar hablando de que es CSS.Este tutorial lo piedes encontrar en Tutorial CSS de la web HTML.net. Es el mejor tutorial que he encontrado hasta el momento, a si que los codigos de los que hablemos los puedes encontrar en la web.

Comenzamos...

¿Que es CSS?

Las hojas de estilo en cascada (CSS, acrónimo de Cascading StyleSheets) son una herramienta fantástica para añadir presentación a los sitios web. Pueden ahorrarte mucho tiempo y te permitirán diseñar sitios web de un modo totalmente nuevo. CSS es imprescindible para todos aquellos que trabajen en el campo del diseño web.


Aprender CSS es divertido. Según vayas avanzando en el contenido del tutorial, recuerda dedicar el tiempo suficiente para experimentar con lo que hayas aprendido en cada lección.
Para usar CSS es necesario tener una experiencia básica en HTML.. Si no estás familiarizado con HTML, empieza, por favor, con nuestro tutorial HTML antes de adentrarte en CSS.

¿Qué software necesito?

Evita, por favor, usar software tal como FrontPage, DreamWeaver o Word con este tutorial. Este tipo de software tan sofisticado no te ayudará a aprender CSS; más bien, te limitará y reducirá de modo significativo tu curva de aprendizaje.

Todo lo que necesitas es un editor de texto sencillo y gratuito.
Por ejemplo, Microsoft Windows incorpora un programa que se llama Bloc de notas. Se localiza normalmente en el menú de Inicio, sección Todos los programas dentro de la carpeta Accesorios. Si no es éste, puedes usar un editor de texto parecido, por ejemplo, Pico para Linux o Simple Text para Macintosh.

Este tipo de editores de texto sencillos son ideales para aprender HTML y CSS puesto que no afectan o cambian el código que vas tecleando. De esto modo, los éxitos y errores sólo se te podrán atribuir a ti... y no al software.


Y en cuestiones de navegador¿Cual uso?

Puedes usar cualquier navegador con este tutorial. Te animamos a que mantegas siempre actualizado tu navegador y uses la versión más reciente.
Un navegador y un sencillo editor de texto es todo lo que necesitas.
¡En marcha!

miércoles, 16 de diciembre de 2009

Lista de páginas donde puedes encontrar informacion sobre CSS

Guía de Referencia Rápida de CSS 2
Incluye una referencia de todos los selectores, propiedades, valores, etc.
Página principal de CSS
Incluye multitud de recursos sobre CSS.
Especificaciones CSS
Conjunto de todas las especificaciones de CSS existentes.
Tutorial introductorio de CSS
Breve tutorial desarrollado por Bert Bos para quienes desean utilizar CSS y no tienen experiencia.
Añadir un toque de estilo
Guía desarrollada por Dave Raggett que te ayudará de forma sencilla a dar estilo a tus documentos.
Consejos y Trucos de CSS
Colección de ejemplos CSS con una breve descripción de cómo utilizarlos.
CSS Zen Garden
El Jardín Zen del CSS es un ejercicio de aprendizaje y demostración de las posibilidades de diseño que ofrece CSS, para ello se presentan diferentes hojas de estilo para un mismo contenido y así podremos ver los cambios de estilo que se producen sin tener que modificar el documento.
Camaleón CSS
Proyecto de origen hispano inspirado en la misma idea y concepto original del CSS Zen Garden.
Validador de CSS
Servicio del W3C online y gratuito que nos permite comprobar la validez de las Hojas de Estilo.

martes, 15 de diciembre de 2009

Curso de Programación C #: Modificadores de alcance, Constructores y Destructores

Alcance
El alcance delimita que regiones de código pueden referenciar un elemento del programa, los modificadores de acceso son los que definen el alcance de los miembros de la clase y son:
Capacidad de Acceso Significado
public El acceso no se encuentra restringido
protected El acceso está limitado a la clase actual, así como a las clases que hereden de ella
internal El acceso está limitado al proyecto actual
internal protected El acceso está limitado al proyecto actual, así como a los tipos derivados de ella private El acceso está limitado a la clase actual
Reglas
Los espacios de nombre siempre son públicos (implícitamente).
Las clases siempre son públicas (implícitamente).
Los miembros de clase son privadas por predeterminación.
Todo esto a menos que se agregue un modificador de alcance para variar la capacidad de acceso el elemento.
Recomendaciones
Solo deben hacerse públicos aquellos datos que los usuarios de su clase necesiten ver, aunque siempre es más recomendable en medida de lo posible el uso de atributos para acceder a dichos valores, NO DECLARE COMO PUBLICA UNA VARIABLE A MENOS QUE SEA E-S-T-R-I-C-T-A-M-E-N-T-E necesario. Para los efectos del curso se tratarán las variables de una manera no completamente segura por razones de legibilidad del código, pero una vez que obtengan más experiencia deben evitarlo.

Constructores y Destructores
Los constructores nos permiten inicializar la memoria y convertirla en un objeto listo para usarse, pero ahi ciertas reglas:
+ El Constructor Inicializa la memoria y la convierte en un objeto utilizable
+ Si no se especifica un constructor:
- El compilador genera un constructor predeterminado
- Accesibilidad pública
- Mismo nombre que el de la clase
- Sin tipo de retorno, ni siquiera null
- No espera argumentos
- Inicializa todos los campos en cero, falso o nulo
+ Si se especifica un constructor
- Se invoca cuando se inicializa el objeto
- Se puede sobrecargar
Caracteristicas del Constructor Predeterminado:
+ Todos los campos se inicializan con cero
- Campos numéricos (int, double, decimal, etc..) se inicializan a cero.
- Campos bool se inicializan en false.
- Tipos de referencia(como los objetos) se inicializan en null.
- Tipos struct se inicializan para contener valores de cero.
+ Accesibilidad pública

No siempre es recomendable el utilizar el constructor predeterminado, por ejemplo, no siempre es bueno el hecho de que el acceso sea público o quizás sea un problema el hecho de que se inicialicen a 0 ciertos valores, así mismo el código invisible es dificil de mantener, el código del constructor predeterminado es invisible. Debemos recordar que aunque los constructores son tipos especiales de métodos eso no implica que no puedan ser sobrecargados.

Ejemplo:
class Persona
{
public Persona( ) //Constructor personalizado
{
Nombre = "";
Apellido = "";
Console.WriteLine("Objeto Construido");
}
public string ObtenerNombreCompleto()
{
return ( Nombre+" "+Apellido );
}
public string nombre
{
get{ return Nombre; }
set{ Nombre = value ; }
}
public string apellido
{
get{ return Apellido; }
set{ Apellido = value; }
}
private string Nombre,Apellido;
}

Algo importante es que podemos modificar la accesibilidad de un constructor.
Constructores privados: Se utilizan para evitar que los objetos se creen a partir de una clase especifíca, imaginemos que desea crear una clase que provea cierta funcionalidad, pero no desea que los usuarios de esa clase puedan crear objetos con base en ella, bueno en este caso ponemos metodos y variables estáticas dentro de la clase, en este caso ya no es necesario crear instancias de la clase (objetos), sin embargo el constructor predeteminado es public por predeterminación, lo cual implica que SI se pueden crear instancias de esa clase, aunque dichos objetos no tendrán ningún sentido ya que la clase está compuesta únicamente de métodos y variables estáticas, para evitar esto basta con modificar la accesibilidad del constructor haciendolo private impidiendo que se creen instancias de la clase. Al declarar un constructor C# no generará ningún constructor y al hacerlo privado evita que se creen instancias de esa clase.
Constructores estáticos: Se emplean para asegurarse de que una clase siempre es inicializada antes de utilizarse, esto nos asegura que la clase se encuentra en un estado inicial bien definido antes de utilizarse.

Destructores y Terminadores
Provocan que las acciones finales de los objetos sean diferentes y no pueden ser determinadas por recolección de residuos, así mismo todos los objetos en la plataforma .NET tienen un método de Finalizar, si está presente, la recolección de residuos llamará al Destructor antes de reclamar la memoria binaria, en C# no se puede llamar o sobrescribir Object.Finalize. Un destructor es un mecanismo de limpieza de memoria.


Finalización
Cuando el recolector de basura libera los recursos utilizados por un objeto no referenciado, verifica primero si la clase del objeto no tiene un destructor o método Finalize propio, si la clase cuenta con uno el será invocado antes de reciclar la memoría a la pila. Las instrucciones escritas en el destructor o método Finalize son únicamente para esa clase.

Destructores
En C# el método Finalize no está disponible de manera directa y no puede ser invocado y/o cancelado, se deberá colocar código para que sea ejecutado durante la finalización dentro de un estructor, dicho destructor tendrá el nombre de la clase antecedido por el simbolo ~. Ejemplo:
Puede escribir un destructor para implementar la limpieza de un objeto. En C#, el método Finalize no está disponible directamente, y no puede invocar o cancelar el método Finalize. Debe colocar código para que sea ejecutado durante la finalización dentro de un destructor.
class Persona
{
public Persona( ) //Constructor personalizado
{
Nombre = "";
Apellido = "";
Console.WriteLine("Objeto Construido");
}
~Persona()
{
Console.WriteLine("Objeto Destruido");
}
public string ObtenerNombreCompleto()
{
return ( Nombre+" "+Apellido );
}
public string nombre
{
get{ return Nombre; }
set{ Nombre = value ; }
}
public string apellido
{
get{ return Apellido; }
set{ Apellido = value; }
}
private string Nombre,Apellido;
}

Curso de Programación C #: Miembros estáticos y miembros de instancia

Miembros estáticos versus instancias
+ Los miembros estáticos los comparten todas las instancias de una clase
+ Los miembros de instancia pertenecen a instancias específicas de una clase
Es decir cuando declaramos una variable estática todos los objetos creados a partir de esa clase tendrán esa variable en común esto es útil por ejemplo en los sistemas bancarios, no es practico ni comodo el hecho de que cada objeto almacene el tipo de cambio es más practico que se declare estático y sea compartido por todos los objetos, ya que el tipo de cambio es el mismo para todos ellos, ejemplo:
class Cliente
{
static decimal tipoCambio;
}
Esto quiere decir que en lugar de declarar la variable tipoCambio a nivel de objeto la estamos declarando a nivel de clase, en un lenguaje estructurado esto lo convertiría en una variable global, con sus respectivas ventajas y desventajas, que es accesible a todos, pero a cambio una variable global no puede ser encapsulada, sin embargo los lenguajes orientados a objetos no permiten las variables globales, sin embargo tienen lo que se conoce como variables estáticas. Los datos estáticos se declaran dentro de clase beneficiandose de la encapsulación de la clase, pero están asociados con la clase misma y no con cada objeto, es decir que aunque nunca se genere un objeto esa variable ocupará espacio. Puede haber tanto variables como métodos estáticos y son compartidos por todas las instancias de la clase, es decir, son comunes a todos los objetos generados a partir de dicha clase. Ahi que tomar en cuenta algo muy importante Cuando un método se declara estático, dicho método SOLO es accesible a travéz de la clase y no a travéz de las instancias de la clase los métodos estáticos solo pueden ser accesados por los datos estáticos y por otros métodos estáticos, además debido a que son parte de la clase pueden ser accesados sin crear una instancia de la misma. En C# no se puede acceder a un método estático desde una instancia.
public class Cliente
{
public string nombreCliente;
public void consultaNombreCliente()
{
Console.WriteLine(nombreCliente);
}
public static string nombreBanco;
public static void consultaNombreBanco()
{
Console.WriteLine(nombreBanco);
}
}
Cliente miCliente = new Cliente();
miCliente.nombreCliente = "Alejandro Velazquez"; //Definó el nombre del cliente
miCliente.consultaNombreCliente(); //Esto imprimirá el nombre del cliente
Cliente.nombreBanco = "BANAMEX"; //Definó el nombre del banco
Cliente.consultaNombreBanco(); //Esto imprimirá el nombre del banco
El nombre del banco y la consulta al nombre del banco se realizan directamente a travéz de la clase, no pueden realizarse a travéz de las instancias de la clase, esto debido a que son variables estáticas, sin embargo el nombre del cliente y la consulta al nombre del cliente se realizan a travéz de las instancias de la clase, esto es especialmente útil debido a que en este ejemplo el nombre del banco es algo común a todos los clientes, porque todos son clientes del mismo banco, sin embargo, cada cliente tiene su propio nombre, así que lo que hicimos es declarar el nombre del banco y la consulta al nombre del banco estáticas con esto el dato se guarda una única vez en la clase y solo puede ser accedida a travéz de la clase, así mismo declaramos normalmente el nombre del cliente y la consulta al nombre del cliente ya que cada que creemos un objeto cliente será una persona diferente con un nombre diferente y por lo tanto el valor del campo cambiará en cada instancia.
Ahora veamos, hemos visto distintas formas de encapsular y manipular los datos, pero ¿Qué pasa si necesitamos acceder a un método o dato privado desde afuera?, bueno para eso existen las propiedades y son realmente utiles, las propiedades nos permiten manipular datos privados desde afuera de la clase, ejemplo:
class Persona
{
public string nombreCompleto()
{
Console.WriteLine(Nombre+" "+Apellido);
}
public string nombre
{
get{ return Nombre; }
set{ Nombre = value ; }
}
public string apellido
{
get{ return Apellido; }
set{ Apellido = value; }
}
private string Nombre,Apellido;
}
En este ejemplo se declaran dos variables privadas, Nombre y Apellido si intentaramos acceder a dichas variables desde el exterior de la siguiente manera:
Persona Alejandro = new Persona(); //Ja, ja, ja he vuelto a nacer... ;-)
Alejandro.Nombre = "Alejandro";
Alejandro.Apellido = "Velazquez";
Esto nos marcaría un error ya que dichos datos han sido declarados como privados y por tanto son invisibles desde afuera de la clase, lo que podemos hacer en cambio es accederlos a travéz de propiedades de la siguiente manera:
Alejandro.nombre = "Alejandro";
Alejandro.apellido = "Velazquez";
Alejandro.nombreCompleto();
El ejemplo se ve muy similar al anterior, pero ahí una sútil diferencia.
public string nombre //El nombre de la propiedad se parece al de la variable, solo cambia la primera letra, esto la hace fácil de recordar
{
get{ return Nombre; } //get nos permite recuperar el valor de la variable privada
set{ Nombre = value ; } //set nos permite modificar el valor de la variable privada
}
La propiedad llamada nombre nos permite modificar el valor de la variable privada llamada Nombre, pero va mas alla de eso, gracias a las propiedades podemos validar los datos y asegurarnos que son confiables antes de volcarlos sobre nuestras variables privadas y viceversa, asegurarnos que va a recibir el valor de la variable privada alguien que nosotros queremos que reciba el valor de la variable privada. Además las propiedades nos ayudan a proporcionar encapsulación. Ejemplo:
class Persona
{
public string nombreCompleto()
{
Console.WriteLine(Nombre+" "+Apellido);
}
public int edad
{
get
{
return Edad;
}
set
{
if( 0 < value && value < 100) //validamos que sea una Edad valida de acuerdo a nuestro criterio
Edad = value; //De ser asi modificamos el valor de la variable privada
}
}
public string nombre
{
get{ return Nombre; }
set{ Nombre = value ; }
}
public string apellido
{
get{ return Apellido; }
set{ Apellido = value; }
}
private int Edad;
private string Nombre,Apellido;
}
Utilizando el ejemplo anterior hemos agregado una variable nueva llamada Edad de tipo entero, ya que las edades no pueden ser negativas y como estamos asumiendo que ninguno de es casi imposible que nos topermos con una persona de 100 o mas años, pues condicionamos la propiedad para que solo acepte valores enteros que sean mayores que 0 y menores que 100, esta es un sencillo ejemplo de como utilizar las propiedades para validar las entradas suministradas por el usuario, esto es sumamente útil ya que nos ahorra muchos errores en tiempo de ejecución, así mismo nos permite tener una aplicación más segura.

Curso de Programación C #: Clases, Objetos, Encapsulacion

Clases
Lo primero que nos viene a la mente cuando leemos esto es ¿Qué es una clase? e inmediatamente después de eso nos preguntamos ¿Para qué sirve una clase?, bueno una definición de clase sería que es una representación abstracta de un objeto, pero esto nos deja con bastantes interrogantes, veamoslo en español, je, je, je, un objeto puede ser cualquier cosa, por ejemplo una casa, la clase es la reprentación abstracta del objeto, en este caso serian los planos de la casa, en ellos la casa se ve representada por completo, ya que en el plano podemos ver que tendrá la casa, donde lo tendrá, como estará hecho, más sin embargo no podemos sentarnos en las escaleras del plano de la casa porque la casa aún no existe, la clase es solo el plano del que después podremos construir el objeto, más sin embargo una clase por si sola no nos es de utilidad en lo absoluto hasta que la convertimos en un objeto, es decir no podemos habitar el plano de una casa, necesitamos construirla es decir construir el objeto, a dicho proceso de construcciòn se le llama instancia. Ejemplo:
class Casa
{
decimal Altura;
decimal Ancho;
decimal Profundidad;
string Color;
void Entrar();
void Salir();
}
Ahora tenemos un ejemplo mas formal de lo que sería una clase, en este ejemplo declaramos una clase llamada Casa, una Casa en la vida real tiene diversas caracteristicas o "Atributos", la clase guarda dentro de si tanto los atributos de la Casa como la forma en que se comportara, dicho comportamiento define como reaccionara ante otras clases. Una vez que se ha definido la clase Casa TODA clase que heredase de ella tendria todas las caracteristicas de nuestra Casa original.
Objetos
Un objeto es la consolidación de una clase, retomando el ejemplo de la casa, deciamos que los planos de la Casa serian la Clase casa, es decir la representación abstracta del objeto miCasa, pero para que podamos utilizar la clase Casa necesitamos instanciarla, la instancia es el proceso de construir la Casa. Ejemplo:
class Casa
{
decimal Altura;
decimal Ancho;
decimal Profundidad;
string Color;
void Entrar();
void Salir();
}
Tomando como Base la Clase Casa ahora lo que haremos sera declarar miCasa del tipo Casa. Ejemplo: Casa miCasa = new Casa();
Quiza sea un poco dificil de captar al principio, pero en realidad es de lo mas sencillo, miren toda clase es un tipo de datos es decir, en el mundo real existen numeros no decimales menores a cierto tamaño, bueno en C# se creo una clase llamada int para representarlos de manera abstracta, es por esto que cada que declaramos un entero declaramos:
int miNumero = 0;
tipo nombre valor
Pero porque usamos new y los (), bueno, porque en el caso de los enteros(int) simplemente contienen un dato y no hacen nada mas son simples contenedores, sin embargo las clases que a nosotros nos interesan y que son las que estaremos creando deben actuar de distintas maneras, ya sea leyendo bases de datos, actualizando paginas web, realizando operaciones matematicas, etc., es por esto que se utiliza el operador new, eso nos permite mandarle datos a la clase que hemos creado, supongamos que nuestra clase Casa acepta 3 parametros, Nombre del dueño, Precio y Si esta a la venta o no, bueno pues en ese caso podriamos inicializar nuestra casa asi:
Casa miCasa = new Casa("Jorge","$1,408,506","SI");
Estos parametros de entrada provocan que el objeto "reaccione" realizando una serie de acciones, como por ejemplo, publicar la casa en un sitio web de venta de casas, es un ejemplo sencillo, pero que nos da una idea de como reaccionan los objetos. Una caracteristica de los objetos es que presentan siempre 3 caracteristicas: Identidad, Comportamiento y Estado.
+ Identidad: Nos permite distinguir a un objeto de los demás obejtos en la misma clase, por ejemplo imaginemos que tenemos una casa igual que la de nuestro vecino, como en los conjuntos habitacionales donde todas las casas son iguales en ese caso el Número de casa es lo que nos distingue, porque aunque tuvieran el mismo color, los mismos arreglos al frente, etc., 2 casas no pueden tener el mismo numero.
+ Comportamiento: Esto hace utiles a los objetos, ya que los objetos existen para hacer algo, si los objetos no hicieran nada no tendría chiste crearlos, el comportamiento hace accesible a un objeto, asi mismo los objetos que vienen de una misma clase comparten el mismo comportamiento, por ejemplo, una Casa es una Casa porque se puede habitar, un Carro es un Carro porque se puede manejar, etc.
+ Estado: Tiene que ver con el funcionamiento interno de una clase, dicho funcionamiento interno es el que le permite proporcionar su comportamiento. Un objeto bien diseñado mantiene inaccesible su estado, esto es porque a uno no le interesa como le hace un objeto para hacer lo que hace, a uno simplemente le interesa que lo haga.
Para diseñar objetos es importantisimo tomar en cuenta lo siguiente:
+ Decidir lo que es importante y lo que no, es decir, enfocarse en lo que es importante y depender sólo de ello.
+ Ignorar lo que no es importante y no depender de ello, basandonos en el principio de Dependencia mínima
+ Utilizar la Encapsulación para aplicar la Abstracción.
Es fácil quedar abrumado ante la inmensa cantidad de atributos y comportamientos que puede tener un objeto es por ello que es de vital importancia concentrarse tan solo en aquello que es importante, si en los planos se incluyeran detalles de donde pondrá la lavadora, la t.v., donde encadenará al perro, donde estará el clavo para sujetar su reloj, etc., sería increiblemente tedioso y abrumador el representarlo, es por esto que solo se debe uno concentrar en los detalles que REALMENTE importan, a eso se le llama abstracción. La abstracción es una técnica que nos permite quitarle a un objeto todos aquellos comportamientos que son innecesarios hasta que el objeto solo tiene dentro de si aquellos comportamientos que son esenciales para su funcionamiento, una buena abstracción elimina todos los detalles poco importantes y le permite enfocarse y concentrarse SOLO en los detalles importantes. Debemos recordar que un objeto deberá siempre aplicar el concepto de Dependencia mínima por motivos de encapsulación la dependencia mínima permite que las cosas complejas sean simples, esto se logra al ocultar los aspectos no esenciales de una clase, estos aspectos una vez ocultados, no se pueden ver ni utilizar.

Encapsulación
+ Combinar datos y métodos en una entidad única
+ Controlar el acceso a los datos y los métodos
- Público Accesible desde fuera
- Privado Accesible solo desde adentro
Pero ¿Porqué es útil encapsular?, sencillo, la encapsulación minimiza el impacto, es decir si algún día nos vemos en la necesidad de actualizar algunas clases de nuestro programa, entre menos dependamos de una clase menos impacto tendrá el hecho de que se cambie, así mismo nos permité esconder los detalles de implementación de nuestro programa, lo que aumenta su resistencia a ataques, esto debido a que al declarar metodos y/o variables como privadas las ocultamos y dejan de ser visibles para las demas clases.

Creación de una Clase Sencilla
class Persona
{
public int Edad;
public string Nombre;
private string Direccion;
}
Lo que hacemos es declarar dos variables publicas que pueden ser accedidas sin problemas desde el exterior y una variable privada que solo puede ser utilizada por miembros de la clase, ahora para utilizar nuestra clase persona necesitamos crear una persona:
Persona Alejandro = new Persona(); //Acabo de nacer, ¿como ven?, je, je, je
Alejandro.Edad = 22;
Alejandro.Nombre = "Alejandro Domingo Velazquez Cruz";
Recordemos que cada objeto se trata por separado, es decir por referencia, lo cambios que realicemos a cualquier otra persona que creemos no afectaran a Alejandro, por ejemplo:
Persona Carmen = new Persona();
Carmen.Edad = 21;
Carmen.Nombre = "María del Carmen Lopez Villegas";
Alejandro.Nombre sigue siendo Alejandro Domingo Velazquez Cruz y Carmen.Nombre es María del Carmen Lopez Villegas y los cambios que realicemos a cualquiera de ellos no afectan al otro en lo absoluto. Ahora veamos si nosotros pusieramos algo así:
Alejandro.Direccion = "Norte 5";
El compilador marcaría error, ya que esa variable solo puede ser accedida desde adentro de la clase, ya sea por medio de algún método público o declarando un atributo público para permitir el acceso a ese dato, es decir, nosotros sabemos que existe la variable porque nosotros hemos hecho la clase, pero sin embargo no se puede acceder a esa variable, ni siquiera sabiendo que existe, a esto se le llama ocultamiento, ya que la variable queda "oculta" a las demás clases, podemos ocultar tanto variables como métodos e inclusive se pueden ocultar clases. Por último hemos aprendido a crear objetos, pero y ¿Comó destruirlos?, bueno C# hace uso de la recuperación automatica de memoría gracias a su Recolector de Basura, lo más que podemos hacer es marcar un objeto para indicar que ya puede ser recolectado, esto generalmente no es necesario, ya que el Recolector de Basura detecta cuando un objeto ya no está siendo utilizado porque no ahi ningún otro objeto que tenga su dirección, pero eso lo veremos después.

Curso de Programación C #: Metodos, Manejo de Excepciones

Métodos
Los métodos son miembros de las clases y pueden realizar una serie de acciones, o devolver un valor ya sea que tengan que calcularlo o no. Pueden recibir o no parametros y pueden devolver o no devolver parametros.
+ Declaración:
tipoRetorno + NombreDelMétodo + [Parámetros] + { cuerpo }
+ Ejemplo:
int Suma(int numero1, int numero 2)
{
return numero1 + numero2;
}
+ Uso:
[valor de retorno] miMétodo([Parametros]);
+ Ejemplo:
resultado = Suma(numero1,numero2);
Los métodos pueden recibir diversos valores desde el exterior, de hecho pueden recibir tantos valores como sea necesario, los valores que se le pasan a un método pueden ser por valor o por referencia, los valores que un método recibe por valor, los recibe como una copia del dato que puede modificar a su gusto sin que se vean afectadas las demás copias de dicho dato, en cambio los valores que un método recibe por referencia son las direcciones a donde se encuentra el dato, al cambiar el dato que ahí donde una de estas referencias apunta cambia el valor para todos aquellos que lo estan utilizando, un ejemplo muy sencillo de esto es, en el mundo real un paso de valor por referencia se da si tenemos apuntada la dirección de un amigo, dicha dirección es una referencia al lugar donde vive, es por eso que si vamos al lugar donde apunta la referencia nos encontraremos en la casa de nuestro amigo, una vez allí, si rompemos un vidrio cualquier persona que llegue a ese lugar encontrara la ventana rota, en cambio con los pasos de parámetro por valor se tiene una copia del objeto en si, es decir, en el ejemplo anterior en vez de haber tenido una dirección, habría tenido una casa exactamente igual a la de mi amigo, por lo que si hubiera roto un vidrio, solo mi casa se habría visto afectada. En C# si pasamos un valor a un método se pasa por valor a menos que se le indique lo contrario. Debemos recordar que no ahi limite al número de parámetros que puede recibir o devolver un método pero si no se va a recibir o a devolver ningún valor se puede usar la palabra void para indicarlo. En C# los métodos son sumamente flexibles, es por esto que podemos devolver múltiples valores y nos permite sobrecargarlos, las palabras claves ref y out son las que nos permiten que un método retorne más de un valor al método que lo invoco. La sobrecarga de métodos nos permite que un método se comporte de manera diferente en función al tipo de parametros que recibe y/o del número de argumentos que le acompañan. Ejemplos de sobrecarga de métodos:
int i1=2,i2=3;
float f1=2.14,f2=5.25;
int suma( int n1, int n2 ) //Método 1
{
return n1+n2;
}
float suma( float n1, float n2 ) //Método 2
{
return n1+n2;
}
float suma( int n1, float n2 ) //Método 3
{
return n1+n2;
}
resultado = suma(i1+i2); //Llamada 1
resultado = suma(f1+f2); //Llamada 2
resultado = suma(i1+f1); //Llamada 3
En este ejemplo en ninguno de los casos ahi perdida de precisión debido a que el método haciendo uso de la sobrecarga se adapta a los parametros que recibe y actúa en consecuencia a ello, es decir si el método suma recibe dos enteros como en la llamada 1 devuelve un número entero empleando para ello el método 1, si recibe dos flotantes devuelve un flotante utilizando para ello el método 2 y si recibe primero un flotante y luego un entero responde utilizando el método 3.

Manejo de Excepciones
C# proporciona soporte integrado para el manejo de excepciones o de una forma más formal situaciones anómalas de funcionamiento, las cuales pueden ocurrir en cualquier momento durante la ejecución del programa y son manejadas por el código que se encuentra fuera del flujo normal de control. Todo esto gracias a las palabras clave try, throw, catch y finally. C# proporciona una solución estructurada tanto a nivel del sistema como de aplicación. A pesar de que es muy similar a C++ en cuanto al manejo de excepciones existen varias diferencias, entre ellas que cada excepción esta representada por una instancia de un tipo de clase derivado de System.Exception. en realidad es algo bastante simple:
try
{
has esto...
si i = 0 throw una excepción
}
catch
{
si fallo has esto...
}
finally
{
haya fallado o no, has esto...
}
Como se puede apreciar el manejo de excepciones es bastante sencillo y fácil de entender aunque no tengamos mucha experiencia programando, todo aquello que se puso entre las {} del try es un segmento de código en el que puede o no generarse un error en tiempo de ejecución(excepción), en caso de que haya habido un funcionamiento anómalo en el programa(excepción) la ejecución del código entra en el segmento de código catch y ejecuta el bloque de instrucciones que hemos definido para manejar ese error, finalmente el flujo del programa haya o no habido excepción entra en finally aqui podemos poner rutinas para marcar los objetos que ya no se utilizarán de manera que el recolector de basura pueda liberar la memoria que dichos objetos ocupaban, rutinas que guarden un log de la aplicación para llevar un control de ¿cuántas veces ha fallado?, ¿porqué fallo?, etc., todo bloque try puede tener uno o más catch para tratar cada una de las posibles excepciones, pero la flexibilidad de C# va más alla de eso, ya que nos permite lanzar nuestras propias excepciones, por ejemplo si un método no recibe un valor que debe recibir o recibe un valor que no puede procesar podemos lanzar nuestra propia excepción. Ejemplo:
using System;
public class ManejoExcepciones
{
public static void Main()
{
try //Le hacemos saber que puede ocurrir un error
{
string s=null; //Declaramos un string y lo dejamos vacio
if (s == null) //Si el string esta vacio
throw(new ExcepcionCadenaVacia()); //Lanzamos un error personalizado
Console.WriteLine("Esto nunca se imprime"); //Si ahi error el código sale de la ejecución normal
//es por eso que esta parte nunca se ejecuta
}
catch( ExcepcionCadenaVacia e ) //Atrapamos nuestro error
{
Console.WriteLine("La cadena esta vacia"); //Manejamos el error
}
finally
{
Console.WriteLine("Esto siempre se imprime"); //Esto siempre se ejecutará
}
}
}
NOTA IMPORTANTE: El código que se encuentra en los capitulos del curso no es siempre funcional. Para código funcional consulte la sección de ejercicios resueltos.

Curso de Programación C #: Conversion de Tipos de Datos

Conversión de Tipos de Datos en C#
Las conversiones nos permiten que una expresión de un tipo sea tratada como una expresión de otro tipo, dichas conversiones pueden ser implícitas o explícitas, por ejemplo la conversión de un tipo int a long es implícita, sin embargo la conversión de un tipo long a un tipo int es explícita, esto debido a que un int puede ser expresado en formato long sin que haya perdida de precisión en la operación, sin embargo si intentamos convertir un numero long a int puede haber perdida de precisión y se necesita una conversión explícita, es como una forma de obligarnos a demostrar que estamos conscientes de que existe tal perdida de precisión y en verdad es muy útil.
+ Conversión Implícita
- No requiere sentencias adicionales
- Puede perder precisión, pero no magnitud
+ Conversión Explícita
- La define el usuario utilizando la expresión (cast)
- El operador "as" la convierte a un valor de tipo específico
- Utilizar operadores "checked" y "uncheked"
Ejemplo:
int miNumero = 13;
float miOtroNumero = miNumero;
En este caso no es necesaria una conversión explícita debido a que un número int puede ser expresado sin ningún problema.
float miNumero = 13.5;
int miOtroNumero = (int) miNumero;
En este caso si es necesaria una conversión explícita debido a que un número float no puede ser expresado en int sin que haya perdida de precisión, en este caso si ejecutaramos la siguiente instrucción: Console.WriteLine("Numero Float:{0} Numero Int:{1}",miNumero,miOtroNumero); se imprimiría en pantalla Numero Float: 13.5 Numero Int: 13 ahi podemos apreciar con claridad la perdida de precisión debido a que se trunca todo aquello que se haya después del punto, cabe hacer la aclaración que no se redondea, es decir no se eleva al entero más próximo, sino que se trunca.

Operadores "checked" y "unchecked"
Los operadores checked y unchecked, se utilizan para controlar la verificación de ovewflow, de operaciones y conversiones aritméticas.
+ Expresión Verificada:
- checked ( expression )
+ Expresión no Verificada:
- unchecked ( expression )

Estructuras de Datos
+ Declaración:
struct + nombreEstructura + { miembros };
+ Uso:
- Primero declaramos la estructura:
struct coordenada
{
int x; int y;
}
- Después declaramos un objeto de ese tipo:
coordenada miCoordenada;
- Y accesamos a los elementos usando el operador . :
miCoordenada.x = 1;
miCoordenada.y = 2;
Un tipo de estructura es un tipo de valor y puede crear constantes, campos, métodos, propiedades, índices, operadores, constructores de instancias, constructores estáticos y tipos anidados.
Diferencias entre clases y estructuras
+ Estructura
- Contiene datos simples
- Tipo de Valor
+ Clase
- Objeto enriquecido con referencias
- Tipo de Referencia
Ahi pocas diferencias entre estructuras y clases, pero son realmente significativas, las estructuras sirven para representar conjuntos de datos y pueden contener datos y funciones, sin embargo las estructuras son tipos de valor y no requieren espacio en la pila, ya que los datos están contenidos directamente en la estructura, mientras que una variable en una clase contiene una referencia a los datos, esto es lo que se conoce como objeto.

Enúmerados
Una declaración enum declara un nuevo tipo enumerado e inicia con la palabra clave enum y define el nombre, la accesibilidad, el tipo y los miembros del enumerador. Cada tipo de enumerador tiene un tipo, dicho tipo debe poder representar todos los valores de numerador definidos en la enumeración. Un enumerado puede declararse de manera explícita un tipo como byte, sbyte, short, ushort, int, uint, long o ulong, cualquier enumerado que no indica de manera explícita su tipo es int.
+ Declaración:
enum + nombreDelEnumerado + { valores }
+ Ejemplo:
enum Color{ blanco,rojo,azul,verde };
+ Uso:
Color miColor;
miColor = Color.blanco;
miColor = (Color) 1;

Arreglos
Los arreglos son una colección de elementos o de objetos todos del mismo tipo y que se encuentran indexados para poder acceder a ellos de una manera sencilla, son realmente faciles de usar, ahi diferentes tipos de arreglos Ahi dos formas de declarar arreglos en C#
+ Declaración con tipo y forma pero sin límites
- int[] unidimensional;
- int[,] bidimensional;
- int [][] jagged;

NOTA: Los arreglos del tipo jagged son arreglos de arreglos.
+ Declaración utilizando new con límites o inicializadores
- unidimensional = new int[20];
- bidimendional = new int[20,20];
- jagged = new int[10][];
- jagged[0] = new int[][10];

Curso de Programación C #: Instrucciones Condicionales, de Iteracion, Operaciones Basicas de Entrada/Salida

Instrucciones Condicionales
Las instrucciones condicionales o de selección se utilizan para determinar que código se debe ejecutar y cuándo se debe ejecutar. C# incluye dos instrucciones de selección la instrucción if que ejecuta código en base a una condición lógica y la instrucción switch que ejecuta código con base en un valor, pero debes tomar en cuenta que al utilizar la instrucción switch, puede especificar que se devuelva un valor numérico y una o más partes de código, que se ejecutarán dependiendo del resultado de la expresión.
Instrucción IF
Si la(expresión)
hacer esto...
de lo contrario
hacer esto otro...
EjemplO:
if( i== 0 )
Console.WriteLine("No ahi datos");
else
Console.WriteLine("Si ahi datos");
Instrucción SWITCH
Compara(variable)
caso variable=1: hacer esto...
terminar
caso variable=2: hacer esto...
terminar
caso no_coincidio: hacer esto...
terminar
Ejemplo:
switch(i)
{
case 0: Console.WriteLine("No hubo inscritos");
break;
case 1: Console.WriteLine("Si hubo inscritos");
break;
default: Console.WriteLine("No se introdujo un numero valido");
break;
}

Instrucciones de Iteración
Las instrucciones de iteración permiten realizar una serie de operaciones una y otra vez mientras una condición dada se cumpla, en el caso de la instrucción while, el bloque de intrucciones se ejecutará mientras la expresión se cumpla, esto nos permite entrar al ciclo solo si la expresión da el valor que permita la entrada al ciclo, caso contrario no ejecutara ni siquiera una vez, a diferencia del while el do-while se ejecuta al menos una vez ya que la comparación de la condición se realiza al final, esto es sumamente útil para imprimir menús y pantallas que deben ser ejecutadas AL MENOS una vez mientras que el while nos permite evalua la condición primero y entonces entrar al ciclo. Además de estas dos instrucciones también tenemos el ciclo for que nos sirve principalmente para evaluar condiciones númericas donde una variable se va a estar incrementando continúamente, cabe destacar que un ciclo se usa en lugar de otro más que nada por comodidad, ya que todo ciclo for puede ser convertido en while, todo ciclo while puede ser adaptado a un do-while y todo do-while portado a for, bueno al menos esa es mi experiencia personal.
Instrucción WHILE
Mientras(expresión)
hacer esto...
Ejemplo:
while( i<10 )
{
i++;
}
Instrucción DO-WHILE
Hacer
esto...
Mientras(expresión)
Ejemplo:
do
{
i++;
}while(i<10);
Instrucción FOR
Para i = 0 mientras i<10 aumentar i++
hacer esto...
Ejemplo:
for( i=0 ; i<10 ; i++ )
{
Console.WriteLine(i);
}
A continuación está un ejemplo de la iteración FOREACH, esta es algo nuevo a lo que algunos programadores pueden no estar familiarizados y nos sirve para recorrer arreglos, la instrucción se ejecutará en todos y cada uno de los elementos del arreglo.
Instrucción FOREACH
por cada perro en miArregloDePerros[]
hacer esto...
Ejemplo 1:
foreach( perro miPerro in miArregloDePerros )
{
Console.WriteLine(miPerro.nombre);
}
Ejemplo 2:
foreach( int miEntero in miArregloDeEnteros )
{
Console.WriteLine(miEntero.valor);
}

Operaciones básicas de entrada/salida
+ Utilizan la clase Console
- Read: Lee el siguiente carácter de la entrada estándar.
- ReadLine: Lee la siguiente línea de caracteres de la entrada estándar.
- Write: Escribe la información específica en la salida estándar.
- WriteLine: Escribe los datos especificados, seguidos de un terminador de línea actual, en la salida estándar.
La clase Console no se puede heredar y ofrece un soporte básico para las aplicaciones que leen y escriben caracteres en la consola. Si la consola no existe como es el caso de las aplicaciones basadas en Windows, las escrituras a la consola no se despliegan en pantalla y ninguna excepción es generada. La entrada estándar o predefinida para la consola es el teclado y la salida predefinida es el monitor todo esto se lleva a cabo usando las propiedades IN, OUT y ERROR.

Curso de Programación C #: Estructura de un Programa

Estructura de un Programa en C#
- Un programa en C# es una colección de Clases, Estructuras y Tipos
- Dichos elementos pueden residir en uno o varios archivos
- Todo es un objeto
- C# diferencia Mayusculas y Minusculas
- Utiliza los espacios de nombre para organizar las clases
Debemos recordar que una clase es una conjunto de propiedades y los métodos para utilizarlas. Los elementos pueden residir en uno o más archivos, y un archivo puede contener una o todas las clases que integran una aplicación, asi mismo en C# todo es un objeto, esto gracias a que el lenguaje ha sido rediseñado por completo para permitir usar esos objetos como componentes de la aplicacion. El proceso en realidad es muy simple, al compilar una aplicacion C# la aplicacion no se compila directamente a lenguaje maquina, sino que se compila a codigo intermedio de Microsoft o MSIL, al ejecutar, este MSIL es el que vamos a distribuir, al usarse una funcion esa y solamente esa funcion se compila a codigo nativo, esto es lo que nos permite olvidarnos de la plataforma, de una manera similar a Java, aunque la diferencia radica en que Java siempre se interpreta a partir de su codigo intermedio, en cambio el MSIL se convierte a codigo nativo antes de ser utilizado, esto permite que las funciones se vayan compilando conforme se vayan utilizando minimizando el impacto al usuario, interesante ¿verdad?.

Método Principal Main
- Es el punto de inicio de la aplicacion
- Puede devolver void
static void Main()
- Puede devolver int
static int Main()
- Puede tomar argumentos
static int Main(string[] args)
En C# todas las aplicaciones deben tener un punto de inicio, que es el método Main, en Main es donde se crean los objetos y se ejecutan otros métodos, es un método estático que reside dentro de una clase o estructura y solo puede haber un Main por aplicación. El método Main puede o no recibir argumentos, dichos argumentos los recibe en forma de un array de strings unidimensional y contiene los argumentos que el programa recibe al ser invocado en la linea de comandos. En resúmen un programa en C# se ve más o menos así. using System;
namespace Day1
{
///
/// Introducction to C# programming - Day 1
///
class Example
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Hola Mundo");
}
}
}

Tipos Predefinidos
En C# existen 2 tipos predefinidos:
- Tipos por Valor:
- Contienen una copia de los Datos que utilizan
- Las operaciones que uno realiza con su copia no afectan las copias de los demas


- Tipos por Referencia:
- Contienen referencias a los Datos que utilizan
- Dos o mas referencias pueden apuntar al mismo objeto
- Las operaciones que uno realiza afectan a los demas

Todos los tipos se definen en el espacio de nombre System, todos los tipos se derivan de System.Object y los que son por valor derivan de Syste.ValueType.

Common Type System
Es el Sistema Comun de Tipos de la plataforma .NET(CTS), se encarga de definir la manera en que se declaran, utilizan y administran los tipos de datos en tiempo de ejecución, sin el sería posible la integración entre lenguajes, ya que aunque VB.NET y C# usan enteros de 32 bits la forma en que los representan y almacenan podria ser drasticamente diferente sino fuera porque utilizan el CTS. El CTS, lleva a cabo las siguientes funciones:
- Establece un marco que permite la integración entre lenguajes, la seguridad de tipos y una ejecución de código de alto rendimiento.
- Proporciona un modelo orientado a objetos que soporta la implementación completa de muchos lenguajes de programación.
- Define las reglas que deben seguir los lenguajes, lo cual ayuda a asegurar que los objetos escritos en diferentes lenguajes pueden interactuar entre sí.

Declaración de Variables
+ Declaración Sencilla
- tipo_variable nombre_variable;
+ Declaración Multiple
- tipo_variable nombre_variable1, nombre_variable2, ... nombre_variablen;
NOTA: No se pueden utilizar variables no inicializadas.
Una variable puede inicializarse al momento de ser declarada, ejemplo:
int miEntero=0;
o puede inicializarse después en el código, ejemplo:
int miEntero; miEntero = 2;

Curso de Programación C #: Introduccion a la plataforma .NET y Estructura Basica de un Programa en C#

Curso Básico de programación en C#, este curso básico abarcará desde las bases del lenguaje hasta nuestros primeros pasos con aplicaciones web, acceso a bases de datos de access, sql, etc, asi como muchas cosas mas...(Este curso y más como este, los puedes encontrar en Mailxmail.com).

¿Qué es la plataforma .NET?
Es la Base de la nueva generacion de software en la cual los Servicios Web son un medio que permitira a distintas tecnologias interoperar entre si, asi como conectar diversos sistemas operativos, dispositivos, informacion y usuarios dando a los desarrolladores las herramientas y tecnologias necesarias para desarrollar soluciones de negocios de manera rapida sin importar que involucren diversos medios y tecnologias. En la plataforma .NET el software es mas concretamente de servicio y se aboca a construir, instalar, consumir, integrar o agregar de manera federada servicios que pueden ser accedidos mediante Internet, la idea central es que un usuario de Internet con un explorador pueda acceder a contenidos, no solo en forma de texto, imagenes o sonido, sino tambien pueda hacer uso de Servicios Web, los cuales se utilizan como bloques de construccion en este nuevo modelo de computacion distribuida en internet. El punto central es que los usuarios deben poder acceder a la funcionalidad que los servicios Web Proveen desde cualquier dispositivo, sistema operativo y ubicacion geografica.

Componentes de la plataforma .NET
Estamos en el umbral de una nueva era de Internet, el Internet "inteligente" que permite que los servicios sean ejecutados e invocados desde cualquier dispositivo y sistema operativo, para su acceso mediante Internet, asi mismo los sitios podran comunicarse entre si y acceder a servicios y contenidos sin necesidad de intervencion humana. Es por eso que la plataforma .NET no es un producto, sino un conjunto de ellos que de manera conjunta proporcionan una solucion al problema, sus componentes principales son:
Clientes Inteligentes: Son dispositivos muy variados. Lo que los hace inteligentes es su capacidad para hacer uso de servicios Web. Pueden ser Computadoras de Bolsillo, personales, portatiles, Telefonos Inteligentes, Handhelds e incluso consolas de juegos como XBOX
Servidores: Proveen de la infraestructura para implementar el modelo de computación distribuida en Internet. Son sistemas operativos y de aplicación.
Servicios Web basados en XML: Son los bloques de construcción de la tercera generación de Internet. Permiten a las aplicaciones compartir datos y estan basados en XML.
Herramientas de desarrollo: Visual Studio .NET y el .NET Framework. Ambos permiten al desarrollador hacer servicios Web basados en XML además de otro tipo de aplicaciones. El .NET Framework viene incorporado directamente en la nueva línea de sistemas operativos Windows .NET. Para los dispositivos móviles se llama .NET Compact Framework.

El Common Language Runtime
Es el encargado de proveer lo que se llama código administrado, es decir, un entorno que provee servicios automáticos al código que se ejecuta. Los servicios son variados:
Cargador de Clases: Permite cargar en memoria las clases.
Compilador MSIL a nativo: Transforma código intermedio de alto nivel independiente del hardware que lo ejecuta a código de máquina propio del dispositivo que lo ejecuta.
Administrador de Código: Coordina toda la operación de los distintos subsistemas del Common Language Runtime.
Recolector de Basura: Elimina de memoria objetos no utilizados.
Motor de Seguridad: Administra la seguridad del código que se ejecuta.
Motor de Depuración: Permite hacer un seguimiento de la ejecución del código aún cuando se utilicen lenguajes distintos.
Verificador de Tipos: Controla que las variables de la aplicación usen el área de memoria que tienen asignado.
Administrador de Excepciones: Maneja los errores que se producen durante la ejecución del código.
Soporte de multiproceso (threads): Permite ejecutar código en forma paralela.
Empaquetador de COM: Coordina la comunicación con los componentes COM para que puedan ser usados por el .NET Framework.
Soporte de la Biblioteca de Clases Base: Interfaz con las clases base del .NET Framework.

Estructura de un Programa C#
Un programa en C# es una coleccion de clases, estructuras y tipos
Estos elementos pueden residir en uno o varios archivos
Todo es un objeto
C# diferencia entre mayusculas y minusculas
Utiliza los espacios de nombre para organizar las clases
El metodo principal de toda aplicacion hecha en C# es Main, el cual es el punto de inicio de la aplicacion y puede o no devolver y recibir o no valores. Todas las aplicaciones hechas en C# deben tener un punto de inicio, excepto las aplicaciones Web que tienen una pagina de inicio. Los parametros que puede recibir main representa los parametros utilizados para invocar el programa y se organizan en un array de tipo string unidimensional.
Asi mismo existen 3 formas de introducir comentarios en el codigo de nuestra aplicacion: // que sirve para introducir un comentario de una sola linea, /* comentario */ que sirve para introducir un bloque de comentarios, todo aquello que se ponga entre los dos asteriscos sera considerado como un comentario y ///Resumen que nos permite generar documentacion en formato XML.
Para finalizar nuestro primer dia haremos el clasico ejemplo aburrido pero clasico al fin y al cabo que todo buen curso de programacion debe enseñar primero, je, je, je, lo se, a mi me enseñaron con "hola mundo" y este es el momento de desquitarme, je, je, je, nada personal ;-).

using System;
namespace HolaMundo
{
///
///Este es un comentario para generar una documentacion XML
///
class HolaMundo
{
[STAThread]
static void main( string[] args )
{
Console.WriteLine("Hola Mundo");
}
}
}

Un chiste informático:Como explicar el nacimiento de un bebe en el S.XXI

COMO EXPLICAR EL NACIMIENTO DE UN NIÑ@ EN EL SIGLO XXI

...... las abejas, las flores, la semilla en la
tierra....................eso esta desfasado

SEAMOS MODERNOS.


Un bonito dia, un hijo le pregunta a su padre:

- Papa, como naci yo?
- Muy bien hijo, algun dia debiamos hablar de esto y te voy a explicar
lo que debes saber:

Un dia, Papa y Mama se conectaron al Facebook.
Papa le mando a Mama un e-mail para vernos en un cybercafe.
Descubrimos que teniamos muchas cosas en comun y nos entendiamos muy
bien.
Papa y Mama decidimos entonces compartir nuestros archivos.
Nos metimos disimuladamente en el W.C y Papa introdujo su Pendrive en
el puerto USB de Mama.
Cuando empezaron a descargarse los archivos nos dimos cuenta que no
teniamos Firewall.
Era ya muy tarde para cancelar la descarga e imposible de borrar los
archivos.


Asi es, que a los nueve meses.........................Aparecio el VIRUS

(sacado de Webalia.com y enviado por Enviado por Amélie Poulain el 30/10/2009 a esa misma web)

lunes, 14 de diciembre de 2009

Crear una Web:Aspecto de la Página

Ya tenemos nuestra web lista y sólo nos queda darle un aspecto más atractivo o más acorde con la tematica de nuestra web,aplicarle color o una imagen de fondo.En el menú Formato podemos modificar las propiedades de colores de la página y controlar estas propiedades.

Color de Fondo
Es el color de la página.Podemos usar cualquier color, pero debemos tener cuidado al elegir el color del texto para que sea claramente legible. Debemos tener en cuenta que algunas combinaciones resultan molestas (negro sobre negro,amarillo sobre rojo,...) y dan una muy mala impresion al lector de nuestra web.

Por fortuna los colores  podemos manipular los colores a nuestro gusto a traves del menú Formato ->Colores y fondo de la página que hace aparecer un cuadro de dialogo.
Para personalizar los colores basta con marcar el control Usar colores personalizados.

Son colores modificables:
Texto normal->Texto de la página
Texto de enlace->Color de los enlaces
Texto de enlace activo->El enlace activo
Texto de enlace visitado->Enlaces ya visitados
Fondo->Fondo de la página

Al pulsar sobre el cuadro de color se abre el cuadro de selección de colores. Elige el color que quieras y verás el resultado en la ventana de la derecha del cuadro de diálogo. Ojo! los textos de los enlaces continuarán estando subrayados, solo cambias su color.

Imagen de Fondo
Para poner una imagen de fondo ve a la parte inferior del cuadro de dialogo y pulsa sobre elegir archivo o escribe en el campo la dirección de una imagen. En la ventana de muestra verás como queda la imagen. Ten encuenta que la imagen se repetirá para ocupar todo el fondo de la página.

Crear una Web:Enlaces Internos

Ya sé que son  los enlaces, los vinculos o los hiperenlaces.Ahora quiero saber como los pongo en mi web.

Perfecto.Acabas de dar con el paso primordial para que nuestro sitio web esté completo:Hacer un conjunto de paginas y que estén conectadas entre si. En posts anteriores hemos visto que existen diferentes tipos de enlaces.
En este vamos a ver como se crean y las formas de enlace que podemos poner en nuestra web.


Enlaces Internos
Un enlace interno nos permite ir de una a otra parte de la página de forma rápida y sin tener que usar el scroll del navegador. Algo muy útil si tenemos la página organizada en apartados y queremos tener un índice de esos apartados.
Para usarlos lo primero que debemos hacer es crear los puntos de destino o anclas, en los puntos de la página a los que queramos saltar.

Anclas
Son puntos de destino definidos en nuestra página a los que podemos llegar directamente a esos puntos pulsando un enlace interno. Sirven para organizar una página en apartados.

Colocar anclas

El primer paso es colocar las anclas, para ello situamos el cursor en el lugar exacto donde queremos situar el destino de nuestro enlace interno(donde queremos colocar el enlace).
Una vez situado en el lugar elegido pasamos a situar el ancla para lo cual pulsamos el botón enlace interno que tenemos en la barra de botones.
Botón enlace internoO bien usamos la opción enlace interno que tenemos dentro del menu insertar.


Enseguida nos aparece una ventana:"Propiedades del enlace interno" donde podemos identificar el destino.

En una misma página podemos poner más de un punto de destino.Por ejemplo, en una página con varios apartados,cada uno con su propio ancla.

Despues de darle un nombre al enlace y pulsar "Aceptar" nos aparece un dibujo de ancla donde antes estaba el cursor.


El segundo paso es colocar el enlace propiamente dicho( el vínculo sobre el que pulsar)para volver a donde estaba el ancla.


El proceso es parecido al que vimos para colocar enlaces a páginas en un post anterior a este.La unica diferencia es que en lugar de una URL se elige el ancla al que debe apuntar el enlace.
Al desplegar la lista de URL se muestran todos los anclas de la página, estos enlaces van precedidos por el símbolo # (almohadilla).

Enlaces Internos a Páginas
Se pueden mezclar enlaces a otras páginas y enlaces internos en la misma página.Para ello a la URL de la página de destino se le añade el símbolo almohadilla (#) seguido del nombre del ancla:


http://www.elsitio.com/preguntas.htm#apartado2

Este enlace apuntará al ancla denominada apartado2 que hay en la página preguntas.htm alojada en http://www.elsitio.com/.
 

sábado, 12 de diciembre de 2009

Crear una Web:Insertar Enlaces

Ahora le llega el turno a la insercion de enlaces en nuestra web.Para hacerlo podemos usar una imagen o un texto.en ambos casos el metodo es muy parecido.

1.-Situamos el cursor
2.-Escogemos entre menú Insertar->Enlace y el boton de Enlace de la barra de botones
3.-En el cuadro de propiedades (Texto del enlace) escribimos el texto. No hace falta si ya está seeccionado.
4.-En Ubicación del enlace colocamos la URL de la página a la que debe apuntar el enlace.

Como ya hemos dicho en un post anterior la URL puede ser absoluta  o relativa.En cas de ser relativa podemos  marcar la opción La URL es relativa a la dirección de la página cuando accedamos a las propiedades del enlace.

A decir verdad un enlace puede apuntar a cualquier archivo.En el caso de un archivo .htm el explorador lo muestra como página web. Pero también puede apuntar a un archivo .jpg o .gif o .png (el explorador lo mostrará como imágenes), a archivos de otro tipo, como .zip (en cuyo caso el explorador permitirá al visitante descargarlos y guardarlos en su ordenador). En general el explorador intentará procesar el archivo.

Enlaces a Correo
Al insertar un enlace en la ubicación del enlace podemos colocar una dirección de correo electrónico. Como ya hemos dicho en un postr anterior, en este tipo de enlaces cuando el visitante pulsa sobre el enlace, se abre su cliente de correo y puede escribir un mensaje a la dirección de correo especficada. Para crear este tipo de enlace basta con escribir el email y marcarlo como dirección email.

Enlaces Internos a Páginas
En nuestra web podemos mezclar los distintos tipos de enlaces.Podemos colocar enlaces que apunten a un ancla dentro de otra página. Para ello a la URL de la página de destino se le añade el símbolo almohadilla (#) seguido del nombre del ancla:


http://www.elsitio.com/preguntas.htm#apartado2

Este enlace apuntará al ancla denominada apartado2 que hay en la página preguntas.htm alojada en http://www.elsitio.com/.

Crear una Web:Enlaces

Seguro has oido dichos como"Las apariencias engañan","Las cosas no siempre son lo que parecen"...Nuestra web son uno de esos casos.Es, en apariencia un documento de texto(de hecho se edita con un editor de texto),pero en realidad va más alla.En nuestra web tenemos texto, imagenes,sonido,animaciones ...y enlaces.
Nuestra web no es un texto, los enlaces de nuestro documento lo convierte en un hipertexto.

Un enlace puede definirse como el elemento que nos permite acceder desde un punto de nuestro documento a otro documento por medio de una direccion URL.

Las URL
En esta frase nos encontramos con un palabra que debiera de sonar URL, del inglés, Localizador Universal de Recursos. Puedes ver más sobre las URL en la sección enlaces del manual de HTML. Es decir una forma standard (Uniform) para indicar donde (Localizador) se encuentra un objeto (Recurso) en la red. Este recurso puede ser una página web, una imagen, un sonido, una animación y en general todo aquello que sea manejable por el navegador de internet.
Estas URL tienen la forma
http://www.espaciolatino.com/horoscopo/index.htm

Donde http indica el protocolo (normas de comunicación) www.espaciolatino.com es el servidor u ordenador donde se encuentra el recurso, /horoscopo/ es una carpeta dentro de ese servidor y por último index.htm es el nombre del archivo que buscamos.

Tipos de URL
Las direcciones de los recursos se pueden escribir de dos formas: absoluta o relativa. La dirección completa comenzando con el http:// es una URL absoluta del recurso. Por ejemplo si en el sitio misitio.com hay una carpeta llamada imágenes y dentro hay otra llamada gifs y dentro hay un archivo llamado ojos.gif, la URL absoluta de esta imagen sería
http://misitio.com/imagenes/gifs/ojos.gif

Pero si estamos dando la dirección de un recurso que está en el mismo servidor donde se encuentra la página se suelen usar las llamadas URL relativas, que dan la ruta hasta el recurso partiendo desde la página, sin usar la parte del servidor, http://misitio.com. Si la URL relativa comienza con / la ruta comienza en la raíz de nuestro sitio. Por ejemplo, si en la página index.htm que hay en la carpeta imagenes quiero poner la dirección de la imagen ojos.gif en forma relativa podría ser de cualquiera de las formas:

gifs/ojos.gif
/imagenes/gifs/ojos.gif
Clases De Enlaces
Los enlaces que podemos encontrarnos en una página web suelen ser:
Interno->Nos dirige a otra parte del mismo documento

Local->Es un recurso dentro del mismo servidor que nuestra página

Externo->Es un recurso situado dentro de otros servidores,otras página web

De Correo->Abre un programa de correo electronico para enviar un e-mail a la cuenta ya especificada

A Archivos->Nos envia a un documento que podemos ver o descargar a nuestro PC



Crear una Web:Imagenes

Ahora que hemos visto algo acerca de las imagenes en a web, debes estar preguntandote¿Como hago para insertarlas y demás? No te impacientes.De eso vamos a hablar ahora.

Insertar Imagenes
Insertar imagenes en nuestra web, se parece mucho a insertar una tabla.En este caso, tambien tenemos varias opciones:
1.-Nos dirigimos a la barra de botones y pulsamos sobre el boton imagen(facil de reconocer, es una imagen)
2.-Nos dirigimos a la barra de menus, escogemos Insertar->Imagen.

Con ambos metodos podemos ver que sale un cuadro de dialogo llamado Popiedades de la imagen con 4 pestañas:Ubicacion, Dimensiones, Apariencia y Enlace.

1.-Ubicacion:Esta pestaña nos pide esta informacion:
 a)URL de la Imagen: Este cuadro de texto está destinado a escribir la ruta completa de la imagen usando una URL absoluta, si la imagen está fuera de nuestro ordenador (por ejemplo : http://www.sitio.es/images/cuadro.gif), o una URL relativa si la imagen está ubicada en alguna carpeta de nuestro ordenador. En este caso utilizaremos el botón "elegir archivo"Botón examinar para localizar la imagen en nuestro equipo. Este botón nos llevará a un explorador de archivos, seleccionamos la imagen deseada y pulsamos Abrir. No debemos olvidar marcar la casilla La URL es relativa a la ruta de la página, de esta forma la url de la imagen se mantendrá válida cuando subamos la página a un servidor.
b) En el apartado Título emergente escribiremos un texto relativo a nuestra imagen. Este título aparecerá también en el navegador cuando el cursor pase por encima de la imagen. Esta imagen responde al ejemplo del cuadro expuesto más arriba, al pasar el cursor por ella veremos el texto "El desierto". Si por cualquier circunstancia la imagen no se mostrara en el navegador veríamos en su lugar un cuadro vacío con el texto "Imagen del texto".

    El desierto
c) Texto alternativo se utiliza para dar información mientras se carga la imagen, o como texto de aviso si la imagen no se llega a mostrar (navegadores solo texto). Este texto alternativo está habilitado por defecto, por lo que si no introducimos nada en él, el editor nos mostrará el mensaje de alerta que tenemos a la derecha. Para anularlo marcamos la casilla "No usar texto alternativo".
Por último en la parte inferior de este panel tenemos una vista preliminar de la imagen antes de ser insertada en la página.
2.-Dimensiones nos da 2 opciones:
 -Tamaño Real  si está activada la imagen será mostrada en el navegador con el mismo tamaño con el que se grabó el original.
-Tamaño Personalizado, permite redimensionar la imagen. Si la opción Mantener aspecto está habilitada, al introducir uno de los valores (anchura o altura) el otro se ajustará automáticamente para mantener la misma proporción que en la imagen original.

3.-Apariencia sirve para crear un espacio o marge alrededor de la imagen, colocarle un marco, alinearla...

Si en el apartado "Espacios" introducimos los valores que figuran en la figura de la derecha(ir a  Creatuweb), la imagen mostraría un margen superior e inferior de 8 píxeles, otro a derecha e izquierda de 10 pixeles y un borde de 1 píxel de grueso.
El apartado "Alineación" nos permite elegir como estaría el texto en relación con la imagen, presentando una lista desplegable con cinco opciones.

Arriba->El texto se alinea con la parte superior de la imagen
Centro->El texto queda en el centro de la imagen
Abajo->el texto queda alineado en la parte inferior de la imagen
Fluir por la Derecha->Con esta opción todo el texto que rodea a la imagen se distribuye a la derecha de la misma, hasta sobrepasar su altura, en cuyo caso irá ocupando la totalidad de los renglones situados bajo la misma.
Fluir por la Izquierda->Con esta opción todo el texto que rodea a la imagen se coloca a la izquierda de la misma, hasta sobrepasar su altura, en cuyo caso irá ocupando la totalidad de los renglones situados bajo la misma.

4.-Enlace nos permite convertir nuestra imagen en un hiperenlace que se dirige a una URL.
Ahora podemos elegir el archivo desde los que tenemos en nuestro sistema pulsando el botón Elegir Archivo . En este caso se debe marcar la casilla URL de imagen relativa.
Si la dirección está fuera de nuestro servidor pues debemos escribir la URL completa. URL absoluta



Por último si marcamos la opción Brodear imagen obtendremos un antiestéico borde alrededor de la imagen de enlace, como puedes observar en este ejemplo:
Imagen enlace más Imagen enlace más
Imagen enlace con borde Imagen enlace sin borde

viernes, 11 de diciembre de 2009

Crear una Web:Imagenes en la Web

Bien sea por cuestiones practicas, bien por estetica,resulta practicamente imposible evitar poner al menos una imagen en nuestra web.
En la creacion de webs se usan principalmente imagenes de tipos de mapas de bits.Los formatos más usados suelen ser JPG, PNG y GIF.Son sistemas de almacenar imagenes que se utilizan para minimizar el tamaño que ocupan en disco(lo que facilita la transmision de archivos graficos) manteniendo una calidad medianamente aceptable(lo que hace que las imagenes sean utiles).En la web de CreaTuWeb, podemos encontrar ejemplos de imagenes en estos 3 formatos.

Formato GIF
Son las siglas que corresponden a Graphics Interchange Format.Este sistema nació en el año 1987 de la mano de Compuserve con objeto de colorear sus imágenes, hasta entonces codificadas en su formato RLE en blanco y negro. La versión original (GIF87a) fue sustituida por la GIF89a. Actualmente existe un problema de licencias que desaconseja su uso en favor del formato PnG. Sus características más importantes son:
1º.-Es un formato de compresión sin pérdidas( lo que aligera el tamaño final del archivo, manteniendo su  calidad).
2.-Se utiliza principalmente para imágenes de colores planos, o sea, grandes manchas de color homogéneo, sin variación cromática, al modo de los dibujos infantiles.
3.-Permite "transparencias", es decir, seleccionando uno de los colores de la imagen éste se vuelve transparente, permitiendo ver a través de él cualquier fondo, o imagen que esté situada detrás.
4.-Permite, con el programa adecuado, crear animaciones presentando varias imágenes una tras otra como si de un "dibujo animado" se tratara.
5.-Utiliza una paleta de 256 colores como máximo, lo que nos permite elegir entre varios tamaños para un mismo archivo.

Formato JPG
Son las siglas de Joint Photographic Expert Group .Este sistema es el más utilizado para la transmisión de fotografías, y nació en el año 1986. Es un formato muy recomendado para imágenes con una amplia gama de colores y que permite ajustar el grado de compresión y por tanto la calidad de la imagen.
Sus características más importantes son:
1.-Es un formato de compresión con pérdida: aligera el tamaño final del archivo, pero le resta calidad.
2.-Se utiliza principalmente para incluir en la web fotografías con un elevado número de colores (trabaja con un formato de 16 millones de colores).
3.-No puedes definir colores transparentes.
4.-No puedes crear animaciones.
5.-Con el formato JPG, podemos escoger el grado de compresión, de manera que cuanto mayor sea la compresión mayor es la pérdida de calidad de la imagen.
6.-Codifica los colores con 24 bits, por lo uqe puede manejar una paleta de más de 16 millones de colores, lo que se llama color verdadero.

Formatos PNG 
Sus siglas significan Portable Network Graphics.Este es un formato gráfico basado en un algoritmo de compresión sin pérdida para bitmaps no sujeto a patentes. Fue desarrollado en buena parte para solventar las deficiencias del formato GIF y permite almacenar imágenes con una mayor profundidad de color y otros importantes datos. Sus características principales son:
1.-Es un formato de compresión sin pérdidas lo que aligera el tamaño final del archivo, manteniendo su calidad.
2.-Soporta formato de color indexado (256 colores) y profundidades de color de 48 bits y escala de grises de 16 bits. 
3.-Permite colores transparentes y transparencias graduales 
4.-No permite crear animaciones, existe un formato relacionado para animaciones, pero está poco extendido: MNG.
5.-El usuario puede elegir el formato a usar en la codificación de la imagen: PNG8 (análogo al GIF) o PNG24 (24 bits de color)
6.-Para bien o para mal, no es adoptado por todos los navegadores, y aún menos por las versiones antiguas de los mismos
Observaciones
Visto todo lo anterior, cuando integremos imágenes en nuestra página deberíamos tener en cuenta lo siguiente:
1.-Debemos analizar detalladamente el uso de imágenes en nuestra página. Hemos de fijarnos en su necesidad, resolución, tamaño, formato, etc. El objetivo es lograr que la página se cargue lo más rápidamente posible.
2.-El tamaño del archivo de imagen depende de las dimensiones de la imagen y del número de colores que la forman.
3.-Para colores puros con no más de 256 colores y gráficos muy simples usaremos el formato GIF o PNG.
4.-Para imágenes con más de 256 colores usaremos el formato JPG o PNG24. 
5.-Usar las imágenes con su tamaño real, evitando que sea el navegador el encargado de reducirlas.
6.-No colocar demasiadas imágenes en una misma página. Si necesitamos mostrar un numero elevado de imágenes, lo mejor es usar una versión muy reducida de las mismas (thumbnails o miniaturas) a modo de índice y enlazar con páginas individuales donde se muestre cada imagen por separado.
7.-Al diseñar la estructura del sitio utilizar una carpeta para las imágenes muy usadas a lo largo de las diferentes páginas del sitio
8.-Usar el atributo ALT en las imágenes, para facilitar la comprensión del contenido a los usuarios y a los robots usados por los buscadores para indexar nuestra página.