universidad nacional autónoma de nicaragua - león facultad ...arreglos lic. luis ernesto díaz...

16
Universidad Nacional Autónoma de Nicaragua - León Facultad de Ciencias y Tecnología Departamento de Computación Lógica de Programación Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando PseInt con la versión liberada el 2011-08-01. Además se a tratado de apegarse de la mejor forma posible a la sintaxis de la versión del interpretador de Pseudocódigo que utiliza esta versión de PseInt.

Upload: others

Post on 18-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Universidad Nacional Autónoma de Nicaragua - LeónFacultad de Ciencias y TecnologíaDepartamento de Computación

Lógica de Programación

ArreglosLic. Luis Ernesto Díaz Beteta

Nota:Todos los ejemplos mostrados en este folleto fueron probados utilizando PseInt con la versión liberada el 2011-08-01. Además se a tratado de apegarse de la mejor forma posible a la sintaxis de la versión del interpretador de Pseudocódigo que utiliza esta versión de PseInt.

Page 2: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Generalidades

En los temas anteriores se ha manejado el concepto de variable como todo campo que permite que el contenido que se encuentra almacenado en el espacio de memoria asignado a dicho campo, pueda ser alterado en el transcurso de la ejecución del programa. Debemos comprender que a una variable se le asigna un espacio en memoria donde se puede guardar de forma temporal un único valor, bien sea numérico, carácter o lógico.

Frecuentemente tenemos la necesidad de almacenar una colección de datos del mismo tipo. Por ejemplo, cuando se leen las notas de los estudiantes de un curso en particular. Los datos siempre que estén relacionados se pueden organizar en estructuras, de tal manera que podemos tener un conjunto de datos numéricos, lógicos, o caracteres manejados a través de un mismo nombre. Una estructura de datos es la organización que reciben los datos para que sean tratados como una unidad, esta unidad recibe el nombre de arreglo.

Un arreglo es un conjunto finito de componentes del mismo tipo, los cuales se diferencian o relacionan a través de un subíndice. Todos los elementos del arreglo están ubicados de forma consecutiva y tienen el mismo tamaño o espacio en memoria y por lo tanto igual forma de almacenamiento.

Concepto de arreglo 

Un arreglo se define en forma abstracta como una colección finita de elementos homogéneos ubicados de consecutivamente en memoria. Entiéndase por “finito” que todo arreglo tiene una cantidad especifica de elementos y por “homogéneos” que todos los elementos pertenecientes al arreglo son del mismo tipo, por ejemplo, un arreglo puede almacenar enteros o caracteres pero no ambos.

A cada uno de los datos que se almacenan en el arreglo se le llama elemento del arreglo y se enumeran consecutivamente por medio de valores enteros a los que llamamos índices. Al índice más pequeño del arreglo se le denomina limite_inferior (lower) y al alto se le denomina limite_superior (upper).

Los elementos del arreglo pueden ser de cualquier tipo de dato o campo. Un arreglo puede contener, por ejemplo, la edad de los alumnos de una clase o las temperaturas de cada día de un mes en una ciudad determinada.

Declaración de un arreglo 

Los arreglos se declaran igual que cualquier otro tipo de variable, excepto que se le debe indicar al compilador el tamaño o longitud del mismo. Para indicar al compilador el tamaño o longitud del arreglo se debe hacer seguir al nombre del arreglo el tamaño encerrado entre corchetes. La sintaxis para declarar un arreglo es:

Dimension nornbre_arreglo [tamaño(, tamaño, ...)];

Page 3: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Donde:– Dimension, es la palabra reservada del lenguaje que indica que se esta declarando un

arreglo.– nombre_arreglo, corresponde al identificador por medio del cual podemos referenciar al

arreglo.– tamaño, es la cantidad de elementos que será capaz de almacenar el arreglo.

Atención

Obsérvese que en la sintaxis de declaración de un arreglo tenemos una parte encerrada dentro de paréntesis, esto indica que esa parte es opcional. El por que de esto, se explicara en la parte de clasificación de un arreglo.

Al declarar un arreglo es necesario indicarle al compilador la longitud (tamaño) del mismo ya que el compilador reservara espacio de memoria suficiente para almacenar a cada uno de los elementos del arreglo.

Ejemplos de declaración de arreglos:

Dimension a[5]; //se declara un arreglo capaz de almacenar 5 elementosDimension z[10]; //se declara un arreglo capaz de almacenar 10 elementosDimension mi_arreglo[8]; //se declara un arreglo capaz de almacenar 8 elementos

Clasificación de un arreglo 

Como hemos mencionado anteriormente un arreglo al momento de su declaración debe poseer un tamaño o longitud ya que el compilador asignara la memoria suficiente para poder almacenar cada uno de los elementos del arreglo. Un arreglo además de poseer un tamaño también posee una dimensión, de tal forma que un arreglo puede clasificarse de forma general en: “vectores” (arreglos de una sola dimensión) o “arreglos dimensionales” (arreglos que tienen más de una dimensión).

Arreglos unidimensionales o vectoresUn vector es un arreglo donde los elementos que lo conforman están dispuestos bajo un mismo concepto de clasificación (fila o columna), es decir, los datos están organizados de una manera lineal, por lo que para hacer referencia a un elemento del arreglo es necesario un único índice, que indique la posición relativa del elemento en el arreglo.

Gráficamente un vector puede ser representado como fila o como columna, por ejemplo si tenemos la siguiente declaración:

Dimension Vector[6];

El arreglo llamado vector puede ser representado por medio de cualquiera de las siguientes formas:

Page 4: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

En el apartado Concepto de arreglo, se hablo sobre limite_inferior o lower y limite_superior o upper. Normalmente el valor de lower es cero y el valor de upper es el equivalente al tamaño del arreglo menos la unidad, en otras palabras si el tamaño del arreglo es de 6 elementos lower posee el valor 0 y upper el valor 5 (n-1, siendo n el tamaño del arreglo)

Atención

Cabe señalar que normalmente los arreglos inician en la posición 0 y terminan en la posición n-1. Estas posiciones de los índices del arreglo esta dada por el lenguaje de programación que se utilice PseInt tiene como posición inicial o lower la 1 y como posición final o upper el tamaño del arreglo o n.

Esto último va en dependencia de la versión de PseInt que se este utilizando ya que en versiones recientes los rangos de los índices van de 0 a n-1.

Arreglos dimensionalesSe considera arreglo dimensional a todo aquel que posee más de una dimensión, normalmente se distinguen los arreglos de dos dimensiones como “bidimensionales” y arreglos de más de dos dimensiones como “multidimensionales”.

A los arreglos de dos dimensiones (bidimensionales) se les conoce como matrices y son estructuras de datos que organizan su información en forma de tablas, es decir, los elementos que la conforman están dispuestos bajo dos conceptos de clasificación (fila y columna). Para poder indicar el lugar donde se encuentra un determinado elemento, es necesario utilizar dos índices: uno para indicar el renglón o fila y otro para indicar la columna.

Puede mirarse una matriz como un vector de vectores; por lo tanto, es un conjunto de componentes en el que se necesitan dos subíndices para identificar un elemento que pertenezca al arreglo.

Por ejemplo, si tenemos un arreglo llamado matriz de dos dimensiones como se muestra a continuación:

Dimension matriz[3, 6];

Page 5: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Gráficamente podemos representar al arreglo bidimensional como se muestra a continuación:

Un arreglo bidimensional N * M tiene N filas y M columnas; por lo tanto, tiene N * M elementos dispuestos interiormente en memoria en forma sucesiva.

Al declarar un arreglo de más de dos dimensiones o multidimensional es todo aquel que posee más de dos dimensiones. Por ejemplo podemos declarar un arreglo de tres dimensiones llamado matriz_multi de la siguiente forma:

Dimension matriz_multi[2][4][3]

A continuación se presenta un ejemplo gráfico de un arreglo multidimensional de N x M x 3

0 1 2 3 4 50

1

2

Page 6: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Manipulando el contenido de un arreglo

Dos operaciones básicas pueden ser llevadas a cabo sobre los elementos de un arreglo, estas son:

• Almacenamiento: establecer un valor al elemento del arreglo.• Extracción: se obtiene el valor de un elemento del arreglo

Atención

Durante la edición de este documento se utilizo la versión de PseInt liberada en 2011-08-01 y esta versión se utiliza la versión del interprete de pseudocódigo que se muestra:

Esta versión (1.3 20110801) del interprete tiene como valor para el limite_inferior 1 y como valor para el limite_superior el tamaño indicado al momento de definición de el arreglo

Por ejemplo, si definimos un arreglo llamado array con un tamaño de tres elementos como se muestra a continuación:

Dimension array[3];

Son validos los índices que están en el rango de 1 a 3, es decir, que si intentamos acceder a la posición 0 o posición 4 del arreglo llamado array se producirá un error.

Operación de almacenamiento en un arregloEsta nos permite almacenar un valor en la posición que se indique por medio del índice, por ejemplo: si tenemos un arreglo llamado mi_vector con un tamaño de tres elementos y queremos almacenar en la posición 1 el valor 10, la sentencia sería:

mi_vector[1] <- 10;

La sentencia anterior almacena en posición correspondiente al índice 1 el valor 10.

Operación de extracción en un arregloEsta permite acceder al valor que se encuentre en la posición indicada por medio del índice y devuelve ese valor a una variable, por ejemplo: si lo que deseamos es recuperar valores desde una posición del arreglo podemos proceder como se indica en el siguiente ejemplo:

var <- mi_vector[1];

Page 7: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

La sentencia anterior toma el valor de lo que esta almacenado en la posición 1 del arreglo y lo almacena en la variable llamada var.

Atención

Normalmente ni el compilador ni el lenguaje de programación proporcionan un mecanismo que compruebe que los valores de los índices del arreglo están dentro del rango valido. Así, por ejemplo, si accede a elementos fuera del rango el compilador no producirá ningún error, lo que puede producir un fallo en su programa, dependiendo del contexto en que se encuentre el error.

Es tarea del programador asegurarse que no se accede a un índice fuera del rango definido del arreglo, es decir que el valor no sea menor que el valor de lower ni mayor que upper.

Ejemplos de arreglos unidimensionales

En este apartado veremos ejemplos de la implementación de arreglos en la solución de problemas.

Ejemplo 1Crear un programa por medio del cual se pidan las edades de 5 personas y presente en pantalla la edad promedio del grupo.

Datos de entrada– Los valores correspondientes a las 5 edades

Datos de salida– La edad promedio del grupo de personal

Definición de variables– aEdades, corresponde al arreglo de 5 elementos que almacenara las edades.– indice, valor que determinara cual es el índice del arreglo a manipular.– sum, almacenara la suma de las edades (valor inicial 0).– prom, almacenara el resultado de la expresión que calcule el promedio de las edades (valor

inicial 0).

ProcesoEl proceso que se debe de llevar a cabo para saber la edad promedio de 5 personas, lo podemos resumir en los siguientes pasos:

– Pedir las edades de las 5 personas– Sumar cada una de las edades– Sacar el promedio de las edades (sum/5)– presentar la edad promedio en pantalla

Page 8: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Solución

Proceso edad_promedioDimension aEdades[5];sum<-0;prom<-0.0;

Para indice<-1 Hasta 5 Con Paso 1 HacerEscribir 'Ingrese la edad de la persona ', indice, ': ';Leer aEdades[indice];

FinPara

Para indice<-1 Hasta 5 Con Paso 1 Hacersum <- sum + aEdades[indice];

FinPara

prom<-sum/5;

Escribir 'La edad promedio es: ', prom;FinProceso

El algoritmo anterior utiliza un arreglo llamado aEdades el cual tiene una longitud de 5 elementos para almacenar las edades de 5 personas, por supuesto, se podían haber utilizado 5 variables : edad1, edad2, edad3, edad4 y edad5 para almacenar las edades de las personas. No obstante el trabajar con arreglos le brinda al programador la ventaja de utilizar un mismo identificador (variable) para almacenar todas las edades. Seria muy incomodo utilizar una sentencia como la siguiente:

sum <- edad1 + edad2 + edad3 + edad4 + edad5;

En el ejercicio anterior se utilizo la sentencia de repetición Para por medio de la cual se recorre el arreglo desde el limite_inferior hasta el limite_superior. A continuación se muestran otras formas de llegar a la misma solución utilizando otras sentencias de repetición.

Proceso edad_promedioDimension aEdades[5];sum<-0;prom<-0.0;

indice<-1;Mientras indice <= 5 Hacer

Escribir 'Ingrese la edad de la persona ', indice, ': ';Leer aEdades[indice];indice <- indice + 1;

FinMientras

indice<-1;Mientras indice <= 5 Hacer

sum <- sum + aEdades[indice];indice <- indice + 1;

FinMientras

prom<-sum/5;

Escribir 'La edad promedio es: ', prom;FinProceso

Page 9: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Proceso edad_promedioDimension aEdades[5];sum<-0;prom<-0.0;

indice<-1;

RepetirEscribir 'Ingrese la edad de la persona ', indice, ': ';Leer aEdades[indice];indice <- indice + 1;

Hasta Que indice > 5

indice<-1;Repetir

sum <- sum + aEdades[indice];indice <- indice + 1;

Hasta Que indice > 5

prom<-sum/5;

Escribir 'La edad promedio es: ', prom;FinProceso#

Es muy común que los arreglos sean utilizados dentro de ciclos utilizando la sentencia Para ya que con esta sentencia especificamos un valor inicial, un valor final y el incremento. De esta forma se evita que el ciclo sea infinito, apreciemos el siguiente ejemplo.

indice<-1;Mientras indice <= 5 Hacer

Escribir 'Ingrese la edad de la persona ', indice, ': ';Leer aEdades[indice];

FinMientras

Notemos que en el ejemplo anterior no se realizar el incremento a la variable índice la cual es la encargada de indicar cual es la posición del arreglo donde se almacenará el valor leído, al no realizar el incremento la condición del ciclo Mientras siempre sera verdadera y por ende se convierte en un ciclo infinito.

Al utilizar el ciclo Para, lo mencionado anteriormente no pasa, ejemplo:

//ejemplo de ciclo para con arregloPara indice<-1 Hasta 5 Con Paso 1 Hacer

Escribir 'Ingrese la edad de la persona ', indice, ': ';Leer aEdades[indice];

FinPara

Page 10: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Ejemplo 2Un restaurante desea saber cuales son las opiniones sobre un nuevo plato, esta encuesta se realizara a los empleados (15 personas) del restaurante a los cuales se les pide que indique por medio de un numero del 1 al 10 su opinión. Elabore un algoritmo que pida a las 15 personas las opiniones y luego que presente el resultado.

Datos de entrada– Se necesitan capturar las 15 opiniones, para la cual se a de crear un ciclo que lo haga– Se utilizara un arreglo de diez elementos para crear la frecuencia de opiniones

Datos de salida– Se mostrara la frecuencia que se obtuvo en cada uno de posibles valores

Definición de variables– opiniones, sera un arreglo de 10 elementos. Este almacenará la frecuencia de las opiniones– contador, variable que llevara la secuencia de entrevistados– indice, sera la variable que almacenará la opinión de la persona

ProcesoPasos a seguir para solucionar el problema:

1. Crear un arreglo de 10 elementos2. Iniciar a 0 cada uno de los elementos del arreglo3. Pedir la opinión de las 15 personas4. En la posición correspondiente (entre 1 y 10) se incrementara en uno el valor que este

en esa posición.

Solución

Proceso EncuestaDimension opiniones[10]; //Almacena la frecuencia de opiniones

Para contador<-1 Hasta 10 Con Paso 1 Haceropiniones[contador] <- 0; //Inicializa a todos elementos con el valor 0

FinPara

//Se piden las 15 opinionesPara contador<-1 Hasta 15 Con Paso 1 Hacer

Repetir //Se repite mientras el valor no este en el rangoEscribir 'Ingrese su opinion ingresando un valor en el rango 1-10';Leer indice; //Leer la opinion

Hasta Que indice >= 1 & indice <= 10

opiniones[indice]<- opiniones[indice] + 1; //Incrementa en 1 la opinion

FinPara

Para contador<-1 Hasta 10 Con Paso 1 HacerEscribir 'La opcion ', contador, ' tiene ', opiniones[contador], ' Votos';

FinPara

FinProceso

Page 11: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Atención

Al momento de declara un arreglo, el compilador asignara memoria para que se puedan almacenar cada uno de los elementos del arreglo, pero no se le da valores a dichos elementos. Por tal razón debemos de tener cuidado y no asumir que estos elementos tienen valores.

Por ello en el ejemplo anterior se inicia con el valor cero a cada uno de los elementos del arreglo opiniones.

Ejemplo 3Hacer un algoritmo que cree un vector de N elementos, cuyos valores “numéricos” se ingresaran por teclado, y luego obtenga la suma y el promedio de los elementos ubicados en las posiciones impares del vector.

Datos de entrada – La cantidad de valores que conformarán el vector. – Cada uno de los elementos del vector.

Datos de salida – Suma de los elementos impares. – Promedio de los elementos impares.

Definición de variables – nElementos: Número de elementos del arreglo. – cont: Variable de tipo contador, utilizada como controladora de los ciclo– vector: Nombre del vector. – suma: Sumatoria de los elementos impares del arreglo vector. – prom: Promedio de los elementos impares. – nImpares: Número de elementos impares del arreglo

Proceso Como se conoce la cantidad de valores que se almacenarán en el vector (número de elementos), se puede implementar un esquema cuantitativo. Se hará uso de la estructura PARA en el proceso de entrada y la estructura MIENTRAS para el proceso de cálculo de la suma y el promedio; esto sólo por ilustrar su empleo, ya que indistintamente puede implementarse cualquiera de ellas para los dos procesos. Recuerde: todo lo que hacen las estructuras PARA y REPETIR puede hacerse con la estructura MIENTRAS. Para obtener los elementos impares se inicializa el contador en 1 y se incrementa de dos en dos, hasta que tome un valor que haga falsa la expresión lógica.

Solución:

Proceso sumatoria_imparesEscribir 'Ingrese el numero de elementos';Leer nElementos;

Dimension vector[nElementos]; //Se crea el arreglo

Page 12: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Para cont <- 1 Hasta nElementos Con Paso 1 HacerEscribir 'Ingrese el elemento ', cont, ' : ';Leer vector[cont];

FinPara

cont <- 1;suma <- 0;nImpares <- 0;

Mientras cont <= nElementos Hacersuma <- suma + vector[cont];cont <- cont + 2;nImpares <- nImpares + 1;

FinMientras

prom <- suma / nImpares;

Escribir 'El promedio es: ', prom;FinProceso

Ejemplo 4Elaborar un subprograma que encuentre la posición del mayor elemento de un vector de 10 elementos. Datos de entrada

– Los elementos del vector.

Datos de salida– La posición que ocupa el mayor de los elementos del arreglo.

Definición de variables – vector: Nombre asignado al vector. – posMayor: Lugar dentro del arreglo donde se encuentra el valor mayor. – mayor: Variable que almacena el valor mayor

Proceso Para encontrar la posición que ocupa el mayor elemento del vector es necesario recorrer todo el arreglo mediante un ciclo, asumiendo que el primer elemento es el mayor y se recorre el vector a partir de la posición 2 en adelante, cambiando el valor de la posición cada vez que se encuentre un elemento de mayor peso.

Solución Proceso pos_mayor

Dimension vector[10];

Para indice<-1 Hasta 10 Con Paso 1 HacerEscribir 'Ingrese un valor ';Leer vector[indice];

FinPara

mayor<-vector[1]; //Primer elemento del arreglo posMayor<-1; //Posicion correspondiente el mayor de los elementos

Para indice<-2 Hasta 10 Con Paso 1 Hacer

Page 13: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Si vector[indice] > mayor Entoncesmayor<-vector[indice]; //Primer elemento del arregloposMayor<-indice; //Posicion correspondiente el mayor de los elementos

FinSiFinPara

Escribir 'El valor mayor: ', mayor, ' esta en la posicion ', posMayor;

FinProceso

Ejemplos de arreglos bidimensionales

Se considera arreglo bidimensional a todo aquel que posea en su definición dos más de una longitud, a continuación veremos ejemplos de como acceder a los elementos de un arreglo de dos dimensiones.

Ejemplo 1El presente ejemplo muestra como almacenar elementos dentro de las posiciones de un arreglo de dos dimensiones.

Proceso Almacernar_matrizDimension matriz[3, 4]; //arreglo de dos dimensiones (12 elementos)

Para fila <- 1 Hasta 3 Con Paso 1 HacerPara columna <- 1 Hasta 4 Con Paso 1 Hacer

Escribir 'Ingrese el elemento [', fila, ', ', columna, '] ' ;Leer matriz[fila, columna]; //se almacena el elemento

FinParaFinPara

FinProceso

Si nos imaginamos el como se vería el arreglo matriz gráficamente, seria por ejemplo:

Para poder almacenar un valor en el elemento correspondiente a la fila 2 columna 3, realizamos la siguiente sentencia:

matriz[2,3] <- Valor; //Donde valor corresponde al elemento a almacenar.

Por tal motivo para poder almacenar un elemento dentro de un arreglo dimensional necesitamos dos índices, el primer índice para la primera dimensión (fila) y el segundo índice para segunda dimensión

Page 14: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

(columna). Por ello en el ejemplo anterior tenemos la sentencia:

Leer matriz[fila, columna];

Esta sentencia permite almacenar un elemento dentro del arreglo matriz en la posición dada por los valores de los índices fila y columna.

Ejemplo 2Este muestra como acceder para extracción al contenido de un arreglo de dos dimensiones.

Proceso Almacernar_matrizDimension matriz[3, 4]; //arreglo de dos dimensiones (12 elementos)

Para fila <- 1 Hasta 3 Con Paso 1 HacerPara columna <- 1 Hasta 4 Con Paso 1 Hacer

Escribir 'Ingrese el elemento [', fila, ', ', columna, '] ' ;Leer matriz[fila, columna]; //se almacena el elemento

FinParaFinPara

Para fila <- 1 Hasta 3 Con Paso 1 HacerPara columna <- 1 Hasta 4 Con Paso 1 Hacer

Escribir 'El elemento [', fila, ', ', columna, '] = ', matriz[fila, columna];FinPara

FinParaFinProceso

Asumiendo que tenemos un arreglo como se muestra en la siguiente imagen:

Para presentar el valor del elemento 3, 2 (con valor 10), necesitamos acceder a dicho elemento por medio de los índices 3 (fila) y 2 (columna). Analicemos el siguiente trozo de código:

Para fila <- 1 Hasta 3 Con Paso 1 HacerPara columna <- 1 Hasta 4 Con Paso 1 Hacer

Escribir 'El elemento [', fila, ', ', columna, '] = ', matriz[fila, columna];FinPara

FinPara

Observemos que en el código anterior se presenta en pantalla el valor de un elemento se accede al mismo por medio de los índices fila y columna.

Page 15: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Ejemplo 3Hacer un algoritmo que encuentre e imprima la matriz transpuesta de una matriz MAT.

Datos de entrada– Número de filas de la matriz.– Número de columnas de la matriz– Elementos del arreglo.

Datos de salida– Los elementos de la matriz transpuesta.

Definición de variables– nFilas, número de filas de la matriz.– nColumnas, número de columnas de la matriz.– MAT, nombre de la matriz.– fila, columna, variables de control de ciclos e índices de la matriz.– TMAT, matriz transpuesta de MAT.

ProcesoLa matriz transpuesta de la matriz MAT se encuentra intercambiando las filas por las columnas y las columnas por las filas. Si TMAT es la matriz transpuesta de MAT, implica entonces que TMAT [columna, fila] es igual a MAT [fila, columna]. Si el contenido de MAT es:

Como se puede ver, se invierte el orden de la matriz; es decir, el número de filas de MAT es igual al número de columnas de TMAT y el número de columnas se invierte por el número de filas de TMAT.

SoluciónProceso Matriz_transpuesta

Escribir 'Numero de filas de la matriz ';Leer nFilas;

Escribir 'Numero de columnas de la matriz ';Leer nColumnas;

Dimension MAT[nFilas, nColumnas]; //MatrizDimension TMAT[nColumnas, nFilas]; //Almacenara la matriz transpuesta

//Se piden los datos de la matrizPara fila <- 1 Hasta nFilas Con Paso 1 Hacer

Para columna <- 1 Hasta nColumnas Con Paso 1 HacerEscribir 'Ingrese el elemento [', fila, ', ', columna, '] ' ;Leer MAT[fila, columna]; //se almacena el elemento

FinParaFinPara

Page 16: Universidad Nacional Autónoma de Nicaragua - León Facultad ...Arreglos Lic. Luis Ernesto Díaz Beteta Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando

Para fila <- 1 Hasta nFilas Con Paso 1 HacerPara columna <- 1 Hasta nColumnas Con Paso 1 Hacer

TMAT[columna, fila] <- MAT[fila, columna]; //Se copia el elementoFinPara

FinPara

Para fila <- 1 Hasta nColumnas Con Paso 1 HacerPara columna <- 1 Hasta nFilas Con Paso 1 Hacer

Escribir 'El elemento [', fila, ', ', columna, '] = ', TMAT[fila, columna];FinPara

FinPara

FinProceso

Autoevaluación1.- Según lo explicado, cuales son para usted las ventajas de utilizar arreglos2.- ¿Cuál es la sintaxis de declaración de un arreglo?3.- ¿Qué hace el compilador cuando se declara un arreglo?4.- Explique, que es un índice5.- De acuerdo al siguiente trozo de código, diga si se produce o no un error y porque.

Dimension arreglo[5];arreglo[13]<-3;

6.- De acuerdo al siguiente trozo de código, diga si se produce o no un error y si lo se produce diga cual es la solución.

Dimension arreglo1[5];Dimension arreglo2[5];// ...arreglo2 <- arreglo1;

Resuelva los siguientes ejercicios

1. Realice un algoritmo que pida un arreglo de N elementos y luego que presente dicho arreglo en orden inverso.

Por ejemplo, si tenemos un arreglo llamado vector como se presenta a continuación:

2 4 5 7 1 9

Este se muestra en pantalla en orden inverso, es decir en el orden: 9,1,7,5,4,2

2. Hacer un algoritmo que lea una matriz de NF filas y NC columnas y calcule la suma de las filas y de las columnas, dejando los resultados en dos vectores, uno con la sumas de las filas y otro con la suma de las columnas; imprima los dos vectores.

3. Realice un algoritmo que pida una matriz de nFilas y nColumnas, luego calcule la suma de las diagonales de la matriz y presente en pantalla dicho resultado.