Sei sulla pagina 1di 9

Programación1, Guia#7 1

Facultad: Ingeniería
Escuela: Ingeniería en Computación
Asignatura: Programación I
Tema: “Arreglos en C#”.
Objetivos

 Introducir al estudiante a los conceptos de estructura de datos.


 Conocer la sintaxis de creación y definición de arreglos.
 Conocer los tipos de arreglos que se utilizan en la programación.
 Implementar arreglos en una y dos dimensiones.
 Resolver problemas aplicando arreglos.

Introducción
Los arreglos son estructuras de datos que consisten en elementos de datos del mismo tipo relacionados. Los arreglos
son entidades de longitud fija; conservan la misma longitud una vez que se crean, aunque puede reasignarse una
variable tipo arreglo de tal forma que haga referencia a un nuevo arreglo de distinta longitud.

Arreglos

Un arreglo es un grupo de variables (llamadas elementos) que contienen valores y todos son del mismo tipo.
Recordemos que los tipos se dividen en dos categorías: por valor y por referencia.
Los elementos de un arreglo pueden ser tipos por valor o referencia. Para referirnos a un elemento en especial dentro
de un arreglo, especificamos el nombre de la referencia al arreglo y el número de la posición de este elemento en el
arreglo. Al número de la posición se le conoce como índice del elemento.
Una aplicación hace referencia a cualquier elemento del arreglo mediante una expresión de acceso al arreglo, la
cual incluye el nombre del arreglo, seguido el índice del elemento específico entre corchetes ([ ]).

El primer elemento en cualquier arreglo tiene el índice cero, el cual se conoce como elemento cero.

En la figura siguiente, se muestra una ilustración de un arreglo:

 El nombre del arreglo anterior es C.


 El índice del elemento en el arreglo C se denota por: C[0], C[1], …, C[9].
 Si un arreglo tiene n posiciones, la última posición tiene el índice o subíndice n-1.

Declaración y Creación de Arreglos

Las instancias de los arreglos ocupan espacio en memoria. Al igual que los objetos, los arreglos se crean con la palabra
clave new. Para crear una instancia de un arreglo, se especifica el tipo y el número de elementos del arreglo, y el
Programación1, Guia#7 2

número de elementos como parte de una expresión de creación de arreglos, que utiliza la palabra clave new. Dicha
expresión devuelve una referencia que puede almacenarse en una variable tipo arreglo. La siguiente expresión de
declaración y creación de arreglos crea un objeto que contiene 12 elementos int, y almacena la referencia al arreglo
en la variable C.
Int[ ] C = new int[12]

Cabe mencionar, que la expresión anterior puede dividirse en dos partes, así:
Int [ ] C;
C = new int[12];

Ejemplo 1.
Se desea guardar los sueldos de 5 empleados de una fábrica X. Según lo que hemos estudiado hasta el momento,
deberíamos definir 5 variables si queremos tener en un cierto momento los 5 sueldos almacenados en memoria.
Empleando un vector, solo se requiere definir un único nombre y accedemos a cada elemento por medio del subíndice.

1 namespace Guia7_Ejemplo1
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 Double[] Sueldos;
8 Sueldos = new Double[5];
9 for (int i = 0; i < 5; i++)
10 {
11 Console.WriteLine("Ingrese el sueldo del empleado" + (i + 1) + ":");
12 Sueldos[i] = Double.Parse(Console.ReadLine());
13 }
14 Mostrar(Sueldos);
15 Console.ReadKey();
16 }
17 static void Mostrar (Double[] Sueldos)
18 {
19 Console.WriteLine("Los sueldos ingresados son:");
20 for (int i=0;i<5;i++)
21 {
22 Console.Write("\t" + Sueldos[i]);
23 }
24 }
25 }
26 }
Programación1, Guia#7 3

Ejemplo 2. En este ejemplo veremos cómo trabajar con un arreglo unidimensional que ha sido previamente
inicializado. Vamos a conocer la forma de especificar los elementos que contiene la estructura de datos.

1 namespace Guia7_Ejemplo2
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 Console.Title = "Ejemplo2 de vectores con la funcion Lenght";
8 Double SumaNotas = 0, Promedio;
9 Double[] Notas = { 10, 7.2, 8.5, 9.1, 6.5 };
10 String[] Alumnos = {"Juan Perez","Toño","Chepe","Rodrigo", "Marisol"};
11 for ( int i=0; i<Notas.Length; i++)
12 {
13 Console.WriteLine("\nLa nota de {0} es: {1}", Alumnos[i], Notas[i]);
14 }
15 for ( int i=0; i<Notas.Length; i++)
16 {
17 SumaNotas = SumaNotas + Notas[i];
18 }
19 Promedio = (SumaNotas / 5);
20 Console.WriteLine("-----------------------------------------");
21 Console.WriteLine("\n\tLa suma de todas las notas es: " + SumaNotas);
22 Console.WriteLine("\n\tEl promedio de las notas es: " + Math.Round(Promedio,2));
23 Console.ReadKey();
24 }
25 }
26 }

Anotaciones
Programación1, Guia#7 4

Ejemplo 3. En este ejemplo, aprenderemos a encontrar el mayor elemento de un arreglo así como también el menor
elemento del mismo.

1 namespace Guia7_Ejemplo3
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 Console.Title = "Ejemplo3 el mayor y menor en un vector";
8 int[] n;
9 int tam, menor, mayor;
10 Console.WriteLine("Dame el tamaño del vector");
11 tam = int.Parse(Console.ReadLine());
12 n = new int[tam];
13 for (int i = 0; i < tam; i++)
14 {
15 Console.WriteLine("Digite el elemento" + (i+1) + " : ");
16 n[i] = int.Parse(Console.ReadLine());
17 }
18 mayor = n[0];
19 menor = n[0];
20 for (int i = 0; i < tam; i++)
21 {
22 if (n[i] > mayor)
23 {
24 mayor = n[i];
25 }
26 else if (n[i] < menor)
27 {
28 menor = n[i];
29 }
30 }
31 Console.WriteLine("El menor de los elementos es: " + mayor );
32 Console.WriteLine("El mayor de los elementos es: " + menor);
33 Console.ReadKey();
34 }
35 }
36 }
Programación1, Guia#7 5

La instrucción foreach
En ejemplos anteriores, demostramos cómo utilizar las instrucciones for controladas por un contador para iterar a
través de los elementos de un arreglo. Ahora comenzamos el estudio del foreach, que itera a través de los elementos
de un arreglo o colección completa. La sintaxis de una instrucción foreach es la siguiente:
foreach (<tipoElemento> <Elemento> in <NombreArreglo>)
{
<Instrucciones>
}
Donde, el tipo y el identificador son el tipo y el nombre (por ejemplo int numero) de la variable de iteración y
NombreArreglo es al arreglo a través del cual se va a iterar. El tipo de la variable de iteración debe concordar con el
tipo de los elementos del arreglo. La instrucción foreach es una variante de la instrucción for, pensada principalmente
para compactar la escritura de códigos donde se realiza un tratamiento a todos los elementos de un arreglo o lista.

Ejemplo 4. En este ejemplo, haremos uso de la instrucción foreach para realizar una sumatoria de edades de
estudiantes. Se crea un arreglo de 5 posiciones de memoria para almacenar datos de tipo entero.

1 namespace Guia7_Ejemplo4
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 Console.Title = "Ejemplo4 utilizando la instruccion foreach";
8 int[] Edades = new int[5];
9 Array(Edades);
10 Console.ReadKey();
11 }
12 static void Array(int[] Edades)
13 {
14 int Total = 0;
15 Edades = new int[5];
16 for (int x = 0; x < Edades.Length; x++)
17 {
18 Console.WriteLine("Ingresa la edad del estudiante" + (x + 1) + ":");
19 Edades[x] = int.Parse(Console.ReadLine());
20 }
21 foreach (int element in Edades)
22 {
23 Total = Total + element;
24 }
25 Console.WriteLine("La sumatoria de las edades es: " + Total);
26 }
27 }
28 }
Programación1, Guia#7 6

Arreglos Multidimensionales

Los arreglos multidimensionales de dos dimensiones se utilizan con frecuencia para representar tablas de valores,
que consisten en información ordenada en filas y columnas. Para identificar una tabla en particular debemos
especificar dos índices. Por convención, el primero identifica la fila del elemento y el segundo su columna.
Los arreglos que requieren dos índices para identificar un elemento específico se llaman arreglos bidimensionales.

Sintaxis para declarar y crear los arreglos bidimensionales

Aprendamos la declaración de matrices a través de un ejemplo. Como recordamos, cuando trabajamos con arreglos
vamos a hacer uso de los signos de agrupación llamados corchetes, ya que con ello le especificamos al compilador
que estamos trabajando con variables de tipo arreglo que han sido instanciados mediante la palabra clave new.
Los tipos de datos que se pueden utilizar en los arreglos son los que hemos estudiando en las prácticas anteriores,
por lo tanto en este ejemplo utilizamos un tipo de dato int:
int[ , ] b;
b = new int[ 3, 4 ]
En el ejemplo anterior estamos creando una matriz de 3 filas y 4 columnas.
Al igual que en los arreglos de una dimensión se utilizaba un bucle (generalmente for) para cargar u operar los
elementos de un vector, así también en las matrices vamos a utilizar bucles, con la diferencia que ahora utilizaremos
un for para las filas y otro for para las columnas (for anidados).

Material y Equipo
 Guía de laboratorio No. 7.
 Computadora con Visual Studio 2013 o superior.
 Dispositivo de almacenamiento (USB).
Programación1, Guia#7 7

Procedimiento
Ejemplo 1. Programa que carga una matriz de una dimensión establecida y muestra los valores en pantalla.

1 namespace Matrices_Ejemplo1
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 Console.Title = "Ejemplo1 de una matriz 3x4";
8 int[,] Matrix;
9 Matrix = new int[3, 4];
10 //Cargar y visualizar una matriz
11 for (int filas = 0; filas < 3; filas++)
12 {// for externo para filas
13 for (int columnas = 0; columnas < 4; columnas++)
14 {// for interno para columnas
15 Console.Write("Ingrese el valor de la posicion [" + filas + "," + columnas + "]: ");
16 Matrix[filas, columnas] = int.Parse(Console.ReadLine());
17 }
18 }
19 Console.Write("\n");
20 Console.Write("Ahora visualizamos la matrix digitada....");
21 Imprimir(Matrix);
22 Console.ReadKey();
23 }
24 static void Imprimir(int[,] Matrix)
25 {
26 for (int filas = 0; filas < 3; filas++)
27 {
28 Console.Write("\n");
29 for (int columnas = 0; columnas < 4; columnas++)
30 {
31 Console.Write("\t" + Matrix[filas, columnas] + "\t");
32 }
33 }
34 }
35 }
36 }
Programación1, Guia#7 8

Ejemplo 2. Programa que suma dos matrices de 2 x 3.

1 namespace Matriz_Ejemplo2
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 Console.Title = "Ejemplo2 Sumando 2 matrices 2x3";
8 //Declarando las matrices
9 int[,] Matriz1 = new int[2,3];
10 int[,] Matriz2 = new int[2,3];
11 int[,] Matriz3= new int[2,3];
12 //Digitamos la primer matriz
13 Console.Write("Digitamos la primer matriz [1]");
14 Console.Write("\n");
15 for (int i = 0; i < 2; i++)
16 {// for externo para filas
17 for (int j = 0; j < 3; j++)
18 {// for interno para columnas
19 Console.Write("Ingrese el elemento [" + i + "," + j + "]: ");
20 Matriz1[i,j] = int.Parse(Console.ReadLine());
21 }
22 }
23 Console.Write("\n");
24 //Digitamos la segunda matriz
25 Console.Write("Digitamos la segunda matriz [2]");
26 Console.Write("\n");
27 for (int i = 0; i < 2; i++)
28 {// for externo para filas
29 for (int j = 0; j < 3; j++)
30 {// for interno para columnas
31 Console.Write("Ingrese el elemento [" + i + "," + j + "]: ");
32 Matriz2[i, j] = int.Parse(Console.ReadLine());
33 }
34 }
35 Console.Write("\n");
36 //Realizamos el calculo de la suma de las 2 matrices
37 Console.Write("Sumando las 2 matrices anteriores");
38 Console.Write("\n");
39 for (int i = 0; i < 2; i++)
40 {// for externo para filas
41 for (int j = 0; j < 3; j++)
42 {// for interno para columnas
43 Matriz3[i,j] = Matriz1[i,j] + Matriz2[i,j];
44 }
45 }
46 //Llamamos a un procedimiento para visualizar el resultado
47 Mostrar(Matriz3);
48 Console.ReadKey();
49 }
50 static void Mostrar(int[,] Matriz3)
51 {
52 for (int i = 0; i < 2; i++)
53 {
54 Console.Write("\n");
55 for (int j = 0; j < 3; j++)
Programación1, Guia#7 9

56 {
57 Console.Write("\t" + Matriz3[i,j] + "\t");
58 }
59 }
60 }
61 }
62 }

Análisis de Resultados

1. Desarrollar una aplicación que pida al usuario la dimensión de una matriz, la cargue y le diga cuántos de los
elementos ingresados fueron positivos, negativos o nulos.
2. Desarrollar una aplicación que busque el mayor y el menor elemento en una matriz.
3. Cargar un vector y solicitarle al usuario un valor que quiera buscar en un arreglo de una dimensión, luego el
programa debe decirle si se encuentra o no. Si se encuentra, debe mostrarse la posición del elemento.

Investigación Complementaria

1. Desarrollar una aplicación utilizando funciones o procedimientos para buscar cualquier elemento dentro de
una matriz.
2. Desarrollar una aplicación que cargue una matriz y muestre su inversa.
3. Desarrollar una aplicación que ordene los elementos de un vector (ascendente y descendente).

Bibliografía

 Deitel, Harvey M. y Paul J. Deitel, Cómo Programar en C#, Segunda Edición, México, 2007.

Potrebbero piacerti anche