1) El documento describe conceptos básicos de programación como funciones, arreglos y cadenas de texto en C#. Explica que una función es un bloque de código que puede o no devolver un valor y que las funciones ayudan a organizar y reutilizar el código.
2) También define los arreglos como conjuntos de datos del mismo tipo ordenados secuencialmente e indica que en C# los arreglos son objetos con propiedades como Length.
3) Por último, resume que una cadena de texto es una secuencia de caracteres que representa información y que las caden
2. FUNCIONES
Definición y Uso:
Una función es un bloque de código que realiza x operaciones y puede devolver o no
algún valor. La principal usabilidad de las funciones y los métodos es aclarar y resusar
la programación. Si tuviéramos todo el código de una apicación del tirón sería muy
difcícil de leer y de mantener. Por ejemplo si tenemos un programa en el que hacemos
una operación de sumar dos números y luego mostrárla por pantalla, podríamos hacer
una función a la que le diéramos los 2 números y ya nos hiciera ella el resto.
La diferencia entre un método y una función es simplemente que los métodos están
dentro de las clases, es decir, a las funciones dentro de las clases les llamamos
métodos. Ya que C# sólo admite funciones dentro de clases, todo lo que nos
encontramos son métodos.
Declaración:
Sintaxis:
1
2
3
4
5
6
7
8
[private/protected/public/internal] [virtual/override/new] [static]
returnType NameOfFunction(
[ref/out] typeParam1 nameParam1,
…
[ref/out] typeParamN nameParamN)
{
// Code
}
Se puede especificar la visibilidad del método (privada/protegida/pública), si no se
especifica, los métodos son privados.
Si el keyword static se declara quiere decir que es un método estático. Estos métodos
pueden llamarse sin necesidad de tener un objeto de la clase a la que pertencen,
aunque no podrán acceder tampoco a los miembros no estáticos de la clase (sean
métodos, atributos, propiedades, etc). También se puede especificar si un método es
virtual, sobrecargado o se debe ignorar la virtualidad.
En C# hay que especificar un valor de retorno, aunque si el método no devuelve nada
se especifica con el valor void. Si el valor especificado es distinto de void es obligatorio
devolver algo en la función (usandoreturn).
3. Hay que especificar un nombre para los métodos, normalmente es una buena idea que
el nombre sea explicatorio de lo que hace la función. También se recomienda escribir
un comentario sobre el método explicando su funcionamiento.
Se pueden incluir tantos parámeteros como se quiera (e incluso no poner parámetro).
Todos los parámetros especifican primero el tipo y luego el nombre que tienen dentro
de la función.
Se puede especificar algunos atributos a los parámetros que se pasan. Vamos a ver 2
posibles valores para estos atributos: ref: es usado para pasar un parámetro por
referencia. Para los tipos por referencia esto significa que se pueden asignar objetos a
las variables pasadas. Para los tipos por valor, lo que significa es que pueden ser
modificados dentro de la función. out: es como ref (pasa el valor por referencia) pero
además fuerza al método a inicializar el valor antes del final de la función (para cualquier
posible punto de retorno).
Como llamar a una función / método en C#:
Sintaxis:
Si el método pertenece a la misma clase:
[val = ]MyFunc([ref/out] param1, [ref/out] param2,…);
Si pertence a otra clase:
[val = ]myObj.MyFunc([ref/out] param1,…);
Si es un método estático (de otra clase):
[val = ]MyClass.MyFunc([ref/out] param1,…);
Si el valor de retorno es void o no es necesario guardarlo, se puede ahorrar esa primera
parte. Si la función toma parámetros ref/out éstos deben indicarse también en la llamada
a la función.
Ejemplos:
Declaración:
4. 1
2
3
4
5
6
//Funcion que devuelve la suma de los parámetros que le pasamos
public int suma (int operando1, int operando2)
{
int resultado = operando1 + operando2;
return resultado;
}
Utilización:
1
2
3
4
//Mostramos por pantalla el resultado de la suma de dos números
Console.WriteLine("El resultado de la suma es: " + suma(2,4).ToString());
//Esto tendría como resultado en la consola
//El resultado de la suma es: 6
ARREGLOS
Los arreglosenC# (tambiénconocidoscomo Arrays) al igual que enC/C++,sonindexadosiniciando
en cero (0). La forma de trabajo es muy similar a la mayoría de lenguajes pero hay lagunas
diferencias que notarán.
Como declarar e inicializar un arreglo en C#
Cuandovayamos a declarar un arregloen debemoscolocarloscorchetesdespuésde tipode dato.
En C/C++ se estilaponerloscorchetesdespuésdel identificador,esocausaunerrorde compilación
en C#-
CODE: SELECCIONAR TODO
1. //Declaración erronea
2. int valores[];
3.
4. //Declaración valida
5. int[] valores;
En C# podemosindicarel tamañodel arregloluegode la declaración.Estonospermite decidirque
tamaño va a tener el arreglo según lo que necesitemos.
CODE: SELECCIONAR TODO
5. 1. int[] valores; //valores sin inicializar
2. valores = new int[100]; //100 elementos
3. valores = new int[20]; //ahora contiene 20 elementos
Arreglos multi-dimensionales
En C# también podemos declarar arreglos multidimensionales, aquí unos ejemplos:
CODE: SELECCIONAR TODO
1. //Arreglos unidimensionales o de dimensión simple
2. int[] valores1; //sin inicializar
3. int[] valores2 = new int[50];
4.
5. //Arreglos multidimensionales
6. int[,] valores1; //sin inicializar
7. int[,] valores2 = new int[3,7]
8. int[,,] valores3 = new int[3,4,2]; //Arreglo de tres dimensiones
9.
10. //Arreglo de arreglos
11. int[][] matriz; //sin inicializar
12.
13. //Los arreglos de arreglos se inicializan de manera diferente
14. int[][] matriz = new int[3][];
15. for (int i = 0; i < matriz.Length; i++)
16. {
17. matriz[i] = new int[4];
18. }
Pueden combinarse los diferentes tipos de declaración.
Inicialización
Hay varias formas de inicializar los arreglos:
6. CODE: SELECCIONAR TODO
1. int[] valores = new int[10] {0,1,2,3,4,5,6,7,8,9};
2. string[] paises = new string[5] {"Argentina", "Bolivia", "Peru","Chile","Colombia"};
3.
4. //Inicializacion omitiendo el tamaño de la matriz
5. int[] valores = new int[] {0,1,2,3,4,5,6,7,8,9};
6. string[] paises = new string[] {"Argentina", "Bolivia", "Peru","Chile","Colombia"};
7.
8. //Tambien podemos omitir el operador new
9.
10. int[] valores = {0,1,2,3,4,5,6,7,8,9};
11. string[] paises = {"Argentina", "Bolivia", "Peru","Chile","Colombia"};
12.
Para los arreglos multidimensionales la cosa cambia un poco:
CODE: SELECCIONAR TODO
1. int[,] numeros = new int[3, 4] { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };
2. string[,] regiones =new string[2, 3] { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa
Rica"} };
3.
4. //Tambien podemos omitir el tamaño de la matriz
5. int[,] numeros = new int[,] { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };
6. string[,] regiones = new string[,] { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa
Rica"} };
7.
8. //Y tambien podemos olvidarnos del operador
9. int[,] numeros = { {1, 2,3,4}, {9, 8,7,6}, {7, 6,2,5} };
10. string[,] regiones = { {"Argentina","Brasil","Peru"}, {"USA",";Mexico","Costa Rica"} };
Para acceder a los miembros solo tenemos que citar el indice correcto en cada caso:
7. CODE: SELECCIONAR TODO
1. valores[1] = 4; //Cambia el valor del indice 1 a 4
2. numeros[2,1] = 10; //Cambia el valor de indice 2,1 a 10
3.
4. //En un arreglo de arreglos:
5. matriz[2][1] = 4;
6.
En C# los arreglos son objetos
Una ventajafrente aC++ es que losarreglossonobjetos(si conpropiedades),lapropiedasmasútil
es lenght (longitud) que nos indica que tamaño tiene nuestro arreglo. Aqui un ejemplo:
CODE: SELECCIONAR TODO
1. System.Console.WriteLine(valores.Length);
2. System.Console.WriteLine(numeros.Length);
3. System.Console.WriteLine(regiones.Length);
Navegar por los valores del arreglo (foreach)
En C# tambiénpodemosutilizarlasentencia foreach,esunamanerasimplede accederalosvalores
de un arreglo.
CODE: SELECCIONAR TODO
1. int[] valores = {3, 5, 2, 1, 5, 3, 7, 9, 8};
2. foreach (int i in valores)
3. {
4. Console.Write("{0} ", i);
5. }
6.
7. Console.Write(" ");
8.
9. //también en arreglos multidimensionales
8. 10. int[,] numeros = new int[2, 3] {{5,2,1}, {7,4,5}, {2,9 ,10}};
11. foreach(int i in numeros)
12. {
13. Console.Write("{0} ", i);
14. }
CADENAS DE TEXTO
Las cadenasde texto representanal tipode datomásimportanteenunlenguaje,trasel tipodedato
númeroentero.Enefecto,todala información(al final el propósitode unprograma informáticoes
manipularinformación) consisteprincipalmenteencadenasde texto.Unagran parte al menos.Así,
manipular las cadenas de texto se vuelve esencial en cualquier lenguaje.
Si uno compara plataformas antiguas con plataformas modernas como Java y .NET, podemos
encontrardiferenciassignificativas.Probablementelamayordeéstasseaque hoyendíalascadenas
de texto son inmutables. Esto quiere decir que una cadena de texto que se crea ya no puede
cambiarse. Puede, en cambio, crear nuevas cadenas a partir de una. En fin, poco a poco.
¿Qué es una cadena de texto?
Una cadenade textoes unacolecciónsecuencial de caracteres,loscualesformanpalabrasydemás
tipo de información. Cada carácter es en realidad un carácter en formato Unicode.
La clase que representaauna cadenade textoesSystem.String,ylaque representauncarácter,es
System.Char.El operador""representaunacadenade textoconstante,yportantopuedeasignarse
directamente a una cadena de texto. El operador ‘ ‘ representa un carácter, y por tanto puede
asignarse a una variable apropiada.
string str = "Hola mundo";
char ch = 'H';
char[] chs = new char[] { ch, 'o', 'l', 'a', ' ', 'm', 'u', 'n', 'd', 'o' };
La clase stringtiene unmétodo,llamadoEmpty,que representaunacadenade textovacía. Equivale
a colocar la constante "".
string str = string.Empty;
str = "";
La clase string puede inicializarse de varias formas
9. // operador " "
string s1 = "Hola mundo";
// mediante el constructor
string s2 = new strnig("Hola mundo");
// a partir de un array de caracteres
string s3 = new string(
new char[] { 'H', 'o', 'l', 'a', ' ', 'm', 'u', 'n', 'd', 'o' });
// a partir de un carácter que se repite n veces
string s4 = new string('*', 10); // **********
// a partir de un grupo de bytes con signo
sbyte[] bytes = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x00 };
unsafe {
sbyte* p = bytes;
string s5 = new string(p);
}
Los caracteres son una estructura,por tanto son tiposvalor (ValueType).Lascadenas de textoson
clases, y por tanto son tipos referencia.
ARRAYS
Los arrays son usados extensamente por los programadores para contener listas de datos en la
memoria, por ejemplo, los datos almacenados en un disco suelen leerse y ponerse dentro de un
array con el objetivo de facilitar la manipulaciónde dichos datos, ya que los datos en memoria
pueden ser modificados, clasificados, marcados para su eliminacion, etc. para luego ser reescritos
al disco. Otro ejemplo podría ser el de un menú de opciones que se desplegarán dentro de una
ventana para que el usuario pueda elegir una de éstas, en tales casos y cuando las opciones son
numerosas,solamente se ponenunascuantasde ellasdentrode laventanaperose le daal usuario
la oportunidadde poder subiry bajar a su antojopara ver el resto de opcionesque,aunque nose
vean en la ventana, forman parte del menú o array de opciones.
Array:
Un array esun conjuntode datos del mismotipoordenadosde formanlíneal unodespuésde otro.
Los componentesde unarray se han de referenciarpormediodel nombre del arrayy un índice de
desplazamiento para indicar el componente deseado.
10. Indices de un array
Los índicessonnúmerosque se utilizanparaidentificaracada unode loscomponentesde unarray.
A modode ejemplo,podemospensarque losíndicessoncomo losnúmerosde habitacionesde un
hotel,esdecir,parapoderdirigirnosaun hotel específicoesnecesariosaberel nombre del mismo,
luego, si queremos llegar a una habitación específica de dicho hotel necesitaremos, además del
nombre del hotel, el número de habitación deseado.
Dimensiones de un array
De acuerdo a la forma en que se construye o declara un array, éste puede ser clasificado como:
unidimensional, bidimensional y multidimensional. Los arrays que se emplean con mucha más
frecuenciasonlos estructuradosa manera de vector( array unidimensional ) y los estructuradosa
manera de matriz ( array bidimensional ), así, aunque en C++ se pueden crear estructuras
multidimensionales, en este capítulo solo trataremos con vectores y matrices.
Array unidimensional
Una array uni-dimensional esaquel endonde loscomponentessonaccesiblespor mediode uno y
solamente un índice que apunte al componente requerido. Los arrays de este tipo son conocidos
tambiénconel nombrede vectores.Conceptualmente,podemospensarenunarrayunidimensional
como unalistacompuestade datos,donde para referirnosaunode ellosemplearemosunnúmero
para indicar laposicióndel mismodentrode la lista.Por ejemplo,consideremosel casode la tabla
o array VentaSemanal,la cual está pensada para registrar las ventas de cada uno de los días de la
semana. De manera conceptual podemos ver el array como se muestra a continuación:
Nota: enC++ losarraysestánbasadosen0 ( cero), esdecir,el primerelementode unarray
se indexa mediante el 0, y el índice para el último de los elementos es igual al número de
componentes menos uno.
array: VentaSemanal
Si en el array VentaSemanalqueremosque el elemento4( por ejemplo) contengael valorde 8987
lo podemos lograr con la instrucción: VentaSemanal[4] = 8987; y el estado del array sería:
11. Array bidimensional
Un arraybi-dimensional esaquelendondeloscomponentessonaccesiblespormediode unapareja
de índices que apunten a la fila y a la columna del componente requerido.Los arrays de este tipo
sonconocidostambiénconel nombre de matrices.Conceptualmente,podemospensarenunarray
bidimensional comoenunalistacompuestade filasycolumnas,endonde para referirnosaunade
ellasemplearemosunnúmeroparaindicarlaposiciónde filayotronúmeroparaindicarlaposición
de la columna del componente deseado. Por ejemplo, consideremosel caso de la tabla o array
VentaSemanaQ,lacual estápensadapararegistrarlasventasde cada unode losdías de la semana
por cuatro semanas, o sea, una tabla de 7 x 4 elementos. De manera conceptual podemos ver el
array como se muestra a continuación:
C O L U M N A S
12. Si en el array VentaSemanaQ queremos que el elementode la fila 4, columna 3 ( por ejemplo )
contenga el valor de 5000 lo podemos lograr con la instrucción:VentaSemanaQ[4][3] = 5000; y el
estado del array sería:
Declaración de arrays en C, C++
En C, C++ para declarar un array se emplea la sintaxis:
donde,
tipo se refiere al tipo de datos que contendrá el array. El tipo puede ser cualquiera de los
tipos estándar (char, int, float, etc.) o un tipo definido por el usuario. Es más, el tipo del
array puede ser de una estructura creada con: struct, union y class.
identificador se refiere al nombre que le daremos al array.
tamañoes opcional e indicael númerode elementosque contendráel array. Si un array se
declara sin tamaño, el mismo no podrá contener elemento alguno a menos que en la
declaración se emplee una lista de inicialización.
lista de inicialización es opcional y se usa para establecer valores para cada uno de los
componentes del array. Si el array es declarado con un tamaño específico, el número de
valores inicializados no podrá ser mayor a dicho tamaño.
13. Ejemplos:
Iteraciones dentro de un array (vector)
El termino Iterar se refiere al hechode acceder(con el fin de leero escribir) sobre cada uno de los
componentes de un array. Así, para poner un ejemplo reconsideremos el caso de la
tabla VentaSemanal (vista en una sección anterior), y que dicho sea de paso es un array de 7
elementosde tipo double.Luego,vamosamostrarcomoejemplounprogramacompletoenel cual
se declara el array mencionadoconvaloresinicializados,que seránmostradosenpantallayal final
la sumade estos.Observe que lavariableiusadaparaiterardentrodel arrayva desde 0hasta FILAS
- 1 ( FILAS es el tamaño del array ).
Nota: por motivos de simplificación el programa está escrito al estilo de C estándar. Sin embargo
puede ser compilado y ejecutado en un compilador de C++.
Esta es la salida del programa:
Ventas de la semana
15. Con el fin de leer o escribir sobre cada uno de los componentes de una matriz se deben crear dos
ciclos de iteración. Así, para poner un ejemplo reconsideremos el caso de la
tabla VentaSemanaQ (vista en una sección anterior), y que dicho sea de paso es un array de 4 x
4 elementos de tipo double.Luego, vamos a mostrar como ejemplo un programa completoen el
cual se declara el array mencionadoconvaloresinicializados,que seránmostradosenpantallayal
final la sumade estos.Observe que eneste caso se utilizandosvariables,unapara iterarsobre las
filas y otra para iterar sobre las columnas de la matriz.
Salida del programa: