Unidad 4. Arreglos

download Unidad 4. Arreglos

of 18

Transcript of Unidad 4. Arreglos

  • Programacin orientada a objetos I Programa desarrollado

    1 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 1

    Ingeniera en Desarrollo de software

    CUATRIMESTRE: 04

    Programa de la asignatura:

    Programacin orientada a objetos I

    Unidad 4. Arreglos

    Clave: 160920414 / 150920414

  • Programacin orientada a objetos I Programa desarrollado

    2 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 2

    ndice

    Unidad 4. Arreglos ............................................................................................................. 3

    Presentacin de la unidad .............................................................................................. 3

    Propsito ........................................................................................................................ 3

    Competencia especfica ................................................................................................. 3

    4.1. Arreglos unidimensionales....................................................................................... 3

    4.1.1. Declaracin .......................................................................................................... 4

    Actividad 1. Arreglos ...................................................................................................... 6

    4.1.2. Recorrido .............................................................................................................. 6

    4.1.3. Operaciones ......................................................................................................... 9

    Actividad 2. Operaciones con arreglos ......................................................................... 10

    4.2 Arreglos multidimensionales ................................................................................... 11

    4.2.1. Declaracin ........................................................................................................ 11

    4.2.2. Recorrido ............................................................................................................ 14

    4.2.3. Operaciones ....................................................................................................... 15

    Actividad 3. Inversin de arreglos ................................................................................. 16

    Autoevaluacin ............................................................................................................. 17

    Evidencia de aprendizaje. Men del curso ................................................................... 17

    Para saber ms ............................................................................................................ 18

    Fuentes de consulta ..................................................................................................... 18

  • Programacin orientada a objetos I Programa desarrollado

    3 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 3

    Unidad 4. Arreglos

    Presentacin de la unidad

    En esta unidad de la materia Programacin orientada a objetos I (POOI), aprenders el

    concepto arreglos, as como su manejo y recorrido.

    En esta unidad de la materia de Programacin orientada a objetos I (POOI), aprenders

    una de las estructuras de datos ms importante y bsica, que son los arreglos, conocers

    su concepto, as como su declaracin, manipulacin y recorrido. De esta manera

    aprenders a manejar varios datos unidos como un todo.

    Esto te servir para el manejo de informacin obtenida de una base de datos, as como la

    estructuracin de datos en tablas, que son temas que tratars en POO2.

    En esta Unidad es necesario que t, como estudiante, captures todos los programas de

    ejemplo, para que analices su sintaxis y as comprendas mejor los temas vistos.

    Propsito

    En esta unidad logrars:

    o Distinguir los arreglos unidimensionales y multidimensionales

    o Manejar las operaciones bsicas con arreglos

    Competencia especfica

    Construir programas para el manejo de datos del mismo tipo (carcter, cadena, entero o

    decimal) a travs de arreglos aplicados en problemas matemticos simples.

    4.1. Arreglos unidimensionales

    Un arreglo es una estructura de datos que contiene una serie de variables a las que se

    accede a travs de los ndices calculados.

  • Programacin orientada a objetos I Programa desarrollado

    4 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 4

    Las variables contenidas en un arreglo, tambin llamados los elementos del arreglo, son

    todos del mismo tipo, y este tipo se llama el tipo de elemento del arreglo. Un arreglo tiene

    un rango que determina el nmero de ndices asociados a cada elemento del arreglo. El

    rango de un arreglo tambin se conoce como las dimensiones del arreglo. Un arreglo

    con un rango de 1 se denomina arreglo unidimensional. Un arreglo con un rango mayor

    que 1 se llama un arreglo multidimensional. Los arreglos multidimensionales con un

    tamao especfico se refieren a menudo como arreglos de dos dimensiones, los arreglos

    de tres dimensiones, y as sucesivamente.

    Cada dimensin de un arreglo tiene una longitud asociada que es un nmero entero

    mayor o igual a cero. Las longitudes de las dimensiones no son parte del tipo del arreglo,

    sino que se establecen cuando una instancia del tipo arreglo se crea en tiempo de

    ejecucin. La longitud de una dimensin determina el rango de validez de los ndices de

    esa dimensin: Por una dimensin de longitud N, los ndices pueden variar de 0 a N-1. El

    nmero total de elementos de un arreglo es el producto de las longitudes de cada

    dimensin del arreglo. Si una o ms de las dimensiones de un arreglo tienen una longitud

    de cero, se dice que el arreglo est vaco. El tipo de elemento de un arreglo puede ser

    cualquier tipo de dato, incluyendo l mismo (Hejlsberg, 2011: 626), es decir, en lugar de

    cada posicin contenga un dato, puede contener un arreglo completo.

    4.1.1. Declaracin

    En Java hay que declarar un array antes de poder utilizarlo. Y en la declaracin es

    necesario incluir el nombre del array y el tipo datos que se van a almacenar en l (Froufe,

    2009: 35).

    La sintaxis general para declarar e instanciar un array es:

    Adems, como ya se mencion, se pueden usar en Java arrays de cualquier tipo de dato soportado, incluso los definidos por el usuario:

  • Programacin orientada a objetos I Programa desarrollado

    5 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 5

    Haciendo referencia al tema presentado antes Declaracin y mbito de variables

    (Unidad 2, subtema 2.1.1.) se debe saber que la declaracin de los arrays en Java se

    hace mediante una variable referenciada, es decir no se guarda el valor del contenido del

    array, lo que se guarda es una referencia de la locacin de memoria donde estn alojados

    dichos datos. Con lo que se acaba de ver, fcilmente se puede deducir que los arrays son

    objetos. Esto se puede ver en el siguiente prrafo:

    La memoria necesaria para almacenar los datos que componen el array se buscar en

    memoria dinmica a la hora de instanciar y crear realmente el array (Froufe, 2009: 35).

    Igual que con cualquier variable utilizada, en el lenguaje Java necesitan ser inicializadas a

    un valor. Bajo esta premisa, cuando se declara (crea) un array en Java se inicializa

    automticamente, dependiendo de estos tres casos:

    false cuando el tipo de dato es boolean.

    null para un array de objetos de tipo Object.

    el equivalente a 0 (vacio para String) para cualquier otro tipo de dato.

    Cuando se hace la declaracin de un array en Java se consideran dos posibles opciones:

    Declararlo vaco o Declarar colocando valores.

  • Programacin orientada a objetos I Programa desarrollado

    6 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 6

    Una vez que se ha instanciado un array, se puede acceder a los elementos de ste

    utilizando un ndice, de forma similar a la que se accede en otros lenguajes de

    programacin. Los ndices de un array siempre empiezan por 0 (cero) (Froufe, 2009: 35).

    Actividad 1. Arreglos

    El propsito de esta actividad es quereflexiones sobre las diferencias existentes entre los

    diversos tipos de arreglos revisados en la asignatura.

    1. Elabora un cuadro sinptico en el que identifiques los diferentes tipos de arreglos y

    sus diferencias.

    2. Ingresa al foro y genera una nueva entrada.

    3. Contribuye con algn comentario a por lo menos dos compaeros(as) sobre su

    discernimiento del tema.

    4. Elabora las diferencias entre los diversos tipos de arreglos, esto ser como conclusin

    del foro; hazlo basndote en las aportaciones de los compaeros(as).

    4.1.2. Recorrido

  • Programacin orientada a objetos I Programa desarrollado

    7 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 7

    Los elementos contenidos en los arrays estn controlados por la posicin que ocupen

    dentro del array. As, en el ejemplo anterior se tena una declaracin de un array de tipo

    String que contendra 4 elementos, refirindose a los nombres propios de 4 personas:

    Si, por alguna necesidad especial de la situacin, se quisiera imprimir a pantalla el

    contenido del array nombres indicando la posicin de cada nombre, bastara con hacer lo

    siguiente:

    Donde se indica al arreglo que se quiere imprimir el valor que est en la posicin i-sima,

    esta instruccin se le indica al lenguaje Java cuando se pone el nombre del arreglo con el

    cual se quiere trabajar, seguido de la posicin que se desea recuperar (para impresin,

    operaciones, clculos, entre otros) encerrado entre corchetes([]). La salida de estas

    instrucciones escritas en lenguaje Java, al compilar y ejecutar el programa (se obvian las

    partes faltantes de la clase por cuestiones didcticas) sera la siguiente:

    Imagina la cantidad de lneas necesarias para imprimir el nombre de todos los alumnos

    que pertenecen a una universidad cuya matrcula es un total de 5,000 alumnos. Como se

    podr deducir fcilmente se necesitaran 5,000 lneas como las anteriores.

  • Programacin orientada a objetos I Programa desarrollado

    8 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 8

    Para solucionar la cuestin anterior de forma un tanto ms sencilla se utilizan ciclos, que

    como ya se sabe, facilitan la ejecucin de operaciones secuenciales y repetitivas pero

    necesarias, como en el caso de los arrays. Adems que los ciclos son controlados por

    ndices (su comienzo y su fin) y sta es la misma forma de acceder a los elementos de un

    array, como ya se haba explicado. A continuacin se presenta la misma impresin del

    contenido del array nombres, pero utilizando un ciclo for:

    Y la salida ser:

    Segn las nuevas instrucciones, se introdujeron algunas variaciones para poder hacer el

    recorrido funcional y se explica a continuacin: Cuando se declara un arreglo se indica el

    total de elementos que contendr dentro de l (lmite del arreglo); este mismo lmite es el

    total de repeticiones que deber ejecutar el ciclo for, indicado con i

  • Programacin orientada a objetos I Programa desarrollado

    9 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 9

    que a voluntad del programador iniciar, terminar y se ir incrementando segn lo

    explicado de las partes que conforman al ciclo for.

    4.1.3. Operaciones

    Al referirse a operaciones con arrays no es en el sentido clsico de operaciones

    aritmticas sobre ellos (aunque se pueden hacer y se ejemplificar) sino a cmo se

    obtienen sus elementos, haciendo un profundo nfasis en la importancia que tienen los

    ndices para ello.

    Imagina que tenemos 2 arreglos unidimensionales, como sigue:

    y se quiere hacer una suma y multiplicacin punto a punto (posicin a posicin) de cada

    uno de sus elementos, y almacenarlos en un tercer array para cada operacin sugerida,

    luego imprimir el resultado de la acumulacin de las operaciones. Se ejemplifica con la

    siguiente porcin de cdigo:

  • Programacin orientada a objetos I Programa desarrollado

    10 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 10

    Ntese la importancia de los ndices para poder acceder a los elementos de los arrays y

    de la misma manera para almacenar resultados.

    Se puede utilizar un mismo contador para n arrays, siempre y cuando stos sean del

    mismo tamao, como en el ejemplo anterior, donde se sum y multiplic en un mismo

    ciclo. Solo en las impresiones, dado que se buscaba que el resultado se viera de manera

    independiente, se utilizaron ms ciclos for, tantos como nmeros de resultados se quiera

    mostrar.

    Actividad 2. Operaciones con arreglos

    Esta actividad tiene como finalidad que identifiques la declaracin y recorrido de arreglos

    unidimensionales en Java.

    1. En NetBeans crea un nuevo proyecto.

    2. Dentro de la clase Main crea un mtodo, donde se solicite al usuario un nmero para

    determinar el tamao de un arreglo, seguido a esto, se solicite al usuario ingrese

  • Programacin orientada a objetos I Programa desarrollado

    11 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 11

    elementos para llenar el arreglo, y por ltimo se muestre ese mismo arreglo en una salida

    pero con cada elemento elevado al cubo. La llamada a esto mtodo estar dada en el

    mtodo main.

    3. Guarda la actividad con el nombre POO_U4_A2_XXYZ.Sustituye las XX por las dos

    primeras letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la

    inicial de tu apellido materno.

    4. Revisa y comenta los proyectos de al menos dos compaeros(as).

    5. Enva el archivo a tu Facilitador(a)para recibir retroalimentacin.

    4.2 Arreglos multidimensionales

    Los arreglos vistos en la seccin anterior solo son de una dimensin, es decir solo se

    manejaban a manera de rengln (o fila).

    En cambio los multidimensionales se manejan a manera de tabla, donde se tendrn filas y

    columnas, por lo que este tipo de arreglos ofrece un mejor manejo de datos cuando stos

    deben manejar dimensiones, como la informacin mostrada en hojas de clculo o tablas

    de bases de datos.

    4.2.1. Declaracin

    Los arreglos multidimensionales tienen ms de una dimensin. En Java, las dimensiones

    se manejan por medio de corchetes (muy parecido a los arrays unidimensionales), dentro

    de los cuales se escribe cada dimensin (cantidad de datos que guardar). Cada

    dimensin ir dentro de un corchete. La sintaxis general para declarar e instanciar un

    array es:

    Adems, como ya se mencion, se pueden usar en Java arrays de cualquier tipo de dato

    soportado, incluso los definidos por el usuario:

  • Programacin orientada a objetos I Programa desarrollado

    12 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 12

    Ahora bien, la declaracin de los arrays en Java se hace mediante una variable

    referenciada, es decir, no se guarda el valor del contenido del array, lo que se guarda es

    una referencia de la locacin de memoria donde estn alojados dichos datos. Con lo que

    se acaba de ver, fcilmente se puede deducir que los arrays son objetos.

    Cuando se hace la declaracin de un array en Java se consideran dos posibles opciones:

    Declararlo vaco o Declarar colocando valores.

    Declararlo vaco.

    La estructura general, si pudiera observarse la reserva de memoria que hace Java sobre

    la memoria principal de la computadora, sera como sigue:

    Declarar colocando valores

  • Programacin orientada a objetos I Programa desarrollado

    13 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 13

    Observa que la estructura que se muestra, coincide perfectamente con las dimensiones

    declaradas en el arreglo intnumeros[][] = new int[3][3]; donde el nmero contenido en el

    primer corchete corresponde al nmero de filas que contendr el array, por ende, el

    nmero contenido en el segundo corchete corresponde al nmero de columnas que

    contendr el array, de esta manera se analizar una estructura diferente, como la que

    sigue:

    Quedara as:

    Declararlo con valores iniciales es un poco diferente, como la declaracin para arrays

    unidimensionales, pues se debe especificar explcitamente el contenido de cada

    dimensin del array.

  • Programacin orientada a objetos I Programa desarrollado

    14 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 14

    4.2.2. Recorrido

    El recorrido de los elementos de un array multidimensional es de la misma manera que en

    un arreglo unidimensional, slo agregando un corchete por cada dimensin que se aada,

    considerando lo siguiente:

    Se puede acceder a los valores de los elementos de un arreglo bidimensional a travs del

    nombre del arreglo y dos subndices. Los subndices deben escribirse entre corchetes y

    representan la posicin del elemento en el arreglo. As, es posible referirse a un elemento

    del arreglo escribiendo el nombre del arreglo y los subndices del elemento entre

    corchetes. Los valores de los subndices empiezan en cero para el primer elemento, hasta

    el tamao del arreglo menos uno.

    Tmese como ejemplo el siguiente cdigo, donde se recorre e imprime el array

    bidimensional llamado nombres:

  • Programacin orientada a objetos I Programa desarrollado

    15 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 15

    La salida esperada para esta porcin de cdigo ser:

    Observa el aumento de los contadores y la manera en que van incrementndose, ya que

    ah es donde radica la importancia del recorrido de los arreglos, en la posicin de sus

    contadores.

    4.2.3. Operaciones

    Como los arrays unidimensionales y multidimensionales son tan parecidos en su mtodo

    de acceso (que de hecho es idntico), se ejemplifica los arrays multidimensionales de la

    misma manera que se hizo con los arrays unidimensionales, slo modificando sus

    dimensiones:

    Imagina que tenemos 2 arreglos unidimensionales, como sigue:

    //recuerda que el nmero total de elementos de un array multidimensional es la

    multiplicacin de cada dimensin contra todas las restantes, y se quiere hacer una suma

    y multiplicacin punto a punto (posicin a posicin) de cada uno de sus elementos y

    almacenarlos en un tercer array para cada operacin sugerida, luego imprimir el resultado

    de la acumulacin de las operaciones. Se ejemplifica con la siguiente porcin de cdigo:

  • Programacin orientada a objetos I Programa desarrollado

    16 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 16

    Nota la importancia de los ndices para poder acceder a los elementos de los arrays y de

    la misma manera para almacenar resultados.

    Se puede utilizar un mismo contador para n arrays, siempre y cuando stos sean del

    mismo tamao, como en el ejemplo anterior donde se sum y multiplic en un mismo

    ciclo. Slo en las impresiones como se buscaba que el resultado se viera de manera

    independiente, se utilizaron ms ciclos for, tantos como nmeros de resultados se quiera

    mostrar.

    Actividad 3. Inversin de arreglos

    El propsito de esta actividad es que identifiques la declaracin y recorrido de arreglos

    multidimensionales en JAVA.

  • Programacin orientada a objetos I Programa desarrollado

    17 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 17

    1. En NetBeans crea un nuevo proyecto.

    2. Dentro de la clase Main crea un mtodo, donde se soliciten al usuario dos nmeros X

    y Y, y sean X el nmero de filas, Y el nmero de columnas de un arreglo, seguido a esto,

    se solicite al usuario ingrese elementos para llenar el arreglo, y por ltimo se muestre ese

    mismo arreglo en una salida pero en orden inverso. La llamada a esto mtodo estar

    dada en el mtodo main.

    3. Guarda la actividad con el nombre POO_U4_A3_XXYZ. Sustituye las XX por las dos

    primeras letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la

    inicial de tu apellido materno.

    4. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.

    Autoevaluacin

    Para reforzar los conocimientos relacionados con los temas que se abordaron en esta

    primera unidad del curso, es necesario que resuelvas la Autoevaluacin de la unidad.

    Recuerda que es muy importante leer cuidadosamente los planteamientos indicados y

    elegir la opcin adecuada para cada uno.

    Ingresa al aula para realizar la actividad.

    Evidencia de aprendizaje. Men del curso

    Como parte de la evaluacin de esta unidad, debes realizar un programa cuyo propsito

    es que logres identificar los componentes de un programa modular y puedas aplicarlos.

    1. En NetBeans crea un nuevo proyecto, y crea tantas clases como ejercicios se han

    realizado a lo largo del cuatrimestre, donde cada clase incluya cada programa. En la clase

    Main se debe contar con un mensaje tipo men al usuario, y este podr elegir ejecutar

    cualquier programa; en el mtodo main se debe tener un switch que tenga la llamada a

    todos los mtodos en forma de men y que al elegir el usuario un nmero se ejecute ese

    programa.

    2. Consulta la Escala de evaluacin.

  • Programacin orientada a objetos I Programa desarrollado

    18 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 18

    3. Guarda la evidencia con el nombre POO1_U3_EA_XXYZ. Sustituye las XX por las

    dos primeras letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por

    la inicial de tu apellido materno.

    4. Enva la carpeta del proyecto a tu Facilitador(a) para recibir retroalimentacin.

    * Recuerda que puedes volver a enviar tu archivo tomando en cuenta las observaciones

    de tu Facilitador(a).

    Autorreflexiones

    Adems de enviar tu trabajo de la Evidencia de aprendizaje, es importante que ingreses

    al foro Preguntas de Autorreflexin y consultes las preguntas que tu Facilitador(a)

    presente, a partir de ellas, debes elaborar tu Autorreflexin en un archivo de texto llamado

    POO_U4_ATR_XXYZ. Posteriormente enva tu archivo mediante la herramienta

    Autorreflexiones.

    Para saber ms

    Consulta la pgina oficial del lenguaje Java, donde podrs encontrar manuales de

    referencia sobre arreglos.

    Java: http://www.java.com/es/

    Fuentes de consulta

    Froufe, A. (2009) Java 2, Manual de usuario y tutorial. Mxico: Alfaomega, Ra-

    Ma.

    Hejlsberg, A., Torgersen, M., Wiltamuth, S. & Golde, P. (2011) C# Programming

    Language (Covering C# 4.0), The 4th Edition (Microsoft .NET Development

    Series). USA: Ed. Addison-Wesley.