universidad don bosco facultad de estudios tecnológicos escuela de

Anuncio
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACION
GUIA DE LABORATORIO #03
CICLO: 02/ 2015
Nombre de la Practica:
ARREGLOS EN C#
Lugar de Ejecución:
Centro de Computo
Tiempo Estimado:
2 horas y 30 minutos
MATERIA:
Desarrollo de aplicaciones con software propietario
I. OBJETIVOS
Que el estudiante sea capaz de:

Manejar cantidades masivas
Arreglos/Vectores/Matrices

Planificar los arreglos necesarios dentro de un programa

Utilizar las combinaciones correctas de estructuras repetitivas para acceder a los elementos de un Vector

Crear diversas aplicaciones haciendo uso de los tipos de arreglos
de
datos
de
un
mismo
tipo
de
datos
por
medio
de
los
II. INTRODUCCION TEORICA
ARREGLOS Y VECTORES
Los Arreglos se utilizan para almacenar un conjunto de variables, que sean del mismo tipo de dato, y todas estas
bajo un mismo nombre.
Por ejemplo imaginemos que tenemos 4 variables de tipo
String que almacenan nombres (nombre1, nombre2, etc.). Si
yo ahora quisiera pasar todas estas cadenas a mayúsculas
tendría que utilizar la función ToUpper con cada variable,
así:
nombre1 = nombre1.ToUpper();
nombre2 =nombre2.ToUpper(), etc.
En cambio sí utilizara un arreglo solucionaría mi problema,
de esta manera:
Siguiendo el ejemplo anterior: en vez de escribir la
sentencia ToUpper 4 veces para cada variable, hemos utilizado un arreglo llamado nombres con un número de
índice 4, es decir que almacena 4 datos de tipo String. Por supuesto ese índice de 4 puede ser un número
muchísimo mayor, según sea la necesidad.
DECLARACIÓN DE LOS ARREGLOS EN EL CÓDIGO
Para crear un arreglo se debe en primer lugar declararlo como cualquier otra variable, la única diferencia es que
debemos indicar la cantidad de elementos que contendrá el arreglo, colocando el número de índice entre
paréntesis. Observe los ejemplos:
1
Guía # 03: ARREGLOS EN C#
Ejemplo 1:
La instrucción siguiente crea un arreglo de 16 elementos o
datos de tipo integer:
Ejemplo 2: La sentencia a continuación crea un arreglo de
11 elementos o datos de tipo String:
Como podemos ver en el primer ejemplo hemos declarado un arreglo llamado miArreglo y entre paréntesis
hemos declarado el rango de capacidad del mismo, es decir la cantidad de datos que podrá contener
El primer número, el número 15 indica el límite máximo del arreglo, conformando de esta manera un arreglo que
podrá almacenar 16 datos de tipo int.
En el segundo ejemplo, declaramos un arreglo de 11 elementos de tipo string. Como puedes ver, hemos indicado
solo un número que representa el valor máximo del mismo. Cabe aclarar que hemos puesto de índice el número
10, pero en realidad el arreglo contiene 11 elementos ya que como NO indicamos el límite inferior, se asume que
el mismo comienza desde el 0.
Importante: los arreglos se dividen en 2 grupos, los vectores y las matrices. Los vectores son arreglos que
contienen una sola dimensión y las matrices 2 o más dimensiones.
ACCEDER A LOS DATOS DE UN ARREGLO
Para acceder a los datos de un arreglo o vector, debemos hacerlo mediante el índice o número del elemento del
mismo. Por ejemplo:
Primero declaramos un arreglo llamado alumnos, de tipo
string y que contendrá 4 elementos. Luego le asignamos un
valor de cadena como a cualquier otra variable de tipo string,
pero con la diferencia que para referirnos al elemento
utilizamos el n° de índice del mismo.
Otro ejemplo:
En este último ejemplo, declaramos y
creamos un vector de 3 elementos que
contendrá el nombre de 3 países. Luego en
un bucle For utilizamos la función
MessageBox para mostrar los elementos
del arreglo, pasándole como parámetro del
índice la variable x del bucle For.
LAS MATRICES
Como se dijo anteriormente, las matrices son arreglos de más de 1 dimensión (2 o más), a diferencia de los
vectores que poseen una sola dimensión.
Podemos imaginar una matriz bidimensional (2 dimensiones), como una cuadrícula con filas y columnas, donde
las filas representarían las coordenadas x y las columnas las coordenadas y.
Desarrollo de Aplicaciones con Software Propietario
2
Guía # 03: ARREGLOS EN C#
A una matriz de 3 dimensiones o tridimensional se la puede imaginar con las coordenadas x, y, z, y esta es ideal
para representar figuras en el espacio por ejemplo.
Las matrices se declaran en el código de manera igual que los vectores, con la diferencia que debemos indicar
más subíndices de acuerdo a la cantidad de dimensiones que posea la matriz. Por lo general no se suele utilizar
matrices de más de 3 dimensiones.
EJEMPLO DE MATRIZ DE 2 DIMENSIONES
Dada una Matriz bidimensional de 6 x 8 (de 2 dimensiones).
Si luego quisiera acceder a los datos de la misma basta con referirnos a los
subíndices. Por ejemplo:
El total de índices posibles para almacenar datos o valores en el ejemplo
anterior es de 48 datos, ya que si multiplicamos 6 x 8 nos da como total 48
valores posibles para utilizar en la matriz bidimensional.
En este otro ejemplo creamos una matriz de 3 dimensiones de 3 x 3 x 3:
Para acceder a los datos sería exactamente de la misma manera pero debemos
utilizar un índice más. Algunos ejemplos de acceso a los elmenetos de matriz
cubo serian:
En el ejemplo anterior, que es un poco extenso, es para que veas todos los
posibles valores que puedes almacenar en una matriz de 3 x 3 x 3, y que da
como resultado un arreglo de 27 valores posibles.
COLECCIONES
Una matriz es simplemente una de las muchas opciones para almacenar conjuntos de datos utilizando C#. La
opción que seleccione depende de varios factores, tales como la forma en que piensa manipular o tener acceso a
los elementos.

En el ejemplo siguiente se muestra cómo usar la clase List(OfT). Observe que a diferencia de la clase
Array, los elementos se pueden insertar en medio de la lista. Este ejemplo restringe los elementos de la
lista a fin de que sean cadenas.
var salmons = new List<string>();
salmons.Add("chinook");
salmons.Add("coho");
salmons.Add("pink");
salmons.Add("sockeye");
foreach (var salmon in salmons)
{
Console.Write(salmon + " ");
}
Desarrollo de Aplicaciones con Software Propietario
3
Guía # 03: ARREGLOS EN C#
La colección genérica Ditionary permite obtener acceso a los elementos en una colección utilizando la
clave de cada elemento. Cada elemento que se agrega al diccionario está compuesto de un valor y su
clave asociada. Recuperar un valor utilizando su clave es muy rápido debido a que la clase Dictionary se
implementa como una tabla hash
Dictionary<string, string> palabras = new Dictionary<string, string>();
palabras.Add("Saludo","Hola");
palabras.Add("Despedida", "Adios");
foreach(var item in palabras.Keys){
lstPalabras.Items.Add(item);
}

FUNCIÓN JOIN, SPLIT :
Visual Basic en su sexta versión incorpora estas 3 funciones para trabajar solo con vectores. Estas funciones están
relacionadas con el tratamiento de las cadenas de caracteres.
FUNCIÓN JOIN
Esta función se utiliza para unir en una sola variable el conjunto de subcadenas de un vector. Esta función tiene
solo 2 parámetros y es muy fácil de usar.
Ejemplo:
Ahora ejecutando Join, la variable cadena pasaría
a valer "Carlos-Pedro-Juan"
Nota: En el primer parámetro debe indicar un
delimitador de carácter para separar las cadenas.
Si no especificamos ninguno, c# utilizará por
defecto un espacio vacío o en blanco (" ") para separar cada subcadena. Y en el segundo parámetro de la función
debemos indicar el vector en el cual trabajar.
FUNCIÓN SPLIT
Esta función hace el trabajo inverso de la función
Join.
Split se utiliza para rellenar un vector dinámico que
contiene un número de subcadenas a partir de una
cadena que le pasamos como parámetro a la
función.
Para aclarar un poco un ejemplo:
Nota: una cosa importante es que en el vector
anterior no se ha declarado un rango, ya que la
función devuelve un vector cuya cantidad de
elementos se ignora, es decir no se conoce.
Desarrollo de Aplicaciones con Software Propietario
4
Guía # 03: ARREGLOS EN C#
III. MATERIALES Y EQUIPO
Para la realización de la guía de práctica se requerirá lo siguiente:
No.
Requerimiento
Cantidad
1
Guía de Laboratorio #03
1
2
PC con Microsoft Visual Studio 2012 .NET instalado
1
3
Memoria USB
1
4
Computadora con acceso a Internet
1
IV. PROCEDIMIENTO
Para esta práctica deberá crear una carpeta con el nombre de “Práctica3LP1”, en la cual va a guardar todos los
archivos de esta práctica y de análisis de resultados.
PARTE I: APLICACIÓN DE UN ARREGLO UNIDIMENCIONAL
Problema a Solucionar:
Realizar una aplicación de formularios Windows, que contenga un textbox en el cual se introduzcan 5 números,
estos deberán ser almacenadas dentro de un vector y se mostraran en una ListBox, esta aplicación a su vez debe
tener un botón que diga “Ordenar”, el cual deberá mostrar el vector ordenado en una segunda ListBox.
1.
La Solución deberá ser similar a la siguiente pantalla en la Figura 1.1. Realice el cambio de propiedades
de los controles utilizados según la tabla indicada ahí.
N°
1
Elemento
Label1
Name
lblnumero
2
3
4
5
6
7
TextBox
Button1
Button2
ListBox1
ListBox2
Form2
txtNum
btAgregar
btOrdenar
lstdesorden
lstOrdenada
Text
Ingresar
Numero:
Agregar
Ordenar
Ordenar
Figura 1.1: Diseño de formulario y controles a utilizar
2.
Declaramos el vector matriz global (a nivel de la clase Form2) para que almacene los números cada vez
que le demos click al “btAgregar”
//declaracion global de arreglo
int[] matriz = new int[5];
Desarrollo de Aplicaciones con Software Propietario
5
Guía # 03: ARREGLOS EN C#
3.
Digite el código detallado a continuación, en los evento y objetos especificados:
Objeto
btAgregar
Evento
Click
if(i<=5){
matriz[i]=Convert.ToInt16(txtNum.Text); //agregamos los numeros en cada posicion del
arreglo
lstdesorden.Items.Add(matriz[i]);//agregamos los numeros a
i+=1;
txtNum.Clear();//limpiar txtnum
txtNum.Select();//colocar cursos en txtnum
la lista
}
else{
MessageBox.Show("No se puede ingresar mas
datos","Advertencia",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
Click
btOrdenar
int j, k, count;
double valor;
int Tam = 5;
//---ordenamos el arreglo por le metodo de la burbuja
for (j = 0; j < Tam;j++ )
{
for (k = 0; k < (Tam - 1);k++ )
{
if(matriz[k]>matriz[k+1]){
valor = matriz[k];
matriz[k] = matriz[k + 1];
matriz[k + 1] = Convert.ToInt16(valor);}
}
}
//recorremos el arreglo e ingresamos los valores a la lista
lstOrdenada.Items.Clear();
for (count = 0; count < Tam;count++ )
{
lstOrdenada.Items.Add(matriz[count]);
}
PARTE II: USO DE UNA MATRIZ DE 3X3
Problema a Solucionar:
Realizar una aplicación de formularios Windows, que permita almacenar el nombre, apellido y edad en una
matriz de 3x3. Dicha aplicación debe ser capaz de mostrar y limpiar los datos de la matriz, calcular el promedio
de edades.
1.
La Solución deberá ser similar a la siguiente pantalla en la Figura 1.2. Realice el cambio de propiedades
de los controles utilizados según la tabla indicada ahí.
Desarrollo de Aplicaciones con Software Propietario
6
Guía # 03: ARREGLOS EN C#
Figura 1.2: Diseño de formulario y controles a utilizar
N°
1
2
3
4
5
6
7
8
Elemento
Form3
GroupBox1
GroupBox2
GroupBox3
Label1
Label2
Label3
ComboBox1
9
10
11
12
13
14
15
16
TextBox1
TextBox2
Button1
Button2
Button3
Button4
Button5
DataGridView
2.
Name
Text
Formulario
Informacion
Matriz
Mantenimientos
Tipo de información
Digite la información
Edad
gbInformacon
gbMatriz
gbMantenimiento
Lbtipo_info
Lbdig_info
lbedad
cbtipoinfo
Items
Enable
Nombre
Apellido
txtInfo
txtEdad
btAgregar
btMostrar
btLimpiar
btPromedio
&Agregar
Mostrar Matriz
Limpiar Matriz
Promedio
Salir
dgdatos
Declaramos la matriz global (a nivel de la clase Form2) para que almacene la información cada vez que
le demos click al “btAgregar”
//Declaración de matriz
string[,] matriz = new string[3,3];
//variables para movernos dentro de las posiciones de la matriz
public int fila1, colum1, fila2, colum2, fila3, colum3, countergen, i;
Desarrollo de Aplicaciones con Software Propietario
7
Guía # 03: ARREGLOS EN C#
3.
Digite el código detallado a continuación, en los evento y objetos especificados:
Objeto
Evento
txtInfo
KeyPress
//validación de solo letras
if (!(char.IsLetter(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
{
MessageBox.Show("Solo se permiten letras", "Advertencia", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
e.Handled = true;
return;
}
txtEdad
KeyPress
//validacion solo numeros
if (Char.IsDigit(e.KeyChar)){e.Handled = false;}
else if (Char.IsControl(e.KeyChar)){e.Handled = false;}
else if (Char.IsSeparator(e.KeyChar)){e.Handled = false;}
else { e.Handled = true; MessageBox.Show("Solo se permiten Números", "Advertencia",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }
btAgregar
//posiciones de la
colum1 =
colum2 =
colum3 =
Click
columna de la matriz
0;
1;
2;
//verificamos el combobox1
if (cbtipoinfo.SelectedIndex == 0)
{
if (txtInfo.Text == "")
{
txtInfo.BackColor = Color.Bisque;
}
else
{
if (fila1 < 3)
{
//agregamos el dato en la posicion [fila1,column1] de la matriz
matriz[fila1, colum1] = txtInfo.Text;
//pasamos a la siguiente fila de la matriz
fila1 += 1;
MessageBox.Show("Nombre ingresado exitosamente", "",
MessageBoxButtons.OK);
//limpiamos el texboxt1
txtInfo.Clear();
}
else
{
MessageBox.Show("No se pueden agregar mas nombres", "Alerta",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
else {
if (cbtipoinfo.SelectedIndex == 1)
{
if (txtInfo.Text == "")
Desarrollo de Aplicaciones con Software Propietario
8
Guía # 03: ARREGLOS EN C#
{
txtInfo.BackColor = Color.Bisque;
}
else
{
if (fila2 < 3)
{
//Agregamos el dato en la posicion (fila2,colum2) de la matriz
matriz[fila2, colum2] = txtInfo.Text;
//pasamos a la siguiente fila de la matriz
fila2 += 1;
MessageBox.Show("Apellido ingresado exitosamente");
txtInfo.Clear();
}
else
{
MessageBox.Show("No se pueden agregar mas apellidos");
}
}
}
else {
MessageBox.Show("Seleccione una opción");
}
}
if (IsNumeric(txtEdad.Text) == true)
{
if (fila3 < 3)
{
//Agregamo el dato en la posicion [fila3,colum3] de la matriz
matriz[fila3, colum3] = txtEdad.Text;
//pasamos a la siguiente fila de la matriz
fila3 += 1;
MessageBox.Show("Edad ingresada exitosamente");
//limpiamos el textbox1
txtEdad.Clear();
countergen += 1;
}
else
{
MessageBox.Show("No se pueden agregar mas edades");
}
}
else {
txtEdad.BackColor = Color.Beige;
}
btMostrar
Click
//limpiando grilla
dgdatos.Columns.Clear();
//creando columnas
dgdatos.ColumnCount = 3;
dgdatos.Columns[0].Name = "Nombre";
dgdatos.Columns[1].Name = "Apellido";
dgdatos.Columns[2].Name = "Edad";
dgdatos.Rows.Add();
dgdatos.Rows.Add();
//agregando datos a grilla
Desarrollo de Aplicaciones con Software Propietario
9
Guía # 03: ARREGLOS EN C#
//Mostrando nombres
dgdatos.Rows[0].Cells[0].Value=matriz[0,0];
dgdatos.Rows[0].Cells[1].Value = matriz[0, 1];
dgdatos.Rows[0].Cells[2].Value = matriz[0, 2];
//Mostrando apellidos
dgdatos.Rows[1].Cells[0].Value = matriz[1, 0];
dgdatos.Rows[1].Cells[1].Value = matriz[1, 1];
dgdatos.Rows[1].Cells[2].Value = matriz[1, 2];
//Mostrando edades
dgdatos.Rows[2].Cells[0].Value = matriz[2, 0];
dgdatos.Rows[2].Cells[1].Value = matriz[2, 1];
dgdatos.Rows[2].Cells[2].Value = matriz[2, 2];
btLimpiar

Recorrer la matriz para limpiar cada posición de ella

Inicializar las variables filas y columnas a cero.

Limpiar la grilla.
btPromedio
Click
Click

Sacar promedio de los datos de edad guardados en la matriz y mostrarlo en un
messagebox.
btPromedio
Click

Programe el botón Salir
PARTE III: USO DE COLECCIONES
Problema a Solucionar:
Realizar una aplicación de formularios Windows, que muestre una lista de palabras, que al seleccionar una
muestre su respectivo significado.
1.
La Solución deberá ser similar a la siguiente pantalla en la Figura 1.3. Realice el cambio de propiedades
de los controles utilizados según la tabla indicada ahí.
Figura 1.3: Diseño de formulario y controles a utilizar
Desarrollo de Aplicaciones con Software Propietario 10
Guía # 03: ARREGLOS EN C#
N°
1
2
3
4
5
Elemento
Form3
Label1
ListBox1
Textbox1
Button1
Name
lblpalabra
lstPalabras
txtsignificado
btnsalir
Text
Formulario
Palabra
Items
Enable
true
false
Salir
1.
Declaramos la el directorio global (a nivel de la clase Form3) para que almacene la información
//valida que el dato recibido es un numero
public static Boolean IsNumeric(string valor)
{
int result;
return int.TryParse(valor, out result);
}
Dictionary<string, string> palabras = new Dictionary<string, string>();
2.
Digite el código detallado a continuación, en los evento y objetos especificados:
Objeto
Form3
Evento
Load
//agregamos datos al diccionario
palabras.Add("Manzana", "La manzana es una fruta pomácea comestible, fruto\n del manzano
doméstico (Malus domestica)\n, otros manzanos (especies del género\n Malus).");
palabras.Add("Pera","La pera es una fruta comestible que procede del Pyrus communis, un árbol
que se conoce coloquialmente como peral común. Existen, de todas maneras, muchas clases de
peras, que son producidas por otros árboles del género Pyrus.");
palabras.Add("Melocotón", "Fruto del melocotonero. Es una drupa de olor agradable, esférica, de
seis a ocho centímetros de diámetro, con un surco profundo que ocupa media circunferencia,
epicarpio delgado, velloso, de color amarillo con manchas encarnadas, mesocarpio amarillento, de
sabor agradable y adherido a un hueso pardo, duro y rugoso, que encierra una almendra muy
amarga.");
//recorre el diccionario para llenar la lista con la llave
foreach(var item in palabras.Keys){
lstPalabras.Items.Add(item);
}
lstPalabras
SelectedIndexChanged
string buscar;
buscar=lstPalabras.Text;
//buscamos dato de la lista dentro del diccionario
for (int i = 0; i < palabras.Count;i++ )
{
var item =palabras.ElementAt(i);
if (buscar== item.Key){
lblPalabra.Text = item.Key;
txtsignificado.Text = item.Value;
break;
}
}
btnsalir

Agrege el código para salir del formulario
Desarrollo de Aplicaciones con Software Propietario 11
Click
Guía # 03: ARREGLOS EN C#
V. DISCUSION DE RESULTADOS
PROBLEMAS A RESOLVER:
Para los siguientes ejercicios, realizar un solo proyecto de Aplicación Windows, con la resolución de los
problemas en forms Distintos:
1.
Cree un programa para manejar una lista de nombres. El programa permitirá al usuario añadir, eliminar
y modificar los nombres de la lista, a través de los siguientes botones: Añadir Nombre, Borrar Nombre,
Modificar Nombre, Salir.
2.
Cree un programa que cree una matriz cuadrada cuyos elementos se generan aleatoriamente y cuya
dimensión la determina el usuario. A partir de dicha matriz, el programa calculara su traspuesta,
intercambiando en dicha matriz sus filas por sus columnas.
3.
Las notas de un colegio se tienen en una matriz de 6 x 5 elementos (10, número de alumnos; 5, número
de asignaturas). Se desea listar las notas de cada alumno y su media. Cada alumno tiene como mínimo 2
asignaturas y máximo 5, aunque los alumnos no necesariamente todos tienen que tener 5 materias.
VII. BIBLIOGRAFÍA
 Título: Aprenda ya Microsoft Visual C#.NET.
Autores: Sharp, John Jagger, Jon Coautor
Publisher: Madrid, España: McGraw-Hill, 2002.
Clasificación: Libro 005.362 S581 2002
 Título: C # Manual de Programación.
Autores: Luis Joyanes Aguilar y Matilde Fernández Azuela
Publisher: Madrid, España: McGraw-Hill, 2002
Clasificación: Libro 005.362 J88 2002
Desarrollo de Aplicaciones con Software Propietario 12
Descargar