ARREGLOS UNIDIMENSIONALES

Documentos relacionados
MATRICES ARREGLOS BIDIMENSIONALES

FUNCIONES O MÉTODOS. Algoritmia y Programación

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

int[] nombrearray1; int nombrearray2[];

Informática Lección 5. Arreglos (vectores) Curso Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas.

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

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

12. Tipos de atributos

Estructura de datos y Programación

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Guia#9: Punteros en C#.

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Tema: Arreglos en C#.

Introducción al lenguaje de programación java

Un array se compone de elementos de igual tamaño, almcenando linealmente en posiciones de memoria consecutiva. Array (Arreglo) Primer elemento

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

Bloque II. Elementos del lenguaje de programación Java

Tema: Matrices en C#.

Introducción al lenguaje Java

Datos Elementales y formato de un programa en Java

Tema: Vectores en C#

Introduciendo datos desde el

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Andrés Donaciano Martínez Guillén -.- Fundamentos de programación -.andresmtzgwordpress.com

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

int A[][]=new int[3][4]

Tema 14: Arreglos estáticos en C

Para crear un arreglo de cualquier tipo de elementos la sintaxis es:

Tema 10: Arreglos estáticos en C

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

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

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

Práctica No. 2. Tipos de Datos y Entrada/Salida Estándar

PRACTICA Nº Realizar una aplicación que calcule el volumen de una esfera, que viene dado por la fórmula:

PROGRAMACIÓN EN JAVA

Tipos Recursivos de Datos

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.

PROGRAMACIÓN ESTRUCTURADA

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Programación en JAVA. Ejercicios de SECUENCIA

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

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

Porque usar Arreglos?

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

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

Examen Teórico Convocatoria de Junio de 2012

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Área de Programació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

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

Programación M.I. Gerardo Avilés Rosas Tercer Examen Parcial

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación

Algoritmia y Programación

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

Instrucción de selección múltiple switch.

o Los arreglos son colecciones ordenadas de datos del mismo tipo. o Ejemplos: 2

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

EXAMEN PARCIAL 23 de Octubre de 2015 Programación I. Grado en Matemáticas e Informática ETSIINF UPM

PRINCIPIOS DE PROGRAMACIÓN. Mtro. en Ingeniería de Software. Especialidad en e-commerce Ismael Jiménez Hernández

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

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

TEMA 7. ARRAYS (LISTAS Y TABLAS).

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)

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

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

Práctica Guiada: Vectores y Matrices

Pruebas de escritorio

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

Guía - Taller # 2 (JAVA)

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

Programación Estructurada

INFORMATICA II PRIMER PARCIAL

Tipo de Dato: Arreglos

TIPO Y MÉTODO ITERATOR. ERROR JAVA.UTIL.CONCURRENT MODIFICATIONEXCEPTION. RESUMEN DE TIPOS DE BUCLES EN JAVA. (CU00667B)

Fundamentos de Programación CAPÍTULO 3 ARREGLOS. Ing. Bruno López Takeyas, M.C. 1

Programación Orientada a Objetos: Arreglos en Java

TEMA 3:Programación con Clases y Objetos.

ASECOMPU. PORTAL DE REFUERZO ACADEMICO EN PROGRAMACIÓN LISTA DE EJERCICIOS

Capítulo 3. Introducción a la programación. Continuar

ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA

Tema 6: Memoria dinámica

Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase

Curso de Java Introducción a la Programación II

Estructura de Datos ARREGLOS

Transcripción:

ARREGLOS UNIDIMENSIONALES

CONTENIDO 1. Los Arreglos y Java. 1.1 Definición de arreglos 1.2 Inserción de datos 1.3 Extracción de datos 2. Trabajando con arreglos 3. Ejercicios de repaso Slide 2

Definiendo los arreglos unidimensionales. Slide 3

Qué es un arreglo? * Un arreglo es una lista (conjunto) de datos con un número fijo de componentes, todos del mismo tipo, que estan referenciados bajo un mismo nombre. * Cada componente del arreglo se puede acceder mediante índices (0, 1, 2, 3,...) encerradas entre corchetes [ ]. Slide 4

Para qué sirven los arreglos? Los arreglos permiten manejar de forma sencilla y directa conjuntos de datos del mismo tipo, de los cuales conocemos su cantidad y con los cuales se realizarán operaciones similares. Ejemplo1: Escriba un programa en Java que solicite los nombres de cada estudiante del curso y los muestre todos al final. Slide 5

Para qué sirven los arreglos? Ejemplo1: Escriba un programa en Java que solicite los nombres de cada estudiante del curso y los muestre todos al final. Sin arreglos tendríamos un programa cuyo código sería algo como esto: String nombre1, nombre2, nombre3,, nombre50; nombre1 =JOptionPane.showInputDialog( Digite su nombre ); nombre2=joptionpane.showinputdialog( Digite su nombre );... nombre50=joptionpane.showinputdialog( Digite su nombre );... Slide 6

Para qué sirven los arreglos? Ejemplo1: Escriba un programa en Java que solicite los nombres de cada estudiante del curso y los muestre todos al final. Sin arreglos tendríamos un programa cuyo código sería algo como esto: String nombre1, nombre2, nombre3,, nombre50; nombre1 =JOptionPane.showInputDialog( Digite su nombre ); nombre2=joptionpane.showinputdialog( Digite su nombre );... nombre50=joptionpane.showinputdialog( Digite su nombre );... Slide 7

Para qué sirven los arreglos? Ejemplo2: Escriba un programa en Java que solicite los nombres de cada estudiante de cualquier curso y los muestre todos al final. Sin arreglos tendríamos que declarar un número arbitrariamente grande de variables de tipo String ( 100?, 200?) de tal forma que nunca hubiera más estudiantes que variables del programa. String nombre1, nombre2, nombre3,, nombre100;... nombre1 =JOptionPane.showInputDialog( Digite su nombre ); nombre2=joptionpane.showinputdialog( Digite su nombre );... nombre50=joptionpane.showinputdialog( Digite su nombre );... Slide 8

Para qué sirven los arreglos? Ejemplo2: Escriba un programa en Java que solicite los nombres de cada estudiante de cualquier curso y los muestre todos al final. Sin arreglos tendríamos que declarar un número arbitrariamente grande de variables de tipo String ( 100?, 200?) de tal forma que nunca hubiera más estudiantes que variables del programa. String nombre1, nombre2, nombre3,, nombre100;... nombre1 =JOptionPane.showInputDialog( Digite su nombre ); nombre2=joptionpane.showinputdialog( Digite su nombre );... nombre50=joptionpane.showinputdialog( Digite su nombre );... Slide 9

Arreglos: Espacios ordenados Un arreglo se puede ver como un conjunto de espacios finitos donde se almacenan elementos (todos del mismo tipo). Un arreglo también puede verse como cajas ordenadas en fila y numeradas, donde en cada caja se almacena un solo elemento u objeto. cajasdenombres Ana Luis Juan Elemento del arreglo 0 1 2 Índice del arreglo Slide 10

Para recordar: * Un arreglo se usa para almacenar elementos del mismo tipo. * Un arreglo es de tamaño fijo. * Cada elemento se guarda en un espacio independiente. * Cada espacio se referencia con un índice (0,1,2,3,...,n). Slide 11

Cuáles son arreglos? Slide 12

Cuáles son arreglos? Slide 13

Cuáles son arreglos? Slide 14

2. Los Arreglos y Java Declarando y trabajando con arreglos en Java. Slide 15

Declarando Arreglos La declaración de un arreglo se hace de la siguiente forma: TipoDeDato nombre[] = new TipoDeDato [n]; Donde n es la capacidad (tamaño) del arreglo. Ejemplos: String nombres[ ] = new String [4]; double notas[ ] = new double [5]; int edadestudiantes[ ] = new int [3]; Slide 16

Declarando Arreglos String nombres[] = new String [4]; Define un arreglo llamado nombres, que almacena cadenas de texto y puede contener máximo 4 elementos (con índices 0, 1, 2 y 3). Slide 17

Declarando Arreglos String nombres[] = new String [4]; Define un arreglo llamado nombres, que almacena cadenas de texto y puede contener máximo 4 elementos (con índices 0, 1, 2 y 3). double notas[] = new double [5]; Define un arreglo llamado notas, que almacena números reales y puede tener máximo 5 elementos (con índices 0, 1, 2, 3 y 4). Slide 18

Declarando Arreglos String nombres[] = new String [4]; Define un arreglo llamado nombres, que almacena cadenas de texto y puede contener máximo 4 elementos (con índices 0, 1, 2 y 3). double notas[] = new double [5]; Define un arreglo llamado notas, que almacena números reales y puede tener máximo 5 elementos (con índices 0, 1, 2, 3 y 4). int edadestudiantes[] = new int [3]; Define un arreglo llamado edadestudiantes, que almacena números enteros y puede tener máximo 3 elementos (con índices 0, 1 y 2). Slide 19

Declarando arreglos TipoDeDato nombre[] = new TipoDeDato [n]; Los arreglos definidos de esta forma no están inicializados, es decir, no contienen ningún valor, lo cual se representa con null si es String o con 0 si es int o double. Slide 20

Declarando arreglos TipoDeDato nombre[] = new TipoDeDato [n]; Los arreglos definidos de esta forma no están inicializados, es decir, no contienen ningún valor, lo cual se representa con null si es String o con 0 si es int o double. String nombres[] = new String [4]; Slide 21

Declarando arreglos TipoDeDato nombre[] = new TipoDeDato [n]; Los arreglos definidos de esta forma no están inicializados, es decir, no contienen ningún valor, lo cual se representa con null si es String o con 0 si es int o double. String nombres[] = new String [4]; int edadestudiantes[] = new int [3]; Slide 22

Declarando e inicializando Declarar e inicializar un arreglo se hace de la siguiente forma: TipoDeDato nombre[] = { val1, val2,, valn}; Esto crea e inicializa un arreglo de n elementos con valores val1, val2,, valn. Ejemplos: String nombres[ ] = { Oscar, Juan, John, Carlos }; double notas[ ] = { 5.0, 4.0, 5.0}; int edadestudiantes[ ] = {18, 21, 17}; Slide 23

Donde está el error? String nombres [] = { Oscar, 100, Sofia, A ); String nombres [] = { Oscar, 100, Sofia, A); double valores [] = new String[4]; int edades = new int [10]; Slide 24

Inserción de datos Para ingresar datos en un arreglo se debe indicar la posición(índice) del arreglo en el que se va insertar el valor: nombrearreglo[posición] = valor; Nota: No importa el orden en el cual se guardan los datos en el arreglo. Slide 25

Inserción de datos String nombres[] = new String [4]; Cuando se crea un arreglo de cadenas de texto, éste no tiene ningún valor, lo cual se indica con la palabra null. Slide 26

Inserción de datos String nombres[] = new String [4]; nombres[1] = Sarah ; Guarda el texto Sarah En la posición 1 del arreglo. Slide 27

Inserción de datos String nombres[] = new String [4]; nombres[1] = Sarah ; nombres[2] = Juan ; Guarda el texto Juan En la posición 2 del arreglo Slide 28

Inserción de datos String nombres[] = new String [4]; nombres[1] = Sarah ; nombres[2] = Juan ; nombres[?] = Oscar ; Cuál debe ser el índice? Slide 29

Inserción de datos String nombres[] = new String [4]; nombres[1] = Sarah ; nombres[2] = Juan ; nombres[0] = Oscar ; No importa el orden en el cual se guardan los datos en el arreglo! Slide 30

Inserción de datos String nombres[] = new String [4]; nombres[1] = Sarah ; nombres[2] = Juan ; nombres[0] = Oscar ; La instrucción nombres[4]= Jose ; es válida? Slide 31

Inserción de datos String nombres[] = new String [4]; nombres[1] = Sarah ; nombres[2] = Juan ; nombres[0] = Oscar ; Las posiciones siempre son números enteros que inician en 0 Slide 32

Inserción de datos Cuál es el error en cada una de las líneas? int arreglo[ ] = new int [5]; arreglo[0] = 21.2; arreglo[5] = 90; Arreglo[2] = 10 ; Slide 33

Inserción de datos double notas[]=new double[3]; notas[?]=?; notas[?]=?; notas[?]=?; Cuáles son las instrucciones necesarias para obtener el arreglo que se muestra abajo? 0 1 2 2.7 3.1 2.5 Slide 34

Inserción de datos double notas[]=new double[3]; notas[0]=2.7; notas[1]=3.1; notas[2]=2.5; Cuáles son las instrucciones necesarias para obtener el arreglo que se muestra abajo? 0 1 2 2.7 3.1 2.5 Slide 35

Extracción de datos Para recuperar datos de un arreglo se debe indicar la posición(índice) del arreglo que se quiere conocer: nombrearreglo[posición] nombres[2] indica que el valor en la posición 2 es Juan. Slide 36

Extracción de datos JOptionPane.showMessageDialog(null, El valor en la posición 2 es + nombres[2]); Slide 37

Extracción de datos int arreglo[ ] = new int [5]; arreglo[0] = 21 ; arreglo[1] = arreglo[0] + 90; arreglo[2] = 10 * arreglo[1]; Slide 38

3. Trabajando con arreglos Ejemplos prácticos de cómo se crean programas usando arreglos. Slide 39

3. Trabajando con arreglos Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamaño 100 Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 números después, muestre todos los números en un solo mensaje Luego, muestre solo los números almacenados en posiciones pares y, muestre los números impares contenidos en el arreglo Slide 40

3. Trabajando con arreglos Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamaño 100 Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 números int numeros[]=new int[100]; Slide 41

3. Trabajando con arreglos int numeros[]=new int[100]; numeros[0]=integer.parseint(joptionpane.showinputdialog( Ingrese un valor )); numeros[1]=integer.parseint(joptionpane.showinputdialog( Ingrese un valor ));... numeros[99]=integer.parseint(joptionpane.showinputdialog( Ingrese un valor )); Slide 42

3. Trabajando con arreglos int numeros[]=new int[100]; for (int i=0; i<=99; i=i+1){ } numeros[i]=integer.parseint(joptionpane.showinputdialog( Ingrese un valor )); Slide 43

3. Trabajando con arreglos Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamaño 100 Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 números después, muestre todos los números en un solo mensaje Slide 44

Presente el conjunto de instrucciones Java para crear un arreglo de enteros de tamaño 100 Adicione las instrucciones que necesite para solicitar al usuario cada uno de los 100 números después, muestre todos los números en un solo mensaje String mensaje= ""; for (int i=0; i<=99; i=i+1){ } 3. Trabajando con arreglos mensaje=mensaje + " \t " + numeros[i]; JOptionPane.showMessageDialog(null, mensaje); Slide 45

Los arreglos y el ciclo for Un arreglo se procesa generalmente usando un ciclo for: Slide 46

Los arreglos y el ciclo for Un arreglo se procesa generalmente usando un ciclo for: Slide 47

Los arreglos y el ciclo for b.length indica la cantidad de elementos del arreglo. Slide 48

Ejemplo 1: Escriba un programa en Java que solicite los nombres de cada estudiante de cualquier curso y los muestre todos de forma numerada al final. Use un arreglo para almacenar el nombre de cada estudiante. Slide 49

Ejemplo 1: Análisis * Entradas: * Salidas Slide 50

Ejemplo 1: Análisis * Entradas: n, nombres[] * Salidas: lista con todos los nombres enumerados. Slide 51

Ejemplo 1: Análisis * Debemos capturar los nombres de n estudiantes. por lo tanto requerimos primero conocer el valor de n para saber cuál será el tamaño del arreglo. * El arreglo será un arreglo de datos tipo String de tamaño n. La salida del programa será un String que contendrá la lista numerada de los nombres de los estudiantes. Slide 52

Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto Slide 53

Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="",nombres[]: texto leer(n) Slide 54

Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto leer(n) //insertamos datos en el arreglo desde i=0 mientras i<n incrementando i en 1 Haga leer(nombres[i]) Fin desde Slide 55

Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto leer(n) //insertamos datos en el arreglo desde i=0 mientras i<n incrementando i en 1 Haga leer(nombres[i]) Fin desde //Formamos la salida desde i=0 mientras i<n incrementando i en 1 haga lista = lista+(i+1)+nombres[i]+ \n Fin desde Slide 56

Ejemplo 1: Pseudocódigo INICIO n,i: entero lista="", nombres[]: texto leer(n) //insertamos datos en el arreglo desde i=0 mientras i<n incrementando i en 1 Haga leer(nombres[i]) Fin desde //Formamos la salida desde i=0 mientras i<n incrementando i en 1 haga lista= lista+(i+1)+nombres[i]+ \n Fin desde imprimir (salida) FIN Slide 57

Ejemplo 1: Programa en Java import javax.swing.*; public class NombresCurso { public static void main(string[] args) { int n,i; String lista="la lista de nombres de los Estudiantes es:\n"; n =Integer.parseInt(JOptionPane.showInputDialog( "Ingrese el número de estudiantes del curso: ")); String nombres[] = new String [n]; Slide 58

Ejemplo 1: Programa en Java // Ingreso de los nombres de los estudiantes for (i=0; i < nombres.length; i++){ nombres [i] = JoptionPane.showInputDialog( "Ingrese el nombre del estudiante " + (i+1) + ": "); } // Despliegue de la lista de estudiantes: for (i=0; i < nombres.length; i++){ lista= lista+ (i+1) + ". " + nombres[i] + "\n"; } JOptionPane.showMessageDialog(null, lista); }// fin método main } // Fin clase Slide 59

Ejemplo 2 Desarrolle un programa en JAVA que permita leer el nombre de 10 productos de una tienda y su correspondiente precio. La aplicación debe decir cuántos de ellos cuestan más de 3000 pesos y mostrar su nombre, precio y posición en pantalla. Utilice arreglos para almacenar los precios y nombres de productos Slide 60

Ejemplo 1: Análisis * Entradas: productos[], precios[] * Salidas: producto, precio, posición. Slide 61

Ejemplo 2: Programa en Java import javax.swing.joptionpane; public class Tienda { String nombre[] = new String[10], salida; int precio[] = new int[10], posicion; Slide 62

Ejemplo 2: Programa en Java import javax.swing.joptionpane; public class Tienda { String productos[] = new String[10], salida ; int precios[] = new int[10], posicion; //ingresarproductos for (int i=0 ; i<10; i++){ productos[i] = JOptionPane.showInputDialog("Ingrese el articulo "+i); precios[i]=integer.parseint(joptionpane.showinputdialog ( Ingrese precio"+i)); } Slide 63

Ejemplo 2: Programa en Java //calcularmayores salida="los siguientes artículos cuestan mas de $3000 \n"; for (int j=0 ; j<10 ; j++){ if (precio[j] >3000){ salida += nombre[j] + " : +precio[j]+ "\n"; } //mostrardatos JOptionPane.showMessageDialog(null,salida); Slide 64

4. Ejercicios de Repaso Ejercicios para reforzar lo visto en clase. Slide 65

Ejercicios a realizar con arreglos 1) Escriba un programa en Java que lea una lista de n enteros, calcule el promedio de los datos ingresados, el mayor y el menor de ellos. 2) Escriba un programa en Java que dada una lista de enteros y un valor x por parte del usuario, diga cuántas veces x aparece en la lista. El programa como salida debe mostrar la lista ingresada por el usuario e indicar cuántas veces aparece el valor x y en cuáles posiciones. Slide 66

Ejercicios a realizar con arreglos Ejercicios adicionales: En una competencia de natación se desea implementar una aplicación para almacenar el tiempo por cada competidor y además determinar con base en todos los tiempos de los competidores cual es el ganador. El usuario debe especificar cuantos tiempos (competidores) desea ingresar. Desarrolle un programa que recorra un arreglo de enteros, evalúe si sus datos son múltiplos de 7 y los muestre en pantalla. Slide 67

Ejercicios a realizar con arreglos 3) La requiere un programa que le permita conocer cómo califican los estudiantes la comida de la cafetería central. Para ello definió una escala de 1 a 10 (1 denota horrible y 10 denota excelente). El programa debe ser capaz capturar la calificación de cualquier número de estudiantes (no se sabe cuántos estudiantes se encuestarán, así que cuando el encuestador ingrese la calificación de 0, se sabrá que la encuesta habrá concluido). El programa deberá mostrar en su salida cuántos estudiantes fueron encuestados así como el resumen de la encuesta con histograma así: Estudiantes encuestados: 111 Frecuencia de las calificaciones: Calificación núm. Estudiantes Histograma 1 3 *** 2 2 ** 3 10 **********... 8 9 ********* 9 15 *************** 10 7 ******* Utilice un arreglo de enteros de 10 elementos para almacenar la frecuencia con la que ocurre cada calificación. Slide 68