sábado, 11 de julio de 2009

C sharp NET/ Capítulo 2

C sharp NET/ Capítulo 2

CAPÍTULO 2
Primer programa ¡Hola Mundo!
En un alarde de originalidad, empezaremos con un simple programa que desplegará la
frase “¡Hola Mundo!”. Con este programa introduciremos las bases de nuestro estudio.
Debido a que la plataforma .NET es independiente del sistema operativo en este libro
procuraremos mantenernos imparciales en cuanto este asunto, eso si, cuando llegue el
tiempo de compilar y ejecutar daremos ejemplos de como hacerlo tanto en Windows como
en Linux (en otras plataformas como MacOS será lo mismo que en Linux).
Si estáis utilizando un entorno de desarrollo integrado debéis abrir un nuevo proyecto de
consola en C#, escribir o copiar lo que se muestra en el ejemplo 2.1 y compilad el proyecto
para ver su resultado. Si preferís programar con un editor de textos, abrid vuestro editor de
texto favorito y grabad en un directorio conocido lo que se encuentra en el ejemplo 2.1
como Programa.cs, abrid una ventana de terminal (en linux) o una ventana de comandos
(Ejecutar(Run) -> cmd) en Windows y compilad vuestro proyecto con el siguiente comando:
en linux con MONO(en el directorio donde habéis grabado vuestro programa):
mcs Programa.cs
en linux con dotGNU(en el directorio donde habéis grabado vuestro programa):
cscc -o Programa.exe Programa.cs
en Windows (en el directorio donde habéis grabado vuestro programa):
csc Programa.cs
de esta forma obtendréis vuestro primer programa. Para ejecutarlo simplemente escribid:
con MONO:
mono Programa.exe
con dotGNU:
ilsrun Programa.exe
o en Windows:
Programa
Ejemplo 2.1 Programa Hola Mundo
//Ejemplo 2.1 - Programa Hola Mundo
class HolaMundo
{
static void Main()
{
string var="Mundo";
C sharp NET/ Capítulo 2 2
System.Console.WriteLine ("Hola {0}!", var);
}
}
Analicemos paso a paso nuestro programa de ejemplo:
Comentarios
En la primera línea de nuestro programa encontramos lo siguiente: //Ejemplo 2.1 ....
Esta línea es un ejemplo de comentarios. Un comentario es una parte en vuestro programa
que será ignorado por el compilador.
Existen tres tipos de comentarios en C#. El primer tipo es comentario de un sola línea. El
segundo es comentario de varias líneas. El tercer tipo es para crear documentación. Este
último tipo de comentario lo estudiaremos en el capítulo 13 de este libro.
Los comentarios de una sola línea pueden ser incluidos en líneas independientes, en líneas
que ya incluyen código para comentar sobre lo que hace esa línea o para comentar una
línea de código que no necesitamos.
Los comentarios de varias líneas sirven para incluir muchas líneas de texto o código como
un comentario. Tienen una marca de inicio que dice cuando empieza el comentario y una
marca que indica el final de dicho comentario. La marca de inicio es /* y la marca para
finalizar es */ Así por ejemplo tenemos:
//Este es un ejemplo de comentarios de una línea
/*
este comentario
abarca varias lineas
*/
class HolaMundo
{
static void Main()
{
string var="Mundo";
System.Console.WriteLine ("Hola {0}!", var); //Este comentario
puede describir lo que esta función hace
//System.Console.WriteLine ("y esta linea no la vamos a
desplegar");
}
}
Clases, Objetos y tipos
La esencia de la programación orientada a objetos es la creación de nuevos tipos. Un tipo
es la representación de un componente (Pensado en un ordenador (un computador) que
está compuesto de varios componentes). En programación un componente es algo que
cumple una función. Por ejemplo, un componente puede ser un botón en un programa. En
una aplicación podemos tener varios botones del mismo tipo como por ejemplo botones de
Aceptar, Cancelar, etc. Porque son del mismo tipo estos botones tienen propiedades y
C sharp NET/ Capítulo 2 3
comportamientos similares. Pueden tener propiedades como cambiar de "tamaño",
"posición", etc. Las propiedades son las mismas pero los valores almacenados en sus
atributos pueden ser diferentes. Por ejemplo, un botón puede tener tamaño 10 y otro
tamaño 6. Podemos decir entonces que tenemos varias instancias del mismo componente
(o varios botones del mismo tipo) con diferentes valores en sus atributos.
La programación orientada a objetos es esto. Crear componentes que puedan ser reusados.
Así no tenemos que programar varios componentes que cumplan funciones similares sino
solo uno que podrá llevar diferentes atributos y que podrá ser reproducido (o instanciado)
tantas veces como lo necesitemos.
Como en varios lenguajes de programación orientado a objetos, en C# los tipos o
componentes son definidos por una clase (class en inglés). Las diferentes reproducciones o
instancias de un componente del mismo tipo se conoce como objetos. Posteriormente en
nuestro estudio veremos que en C# hay más tipos además de las clases. Aprenderemos
sobre enums, structs y delegates. Pero por el momento nos dedicaremos a las clases.
Como hemos visto en nuestro primer programa (Ejemplo 2.1), empezamos nuestro
programa declarando el tipo de componente que vamos a utilizar (un componente de tipo
class) y su nombre HolaMundo. Para declarar nuestro componente como una clase, primero
introducimos la palabra clave class, y después el nombre de nuestro componente, después
de lo cual declaramos las funciones que va a cumplir su comportamiento y sus propiedades.
Todas las funciones, comportamiento y propiedades de nuestro componente (en este caso
nuestra clase) deberán estar encerrados entre llaves { }. Las llaves delimitan el inicio y el
final de dicho componente.
Métodos o Funciones
Los métodos o funciones son trozos de código que realizan una acción, esto es, toman unos
argumentos y devuelven un valor. En C#, las funciones deben ser declaradas dentro de un
objeto, normalmente dentro de una clase.
Las funciones normalmente llevan nombre que definen su función. Por ejemplo, la función
WriteLine() de la clase Console como debéis suponer "Escribe una Linea en la consola". De
forma similar se pueden declarar clases a las que se le añaden un número ilimitado de
métodos. En nuestro ejemplo 2.1 la única función que hemos definido lleva el nombre de
Main() la cual es una función especial que indica la entrada principal de ejecución de un
programa. Cada programa en C# debe tener una función Main().
Crear nuevos métodos o funciones
Para declarar un método o función utilizamos el siguiente formato:
[entorno] tipo_a_retornar Nombre_de_la_Función ([tipo Argumento1, tipo
Argumento2,...])
{
//lineas de código
}
las palabras dentro de corchetes [] son partes opcionales
de acuerdo con nuestro ejemplo 2.1, la función Main() cumple con el formato establecido:
C sharp NET/ Capítulo 2 4
static void Main()
{
//lineas de código
}
• entorno: static
• tipo_a_retornar: void
• Nombre_de_la_Función: Main
• Argumentos: ninguno
En nuestro ejemplo la función Main() tiene como entorno la palabra clave static y como
tipo_a_retornar la palabra clave void. Cuando la función no retorna ningún tipo, utilizamos
la palabra void. Más adelante veremos más tipos además de void. La palabra static también
la veremos más adelante en nuestro estudio, por el momento debéis confiar en el ejemplo y
utilizarla aún sin saber lo que hace.
Podemos añadir a nuestro componente o clase un ilimitado número de funciones. Por
ejemplo, para añadir más funciones a nuestro primer ejemplo procederemos a crear una
función que suma dos valores. Como ya habéis aprendido en esta sección, crearemos
nuestra función de la forma establecida. Después del final de la función Main crearemos
una función con entorno static que retorne el tipo int, que se llame Suma y que acepte
dos argumentos de tipo int. Para hacerla funcionar vamos a llamarla desde nuestra
función principal:
Ejemplo 2.2 - Añadiendo funciones a nuestro programa
//Ejemplo 2.2 - Programa Hola Mundo con C# más adición
namespace Programa1
{
class HolaMundo
{
static void Main()
{
string var="Mundo";
System.Console.WriteLine ("Hola {0}!", var);
int num1 = 1;
int num2 = 3;
int resultado = Suma (num1, num2);
System.Console.WriteLine ("{0}+{1} = {2}", num1, num2,
resultado);
}
static int Suma(int valor1, int valor2)
{
return (valor1+valor2);
}
}
}
probad vuestro programa, compiladlo y ejecutadlo. El resultado será el siguiente:
C sharp NET/ Capítulo 2 5
Hola Mundo!
1 + 3 = 4
Ésta es una pequeña introducción a funciones, más adelante estudiaremos más
detalladamente como crear y utilizar funciones.
Aplicaciones de consola
Las aplicaciones de consola no poseen una interfaz gráfica, no tienen botones o ventanas,
poseen una interfaz basada simplemente en texto. El ejemplo que hemos realizado hasta
ahora es una aplicación de consola que despliega texto en la pantalla, para ello hemos
utilizado la función WriteLine.
Como habíamos visto en la introducción, la plataforma .NET posee más de 4000
componentes cada cual con diferentes funciones internas. En el caso de nuestro programa
hemos usado la función WriteLine que se encuentra dentro del componente Console. Para
poder hacer uso de funciones estáticas que se encuentran en otros componentes, en C#
como en la mayoría de lenguajes de programación orientados a objetos, debemos
especificar el nombre del componente en primer lugar seguido por un punto y a
continuación en el nombre de la función. Es por esto que utilizamos la frase
Console.WriteLine. Dentro del componente Console la plataforma .NET tiene disponibles
muchísimas otras funciones que nos ayudan a diseñar programas de consola. El lenguaje
C# esta orientado con el paradigma de objetos y hereda muchos elementos de C++.
Namespaces
Quizá algunos de vosotros os habréis preguntado ¿que significa la palabra System que está
al inicio de cada programa?. Púes bien, System en este caso representa un Espacio de
nombres (namespace en inglés).
Los espacios de nombres (namespaces) se crearon principalmente para dar más
organización a los componentes. La plataforma .NET tiene incorporados muchísimos
componentes y sería una tarea imposible tratar de memorizar todos los nombres de ellos
para no repetirlos. Tarde o temprano querréis crear un componente y no sabréis si el
nombre que queréis darle ya existe o no. Para evitarnos este problema y para poder
distinguir a dónde pertenecen ciertos componentes se han creado los espacios de nombres.
Pongamos un ejemplo para comprender este concepto. Supongamos que deseamos crear
varios componentes para una institución educativa que se compone de educación primaria
y educación secundaria. ¿Cómo podríamos crear un componente que se llame Presidente
si existen 2 presidentes que tienen funciones distintas uno para la sección primaria y otro
para la sección secundaria? En este caso podríamos aplicar un espacio de nombres para
poder crear los componentes Presidente que cumplen distintas funciones. Podríamos
crear el espacio de nombres Primaria y dentro de éste el componente Presidente. De
igual forma el espacio de nombres Secundaria y dentro de éste el componente
Presidente cada uno componentes podrá tener definiciones distintas. Para acceder a las
funciones de los componentes Presidente podríamos usar:
Primaria.Presidente.nombre_de_la_función();
y
Secundaria.Presidente.otra_función();
C sharp NET/ Capítulo 2 6
Cada una de las dos definiciones de Presidente son independientes, no tienen relación
entre sí ya que pertenecen a dos espacios de nombre distintos.
De ésta forma podremos crear componentes y funciones con el nombre que deseemos
siempre y cuando especifiquemos a qué espacio de nombres pertenecen.
De acuerdo con la línea de código estudiada: System.Console.WriteLine ("Hola {0}!",
var); existe una función llamada WriteLine dentro del componente Console dentro del
nombre de espacio System. Cualquier otro componente llamado Console dentro de otro
espacio de nombres, es un componente diferente con funciones diferentes que quizás no
posea la función WriteLine.
Algo importante que debemos notar es que los espacios de nombres pueden tener
sub-espacios de nombres y estos a su vez sub-espacios de nombres. El objetivo de esto,
como lo hemos dicho, es mantener una organización de los componentes. Los espacios de
nombres, componentes y métodos se accederán de la misma forma como lo hemos visto a
través de un punto.
La palabra clave using
En ciertos proyectos tendremos que usar cierto espacio de nombres muchas veces.
Supongamos que estamos implementando un programa de consola y tenemos que usar el
componente Console repetidamente. Una forma de ahorrarnos escribir System varias
veces es especificar el espacio de nombres que vamos a usar al inicio de nuestro programa
con la palabra clave using. Por ejemplo en nuestro ejemplo 2.2 si añadimos la línea de
código using System; al inicio de nuestro programa, podemos llamar al componente
Console sin escribir System al inicio:
Ejemplo 2.2 Modificado - La palabra clave using
//Ejemplo 2.2 Modificado - La palabra clave ''using''
using System;
namespace Programa1
{
class HolaMundo
{
static void Main()
{
string var="Mundo";
Console.WriteLine ("Hola {0}!", var);
int num1 = 1;
int num2 = 3;
int resultado = Suma (num1, num2);
Console.WriteLine ("{0}+{1} = {2}", num1, num2, resultado);
}
static int Suma(int valor1, int valor2)
{
return valor1+valor2;
}
}
C sharp NET/ Capítulo 2 7
}
Comparando con nuestro ejemplo 2.2 original las líneas en negrita muestran esta ventaja.
Algo importante para tener en cuenta es que la palabra clave using no puede ser utilizada
para ahorrarse el escribir el nombre de la clase. Por ejemplo la línea de código using
System.Console es inválida y producirá errores de compilación.
Caracteres sensibles
C# como todos los lenguajes de programación derivados de C hace diferencia entre
caracteres en mayúscula y caracteres en minúscula. Esto quiere decir que las palabras
Using y using son distintas y por lo tanto no cumplen la misma función. Debido a esto
debemos tener mucho cuidado cuando escribimos nuestros programas.
system.console.writeLine es diferente a system.Console.WriteLine y es diferente a
System.Console.WriteLine que es el nombre de espacio, componente y método que C#
incorpora para desplegar texto en la consola.
Finalizada esta pequeña introducción a nuestro primer programa en C#, pasamos al
capítulo 3 en donde examinaremos mas profundamente los fundamentos de C#.

No hay comentarios:

Publicar un comentario