SlideShare una empresa de Scribd logo
Fundamentos de Programación

          Arreglos
Estructura de Datos
•   Se puede considerar un conjunto de datos,
     – Como una sola entidad…
     – Como un solo tipo de dato…
     De esta forma, se reduce la complejidad de un problema.
•   Un programa esta formado por:
     – Estructuras de control y llamadas a funciones (el
       algoritmo de nuestro programa).
     – Datos, con sus respectivos tipos, ya sean estos
       atómicos o complejos, juntos forman una jerarquía (la
       estructura de datos del programa).


    PROGRAMA = ALGORITMO + ESTRUCTURA DE DATOS
•
                 ¿Qué es un Arreglo?
                 Basándonos en los tipos de datos atómicos, podemos crear otros más
                 complejos.
            •    Un arreglo es una colección, o grupo de datos, donde:
                  – Cada dato tiene su posición (primero, segundo,
                    tercero…)
                  – Y todos los datos del grupo son del mismo tipo, es
                    decir, o todos son enteros, o todos son reales, etc.
                           NO EXISTEN ARREGLOS “MEZCLADOS”

Jamás olvidar
que un arreglo mejor forma de visualizar un arreglo es:
          • La
                                                                                      ..
 tiene un tipo – Como un grupo de cajas, una detrás de otra                           .
                 – Donde cada caja representa un dato del arreglo o un elemento.
        •       Podemos concluir que un arreglo tiene:
                 – Tamaño: cuantas cajas va a tener, el número de datos.
                 – Tipo: cuál es el tipo de todos los datos del arreglo.
                 – Nombre: el único nombre bajo el cual vamos a dirigirnos al
                   mismo.
Declaración de Arreglos
          •   Al declarar una variable cualquiera siempre indicamos: tipo y
              nombre. Por ejemplo: int a;
          •   Para declarar un arreglo, se debe indicar
                  – Tipo
                  – Nombre y
                  – Tamaño
          •   Un arreglo de 10 elementos enteros, se declara:
                  – int ArregloEnteros[10];                     Jamás olvidar,
                  – Y lo podemos visualizar:                     el tamaño de
ArregloEnteros                                                   un arreglo es
                                                                una constante

  0           1        2       3        4        5         6        7         8   9

      •   Cada elemento del grupo va a estar identificado por un valor
          numérico, llamado índice.
      •   En C el primer elemento de un arreglo tiene el índice 0.
      •   Siempre, para indicar el tamaño de un arreglo, se utilizara una
          constante, jamás una variable.
Manejo de Arreglos
•   Tenemos ahora 10 enteros bajo un mismo nombre
•   ¿Como accedemos a uno de esos datos?
     – Usamos el nombre del arreglo y el índice que identifica al elemento:
       nombre_arreglo[indice]
     – Si se desea asignar el valor de 2 al primer elemento del
       arreglo:
       arregloEntero[0] = 2;     ArregloEnteros
       arregloEntero[1] = 9;
                                  2      9                  1
       arregloEntero[4] = 1:
                                  0      1        2    3    4     5     6     7     8   9
    – Cada elemento es en efecto una variable del tipo declarado para el arreglo
    – Es muy importante recordar que:
        • El índice de un elemento, no es el valor (contenido) de dicho elemento.
        • El índice puede ser cualquier expresión que retorne un valor entero.
    – Para asignar a todos los elementos del arreglo, un mismo valor, lo mas
      práctico es usar un lazo for:
                                                      for(i = 0; i < 10; i++)
                                                      {
                                                         arregloEntero[ i ] = 0;
                                                      }
Leer e Imprimir un Arreglo
 •    Acabamos de ver un ejemplo para acceder a todos los elementos
      de una arreglo de una forma práctica.
 •    Si tenemos 10 elementos en un arreglo, y queremos pedir que
      los ingresen por teclado, debemos repetir el ingreso 10 veces:

                    for(i = 0; i < 10; i++)
                    {
                      scanf(“%d”,&a);
                      arregloEnteros[i] = a;
                    }
 •   Así mismo, para imprimir todos los elementos de un arreglo,
     deberíamos repetir el proceso de imprimir, pero diez veces:


     for(i = 0; i < 10; i++)
     {
         printf(“Elemento %d:%dn”, i, ArregloEnteros[i]);
     }
Ejercicio
• Programa que permite el ingreso de las notas de un
  curso de 20 alumnos. Una vez ingresados, debe
  mostrarse el promedio de las mismas.
             #include <stdio.h>
             #define MAX 20                                  El usuario del programa
                                                              no tiene porque saber
             void main(){                                       que los índices van
                      double notas[MAX];                      desde 0, se le pueden
                      double total, promedio;                    mostrar desde 1
                      int i,a;
                      total = 0;
                      for(i = 0; i < MAX; i++){
                                 printf("Ingrese Alumno %d:",i+1);
                                 scanf(“%d”,&a);
                                 notas[i]=a;
                      }
                      for(i = 0; i < MAX; i++)
                      {
                                 total = total + notas[i];
                      }
                      promedio = (double)total / (double)MAX;
                      printf("Promedio: %.2f",promedio);
                      getch();
             }
Arreglos Para Tabular
• En lugar de almacenar valores
  en los elementos de un arreglo,
  algunas aplicaciones usan los
  arreglos para almacenar
  “índices”, que permiten llevar
  estadísticas, de un dato en
  particular.
• Por ejemplo:
  Se pidió a 40 estudiantes que
  calificaran la calidad de la
  comida de la cafetería en una
  escala del 1 al 10 (1 es terrible y
  10 excelente).
  Escriba un programa en C que
  pida las 40 respuestas y luego
  muestre un resumen del
  resultado.
Inicialización de un Arreglo
• Un arreglo en C también se puede inicializar de
  las siguientes formas:
  – Crear un arreglo de 3 elementos
     • Inicializando cada elemento:
        int A[]={11,2,8}; ó
        int A[3]={11,2,8};
     • Inicializando todos los elementos con
       el mismo valor:
        int A[3]={0};
Arreglos Multidimensionales
• En C, los elementos de un arreglo pueden ser de cualquier tipo
• Esto quiere decir que los elementos de un arreglo pueden ser a
  su vez, arreglos.
• Arreglos de arreglos, se conocen como arreglos
  multidimensionales.
• El mas común de estos, es el de dos dimensiones, conocido
  también como Matriz o Tabla.
• Un ejemplo de una matriz, es un tablero de tres en raya.
• Este es un arreglo de 3 elementos, donde cada elemento es un
  arreglo, de tres elementos también.

         int A[3][3];
                           A[0]
       (0,0) (0,1) (0,2)                   A[0][0] A[0]1] A[0][2]
                           A[1]
       (1,0) (1,1) (1,2)                   A[1][0] A[1][1] A[1][2]
                           A[2]
       (2,0) (2,1) (2,2)                   A[2][0] A[2][1] A[2][2]
Inicialización
• Un arreglo multidimensional también se puede
  inicializar
   static double MatrizIdentidad[3][3] =
   {
     {1,0,0},
     {0,1,0}
     {0,0,1}
   };
• Así podemos inicializar todos los elementos de
  una matriz desde el inicio, sin necesidad de usar
  lazos anidados.
Búsqueda en un Arreglo
• Se refiere al proceso para encontrar un
  elemento particular en un arreglo.
• Una de las estrategias mas comunes y simples
  para buscar un dato en un arreglo es:
   – Revisar uno por uno los elementos del
     mismo, este método se conoce como
     búsqueda lineal.
• Escribir una función que determine si un valor
  dado se encuentra en un arreglo de elementos
  enteros, y si es así, indique su posición-
Solución
                        Dato a buscar: 58                 A[0] 19
                                                          A[1] 12
                                                          A[2] 1
                                                          A[3] 2
                                                          A[4] 58
                                                          A[5]100
int EncontrarElemento(int valor, int arreglo[ ] ,int n)   A[6] 3
{                                                         A[7] 4
        for(i=0; i <10; i++)                              A[8] 45
        {
                if (valor = = arreglo [ i ] )             A[9] 25
                   return(i);
        }
        return(-1);
}
Operador sizeof
• Un char ocupa un byte.
• ¿Cuantos bytes ocupa un entero? ¿un real?
  ¿una cadena?
   – Depende de cada máquina
     Podemos averiguarlo usando el
     operador sizeof.
        sizeof(int) devuelve el número de bytes que
        necesita un dato de tipo int.
   – CUIDADO: sizeof es un operador, no
     una función.
¿Cómo calcular el tamaño de un
            arreglo?1000
                                                       Arreglo[0]

                                1008
• Si inicializamos una                                   Arreglo[1]
  arreglo sin indicar su        1016
  ancho…                                                 Arreglo[2]

                                1024
                                                         Arreglo[3]
  ¿Cómo podemos saber
  el ancho, para futuros        1032
                                                         Arreglo[4]
  usos en el programa?
                           sizeof(Arreglo) devuelve 32
                           sizeof(Arreglo[0]) devuelve el desfase: 8
                           sizeof(Arreglo)/sizeof(Arreglo[0])
                           devuelve 4, justo el número de elementos
                           del arreglo.

Más contenido relacionado

PPTX
Lista de adyacencia
DOCX
Cuadro comparativo de softwares de de metodos numericos
PDF
Tipos de datos en pseudocódigo
PPTX
Ordenamiento en C++
DOCX
Aplicaciones de los árboles y grafos
PDF
Matrices y determinantes
DOCX
Algoritmos if y case
PPTX
Vector gradiente
Lista de adyacencia
Cuadro comparativo de softwares de de metodos numericos
Tipos de datos en pseudocódigo
Ordenamiento en C++
Aplicaciones de los árboles y grafos
Matrices y determinantes
Algoritmos if y case
Vector gradiente

La actualidad más candente (20)

PDF
Estructura de Datos - árboles y grafos
PDF
9 Curso de POO en java - variables, constantes y objetos
PDF
Ejercicios de estructuras selectivas (resueltos)
PDF
Ejercicios de estructura selectiva anidadas
DOCX
Cuestionario de algoritmoss2
PPTX
Método de ordenamiento por selección (selection sort
PDF
Arreglos Bidimensionales - Java - NetBeans
PPT
programacion orientada a objetos
PPTX
Listas de adyacencia
PPTX
Estructuras anidadas
PPT
Matrices
PPTX
Determinantes
PDF
Métodos y Funciones - Java - Algoritmia
PPT
Estructuras condicionales
DOCX
Taller realizado por aldo estrada con pseint
PDF
Estructuras de datos lineales
DOCX
Algoritmos de entrada, proceso y salida
PDF
Taller de ciclos en PSeInt
Estructura de Datos - árboles y grafos
9 Curso de POO en java - variables, constantes y objetos
Ejercicios de estructuras selectivas (resueltos)
Ejercicios de estructura selectiva anidadas
Cuestionario de algoritmoss2
Método de ordenamiento por selección (selection sort
Arreglos Bidimensionales - Java - NetBeans
programacion orientada a objetos
Listas de adyacencia
Estructuras anidadas
Matrices
Determinantes
Métodos y Funciones - Java - Algoritmia
Estructuras condicionales
Taller realizado por aldo estrada con pseint
Estructuras de datos lineales
Algoritmos de entrada, proceso y salida
Taller de ciclos en PSeInt
Publicidad

Destacado (20)

PDF
Estructura de un Programa en C++
PPTX
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
PPTX
Arreglos-Programacion
PPTX
Programacion arreglos diapositivas
DOCX
Pseint taller 1
PDF
Ordenacion
PPTX
Arreglos
PPT
IC - Estructuras de Secuencia - Ejercicios
DOCX
Metodo burbuja C++
PPT
Arreglos - Programación I
PPSX
Generalidades
PPTX
PPTX
unidad 1 INTRODUCCION A LAS ESTUCTURAS DE DATOS
PPTX
Manejo de bits -operadores de bits C++
 
PPT
Capitulo II
PDF
Estructura de datos c++
PPTX
13 Instrucciones de manejo de bits
PDF
Clase3
PDF
Clase 7
PPTX
Administración de memoria arreglos dinamicos
 
Estructura de un Programa en C++
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Arreglos-Programacion
Programacion arreglos diapositivas
Pseint taller 1
Ordenacion
Arreglos
IC - Estructuras de Secuencia - Ejercicios
Metodo burbuja C++
Arreglos - Programación I
Generalidades
unidad 1 INTRODUCCION A LAS ESTUCTURAS DE DATOS
Manejo de bits -operadores de bits C++
 
Capitulo II
Estructura de datos c++
13 Instrucciones de manejo de bits
Clase3
Clase 7
Administración de memoria arreglos dinamicos
 
Publicidad

Similar a 12 Arreglos (20)

PPTX
Estructuras
PPT
Arreglos
PPT
Arreglos en C
PPT
Arreglos
PPTX
Vectores
PDF
Arreglos
PDF
Explicacion de como usar e implementar arreglos en c++
PDF
7.arreglos y vectores en c++
PDF
Array o arreglos
PPTX
9_Arreglos.pptx
DOCX
5ta Evaluación de Progamación.docx
PPTX
Presentación1
PPTX
Daniel lugoalgoritmica
DOCX
PDF
11 arreglos-multidimensionales
PDF
Arreglos en c ++
PDF
Arreglos En C ++
PDF
PDF
Arrayoareglos
PPTX
Arreglos unidimensionales
Estructuras
Arreglos
Arreglos en C
Arreglos
Vectores
Arreglos
Explicacion de como usar e implementar arreglos en c++
7.arreglos y vectores en c++
Array o arreglos
9_Arreglos.pptx
5ta Evaluación de Progamación.docx
Presentación1
Daniel lugoalgoritmica
11 arreglos-multidimensionales
Arreglos en c ++
Arreglos En C ++
Arrayoareglos
Arreglos unidimensionales

Último (20)

PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
DOCX
Programa_Sintetico_Fase_4.docx 3° Y 4°..
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
PDF
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
PDF
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PPTX
Doctrina 1 Soteriologuia y sus diferente
PDF
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
PDF
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
IPERC...................................
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
PDF
Ernst Cassirer - Antropologia Filosofica.pdf
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
DOCX
Informe_practica pre Final.docxddadssasdddddddddddddddddddddddddddddddddddddddd
PDF
TOMO II - LITERATURA.pd plusenmas ultras
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Programa_Sintetico_Fase_4.docx 3° Y 4°..
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
Doctrina 1 Soteriologuia y sus diferente
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
IPERC...................................
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
Ernst Cassirer - Antropologia Filosofica.pdf
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
Informe_practica pre Final.docxddadssasdddddddddddddddddddddddddddddddddddddddd
TOMO II - LITERATURA.pd plusenmas ultras

12 Arreglos

  • 2. Estructura de Datos • Se puede considerar un conjunto de datos, – Como una sola entidad… – Como un solo tipo de dato… De esta forma, se reduce la complejidad de un problema. • Un programa esta formado por: – Estructuras de control y llamadas a funciones (el algoritmo de nuestro programa). – Datos, con sus respectivos tipos, ya sean estos atómicos o complejos, juntos forman una jerarquía (la estructura de datos del programa). PROGRAMA = ALGORITMO + ESTRUCTURA DE DATOS
  • 3. ¿Qué es un Arreglo? Basándonos en los tipos de datos atómicos, podemos crear otros más complejos. • Un arreglo es una colección, o grupo de datos, donde: – Cada dato tiene su posición (primero, segundo, tercero…) – Y todos los datos del grupo son del mismo tipo, es decir, o todos son enteros, o todos son reales, etc. NO EXISTEN ARREGLOS “MEZCLADOS” Jamás olvidar que un arreglo mejor forma de visualizar un arreglo es: • La .. tiene un tipo – Como un grupo de cajas, una detrás de otra . – Donde cada caja representa un dato del arreglo o un elemento. • Podemos concluir que un arreglo tiene: – Tamaño: cuantas cajas va a tener, el número de datos. – Tipo: cuál es el tipo de todos los datos del arreglo. – Nombre: el único nombre bajo el cual vamos a dirigirnos al mismo.
  • 4. Declaración de Arreglos • Al declarar una variable cualquiera siempre indicamos: tipo y nombre. Por ejemplo: int a; • Para declarar un arreglo, se debe indicar – Tipo – Nombre y – Tamaño • Un arreglo de 10 elementos enteros, se declara: – int ArregloEnteros[10]; Jamás olvidar, – Y lo podemos visualizar: el tamaño de ArregloEnteros un arreglo es una constante 0 1 2 3 4 5 6 7 8 9 • Cada elemento del grupo va a estar identificado por un valor numérico, llamado índice. • En C el primer elemento de un arreglo tiene el índice 0. • Siempre, para indicar el tamaño de un arreglo, se utilizara una constante, jamás una variable.
  • 5. Manejo de Arreglos • Tenemos ahora 10 enteros bajo un mismo nombre • ¿Como accedemos a uno de esos datos? – Usamos el nombre del arreglo y el índice que identifica al elemento: nombre_arreglo[indice] – Si se desea asignar el valor de 2 al primer elemento del arreglo: arregloEntero[0] = 2; ArregloEnteros arregloEntero[1] = 9; 2 9 1 arregloEntero[4] = 1: 0 1 2 3 4 5 6 7 8 9 – Cada elemento es en efecto una variable del tipo declarado para el arreglo – Es muy importante recordar que: • El índice de un elemento, no es el valor (contenido) de dicho elemento. • El índice puede ser cualquier expresión que retorne un valor entero. – Para asignar a todos los elementos del arreglo, un mismo valor, lo mas práctico es usar un lazo for: for(i = 0; i < 10; i++) { arregloEntero[ i ] = 0; }
  • 6. Leer e Imprimir un Arreglo • Acabamos de ver un ejemplo para acceder a todos los elementos de una arreglo de una forma práctica. • Si tenemos 10 elementos en un arreglo, y queremos pedir que los ingresen por teclado, debemos repetir el ingreso 10 veces: for(i = 0; i < 10; i++) { scanf(“%d”,&a); arregloEnteros[i] = a; } • Así mismo, para imprimir todos los elementos de un arreglo, deberíamos repetir el proceso de imprimir, pero diez veces: for(i = 0; i < 10; i++) { printf(“Elemento %d:%dn”, i, ArregloEnteros[i]); }
  • 7. Ejercicio • Programa que permite el ingreso de las notas de un curso de 20 alumnos. Una vez ingresados, debe mostrarse el promedio de las mismas. #include <stdio.h> #define MAX 20 El usuario del programa no tiene porque saber void main(){ que los índices van double notas[MAX]; desde 0, se le pueden double total, promedio; mostrar desde 1 int i,a; total = 0; for(i = 0; i < MAX; i++){ printf("Ingrese Alumno %d:",i+1); scanf(“%d”,&a); notas[i]=a; } for(i = 0; i < MAX; i++) { total = total + notas[i]; } promedio = (double)total / (double)MAX; printf("Promedio: %.2f",promedio); getch(); }
  • 8. Arreglos Para Tabular • En lugar de almacenar valores en los elementos de un arreglo, algunas aplicaciones usan los arreglos para almacenar “índices”, que permiten llevar estadísticas, de un dato en particular. • Por ejemplo: Se pidió a 40 estudiantes que calificaran la calidad de la comida de la cafetería en una escala del 1 al 10 (1 es terrible y 10 excelente). Escriba un programa en C que pida las 40 respuestas y luego muestre un resumen del resultado.
  • 9. Inicialización de un Arreglo • Un arreglo en C también se puede inicializar de las siguientes formas: – Crear un arreglo de 3 elementos • Inicializando cada elemento: int A[]={11,2,8}; ó int A[3]={11,2,8}; • Inicializando todos los elementos con el mismo valor: int A[3]={0};
  • 10. Arreglos Multidimensionales • En C, los elementos de un arreglo pueden ser de cualquier tipo • Esto quiere decir que los elementos de un arreglo pueden ser a su vez, arreglos. • Arreglos de arreglos, se conocen como arreglos multidimensionales. • El mas común de estos, es el de dos dimensiones, conocido también como Matriz o Tabla. • Un ejemplo de una matriz, es un tablero de tres en raya. • Este es un arreglo de 3 elementos, donde cada elemento es un arreglo, de tres elementos también. int A[3][3]; A[0] (0,0) (0,1) (0,2) A[0][0] A[0]1] A[0][2] A[1] (1,0) (1,1) (1,2) A[1][0] A[1][1] A[1][2] A[2] (2,0) (2,1) (2,2) A[2][0] A[2][1] A[2][2]
  • 11. Inicialización • Un arreglo multidimensional también se puede inicializar static double MatrizIdentidad[3][3] = { {1,0,0}, {0,1,0} {0,0,1} }; • Así podemos inicializar todos los elementos de una matriz desde el inicio, sin necesidad de usar lazos anidados.
  • 12. Búsqueda en un Arreglo • Se refiere al proceso para encontrar un elemento particular en un arreglo. • Una de las estrategias mas comunes y simples para buscar un dato en un arreglo es: – Revisar uno por uno los elementos del mismo, este método se conoce como búsqueda lineal. • Escribir una función que determine si un valor dado se encuentra en un arreglo de elementos enteros, y si es así, indique su posición-
  • 13. Solución Dato a buscar: 58 A[0] 19 A[1] 12 A[2] 1 A[3] 2 A[4] 58 A[5]100 int EncontrarElemento(int valor, int arreglo[ ] ,int n) A[6] 3 { A[7] 4 for(i=0; i <10; i++) A[8] 45 { if (valor = = arreglo [ i ] ) A[9] 25 return(i); } return(-1); }
  • 14. Operador sizeof • Un char ocupa un byte. • ¿Cuantos bytes ocupa un entero? ¿un real? ¿una cadena? – Depende de cada máquina Podemos averiguarlo usando el operador sizeof. sizeof(int) devuelve el número de bytes que necesita un dato de tipo int. – CUIDADO: sizeof es un operador, no una función.
  • 15. ¿Cómo calcular el tamaño de un arreglo?1000 Arreglo[0] 1008 • Si inicializamos una Arreglo[1] arreglo sin indicar su 1016 ancho… Arreglo[2] 1024 Arreglo[3] ¿Cómo podemos saber el ancho, para futuros 1032 Arreglo[4] usos en el programa? sizeof(Arreglo) devuelve 32 sizeof(Arreglo[0]) devuelve el desfase: 8 sizeof(Arreglo)/sizeof(Arreglo[0]) devuelve 4, justo el número de elementos del arreglo.