Está en la página 1de 27

Entorno integrado de desarrollo.

El entorno integrado de desarrollo (IDE) que usaremos para C# es el que trae consigo el Visual Studio 2005 o 2008 o 2010 .

El IDE que presenta es similar al siguiente:

Figura. 1 IDE de Visual c#

Al iniciar Visual C# 2005 por primera vez nos encontramos con un entorno como el que aparece en la figura 1, con elementos habituales como un men de opciones, una barra de botones debajo y una serie de ventanas adosadas. La pgina de inicio aparece en primer plano, ofreciendo una lista de los proyectos en los que hemos trabajado recientemente y enlaces para abrir y crear otros

proyectos; debajo una lista de accesos directos a temas de la ayuda y a la derecha una serie de hipervnculos a noticias relacionadas con el producto obtenidas a travs de Internet. Esta pgina estar vaca si no disponemos de una conexin a la red.

Ventanas. (Proyecto, propiedades, ayuda). Creando un proyecto. Si tenemos abierta la Pgina de inicio, podemos hacer clic en el enlace Crear proyecto que aparece en la parte inferior de la seccin Proyectos recientes. Tambin podemos sencillamente pulsar el botn Nuevo proyecto, que por defecto es el primero de izquierda a derecha en la barra de botones; elegir la opcin Archivo> Nuevo proyecto del men principal o pulsar la combinacin de teclas Control- Maysc N. En cualquier caso siempre nos encontraremos con el cuadro de dilogo que parece en la figura 2, en el que se enumeran las plantillas de proyectos que tenemos instaladas.

Figura 2. Plantillas de un proyecto nuevo

En esa ventana podemos seleccionar el tipo de proyecto, la plantilla, el nombre que tendr nuestro proyecto, la ubicacin donde se almacenar y el nombre de la solucin.

Para seguir comentando otras ventanas de clic en aceptar sin hacer ningn cambio en la ventana de Nuevo proyecto.

Explorador de soluciones.

El desarrollo de programas en Visual c# es ms fcil y prctico al hacer uso de varias ventanas que incorpora el IDE. Por ejemplo en la figura 1 vemos que en la parte derecha del entorno est ocupada por el explorador de soluciones, una ventana que nos servir para gestionar los elementos que forman parte de cada proyecto. Observe la parte superior de ese panel: en el extremo derecho, tras el ttulo, aparece una serie de iconos:

Tabla 1. Iconos del explorador de soluciones Este botn da paso a un men desplegable que nos permite establecer la configuracin de la ventana, eligiendo entre acoplarla a otras (estado en el que se encuentra por defecto), dejarla flotante, ocultarla automticamente, etc. Este icono aparece en las ventanas que se encuentran acopladas. Al hacer clic sobre l la ventana pasa a ocultarse automticamente cuando no est en uso, quedando visible nicamente una pestaa. En el margen superior izquierdo de la figura 1 puede ver una pestaa con el ttulo cuadro de herramientas que se encuentra oculto. Situando el puntero del ratn sobre esa pestaa se abrir la ventana, que volver a ocultarse automticamente cuando no se use a menos que hagamos clic sobre este icono. Como es fcil imaginar, este icono sirve para cerrar la ventana. Podemos cerrar todas aquellas ventanas que no utilicemos con frecuencia, para liberar as el entorno y tener ms espacio libre. En cualquier momento podemos recurrir a las opciones del men Ver para volver a abrir las que nos interesen.

El rea central del entorno, donde ahora mismo se encuentra la pgina de inicio, sirve para ir mostrando las ventanas de los distintos editores y diseadores con que cuenta el producto. Por cada pgina abierta aparecer una pestaa en la parte superior, de tal forma que un simple clic nos llevar de una a otra.

Las ventanas no tienen una posicin fija en el entorno, sino que podemos colocarlas donde ms cmodo nos resulte. Basta con tomar la ventana por la barra de ttulo y arrastrarla all donde interese. Durante el proceso aparecern unas guas, en forma de iconos semitransparentes (figura 3), que facilitan la operacin. Basta con llevar el punto del ratn a uno de estos iconos para acoplar la ventana a uno de los mrgenes o apilarla como una pgina ms, viendo de forma interactiva dnde quedara antes de que la soltemos.

Figura 3. Arrastrando el explorador de soluciones

Cuadro de herramientas.

En esta ventana se encuentran los diversos objetos que podemos utilizar para componer nuestra aplicacin. En cierta manera son como los materiales para una construccin, teniendo cada uno de ellos unas propiedades y finalidad concreta.

Dada la extensa lista de componentes que existen, en esta ventana aparecen clasificados en varios grupos: controles comunes, contenedores, mens y barras de herramientas, impresin, dilogos, etc. El ttulo de cada categora cuenta con un botn, a su izquierda, que nos permite cerrarlas y abrirlas segn convenga. Ver Figura 4.

Explorador de soluciones A la derecha, en la parte superior, est el Explorador de soluciones, la ventana en la que se enumeran los elementos que conforman el proyecto sobre el que estamos trabajando. Cada uno de esos elementos cuenta con un men emergente que debemos explorar para conocer todas las opciones disponibles: agregar nuevos elementos al proyecto, abrir un mdulo en su diseador o en el editor de cdigo, etc. Ver Figura 4.

Ventana propiedades Finalmente, debajo de la anterior, encontramos la ventana Propiedades. sta contiene la lista de propiedades del elemento que tengamos en cada momento seleccionado en el diseador, facilitando su modificacin. En este momento, estando el formulario vaco y, por tanto, siendo el nico componente disponible, podemos usar la citada ventana por ejemplo para cambiar el ttulo por defecto, sencillamente cambiando el valor que contiene la propiedad llamada Text por cualquier otro, por ejemplo Mi primer proyecto. En cuanto pulse Intro comprobar

que el ttulo mostrado en la ventana cambia. De manera anloga podramos alterar otras caractersticas de la ventana, pero para ello antes deberamos conocer cul es la utilidad de cada una de las propiedades. Ver Figura 4.

Figura 4. Entorno habitual de trabajo

Ventana ayuda Como en cualquier aplicacin visual se tiene una ventana de ayuda que facilita al programador en el desarrollo o codificacin de programas.

Figura 5. Ayuda de visual 2005

Ayuda inteligente

Adems este IDE para el lenguaje C# contempla el uso de la ayuda inteligente a la escritura del cdigo (Intellisense). Por ejemplo cuando escribimos el nombre de un objeto o una clase el IDE presenta un cuadro emergente con una lista de posibles elementos a utilizar. En la siguiente figura se muestra un ejemplo.

Figura 6. Ayuda Inteligente

Tipos de proyectos.

A continuacin la figura siguiente muestra los diferentes tipos de proyectos que se pueden crear con Visual C#. En este curso usaremos el tipo de proyectos Windows, con la plantilla Aplicacin para Windows.

Figura. 7. Tipos de proyectos de Visual C#

Comentarios Un comentario es una instruccin que no se ejecuta en un programa. Solo sirve para documentar el cdigo.

Los comentarios en C# se usan de la siguiente manera:

// Comentario para una sola lnea.

/* Comentario que abarca una o mas lneas. */

Constantes Una constante es un campo de memoria cuyo valor no cambia durante la ejecucin de un programa.

Sintaxis para declarar una constante en C#.

mbito const tipo NOMBRECTE = valor;

Existen constantes numricas, de cadena, de carcter y lgicas. Ejemplo:

private const string CADENACERO="0.";

1.5.

Tipos de Datos

Tipo
sbyte byte char short ushort int uint

Intervalo
-128 a 127 0 a 255 U+0000 a U+ffff -32.768 a 32.767 0 a 65.535 -2.147.483.648 a 2.147.483.647 0 a 4.294.967.295

Tamao
Entero de 8 bits con signo Entero de 8 bits sin signo Carcter Unicode de 16 bits Entero de 16 bits con signo Entero de 16 bits sin signo Entero de 32 bits con signo Entero de 32 bits sin signo

long ulong double Bool decimal object String

-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 0 a 18.446.744.073.709.551.615 5,0e324 a 1,7e308 True o False

Entero de 64 bits con signo Entero de 64 bits sin signo 15-16 dgitos

128 bits Base de la jerarqua de objetos Cadena inmutable de longitud fija de caracteres Unicode

Variables Una variable es un campo de memoria representado por un nombre (identificador) que almacena un valor, y que puede cambiar durante la ejecucin de un programa.

Sintaxis para declarar/crear una variable:

mbito tipo nombreVariable; mbito tipo nombreVariable1, nombreVariable2,.; mbito tipo nombreVariable=valor; //Declarando e inicializando

Las variables pueden ser de cualquier tipo de dato. Ejemplo:

byte edad; string nombre; double iva=0.15;

Operadores Aritmticos o matemticos Smbolo + * / % Significado Suma Resta Multiplicacin Divisin Resto de una divisin entera

Relacionales Smbolo > < >= <= != == Significado Mayor Menor Mayor o igual Menor o igual Diferente Igualdad

Lgicos Smbolo && || ! Significado AND (y) OR (o) NOT (no)

Incremento/Decremento Smbolo ++ -Significado Incremento en una Unidad Decremento en una unidad

Sentencias Bsicas de Entrada y salida de datos

Se requiere de una clase llamada Console, donde se manipulan mtodos especficos para leer y escribir datos.

Por ejemplo: Console.ReadLine(); //Permite leer un dato desde el teclado


Nombre=Console.ReadLine();//--- Los datos que lee desde el //--- teclado lo carga a la variable Nombre

Console.Write(); //Permite escribir un dato hacia pantalla


Console.Write ("Introduzca su nombre: "); //--- Imprimir los datos, se concatenan con + Console.WriteLine ("Su nombre completo es: " + Nombre + " " + Apellidos);

Asignacin. Consiste en asignar un valor a una variable.

Formato o Sintaxis: Variable=Expresin; Ejemplo:

acumula= acumula + numero;

Arreglos Los arreglos son estructuras de datos complejas (en el sentido de que no son atmicas) que agrupan datos de un mismo tipo en particular, llamado el tipo base

del arreglo. El tipo base de un arreglo puede ser cualquiera de los tipos bsicos de C#, o incluso algunos tipos complejos como las clases. Un arreglo es tambin ejemplo de un modelo. Un arreglo puede considerarse como ejemplo de una variable compuesta capaz de almacenar uno o ms datos al mismo tiempo.

Los arreglos, al igual que el resto de las variables se identifican con un nombre. Al emplear ese nombre, se hace referencia a la estructura de datos como un todo, es decir, con todos sus elementos. El lenguaje interpreta dicho nombre como un puntero. Cuando se utiliza el nombre del arreglo en forma indexada, es decir, combinado con ndices, se hace referencia a un elemento particular, del tipo base, dentro de la estructura compleja.

Importante: El lenguaje C# no controla la validez de los ndices que se emplean para referenciar un arreglo. Esto quiere decir que es posible cometer errores graves y difciles de detectar en este sentido.

Declaracin de Arreglos Unidimensionales Los arreglos, al igual que las dems variables deben declararse antes de poder utilizarlas, y cumplen con las mismas reglas de alcance y vida.

Los arreglos de una sola dimensin reciben tambin el nombre de vectores. La sintaxis de la declaracin de un arreglo unidimensional es la siguiente:

<tipo-base>[ ] <identificador>;

Observaciones: El <tipo-base> puede ser cualquiera de los tipos bsicos del lenguaje, o incluso algunos complejos como estructuras. El <identificador> es el nombre que distinguir el arreglo. Los corchetes [] son obligatorios y denotan que el identificador descrito, del tipo-base indicado, es un arreglo (lista de elementos del tipo base).

En esta declaracin NO se define el tamao que tendr el arreglo (aunque se puede determinar las dimensiones).

El tamao del arreglo se determina en una segunda declaracin, que puede ir en la siguiente lnea, como se muestra a continuacin. <identificador> = new <tipo-base> [<NumElementos>]

En esta declaracin, se dimensiona el arreglo con una cantidad determinada de elementos, todos correspondientes a tipo-base.

Es posible hacer la declaracin del arreglo y su dimensionamiento en una misma sentencia:

<tipo-base>[ ] <identificador> = new <tipo-base>[<NumElementos>]

Adicionalmente es factible declarar, dimensionar, e inicializar un arreglo con todos sus elementos, en una sola declaracin:

<tipo-base>[ ] <identificador> = {valor1, valor2, ..., valorN};

Esta ltima declaracin implcitamente dimensiona el arreglo para almacenar los N elementos descritos, por lo que no se requiere dimensionarlo aparte. Es decir:

Con los valores indicados entre llaves {} se inicializarn los elementos del arreglo. Los valores deben ser del <tipo-base> del arreglo.

Tambin es factible declarar, dimensionar, e inicializar un arreglo con todos sus elementos, en una sola declaracin, pero slo indicando un subconjunto de los valores que el arreglo puede guardar.

<tipo-base>[] <identificador> = new <tipo-base>[N] {valor1, ..., valorM};

Algunos ejemplos: // Arreglo para 10 enteros int [ ] numeros; numeros = new int[10]; // Arreglo para 10 enteros int [ ] numeros = new int[10]; // Arreglo para 10 enteros int [ ] numeros = { 1, 1, 1, 2, 3, 5, 2, 5, 3, 4 };

En C#, los arreglos se representan con un tipo especfico, y por ello cuentan con sus propios atributos y mtodos especficos. Por ejemplo, para obtener el largo (la cantidad de elementos dimensionados) de un arreglo, o para ordenarlo. En el caso de los arreglos unidimensionales, el tamao o cantidad de elementos se obtiene con la propiedad Length.

int [ ] numeros = { 1,2,3,4,5,6 } ; Console.WriteLine(Largo: {0}, numeros.Length); En el caso de los arreglos que sean de uno de los tipos predefinidos (int, float, char, etc.), es factible ordenarlos en forma creciente, aprovechando el mtodo bsico Sort() de la clase Array

int [ ] numeros = { 4,5,2,3,1,6 } Array.Sort(numeros); // 1,2,3,4,5,6 En el mismo caso en que se pueda ordenar un arreglo, se puede reordenar exactamente al revs de cmo est, aprovechando el mtodo bsico Reverse() de la clase Array

int [ ] numeros = { 1,2,3,4,5,6 } Array.Reverse(numeros); // 6,5,4,3,2,1 Ejemplo de Manipulacin de arreglos using System; class Arreglo { int[] numeros; public Arreglo(int [ ] arreglo) {

numeros = new int[arreglo.Length]; for (int i=0; i<numeros.Length; i++) numeros[i] = arreglo[i]; } public void Ordenar() { Array.Sort(numeros); } public void Reordenar() { Array.Reverse(numeros); } public void Imprimir() { foreach(int i in numeros) Console.Write("{0} ",i); Console.WriteLine(); } } class MainApp { static void Main() { int[] numeros = { 2, 5, 6, 1, 3, 4 }; Arreglo a = new Arreglo(numeros); a.Imprimir(); a.Ordenar(); a.Imprimir(); a.Reordenar(); a.Imprimir(); Console.ReadLine(); } } 1. Declaracin de un arreglo de 50 enteros: int[] A = new int[50]; 2. Declaracin de un arreglo de 100 caracteres: char[] A = new char[100]; 3. Declaracin e inicializacin de un arreglo de 10 enteros: int[] A = { 2, 5, 8, 100, 1, 2, 100, 5, 5, 5 }; 4. Inicializacin parcial: El resto se inicializa en cero: int[] A = new int[100] { 25, 5, 100, 25, 5 }; 5. Declaracin e inicializacin de un arreglo de 10 caracteres: char[] A = { 'a', 'z', 'E', 'e', '@', 'U', '*', '\n' }; 6. Asignando un valor a la sexta posicin de un arreglo de enteros: A[5] = 200; 7. Imprimiendo un arreglo de 100 enteros mediante un ciclo for: int i; for (i=0; i<100; i++) Console.Write("{0} ", A[i]); 8. Imprimiendo un arreglo de 100 enteros mediante un ciclo foreach: int[] A = new int [100];

foreach (int i in A) Console.Write("{0} ", i); 9. Leyendo del usuario el contenido de un arreglo de 20 enteros, mediante un ciclo for: int i; for (i=0; i<20; i++) A[i] = int.Parse(Console.ReadLine()); 10. Una funcin que recibe un arreglo de enteros como argumento y calcula el promedio: int promedio(int[] A) { int prom = 0; foreach( int i in A ) prom = prom + i; return(prom/A.Length); } Matrices Las matrices son arreglos en los que cada elemento es a su vez otro arreglo. La sintaxis de la declaracin de una matriz es la siguiente: <tipo-base>[,] <identificador>; Observaciones: El <tipo-base> puede ser cualquiera de los tipos bsicos del lenguaje, o incluso algunos complejos como estructuras. El <identificador> es el nombre que distinguir el arreglo. Los corchetes [] son obligatorios y denotan que el identificador descrito, del tipo-base indicado, es un arreglo (lista de elementos del tipo base). El separador de dimensiones es la coma ,. Posibles formas de declarar las matrices <tipo-base>[M,N] identificador = { { valor1-1, valor1-2, ..., valor1-N }, { valor2-1, valor2-2, ..., valor2-N }, ..., { valorM-1, valorM-2, ..., valorM-N } }; <identificador> = new <tipo-base>[NumElem1, NumElem2];

Uso de matrices Los elementos de una matriz se pueden entender como un casillero o una celda, determinada por fila y columna. Para asignar un valor a un elemento de una matriz basta con escribir: matriz[indice1,indice2] = valor; En donde matriz es el nombre de la variable y las expresiones indice1 e indice2 hacen referencia a la posicin del elemento al que se le quiere asignar el valor. El nombre de una matriz tambin puede emplearse sin ndice, bajo ciertas circunstancias, por ejemplo, para pasar la matriz completa como argumento a una funcin . Ejemplo de uso de matrices 1. Declaracin de una matriz de 50 filas de 20 enteros:

int[,] matriz = new int[50,20]; 2. Declaracin e inicializacin de una matriz: int[,] matriz = { { 2, 5, 8 }, { 9, 1, 2 } }; // 2 filas, 3 col. 3. Asignando un valor a la primera posicin de la segunda fila de una matriz de enteros: matriz[1,0] = 50; 4. Imprimiendo una matriz de 100x50 enteros mediante un ciclo for: int i, j; for (i=0; i<100; i++) { for (j=0; j<50; j++) Console.Write("{0} ", matriz[i,j]); Console.WriteLine(); } 5. Imprimiendo una matriz de NxN enteros mediante un ciclo for: int i, j; for (i=0; i<matriz.GetLength(0); i++) { for (j=0; j< matriz.GetLength(1); j++) Console.Write("{0} ", matriz[i,j]); Console.WriteLine(); }

Procedimientos y funciones En C# los procedimientos y funciones se analizan como mtodos de una clase.

METODOS Un mtodo es un conjunto de instrucciones a las que se les da un determinado nombre de tal manera que sea posible ejecutarlas en cualquier momento sin tenerlas que reescribir sino usando slo su nombre. A estas instrucciones se les denomina cuerpo del mtodo, y a su ejecucin a travs de su nombre se le denomina llamada al mtodo. La ejecucin de las instrucciones de un mtodo puede producir como resultado un objeto de cualquier tipo. A este objeto se le llama valor de retorno del mtodo y es completamente opcional, pudindose escribir mtodos que no devuelvan ninguno. La ejecucin de las instrucciones de un mtodo puede depender del valor de unas variables especiales denominadas parmetros del mtodo, de manera que en funcin del valor que se d a estas variables en cada llamada la ejecucin del mtodo se pueda realizar de una u otra forma y podr producir uno u otro valor de retorno. Al conjunto formado por el nombre de un mtodo y el nmero y tipo de sus parmetros se le conoce como signatura del mtodo. La signatura de un mtodo es lo que verdaderamente lo identifica, de modo que es posible definir en un mismo tipo varios mtodos con idntico nombre siempre y cuando tengan distintos parmetros. Cuando esto ocurre se dice que el mtodo que tiene ese nombre est sobrecargado. Definicin de mtodos Para definir un mtodo hay que indicar tanto cules son las instrucciones que forman su cuerpo como cul es el nombre que se le dar, cul es el tipo de objeto que puede devolver y cules son los parmetros que puede tomar. Esto se indica definindolo as: [mbito] tipo nombreMetodo ([parmetros]) { //declaraciones locales // cuerpo del mtodo } En <tipoRetorno> se indica cul es el tipo de dato del objeto que el mtodo devuelve, y si no devuelve ninguno se ha de escribir void en su lugar. Como nombre del mtodo se puede poner en <nombreMtodo> cualquier identificador vlido.

Aunque es posible escribir mtodos que no tomen parmetros, si un mtodo los toma se ha de indicar en <parmetros> cul es el nombre y tipo de cada uno, separndolos con comas si son ms de uno y siguiendo la sintaxis que ms adelante se explica. El <cuerpo> del mtodo tambin es opcional, pero si el mtodo retorna algn tipo de objeto entonces ha de incluir al menos una instruccin return que indique cul objeto retornar.

Llamada a mtodos La forma en que se puede llamar a un mtodo depende del tipo de mtodo del que se trate. Si es un mtodo de objeto (mtodo no esttico) se ha de usar la notacin:

objeto.nombreMtodo([argumentos]) El <objeto> indicado puede ser directamente una variable del tipo de datos al que pertenezca el mtodo o puede ser una expresin que produzca como resultado una variable de ese tipo (recordemos que, debido a la herencia, el tipo del <objeto> puede ser un subtipo del tipo donde realmente se haya definido el mtodo); pero si desde cdigo de algn mtodo de un objeto se desea llamar a otro mtodo de ese mismo objeto, entonces se ha de dar el valor this a <objeto>. Los argumentos son los valores que sern enviados a los parmetros, puede ser directamente con un valor o por medio de una variable. En caso de que sea un mtodo de tipo (mtodo esttico), entones se ha de usar:

tipo.nombreMtodo([argumentos]) Ahora en <tipo> ha de indicarse el tipo donde se haya definido el mtodo o algn subtipo suyo. Sin embargo, si el mtodo pertenece al mismo tipo que el cdigo que lo llama entonces se puede usar la notacin abreviada:

nombreMtodo([argumentos])

El formato en que se pasen los valores a cada parmetro en <valoresParmetros> a aquellos mtodos que tomen parmetros depende del tipo de parmetro que sea.

Tipos de parmetros. Sintaxis de definicin La forma en que se define cada parmetro de un mtodo depende del tipo de parmetro del que se trate. En C# se admiten cuatro tipos de parmetros: parmetros de entrada, parmetros de salida, parmetros por referencia y parmetros de nmero indefinido. Parmetros de entrada (conocidos como parmetros por valor) Un parmetro de entrada recibe una copia del valor que almacenara una variable del tipo del objeto que se le pase. Por tanto, si el objeto es de un tipo valor se le pasar una copia del objeto y cualquier modificacin que se haga al parmetro dentro del cuerpo del mtodo no afectar al objeto original sino a su copia; mientras que si el objeto es de un tipo referencia entonces se le pasar una copia de la referencia al mismo y cualquier modificacin que se haga al parmetro dentro del mtodo tambin afectar al objeto original ya que en realidad el parmetro referenca a ese mismo objeto original. Para definir un parmetro de entrada basta indicar cul el nombre que se le desea dar y el cul es tipo de dato que podr almacenar. Para ello se sigue la siguiente sintaxis:

tipoParmetro nombreParmetro Por ejemplo, el siguiente cdigo define un mtodo llamado Suma que toma dos parmetros de entrada de tipo int llamados par1 y par2 y devuelve un int con su suma: int Suma(int par1, int par2) { return par1+par2; } Como se ve, se usa la instruccin return para indicar cul es el valor que ha de devolver el mtodo. Este valor es el resultado de ejecutar la expresin par1+par2; es decir, es la suma de los valores pasados a sus parmetros par1 y par2 al llamarlo. Parmetros de salida out Un parmetro de salida se diferencia de uno de entrada en que todo cambio que se le realice en el cdigo del mtodo al que pertenece afectar a los argumentos que se le pasen al llamar dicho mtodo. Esto se debe a que lo que a estos parmetros se les pasa es siempre una referencia al valor que almacenara una variable del tipo del objeto que se les pase.

Cualquier parmetro de salida de un mtodo siempre ha de modificarse dentro del cuerpo del mtodo y adems dicha modificacin ha de hacerse antes que cualquier lectura de su valor. Si esto no se hiciese as el compilador lo detectara e informara de ello con un error. Por esta razn es posible pasar parmetros de salida que sean variables no inicializadas, pues se garantiza que en el mtodo se inicializarn antes de leerlas. Adems, tras la llamada a un mtodo se considera que las variables que se le pasaron como parmetros de salida ya estarn inicializadas, pues dentro del mtodo seguro que se las inicializa. Ntese que este tipo de parmetros permiten disear mtodos que devuelvan mltiples objetos: un objeto se devolvera como valor de retorno y los dems se devolveran escribindolos en los parmetros de salida. Los parmetros de salida se definen de forma parecida a los parmetros de entrada pero se les ha de aadir la palabra reservada out. O sea, se definen as:

out tipoParmetro nombreParmetro Al llamar a un mtodo que tome parmetros de este tipo tambin se ha preceder el valor especificado para estos parmetros del modificador out. Una utilidad de esto es facilitar la legibilidad de las llamadas a mtodos. Por ejemplo, dada una llamada de la forma:

f(x, out z) Es fcil determinar que lo que se hace es llamar al mtodo f() pasndole x como parmetro de entrada y z como parmetro de salida. Adems, tambin se puede deducir que el valor de z cambiar tras la llamada. Sin embargo, la verdadera utilidad de forzar a explicitar en las llamadas el tipo de paso de cada parmetro es que permite evitar errores derivados de que un programador pase una variable a un mtodo y no sepa que el mtodo la puede modificar. Tenindola que explicitar se asegura que el programador sea consciente de lo que hace. Parmetros por referencia Un parmetro por referencia es similar a un parmetro de salida slo que no es obligatorio modificarlo dentro del mtodo al que pertenece, por lo que ser obligatorio pasarle una variable inicializada ya que no se garantiza su inicializacin en el mtodo.

Los parmetros por referencia se definen igual que los parmetros de salida pero sustituyendo el modificador out por el modificador ref. Del mismo modo, al pasar valores a parmetros por referencia tambin hay que precederlos del ref.

Ejemplo: class OutExample { static void Method(out int i) { i = 44; } static void Main() { int value; Method(out value); // value is now 44 } }

Estructuras de control Estructuras Selectivas: Sentencia if(). Ejecutar una o ms sentencias dependiendo si se cumple o no una condicin. En otras palabras desva la ejecucin del programa, si una condicin se cumple. Existen varias formas de aplicar la sentencia if(). Sentencia if() simple: if(condicion) sentencia(s); if() doble. if(condicion) sentencia(s)A; else sentencia(s)B;

if() Mltiple. If (condicion1) sentencia(s)1; else if (condicion2) sentencia(s)2; else if (condicion3) sentencia(s)3; .. else Sentencia(s); if() Andidado if(condicion1) if(condicion1.1) if(condicion1.1.1) sentencia(s)1.1.1; else sentencia(s)1.1.2; else sentencia(s)1.2; else sentencia(s)2; Sentencia switch(). Ejecuta un caso de varios posible Sustituye al if mltiple en la mayora de las veces. Adems es muy comn usarla en mens de opciones. Formato de un switch(); switch(variable){ case constante1: sentencia(s); [break;] case constante2: sentencia(s); [break;] case constante3: sentencia(s); [break;] case constante4: sentencia(s); [break;] . case constanteN: sentencia(s); [break;] [default: sentencia(s)N;] } Las constantes pueden ser de tipo entero o char nicamente;

Estructuras Repetitivas Sentencia for() Ejecuta un nmero de instrucciones o sentencias cierto nmero de veces. (De antemano se conoce el nmero de veces que se ejecuta el ciclo). Formato general: (for ascendente). for( variable=vi;variable<=vf;variable++) sentencia(s); (for descendente). for( variable=vf;variable>=vi;variable--) sentencia(s); Sentencia while. Ejecuta un numero de instrucciones o sentencias dependiendo si se cumple o no una condicin. Quiere decir que mientras se cumpla la condicin el ciclo se ejecuta. Formato general: while(condicin) sentencia(s);

Sentencia do..while. Ejecuta al menos una vez sus instrucciones o sentencias por que la condicin se verifica al final. Formato general: do{ sentencia(s); }while(condicin);

Sentencia foreach La instruccin foreach repite un grupo de instrucciones definidas, para cada elemento dentro de un arreglo o dentro de una coleccin de objetos. Esta instruccin se usa para iterar a travs de la coleccin para obtener la informacin requerida, pero no debe ser utilizada para cambiar los contenidos de la coleccin del arreglo, ya que puede producir efectos laterales no deseados. La declaracin tiene la siguiente forma:

foreach (tipo identificador in expresin) sentencia(s);

using System; class MainClass { public static void Main() { int impares = 0, pares = 0; int[] arr = new int[] { 0, 1, 2, 5, 7, 8, 11 }; foreach (int i in arr) { if (i % 2 == 0) pares++; else impares++; } Console.WriteLine("Hay {0} impares y {1} pares.", impares, pares); } }

Controles bsicos y sus propiedades.


La lista de controles que pueden utilizarse para confeccionar una interfaz de usuario basada en formularios Windows es muy extensa, pero existe un grupo cuyo uso resulta mucho ms frecuente. Forman parte de este grupo los botones, cuadros de texto, listas, botones de radio y etiquetas de texto, entre otros. En general, los controles de uso ms comn los encontraremos en la seccin Controles comunes del Cuadro de herramientas. A la hora de insertar un control en el formulario tenemos varias opciones: hacer doble clic sobre el control en el Cuadro de herramientas, hacer clic sobre el control y despus en el punto del formulario donde se desea colocar o bien hacer clic sobre el control y a continuacin arrastrar y soltar sobre el formulario a fin de delimitar el rea que deseamos asignar como tamao inicial. Las dos primeras tcnicas insertan el control usando las dimensiones por defecto, si bien podemos ajustarlas con posterioridad. De optar por el doble clic en el icono del control, tambin la posicin inicial en el formulario ser la usada por defecto por el diseador, mientras que el segundo procedimiento nos permite ponerlo en el lugar que deseemos. En cualquier caso, una vez insertado el control puede arrastrarse y colocarse donde deseemos. A medida que arrastremos los controles dentro del formulario, para alterar su posicin, el diseador nos ir mostrando unas lneas gua que facilitan la alineacin respecto a los dems que haya alrededor. Tambin al cambiar el tamao aparecern dichas lneas, haciendo que sea ms fcil conseguir controles con el mismo ancho o alto sin necesidad

de tener que editar directamente las propiedades Width y Height en la ventana Propiedades. Adems de los recuadros que aparecen en el contorno del control, una vez insertado, y que sirven para ajustar su tamao, ciertos controles mostrarn en la parte superior derecha un botn con el icono de una flecha en su interior. Dicho botn da paso al men de tareas del control, enumerando las opciones de configuracin que se utilizan de forma ms habitual en cada caso. La lista de tareas de un TextBox, por ejemplo, permite activar o desactivar la propiedad MultiLine para permitir la introduccin de varias lneas de texto, mientras que en el control ListBox encontramos opciones para editar los elementos mostrados en la lista o vincularla a un origen de datos.

También podría gustarte