Вы находитесь на странице: 1из 6
288 Capitulo 7 Arreglos 7.10 Ejemplo préctico: la clase LibroCal ificaciones que usa un arreglo bidimensional En la ecidn 7.8 presentamas la clase LibroCa ficacfones (gua 7.14, la eual wll un aregleunidimen- slomal para almacenar fs clifcaciones de los etudlants en un solo examen. En la mayoria de los cursos, ls ‘ecules proentan varlos eden. Es probable gus os profsorcquitan anal ls ealifeacions alo lrgo de todo el curso, canto pata un soo esudiance como paras dase en gener Cémo abmacenar las califcaciones de los estudiantes en un arreglo bidimensional en la clase Librocar iicactones [i figura 7.18 contiene una versién del case Libroca ifcactones que utiliza un areglo bidimensional lama- do cal ficaciones, para almacenar las califcaciones de un mimer de estudiantes en varios eximenes, Cada fila del areglo representa las calificaciones de un solo estdiante durante todo el curso, y eada columna representa Jas calficaciones para la clase completa en uno de los eximenes que presentaron los estudiantes durante el curso Una aplicacién como Pruebal ibrocat/ficactones (Figura 7.19) pasa el aneglo como argumento pars el cans- ctor de LibroCalfcaciones. En este ejemplo, utilizamos un arreglo de diez por es lene diercali- ficaciones de los estudiantes en eres eximenes. Cinco métodos reaizan manipulaciones de arreglos para proces las califcaciones. Cada método es similar su contraparte eo la versisn anterior de la clase LibroCal ificaciones lo unidimensional (figura 7.14). £1 mécodo obtenerWinina (lineas 52 70) determina la calfcaciin ins aja de cualquier estudiante durante eb semeste. E] mérado obtenerMaxtna (lineas 73 2 91) determina la calificacién mds ata de cualquier estudiante durante el serestre El métada obtener?romecio (liness 94 2 104) determina cf promedia semestral de un escudiance especfico, El método inprimirGraficoBarcas (eas 107 2.137) imprime un grifco de barras de la distibucién de todas las calificaiones de los estudiantes durante el El método imorint rCatificactones (lineas 140.4 166) imprime el areglo bidimensional en formato io semestal de cada estudiante, alifcaciones de un esd para los elemencos del arteglo unidimensional actual ea14 fstudiantes a la variable ca) f8a5a, Por ejemplo, cs fa prime or exterior la fila de cal iBeaciones se asigna al parimetco ali fEstudian- ‘ses, Despucs, In inseraceién For mejorada intetioe itera a ravés de ca studiantes y compara cada valor nes menor que calf Baja se le asigna oa cali ficaclbn, En la segunda iteracin de la instucciéa For mejarada exterior a fila 1 de eal ‘ficaciones se aigna 2 califetudi antes, y los elementos de era fla se comparan con la variable e214 FBaja, Esto se repite hasta que de ceaT#Seacton con ca14FBada, Siuns ealiie srtido todas las fila de ca 1 Rca sa jones. Cuando se completa Ia eicucidn dela instrucciba aida, 211 aja contiene la califeacién mis baja en el areplo bidimensional. El métado obteneréaxina srabaja en forma similar al meécodo obtenertti Ei mécodo SmprimirGrafcoarras en laf para imprimir la distribucién de calficaciones en general durance todo un semeste, el método aqui wtlia una mensional frecuencia, con base 2 7.18 es cat idéntico al de Is Figura 7.14, Sin embargo, Inseruccién For mejorada anidada (ness 115 a 119) para crear el arzeplo un sen cada une de los dos métodos, in rodas le calficaciones en el ateplobidinensional. El resto dele mmirGrafcoBarras que muestan el geifica es idéntico, El méiodo imprinircal sfcactones (lineas 140 a 164) ulna insteucctones for anidadas para imprimir reglo calificaciones, ademis del promedio semestal de cada estudiante. La sida en la figura ia al Formaco tabular del libpo de ealficaciones real de un profesor. Las izamos una instuecién For 7.19 muescta el resultado el cual se asen lineas 146 y 147 inuprimen lo cabczados de columna para cada prueba, AV ara poder identificar cada prucha con un miimero. De enaneea similar. I instruccién conteolada por contador. for en la linea 1 primero wna etiqueta de fla mediante el uso de una variable contador para idenciticar a cada estuciante(linez 154). Aunque los subindices de los arreglos empiezan en 0, observe que las ineas 147 y 154 imprimen prueba + 1y estudiante + 1.en forma respectiva, para producir nimeros de | | | 740. Ejemplo prdctico la clase Librocal ificactones que usa un arreglo bidimensional 289 1 // Fig. 7.18: LibroCatificaciones.java Yi Asbro de caTificaciones que utiliza un arreglo bidinenstonal para almacenar teal ificaciones. 2 4 public class Librecatificactones sf 6 private String nonbreDelCurso; // nonbre del curso que representa este Uibrocatifcaciones 1 private int calificactones{]{I: // arreglo bidimensional de ealifeactones de estudiantes eo 9 //.e1 constructor con dos argunentos inicializa nonbreDeTCurso y el arreglo ‘eal ifcaciones public Libracal ficaciones¢ String nombre, int arregloCalif{}{) ) t nonbreDelCurso = nosbre; // inicializa nonbredelCurso calificactones = arreglocalif; // almacena cal‘ficaciones } // fin del constructor de LigroCalifcaciones con dos argumentos nnétodo para establecer el nonbee del curso public vod establecertlosbreDelCursoC String nombre ) onbreDelCurse = nonbre; // almacena el nombre del curse + /) fin del mévode establecertonbreDeT Curse // 9vodo para obtener el nonbre de curso public String obtenernonbreDeICursoO t return nonbreDel Curso: } // fin det método obtenerNonbreDetCurso saje de bienvenida a) usuario de LibroCaliscaciones fensaieO) public void mostra t / obtenerNonbredel Curso obtiene e? nombre de) curso ., Systen.out.printf( "Bienvenida al libro de calsficaciones para\n¥s!\n\n", obtenerNonbredelCursoQ ); 3 // fn del matada mostrariensaje / realiza varias operaciones sobre los datos public void procesarcalifcaciones() ‘ imorine el arregio de calificactones imprinircatifeactones(): Vana a Tos aétodos obtenerMinima y obtenerMaxina Systemsout.printfC "\nks d\ass Nd\n\n Lz califcacion mas baja ene) Tibro de calificactones es", obteneriinina() La califeacion mas alta en el Tibro de caTifeaciones as", obtenerttinina().): das Tas pruebas inprime grafico da distribucton de calificaciones pa SnprinirGraficoBarrasO 3/7 fin del metodo procesarCalficaciones public int btenerttinina() { a asune que e} priner elemento de? arreglo califcaciones es et més ba Figura 7.18 | Clase LibroCal ificacianes que utliza un atreglo bidimensional para almacenarcalificciones. (Parte | de 3) 290 Capitulo? Acreglos 35 int califbaja = califfcactonest 0 If 0 3; 37 1 itera a través de Jas filas del arregto calificaciones so for C int califfstudiantes[] : calificaciones ) 33 £ 60 Uf Stora a través de las columas de Ta fla actual 6 for ( int calificacton : califestudiantes a ‘ e 1 $8 Va calificacion es menor que califBaja, 1a asigna’a califSaja 64 if Ccalificacion < califtaia ) 65 4 califaja = calificacton; se for Interior for exterior “6 return califBaja; // devuelve calificacion mis baja TO 3. // fn dal mévodo obtenerstinina 12 // busca 1a caliticacién mas atta 1 public int obteneraxinaQ) m4 a // asume que el priner elenento del arregla calificaciones es e1 mas alto % int califalea - calificacionest 030 013 a tera 2 través de Tas arregio calificaciones 0 for Cant califestudiantes{] + calificaciones ) 3 te aves de Tas columnas de Ja fila actua’ 2 For (int califcacion : califestudiantes ) 8 2 califcacion es nayor que califalta, 1a asigna a 55 F Cealificacton > califAtta ) as ealiffita ~ catificacion; 90 return califatta; // devuelve 1a calihcacién mas Bt 2 // fin det mecado abteneraxt 3 ermina 1a ca?itcacian pronedio 9$ public doub’ especifico (@ confunta de obtenerPromedio( int canjuntodecalift) ) 36 int total = 0; // inicializa e? total ificaciones para un estudiante °° For ( int catificacion : conjuntodecalif ) 100 toral += calificacton: tor 102 / devuelve 1 promedio de catincaciones 103 return (double) total / conjuntoDeCalif. lengths 104 3 // fn del métade abtenerPromedio. 106 prime grafico de barras que muestra Ta distribucién de califcac for public void smprinirGrafcodarras() foeee et 109 system.out ari stritucion de catificaciones en genera’ ficaciones en cada rango de 10 caTificaciones Figura 7.18 | Clase Cibrotatifeacioy Parte? de 3 ‘que utliza un atreglo bidimensional para almacenarcalifcaciones. ' 1 t ' 1 ' ‘ 1 1 110. Ejemplo prictico: la clase LibroCalficaciones que usa un arregiobidimensional 291 int frecuencia{) = new éne{ 11 J; 17 para cada calificacién en LibroCalificaciones, increnenta la frecuencia apropiada For ( int califestudiantes{} : calificaciones ) Q for (int calificacion : califéstudiantes ) +efrecuencial calificacion / 10; 3 1) fin de For exterior // para cada Frecuencia de calificaciones, imprine una barra en e1 grafico + (ioe cuenta = 0} cuenta < Frecuencia.Tength; cuentar+ ) Hi imprine eviquetas de Tas barras ("09-09 + "99-99: ", "100; $f Ceuenta == 30 ) Systes.out.printf¢ "Sd: ", 100 3; Systen.out.printf( "s02d-X02d: ", cuenta * 10, cuenta * 10 +9); inprine barra de asteriscos for ( int estrellas = 0; estrellas < Frecuencia cuenta ]; estrelast+ ) Systen-out.print( "*" inicia una queva Tinea de salida Barras J imprine 21 contenido del arreglo calificaciones public void imprimircal ficacionesQ systen.out.printin( "Las catifieaciones son:\n' Systen.out print "Ji // alines encabezades de crea un encabezado de colusna para cada una de 12s pruebas for ( int prueba = 0; prueba < califcaciones{ 0 ] length; prucbas+ ) systes.out.printf( "Prueba sd", prueba + 1); systen.out.printin( "Pronedio” ); // encabezado de columa de promedio de ostudiantes ede) 130 tay For Clot eduatance ='0; eotadlanee © eal feaclones. Teng eseustantess Ot tsa systen.out.orintFC“Estuatante x24", estudtante + 13 is : i for sme prota + cliSecioes{estudiante 3) // nprine ciecions vst systen.out.printf(*384", prugba i | 161 double promedio = obtenerPromedio( calificacianes[ estudiante ] ); te Sparen bor orineé¢ as a#\ney prosedle 95 | ts Panac*focPrcer | 165} // fin de 1a clase LibroCalifcaciones | Figura 7.18 | Clase LibroCa} ificaciones que utiliza un arreglo bidimensional para almacenar calificaciones. | 292 Capitulo Areglos prucba y estudiance que empiecen en 1 (vea la figura 7.19) La instruceiGn for ineerna en las lineas 156 y 157 ttliaa la variable contador estudiante de a insruccin For exceroe para ierar a través de una fila especfica del asrego ca ficactones, ¢ imprime la calificacién de la prueba de cada estudiance, Observe que una instueci6a, for mejorada puede anidarse en una instrucién for controlada por contador, y viceversa. Dor sleimo, a linea 161 obtiene el promedio semesteal de cada estudiante, pars lo cual pasa la fla actual de ca Reaciones (es decir, calificaciones[ estudiante }) al méxodo obtenerPronedio, EI método obtenerPronedio (ineas 94 2 104) recibe wn argumento; un arreglo unidimensional de results ddos de la prucba para un estulante especifico, Cuando la nen 161 llama a obtenerPronedio, el argumenco calificaciones{ estudiante J, el cual especiica que debe pasatse una fila especifica del arreglo bidimensio- nal ca1iicactones g obtenerProsedio. Por ejemplo, con base en el arreglo creado en la igura 19,4! argumen- toccalificacionest'1 } representa Jos tres valores (un areeglo unidimensional de calificaciones) almacenados en Ja fla 1 del arreglo bidimensional ca1ificactones. Recuerde que un arreglo bidimensional es un atreglo cuyos clementos son arreglos unidimensionales. El mérodo obtenerPromedio calcula Ia suma de los elementos del arreglo, divide el total entre el nimero de resultados de la prucba y devuelve el resultado de punto flocante como tun valor double (linea 103), La clase Pruebal ibroCaT ificaciones que demuestra la clase LibroCal ificaciones La aplicacin en la figura 7.19 crea un objeto de la clase Librocalificaciones (figura 7.18) mediance el uso del areglo bidimensional de valores int llamado arregloCal (el cual se declara einiializa en las lines 10 a 19). Las linea 21 y 22 pasan el nombre de un curso y arreglaCal if al constructor de LibroCalficac¥ones Despus, las lineas 23 y 24 invocan a los métodos mostrarviensaje y procesarCal ifcaciones de miLibro. Gal ificaciones, para mostrar un mensaje de bienvenida y obtener un informe que sntetice la ealfcaciones de los estudiantes para el semeste,eespectivamence : ig. 7.19: Pructalibrocal’ feactones. java 2 ea objeto LibroCalificaciones. usando un arraglo bidisensional de catificaciones 2 4 public class PruebaLibroCatificactones 4 ‘ 1 metodo main cosienza 1a ejecucién de? prograna T public static vold main( String args() He ° eglo bidinensional de cabificaciones de estudiantes 10 inv arreglocaHiFtIC} = { (87, 96, 70 3, u { 68, 87, 90}, 12 498, 100, 90}, GB £100, 81, 823 “% £83, 65,85 }, 15 £ 65}. 6 < 33), 7 i 200 } 18 t a} 19 c By 20 2 Librocalificaciones miLibroCalificaciones = new LibroCaT ficaciones( 2 "cS101 Introduccion a la progranacion en Java", arregiocallf ); 2 miLfbrocal incaciones.mostrartiensaje(): 24 miLibrocalificacvones procesarcalficaciones() ; 23 // fin de main 263-1) fin de 13 clase Pruebal oCalifcaciones Figura 7.19 | Cres un objeto LibroCal ificactones usa do un atteglo bidimensional de califcaciones: después Parte | de 2, invoca al métoda pracesarCalificaciones para anal | | | TAS Listas de argumentos de longitud variable 293 Bienvenido al Vibro de catificaciones para {5101 Introduccion a 1a programacion en Javal Las calificaciones son: Prueba 1 Prueba 2 Prueba 3 Pronedio | estudiante 1 37 96 7084.33, Estudiante 2 68 37 9081.67 Estudiance 3 3 100 90 88.67 Estudiante ¢ 300 31 ie a6, Estudiante 83 65 Ter, | estudfante 6 78 37 676.67 Estudiante 7 a5 75 8381.00, Fstugiante 8 31 94 100 95.00 Estudiance 9 6 2 Be 7733 Estudiante 10 87 93 BBB | La calificacion mas baja en el libro de calificaciones es 65 | 1a catificacion mas alta en el Iibro de calificaciones es 100 Distribucion de califcaciones en general 9-08: 1019: 20-28: 30-39: 40-43 50-59. 60-69: 70-79) 80-88: 90-98: tooo Figura 7.19 | Ciea un objeto Librocatif invoca al método pracesarCalificaciones pars analiza ones usando un aregl bi (Parte 2-de2) nal de clficecones: después TLL Listas de argumentos de longitud variable Gnas ists de arguments de longitad variable pcemos cree méodos que aaa ai de argument que va precio pot una clip (..) em lista de parimesos de un un mmaero abitratio iétodo indica que éste recibe un niimero variable de argumentos de ese tipo especifico. Este uso de I elipss puede ocurce sélo una ver en una lista de parimetos, yt lipsis, junto con su ipo, debe colocarse al fina de la ramadores pueden la sobrecarga de métodos y el paso de arregls para realizar gran ‘varargs (sts de argumentos de longi variable, e8 mis conciso weiizar una Arp en aia de porimere de un mod La figua 120 demuests el método prone (lines 7 216), ve devas double. Jara ata lita de arguments de longitu variable como un wi elton ap As cl eterpo dl metodo puede maniplelparimetc eros como un alo de valores cual recibe una seeuencia de longicud vara ezlo cuyos elementos oubte, Las lines 12 y 13 utlizan el ciclo for mejorado para recorcer el arrelo y caleular el oral d lo La linea 15 accede a numeros.Tength para obtener el tamano del areglo numeros y wdo pronedio con dos, res y euaco tos de longiud variable (linea 7), rode que hace [a llamada, La sla set doubTe en el areg taal en el cileao del promedio, Las lineas 29, 31 y 33 en main llaman al ngumentos, respectivamente, El método pronedio tiene una lista de argum ppor lo que puede promediar todos los argumentos doubYe que le pase et me Fevela que cada Hamada al método pronedio devuclse el valor Error comin de programacién 7.6 ie 7 Tita de pantcos de wn rita indicendo wna Tac de argumentos de longed went epsven mado de A riabees wn eror de sncans Ea eliss sila debe eolcarse a inal de alist de panimeros

Вам также может понравиться