Tema: Vectores en C#

Documentos relacionados
Tema: Estructuras de Repetición en C# [For].

Guia#9: Punteros en C#.

Tema: Estructuras de Repetición en C# [While y Dowhile].

Tema: Estructuras de Repetición en C#.

Tema: Estructuras de Selección en C#.

Tema: Funciones, Procedimientos y Recursividad en C#.

En Java, un arreglo es un grupo de variables (llamados elementos o componentes) que contienen valores, todos del mismo tipo.

Guia#12: Tema: Archivos en C#.

Tema: Entorno a C# Objetivos. Introducción. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Estructurada

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

Tema: Entorno a C# y Estructuras Secuenciales.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Tema: Métodos de Ordenamiento. Parte 1.

Cadenas de caracteres

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P de Ingeniería de Sistemas e Informática NETBEANS 7.0

ARREGLOS UNIDIMENSIONALES

Matriz A Matriz B Matriz C C [1,1]=A [1,1]+B [1,1]=1+15= 16; C [1,2]=A [1,2]+B [1,2]=3+12= 15;

Java Avanzado Facultad de Ingeniería. Escuela de computación.

ESTRUCTURAS DE CONTROL Y DE SELECCIÓN

Porque usar Arreglos?

III. Desarrollo de aplicaciones con manejo de datos en la memoria Reuven Feuerstein Javier Navarro

Tema: Tipos de datos y conversiones

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

U nidad 6: A rreglos: U nidim ensionales y m ultidim ensionales

Tema: Clases y Objetos en C#. Parte II.

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

Tema: Arreglos de objetos en C#.

GUIA DE EJERCICIOS N 1 LENGUAJE C# Página 1 de 5. Instructor: Ing. Néstor Raúl Suarez Perpiñan

Estructura de datos tipo vector.

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

Lenguaje de Programación: C++ Arreglos

Introducción a Java. Introducción a Java. Programación I

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

Tema: Plantillas en C++.

Tema: Sobrecarga. Objetivos. Materiales y Equipo. Introducción Teórica. Programación II. Guía No. 7

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

Qué son los arreglos

GUÍA DE TRABAJO N 2 ARREGLOS EN C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 8. Tema: ARREGLOS (ARRAYS) LENGUAJE C#

Algoritmos. Intro. Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison

Tema: Introducción al IDE de Microsoft Visual C#.

Tipos de Arreglos. Notación Algoritmica de los Arreglos multidimensionales tipo_dato nombre[dim 1. , dim 2. ,..., dim n

PRÁCTICA #6 TIPOS DE DATOS ESTRUCTURADOS: Arreglos, Registros y Archivos

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

ARREGLOS (ARRAYS)- MATRICES.

Braulio Ricardo Alvarez Gonzaga. Aplicaciones en consola

Tema: Algoritmos para la ruta más corta en un Grafo.

Elabore un diagrama de flujo y la codificación de un programa para:

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7

Programación Estructurada

Columnas

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Prof. Dr. Paul Bustamante

PRACTICA 9 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS (PARTE II) Objetivos

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

GUIA 1: Entorno de Visual Studio. Lenguajes de Programación.

Fundamentos de Programación Visual Basic

Programación Estructurada

INFOTECH MÓDULO 1 CURSO. Conocimientos esenciales de programación. Lógica y Lenguaje de Programación

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

Tema 3. Estructuras de Datos

Tema: MANEJO DE UN ARCHIVO DE BASE DE DATOS EN MICROSOFT EXCEL 2013.

Bloque II. Elementos del lenguaje de programación Java

Suponer que los NIFs tienen 8 dígitos y, a continuación, una letra (no importa que sea mayúscula o minúscula).

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Arreglos Unidimensionales En este tipo de arreglo se hace uso de un índice solamente para hacer referencia a una posición particular del arreglo.

ESCUELA DE INFORMÁTICA

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

TAD CONJUNTOS Y MULTICONJUNTOS

UNIVERSIDAD LUTERANA SALVADOREÑA. Docente: ANA LISSETTE GIRÓN

Algoritmos y Programación I

Tema: Uso del programa DFD

Estatutos de Control C# Estatutos de Decisión (Selección)

Tema 3. Estructuras de control y programación estructurada

PROGRAMA: COMPUTACION I

Lenguaje de programación C. Introducción

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo.

Tema#2. Tipos de Datos 10

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

TEMA 1. Introducción a la programación. CONSIDERACIONES GENERALES.

Programación I. Arreglos. Prof. Lisbeth Pérez Rivas

1. Manejo de memoria estática 2. Manejo de memoria dinámica

MANUAL BÁSICO DE MYSQL

ARREGLOS EN. Nota: El autor.

Transcripción:

Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Estructurada Objetivos Tema: Vectores en C# Introducir al estudiante a los conceptos de estructura de datos. Conocer la sintaxis de creación y definición de vectores. Conocer los tipos de vectores que se utilizan en la programación. Resolver problemas aplicando vectores. 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. 199

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 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]; Guía de laboratorio No. 8. Material y Equipo Computadora con Visual Studio 2013 o superior. Dispositivo de almacenamiento (USB). Procedimiento Ejemplo1 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 { 2 Double[] Sueldos = new Double[5]; 3 for (int i = 0; i < 5; i++) 4 { 5 Console.WriteLine("Ingrese el sueldo del empleado" + (i + 1) + ":"); 6 Sueldos[i] = Double.Parse(Console.ReadLine()); 7 } 8 Mostrar(Sueldos); // utilizando un procedimiento 9 Console.ReadKey(); 10 } 11 static void Mostrar (Double[] Sueldos) 12 { 13 Console.WriteLine("Los sueldos ingresados son:"); 14 for (int i=0;i<5;i++) 15 { 16 Console.Write("\t" + Sueldos[i]); 200

17 } 18 } Ejemplo2 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 { 2 Console.Title = "Ejemplo2 de vectores con la funcion Lenght"; 3 Double SumaNotas = 0, Promedio; 4 Double[] Notas = { 10, 7.2, 8.5, 9.1, 6.5 }; 5 String[] Alumnos = {"Juan Perez","Toño","Chepe","Rodrigo", "Marisol"}; 6 for ( int i=0; i<notas.length; i++) 7 { 8 Console.WriteLine("\nLa nota de {0} es: {1}", Alumnos[i], Notas[i]); 9 } 10 for ( int i=0; i<notas.length; i++) 11 { 12 SumaNotas = SumaNotas + Notas[i]; 13 } 14 Promedio = (SumaNotas / 5); 15 Console.WriteLine("-----------------------------------------"); 16 Console.WriteLine("\n\tLa suma de todas las notas es: " + SumaNotas); 17 Console.WriteLine("\n\tEl promedio de las notas es: " + Math.Round(Promedio,2)); 18 Console.ReadKey(); 19 } 20 201

Ejemplo3 En este ejemplo, aprenderemos a encontrar el mayor elemento de un arreglo así como también el menor elemento del mismo. 1 { 2 Console.Title = "Ejemplo3 el mayor y menor en un vector"; 3 int[] n; 4 int tam, menor, mayor; 5 Console.WriteLine("Dame el tamaño del vector"); 6 tam = int.parse(console.readline()); 7 n = new int[tam]; 8 for (int i = 0; i < tam; i++) 9 { 10 Console.WriteLine("Digite el elemento" + (i+1) + " : "); 11 n[i] = int.parse(console.readline()); 12 } 13 mayor = n[0]; 14 menor = n[0]; 15 for (int i = 0; i < tam; i++) 16 { 17 if (n[i] > mayor) 18 { 19 mayor = n[i]; 20 } 21 else if (n[i] < menor) 22 { 23 menor = n[i]; 24 } 25 } 26 Console.WriteLine("El menor de los elementos es: " + mayor ); 27 Console.WriteLine("El mayor de los elementos es: " + menor); 28 Console.ReadKey(); 29 } 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. 202

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. Ejemplo4 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 { 2 Console.Title = "Ejemplo4 utilizando la instruccion foreach"; 3 int[] Edades = new int[5]; 4 Array(Edades); 5 Console.ReadKey(); 6 } 7 static void Array(int[] Edades) 8 { 9 int Total = 0; 10 Edades = new int[5]; 11 for (int x = 0; x < Edades.Length; x++) 12 { 13 Console.WriteLine("Ingresa la edad del estudiante" + (x + 1) + ":"); 14 Edades[x] = int.parse(console.readline()); 15 } 16 foreach (int element in Edades) 17 { 18 Total = Total + element; 19 } 20 Console.WriteLine("La sumatoria de las edades es: " + Total); 21 } 22 203

Ejemplo5 A continuación presentamos varias operaciones que podemos realizar con un vector de datos numéricos, como lo es: llenado de datos, buscar datos, mayor y menor, sumatoria y promedio y sin olvidar lo más importante es utilizar el método de la burbuja para el ordenamiento de los datos. 1 static void Main(string[] args) 2 { 3 Console.ForegroundColor = ConsoleColor.Black; 4 Console.BackgroundColor = ConsoleColor.White; 5 Console.Clear(); 6 Console.Title = "Programa que posee el método de la burbuja"; 7 Double[] ventas = new Double[5]; 8 int i,j; 9 Double resp, encontrado, promedio, suma, buscar, mayor, menor, aux; 10 //LLENADO DE VENTAS 11 for (i=0;i<5;i++) 12 { 13 Console.Write("Posición número " + i +" de las ventas = $"); 14 ventas[i] = Double.Parse(Console.ReadLine()); 15 } 16 Console.WriteLine("\n"); 17 //IMPRIME LOS DATOS AÑADIDOS 18 for(i=0;i<5;i++) 19 { 20 Console.Write("\t" + ventas[i]); 204

21 } 22 Console.WriteLine("\n"); 23 //BUSCAR UNA VENTA 24 encontrado = 1; 25 resp = 0; 26 Console.Write("\nDigitar la venta a buscar: $"); 27 buscar = Double.Parse(Console.ReadLine()); 28 for(i=0;i<5;i++) 29 { 30 if (buscar == ventas[i]) 31 resp = 1; 32 } 33 if (encontrado == resp) 34 { 35 Console.WriteLine("\nLa venta ${0} fue encontrada", buscar); 36 } 37 else 38 { 39 Console.WriteLine("\nLa venta ${0} no fue encontrada", buscar); 40 } 41 //MOSTRAR LA MAYOR Y LA MENOR VENTA 42 mayor=0; 43 menor=1000; 44 for(i=0;i<5;i++) 45 { 46 if (mayor < ventas[i]) 47 mayor = ventas[i]; 48 if (menor > ventas[i]) 49 menor = ventas[i]; 50 } 51 Console.WriteLine("\nLa mayor venta es: $" + mayor); 52 Console.WriteLine("\nLa menor venta es: $" + menor); 53 //LA SUMATORIA DE LAS VENTAS 54 suma = 0; 55 for(i=0;i<5;i++) 56 { 57 suma = suma + ventas[i]; 58 } 59 Console.WriteLine("\nLa suma de las ventas es: $" + suma); 60 promedio=suma/5; 61 Console.WriteLine("\nEl promedio de las ventas es: $" + Math.Round(promedio,3)); 62 //REALIZA LA ORDENACION POR MEDIO DE LA BURBUJA 63 for(i=0;i<5-1;i++) 64 {//inicio de primer for 65 for(j=0;j<5-1;j++) 66 { //inicio del segundo for 67 if(ventas[j]>ventas[j+1]) 68 { // inicio del if 69 aux=ventas[j]; 70 ventas[j]=ventas[j+1]; 205

71 ventas[j+1]=aux; 72 }// fin del if 73 }//fin del segundo for, el más interno, el de la j 74 }//fin del primer for 75 //IMPRIME LAS VENTAS ORDENADAS 76 Console.WriteLine("\nEl vector ordenado queda asi:"); 77 Console.WriteLine("\n"); 78 for(i=0;i<5;i++) 79 { 80 Console.Write("\t $" + ventas[i]); 81 } 82 Console.WriteLine("\n"); 83 Console.ReadKey(); 84 } Ejemplo6 Programa que permite digitar una oración y me muestra cuántas vocales y espacios en blanco posee. 1 static void Main(string[] args) 2 { 3 Console.ForegroundColor = ConsoleColor.Black; 4 Console.BackgroundColor = ConsoleColor.White; 5 Console.Clear(); 6 Console.Title = "Ejemplo de vectores con letras"; 7 //Escriba un programa que lea una cadena de texto y como resultado que muestre el total 8 // de vocales y espacios en blanco que tiene la frase. 9 String nombre; 10 char caracter; 206

11 int i, vocales, espacios; 12 vocales = 0; 13 espacios = 0; 14 Console.Write("\nIntroduzca una frase: "); 15 nombre = Console.ReadLine(); 16 Console.WriteLine("\n"); 17 Console.WriteLine("El tamaño de la oracion es de " + nombre.length + " caracteres"); 18 Console.WriteLine("\n"); 19 Console.WriteLine("-------------------------------------------------------------"); 20 for (i = 0; i < nombre.length; i++) 21 { 22 caracter = char.parse(nombre.substring(i, 1)); 23 //búsqueda de espacios en blanco 24 if (caracter == ' ') 25 // al poner un espacio en blanco entre apostrofe indicamos que es espacio en blanco 26 espacios++; 27 //busqueda de vocales 28 if ((caracter == 'A') (caracter == 'a')) 29 vocales++; 30 if ((caracter == 'E') (caracter == 'e')) 31 vocales++; 32 if ((caracter == 'I') (caracter == 'i')) 33 vocales++; 34 if ((caracter == 'O') (caracter == 'o')) 35 vocales++; 36 if ((caracter == 'U') (caracter == 'u')) 37 vocales++; 38 } 39 Console.WriteLine("\nEl total de espacios en blanco son " + espacios); 40 Console.WriteLine("\nEl total de vocales son " + vocales); 41 Console.ReadKey(); 42 } 207

Ejemplo7 Programa que permite digitar los datos de 2 vectores y realiza la suma de ellos. 1 static void Main(string[] args) 2 { 3 Console.ForegroundColor = ConsoleColor.Black; 4 Console.BackgroundColor = ConsoleColor.White; 5 Console.Clear(); 6 Console.Title = "Ejemplo7 Suma de Vectores"; 7 //Programa que suma los elementos de 2 vectores 8 Double[] vector1 = new Double[5]; 9 Double[] vector2 = new Double[5]; 10 Double[] suma = new Double[5]; 11 int i; 12 //LLENADO DEL VECTOR1 13 for (i = 0; i < 5; i++) 14 { 15 Console.WriteLine("Posición número " + (i+1) + " del vector1 = "); 16 vector1[i] = Double.Parse(Console.ReadLine()); 17 } 18 for (i = 0; i < 5; i++) 19 { 20 Console.Write("\t" + vector1[i]); 21 } 22 Console.WriteLine("\n"); 23 //LLENADO DEL VECTOR2 24 for (i = 0; i < 5; i++) 25 { 26 Console.WriteLine("Posición número " + (i+1) + " del vector2 = "); 27 vector2[i] = Double.Parse(Console.ReadLine()); 28 } 29 for (i = 0; i < 5; i++) 30 { 31 Console.Write("\t" + vector2[i]); 32 } 33 Console.WriteLine("\n"); 34 //REALIZA LA SUMA DE LOS VECTORES E IMPRIME EL RESULTADO 35 for (i = 0; i < 5; i++) 36 { 37 suma[i] = vector1[i] + vector2[i]; 38 } 39 Console.WriteLine("\nLa suma de los vectores es:"); 40 for (i = 0; i < 5; i++) 41 { 42 Console.Write("\t" + suma[i]); 43 } 44 Console.WriteLine("\n"); 45 Console.ReadKey(); 46 } 208

Análisis de Resultados 1. De una lista de 9 notas almacenadas en un vector llamado Grado, se necesita saber cuántas notas son igual a 8.5 2. Una planta que fabrica perfiles de hierro posee un lote de n piezas. Diseñar un programa que pida ingresar la cantidad de piezas a procesar y luego ingresar la longuitud de cada perfil de hierro; sabiendo que la pieza cuya longuitud este comprendida en el rango de 1.20 y 1.40 son aptas. Imprimir por pantalla la cantidad de piezas aptas que hay en el lote. 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. 4. Realizar un programa para la empresa T-Comunico que solicite las ventas de recargas mensuales de la tienda (durante 9 meses), luego muestre el mes en el que se realizo la venta mayor y la venta menor, además del promedio y los meses que tienen ventas menores al promedio. 5. En una empresa trabajan x empleados cuyos sueldos oscilan entre $100 y $500, realizar un programa que lea los sueldos que cobra cada empleado e informe cuantos empleados cobran entre $100 y $300 y cuantos cobran mas de $350. 6. Desarrollar un programa que permita cargar 5 nombres de personas y sus edades respectivas. Luego de digitar la información de todas las personas, se necesita imprimir los nombres de las personas mayores de edad ( mayores o iguales a 18). 209

Investigación Complementaria 1. Desarrollar una aplicación que ordene los elementos de un vector de 7 números enteros (ascendente y descendente). 2. Se dispone de una lista de las temperaturas de una ciudad en cada uno de los días de una determinada semana. Se desea calcular la temperatura mayor y menor de la semana. 3. De una lista de 6 precios almacenados en un vector llamado Mercadito, se necesita saber cuántos precios son mayores a $25. 4. Definir un vector de 5 componentes de tipo Double que representen las alturas de 6 personas. Obtener el promedio de las mismas. Contar cuantas personas son mas altas que el promedio y cuantas mas bajas. 5. Una empresa tiene dos turnos ( mañana y tarde ) en los que trabajan 8 empleados ( 4 por la mañana y 4 por la tarde ). Diseñar un programa que permita almacenar los sueldos de los empelados agrupados por turno. Imprimir el total de sueldos por turno. 6. Se tienen las notas del primer parcial de los alumnos de dos cursos, el curso A y el curso B, cada curso cuenta con 5 alumnos. Realizar un programa que muestre el curso que obtuvo el mayor promedio general. Bibliografía Deitel, Harvey M. y Paul J. Deitel, Cómo Programar en C#, Segunda Edición, México, 2007. 210