Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ProgramacionCSharp 01 PDF
ProgramacionCSharp 01 PDF
FUNDAMENTOS DE PROGRAMACION
EN .NET CON C#
Que es C#
C# (lase, en ingls C sharp, y en espaol C almohadilla) es un lenguaje de
programacin que permite el desarrollo de aplicaciones para Internet, para mviles y
aplicaciones de propsito general. Inicialmente se desarroll para programar en la
plataforma .NET, pero dadas las caractersticas de esta y la estandarizacin que se ha
hecho de su estructura por parte de las principales entidades de estndares
internacionales, se han desarrollado otras plataformas que cumplen con dicha
estructura y por lo tanto C# puede ser utilizado como lenguaje de programacin en
ellas. Entre estas plataformas se destaca el Proyecto MONO, desarrollado para Linux y
Mac.
El lenguaje C# es orientado a objetos y se ha creado basndose en la estructura de C y
C++, especialmente su sintaxis y potencia, y adoptando el estilo y metodologa de la
programacin en Visual Basic. Sin embargo es importante aclarar que C# no es el
resultado de la evolucin directa de ninguno de estos lenguajes, sino que ha sido
creado desde cero, para programar sobre la plataforma .NET. Es un lenguaje que fue
concebido con el objetivo de programar esta plataforma y por lo tanto se puede decir
que es el lenguaje natural de .NET.
La empresa Microsoft, creadora de C#, en un intento de superar a otras plataformas
que estn imponindose en el soporte a aplicaciones que trabajan en red, especialmente
sobre Internet, decidi estandarizar la plataforma .NET y con ella el lenguaje base de la
misma, C#. Con esta decisin se ha logrado que Microsoft de a conocer las
especificaciones tanto de la plataforma como del lenguaje de programacin, y de esta
manera permitir que terceros desarrollen implementaciones de .NET para el mismo
Windows o para sistemas operativos diferentes.
La plataforma .NET
Para comenzar no entraremos en muchos detalles sobre la plataforma .NET, y evitar de
esta manera confundir al lector poco experimentado, con tecnicismos que cuando se
tenga una mejor familiaridad se pueden abordar con mayor propiedad.
.NET, en esencia es una librera de clases que contienen o encapsulan una gran
cantidad de funciones que trabajan sobre el sistema operativo. La caracterstica
fundamental de este aspecto, es que dichas clases tienen una estructura comn para
todos los lenguajes que trabajen sobre esta plataforma. Esto trae como consecuencia
que una clase que sea programada en C#, podr ser heredada o utilizada en cualquier
lenguaje de la plataforma, como pueden ser Visual Basic .NET o JScript, para
comenzar.
Desde la perspectiva del programador el aspecto ms importante, es que .NET pone a
su disposicin un marco o entorno de trabajo, llamado .NET Framework, el cual le
permite acceder a una infraestructura dotada con lenguajes de programacin como C#,
Visual Basic .NET, C++ y JScript, y con la posibilidad de acceder a infinidad de
servicios tiles para desarrollar cualquier tipo de aplicacin.
www.pedrov.phpnet.us
CAPITULO 1:
1 FUNDAMENTOS DE PROGRAMACIN EN .NET CON C#
La lnea de comandos
Para compilar nuestras aplicaciones a travs de la lnea de comandos, lo primero que se
debe hacer es configurar adecuadamente este entorno. Cualquier aplicacin de .NET
depende para su ejecucin de una serie de libreras propias de la plataforma, las cuales
le suministran la comunicacin necesaria con el sistema operativo. Por lo tanto para
compilar un archivo es necesario poner a disposicin del compilador las direcciones
donde posiblemente pueda encontrar algn componente que requiera o que se est
utilizando en la aplicacin. Para facilitar esta tarea vamos a definir algunas variables de
entorno que facilitan el trabajo de indicar las direcciones bsicas del framework .NET.
Lo primero que se debe crear es una carpeta, donde se guardarn los archivos fuente y
sus correspondientes compilados. Para facilitar la coherencia entre este escrito y las
prcticas que se desarrollen se sugiere crear la carpeta c:\CSCurso.
Para evitar tener que crear manualmente las variables de entorno con las direcciones
necesarias para el compilador, vamos a crear un archivo de procesamiento por lotes,
*.BAT, que realice este trabajo en forma rpida y automtica. Ejecute el Bloc de notas,
copie las lneas siguientes y guarde el archivo en el directorio c:\CSCurso,
nombrndolo como cmdSharp.bat:
@echo off
Echo Lnea de comandos para el compilador de .NET Framework 2.0
Echo.
rem Ejecute este archivo con la instruccin: %comspec% /k cmdSharp.bat
@SET DirFramework=C:\WINDOWS\Microsoft.NET\Framework
@SET VerFramework=v2.0.50727
@set PATH=%DirFramework%\v2.0;%DirFramework%\%VerFramework%;%PATH%
@set LIBPATH=%DirFramework%\v2.0;%DirFramework%\%VerFramework%;%LIBPATH%
cd c:\cscurso
pedrov.cs@hotmail.com
www.pedrov.phpnet.us
CAPITULO 1:
1 FUNDAMENTOS DE PROGRAMACIN EN .NET CON C#
En apariencia, los argumentos de inicio de ejecucin solo son vlidos para programas
de consola, y no para programas que manejan un sistema grfico de ventanas, como las
aplicaciones tipo Windows. Pero esto no es muy exacto, los programas tipo Windows,
o en general que manejan ventanas, tambin pueden requerir argumentos de entrada en
el instante en que inician su ejecucin. Un buen ejemplo son los programas que
manejan algn formato de archivo especifico, como puede ser el Bloc de notas que
genera archivos de texto que se identifican con la extensin *.TXT y los cuales,
generalmente, el sistema operativo asocia con este editor. Esto trae como consecuencia
dos formas de iniciar la ejecucin del Bloc de notas: una, a travs de su acceso directo
en el men de Programas, y la otra haciendo doble clic en el archivo de texto. En este
ltimo caso el sistema operativo enva un argumento al programa informndole que su
ejecucin la inicio un archivo y no el acceso directo del men de programas. El
argumento que se enva contiene el nombre completo del archivo que lo llam, y de
esta forma el programa se ejecuta y realiza su apertura.
Un mtodo es el nombre que se asigna a las funciones y procedimientos que se encuentran haciendo parte de una clase
y que pueden ser utilizadas desde el exterior de la misma.
www.pedrov.phpnet.us
CAPITULO 1:
1 FUNDAMENTOS DE PROGRAMACIN EN .NET CON C#
Si todo ha salido bien, la salida que muestra el programa despus de teclear ENTER es,
Bienvenido(a) Homero
La consola
Este es el nombre como en Windows, e incluso en otros sistemas operativos, se conoce
a la interfaz que permite enviar rdenes al sistema operativo a travs de comandos
escritos. Tales comandos, no son otra cosa sino programas desarrollados para este
entorno de ejecucin.
Para .NET la consola de Windows se manipula a travs de un objeto que se identifica
con el nombre Console, el cual incluye todas las funciones bsicas para manejar este
elemento del sistema operativo. Una de esas funciones es WriteLine que se encarga de
enviar a la pantalla, o tambin a otros dispositivos de salida, el argumento que se le
asigne, ya sea una cadena de texto o un valor numrico.
En la instruccin que hemos utilizado en el anterior ejemplo,
System.Console.WriteLine("Bienvenido(a) " + nombre[0]);
se observa que el objeto Console esta antecedido por el identificador System. Este en
realidad es lo que se denomina espacio de nombres, que no es ms que el nombre de
un conjunto que agrupa a una serie de clases, que por lo general el programador
considera guardan alguna relacin entre s. En este caso la clase Console pertenece al
conjunto o espacio de nombres llamado System.
Miembro
Color
Black
Blue
Cyan
DarkBlue
DarkCyan
DarkGray
DarkGreen
DarkMagenta
DarkRed
DarkYellow
Gray
Green
Magenta
Red
White
Yellow
Negro
Azul
Aguamarina
Azul marino
Verde azulado
Gris oscuro
Verde oscuro
Fucsia oscuro
Rojo oscuro
Amarillo oscuro
Gris
Verde
Fucsia
Rojo
Blanco
Amarillo
Miembros de la enumeracin
ConsoleColor
Inicie un nuevo archivo de texto en el Bloc de notas, incluya las lneas de codigo
sugeridas y gurdelo con el nombre ejemplo03.cs.
En los ejemplos anteriores la compilacin se realiz utilizando la opcin bsica que
ofrece el compilador de C#, llamando al compilador y asignndole el nombre del
archivo fuente que se desea compilar. Por defecto, el compilador asigna al archivo
compilado el mismo nombre del archivo fuente, pero en un momento dado el
programador puede desear asignar un nombre conveniente al archivo ejecutable. Como
cualquiera de los compiladores antecesores a C#, este cuenta con una serie de opciones
que permiten obtener diferentes salidas en el proceso de compilacin. Para este caso en
particular, se puede utilizar el parmetro out, que permite asignar un nombre al archivo
compilado, diferente al de su fuente. Se aplica siguiendo la sintaxis,
csc /out:ArchivoCompilado ArchivoFuente
En la programacin de este ejemplo nos hemos dado cuenta que las instrucciones
pueden ser un tanto complejas de escribir, dada la necesidad de tener que incluir el
espacio de nombres en las llamadas a las clases y sus mtodos. Si tenemos en cuenta
que la programacin en .NET se hace a base de objetos, cuyas clases hacen parte de
espacios de nombres, y que muchos de estos espacios de nombres a su vez hacen parte
de otros espacios de nombres, el grado de dificultad parece aumentarse
innecesariamente para el programador de C#, a causa de estos mtodos de asignacin
de nombres. Sin embargo, esta forma de identificar las clases y sus objetos tiene una
poderosa razn de ser y, en vez de perjudicar, ms bien es un beneficio para el
programador. En seguida se describe la importancia de esta metodologa de
agrupamiento de clases y la forma como podemos evitar las dificultades que ofrece el
manejo de los espacios de nombres.
Espacios de nombres
System.Console
Espacio de
nombres
Nombre de la
clase
www.pedrov.phpnet.us
CAPITULO 1:
1 FUNDAMENTOS DE PROGRAMACIN EN .NET CON C#
Espacio de nombres
Nombre de la DLL
Descripcin
System
MsCorLib.dll
System.Data
System.Data.dll
Clases especializadas en
manejar bases de datos
System.Diagnostics
MsCorLib.dll
System.Drawing
System.Drawing.dll
System.Globalization
MsCorLib.dll
System.IO
MsCorLib.dll
System.Net
System.dll
System.Reflection
MsCorLib.dll
System.Resources
MsCorLib.dll
System.Security
MsCorLib.dll
System.Threading
MsCorLib y System.dll
System.Web
System.Web.dll
System.Windows.Forms
System.Windows.Forms.dll
System.Xml
System.Xml.dll
Es importante destacar que estos son solo algunos de los espacios de nombres que
existen en .NET. Pero todos los espacios de nombre que conforman la plataforma
.NET se encuentran definidos dentro del espacio de nombres System, y una gran
cantidad de ellos estn ubicados dentro de los anteriores espacios de nombres.
Otro aspecto interesante, es observar la forma como han sido nombrados los archivos
DLL que contienen a estos espacios de nombres, como por ejemplo el espacio de
nombres System.Drawing es guardado en el archivo compilado System.Drawing.dll.
No significa esto que se trate de una regla obligatoria que vaya a tener algn efecto en
el proceso de compilacin, sino ms bien una cuestin de organizacin que facilita
mucho la identificacin del espacio de nombres y sus clases. Por lo general los
entornos de desarrollo integrado, como Sharpdevelop y VisualStudio .NET generan
estos nombres en forma automtica.
pedrov.cs@hotmail.com
10
CAPITULO 1:
1 FUNDAMENTOS DE PROGRAMACIN EN .NET CON C#
11
En el caso antes planteado, la referencia a las clases resulta un tanto compleja ya que se
debe escribir el nombre completo de la clase, incluyendo los identificadores de sus
espacios de nombres. Esto puede complicar el trabajo del programador, al obligarlo a
teclear demasiado cdigo. Para evitar tener que teclear nombres demasiado largos a
causa de los espacios de nombres, C# cuenta con la palabra clave using que permite
direccionar los espacios de nombres en el encabezado del archivo fuente y acortar la
referencia a una clase, ya sea llamndola por su nombre bsico o al menos sin tener
que recurrir a todos los espacios de nombres que la identifican, siempre y cuando no
entre en conflicto con otros nombres.
12
Aunque la programacin orientada a objetos establece que las clases son plantillas, o
moldes, que describen en forma general como es un objeto, hasta el momento no la
hemos utilizado en este contexto, que en la prctica es su verdadera y ms importante
finalidad, sino a travs del uso directo de las clases y sus mtodos. C# le permite al
programador, en cierta manera, evadir el concepto de programacin orientada a objetos
definiendo clases estticas. Este tipo de clases se comportan como plantillas que
nicamente sirven para agrupar funciones, como aquellas que se utilizan en cualquier
lenguaje de programacin estructurada y que le sirven al programador para realizar
alguna tarea concreta. Este tipo de clases se definen con la palabra clave static. Todos
los mtodos o funciones de una clase esttica deben definirse tambin como static.
Adems, estas clases se utilizan directamente ya que no permiten definir objetos a
partir de ellas.
Siguiendo el esquema de nombres sugerido anteriormente, guarde el archivo anterior
con el nombre EquipoAlfa.ColorTexto.cs y complelo utilizando el parmetro
/target:library, como lo muestra la siguiente instruccin tecleada en la lnea de
comandos:
> csc /t:library EquipoAlfa.ColorTexto.cs
Para cambiar a color rojo el mensaje ingresado por el usuario, el programa utiliza la
clase ColorTexto definida en el ensamblado EquipoAlfa.ColorTexto.dll. En el proceso
de compilacin de este programa, el compilador debe establecer donde se encuentra la
clase y fijar est informacin en el archivo ejecutable que se va a generar. Para ello es
necesario indicarle al compilador de C# el nombre del recurso con el cual debe realizar
el enlace, mediante la opcin /resources seguido del nombre del archivo DLL, que
en forma simplificada se escribe como /r.
En consecuencia la compilacin se debe realizar mediante la siguiente instruccin:
>csc /r:EquipoAlfa.ColorTexto.dll ejemplo04.cs
www.pedrov.phpnet.us
CAPITULO 1:
1 FUNDAMENTOS DE PROGRAMACIN EN .NET CON C#
13
Con esto ya tenemos los ensamblados entregados por los equipos Alfa y Beta y los
vamos a utilizar en nuestro proyecto de software. El cdigo del programa que nos
permite calcular las funciones trigonomtricas es el siguiente:
pedrov.cs@hotmail.com
14
// Archivo: Ejemplo05.cs
using System;
public class Trigonometria
{
static void Main()
{
double angulo = 0;
Console.Clear();
Console.Title = "Funciones trigonomtricas";
Console.Write("Valor del ngulo en grados = ");
angulo = Convert.ToDouble(Console.ReadLine());
angulo = angulo * Math.PI / 180; // Convierte de grados a radianes
EquipoBeta.ColorTexto.Amarillo("\nSeno = " + Math.Sin(angulo));
EquipoBeta.ColorTexto.Azul("Coseno = " + Math.Cos(angulo));
EquipoAlfa.ColorTexto.Rojo("Tangente = " + Math.Tan(angulo));
Console.ReadLine(); // Detiene la ejecucin hasta presionar ENTER
}
}
Este programa, para empezar limpia e inicializa la pantalla mediante el mtodo clear
de la clase Console y asigna un ttulo a la barra de ttulos de la consola, mediante la
propiedad Title.
La lectura de datos se realiza mediante el mtodo ReadLine. Pero este mtodo captura
el dato como una cadena de texto de tipo string, lo cual implica que para poderse
manipular como un valor numrico se debe convertir primero a nmero. En este caso
se utiliza la Clase esttica Convert y su mtodo ToDouble, que lo convierte de cadena
a un valor de tipo double (numero real de precisin doble).
Tambin, es necesario realizar una conversin del dato ingresado, pasndolo de grados
a radianes, ya que este es el formato que utilizan las funciones trigonomtricas de
.NET. Tanto el valor de la constante PI como las funciones trigonomtricas, y otras
funciones matemticas, se encuentran definidas e implementadas en al clase esttica
Math.
Finalmente, hay que compilar este archivo fuente, para generar el ensamblado de
nuestro programa, teniendo en cuenta que este depende de dos ensamblados ms,
EquipoAlfa.ColorTexto.dll y EquipoBeta.ColorTexto.dll. En el llamado al compilador
se debe pasar el listado de las libreras que se necesitan para la compilacin, utilizando
la opcin /r: seguida de los nombres de los archivos DLL, separados por comas (pero
sin espacios).
Debe tenerse en cuenta que para llamar a la clase ColorTexto, fue necesario incluir el
espacio de nombres al cual perteneca, dado que si no se hacia as se creara una
ambigedad que no permitira al sistema saber de cual clase se est hablando.
La compilacin se realiza ejecutando la siguiente instruccin en la lnea de comandos:
> csc /r:EquipoAlfa.ColorTexto.dll,EquipoBeta.ColorTexto.dll ejercicio05.cs
Con este sencillo ejemplo se ha mostrado la forma como se puede organizar una
aplicacin de software y la reutilizacin de algunos de sus componentes para ahorrar
trabajo y ganar tiempo en el proceso de desarrollo. Cuando abordemos el concepto de
programacin orientada a objetos, propiamente dicho, se dar mayor nfasis a este tipo
de diseo.
www.pedrov.phpnet.us