Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos...

13
251 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación y el uso de cadenas de texto. Identificar las funciones de tratamiento de cadenas en C#. 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 Objetivos Introducción

Transcript of Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos...

Page 1: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

251

Facultad: Ingeniería

Escuela: Ingeniería en Computación

Asignatura: Programación I

Tema: “Matrices y Cadenas en C#”.

Implementar arreglos de dos dimensiones.

Resolver problemas aplicando matrices.

Mostrar la implementación y el uso de cadenas de texto.

Identificar las funciones de tratamiento de cadenas en C#.

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

Objetivos

Introducción

Page 2: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

252

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).

Cadenas en C#

Una definición de cadena es la siguiente: Serie de caracteres tratados como una sola unidad.

Una cadena puede incluir letras, dígitos y varios caracteres especiales (+, -, *, /, $, entre otros). Una

cadena en C# es una matriz de caracteres que se declara utilizando la palabra clave String. Un literal de

cadena se declara utilizando las comillas, como se muestra en el siguiente ejemplo:

String S = “Estamos en la guía 10”;

Los objetos de cadena son inmutables, lo que significa que no se pueden cambiar una vez creados. Los

métodos que actúan sobre las cadenas, devuelven los nuevos objetos de cadena.

En muchas ocasiones es preciso trabajar con cadenas de caracteres en las diferentes aplicaciones que

se desarrollan, por eso es muy necesario conocer algunas de las funciones más utilizadas para el

tratamiento de estas estructuras.

Page 3: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

253

Guía de laboratorio No. 10.

Computadora con Visual Studio 2013 o superior.

Dispositivo de almacenamiento (USB).

Programa que carga una matriz de una dimensión establecida y muestra los

valores en pantalla.

1 {

2 Console.Title = "Ejemplo1 de una matriz 3x4";

3 int[,] Matrix = new int[3,4];

4 //Cargar y visualizar una matriz

5 for (int filas=0; filas<3; filas++)

6 {// for externo para filas

7 for (int columnas=0; columnas<4; columnas++)

8 {// for interno para columnas

9 Console.Write("Ingrese el valor de la posición [" + filas + "," + columnas + "]: ");

10 Matrix[filas,columnas]=int.Parse(Console.ReadLine());

11 }

12 }

13 Console.Write("\n");

14 Console.Write("Ahora visualizamos la matrix digitada....");

15 Imprimir(Matrix);

16 Console.ReadKey();

17 }

18 static void Imprimir(int[,] Matrix)

19 {

20 for (int filas = 0; filas < 3; filas++)

21 {

22 Console.Write("\n");

23 for (int columnas = 0; columnas < 4; columnas++)

24 {

25 Console.Write("\t" + Matrix[filas, columnas] + "\t");

26 }

27 }

28 }

Material y Equipo

Procedimiento

Ejemplo1

Page 4: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

254

Programa que suma dos matrices de 2 x 3.

1 {

2 Console.Title = "Ejemplo2 Sumando 2 matrices 2x3";

3 //Declarando las matrices

4 int[,] Matriz1 = new int[2,3];

5 int[,] Matriz2 = new int[2,3];

6 int[,] Matriz3= new int[2,3];

7 //Digitamos la primer matriz

8 Console.Write("Digitamos la primer matriz [1]");

9 Console.Write("\n");

10 for (int i = 0; i < 2; i++)

11 {// for externo para filas

12 for (int j = 0; j < 3; j++)

13 {// for interno para columnas

14 Console.Write("Ingrese el elemento [" + i + "," + j + "]: ");

15 Matriz1[i,j] = int.Parse(Console.ReadLine());

16 }

17 }

18 Console.Write("\n");

19 //Digitamos la segunda matriz

20 Console.Write("Digitamos la segunda matriz [2]");

21 Console.Write("\n");

22 for (int i = 0; i < 2; i++)

23 {// for externo para filas

24 for (int j = 0; j < 3; j++)

25 {// for interno para columnas

26 Console.Write("Ingrese el elemento [" + i + "," + j + "]: ");

27 Matriz2[i, j] = int.Parse(Console.ReadLine());

28 }

29 }

30 Console.Write("\n");

31 //Realizamos el cálculo de la suma de las 2 matrices

Ejemplo2

Page 5: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

255

32 Console.Write("Sumando las 2 matrices anteriores");

33 Console.Write("\n");

34 for (int i = 0; i < 2; i++)

35 {// for externo para filas

36 for (int j = 0; j < 3; j++)

37 {// for interno para columnas

38 Matriz3[i,j] = Matriz1[i,j] + Matriz2[i,j];

39 }

40 }

41 //Llamamos a un procedimiento para visualizar el resultado

42 Mostrar(Matriz3);

43 Console.ReadKey();

44 }

45 static void Mostrar(int[,] Matriz3)

46 {

47 for (int i = 0; i < 2; i++)

48 {

49 Console.Write("\n");

50 for (int j = 0; j < 3; j++)

51 {

52 Console.Write("\t" + Matriz3[i,j] + "\t");

53 }

54 }

55 }

Page 6: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

256

Se tiene la siguiente información:

Nombres de 4 operarios.

Ingresos en concepto de sueldo, cobrado por cada operario, en los últimos 3 meses.

Realizar un programa para:

a. Realizar el ingreso de la información mencionada.

b. Generar un vector que contenga el ingreso acumulado en sueldos en los últimos 3 meses para

cada operario.

c. Mostrar por pantalla el total pagado en sueldos a todos los operarios en los últimos 3 meses.

d. Obtener el nombre del operario que tuvo el mayor ingreso acumulado

1 {

2 Console.ForegroundColor = ConsoleColor.Black;

3 Console.BackgroundColor = ConsoleColor.White;

4 Console.Title = "Ejemplo3 de matrices con vectores";

5 Console.Clear();

6 String[] empleados = new String[4];

7 int[,] sueldos = new int[4,3];

8 int[] sueldostot = new int[4];

9 int x = empleados.Length;

10 Console.WriteLine("el valor de x es: " + x);

11 //Primera Parte

12 for (int f=0; f<x; f++)

13 {

14 Console.Write("Ingrese el nombre del operario "+(f+1)+": ");

15 empleados[f] = Console.ReadLine();

16 int y = sueldos.GetLength(1); // devuelve el tamaño de la columna

17 for (int c=0; c<y; c++)

18 {

19 Console.Write("Ingrese sueldo " + (c + 1) + ": ");

20 sueldos[f,c] = int.Parse(Console.ReadLine());

21 }

22 }

23 //Segunda Parte

24 int z = sueldos.GetLength(0); // devuelve el tamaño de la fila

25 for (int f=0;f<z;f++)

26 {

27 int suma=0;

28 int e = sueldos.GetLength(1);

29 for (int c=0;c<e;c++)

30 {

31 suma = suma + sueldos[f, c];

32 }

33 sueldostot[f] = suma;

34 }

35 //Tercera Parte

Ejemplo3

Page 7: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

257

36 Console.WriteLine("\n");

37 Console.WriteLine("-----Estadistica de Sueldos-----");

38 Console.WriteLine("Total de sueldos pagados por Operario.");

39 for (int f = 0; f< sueldostot.Length; f++)

40 {

41 Console.WriteLine(empleados[f] + " -> " + "\t $" + sueldostot[f]);

42 }

43 //Cuarta Parte

44 int may = sueldostot[0];

45 string nom = empleados[0];

46 for (int f = 0; f < sueldostot.Length; f++)

47 {

48 if (sueldostot[f] > may)

49 {

50 may = sueldostot[f];

51 nom = empleados[f];

52 }

53 }

54 Console.WriteLine("El operario con mayor sueldo es " + nom + " que tiene un sueldo de

$" + may);

55 Console.ReadKey();

56 }

Page 8: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

258

Hacer un programa o algoritmo que permita eliminar un alumno de un salón de

clase, dada una posición indicada.

Por ejemplo tenemos una matriz 3 x 3

1 1 1

1 1 1

1 1 1

Y queremos eliminar la posición [0,2], nos daría la siguiente respuesta:

1 1 0

1 1 1

1 1 1

1 {

2 Console.Title = "Ejemplo4 de Matrices";

3 Console.ForegroundColor = ConsoleColor.Black;

4 Console.BackgroundColor = ConsoleColor.White;

5 Console.Clear();

6 int f,c;

7 int[,] M = new int[3,3];

8 Console.Write("Digitamos la matriz");

9 Console.Write("\n");

10 for(int i=0;i<3;i++)

11 {

12 for(int j=0;j<3;j++)

13 {

14 Console.Write("Ingrese el elemento [" + i + "," + j + "]: ");

15 M[i, j] = int.Parse(Console.ReadLine());

16 }

17 }

18 Console.WriteLine("\n");

19 for (int i = 0; i < 3; i++)

20 {

21 Console.Write("\t\t");

22 for (int j = 0; j < 3; j++)

23 {

24 Console.Write(M[i,j] + " ");

25 }

26 Console.WriteLine("\n");

27 }

28 Console.WriteLine("Ingrese la posicion del alumno a eliminar");

29 Console.Write("Ingresa fila: ");

30 f = int.Parse(Console.ReadLine());

31 Console.Write("Ingresa columna: ");

32 c = int.Parse(Console.ReadLine());

33 M[f,c]=0;

34 Console.WriteLine("\n");

35 for (int i = 0; i < 3; i++)

Ejemplo4

Page 9: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

259

36 {

37 Console.Write("\t\t");

38 for (int j = 0; j < 3; j++)

39 {

40 Console.Write(M[i, j] + " ");

41 }

42 Console.WriteLine("\n");

43 }

44 Console.ReadKey();

45 }

Función de comparación de cadenas Equals().

Este programa comprueba que el usuario y contraseña sean los correctos; de lo

contrario, al tercer intento cierra el programa.

1 static void Main(string[] args)

2 {

3 Login();

4 Console.ReadKey();

5 }

6 static void Login()

7 {

8 String Usuario = "user";

9 String Password = "123456";

10 Console.Title = "L O G I N";

11 // Con la siguiente funcion mostramos fecha y hora del sistema

12 Console.WriteLine("Fecha y hora del sistema: [" + DateTime.Now.ToString() + "]");

13 Console.ReadLine();

Ejemplo5

Page 10: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

260

14 for (int i = 0; i < 3; i++)

15 {

16 Console.Clear();

17 Console.WriteLine("Intento: [" + (i + 1) + "]");

18 Console.Write("Usuario: ");

19 String User = Console.ReadLine();

20 Console.Write("Contraseña: ");

21 String Pass = Console.ReadLine();

22 if ((User.Equals(Usuario)) && (Pass.Equals(Password)))

23 {

24 Console.WriteLine("\n");

25 Console.WriteLine("BIENVENID@ AL PROGRAMA.... ");

26 break;

27 }

28 else

29 {

30 Console.WriteLine("\n");

31 Console.WriteLine("Saliendo del programa...intente más tarde...");

32 }

33 }

34 }

Page 11: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

261

En este ejemplo, utilizamos la función Replace() para sustituir un carácter

específico por otro carácter.

1 {

2 String cadena, cambio, opcion;

3 do

4 {

5 Console.Clear();

6 Console.WriteLine("Escribe una oracion: ");

7 cadena = Console.ReadLine();

8 cambio = cadena.Replace("a", "*");

9 Console.WriteLine("\t" + cambio);

10 Console.WriteLine("Desea ingresar otra oracion? (s/n)");

11 opcion = Console.ReadLine();

12 }while (opcion=="S" || opcion=="s");

13 Console.ReadKey();

14 }

15 }

En este ejemplo vamos a desarrollar una pequeña aplicación que verifica si una

frase ingresada es palíndroma. Una frase palíndroma es aquella que se lee igual

de izquierda a derecha y viceversa.

1 {

2 Console.Title = "Digitar una palabra para averiguar si es palindroma";

3 String op;

4 do

5 {

6 Console.Clear();

7 Palindroma();

8 Console.WriteLine("Desea verificar otra frase? (s/n)");

9 op = Console.ReadLine();

10 } while (op == "S" || op == "s");

11 Console.ReadKey();

12 }

13 static void Palindroma()

14 {

15 String cadena1 = "", cadena2 = "";

16 Console.WriteLine("Escribe una palabra: ");

17 cadena1 = Console.ReadLine();

18 for (int i = cadena1.Length - 1; i >= 0; i--)

19 {

20 cadena2 = cadena2 + cadena1[i];

21 }

22 Console.WriteLine("La cadena invertida es: " + cadena2);

23 if (String.Equals(cadena1, cadena2))

24 {

25 Console.WriteLine("La cadena " + cadena1 + " es palindroma...");

Ejemplo6

Ejemplo7

Page 12: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

262

26 }

27 else

28 {

29 Console.WriteLine("La cadena " + cadena1 + " no es palindroma...");

30 }

31 }

32 }

Funciones para convertir cadenas a mayúsculas y minúsculas. Además utilizamos

la función que calcula el número de caracteres de una frase cualquiera (incluye

espacios en blanco como caracteres).

1 {

2 Console.Title = "Programa que convierte una oración";

3 String cad1, cad2, cad3;

4 int largo;

5 Console.WriteLine("Digitar una frase que tenga letras mayúsculas y

minúsculas: ");

6 cad1 = Console.ReadLine();

7 // la siguiente función calcula el número de caracteres

8 largo = cad1.Length;

9 Console.WriteLine("La frase [" + cad1 + "] tiene [" + largo + "]

caracteres.");

10 // la siguiente función convierte la frase a letras minúsculas

11 cad2 = cad1.ToLower();

12 Console.WriteLine("La frase en letras minúsculas es : " + cad2);

13 // la siguiente función convierte la frase a letras minúsculas

14 cad3 = cad1.ToUpper();

15 Console.WriteLine("La frase en letras mayúsculas es : " + cad3);

16 Console.ReadKey();

17 }

18 }

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 y ceros.

2. Desarrollar una aplicación que busque el mayor y el menor elemento en una matriz.

3. Escriba un programa que realice la captura de datos de una matriz de números enteros con (3x4)

elementos y luego saque el promedio de la matriz.

4. Comparar dos cadenas de caracteres haciendo uso de la función Compare().

5. Concatenar cuatro cadenas de caracteres utilizando la función Concat().

6. Invertir los elementos de un vector tipo String.

Análisis de Resultados

Ejemplo8

Page 13: Tema: “Matrices y Cadenas en C#”....Tema: “Matrices y Cadenas en C#”. Implementar arreglos de dos dimensiones. Resolver problemas aplicando matrices. Mostrar la implementación

263

1. Desarrollar una aplicación utilizando funciones o procedimientos para buscar cualquier elemento

dentro de una matriz y mencione además la posición en donde se encuentra.

2. Utilizando un vector tipo carácter y una matriz numérica, realice un programa que lea los nombres

de un grupo de alumnos y 3 notas, almacena las notas en la matriz. Calcule el promedio para cada

alumno y luego muestre el listado de los alumnos con las notas respectivas.

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

Investigación Complementaria

Bibliografía