martes, 20 de enero de 2009

Buscadores Internos en PHP


Word-Forms-Aware Site Search
Más información Visitar Este script recorre tu sitio web y crea una base de datos con el contenido indexado. Para mostrar el formulario de búsqueda y/o los resultados de la búsqueda sólo tienes que añadir una línea de código....
Licencia: Freeware
plataformas: multiplataforma
idiomas: Inglés

Interspire FastFind
Más información Visitar Sistema para realizar un completo buscador interno en un sitio web en poco tiempo. Creado en PHP y con base de datos (MySQL o bien PostgreSQL). Dispone de un área de administración y un sistema de...
Licencia: Licencia comercial
plataformas: multiplataforma
idiomas: Inglés

NOTA: En este directorio no tenemos las descargas de código físicamente, sino que tenemos enlaces a las páginas donde se ofrecen los scripts.
Para descargar un script tenemos que visitar la página donde se ofrece el script. Para ello, en cada ficha del script hay un enlace que pone "Visitar" que debemos pulsar para obtenerlo.
El enlace visitar no lleva al script directamente, sino que lleva a la página donde está alojado. A veces en la página hay varios programas, por lo que en ocasiones además tendremos que buscar el script concreto que estábamos intentando descargar.
En la página donde nos lleva el enlace "Visitar " podremos encontrar además la documentación necesaria para instalar el script y configurarlo, así como otros detalles que haya querido destacar el autor del código, como la licencia, precio -si lo tiene-, versiones, idiomas, etc. Aunque en la ficha del script ya se adelantan muchas de estas informaciones, siempre es conveniente documentarse en la propia página.
En este directorio de scripts se clasifican miles de programas, aplicaciones o códigos para utilizar en una página web. El directorio en si no es más que una clasificación por tecnologías y funcionalidades, además de un foro para que los visitantes puedan dar sus opiniones, experiencias o puntuaciones a los scripts que aquí se presentan.

lunes, 19 de enero de 2009

¿Qué significa programar?

¿De qué nos ocuparemos?
Una introducción a la terminología de la programación, un poco de historia y una introducción a la estructura de un programa de computadora.

Vayamos a lo BASICO
La programación de computadoras es el arte de hacer que una computadora haga lo que nosotros querramos.

En el nivel más simple consiste en ingresar en la computadora una secuencia de órdenes para lograr un cierto objetivo. En el entorno de MS DOS los usuarios solían crear archivos de texto con comandos denominados "archivos por lotes" (.BAT). Estos simplemente ejecutaban la secuencia de órdenes en lotes, de allí su nombre. Bajo Windows es posible producir estos archivos, aunque en la práctica no es lo más común.

Por ejemplo, podrías producir un documento (como este tutorial) compuesto por varios archivos separados. Tu procesador de texto puede crear backups de cada uno de estos archivos cuando guardás una nueve versión de los documentos. Al final del día, querés colocar la versión actual del documento, es decir los últimos archivos, en una carpeta de respaldo. Finalmente, para poner un poco de orden, borrás las versiones previas. Un sencillo archivo BAT para hacer esto sería:

COPY *.HTM BACKUP
DEL *.BAK

Si el archivo se llamara SAVE.BAT, al final del día simplemente deberías tipear SAVE en la ventana de DOS y los archivos serían guardados y se borrarían los backups. Esto es un programa.

Nota: Los usuarios de Linux y otros sistemas operativos tiene su propia versión de estos archivos, usualmente conocidos como shell scripts. Los shell scripts de Linux son mucho más poderosos que los BATs de DOS, y además son compatibles con la mayor parte de las técnicas de programación que veremos en este tutorial.

Voy a decirlo otro vez
Si estás un poco impresionado por lo que acabamos de ver, no te preocupes. Un programa de computación es simplemente un conjunto de instrucciones que le dicen a la computadora cómo realizar una tarea en particular. Es parecido a una receta: un grupo de instrucciones que le dicen al cocinero cómo preparar un determinado plato. Describe los ingredientes (los datos) y la secuencia de pasos (el proceso) necesarios para convertir los ingredientes en una rica torta. Un programa tiene un concepto muy similar.

Un poco de historia
Tal como Ud. le hablás a un amigo en un idioma, para "hablarle" a una computadora es necesario utilizar un lenguaje en particular. El único lenguaje que una computadora entiende se denomina binario y tiene muchos dialectos. Esto demuestra porqué un programa escrito para una iMac no funciona en una PC y viceversa. Desafortunadamente el lenguaje binario es muy difícil de leer y escribir para un humano, por lo cual debemos utilizar un lenguaje intermedio que después será traducido a binario. Esto es como ver una reunión cumbre entre Clinton y Yeltsin. Clinton habla, luego un intérprete repite en ruso lo que se ha dicho. Luego Yeltsin contesta y un intérprete repite lo mismo en inglés.

Lo que traduce nuestro lenguaje intermediario a binario también se denomina intérprete. De la misma manera que es necesario disponer de un intérprete distinto para traducir del inglés al ruso que para hacerlo del árabe al ruso, será necesario disponer de un intérprete distinto para traducir las órdenes de Python a binario y otra para traducir las de BASIC.

Los primeros programadores tenían que ingresar los códigos binarios, lo cual se conoce como programación en código máquina y es increíblemente compleja y difícil. El paso siguiente fue crear un traductor que simplemente convertía palabras en inglés equivalentes a los códigos binarios en los propios códigos binarios. De esta manera en vez de tener que recordar que el código 001273 05 04 significaba sumar 5 + 4 , los programadores podían escribir entonces ADD 5 4. Esta simple mejora hizo que la vida fuera más sencilla y estos sistemas de codificación fueron los primeros lenguajes de programación, habiendo distintas versiones para cada tipo de computadora. Se los conocía como lenguajes assembler ("ensamblador"). La programación en Assembler se utiliza todavía para algunas tareas de programación muy específicas.

Incluso este sistema era muy primitivo, pues le decía a la computadora lo que tenía que hacer en el nivel de hardware -mover bytes de una celda de memoria a otra, sumar este byte a este otro, etc. Lograr un objetivo sencillo era todavía bastante difícil e implicaba un gran esfuerzo de programación.

Gradualmente los expertos en computación desarrollaron lenguajes de alto nivel para facilitar el trabajo de los programadores. Esto fue también el resultado de una demanda por parte de los usuarios que reclamaban tareas más complejas y procesos más potentes para sus computadoras. La competencia entre los ingenieros y los usuarios continúa aun hoy, y nuevos lenguajes son desarrollados y potenciados. Esto vuelve muy interesante a la programación pero también implica que como programador debés comprender bien no solo los conceptos de la programación en general, sino también la práctica de la programación en un lenguaje particular.

Más adelante discutiremos en profundidad algunos de estos conceptos.

Características comunes a todos los programas
Hace tiempo Edsgar Dijkstra desarrolló el concepto de la programación estructurada. Esto significa que todos los programas pueden estructurarse de las siguientes cuatro formas:
Secuencias de instrucciones
Bucles
Bifurcaciones
Módulos

Además de estas estructuras los programas necesitan otras características que los hacen útiles:

Datos
Operaciones (sumar, restar, comparar, etc.)
Capacidad de Entrada/Salida (para mostrar resultados)
Una vez que se comprende cómo un lenguaje particular implementa estos conceptos, uno está preparado para escribir un programa en ese lenguaje.

Aclarando la terminología
Ya hemos dicho que la programación es el arte de hacer que una computadora haga lo que uno quiera, pero ¿qué es un programa?

De hecho hay dos conceptos distintos de lo que es un programa. El primero es el percibido por el usuario: un archivo ejecutable que se instala en la máquina y puede ser ejecutado repetidas veces para realizar una tarea determinada. Por ejemplo, los usarios utilizan el programa Word para escribir textos. El otro concepto se refiere a un programa visto desde la óptica de un programador: un archivo de texto con instrucciones a la computadora escritas en un determinado lenguaje de programación, que luego podrá convertirse en un ejecutable. Por esta razón, es necesario aclarar a qué nos referimos cuando hablamos de un programa.

Básicamente un programador escribe un programa en un lenguaje de alto nivel que es interpretado y traducido a bytes que la computadora pueda comprender. En la jerga técnica se dice que el programador genera el código fuente y el intérprete genera el código objeto. A veces, el código objeto también se denomina P-Code, código binario o código máquina.

El intérprete tiene varios nombres: uno es el de intérprete y el otro es el de compilador. Estos términos en realidad se refieren a dos técnicas diferentes de generación del código objeto a partir del código fuente. Antes los compiladores generaban el código objeto que podía ejecutarse como tal (un archivo ejecutable - otro término) mientras que un intérprete debía estar presente para poder ejecutar el código. Actualmente, la diferencia entre estos términos se ha vuelto difusa ya que algunos compiladores requieren que el intérprete esté presente para realizar a conversión final y algunos intérpretes compilan el código fuente en un objeto temporal y luego lo ejecutan.

Desde nuestra perspectiva no hay una diferencia real, ya que escribiremos código y usaremos una programa para que la computadora pueda leerlo y ejecutarlo.

La estructura de un programa
La estructura exacta de un programa depende del lenguaje que utilicemos y el entorno en el cual lo creemos. Sin embargo, hay algunos principios generales:

Un cargador - todo programa necesita ser cargado en la memoria por el sistema operativo. De esto se encarga el intérprete.
Definición de los datos - la mayoría de los programas operan con datos y por lo tanto en el código fuente debemos definir que tipo de datos vamos a utilizar en el programa. Esto se realiza de manera diferente en los distintos lenguajes. Todos los lenguajes que usaremos tienen la posibilidad de crear una nueva definición de datos simplemente al utilizar los datos. Veremos esto en la próxima sección.
Instrucciones - son la parte central del programa. Las instrucciones manipulan los datos que hemos definido, realizan cálculos, muestran los resultados, etc.
La mayoría de los programas siguen una de dos estructuras:

Programas de lotes
Estos se ejecutan típicamente desde una línea de comando o automáticamente desde otra aplicación (tipo scheduler) y tienden al siguiente patrón:

Inicialización interna de los datos
Lectura de los datos ingresados
Procesamiento de los datos
Visualización o ejecución de los resultados
Programas controlados por eventos
La mayor parte de las interfaces gráficas (y los sistemas de control presentes en un horno a microondas o una cámara por ejemplo) responden a eventos. Esto significa que el Sistema Operativo envía un evento al programa y este los responde tan pronto como estos le llegan. Los eventos incluyen acciones del usuario como apretar una tecla, mover el mouse, etc, y operaciones propias del sistema operativo tales como la actualización del reloj, el refresco de la pantalla, etc.

Los programas controlados por eventos son generalmente así:
Inicialización interna de los datos
Espera de los eventos
Identificación de los eventos y actuación en consecuencia

Para recordar
Los programas controlan a la computadora
Los lenguajes de programación nos permiten "hablar" con la computadora a un nivel más cercano al pensamiento humano que al de la computadora
Los programas operan con datos
Los programas pueden ser por Lotes o controlados por eventos

sábado, 10 de enero de 2009

Programar no es sólo hacer matemáticas

Cada cierto tiempo se oyen voces críticas sobre la falta de rigor con la que trabajan la mayoría de los programadores. La falta de métodos formales de verificación y benchmarking produce muchos programas lentos y nada fiables. Pero ¿es la programación sólo una extensión de las matemáticas por otros medios?

El pasado 9 de diciembre Robert Scoble tuvo la en apariencia inocente ocurrencia de preguntar en su blog porqué el software de gestión no puede ser igual de sexy que el de consumo Más de cien comentarios y acusaciones de que no entiende el software empresarial como la de Michael Krigsman pusieron de manifiesto que con la pregunta Scoble tocó hueso.
En defensa de Robert salió el reputado Nicholas Carr, diciendo que es Krigsman quien no entiende nada de software y que creando una falsa dicotomía entre el software de consumo y el software de gestión lo único que se consigue es dar a los fabricante de éste último la excusa perfecta para seguir creando aplicaciones difíciles y desagradables.
El flame war continuó con otra andanda de Krigsman argumentando que Carr vive en un mundo de fantasía donde es posible emplear tiempo en dotar a las aplicaciones empresariales de pijadas totalmente innecesarias antes que atender a los requisitos funcionales básicos, las prioridades del negocio, el soporte de aplicaciones legacy y las limitaciones tecnológicas de la infraestructura.
Pero el clímax de esta historia lo he alcanzado leyendo una referencia en el blog de Agustín González-Quel al artículo Where Are the Software Engineers of Tomorrow? de Robert B.K. Dewar y Edmond Schonberg. En el cual los papás de ADA despotrican abiertamente contra el uso de Java para fines pedagógicos en las universidades, argumentando que el uso de Java es nocivo porque en vez de incentivar la reducción de la complejidad formal de procesos a un pequeño conjunto de operaciones primitivas, lo que Java fomenta es la resolución de problemas cual fontanero en ferretería tirando de todo lo que pilla en lo cajones a modo de frameworks y librerías que acaban convirtiendo al estudiante en un ignorante total del coste computacional de lo que está haciendo y de nociones imprescindibles para la programación como son los punteros.
Es verdad que entre los programadores más jóvenes hay una excesiva tendencia a abusar de las librerías. Cogen unos mágicos tags de Java y convierten una JSP que antaño era fácilmente legible y rápida en un amasijo de abreviaturas crípticas que tiran contra lentísimos servlets que hay que recompilar cada vez que quieres tocar algo. O se pillan Castor (o lo que sea) y unas DTDs y te dejan varios cientos de clases basura pregeneradas para leer un archivo XML de 10 líneas. Es decir, a veces matan moscas a cañonazos simplemente porque lo que tienen a mano para combatir insectos es un cañón.
Pero no es menos cierto que Java ha supuesto un gran salto cualitativo hacia adelante en la programación. Quien ha programado con punteros se acuerda de que en los 80 y 90 estábamos hartos de ellos y de las pérdidas de memoria que siempre acaban provocando. Y fue por eso que acabamos quitándolos en los lenguajes modernos. Hubo un tiempo en el que se cuestionaba la eficiencia y la viabilidad de usar recolectores de basura como el de la máquina virtual de Java, cuya utilidad y eficacia ahora ya nadie se atreve a poner en duda. Cuando no teníamos esas librerías ballena de Java, nos dedicábamos a escribirlas ¿Alguien se acuerda de ACE o de Rogue Wave para C++?
Por supuesto que hay muchas cosas muy mejorables en Java. Pero para mi Java ha sido un avance y no un retroceso.
Sobre si el software empresarial tiene que funcionar bien y no necesariamente ser bonito opino que: nadie puede ser buen programador si ignora la reacción emocional que sus programas causan en los usuarios. Escribimos programas para que alguien los use (o los sufra). Bueno, si, algunos escriben módulos de control para satélites, pero no me refiero a ese tipo de software, sino al típico software de gestión que debe necesariamente interactuar con humanos.
Los que reclaman más métodos formales y algebraicos y menos giliflauteces, deben entender que la programación no es simplemente una variante de las matemáticas, porque en el momento en que entra el juego el factor humano, la idoneidad del programa realizado deja de ser rigurosamente medible.
En un mundo utópico los programas son bellas estructuras matemáticas y el arte de programar consiste en emplear el intelecto para reducir la complejidad, abstraer y sintetizar.
Pero en el mundo real las cosas están pensadas para ser simples, porque si fueran complejas no podríamos manejarlas en el día a día. Las herramientas están pensadas para que le des al botón de crear formulario, pegues unos cuantos controles visuales dentro, escribas un poco de código para procesar los eventos y a las seis te vayas a tu casa a jugar con tus hijos sin tener ni la menor idea de lo que es un puntero.
Y los usuarios no sólo quieren que el software funcione, quieren que mole y que les divierta. Porque ¿quién dijo que el daño económico que causa un bug es peor que el daño psicológico que causa no poder poner la foto de tu perro como fondo de pantalla?
Por último, haré una afirmación aún más radical, lo que diferencia a un programador bueno de uno sobresaliente no es su capacidad para buscar soluciones lógicas, sino su capacidad para buscar soluciones ilógicas. Me explico: cuando tiene delante un problema que tiene pies y cabeza, cualquier ingeniero cualificado puede atacarlo aplicando alguna determinada metodología y, con el paso del tiempo, tarde o temprano lo acabará resolviendo. Pero, de vez en cuando, se presentan problemas totalmente desconcertantes y aparentemente sin sentido. Puede, por ejemplo, que el ordenador haya sido infectado por un virus sibilino. Entonces es posible perder horas persiguiendo un bug fantasma hasta que alguien llega y dice ¡hey si no es el programa lo que funciona mal entonces debe ser otra cosa! y con dicha hipótesis ad-hoc completamente infundada dispara un proceso de pensamiento lateral de búsqueda de soluciones en las que no se había pensado. Algo así como cuando alguien dijo ¡hey, y si deterioramos la calidad de la imagen? Y entonces se inventó JPEG (sin menosprecio de su fundamento en la teoría de información) o cuando Steve Jobs se pregunto ¡hey, porqué todas las letras de la pantalla tienen que ser de ancho fijo? Los programadores comunes pierden horas buscando una explicación aparente razonable a un problema que les trae muertos. Los programadores de élite huelen el problema y buscan un atajo, es casi como si diagnosticaran el error con la punta de su nariz antes que con el cerebro.

La Vida de un Programador


La gente que no se dedica a esto no lo sabe, pero programar es una tarea muy estresante, pensar en como hacer que salga un programa, y resolver los errores que siempre hay puede haber, hay que tener cuidado porque podríamos llegar a este punto:

sábado, 3 de enero de 2009

TECNOLOGÍAS DE INFORMACIÓN

A finales del siglo XIX e inicios del siglo XX, el mundo vivió una revolución tecnológica, misma que originó procesos turbulentos de reacomodo, de estabilización, de entendimiento. La economía, la industria, la agricultura y la sociedad se encontraban en medio de todo este cambio, por ende, cada uno de ellos resultó afectado. (Kalakota y Robinson, 2001). Como lo dan a conocer Kalakota y Robinson (2001) y Norris Grant, Hurley James, Hartley Kennet, Dunleavy John, Balls John (2000), el Internet en toda esta revolución ha llegado a ser aceptado rápidamente por sobre los demás medios de comunicación como son el teléfono, la radio, la televisión, los cuales su tiempo de aceptación fue mucho mas largo. mas......

martes, 2 de diciembre de 2008

Codigo de Barra

  • DEFINICIÓN

  • Dibujo formado por barras y espacios paralelos, que codifica información mediante las anchuras relativas de estos elementos. Los códigos de barras representan datos en una forma legible por las máquinas, y son uno de los medios más eficientes para la captación automática de datos.

    Esta información puede ser leída por dispositivos ópticos, los cuales envían la información leída hacia una computadora como si la información se hubiera tecleado.

    El código de barras almacena datos que pueden ser reunidos de manera rápida y con una gran precisión y ofrecen con un método simple y fácil la codificación de información de texto que puede ser leída por lectores electrónicos de bajo costo.

    Los códigos de barras se pueden imaginar como si fueran la versión impresa del código Morse, con barras angostas ( y espacios) representando puntos, y barras. El lector decodifica el código de barras a través de la digitalización proveniente de una fuente de luz que cruza el código y mide la intensidad de la luz reflejada por los espacios blancos. El patrón de la luz reflejada se detecta a través de una foto diodo el cual produce una señal eléctrica que coincide exactamente con el patrón impreso del código de barras. Luego esta señal es decodificada de regreso de acuerdo con la información original por circuitos electrónicos de bajo costo. Debido a que el diseño de muchas simbologías de código de barras no marca diferencia alguna, se puede digitalizar el código de barras de derecha a izquierda o viceversa.

    La información es leída por dispositivos ópticos los cuales envían la información a una computadora como si la información hubiese sido tecleada. Un símbolo de código de barras es la visualización física de un código de barras. Una simbología es la forma en que se codifica la información en las barras y espacios del símbolo de código de barras.

    Los Código de barras han sido creados para identificar objetos y facilitar el ingreso de información eliminando la posibilidad de error en la captura.

    Su estructura básica consiste de zona de inicio y término en la que se incluye: un patrón de inicio, uno o más caracteres de datos, opcionalmente unos o dos caracteres de verificación y patrón de término. Esta ampliamente difundido en el comercio y en la industria, siendo que una computadora se conecta a través de la interfaz puerto de serie. Posibilita la recolección de datos con rapidez, muy baja tasa de errores, facilidad y bajo costo, en comparación con la lectura visual de códigos numéricos seguida de entrada manual por teclado.

    Uno de los medios más modernos, y que está tomando cada vez un mayor auge, de introducir información en una computadora es por medio de una codificación de barras verticales.

    Cada vez son más los productos que llevan en su etiqueta uno de estos códigos donde, por medio de las barras verticales de color negro, se consigue una identificación para todo tipo de productos, desde libros hasta bolsas de papas fritas.

    Esta codificación ha sido definida de forma estándar por la Organización de Estándares Internacionales y, en ella, cada una de las líneas tiene un determinado valor dependiendo, en principio, de su presencia o ausencia y también de su grosor.

    En general los códigos de barra no son descifrables por las personas. Las lectoras son las encargadas de convertirlos en unos y ceros que irán a la computadora.

    Representan caracteres de información mediante barras negras y blancas dispuestas verticalmente. El ancho de las barras y espacios puede ser variable, siendo la más ancha un múltiplo de la mas angosta. En binario las barras significaran unos y los espacios ceros.

  • CLASES DE CODIGOS DE BARRAS

  • Uno de los códigos de barras mas corrientes es el UPC (Universal Product Code). Emparentado con el UPC, existe el código ISBN, usado en la cubierta de libros y revistas, también de 12 dígitos, así como el código 39 codifica números y letras para usos generales, siendo muy popular. Este código se usa mucho en la industria y para inventarios.

    Otro es el código entrelazado 2 de 5 (ITF), puede ser de cualquier longitud, pero con un numero par de dígitos, siendo que codifica dos dígitos por vez. Este es uno de los pocos códigos en que los espacios en blanco tienen significado. Al presente existen unos 20 códigos de barra.

    También existen códigos de barra en 2 dimensiones, que se deben escanear mediante un escáner o una cámara fotográfica digital. Una de las más utilizadas es el símbolo internacional de número de artículo, llamado símbolo EAN por las siglas en inglés de la Asociación Europea para la Numeración de Artículos.

    Este símbolo se emplea en el comercio abierto para identificar los productos al pasar del fabricante a los mayoristas, distribuidores y minoristas, y de ahí al cliente final.

    El código de barras EAN-13 representa el número de artículo indicado debajo del mismo, y no contiene ninguna información sobre el producto al que identifica. Toda la información sobre el producto figura en una base de datos, y se accede a ella indicando el número de artículo. Cada una de las empresas que utilizan el sistema EAN recibe un bloque de números de artículos que puede emplear para identificar todos sus productos. Estos bloques son asignados por una organización nacional de numeración, que a su vez recibe los números del organismo rector internacional, EAN Internacional.

    Cada código de barras EAN-13 está formado por:

    Un margen, un dibujo normalizado de separación, un dibujo que representa directamente, seis dígitos e indirectamente un séptimo, un dibujo central de separación, un dibujo de barras y espacios que representa directamente seis dígitos, un dibujo normalizado de separación, un margen como se ilustra a continuación:

    Códigos de barras

    Cada dígito se representa mediante dos barras y dos espacios que tienen una anchura total de siete unidades; cada barra y cada espacio pueden tener una anchura de una, dos, tres o cuatro unidades.

    En la simbología EAN pueden elegirse tres formas distintas, A, B y C, para representar cada dígito. Estas formas se conocen como conjuntos numéricos.

    Para representar la primera mitad del código de barras se emplea una combinación de los conjuntos numéricos A y B; el orden de los conjuntos numéricos utilizados representa a su vez un séptimo dígito, que aparece al principio de la secuencia de caracteres situada debajo del código de barras.

    El conjunto numérico C se emplea sólo para la segunda mitad del código de barras. Esto hace que el dispositivo lector pueda leer el código en cualquier sentido y decodificarlo correctamente.

  • HISTORIA DE LOS CODIGOS DE BARRA

  • La primera patente para un código de barras, que tenía forma circular, fue solicitada en 1949 en Estados Unidos por N. J. Woodland; los códigos de barras se emplearon por primera vez a principios de la década de 1960 para identificar material rodante ferroviario. y de ahí en adelante ha venido avanzando su aplicación y desarrollo así:

    En los sesenta:

    1961 es el año de aparición del primer escáner fijo de códigos de barras instalado por Sylvania General Telephone. Este aparato leía barras de colores rojo, azul, blanco y negro identificando vagones de ferrocarriles.

    Para 1967 la Asociación de Ferrocarriles de Norteamérica ( EEUU) aplica códigos de barras para control de tránsito de embarques. El proyecto no duró mucho por falta de adecuado mantenimiento de las etiquetas conteniendo los códigos.

    Alguien conoce la cadena de supermercados Kroger? En 1967 la sucursal de Cincinnati (Ohio, EEUU) instala el primer sistema de "retail" basado en códigos de barras. Al cliente que encontraba un código que no se podía escanear correctamente se le ofrecía cupones de compra gratis!!!

    1969, el láser hace su aparición. Usando luz de gas de Helio-Neón, el primer escáner fijo es instalado. Su costo: $10 000!!!!. Hoy por hoy el mismo tipo de escáner estaría costando menos de $ 2 000.

    A fines de los años 60 y comienzos de los 70 aparecieron las primeras aplicaciones industriales pero solo para manejo de información. En 1969, Rust-Oleum fue el primero en interactuar un lector de códigos con un computador (ordenador). El programa ejecutaba funciones de mantenimiento de inventarios e impresión de reportes de embarque.

    En los setenta:

    En 1970 aparece el primer terminal portátil de datos fabricado por Norand. Este utilizaba un "wand" o lápiz de contacto.

    El código Plessey hace su aparición en Inglaterra ( The Plessey Company, Dorset, Inglaterra), para control de archivos en organismos militares en 1971. Su aplicación se difundió para control de documentos en bibliotecas.

    Codabar aparece en 1971 y encuentra su mayor aplicación en los bancos de sangre, donde un medio de identificación y verificación automática eran indispensables.

    Códigos de barras

    Buick ( si, la fábrica de automóviles) utilizó identificación automática en las operaciones de ensamble de transmisiones, también por los años 70. El sistema era utilizado para conteo de los diferentes tipos de transmisión ensamblados diariamente. Todo un éxito.

    ITF marca su aparición en 1972, creado por el Dr. David Allais, en ese entonces de Intermec.

    En el año 1973 se anuncia el código U.P.C. ( Universal Product Code) que se convertiría en el estándar de identificación de productos. De esta forma la actualización automática de inventarios permitía una mejor y más oportuna compra y reabastecimiento de bienes. Europa se hace presente con su propia versión de U.P.C. En 1976, el código EAN (European Article Number).

    Códigos de barras
    Códigos de barras
    Códigos de barras
    Códigos de barras

    En 1974, nuevamente el Dr. Allais conjuntamente con Ray Stevens de Intermec inventan el código 39, el primero de tipo alfanumérico.

    El primer sistema patentado de verificación de códigos de barras por medio de láser aparece en el mercado en 1978.

    En los Ochenta:

    Revisen su correspondencia postal y muchos observarán lo siguiente marcado en los sobres:

    Códigos de barras

    Esto es el PostNet, aparece en 1980 siendo usado por el Servicio Postal de los EEUU.

    La tecnología de CCD (Charge Coupled Device) es aplicada en un escáner, 1981. En la actualidad este tipo de tecnología tiene bastante difusión en el mercado asiático, mientras que el láser domina en el mundo occidental. En ese año también aparece el código 128, de tipo alfanumérico.

    Aparece la norma ANSI MH10.8M que especifica las características técnicas de los códigos 39, Codabar, e ITF (Interleaved Two of Five).

    El Dr. Allais es incansable. En 1987 desarrolla el primer código bidimensional, el código 49. Le sigue Ted Williams ( Láser Light Systems) con el código 16K (1988).

    En los Noventa:

    En 1990 se publica la especificación ANS X3.182, que regula la calidad de impresión de códigos de barras lineales. En ese mismo año, Symbol Technologies presenta el código bidimensional PDF417.

    Códigos de barras

    Mas y más códigos se están desarrollando, sobre todo en los del tipo de alta densidad. La tecnología de identificación y manejo de datos a través de códigos de barras, ha logrado convertirse en un estándar "de facto" al ser aplicada, cada vez con más frecuencia, tanto en operaciones de distribución y manejo de materiales, como en organizaciones de manufactura industrial.

  • BENEFICIOS DE LOS CÓDIGOS DE BARRA

  • Aunque los beneficios en la implementación del sistema de identificación EAN-UCC son muchos, los cinco de los más importantes para que una empresa se desarrolle más competitivamente:

    • Optimización en el control de inventarios y aumento de productividad en el punto de pago, eliminando colas y disminuyendo el tiempo de espera. Mejor servicio al cliente.

    • Disminución de los procesos de marcación de precios, eliminación de errores de digitación y captura de datos de venta en forma rápida y segura.

    • Identificación de las principales áreas de mermas

    • Obtención de información confiable para el manejo del negocio.

    • Establecimiento de un lenguaje común con sus proveedores a través del código de barras, incrementando la productividad de la relación comercial, lo que facilita la implementación de otras tecnologías como el Intercambio Electrónico de Documentos (EDI).

    Otros beneficios son:

    • Proporciona una identificación única a cada producto, servicio o localización.

    • Permite la captura automática de la información.

    • Permite la automatización de varios procesos a lo largo de la cadena de abastecimiento.

    • Permite obtener información rápida y oportuna sobre productos servicios o localizaciones.

    • Incrementa la productividad y la eficiencia porque optimiza el tiempo en captura de información.

    • Disminuye la posibilidad del error humano.

    • Virtualmente no hay retrasos desde que se lee la información hasta que puede ser usada.

    • Se mejora la exactitud de los datos.

    • Se tienen costos fijos de labor más bajos.

    • Se puede tener un mejor control de calidad, mejor servicio al cliente.

    • Se pueden contar con nuevas categorías de información.

    • Se mejora la competitividad.

  • CARACTERÍSTICAS DE UN CÓDIGO DE BARRAS

  • Un símbolo de código de barras puede tener, a su vez, varias características, entre las cuales podemos nombrar:

    Densidad:

    Es la anchura del elemento (barra o espacio) más angosto dentro del símbolo de código de barras. Está dado en miles (milésimas de pulgada). Un código de barras no se mide por su longitud física sino por su densidad.

    WNR: (Wide to Narrow Ratio)

    Es la razón del grosor del elemento más angosto contra el más ancho. Usualmente es 1:3 o 1:2.

    Quiet Zone:

    Es el área blanca al principio y al final de un símbolo de código de barras. Esta área es necesaria para una lectura conveniente del símbolo.

  • APLICACIONES COMERCIALES

  • El código de barras le abre las puertas a:

    • Administración de Materias Primas

    • Administración de Bodegas y Centros de Distribución

    • Producción

    • Adminsitración Eficiente de Puntos de Venta

    • Aplicaciones de Comercio Exterior

    • Recaudo con Código de Barras

    • Pagos Electrónicos

    • Póliza Electrónica

    • Rutas Críticas de Pacientes

    • Aportes a la Seguridad Social

    • Manejo de Convenios entre IPS y EPS/ARS

    • Operación Logística

    • EHCR Reabastecimiento Continuo en el Sector Salud

    • Activos Fijos

    • Identificación de Personal

  • EJEMPLOS DE APLICACIÓNES COMERCIALES

  • Administración de Materias Primas

  • Para que la admisntración de las materias primas de una empres a posea información ágil y confiable el sistema EAN UCC es la herramienta confiable que se necesita, ya que posee las fortalezas ideales para un adecuado seguimiento y control de insumos. La identificaciójn estándar que ofrece este sistema le permite a su empresa y a sus proveedores grandes beneficios, gracias a la información común que aporta valiosos datos para una labor conjunta.

    Evitar los desperdicios, reciclar y lograr ahorros de materias primas son algunos de los pasos clave para optimizar el aprovechamiento de los insumos. Sin embargo, para lograrlo, se debe conocer a fondo el comportamiento de las materias primas, y realizar un seguimiento detallado de su utilización, lo cual exige un manejo de la información exacto y ágil, que se logra con los códigos de barrra.

  • Administración de Bodegas y Centros de Distribución

  • Admisnitrar un centro de distribución es una tarea compleja que va más allá de la sola manipulación y control de la mercancía, el factor que realmente marca la diferencia es la administración de la información de la misma, pues es la que realemente permite desarrollar procesos confiables y eficientes dentro de éste eslabón de la cadena de abastecimiento.

    La filosofía del sistema EAN UCC es mejorar la cadena de abastecimiento mediante la optimización de los procesos. En la bodega esta filosofia se aplica en cada proceso: almacenamiento, preparación , despacho.

    Cada uno puede ser mejorado gracias a la utilización de las herramientas de éste sistema. El sistema esta diseñado bajo uan filosofia que permite mejorar ese control. La identificación estándar de la mercancía, la captura de infromación de la misma y la comunicación de su movimiento, hacen que los sistemas de información puedan responder mejor a las necesidades de los usuarios, ya que los datos que manejan son más confiables. Los tiempos muertos debido a las demoras en la captura de infromación, pueden evitarse usando la tecnología disponible.

  • Producción

  • Controlar el producto que llegará a los consumidores es fundamental, sin embargo, éste control requiere de tres factores que deben encajar perfectamente para generar un información oportuna y real:personas, tiempos y recursos.

    El código de Barras y EDI bajo los estándares EAN-UCC, facilitan las labores de captura y comunicación de información de manera eficiente, posibilitando a las personas hacer uso de ella sin el desgaste del proceso de ingreso de datos.

    Implementar el código de barras y Edi en una compañía no solo redundará en un mejor aprovechamiento de los recursos en eficiencia, y agilidad en las diferentes etapas de los procesos de manufactura d los productos, sino que moderniza el servicio que se les presta a los clientes, proveedores y miembros de la compañía.

  • Administración Eficiente de Puntos de Venta

  • Los beneficios más importantes para que una empresa administre eficientemente los puntos de venta y se desarrolle competititvamente son:

    • Optimización en el control de inventarios y aumento de productividad en el punto de pago, eliminando colas y disminuyendo el tiempo de espera. Mejor servicio al cliente.

    • Disminución de los procesos de marcación de precios, eliminación de errores de digitación y captura de datos de venta en forma rápida y segura.

    • Identificación de las princiapales áreas de mermas.

    • Obtención de información confiable para el manejo dl negocio.

    • Establecimiento de un lenguaje común con sus proveedores a través del código de barras, incrementando la productividad de la relación comercial lo que facilita la implementación de otras tecnologías con el intercambio electrónico de documentos -EDI-

    • Conocimiento del comportamiento de los productos en el mercado.

    • Aumento de la eficiencia en el manejo de procesos como el recibo, despacho, y selección de mercancías.

    • Aplicaciones de Comercio Exterior

    • En comercio exterior, el uso del sistema EAN-UCC puede ser muy variado, teniendo en cuenta que son muchas las entidades y los procesos que en esta actividad se encuentran involucrados.

      Hoy las soluciones se están dando. La identificación única de la carga y la captura automática de la misma es totalmente factible. Igualmente la posibilidad de intercambiar cualquier tipo de información vía electrónica y que la misma sea procesada automáticamente, es hoy una realidad.

    • Identificación de carga

    • La identificación única de contenedores por medio del código de barras, permite capturar la información con una simple lectura automática, facilitando las operaciones de recepción, almacenamiento y despacho de los mismos. Sin importar que se encuentren llenos o vacíos, que sean refrigerados o no lo sean.

      Esta tecnología evita errores en la transcripción de información y asegura que cualquier movimiento quede registrado en el sistema de información. De esta forma se puede cubrir una de las grandes necesidades de los agentes de carga y las navieras: saber en todo momento dónde se encuentra un contenedor y cuál es su disponibilidad.

    • Identificación de Personal

    • Es importante identificar de forma única las personas, bien sea de una empresa, un club, una biblioteca etc, para controlar las actividades y operaciones que realizan; por ejemplo con control de activos fijos, control de acceso a áreas restringidas y manejo automático de nómina.

      Es de gran utilidad que dicha identificación sea estándar, a través del Código de Barras simbolizado e impreso en el carné de identificación, es posible leer automáticamente la información de cada persona al realizar operaciones internas que requieran algún tipo de control.

      Tome nota de los beneficios que alcanzaría con el aprovechamiento del uso del código de barras en su empresa:

      • Eliminación procesos de digitación en cualquier proceso que implique registrar la identificación de una persona.

      • Agilización en la prestación de cualquier servicio.

      • Seguridad en el registro de información.

      • Posibilidad de mantener bases centrales de datos de las personas, que sirvan a diversas entidades y eviten el fraude.

      • Agilización de procesos administrativos.

      • Control de acceso a áreas restringidas.

    • Funcionamiento de los lectores de código de barras

    • Los lectores generan una señal digital pura de las barras y espacios. En el caso de los lápices ópticos ésta señal es de baja frecuencia, pues es generada por el barrido de las barras y espacios que hace el operador al deslizar el lápiz sobre el símbolo de código de barras. En el caso del laser, la señal es similar a la generada por el lápiz, sólo que a una frecuencia mucho mayor. Esta última señal es conocida como HHLC (Hand held laser compatible).

    • Interfaces de los lectores de código de barras:

    • Obviamente las señales HHLC y wand requieren ser decodificadas para poder ser usadas por la computadora, y para esto existen diferentes interfaces, listadas a continuación.

      Decodidificador de teclado.

      Cuando se requiere que el decodificador sea de teclado, se utiliza lo que se conoce como keyboard wedge, el cual se conecta a la entrada del teclado de la PC o terminal.

      Existen diferentes tipos de wedges. Pueden tener una o dos entradas para lectores de código de barras y/o lector de cinta magnética, que son los más comunes.

      Estos decodificadores comúnmente se conectan a una PC, aunque hay modelos que pueden utilizarse en terminales tontas (WYSE, Link, IBM 5250). Obviamente se requerirá utilizar el cable apropiado y configurar el decodificador.

      RS-232.

      Para éste caso, los lectores tienen integrado un decodificador que envía la información en forma serial a la computadora. En la computadora se instala un TSR, que convierte la información a entrada de teclado.

      Wand Emulation.

      La señal HHLC se convierte a una de menor frecuencia, idéntica a la generada por un lápiz óptico. Esta interface es útil cuando el decodificador no permite utilizar la señal HHLC directamente, como es el caso de algunas terminales ASCII y portátiles.

      OCIA e IBM

      Generalmente usadas por terminales de punto de venta con arquitectura propietaria, como IBM, NCR, Fujitsu, Omron.

      A los lectores láser, CCD y omnidireccionales puede adaptárseles cualquier tipo de interface, que viene determinada en el modelo. Los lectores de lápiz solo tienen una interface.

      Tipos de lectores

      Los cuatro principales tipos de lectores son:

      Lápiz óptico o wand

      Debe ser deslizado haciendo contacto a lo ancho del código. Como se menciona anteriormente, envía una señal digital pura de las barras y espacios a una frecuencia igual a la velocidad con que se desliza el lápiz.

      • Ventajas: es económico

      • Desventajas: es lento, requiere que el usuario tenga práctica, tiene un bajo first read rate, requiere un decodificador de teclado, depende de la calidad de impresión del código.

      • Precios: 100-150 dlls

      Láser de pistola

      Realiza un barrido mediante una luz láser y que genera una señal similar a la del lápiz óptico, pero a una mayor frecuencia. Esta señal es conocida como HHLC (Hand Held Laser Compatible).

      • Ventajas: es rápido, puede no requerir decodificador de teclado, puede leer a distancia (standard 5 a 30 cm, especial hasta 15m con etiquetas de papel retrorreflectivo), tiene un alto FRR.

      • Desventajas: es relativamente caro (aunque existen modelos de 545 dlls), puede presentar problemas de durabilidad debido a sus partes móviles (espejos giratorios), puede tener problemas para leer con demasiada luz ambiental.

      • Precios: 500-1500 dlls

      CCD (Charge Coupled Device)

      Mediante un arreglo de fotodiodos toma una 'foto' del símbolo de código de barras y la traduce a una señal, que puede ser similar a la enviada por el láser (HHLC) o a la del lápiz óptico.

      • Ventajas: es rápido, es económico, es muy durable por no tener partes móviles, puede no necesitar decodificador de teclado, tiene un alto FRR.

      • Desventajas: requiere estar muy cerca del código (0-1.5cm), no puede leer símbolos que rebasen el ancho de su ventana.

      • Precios: 200-400dlls

      Láser omnidireccional

      Es un lector que envía un patrón de rayos láser y que permite leer un símbolo de código de barras sin importar la orientación del mismo.

      • Ventajas: Todas las ventajas del láser de pistola más un FRR de prácticamente 100%.

      • Desventajas: es caro (aquí no hay modelos económicos), el operador requiere que los artículos etiquetados no sean muy voluminosos pues el scanner se monta en posición fija.

      • Precios: 1200-2700 dlls

      Variantes y diferencias entre lectores

      Existen modelos de lectores que tienen solamente una interface integrada, pero hay algunos de ellos (generalmente laser y omni) que pueden tener varias interfaces y que requieren un simple cambio de cables y una reconfiguración para cambiar de una interface a otra.

      Configuración de lectores

      Normalmente los lectores láser, CCD y omnidireccionales se configuran leyendo comandos de programación impresos en menús de códigos de barras. Hay algunos que se configuran con dip switches, o enviándoles los comandos de programación serialmente.

      Impresión de Código de Barras

      Los código de barras se pueden imprimir de varias maneras diferentes, entre ellas:

      Película maestra

      Este método se utiliza para imprimir códigos de barras en imprentas, principalmente en empaques de comerciales destinados al comercio detallista. Se crea un original en una impresora de buena resolución y se reproduce por medios fotomecánicos añadiéndolo al original de impresión del empaque.

      Láser

      Se puede utilizar una impresora láser imprimir planillas de etiquetas en bajo volumen o en documentos serializados que se imprimen eventualmente.

      Impresión térmica

      Es la mejor tecnología para imprimir altos volúmenes de etiquetas en demanda o por lotes. Se utilizan impresoras industriales de mediana o alta velocidad que pueden imprimir sobre papel térmico o normal.

      Terminales portátiles de colección de datos

      Se utilizan para colección de datos en lugares donde es difícil llevar una computadora, como en un almacén o para trabajo en campo. Generalmente se diseñan para uso industrial rudo.

      Las terminales portátiles cuentan con display pequeño, teclado, puerto serial, puerto para conexión de un lector externo de código de barras y son programables.

      Características

      Algunas de ellas tienen el lector de código de barras integrado, y éste puede ser láser, CCD o lápiz. La memoria RAM con que cuentan puede variar de unos 64KB hasta 4 MB en terminales más sofisticadas. Las terminales más sofisticadas tienen radios, permitiéndose así una interacción en línea con el host.

      La forma en que se programan depende de la marca y del modelo: Pueden tener un lenguaje nativo o programarse mediante un generador de aplicaciones que genera un código interpretable por la terminal.

      Algunas tienen sistema operativo MS-DOS y consiguientemente pueden programarse en lenguajes de alto nivel.

      Los lectores soportados por la mayoría de éstas terminales son HHLC (CCD o láser) y lápiz óptico (wand emulation)

      Forma de uso de las terminales

      Una operación típica de una de éstas terminales es la siguiente:

      • Se despliegan prompts (preguntas) en pantalla.

      • Se leen los datos pedidos con el scanner o se teclean.

      • Se validan los mismos si es necesario.

      • Se repite el procedimiento las veces que sea necesario.

      • Cuando se tiene la información completa, se descargan los datos vía serial a una computadora en donde finalmente son procesados.

      Obviamente pueden existir otras variantes, pero el manejo básico de éstas terminales es el mismo.

    • ENTIDAD LIDER EN COLOMBIA EN CUANTO AL MANEJO DE ESTA TECNOLOGÍA

    • En Colombia el IAC, Instituto Colombiano de Codificación y Automatización Comercial, es el único ente autorizado para administrar y difundir los beneficios de hablar un mismo idioma en cuanto a la tecnología de códigos de barras se refiere.

      IAC es una asociación empresarial, independiente, privada, sin ánimo de lucro, que desarrolla, establece y promueve el uso e implantación de estándares globales y abiertos de identificación y comunicación, cuya aplicación agrega valor a la gestión de la cadena de abastecimiento de productos y servicios y al consumidor final. IAC es un punto de encuentro en donde todos los sectores económicos identifican e implementan soluciones tecnológicas comunes, frente a las necesidades que impone el mercado.

      La IAC pretende ser la entidad del país reconocida por su excelencia en el logro de la aplicación de soluciones tecnológicas que contribuyen a mejorar la competitividad de la cadena de abastecimiento, basada en eficientes relaciones de negocios.

      1.8.1. HISTORIA DEL INSTITUTO COLOMBIANO DE CODIFICACIÓN Y AUTOMATIZACIÓN COMERCIAL

      La historia del sistema EAN · UCC, partió de la necesidad de encontrar un lenguaje común. De entenderse en términos de productos. Como consecuencia de la globalización y del intercambio de productos en todo el mundo, nació la iniciativa en Estados Unidos y Europa de crear un sistema único de codificación. Hacia 1967 -época en la cual el desarrollo del mercado estaba en pleno auge en Estados Unidos- surge la necesidad de identificar los productos; la necesidad de hablar un mismo idioma. Es entonces cuando nacen las primeras muestras de identificación en Cincinati, donde se instalaron los primeros escáner en algunos puntos de venta de la firma Kroger Co, con los cuales se ratificó la necesidad de definir una identificación estándar para los productos. Sobre el tema de identificación ya se venía trabajando simultáneamente en Europa, y países como Alemania, Holanda y Francia habían desarrollado sistemas propios de identificación para sus productos. Códigos de barras
      Códigos de barras

      En Estados Unidos el 9 de abril de 1973 el periódico Supermarket News publicó una importante decisión para la industria de alimentos: se había adoptado el código de barras como el símbolo para el UPC (Universal Product Code), creado para identificar productos dentro del territorio americano. El primer lector de código de barras capaz de interpretar un código UPC fue instalado en el "Marsh's Supermarket" en Troy, Ohio, en julio de 1974. Durante 1973 a 1976 las reflexiones sobre la facilidad de un código europeo para identificar los productos continuó siendo un punto de atención en muchos países, y por ello se crea el European Numbering and Symbolisation of Products, que en 1977 es oficialmente registrado como EAN (European Article Numbering).

      EAN fue constituida como iniciativa europea y se extendió rápidamente a todo el mundo. Entre los países fundadores de EAN se encontraron Austria, Bélgica, Dinamarca, Finlandia, Francia, Alemania, Italia, Holanda, Noruega, Suecia, Suiza y El Reino Unido. A esta iniciativa se unieron en los ochenta Australia y Japón, lo cual cambió la concepción de EAN como una organización solamente europea y los llevó a convertirse en EAN International.Códigos de barras

      El sistema de identificación EAN · UCC, así como el EDI, se dieron a conocer en varios países del mundo y América Latina. Argentina, Brasil y México fueron los primeros en adoptar las ventajas del sistema. Poco después el sistema llegó a Colombia como una práctica innovadora causando gran interés entre diversos empresarios. El 28 de julio de 1988, 29 empresas colombianas entre las que se encontraban representados todos los sectores (industria, comercio, cajas de compensación, proveedores de equipos y servicios, gremios y asociaciones) coincidieron en la necesidad de crear el IAC, Instituto Colombiano de Codificación y Automatización Comercial como el organismo que administrará en el sistema

      Para acceder a las páginas impresas de la información adquirida de la IAC, favor ver anexos.

    • ORGANIGRAMA DE LA IAC

    • Códigos de barras

    • EMPRESAS QUE UTILIZAN ESTA TECNOLOGÍA

    • EMPRESAS VINCULADAS A LA IAC

      ALIMENTOS KRAFT DE COLOMBIA S. A.

      CARULLA

      CIA.GALLETAS NOEL

      CAFAM

      ALMACENES ÉXITO S.A

      CARVAJAL S. A. (FESA)

      CIA.NAL.DE CHOC.

      SUPERTIENDAS Y DROGUERÍAS OLÍMPICA S.A

      ALPINA S. A.

      COLGATE PALMOLIVE CIA.

      CONAVI

      COLSUBSIDIO

    Tecnologia .NET

    Tecnología .NET

    1. Introducción:

    ¿A quién va dirigido este curso? Con este curso pretendemos llegar a dos grupos de usuarios. Por una parte los que nunca han programado y quieren aprender este mundillo, y por otro los que ya conocen Visual Basic en sus anteriores versiones y quieren "saltar" al nuevo sistema .NET.

    Hay ventajas y desventajas para estos dos grupos. Para los que se quieren iniciar van a aprender una filosofía y técnicas de programación muy ambiciosas y robustas que componen el mejor entorno de desarrollo que existe actualmente. Por contra necesitarán un "duro" aprendizaje para entender todas las técnicas en las que se basa .NET para desarrollar aplicaciones, ahí es donde este curso entra en acción: proporcionar un buen nivel a los nuevos programadores para que comiencen a desarrollar en esta plataforma. Para el segundo grupo, como ventaja obvia está el conocimiento de un lenguaje de programación tan extendido como Visual Basic. La desventaja es que hay que borrar los conocimientos anteriores y partir de cero, es decir, hay que conocer esta nueva tecnología profundamente para entenderla y trabajar con la nueva filosofía de .NET. (Yo acabo de terminar esta fase)

    Es muy habitual ver programadores que enseguida obtenían unos modestos resultados poniendo cuatro controles de Visual Basic y unas líneas de código. Con este nuevo entorno nos tenemos que olvidar de esta técnica y madurar técnicamente hablando al conocer un entorno tan ambicioso como .NET. Empecemos por saber que esto del .NET...

    La evolución

    Hace varios años (como diez mas o menos) las aplicaciones las aplicaciones se creaban utilizando un mismo lenguaje para todas las tareas y para un sistema operativo concreto. Inicialmente la aplicaciones para Windows se realizaban en C y con llamadas directas a las "tripas" del Windows con la API (que tiempos más duros!!) El trabajo era enorme por dos cosas: la complejidad del lenguaje y la necesidad de conocer todos los detalles del sistema operativo para poder programar sobre él.

    Ahí nació Visual Basic, como una herramienta que permitía el desarrollo de las interfaces de una forma tremendamente sencilla para lo conocido hasta entonces y con un lenguaje conocido por entonces como el Basic. Se utilizaban los controles en formato VBX para diseñar las ventanas y luego un mecanismo de métodos y eventos para controlar el código.

    La parte profesional se "pasó" al C+, un lenguaje orientado a objetos muy complejo y difícil de mantener. Por otro lado Visual Basic seguía avanzando con los COM (Component Objetc Model): un modelo de objetos que permitía la reutilización de componentes independiente del lenguaje con el que estuviesen escritos, así transcurrieron las versiones 5 y 6 de Visual Basic que se convirtieron en los entornos mas importantes del panorama Windows.

    La solución

    Con el tiempo además de los COM aparecieron otras técnicas complementarias para ampliar los lenguajes existentes. Pero esto heterogeneidad de tecnologías, muchas veces dictadas por las necesidades tecnológicas del momento, como Internet, hicieron que se produjeran multitud de servicios duplicados, creación de servicios exclusivamente para algunos lenguajes, poca reutilización de código, mas complejidad, ...

    La solución definitiva se ha planteado con .NET que consta de una serie de servicios iguales en todos los lenguajes que mantienen la integridad con los desarrollos existentes y hace posible una interoperatividad entre los lenguajes desconocida hasta el momento. Esto es podemos utilizar varios lenguajes diferentes (los permitidos .NET) y todos tendrán disponibles desde el mismo entorno de desarrollo hasta los controles y componentes de programación. Se acabó que Visual C tenga estos componente o Visual Fox Pro otros o Visual Basic otros... todos parten de la tecnología .NET y comparten por lo tanto los mismos componentes y objetos. Podemos incluso escribir partes distintas de un mismo programa con varios lenguajes .NET.

    Visual Basic .NET y el entorno .NET Framework

    Visual Basic .NET usa una jerarquía de clases que están incluidas en el .NET Framework, por tanto conocer el .NET Framework nos ayudará a conocer al propio Visual Basic .NET, aunque también necesitarás conocer la forma de usar y de hacer del VB.NET ya que, aunque en el fondo sea lo mismo, el aspecto sintáctico es diferente para cada uno de los lenguajes basados en .NET Framework.

    Importante Luego el verdadero núcleo de todo es .NET Framework un entorno con multitud de clases y objetos disponibles para trabajar con ellos. Sobre este núcleo tendremos los lenguajes de programación y uno de ellos es Visual Basic .NET. Por eso es muy importante conocer que es el .NET Framework

    Así que tranquilo primero veamos que eso del .Net Framework que básicamente se puede decir que es el hermano mayor de .NET

    1.1 ¿Qué es el .NET Framework?

    Literalmente .Net Framework es:

    ".NET Framework es un entorno para construir, instalar y ejecutar servicios Web y otras aplicaciones.
    Se compone de tres partes principales: el Common Language Runtime, las clases Framework y ASP.NET"

    "El .NET Framework es un entorno multi-lenguaje para la construcción, distribución y ejecución de Servicios Webs y aplicaciones."
    "El .NET Framework es una nueva plataforma diseñada para simplificar el desarrollo de aplicaciones en el entorno distribuido de Internet."

    Luego .NET es una nueva filosofía en cuanto a entornos de desarrollo. Este entorno puede utilizar varios lenguajes diferentes para escribir programas, todos se apoyarán en las herramientas que ofrece para conseguir aplicaciones .NET y el alma de este entorno es el .NET Framework

    .Net Framework permite el desarrollo de aplicaciones a través del uso de un conjunto de herramientas y servicios que proporciona y que se agrupan en tres bloques:

    • El entorno de ejecución común ó Common Languaje Runtime (CLR)
    • Jerarquía de clases de .NET
    • Motor de generación de formularios, para crear nuestras aplicaciones

    El Common Lenguage Runtime (CLR) es una serie de librerías dinámicas (DLLs), también llamadas assemblies (o ensamblados), que hacen las veces de las DLLs del API de Windows así como las librerías runtime de Visual Basic o C++.

    Como sabrás, cualquier ejecutable depende de una forma u otra de una serie de librerías, ya sea en tiempo de ejecución como a la hora de la compilación. Pues el CLR es eso, una serie de librerías usadas en tiempo de ejecución para que nuestros ejecutables o cualquiera basado en .NET puedan funcionar. Se acabó eso de que existan dos tipos de ejecutables: los que son autosuficientes y no dependen de librerías externas o los que necesitan de librerías en tiempo de ejecución para poder funcionar, tal es el caso de las versiones anteriores de Visual Basic. (Esto lo entenderán mejor los antiguos programadores de VB)

    Es decir podíamos tener un fichero ejecutable único que no dependiese de ninguna librería, bastaba por lo tanto copiarlo a otro equipo y podía funcionar sin problemas. Por otro lado están los que necesitan librerías externas o ficheros DLL que se instalan en nuestro equipo ayudándose de programas de instalación. Estas librerías se copian normalmente en nuestra carpeta \Windows\System32.

    Si decimos que ahora que con este CLR ya no necesitamos esas librerías, perfecto, sólo tendremos que instalar este componente y nuestros programas .NET funcionarán en cualquier equipo.

    Por otro lado, la biblioteca de clases de .NET Framework proporciona una jerarquía de clases orientadas a objeto disponibles para cualquiera de los lenguajes basados en .NET, incluido el Visual Basic. Esto quiere decir que a partir de ahora Visual Basic ya no será la "oveja negra" de los lenguajes de programación, sino que tendrá a su disposición todas las clases disponibles para el resto de los lenguajes basados en .NET, (o casi), con lo cual sólo nos diferenciará del resto de programadores en la forma de hacer las cosas: ¡más fáciles!

    Los poco flexibles modelos de programación actuales impiden al programador contemplar la idea de un proyecto para Internet que le permita crear aplicaciones distribuidas más potentes. Estos sistemas utilizaban las tecnologías COM, ASP, ADO, ... que individualmente son buenas pero que no están pensadas para ser ejecutadas en la red. Estos elementos definían la arquitectura Windows DNA (Distributed Internet Architecture) que hasta ahora era el modelo de programación para Internet. Esta tecnología queda ahora desplazada completamente por la arquitectura .NET

    Microsoft .NET ofrece una visión orientada a objeto del sistema operativo Windows e incluye cientos de clases que encapsulan los objetos mas importantes del núcleo de Windows. Mas adelante veremos y definiremos las clases pero de una forma resumida digamos que son plantillas para crear objetos, por ejemplo: la clase "botón" me permite crear botones de comando y trabajar con ellos.

    En este curso nos centraremos en la parte de Visual Basic.NET pero no debemos olvidad que .NET es mas que este lenguaje, por ejemplo ASP.NET es una potente plataforma de desarrollo para Internet, permite crear complejas aplicaciones basadas en web. Lo bueno es que al terminar este curso tendremos un gran punto de partida para seguir con esta tecnología de .NET.

    Espero no haberte liado mucho, mas que nada que esto no es la presentación de un simple lenguaje de programación, es la presentación de cómo funciona nuestro Windows y como lo hará en el futuro apoyado en esta tecnología.

    1.2 Comenzar con .NET

    Por ahora estamos convencidos de que .NET es la mejor plataforma de desarrollo y el que no la domine quedará apartado del mundo Windows en poco tiempo. Del mundo Windows me refiero al conocimiento de su tecnología y desarrollo de nuevas aplicaciones con los nuevos sistemas operativos: Windows 2003 Server y Windows XP. Vamos ahora con lo que necesitamos para instalarlo y los pasos necesarios

    Al igual que las anteriores versiones anteriores de Visual Basic, éste se encuentra dentro del paquete Visual Studio .NET, que incorpora varios lenguajes, herramientas y tecnologías. En nuestro caso nos centraremos en Visual Basic .NET del que realizaremos ahora su instalación.

    Los requisitos son los siguientes:

    Mínimo Recomendado
    Procesador Pentium II - 500 Mhz Pentium III- 800 Mhz
    Memoria 128 Mb 256 Mb
    Espacio en disco 3 Gb 10 Gb
    Sistema operativo Windows 2000/XP Windows 2000/XP

    En Visual Studio .NET y como ya es habitual en el resto de las aplicaciones de Microsoft, debemos ser generosos con el equipo para desarrollar en .NET. Por ejemplo, como veremos mas adelante, el entorno de desarrollo tiene tanta información que trabajar con una resolución menor que 1027x768 es imposible, y ésta se queda incluso limitada y no podremos desplegar todas las pantallas. La ayuda ocupa bastante espacio en disco así como el programa en memoria cuando está en ejecución. En definitiva, debemos tener como mínimo la configuración recomendada por Microsoft para trabajar de una forma cómoda...

    En cuanto al sistema operativo si que es obligatorio utilizar las versiones 2000 o XP por razones de aprovechamiento de recursos y sobre todo, de estabilidad.

    2. Una definición más profunda de .NET

    La mejor forma de comprender cómo funciona .NET es analizar las numerosas capas en las que se divide .NET Framework. Veamos la siguiente figura:

    (No te asustes con lo que vas a leer aquí, es obligatorio que lo veamos por encima, al terminar el curso vuelve a leer esto y veras que sencillo era.)

    Como hemos comentado antes .NET Framework constituye la base sobre la que se asienta .NET. Para nosotros es la pieza fundamental de esta nueva tecnología y es la que nos va a proporcionar las herramientas y servicios que necesitaremos en nuestros desarrollos. Podemos agrupar en tres bloques el conjunto de herramientas y servicios:

    • El runtime de lenguaje común o entorno de ejecución común (CLR)

    • Biblioteca de clases base de la plataforma .NET (.NET Framework Base Classes)

    • Motor de generación de la interfaz para crear formularios e interfaces de usuario.

    Estas son tres de las capas del esquema anterior. Simplemente esa jerarquía me dice que en el nivel mas alto están los lenguajes que vamos a utilizar en nuestro desarrollo con .NET que pueden ser varios (en nuestro caso Visual Basic). Luego traduce esas instrucciones al estándar .NET para poder trabajar con esas instrucciones de una forma independiente al lenguaje con que se escribieron. El siguiente paso es la generación de formularios para Windows o web (ASP). Luego el enlace con bases de datos si las hay. Por fin llegamos a todos los objetos disponibles y por último el runtime de lenguaje común (CLR) que es el que va a ejecutar la aplicación. Veamos ahora más técnicamente de abajo hacia arriba:

    1. Runtime del lenguaje común

    El runtime del lenguaje común es la primera capa que pertenece a .NET Framework. Esta capa es la responsable de los servicios básicos de .NET, tales como la administración de memoria, la recolección de los elementos no utilizados, el control estructurado de excepciones y del subprocesamiento múltiple. Si .NET se transporta a otras arquitecturas que no estén basadas en Windows el primer paso sería escribir un runtime del lenguaje para el nuevo equipo. El CLR tiene estas características:

    • Proporciona mejoras para el programador que antes tenía que elaborar

    • Administra el código en tiempo de ejecución: carga en memoria, liberación de memoria, ...

    • Gestiona la seguridad del código ejecutado

    • Abre posibilidades a otros fabricantes para incorporar sus lenguajes

    • Facilita la distribución e instalación de aplicaciones. Elimina los temibles conflictos de DLL's y versiones de ellas

    Es la interfaz entre nuestro código y el sistema operativo, de ahí que si mañana Microsoft hace un CLR en lugar de para Windows, para Macintosh se puedan ejecutar nuestras aplicaciones .NET en este sistema.

    2. Biblioteca de clases

    La biblioteca de clases base (BCL) es la parte de .NET Framework que define todos los tipos de datos básicos, tales como System.Object (raíz de la jerarquía de objetos .NET), tipos numéricos y de fechas, tipo string, matrices y colecciones. La BCL contiene también clases que administrarán las características centrales de .NET: entrada/salida de archivos , subprocesamiento, serialización y seguridad. La forma en la que los tipos se implementan en la BCL siguen las especificaciones llamadas Common Type System (CTS). Por ejemplo, estas especificaciones dicta la forma en la que un tipo .NET expone campos, propiedades, métodos y sucesos, también cómo un tipo puede heredar otro tipo...

    Tranquilo... a lo largo del curso veremos estas clases y por fuerza trabajaremos con ellas porque todo en .NET son clases: desde un gráfico, un botón o nuestro programa.

    3. Capa de datos

    La capa de datos y XML contienen las clases .NET que trabajan con bases de datos y con XML. Anteriormente el soporte XML era una compatibilidad proporcionada por un componente externo. En .NET vemos cómo está integrado en su mismo núcleo. Podemos decir que XML es el formato que utiliza .NET para almacenar cualquier tipo de información. La parte de datos es la que se conoce como ADO.NET y es el equivalente en .NET a la tecnología ActiveX Data Object (ADO), ampliamente conocida por los programadores de Visual Basic, Intranets, ...

    Nota para los conocedores de ADO: Aunque su nombre es muy parecido a ADO.NET son muy diferentes. ADO cubre prácticamente todas las técnicas de bases de datos disponibles (incluyendo cursores del lado del cliente y del servidor, conjuntos de datos desconectados y actualizaciones en diferido). ADO.NET está centrado principalmente en los conjuntos de resultados desconectados (llamados DataSets) Este objeto es mucho mas potente que el objeto ADO Recordset y puede almacenar datos provenientes de varias tablas, relaciones entre diferentes tablas de datos y puede importar y exportar datos en XML.
    4. Capa de formularios y ASP

    Las dos capas siguientes son ASP.NET y Windows Forms. Aquí se sitúan todas las clases que podremos utilizar para generar las páginas web en el primer caso y las ventanas estándares o formularios en las aplicaciones de Windows en el segundo caso.

    Nota ASP.NET es la parte de .NET encargada del desarrollo en web. Una evolución muy ampliada de las páginas ASP y comprende los web forms y los servicios web XML. No lo veremos en este curso pero el salto a desarrollar en Web es muy sencillo...

    Aunque estén en el mismo nivel las tecnologías son muy distintas. Web Forms se ejecuta en el servidor y produce HTML y es la base de las conocidas Intranets donde estas páginas devuelven otras páginas web con conjuntos de resultados u otros datos. Windows Forms se ejecuta en el cliente, un equipo Windows.

    La biblioteca de clases de .NET Framework está formada por una colección de ensamblados (o Assembly), cada uno de los cuales comprende una o más DLL. Veamos que esto de un "ensamblado"...

    Un ensamblado consiste en un conjunto de tipos y recursos reunidos para formar la unidad mas elemental de código que puede ejecutar el entorno .NET Framework. Estos ensamblados son los elementos con los que construiremos una aplicación: una aplicación .NET se compone de varios ensamblados. Podemos llamar también a un ensamblado como una DLL lógica (recordamos que una DLL es una biblioteca de enlaces dinámicos). Decimos lógica porque se trata de una lista de ficheros que se referencian en tiempo de ejecución pero que no se compilan para producir un fichero físico, a diferencia de las DLL's tradicionales. Un ensamblado va mucho más allá ya que puede contener otros recursos además de clases como imágenes, ...

    5. Capas de CLS y lenguajes

    Donde están las especificaciones de los lenguajes y su sincronización con el entorno .NET

    Después de esta locura de siglas y tecnologías vamos al grano con la instalación y la realización de algún ejemplo sencillo...

    3. Instalación

    Lejos quedan las sencillas instalaciones de las versiones anteriores de Visual Basic, en las que prácticamente en un sólo CD disponíamos de todas las herramientas y componentes necesarios... Esta versión es un poco mas compleja de instalar (sólo un poco mas) sobre todo porque Microsoft ha cumplido con algo largamente esperado que era un entorno único de desarrollo. Ahora todos los lenguajes de desarrollo de Microsoft estarán incluidos en Visual Studio .NET con un único interfaz, con todas la ventajas que conlleva en cuanto a simplicidad y sobre todo coherencia entre entornos. Vamos con la instalación...

    En nuestro curso vamos a utilizar la versión "Enterprise Developper" de Microsoft Visual Studio .NET 2003. La diferencia con otras versiones es la cantidad de componentes que tenemos para instalar, pero como en nuestro caso nos centraremos únicamente en Visual Basic .NET sólo instalaremos estos componentes.

    Introducimos el Cd número 1 y se presentará una pantalla como esta:

    Aquí empiezan las diferencias con otras versiones. Para empezar debemos instalar los prerrequisitos, es decir, elementos que necesita tener instalado nuestro sistema operativo antes de instalar Visual Studio. Si tenemos activada esta primera opción debemos hacer clic en ella para instalarlos...

    Estos prerrequisitos pueden variar de una versión de sistema operativo a otro y según el equipo. Por ejemplo algunos de los componentes que va a instalar son:

    • Microsoft Windows Installer 2.0 (para realizar las instalaciones de este entorno)
    • Cliente de extensiones web de Microsoft FrontPage. Para conectar Internet Information Server con Front Page. Esto se utilizará mas con ASP.NET
    • Archivos de tiempo de ejecución para instalación
    • Microsoft Data Access Components. Todos las bibliotecas y controles para acceso a datos
    • Microsoft .NET Framework. (El alma de nuestro entorno)

    Introducimos entonces el CD marcado como "Prerrequisitos", pulsaremos en instalarlos y tras algún anuncio de que va a comenzar esta instalación veremos la pantalla con la lista de componentes que va a instalar:

    Dependiendo de los elementos a instalar es posible que nos pida reinicio del sistema para continuar con la instalación, incluso una pantalla nos pedirá si queremos un inicio de sesión proporcionando los credenciales en la pantalla.

    Nota Debido a la cantidad de elementos que instala y sobre todo, a su importancia, ya que algunos son de sistema, se recomienda encarecidamente que esta instalación se realice en un equipo lo más limpio posible. Lo mejor es que no hayas tenido versiones anteriores de otros lenguajes y sobre todo un equipo un poco con buenas prestaciones.

    Una vez instalada esta parte veremos que la parte de prerrequisitos queda deshabilitada y ya podemos acceder a la de la instalación. Vamos por fin a la instalación de VB.NET. Pulsamos en el enlace de la instalación y tras unos segundos se nos presentará la pantalla de instalación de .NET en la que debemos aceptar el contrato de licencia para usuario final. Finalmente obtendremos:

    Ahora debemos seleccionar sólo los componentes que nos interesen... Para empezar en las herramientas del lenguaje sólo dejaremos marcado Vb.NET:

    Los demás componentes podríamos deshabilitarlos porque no los vamos a necesitar en nuestro curso. Son elementos mucho más ambiciosos para el desarrollo empresarial que son más complejos. De momento bastante con comprender bien esta arquitectura y comenzar a programar con Vb.NET. Para los programadores de ASP: la opción ASP.NET se encuentra dentro de la opción "Componentes de servidor" y luego en "Desarrollo Web". En mi instalación voy a desactivar todas las opciones porque no las voy a utilizar ahora, siempre podremos acudir al este Cd de instalación para añadir componentes. Nos quedamos pues, sólo con Visual Basic .NET, si vemos la ocupación veremos que "sólo" se queda en unos 750 Mb de espacio. (Eso si, sin la ayuda todavía). Pulsamos en instalar y comenzará...

    Al cabo de unos minutos nos pedirá el siguiente CD:

    Hasta que por fin un mensaje nos avisará de que la instalación ha terminado (podemos ir tranquilamente a tomar un café mientras tanto...). Ahora nos queda la segunda parte que es la extensa documentación que como siempre es muy precisa y bien traducida. Para esto utilizaremos los dos cd marcados como "MSDN Library". Cuando nos parezca la pantalla inicial de instalación pulsaremos en la opción "Documentación del producto" que nos pedirá el Cd1 de MSDN:

    Una vez en marcha dispondremos de opciones para instalar la ayuda de todos los elementos de .NET:

    Pulsaremos en siguiente, aceptaremos el contrato de licencia y escribiremos si queremos un nombre de registro de instalación. Luego seleccionaremos la opción Personalizada para poder elegir los componentes que queremos instalar. Seleccionaremos "Documentación de VB.NET", lo demás son opciones del entorno que no utilizaremos en este curso pero que podríamos instalar mas adelante...

    Pulsamos continuar y ya tenemos lista la instalación... Aceptamos para que inicie y el programa instalará la ayuda indicada... si es necesario pedirá los otros dos cd con el resto de la información hasta que finalmente termine.

    Si todo es correcto por fin tenemos nuestro Visual Basic .NET instalado. Vamos a pasar ahora a realizar una rápida aplicación para ver que todo funciona e ir conociendo el entorno de desarrollo... No te preocupes si no entiendes alguna cosa, es más que nada para conocer de que partes se compone un programa, cómo escribir y por fin ejecutarlo...

    4. La primera aplicación con Vb.NET

    Extensión de los ficheros de código.

    En Visual Basic .NET a diferencia de lo que ocurría en las versiones anteriores de Visual Basic, sólo existe un tipo de fichero de código, el cual tiene la extensión .vb, en este tipo de fichero pueden coexistir distintos tipos de elementos, por ejemplo: un módulo de clase, un formulario, un módulo de código, un control, etc.; mientras que en las versiones anteriores de Visual Basic, cada uno de estos elementos tenían su propio tipo de fichero con su respectiva extensión. Como cometamos al principio no es necesario ningún conocimiento de anteriores versiones de Visual Basic pero iré comentando los cambios importantes para aquellos que ya conocían versiones anteriores y puedan ir viendo los cambios de esta nueva versión.

    Ejemplo de los ficheros de un proyecto:

    Para los antiguos programadores, esta tabla muestra la extensión que tienen los diferentes tipos de ficheros de VB.NET y su comparación con los de VB.NET:

    Recurso Visual Basic 6.0 Visual Basic .NET
    Formulario (Form) .frm .vb
    Módulo (Module) .bas .vb
    Módulo de clase (Class Module) .cls .vb

    Obviamente si hemos dicho que en Vb.NET todos los ficheros tienen la extensión .vb, los equivalentes de anteriores versiones cambiarán a esta extensión.

    Tipos de ejecutables.

    Con Visual Basic .NET podemos crear muchos tipos de proyectos pero los más importantes son los destinados a crear aplicaciones ejecutables, éstas pueden ser de dos tipos:

    • De consola, no gráfico, al estilo del viejo MS-DOS. Es decir se abrirá una ventana tipo MS-DOS donde se ejecuta un programa en modo texto.
    • Gráficos, como los que normalmente estamos acostumbrados a ver en Windows. Es decir, compuesta de formularios donde podremos interactuar con el programa.

    Existen otros tipos de aplicaciones que se pueden crear con Visual Basic .NET: aplicaciones ASP.NET, (realmente no es una aplicación o ejecutable, sino un compendio de distintos tipos de elementos...), servicios Web, servicios Windows, etc.

    4.1 La primera aplicación con Visual Basic .NET.

    Vamos cuanto antes a crear nuestra primera aplicación para conocer por fin el funcionamiento de .NET.

    El primer paso es iniciar el entorno de Visual Studio .NET, vamos al menú Inicio y seleccionamos Visual Studio .NET 2003 (en mi caso por la versión que he instalado). La primera pantalla que aparece por defecto nos muestra la "página de inicio" desde la cual pueden crearse nuevos proyectos o bien abrir alguno de los más recientemente abiertos:

    Para los conocedores de otros entornos podemos ver en la pantalla la disposición de los elementos que recuerda más al Visual C que la de Visual Basic. De hecho este es el primer obstáculo para los programadores de Visual Basic: el nuevo IDE o Entorno de desarrollo integrado, auque en cuanto lo conozcamos no será un obstáculo sino una imprescindible ayuda para desarrollar y depurar programas. Sigamos con nuestro primer programa... para esto pulsamos en la opción de "Nuevo Proyecto"

    Nos mostrará los diferentes tipos de proyectos que se pueden crear:

    Para empezar tampoco esta nada mal ¿no?. Vemos una buena cantidad de nuevos proyecto para crear... y eso que sólo hemos instalado el Visual Basic .NET. Si hubiésemos instalado los otros lenguajes tendríamos un buen número adicional de proyectos para crear. Bien, seleccionamos Visual Basic a la izquierda y a la derecha seleccionamos "Aplicación de consola"

    El objetivo de este ejemplo es crear una básica aplicación de consola que se ejecutará en una ventana MS-DOS en lugar del habitual Windows. De momento es mas sencillo para que creemos nuestro primer ejemplo...

    Especificaremos el directorio en el que se guardará el proyecto, así como el nombre del mismo, (creando un directorio con el nombre del proyecto indicado), dejamos el nombre que muestra por defecto : "ConsoleApplication1", pulsamos Aceptar y finalmente se creará el proyecto.

    Si nos fijamos en la pantalla central y en la derecha podemos ver varias cosas:

    Por una parte a la derecha vemos en el explorador de soluciones que ha creado un fichero llamado Module1.vb, con el código necesario para empezar a escribir. Vemos también que ha creado un "procedimiento" Sub Main, que se utilizará como punto de entrada de nuestro ejecutable, también ha creado una "definición" llamada Module Module1 con su respectivo End Module, que indica dónde termina la definición del módulo.

    Es decir parece que un proyecto de consola se compone de un fichero "module1.vb" en dentro de él las instrucciones de colocarán dentro de las etiquetas "Module Module1" y "End Module". Y dentro de estas etiquetas el programa principal se colocará dentro de las instrucciones "Sub Main" Mas adelante conoceremos el porqué de estos módulos y nombres...

    Nota : lo que estamos creando es una aplicación tipo consola, es decir, no se creará ninguna ventana gráfica, sino que el ejecutable que vamos a crear funciona desde una ventana de MS-DOS (o consola). Esto lo comprobaremos cuando ejecutemos el proyecto..

    Lo que queremos hacer en este ejemplo es un muy sencillo programa que diga "Hola mundo .NET", por tanto para mostrar un texto en la "consola" usaremos una función, método o instrucción, ... como veremos más tarde, todo esto es posible gracias a los assemblies o a las clases incluidas en el .NET Framework. De momento sigamos este ejemplo ...

    La función en cuestión es Console.Write y se usa de la siguiente forma:

    Console.Write("Hola mundo .NET"), es decir incluiremos dentro de paréntesis lo que queremos que se muestre en la consola, en este caso queremos mostrar un texto, el cual hay que incluirlo dentro de comillas dobles.

    Lo escribimos entre el Sub Main() y el End Sub. Comprobaremos que cuando escribimos Console y el punto, se mostrarán las funciones que Console pone a nuestra disposición, así como una pequeña ayuda, en modo de ToolTip, (ya conocido en otras versiones de Visual Basic).

    Bien, ya tenemos todo lo que necesitamos. Ahora tendremos que indicarle al "Entorno Integrado" (IDE) que compile el proyecto y lo ejecute, y después de compilarse el proyecto, se deberá mostrar el texto en una ventana de DOS (o consola). Una vez escrito pulsamos en el botón que se muestra en esta pantalla:

    Para verla correctamente añadiremos debajo una instrucción para que haga una pausa y podamos comprobar que el programa funciona:

    Que al ejecutarlo da como resultado:

    Al ejecutarse hemos visto una pantalla en modo texto con el mensaje que hemos escrito de "Hola Mundo .NET". Lo que hemos hecho ha sido ejecutar el programa desde nuestro entorno de desarrollo, para hacer el programa final tendríamos que compilarlo para generar el programa ejecutable, lógicamente con extensión .exe.

    Cómo escribir este programa

    Con lo que tenemos terminada nuestra primera y "útil" aplicación en MS-DOS realizada en .NET, (ya puedes presumir :-).

    5. Mas conceptos de Visual Basic .NET.

    Sigamos con mas conceptos básicos sobre .NET. Una aplicación .NET se compone como hemos dicho antes de uno o mas ensamblados, cada uno de los cuales estará formado por uno o mas archivos. La aplicación por tanto puede ser tan simple como un sólo archivo .EXE o un conjuntos de varios archivos de código y elementos externos.

    Las aplicaciones .NET se ejecutan en lo que se llama "dominio de la aplicación" que es como un espacio donde se ejecuta nuestra aplicación y está aislada del resto de las aplicaciones que se están ejecutando en Windows. Perfecto para la seguridad y para que un fallo de aplicación no afecte a los demás...

    Antes de continuar con otro sencillo ejemplo vamos a conocer un poco sobre el entorno de desarrollo de Visual Studio .NET, (que es obviamente el que utilizamos con Visual Basic .NET), para que podamos configurar algunos aspectos, por ejemplo para indicar cómo se comportará el compilador e intérprete sobre el código que escribamos o para configurar los ensamblados (assemblies) que se usarán en nuestras aplicaciones. (Recuerda que Visual Basic .NET usa una serie de librerías (de clases) con las funciones que necesitemos en cada momento...)

    Nota: Es muy importante seguir estos ejemplos para conocer un poco las tripas y nomenclatura de VB.NET, así que es obligatorio realizar una pausada lectura de esta parte del capítulo... luego me lo agradeceréis

    Sigamos, para poder mostrar un texto en la consola, necesitamos tener disponible la librería en la cual está declarada la clase Console, para que podamos acceder a las funciones que dicha clase pone a nuestra disposición, (por ejemplo Write o Read); en este caso la librería en la que está la clase Console es: System. System realmente es un Namespace o espacio de nombres, no es una librería o assembly. (Tranquilo, sigue leyendo)

    Luego añadiremos otras librerías para trabajar con bases de datos, gráficos, ... así cada una de ellas agrupa un tipo de funciones.

    ¿Que es un Namespace (o espacio de nombres)?

    "Un espacio de nombres es un esquema lógico de nombres para tipos en el que un nombre de tipo simple, como MiTipo, aparece precedido por un nombre jerárquico separado por puntos. [...]"

    Así es como lo definen en el eBook de .NET Framework de Microsoft. Pero mas claro... un Namespace es una forma de agrupar clases, funciones, tipos de datos, etc. que están relacionadas entre sí. Por ejemplo, entre los Namespaces que podemos encontrar en el .NET Framework encontramos uno con funciones relacionadas con Visual Basic: Microsoft.VisualBasic. Si te fijas, Microsoft y VisualBasic están separados por un punto, esto significa que Microsoft a su vez es un Namespace que contiene otros "espacios de nombres", tales como el mencionado VisualBasic, CSharp y Win32 con el cual podemos acceder a eventos o manipular el registro del sistema...

    Para saber que es lo que contiene un Namespace, simplemente escribe el nombre con un punto y te mostrará una lista desplegable con los miembros que pertenecen a dicho espacio de nombres. Haz la prueba y en el código escribe la palabra "Microsoft." (Con el punto al final), verás que se despliega los posibles Namespaces disponibles y si seguimos y escribimos, o seleccionamos VisualBasic con un punto al final, veremos otra vez los Namespaces de esta otra clase llamada VisualBasic.

    Pero de momento no te líes, simplemente que podemos utilizar como una especie de grupos de instrucciones y otros componentes añadiendo o utilizando "namespaces" a nuestros programas. De esta forma mantenemos los recursos de las aplicaciones en diferentes sitios reduciendo los conflictos.

    Por regla general se deberían agrupar en un Namespace funciones o clases que estén relacionadas entre sí. De esta forma, será más fácil saber que estamos trabajando con funciones relacionadas entre sí. Pero el que distintos espacios de nombres pertenezcan a un mismo Namespace no significa que todos estén dentro de la misma librería o assembly. Un Namespace puede estar repartido en varios assemblies o librerías. Por otro lado, un assembly, (o ensamblado), puede contener varios Namespaces.

    Hay espacios de nombres específicos por ejemplo para los gráficos y otros para trabajar con bases de datos, así los tenemos organizados de una forma mas cómoda para localizarlo y referirnos a ellos en el código.

    Pero de esto no debemos preocuparnos, ya que el IDE de Visual Studio .NET se encarga de "saber" en que assembly está el Namespace que necesitamos.

    Los Spacenames mas importantes, los de primer nivel y de los que luego "cuelgan" o pertenecen los demás son:

    • System. Contiene clases fundamentales y clases base que definen los valores y tipos de datos de referencia, eventos y controladores de eventos, interfaces, atributos y excepciones de procesamiento comúnmente utilizados.
    • Microsoft.VisualBasic. Contiene clases que admiten la compilación y generación de código mediante el lenguaje Basic .NET.

    Otra vez te ruego tranquilidad y tiempo, a medida que avancemos en .NET irás juntando todos estos conceptos.

    ¿Que es un assembly (o ensamblado)?

    "Los ensamblados componen la unidad fundamental de implementación, control de versiones, reutilización, ámbito de activación y permisos de seguridad en una aplicación basada en .NET. Los ensamblados adoptan la forma de un archivo ejecutable (.exe) o un archivo de biblioteca de vínculos dinámicos (.dll), y constituyen unidades de creación de .NET Framework. Proporcionan a Common Language Runtime la información que necesita para estar al corriente de las implementaciones de tipos. Un ensamblado puede entenderse como una colección de tipos y recursos que forman una unidad lógica de funcionalidad y que se generan para trabajar conjuntamente"

    Para que nos entendamos, podríamos decir que un assembly es una librería dinámica (DLL) o programa ejecutable en la cual pueden existir distintos espacios de nombres. Aunque esto es simplificar mucho, por ahora nos vale.

    Un ensamblado o assembly puede estar formado por varios ficheros DLLs y EXEs, pero lo más importante es que todos los ensamblados contienen un manifiesto (o manifest), gracias al cual se evitan muchos de los quebraderos de cabeza a los que Windows nos tiene acostumbrados, al menos en lo referente a las distintas versiones de las librerías y ejecutables. Este manifiesto es una tabla de contenido del Assembly que lo identifica y dice su versión y otros datos. Esta información elimina lo que en otras versiones se llamaba "infierno de las DLL" por los enormes problemas de versiones y conflictos que generaban.

    Por ejemplo, supongamos que tenemos una librería DLL que en su primera versión contenía X funciones. Al tiempo, se crea la segunda versión de dicha librería en la que se cambian algunas funciones y se añaden otras nuevas, para mejorar el rendimiento de las funciones contenidas en esa librería se usa otra DLL que es usada por algunas de las funciones contenidas en esa segunda versión. Esa otra librería puede ser una librería del sistema, la cual a su vez se actualiza con nueva funcionalidad y puede que dicha funcionalidad dependa a su vez de una tercera librería.

    Resulta que instalamos un programa que usa las últimas versiones de todas estas librerías. Todo va bien, el programa funciona a las mil maravillas y nosotros estamos muy satisfechos de ese programa que no se cuelga ni una sola vez... Ahora llega a nuestras manos otra aplicación que necesitamos instalar y la instalamos, pero resulta que esa aplicación usa la primera versión de nuestra famosa librería. Si el programa de instalación está bien hecho, no ocurrirá nada malo, ya que al descubrir que tenemos una versión más reciente de la librería, deja la que ya está instalada. Probamos el programa de todo funciona bien. Probamos el maravilloso programa anterior y también funciona bien. ¿Cual es el problema? Por ahora ninguno, pero espera...

    Después instalamos un programa que usa una de las librerías del sistema u otra que también usa nuestra "flamante" librería, pero ese programa se ha instalado de "mala manera", bien porque el programa de instalación sea malo o bien porque simplemente se ha instalado mal... como quiera que ha instalado una librería anterior a la que nuestros dos maravillosos ejecutables usan, se puede dar el caso de que ninguno de los dos programas funcionen correctamente... esto ocurrió cuando salió el Internet Explorer 4 y causó no pocos problemas... aunque también ha ocurrido con otros programas que no han tenido en cuenta a la hora de instalar que ya existe una versión más reciente de la librería. Por suerte, esto ya es menos común que hace unos años, sobre todo si los programas de instalación están creados con el Windows Installer o estamos usando el Windows 2000/XP.

    Pero es que .NET mejora aún esa "imposibilidad" de meter la pata ya que cada assembly contiene un manifiesto en el cual se indica:

    • Nombre y la versión del assembly
    • Si este assembly depende de otros ensamblados, con lo cual se indica hasta la versión de dichos ensamblados
    • Los tipos expuestos por el assembly (clases, etc.)
    • Permisos de seguridad para los distintos tipos contenidos en el assembly.
    • Datos del copyright, etc.

    Nuevamente hay que comentar que no hay que preocuparse mucho de esto, ya que es el propio .NET el que se encarga de que todo funcione correctamente (al menos a priori)

    La ventaja de los ensamblados es que "realmente" no necesitan de una instalación y un registro correcto en el registro del sistema de Windows, ya que es el "intérprete" de .NET el que se encarga de hacer las comprobaciones cuando tiene que hacerlas. Por tanto podríamos distribuir una aplicación sin necesidad de crear un programa de instalación. Pero, (¿por qué siempre hay un pero?), si la aplicación usa ensamblados compartidos, puede que sea necesario usar una instalación.

    Los ensamblados compartidos se pueden usar por varias aplicaciones diferentes y deben estar "debidamente" instalados en el directorio asignado por el propio .NET Framework.

    Ejemplo de ensamblados compartidos son los que definen las clases (tipos) usados por el propio .NET Framework.

    ¿Puedo utilizar otros lenguajes con .NET?

    Pues si, como hemos dicho antes el CLR, o el entorno de ejecución común admite por encima de él cualquier tipo de lenguaje. Actualmente esos son los aprobados:

    • VB .NET
    • C#
    • C ++
    • ASP.NET
    • Jscript.NET

    Pero hay otros muchos que están en camino y que podríamos utilizarlos con el mismo entorno y clases que los existentes:

    • Cobol
    • Pascal
    • Perl
    • Python
    • SmallTalk
    • ML
    • ...

    6. Bases de la POO

    En esta introducción general a .NET (tranquilo este capítulo puede ser un poco duro pero enseguida empezaremos con la base) debemos comentar algunos conceptos básicos de esta tecnología y que iremos ampliando a lo largo del curso. No van a ser explicaciones técnicas sino mas bien una toma de contacto de la filosofía .NET. Todo lo que trataremos en .NET se basa en clases y objetos. Es un concepto muy sencillo pero que pudiera desconcertar al principio

    Veamos que son esos conceptos y la base de la programación orientada a objetos

    6.1 Las clases

    Todo lo que tiene .NET Framework son clases. Una clase no es ni más ni menos que código

    Cuando definimos una clase, realmente estamos definiendo dos cosas diferentes: los datos que dicha clase puede manipular o contener y la forma de acceder a esos datos.

    Por ejemplo, si tenemos una clase de tipo Cliente, por un lado tendremos los datos de dicho cliente y por otro la forma de acceder o modificar esos datos. En el primer caso, los datos del Cliente, como por ejemplo el nombre, domicilio etc., estarán representados por una serie de campos o propiedades, mientras que la forma de modificar o acceder a esa información del Cliente se hará por medio de métodos. Esas propiedades o características y las acciones a realizar son las que definen a una clase.

    Un coche tiene unas propiedades: color, marca, modelo, ... y unos métodos para trabajar con él: arrancar, frenar, cambiar de marcha. La definición de estas partes es lo que llamamos clase, sólo la definición, para trabajar con el coche lo veremos luego. Luego es algo muy sencillo que no debe parecernos ni complejo, ni técnico. Los antiguos programadores de VB son los que menos acostumbrados están a trabajar con clases porque se podían prescindir de ellas pero en VB.NET no. Por eso es una ventaja para los novatos porque aprenderéis de 0 los conceptos y os quedarán mas claros.

    6.2 Los Objetos

    Por un lado tenemos una clase que es la que define un "algo" con lo que podemos trabajar. Pero para que ese "algo" no sea un "nada", tendremos que poder convertirlo en "algo tangible", es decir, tendremos que tener la posibilidad de que exista. Aquí es cuando entran en juego los objetos, ya que un objeto es una clase que tiene información real. Por fin podemos crear un coche del cual ya tenemos su definición en la clase Coche

    Digamos que la clase es la "plantilla" a partir de la cual podemos crear un objeto en la memoria. Por ejemplo, podemos tener varios objetos del tipo Cliente, uno por cada cliente que tengamos en nuestra cartera de clientes, pero la clase sólo será una.

    En nuestros formularios: tenemos 10 botones y ... han sido creados a partir de la clase "Botón". Otro ejemplo es que tenemos una clase que se llama "Coches" donde describe que es y cómo funciona un coche pues bien, podemos crear diferentes coches a partir de la clase "Coches", cada uno puede tener sus propias propiedades: color, ... pero funcionan todos igual

    ¿Quedan claros estos dos conceptos? Vale pues ahora sólo comentar que existen objetos de mas categoría que otros y que esta relación se llama jerarquía de objetos. Por ejemplo un objeto Coche puede tener a su vez varios objetos mas pequeños: motor, carrocería, ...

    En .NET tenemos entonces varias Clases principales y debajo de ellas todas las instrucciones del lenguaje. Por ejemplo habrá una clase para los formularios (ventanas de Windows) que a su vez tendrán otras clases dentro: botones, textos, imágenes. Otra clase sería la colección de funciones matemáticas que podemos utilizar. Para que hagas una idea, esta es la jerarquía de objetos para desarrollo en Web:


    Desarrollo - Soluciones Cabezera Animada


    Ver Estadisticas