UNIVERSIDAD TECNOLÓGICA DE JALISCO VERSIÓN: 1 …ozarate.net/material/manual_net.pdf · •...

23
UNIVERSIDAD TECNOLÓGICA DE JALISCO TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN VERSIÓN: 1 FECHA: SEPTIEMBRE 2007 Ing. Omar Zárate Navarro Academia de Programación Básica Pag. 1 de 23 [email protected] http://omarz.utj.edu.mx/ 1. ¿QUE ES .NET? Es un proyecto de Microsoft para crear una nueva plataforma de desarrollo de software con énfasis en transparencia de redes, con independencia de plataforma y que permite un rápido desarrollo de aplicaciones. Basado en esta plataforma, Microsoft intenta desarrollar una estrategia horizontal que integre todos sus productos, desde el Sistema Operativo hasta las herramientas de mercado. .NET podría considerarse una respuesta de Microsoft al creciente mercado de los negocios en entornos Web, como competencia a la plataforma Java de Sun Microsystems. A largo plazo Microsoft pretende reemplazar el API Win32 o Windows API con la plataforma .NET. Esto debido a que el API Win32 o Windows API fue desarrollada sobre la marcha, careciendo de documentación detallada, uniformidad y cohesión entre sus distintos componentes, provocando múltiples problemas en el desarrollo de aplicaciones para el sistema operativo Windows. La plataforma .NET pretende solventar la mayoría de estos problemas proveyendo un conjunto único y expandible con facilidad, de bloques interconectados, diseñados de forma uniforme y bien documentados, que permitan a los desarrolladores tener a mano todo lo que necesitan para producir aplicaciones sólidas. Debido a las ventajas que la disponibilidad de una plataforma de este tipo puede darle a las empresas de tecnología y al público en general, muchas otras empresas e instituciones se han unido a Microsoft en el desarrollo y fortalecimiento de la plataforma .NET, ya sea por medio de la implementación de la plataforma para otros sistemas operativos aparte de Windows (Proyecto Mono de Ximian/Novell para Linux/MacOS X/BSD/Solaris), el desarrollo de lenguajes de programación adicionales para la plataforma (ANSI C de la Universidad de Princeton, NetCOBOL de Fujitsu, Delphi de Borland, entre otros) o la creación de bloques adicionales para la plataforma (como controles, componentes y bibliotecas de clases adicionales); siendo algunas de ellas software libre, distribuibles ciertas bajo la licencia GPL. Con esta plataforma Microsoft incursiona de lleno en el campo de los Servicios Web y establece el XML como norma en el transporte de información en sus productos y lo promociona como tal en los sistemas desarrollados utilizando sus herramientas. .NET intenta ofrecer una manera rápida y económica pero a la vez segura y robusta de desarrollar aplicaciones - o como la misma plataforma las denomina, soluciones - permitiendo a su vez una integración más rápida y ágil entre empresas y un acceso más simple y universal a todo tipo de información desde cualquier tipo de dispositivo.

Transcript of UNIVERSIDAD TECNOLÓGICA DE JALISCO VERSIÓN: 1 …ozarate.net/material/manual_net.pdf · •...

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 1 de 23 [email protected] http://omarz.utj.edu.mx/

1. ¿QUE ES .NET? Es un proyecto de Microsoft para crear una nueva plataforma de desarrollo de software con énfasis en transparencia de redes, con independencia de plataforma y que permite un rápido desarrollo de aplicaciones. Basado en esta plataforma, Microsoft intenta desarrollar una estrategia horizontal que integre todos sus productos, desde el Sistema Operativo hasta las herramientas de mercado. .NET podría considerarse una respuesta de Microsoft al creciente mercado de los negocios en entornos Web, como competencia a la plataforma Java de Sun Microsystems. A largo plazo Microsoft pretende reemplazar el API Win32 o Windows API con la plataforma .NET. Esto debido a que el API Win32 o Windows API fue desarrollada sobre la marcha, careciendo de documentación detallada, uniformidad y cohesión entre sus distintos componentes, provocando múltiples problemas en el desarrollo de aplicaciones para el sistema operativo Windows. La plataforma .NET pretende solventar la mayoría de estos problemas proveyendo un conjunto único y expandible con facilidad, de bloques interconectados, diseñados de forma uniforme y bien documentados, que permitan a los desarrolladores tener a mano todo lo que necesitan para producir aplicaciones sólidas. Debido a las ventajas que la disponibilidad de una plataforma de este tipo puede darle a las empresas de tecnología y al público en general, muchas otras empresas e instituciones se han unido a Microsoft en el desarrollo y fortalecimiento de la plataforma .NET, ya sea por medio de la implementación de la plataforma para otros sistemas operativos aparte de Windows (Proyecto Mono de Ximian/Novell para Linux/MacOS X/BSD/Solaris), el desarrollo de lenguajes de programación adicionales para la plataforma (ANSI C de la Universidad de Princeton, NetCOBOL de Fujitsu, Delphi de Borland, entre otros) o la creación de bloques adicionales para la plataforma (como controles, componentes y bibliotecas de clases adicionales); siendo algunas de ellas software libre, distribuibles ciertas bajo la licencia GPL. Con esta plataforma Microsoft incursiona de lleno en el campo de los Servicios Web y establece el XML como norma en el transporte de información en sus productos y lo promociona como tal en los sistemas desarrollados utilizando sus herramientas. .NET intenta ofrecer una manera rápida y económica pero a la vez segura y robusta de desarrollar aplicaciones - o como la misma plataforma las denomina, soluciones - permitiendo a su vez una integración más rápida y ágil entre empresas y un acceso más simple y universal a todo tipo de información desde cualquier tipo de dispositivo.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 2 de 23 [email protected] http://omarz.utj.edu.mx/

2. .NET FrameWork (Marco de Trabajo de .NET)

La nueva tecnología de Microsoft ofrece soluciones a los problemas de programación actuales, como son la administración de código o la programación para Internet. Para aprovechar al máximo las características de .Net es necesario entender la arquitectura básica en la que esta implementada esta tecnología y así beneficiarse de todas las características que ofrece esta nueva plataforma. El Framework de .Net es una infraestructura sobre la que se reúne todo un conjunto de lenguajes y servicios que simplifican enormemente el desarrollo de aplicaciones. Mediante esta herramienta se ofrece un entorno de ejecución altamente distribuido, que permite crear aplicaciones robustas y escalables. Los principales componentes de este entorno son:

• Lenguajes de compilación • Biblioteca de clases de .Net • CLR (Common Language Runtime)

Actualmente, el Framework de .Net es una plataforma no incluida en los diferentes sistemas operativos distribuidos por Microsoft, por lo que es necesaria su instalación previa a la ejecución de programas creados mediante .Net. El Framework se puede descargar gratuitamente desde la web oficial de Microsoft (ver link de descarga en los recursos del final). .Net Framework soporta múltiples lenguajes de programación y aunque cada lenguaje tiene sus características propias, es posible desarrollar cualquier tipo de aplicación con cualquiera de estos lenguajes. Existen más de 30 lenguajes adaptados a .Net, desde los más conocidos como C# (C Sharp), Visual Basic o C++ hasta otros lenguajes menos conocidos como Perl o Cobol. Common Language Runtime (CLR) El CLR es el verdadero núcleo del Framework de .Net, ya que es el entorno de ejecución en el que se cargan las aplicaciones desarrolladas en los distintos lenguajes, ampliando el conjunto de servicios que

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 3 de 23 [email protected] http://omarz.utj.edu.mx/

ofrece el sistema operativo estándar Win32. La herramienta de desarrollo compila el código fuente de cualquiera de los lenguajes soportados por .Net en un mismo código, denominado código intermedio (MSIL, Microsoft Intermediate Lenguaje). Para generar dicho código el compilador se basa en el Common Language Specification (CLS) que determina las reglas necesarias para crear código MSIL compatible con el CLR. De esta forma, indistintamente de la herramienta de desarrollo utilizada y del lenguaje elegido, el código generado es siempre el mismo, ya que el MSIL es el único lenguaje que entiende directamente el CLR. Este código es transparente al desarrollo de la aplicación ya que lo genera automáticamente el compilador. Sin embargo, el código generado en MSIL no es código máquina y por tanto no puede ejecutarse directamente. Se necesita un segundo paso en el que una herramienta denominada compilador JIT (Just-In-Time) genera el código máquina real que se ejecuta en la plataforma que tenga la computadora. De esta forma se consigue con .Net cierta independencia de la plataforma, ya que cada plataforma puede tener su compilador JIT y crear su propio código máquina a partir del código MSIL. La compilación JIT la realiza el CLR a medida que se invocan los métodos en el programa y, el código ejecutable obtenido, se almacena en la memoria caché de la computadora, siendo recompilado sólo cuando se produce algún cambio en el código fuente. Biblioteca de clases de .Net Cuando se está programando una aplicación muchas veces se necesitan realizar acciones como manipulación de archivos, acceso a datos, conocer el estado del sistema, implementar seguridad, etc. El Framework organiza toda la funcionalidad del sistema operativo en un espacio de nombres jerárquico de forma que a la hora de programar resulta bastante sencillo encontrar lo que se necesita. Para ello, el Framework posee un sistema de tipos universal, denominado Common Type System (CTS). Este sistema permite que el programador pueda interactuar los tipos que se incluyen en el propio Framework (biblioteca de clases de .Net) con los creados por él mismo (clases). De esta forma se aprovechan las ventajas propias de la programación orientada a objetos, como la herencia de clases predefinidas para crear nuevas clases, o el polimorfismo de clases para modificar o ampliar funcionalidades de clases ya existentes.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 4 de 23 [email protected] http://omarz.utj.edu.mx/

La biblioteca de clases de .Net Framework incluye, entre otros, tres componentes clave:

• ASP.NET para construir aplicaciones y servicios Web. • Windows Forms para desarrollar interfaces de usuario. • ADO.NET para conectar las aplicaciones a bases de datos.

La forma de organizar la biblioteca de clases de .Net dentro del código es a través de los espacios de nombres (namespaces), donde cada clase está organizada en espacios de nombres según su funcionalidad. Por ejemplo, para manejar ficheros se utiliza el espacio de nombres System.IO y si lo que se quiere es obtener información de una fuente de datos se utilizará el espacio de nombres System.Data. La principal ventaja de los espacios de nombres de .Net es que de esta forma se tiene toda la bliblioteca de clases de .Net centralizada bajo el mismo espacio de nombres (System). Además, desde cualquier lenguaje se usa la misma sintaxis de invocación, ya que a todos los lenguajes se aplica la misma biblioteca de clases. ¿Cómo se ejecuta una aplicación en .Net?

El modelo de ejecución que propone la plataforma .NET se suele definir como “virtual”, o “de máquina virtual”, ya que las aplicaciones no son desarrolladas directamente contra las APIs de programación expuestas por el sistema operativo, ni es éste el que se encarga de su ejecución y ciclo de vida, sino que .NET provee un entorno de ejecución (el CLR) que corre por sobre el sistema operativo y que es el encargado de ejecutar las aplicaciones y proveerles servicios en tiempo de ejecución. A los componentes de software que se ejecutan de esta manera se los conoce comúnmente como “componentes manejados”, ya que su ejecución es controlada por un entorno intermedio.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 5 de 23 [email protected] http://omarz.utj.edu.mx/

El desarrollo de una aplicación .NET comienza con la escritura de su código fuente en alguno de los lenguajes de alto nivel soportados por la plataforma. El mismo luego es compilado obteniéndose un ejecutable (que en Windows normalmente llevan la extensión .exe) o una biblioteca (que en Windows normalmente llevan la extensión .dll). A estos componentes .NET resultantes del proceso de compilación se los denomina genéricamente Assemblies, o Ensamblados. Ahora bien, en lugar de contener código de máquina específico para el sistema operativo y el hardware en el cual fueron compilados (nativo), los assemblies contienen un código denominado MSIL (Microsoft Intermediate Language). EL MSIL es un set de instrucciones independientes de cualquier CPU existente y que puede ser convertido a código nativo muy eficientemente. MSIL incluye instrucciones para cargar, almacenar, inicializar e interactuar con objetos y sus atributos y métodos, así como también instrucciones aritméticas y lógicas, control de flujo, acceso directo a memoria, manejador de errores y otras operaciones. Antes de que el código MSIL pueda ser ejecutado debe convertirse a código nativo específico para un CPU y Sistema Operativo, tarea a cargo de los compiladores JIT incluidos en el CLR.

Ensamblados Uno de los mayores problemas de las aplicaciones actuales es que en muchos casos tienen que tratar con diferentes archivos binarios (DLL´s), elementos de registro, conectividad abierta a bases de datos (ODBC), etc. Para solucionarlo el Framework de .Net maneja un nuevo concepto denominado ensamblado. Los ensamblados son ficheros con forma de EXE o DLL que contienen toda la funcionalidad de la aplicación de forma encapsulada. Por tanto la solución al problema puede ser tan fácil como copiar todos los ensamblados en el directorio de la aplicación.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 6 de 23 [email protected] http://omarz.utj.edu.mx/

Con los ensamblados ya no es necesario registrar los componentes de la aplicación. Esto se debe a que los ensamblados almacenan dentro de si mismos toda la información necesaria en lo que se denomina el manifiesto del ensamblado. El manifiesto recoge todos los métodos y propiedades en forma de meta-datos junto con otra información descriptiva, como permisos, dependencias, etc. Para gestionar el uso que hacen la aplicaciones de los ensamblados .Net utiliza la llamada caché global de ensamblados (GAC, Global Assembly Cache). Así, .Net Framework puede albergar en el GAC los ensamblados que puedan ser usados por varias aplicaciones e incluso distintas versiones de un mismo ensamblado, algo que no era posible con el anterior modelo COM. Recursos: Página oficial de .Net Framework http://msdn.microsoft.com/netframework/

3. VENTAJAS DE .NET

• Código administrado: El CLR realiza un control automático del código para que este sea seguro, es decir, controla los recursos del sistema para que la aplicación se ejecute correctamente.

• Interoperabilidad multilenguaje: El código puede ser escrito en cualquier lenguaje compatible con .Net ya que siempre se compila en código intermedio (MSIL).

• Compilación just-in-time: El compilador JIT incluido en el Framework compila el código intermedio (MSIL) generando el código máquina propio de la plataforma. Se aumenta así el rendimiento de la aplicación al ser específico para cada plataforma.

• Garbage collector: El CLR proporciona un sistema automático de administración de memoria denominado recolector de basura (garbage collector). El CLR detecta cuándo el programa deja de utilizar la memoria y la libera automáticamente. De esta forma el programador no tiene por que liberar la memoria de forma explícita aunque también sea posible hacerlo manualmente (mediante el método disponse() liberamos el objeto para que el recolector de basura lo elimine de memoria).

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 7 de 23 [email protected] http://omarz.utj.edu.mx/

• Seguridad de acceso al código: Se puede especificar que una pieza de código tenga permisos de lectura de archivos pero no de escritura. Es posible aplicar distintos niveles de seguridad al código, de forma que se puede ejecutar código procedente del Web sin tener que preocuparse si esto va a estropear el sistema.

• Despliegue: Por medio de los ensamblados resulta mucho más fácil el desarrollo de aplicaciones distribuidas y el mantenimiento de las mismas. El Framework realiza esta tarea de forma automática mejorando el rendimiento y asegurando el funcionamiento correcto de todas las aplicaciones.

¿Todo son ventajas? Procesos como la recolección de basura de .Net o la administración de código introducen factores de sobrecarga que repercuten en la demanda de más requisitos del sistema. El código administrado proporciona una mayor velocidad de desarrollo y mayor seguridad de que el código sea bueno. En contrapartida el consumo de recursos durante la ejecución es mucho mayor, aunque con los procesadores actuales esto cada vez es menos inconveniente.

El nivel de administración del código dependerá en gran medida del lenguaje que utilicemos para programar. Por ejemplo, mientras que Visual Basic .Net es un lenguaje totalmente administrado, C Sharp permite la administración de código de forma manual, siendo por defecto también un lenguaje administrado. Mientras que C++ es un lenguaje no administrado en el que se tiene un control mucho mayor del uso de la memoria que hace la aplicación.

4. Programación en Visual C# (Elementos de Entorno)

Soluciones

Cuando pensamos en crear un sistema de software que solucione un problema del mundo real, es común pensar en el problema desde su concepción, su desarrollo y su resultado final, en el cual debemos contemplar todas y cada una de las variantes que componen nuestra propuesta. Llevando esto al desarrollo de una aplicación utilizando visual estudio .Net, una solución consiste en todos y cada uno de los elementos que permiten darle una solución al problema específico. Para crear una nueva solución siga los siguientes pasos: 1. Abrir Visual Studio. 2. En el menú Archivo, seleccionar Nuevo, y seleccionar Proyecto.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 8 de 23 [email protected] http://omarz.utj.edu.mx/

3. Seleccionar en Tipos de Proyecto: Visual C#, y en Plantillas: Windows Application.

4. Asigne el nuevo nombre del proyecto. 5. Opcionalmente indique la ubicación de los archivos. 6. Opcionalmente, presione Examinar para especificar diferente ubicación para la solución. 7. Presionar Aceptar

Elementos de una solución

Una solución está formada por uno o varios proyectos. Estos incluso podrían crearse utilizando distinto lenguaje de programación (C#, Visual Basic, Visual C++, Visual J#). Y distinto template: Windows Application, Console Application, Web Application, Class Library, etc. La solución nos permite hacer referencia a múltiples proyectos enfocados a una solución en común, por ejemplo una aplicación que consiste en una aplicación de consola para configuración del administrador, una aplicación Web para mostrar resultados, una aplicación de Windows que permita gestionar la base de datos y una aplicación móvil implementada en equipos portátiles como teléfonos celulares o PDA’s que cuenten con la versión compact de Framework.

Proyecto

Un proyecto es un elemento que necesita pertenecer a una solución, los proyectos encapsulan la funcionalidad necesaria dentro de un ejecutable o de un ensamblado (assembly), estos proyectos pueden ser:

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 9 de 23 [email protected] http://omarz.utj.edu.mx/

Nombre Descripción Genera Windows Application Aplicación de escritorio estilo

Windows. Ejecutable .exe

Console Application Aplicación de consola (DOS) Ejecutable .exe Web Application Aplicación para web ASP, contenidos

en un directorio virtual. Archivos ASPX

Class Library Librería de clases (assembly) Librería dinámica para .Net .dll Device Application Aplicaciones para dispositivos con

Windows movile.

Un proyecto de aplicación de Windows de visual C# .Net consiste en: Nombre Descripción Extensión de archivo Solución Archivo que contiene la descripción de la

solución sln

Proyecto Archivo con la configuración e identificación del proyecto

csproj

Forma Archivo con el código Visual C# que codificamos (fuente)

cs

Recursos Archivo de recursos del sistema, como cadenas o imágenes.

resx

Elementos de la interfaz de desarrollo (IDE).

Formas

La forma es un contenedor de controles visuales, la forma es lo primero que crea por nosotros visual C# .NET cuando creamos una aplicación de Windows. Si observamos el código fuente generado (archivo .cs) para la forma, podemos ver que la forma es una clase (llamada form1), cada nuevo control que arrastramos a ella es una propiedad y cada evento es un método que se agregan a la clase.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 10 de 23 [email protected] http://omarz.utj.edu.mx/

Explorador de soluciones

La ventana del explorador de soluciones (ubicada del lado derecho de la ventana), nos permite visualizar el árbol de la solución, identificando a cada uno de los elementos de esta, cada uno de los elementos del proyecto. Además desde el explorador de soluciones podemos nosotros agregar más elementos a los proyectos, configurar cada uno de ellos, agregar más elementos y referencias.

Cuadro de Herramientas

El Cuadro de Herramientas es visible solamente cuando estamos en modo de diseño de una forma Windows o de una forma Web. En esta paleta se encuentran todos los controles visuales que podemos implementar en nuestras aplicaciones visuales. Para agregar un objeto a nuestra forma basta con: a. Dar doble clic sobre el control que queremos agregar a la forma. b. Arrastrar el control desde el Cuadro de Herramientas hasta la forma, en la ubicación que deseamos. c. Seleccionar el control del Cuadro de Herramientas y, utilizando el ratón, ubicar las coordenadas del nuevo control arrastrando el apuntador.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 11 de 23 [email protected] http://omarz.utj.edu.mx/

Propiedades

Desde esta ventana podemos administrar las propiedades de cualquier control visible en nuestra forma, desde diseño. Para poder hacerlo basta con seleccionar el control dentro de la forma (incluyendo la forma) y se mostrarán las propiedades que son modificables en ese control, por ejemplo las propiedades NAME, ANCHOR, VISIBLE. Al cambiar el valor de una de estas propiedades podremos ver los cambios aplicados en el control sin necesidad de ejecutar la aplicación.

Las propiedades del componente se pueden visualizar por grupos con el botón o en orden alfabético con el

botón .

Eventos

Todo control visual que utilizamos en una aplicación Windows puede reaccionar ante cualquier acción que el usuario solicite de él, por ejemplo: el clic de un botón, la selección de un texto, abrir o cerrar una ventana, cambiar el foco de un control, etc. Un evento entonces es un método que se llama cuando el usuario ejecuta o hace una acción y esta dispara el evento que estamos administrando. Por ejemplo, si damos doble clic sobre la forma, se abre por default un método encargado de manejar el evento que se dispara al cargar la forma (Load), este método tiene el siguiente aspecto: private void Form1_Load(object sender, System.EventArgs e)

{

}

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 12 de 23 [email protected] http://omarz.utj.edu.mx/

Si observamos con detalle el código generado en automático, encontramos un método de nombre Form1_Load el cual recibe dos parámetros: sender y e, el primero es de tipo Object (el papá de todos los objetos en .Net) y el segundo de tipo System.EventArgs (objeto que describe todos los argumentos relacionados con el evento), este evento se dispara cuando se carga la Forma. También podemos acceder a los eventos de un control visual por medio de la ventana de propiedades,

simplemente dando un clic al botón y aparecerán todos los eventos relacionados con el control que este seleccionado. Para crear automáticamente un método relacionado con alguno de estos eventos, solo se tiene que dar un doble clic en el evento que se requiere controlar.

Por ejemplo si da un doble clic sobre el evento KeyPress aparecerá el siguiente código:

private void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

{

}

Ejecución de una Solución

Cuando programamos una aplicación, los archivos que vamos generando (código fuente) son la representación en un lenguaje de programación de la solución que interpretamos, en nuestro caso ese lenguaje de programación es Visual C# .Net. Al ejecutar, realmente le indicamos al lenguaje de programación que valide, y verifique de manera sintáctica y semántica las instrucciones, es decir, que verifique que lo que escribí esté bien escrito y que tenga sentido, siguiendo las reglas definidas para el lenguaje, que en este caso, Visual C# .Net Podemos indicarle al lenguaje que compile nuestra aplicación de las siguientes maneras: 1. Una vez abierta la solución, presiona el botón F5 (o ctrl+F5) 2. Una vez abierta la solución, desde el explorador de soluciones, abra el menú auxiliar del proyecto a compilar y seleccione “Generar”.

El resultado de una compilación, en caso de que hayamos escrito nuestro código sintáctica y semánticamente bien, es una ejecutable (en el caso de aplicaciones Windows Application) dentro de la carpeta “../bin/debug/”.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 13 de 23 [email protected] http://omarz.utj.edu.mx/

Basta con copiar el ejecutable para que los usuarios inicien el uso de nuestra aplicación (con algunas restricciones). En caso de error ya sea de sintaxis o de semántica, se nos mostrará un diálogo donde se nos indica la cantidad de errores, warnings o mensajes que fueron encontrados en el proceso de compilación.

5. Tipos de Datos en C# .NET

Todos los lenguajes de programación que cumplen las normas de .NET tienen muchas cosas en común, una de ellas es el conjunto de tipos de datos. Hay que destacar que estos tipos de datos están implementados como clases, de manera que una variable declarada de un tipo determinado, tendrá la capacidad de usar tanto los métodos como las propiedades que pertenezcan a la clase del tipo de dato.

C#

String Cadena; Int Longitud; Cadena = "Datos"; Longitud = Cadena.Length();

En el ejemplo anterior declaramos una variable de tipo String (Cadena de caracteres), y podemos ver como esta variable posee una serie de propiedades y métodos que pueden ser invocados, en este caso usamos la propiedad Length() para obtener el numero de caracteres de la variable Cadena y asignarlo a la variable Longitud, que pasaría a tener el valor 5. En la siguiente tabla se muestra una relación de los tipos de datos de .NET Framework y su correspondencia en C#.NET.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 14 de 23 [email protected] http://omarz.utj.edu.mx/

Nombre de la clase

Tipo de dato en C#

Descripción

Byte Byte Entero sin signo de 8 bit.

Sbyte sbyte Entero sin signo de 8bit (Tipo no acorde con el CLS)

Int16 short Entero con signo de 16 bit.

Int32 int Entero con signo de 32 bit.

Int64 long Entero con signo de 64 bit.

Uint16 ushort Entero sin signo de 16 bit. (Tipo no acorde con el CLS)

Uint32 uint Entero sin signo de 32 bit. (Tipo no acorde con el CLS)

Uint64 ulong Entero sin signo de 64 bit. (Tipo no acorde con el CLS)

Single float Numero con coma flotante de precisión simple, de 32 bit.

Double double Numero con coma flotante de precisión doble, de 64 bit.

Boolean bool Valor logico

Char char Carácter unicode de 16 bit.

Decimal decimal Valor decimal de 96 bit.

IntPtr -- Entero con signo cuyo tamaño depende de la plataforma: 32 bit en plataformas de 32 bit y 64 bit en plataformas de 64 bit. (Tipo no acorde con el CLS)

UintPtr -- Entero sin signo cuyo tamaño depende de la plataforma: 32 bit en plataformas de 32 bit y 64 bit en plataformas de 64 bit. (Tipo no acorde con el CLS)

String string Cadena de caracteres.

Constantes

Una literal es un valor que ejemplifica a un tipo de dato, por ejemplo 10 es un valor que ejemplifica a los tipos de datos enteros, sin embargo en programación podemos decir que una literal es una CONSTANTE. (Ya que 10 siempre es 10) Sin embargo en ocasiones, para entender mejor el problema, es necesario “bautizar” a estas literales y trabajar con su nombre y no con el valor, por ejemplo: en problemas financieros es más fácil comprender el concepto IVA en lugar del valor 0.15 dentro de la fórmula del cálculo de facturación. Una constante por tanto lo entenderemos como una variable estática, es decir, una variable cuyo valor nunca cambia (paradójico, por eso el nombre de “constante” en lugar de “variable estática”). En visual C# .Net, definimos una constante utilizando la palabra reservada const seguida del tipo de dato, el nombre de la variable y el valor que se asignará. Por ejemplo: const int IVA = 15;

const double PI = 3.1416;

const string SALUDO = "BUENOS DIAS";

NOTA: Por convención, el nombre que utilizaremos para constantes debe

ser utilizando mayúsculas.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 15 de 23 [email protected] http://omarz.utj.edu.mx/

Variable Las variables son "nombres" que pueden contener un valor (literal) de cualquier tipo de dato (básico o no). Esos nombres son convenciones que nosotros usamos para facilitarnos las cosas, ya que para la computadora, una variable es una dirección de memoria en la que se guarda un valor o un objeto. Por ejemplo si queremos guardar el número 10 en una variable, haremos algo como esto:

i = 10 En este caso i es la variable, mientras que 10 sería una literal, la cual se asigna a esa "posición" de memoria a la que llamamos i, para facilitarnos las cosas. Ya que, realmente no nos interesa saber dónde se guarda ese valor, lo único que nos interesa es saber que se guarda en algún lado para en cualquier ocasión poder volver a usarlo. Para declarar una variable se coloca primero el tipo del dato que almacenara la variable, y en seguida el nombre o Identificador de la variable (Igual que en C++), por ejemplo: int contador; float respuesta; As Boolean string cadena;

NOTA: Por convención el nombre que utilizaremos en este curso para

constantes debe ser utilizando mayúsculas.

NOTA: Siempre hay que tratar de nombrar a una variable (o constante)

con una palabra que mejor describa su acción.

Operadores Cuando hacemos ejercicios aritméticos utilizamos por ejemplo la suma, la resta, la multiplicación, etc. Visualmente estas acciones las ligamos con un símbolo que nos da a entender la acción a realizar entre uno, dos o más elementos. Por ejemplo, la expresión aritmética: a + b = x; indica que el valor que representa a es sumado al valor que representa b, y que el resultado de esa operación es igual al valor que representa x. De esa expresión podemos obtener que + es un operador de tipo aritmético. Un operador entonces será el símbolo que representa una acción sobre uno o varios elementos. Estos operadores podemos clasificarlos en: De asignación, Aritméticos, Lógicos y de Relación. Además hay operadores binarios (dos) y unarios (uno), se dice que un operador es binario cuando involucra dos operándoos para poder realizar la acción, por ejemplo la suma (+), es un operador binario ya que hay dos operándoos que serán sumados. Un operador unario será aquel que se aplica sobre un solo elemento, por ejemplo el operador NOT ( ! ), el cual niega el operador (lo cambia de sentido de falso a verdadero).

Operadores de Asignación

Un operador de asignación es utilizado normalmente para darle un valor a una variable, donde el valor que hay del lado derecho del operador es asignado al lado izquierdo del operador. Por ejemplo A = 5, indica que 5 es el valor que contendrá la variable de nombre A.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 16 de 23 [email protected] http://omarz.utj.edu.mx/

Existen algunas formas de asignar valores a una variable, estas formas están descritas en la siguiente tabla:

Operador (símbolo) Descripción Ejemplo = El valor de la derecha es asignado a la variable de

la izquierda A = 3 * 5 * IVA

+= Suma el valor de la derecha al valor actual de la variable de la izquierda

A += 33

-= Resta el valor de la derecha al valor actual de la variable de la izquierda

A -= 15

*= Multiplica el valor de la derecha al valor actual de la variable de la izquierda

A *= 2

/= Divide el valor de la derecha al valor actual de la variable de la izquierda

A /= 3

Operadores Aritméticos

El operador aritmético se aplica sobre expresiones que dan como resultado un valor numérico. Normalmente usamos estos operadores para expresar fórmulas matemáticas, donde hay operándoos numéricos involucrados en la expresión. Los operadores matemáticos más comunes se describen en la siguiente tabla:

Operador (símbolo) Descripción Ejemplo + Suma de valores casi de cualquier tipo de dato. A + B - Resta de valores numéricos A – B

5 – 4 * Multiplicación de valores numéricos A * B / División de valores numéricos 3/10

Hay más operadores que podemos utilizar, algunos expresados en forma de funciones (descritas más a delante en el manual), estas las podemos encontrar en la clase Math.

Operadores de Relación El objetivo de un operador de relación es el de comparar dos elementos (por lo tanto son operadores binarios), donde esta relación tiene que ver con tamaño, volumen, exactitud. Por ejemplo, quiero saber si Pedro es más alto que Juan; ¿el número que pensé es distinto que el que pensaste tú?, ¿Tengo más ó la misma cantidad en la bolsa izquierda que en la bolsa derecha?

Operador (símbolo) Descripción Ejemplo == Indica si dos valores son iguales (uso en

expresiones lógicas) if ( 5 == 5 )

< Menor que A < B > Mayor que A > B != Diferente A != B <= Menor que o igual A <= B >= Mayor que o igual A >= B

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 17 de 23 [email protected] http://omarz.utj.edu.mx/

Operadores Lógicos

El uso común de un operador lógico es la de evaluar condiciones donde el resultado de esa expresión corresponde con un Sí (true) o con un No (false). Es común ver este tipo de operadores para evaluar más de una CONDICIÓN, es decir, expresiones donde el resultado de su evaluación es un valor lógico (Si [true], No [false]) Por ejemplo en situaciones donde queremos verificar si el usuario introdujo correctamente un número y al mismo tiempo ver si seleccionó de forma afirmativa algún mensaje que le mostráramos, si completó el llenado de los datos que le pedimos o simplemente para verificar el final de un ciclo.

Operador (símbolo) Descripción Ejemplo && Y lógico A && B | | O lógico A | | B ! No lógico (negación) ! A

Por ejemplo, la oración: Si el nombre de usuario no es vacío y además es distinto de “PACO”

Estructuras de control Las estructuras de control son mecanismos que prácticamente TODOS los lenguajes de programación utilizan e implementan para poder manipular el flujo de ejecución; es decir, a través del uso de estas estructuras el programador puede determinar el flujo que seguirá el programa, tomar decisiones o repetir varias líneas de código una y otra vez. Las estructuras de control utilizadas para “tomar decisiones” son conocidas como estructuras de control condicional. Las estructuras de control utilizadas para repetir líneas de código o de “loop” son conocidas como estructuras de control secuenciales.

Estructuras de control condicionales En visual C# .Net existen dos tipos de estructuras de control condicionales: if( ) y switch-case. Una estructura condicional es una bifurcación del flujo de ejecución, es decir, podemos cambiar el rumbo de la ejecución en un momento dado utilizando expresiones condicionales.

Estructura de Control if( ) La estructura de control If indica si un bloque de instrucciones será ejecutado o no basado en una condición. La estructura simple de esta estructura es:

if (expression) statement1 [else statement2]

donde:

expression Expresión que puede convertirse implícitamente en el tipo bool o en un tipo que contenga la sobrecarga de los operadores true y false.

statement1 Instrucciones que se ejecutan si expression se evalúa como true.

statement2 Instrucciones que se ejecutan si expression se evalúa como false.

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 18 de 23 [email protected] http://omarz.utj.edu.mx/

Estructura de Control switch-case

La instrucción switch es una instrucción de control que permite manejar varias selecciones y pasar el control a una de las instrucciones case de su cuerpo. Presenta la siguiente forma:

switch (expression) { case constant-expression: statement

jump-statement [default: statement jump-statement] }

Donde:

expression Expresión de tipo integral o cadena.

statement Instrucciones que se deben ejecutar si se transfiere el control a la etiqueta case o default.

jump-statement Instrucción de salto que transfiere el control fuera del cuerpo case.

constant-expression El control se transfiere a una instrucción case específica según el valor de esta expresión.

Comentarios

El control se transfiere a la instrucción case cuya constante constant-expression coincide con la expresión expression. La instrucción switch puede incluir cualquier número de elementos case, pero no puede haber dos constantes case con el mismo valor en una misma instrucción switch. La ejecución del cuerpo de la instrucción empieza en la instrucción seleccionada y continúa hasta que la instrucción de salto jump-statement transfiere el control fuera del cuerpo case.

Observe que es necesario colocar jump-statement al final de cada bloque, incluido el último bloque, ya sea una instrucción case o una instrucción default. A diferencia de la instrucción switch de C++, C# no admite el paso explícito de una etiqueta case a otra. Si lo desea, puede utilizar goto a una etiqueta case o goto default.

Si expression no coincide con ninguna constante constant-expression, el control se transfiere a las instrucciones que siguen a la etiqueta default opcional. Si no existe una etiqueta default, el control se transfiere fuera de la instrucción switch.

Ejemplo

// statements_switch.cs using System; class SwitchTest { public static void Main() {

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 19 de 23 [email protected] http://omarz.utj.edu.mx/

Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); Console.Write("Please enter your selection: "); string s = Console.ReadLine(); int n = int.Parse(s); int cost = 0; switch(n) { case 1: cost += 25; break; case 2: cost += 25; goto case 1; case 3: cost += 50; goto case 1; default: Console.WriteLine("Invalid selection. Please select 1, 2, or 3."); break; } if (cost != 0) Console.WriteLine("Please insert {0} cents.", cost); Console.WriteLine("Thank you for your business."); } }

Entrada

2

Resultados del ejemplo

Coffee sizes: 1=Small 2=Medium 3=Large Please enter your selection: 2 Please insert 50 cents. Thank you for your business.

Descripción del código

En el ejemplo anterior, se utilizó una variable de tipo integral, n, para los casos de la instrucción switch. Observe que también se puede utilizar la variable de cadena, s, directamente. En ese caso, la estructura switch puede presentar la siguiente forma: switch(s) { case "1": ... case "2": ... } Aunque no se admite pasar explícitamente de una etiqueta de caso a otra, sí está permitido apilar etiquetas de caso, por ejemplo: case 0: case 1: // do something;

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 20 de 23 [email protected] http://omarz.utj.edu.mx/

Estructuras de control secuenciales (Loop) En visual C# .Net existen tres tipos principales de estructuras de control repetitivas: for, while, do-while.

Estructura de Control For El bucle for ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una expresión especificada se evalúa como false. Presenta la siguiente forma:

for ([initializers]; [expression]; [iterators]) statement donde:

initializers

Lista de expresiones o instrucciones de asignación, separadas por comas, que inicializan los contadores del bucle. expression

Expresión que puede convertirse implícitamente en el tipo bool o en un tipo que contenga la sobrecarga de los operadores true y false. La expresión se usa para comprobar el criterio de terminación del bucle. iterators

Expresiones o instrucciones que incrementan o reducen los contadores del bucle. statement

Instrucciones que se deben ejecutar dentro del bucle.

Comentarios

La instrucción for ejecuta sus instrucciones internas repetidamente de la siguiente forma: � Primero, evalúa los inicializadores. � A continuación, mientras expression se evalúa como true, se ejecutan las instrucciones del bucle y se evalúan los iteradores. � Cuando expression se hace false, el control se transfiere fuera del bucle.

Debido a que la comprobación de expression tiene lugar antes de la ejecución del bucle, la instrucción for se ejecuta cero o varias veces. Todas las expresiones de la instrucción for son opcionales; por ejemplo, la siguiente instrucción se utiliza para crear un bucle infinito: for (;;) { ... } Ejemplo

// statements_for.cs // for loop using System; public class ForLoopTest { public static void Main() { for (int i = 1; i <= 5; i++) Console.WriteLine(i); } }

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 21 de 23 [email protected] http://omarz.utj.edu.mx/

Resultado

1 2 3 4 5

Estructura de Control While( ) La instrucción while ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una expresión especificada se evalúa como false. Presenta la siguiente forma:

while (expression) statement donde:

expression

Expresión que puede convertirse implícitamente en el tipo bool o en un tipo que contenga la sobrecarga de los operadores true y false. La expresión se usa para comprobar el criterio de terminación del bucle. statement

Instrucciones que se deben ejecutar dentro del bucle.

Comentarios

Como la comprobación de expression tiene lugar antes de la ejecución del bucle, las instrucciones internas de un bucle while pueden no llegar a ejecutarse. Un bucle while se puede terminar cuando una instrucción break, goto, return o throw transfiere el control fuera del bucle. Para pasar el control a la siguiente iteración sin salir del bucle, use la instrucción continue.

Ejemplo

// statements_while.cs using System; class WhileTest { public static void Main() { int n = 1; while (n < 6) { Console.WriteLine("Current value of n is {0}", n); n++; } } }

Resultado

Current value of n is 1 Current value of n is 2 Current value of n is 3 Current value of n is 4 Current value of n is 5

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 22 de 23 [email protected] http://omarz.utj.edu.mx/

Estructura de Control do-while La instrucción do ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una expresión especificada se evalúa como false. Presenta la siguiente forma:

do statement while (expression);

donde: expression

Expresión que puede convertirse implícitamente en el tipo bool o en un tipo que contenga la sobrecarga de los operadores true y false. La expresión se usa para comprobar el criterio de terminación del bucle. statement

Instrucciones que se deben ejecutar dentro del bucle.

Comentarios

A diferencia de la instrucción while, el cuerpo del bucle de la instrucción do se ejecuta siempre al menos una vez, independientemente del valor de la expresión.

Ejemplo // statements_do.cs using System; public class TestDoWhile { public static void Main () { int x; int y = 0; do { x = y++; Console.WriteLine(x); } while(y < 5); } } Resultado

0 1 2 3 4

UNIVERSIDAD TECNOLÓGICA DE JALISCO

TECNOLOGÍAS DE LA INFORMACIÓN Y

COMUNICACIÓN

VERSIÓN: 1

FECHA: SEPTIEMBRE

2007

Ing. Omar Zárate Navarro Academia de Programación Básica

Pag. 23 de 23 [email protected] http://omarz.utj.edu.mx/

Ejemplo

Observe en este ejemplo que, aunque la condición se evalúa como false, el bucle se ejecuta una vez. // statements_do2.cs using System; class DoTest { public static void Main() { int n = 10; do { Console.WriteLine("Current value of n is {0}", n); n++; } while (n < 6); } }

Resultado

Current value of n is 10