Anda di halaman 1dari 24

UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERA Y ARQUITECTURA ESCUELA DE INGENIERA DE SISTEMAS INFORMTICOS PROGRAMACION I

UNIDAD III ESTRUCTURAS DE DATOS


Objetivo: Conocer el concepto de estructura de datos y aplicar los arreglos (estructura de datos) en el diseo de soluciones. Contenido:

Introduccin Estructuras de Datos Arreglos Vectores Mtodos Bsicos de Ordenamiento Matrices

1 1 2 3 11 16

Introduccin En la mayora de ocasiones, los problemas que tenemos que resolver manejan muchos datos del mismo tipo, por ejemplo los nombres de los estudiantes de una asignatura, los salarios de los empleados de una empresa, las notas del primer examen de IAI115, etc. Con las estructuras repetitivas hemos logrado leer y procesar varios datos de un mismo tipo (edades, pesos, notas, etc.), almacenndolos en una sola variable, un dato a la vez, de tal forma que al finalizar las iteraciones requeridas, en memoria slo se mantiene el ltimo de los datos en la variable. En algunos casos no basta con esto, sino que se hace necesario almacenar en memoria todos los datos para futuros procesamientos, en estas circunstancias es que las estructuras de datos son muy tiles para disear y programar una solucin. Nikklaus Wirth, precursor de Programacin Estructurada, sostuvo que Un programa se obtiene tras el diseo correcto del algoritmo y la eleccin adecuada de la estructura de datos, pensamiento que tiene validez aun hoy en da.

1.. Esttructtura de dattos 1 Es ruc ura de da os


Es una coleccin de datos o elementos organizados de un modo especfico. Dependiendo de la forma en que se almacenan y manejan dentro de la memoria, existen dos tipos de estructuras de datos: estticas y dinmicas. Las estticas son aquellas a las que se les asignan una cantidad fija de memoria cuando se declara la estructura, y no se le puede modificar. Las dinmicas son las que su espacio en memoria puede aumentar o disminuir, durante la ejecucin del programa. Las estructuras de datos estticas, poseen un nmero fijo de elementos. Los ejemplos ms tpicos son los arreglos y los registros de archivos (un registro es una estructura que almacena los datos de una sola entidad). Su mayor desventaja es la necesidad de tener que definir el nmero mximo de elementos que podr tener la estructura. Su mayor ventaja es la rapidez de acceso a cada elemento individual de la estructura. Las estructuras de datos dinmicas, contienen una cantidad de elementos que puede variar durante la ejecucin del programa. Su principal inconveniente es la lentitud en el acceso, ya que normalmente

se realiza de forma secuencial. La ventaja es sin embargo, muy importante, la posibilidad de aumentar o disminuir en tiempo de ejecucin el nmero de elementos que componen la estructura. En esta oportunidad nos dedicaremos a trabajar con estructuras de datos estticas, y entre todas las que existen, lo haremos con los arreglos.

2.. Arregllos o Arrays 2 Arreg os o Arrays Un arreglo es una secuencia de espacios en memoria principal (RAM) a las que: se puede acceder directamente contiene datos del mismo tipo (entero, real, etc.), y pueden ser seleccionados individualmente mediante el uso de subndices. Dicho de otra forma, un arreglo es una estructura de datos de tamao constante, que puede almacenar un conjunto de datos del mismo tipo (homognea), y se caracteriza por: Tener un nico identificador o nombre de variable que representa todos los elementos, y estos se diferencian unos de otros por medio de uno o varios subndices. Permitir el acceso a sus elementos individualmente o a todos ellos, las veces que sean necesarias. Los arreglos se clasifican segn la organizacin que se le den a los datos dentro de la memoria; para ordenarlos se utilizan los subndices y, de acuerdo al nmero de subndices utilizados en el arreglo, hablamos de la dimensin del mismo: 2.1 Unidimensionales, con una sola dimensin o subndice (Vectores)

-2

10

2.2 Bidimensionales, con dos dimensiones o subndices (Matrices o tablas)

1 1 2 3 4

15 1 9 3

8 2 -40 9

-11 7 5 -6

0 1 2 -5

1 0 6 0

2.3 Multidimensionales, con ms de dos dimensiones (3, 4, 5, etc.).

C
1 2 3

0 0 3 0 15 0 -7 3 15 -7 15 -7 5 15 2 -7 2 5 4 2 5 3 2 5 3
2 1 2 1

3.. Vecttores 3 Vec ores


3.1 Concepto Un vector es un espacio en memoria que puede almacenar al mismo tiempo ms de un valor; es decir, es un conjunto de elementos del mismo tipo que comparten un nombre comn. Un vector es un conjunto ordenado y homogneo de datos. Ordenado porque cada elemento del vector (el primer elemento, segundo, tercero,... hasta el ltimo) puede ser identificado, y homogneo porque sus elementos son todos del mismo tipo (enteros o reales o alfanumricos), pero no una combinacin de ambos. Grficamente, un vector se representa como una serie de casillas, donde cada casilla almacena un dato, as:

De igual forma que cualquier variable, un vector debe tener un identificador o nombre.

Aqu hemos llamado A a nuestro vector ejemplo. Los elementos, que estn en el vector A, ocupan una determinada posicin dentro de l:
0 1 2 3 4 5 6 7 8 9

As, el nmero -5 se encuentra en la posicin 2; el 99 en la posicin 9 y el 12 en la posicin 0.

A[2] -5 A[9] 99 A[0] 12

significa que A[2] es igual a -5 significa que A[9] es igual a 99 significa que A[0 ] es igual a 12

Vemos, entonces que un elemento se referencia por el nombre del vector y la posicin que ocupa dentro de l. El nmero que se coloca entre signos de agrupacin (en este caso corchetes) se llama subndice y designa la posicin del elemento en el vector. Los subndices son nmeros enteros positivos, o expresiones matemticas que generen un resultado entero y positivo. La numeracin de los subndices depende mucho del lenguaje de programacin que se utilice, la mayora de lenguajes utilizan el nmero uno (1) para el primer subndice por ejemplo Algol, BASIC, FORTRAN y otros; otros lenguajes como Pascal, pueden utilizar cualquier nmero como primer subndice. Otros lenguajes como Java, C (el que nosotros aplicamos), inician siempre con el subndice cero (0):

T [0]

T[1]

T[2]

T[3]

T [4]

T [5]

T [29]

25.5

29

32

27.4

30

29

31.1

Cada casilla o posicin del vector se comporta como una variable simple o escalar, por lo tanto las acciones que podemos realizar con cada una son las mismas: Almacenar un solo dato. Cambiar su valor, por medio de asignacin, o proceso matemtico, o lectura. Se puede imprimir el dato contenido en ella. Los vectores se pueden representar como una fila o como una columna. Por ejemplo, el vector K de 6 elementos se muestra en la siguiente figura:

K 4
0

0 1

12
1

3
2

6
3

7
4

14
5

2 3 4

Subndice Elementos

K 4 12 3 6 7 14

En resumen, un vector es una secuencia finita de datos (existe un ltimo elemento), de tamao fijo (no se puede variar el nmero mximo de elementos que forman el vector) y homogneos (todos los datos son del mismo tipo). La dimensin de un vector est dada por la cantidad de elementos que contiene y debe ser definida al inicio del flujograma.

3.2. Manejo de Vectores en flujogramas 3.2.a Declaracin


Para representar en flujogramas que se trabajar con un vector lo haremos despus del smbolo de inicio, utilizando un rectngulo de la siguiente forma:

Reservar en memoria el vector: identificador [n]

En donde: Identificador n

: es el nombre que se le ha asignado al vector : es el nmero de posiciones que tendr el vector.

El trabajo o acciones que se pueden realizar con los elementos de un vector pueden realizarse con una, varias o con todas las posiciones del vector:

3.2.b Lectura de Datos


La lectura de un vector generalmente se hace utilizando un contador para manejar los subndices, y una de las estructuras de repeticin vistas anteriormente, tal como se muestra en la figura. Con este trozo de flujograma se leen, uno a uno, los 6 valores que va a tener guardados el arreglo K.

i = 0, 5, 1 Digite el elemento, i, del vector:

K[ i ]

3.2.c Asignacin
Un elemento Varios elementos Todos los elementos
0 1

K[5]=7

K[0]=4 K[3]=3

i = 0, 5, 1

V
v [ i ] = i+1

3 4 5

K [6 ] = 14

1 2 3 4 5 6

14

3.2.d Procesos Matemticos: Con los elementos de un vector podemos realizar los clculos que se requieren. Por ejemplo, tomemos el vector K, con los datos: K 4
0

12
1

3
2

6
3

7
4

14
5

y realicemos los siguientes clculos:

Asigna al elemento K [ 3 ] el resultado de: 2 * 4 + 3 K [ 3 ] = 2*K[ 0 ]+K[ 2 ] Asigna al elemento K [ 6 ] el resultado de: 7 + 14 K [ 6 ] = K[ 4 ] + K[ 5 ]

El vector queda con los siguientes valores: K 4


0

12
1

3
2

11
3

7
4

21
5

3.2.e Procesos Lgicos: Con vectores podemos realizar tambin las comparaciones que sean necesarias:

No

K[ 3 ] >= K[ 4 ]

Si

K[ 3 ] >= v[ 1 ]

Si

K[ 3 ] >= 7.5

Si

K[ 3 ] >= my

Si

3.2.f Impresin de datos Al igual que la lectura de datos, la impresin de un vector se hace utilizando un contador para manejar los subndices, y una de las estructuras de repeticin vistas anteriormente, tal como se muestra en la figura. Con este trozo de flujograma se imprimen, uno a uno, los 6 valores que tiene guardados el arreglo K. i = 0, 5, 1

K[ i ]

3.3. Ejemplo de Problemas que utilizan Vectores 3.3.1 Disee un flujograma que calcule la edad promedio de 10 estudiantes, que muestre la edad
mayor del grupo y el correlativo del estudiante con la mayor edad. I. Planteamiento del Problema Entrada de datos

Salida de datos

Edades de 10 estudiantes

Edad promedio Edad mayor No. del estudiante con mayor edad

II. Anlisis del Problema a) Variables de Salida: Nombre Tipo e_prom Real mayor Entero num Entero

Descripcin Edad promedio de los 10 alumnos Edad mayor del grupo de estudiantes Nmero del estudiante con mayor edad

b) Variables de entrada Nombre Tipo edad[ ] Entero

Descripcin Vector que almacena cada una de las edades de los 10 estudiantes

c) Restricciones: edad[i] >0, donde i = 0, 1, 2, 3, , 9 d) Proceso: sum = 0; mayor = -1 sum =sum + edad[ i ] edad[ i ] > mayor ? SI: mayor = edad[ i ] num = i e_prom = sum/estu e) Variables de proceso Nombre tipo i Entera sum Entera Repetir desde i = 0 hasta i <= 9, con cambios de 1

Descripcin Contador de estudiantes Acumulador de edades Vi = 0; Vc =edad[ i ]; Vf=?

III Diseo de Solucin: Flujograma (En siguiente pgina)

Inicio

Declaracin del vector


edad[ i ]>mayor

Si

Reservar: edad[10] mayor = edad[ i ]

sum = 0;
i = 0, 9, 1

mayor = -1
num = i

digite la edad del estudiante

3 2

edad[ i ]

edad[ i ] <=0 Si Error, intente de nuevo edad[ i ]

e_prom = sum /10

Edad promedio: , e_prom, Edad mayor: , mayor, N del estudiante con la edad mayor: , num

Fin sum = sum + edad[ i ]


1

3.3.2 Disee un programa que lea las notas de 25 estudiantes, las imprima, y adems que calcule la
nota promedio de todos, y cuantos estudiantes obtuvieron una nota mayor que el promedio. I. Planteamiento del Problema Entrada de Datos - Nota de cada estudiante - Nmero de estudiantes (25) Proceso Salida de Datos - Nota de cada estudiante y el correlativo del mismo - Media - Nmero de notas mayores que la media

II. Anlisis del Problema a) Variables de salida: Nombre Tipo Descripcin media Real El promedio de las notas m Entera Nmero de estudiantes con notas mayores que la media, contador i Entera Contador, cuenta el nmero de estudiantes y sus y notas respectivas (correlativo) Recordar que tambin se imprimen la nota de todos los alumnos, notas[i] y su correlativo b) Variables de Entrada: Nombre Tipo Descripcin notas[ ] Real Arreglo que contiene las notas c) Restricciones: (notas [ i ]>=0) && (notas [ i ]<=10) d) Proceso: suma = 0 Repetir desde i = 0 hasta 24 media = suma/num m=0 Repetir desde i = 0 hasta 24 notas [ i ] > media? Si: m = m + 1 suma = suma + notas[i]

e) Variables de proceso: Nombre Tipo Descripcin suma Real Sumatoria de todas las notas

III. Diseo solucin, flujograma:

Inicio
1

Reservar en memoria: notas [ 25 ]

media = suma/25

suma = 0

m=0

i = 0, 24, 1

i = 0, 24, 1

notas[ i ]

notas[ i ] > media

Si
m=m+1

notas[ i ]<=0 && notas[i]>10

Si

notas[ i ]

El Promedio es:, media

suma = suma + notas[ i ]

Nmero de alumnos con nota > que el promedio, m

i+1, notas[ i ]

Fin

Por qu se necesita un arreglo en la solucin anterior? Nos piden que encontremos el nmero de estudiantes que obtuvieron una nota mayor que el promedio, esto slo puede ser evaluado despus de haber calculado el promedio de notas. Para hacer esto, es necesario que tengamos acceso de nuevo a los valores que fueron ledos para las notas y, eso solo se puede lograr manteniendo dichos datos en un vector.

10

4.. METODOS BASIICOS DE ORDENAMIIENTO 4 METODOS BAS COS DE ORDENAM ENTO


Cuando trabajamos con vectores es porque tenemos varios datos y muchas veces necesitamos buscar o ubicar un dato especfico y para facilitarnos esta tarea es muy conveniente mantener nuestro vector ordenado. El propsito fundamental de mantener estructura de datos ordenadas es facilitar la bsqueda de elementos. Es incuestionable que un elemento perteneciente a una estructura determinada, es mucho ms fcil de encontrar si dicha estructura est ordenada, por lo tanto, la importancia de la ordenacin radica en la minimizacin de los tiempos de bsqueda de los elementos de una estructura si todos estn ordenados. El ordenamiento se organiza en funcin de una propiedad o criterio determinados. Debe tenerse en cuenta que pueden variar los criterios para clasificar e, incluso, el conjunto de elementos sobre el que aplicar una clasificacin pero la regla que se aplica para ordenar no cambia. Quiere esto decir que la misma regla sirve para ordenar conjuntos diferentes, variando o no los criterios de ordenacin que se apliquen.

Los elementos de una estructura pueden estar clasificados ordenados de forma: Ascendente, si los elementos que forman la estructura de datos estn organizados de menor a mayor. Descendente, cuando los elementos se encuentran clasificados de mayor a menor. En ambos casos los valores repetidos, si existen, quedan en posiciones contiguas. En esta unidad de la asignatura, se estudiarn dos de los algoritmos de ordenamiento que existen: bubble sort y el de insercin.

4.1 Mtodo de Intercambio directo o Mtodo de la Burbuja (Bubble Sort)


La caracterstica que distingue particularmente a la ordenacin por intercambio es que cada iteracin pone el elemento ms pequeo no ordenado en su lugar correcto. Tambin podra implementarse colocando el elemento mayor en su lugar correcto, conocindose el algoritmo como de la plomada, es decir hundiendo el elemento de ms peso. En ambos casos, considerando la ordenacin de forma ascendente.

11

Inicio Reservar: a[5]

MTODO DE ORDENAMIIENTO:: MTODO DE ORDENAM ENTO BUBBL E S O RT BUBBL E S O RT


Lectura e impresin del vector desordenado

i = 0, 4, 1

a[i] a[i]

Vector ordenado Ascendentemente


Ordenamiento del vector c=1 i = 0, 4, 1

Mientras ( c != 0)
c=0 i = 0, 4-1, 1

A
a[ i ]

Fin NO SI

a[i]> a [ i +1]

x=a[i] a [ i ] = a [ i+1 ] a [ i+1 ] = x c=1

El algoritmo anterior ordena de mayor a menor, si se quiere un ordenamiento descendente solo hay que cambiar el signo de la condicin, as:

12

...

No

a [ i ] < a [ i+1 ]

Si x = a[ i ] a [ i ] = a [ i+1 ] a [ i+1] = x c=1

...

En la siguiente versin se aplic modularidad, al mismo algoritmo de ordenamiento, disendose dos mdulos, el principal y otro llamado orden. TOP-DOWN

principal

orden

Mdulo Principal: Lee e imprime el vector original, es decir desordenado. Mdulo Orden: Recibe el vector original, lo ordena y lo imprime.

13

INICIO

Declaracin de la constante n=5


Reservar: a[n] Lectura del vector i = 0, n-1, 1

Declaracin del vector

orden ( v [ ], n1 ) c=1
Mientras ( c != 0)

c=0 a[i]
i = 0, n1 - 2, 1

VECTOR ORIGINAL DESORDENADO

NO
v[i]> v [ i +1]

SI

i = 0, n-1, 1

x=v[i] v [ i ] = v [ i+1 ] v [ i+1 ] = x c=1

a[i]

orden ( a ) FIN VECTOR ORDENADO ASCENDENTEMENTE i = 0, n1 - 1, 1

v[i]

RETORNAR

14

4.2. Mtodo de Insercin. El mtodo de ordenacin por insercin es similar al proceso tpico de ordenar tarjetas de nombres por orden alfabtico, tambin las cartas de una baraja; la cual consiste en insertar un nombre en su posicin correcta dentro de una lista que ya est ordenada. El algoritmo contempla los siguientes pasos: 1. El primer elemento a[0] se considera ordenado, es decir, la lista inicial consta de un elemento. 2. Se inserta a[1] en la posicin correcta delante o detrs de a[0], dependiendo de que sea menor o mayor. 3. Por cada lazo o iteracin i (desde i =1 hasta n-1) es explora la sublista a[i-1]...a[0] buscando la posicin correcta de insercin; a la vez se mueve hacia abajo (a la derecha en la sublista) una posicin todos los elementos mayores que el elemento a insertar a[i], para dejar vaca esa posicin. 4. Insertar el elemento en la posicin correcta. La porcin del diagrama de flujo correspondiente al mtodo de insercin es:

DESDE i = 1 HASTA i<n, 1

j=i

aux=a[i]

MIENTRAS j>0 && aux < a[ j-1]

a[ j ] = a[ j-1]

j=j-1

a[ j ] = aux

15

5.. Mattriices 5 Ma r c e s 5.1. Concepto


Un arreglo bidimensional o matriz es un conjunto de datos homogneos (todos del mismo tipo), cada uno de los cuales debe referenciarse por dos subndices. Los subndices determinan la posicin de una fila y una columna.

En este ejemplo tenemos una matriz de dimensin M * N, en donde M es el nmero de filas y N el nmero de columnas. Aqu M=5 y N=6. El nmero total de elementos de la matriz ser entonces 5*6 = 30. De la misma forma que los vectores, una matriz debe tener un nombre. Llamaremos MAT a nuestra matriz ejemplo y determinaremos la posicin de algunos de sus elementos. MAT ser de tipo alfanumrico.

La matriz MAT est definida con 5 filas y 6 columnas. Una vez que la matriz contenga datos para referirnos a un elemento debemos conocer en que fila y que columna reside ese elemento; como vimos en los vectores la numeracin de los subndices depende del lenguaje de programacin, por lo que nosotros iniciamos con subndice cero (0), tanto en las filas como en las columnas, por ejemplo:

16

0 0

A L O

MAT

1 2 3

Para asignarle esos valores a la matriz se puede referenciar cada casilla o posicin escribiendo el nmero de fila y columna entre corchetes por separada y unos despus del otro, iniciando con la fila requerida, de est manera: MAT [nmero de fila][nmero de columna] = dato Por ejemplo: MAT [0][0] = MAT [1][1] = MAT [2][4]= MAT [3][1] = A L O

5.2. Manejo de Matrices en Flujogramas 5.2.a Declaracin


Para representar en flujogramas que se trabajar con una matriz lo haremos utilizando un rectngulo de la siguiente forma:

Reservar en memoria la matriz: identificador [M][N]

En donde, - identificador: es el nombre que se le ha asignado a la matriz - M: es el nmero de filas que tendr la matriz. - N: es el nmero de columnas que tendr la matriz.

5.2.b Lectura de Datos en una Matriz


La lectura de datos se realiza, por medio de dos estructuras controladas por un contador; una que recorra las filas y otra las columnas. En el siguiente ejemplo se leen un conjunto de 12 datos (3X4=12) en una matriz MAT con 3 filas y 4 columnas.

17

INICIO

Reservar

MAT[ 3 ][ 4 ]
f = 0, 2, 1 c = 0, 3, 1

MAT [ f ] [ c ]

Datos a utilizar: 2, 6, 3, 8, 4, 9, 7, 2, 3, 5, 1, 6

FIN

En este ejemplo, la matriz se lee fila por fila, controladas por la variable f (que toma valores desde 1 hasta 3) y en cada una se inician las columnas controladas por la variable c (que toma valores desde 1 hasta 4). La lectura y cambios de subndice se muestran a continuacin: fila 0 0 0 0 1 1 1 1 2 2 2 2 columna 0 1 2 3 0 1 2 3 0 1 2 3 Lee MAT [ 0 ] [ 0 ] MAT [ 0 ] [ 1 ] MAT [ 0 ] [ 2 ] MAT [ 0 ] [ 3 ] MAT [ 1 ] [ 0 ] MAT [ 1 ] [ 1 ] MAT [ 1 ] [ 2 ] MAT [ 1 ] [ 3 ] MAT [ 2 ] [ 0 ] MAT [ 2 ] [ 1 ] MAT [ 2 ] [ 2 ] MAT [ 2 ] [ 3 ] Datos 2 6 3 8 4 9 7 2 3 5 1 6 MAT
0 0 1 2 3

El resultado es: MAT


0 0 1 2 1 2 3

2 4 3

6 9 5

3 7 1

8 2 6

El recorrido de una matriz, que se lee fila por fila desde la primera columna hasta la ltima, se hace de arriba hacia abajo (filas) y de izquierda a derecha. Tambin se puede hacer el recorrido de la matriz por columnas. En este caso el ciclo ms externo tiene que manejar el subndice de las columnas y el ciclo ms interno el de las filas, como se muestra a continuacin.

18

INICIO

Reservar

MAT [ 3 ][ 4 ]

c = 0, 4, 1

f = 0, 3, 1

MAT [ f ] [ c ]

Datos a utilizar: 2, 6, 3, 8, 4, 9, 7, 2, 3, 5, 1, 6

FIN

En este caso, la matriz se lee columna por columna, controladas por la variable c (que toma valores desde 0 hasta 3) y en cada una se inician las filas controladas por la variable f (que toma valores desde 0 hasta 2). La lectura y cambios de subndice se muestran a continuacin:

columna 0 0 0 1 1 1 2 2 2 3 3 3

fila 0 1 2 0 1 2 0 1 2 0 1 2

Lee MAT [ 0 ] [ 0 ] MAT [ 1 ] [ 0 ] MAT [ 2 ] [ 0 ] MAT [ 0 ] [ 0 ] MAT [ 1 ] [ 1 ] MAT [ 2 ] [ 1 ] MAT [ 0 ] [ 1 ] MAT [ 1 ] [ 1 ] MAT [ 2 ] [ 2 ] MAT [ 0 ] [ 2 ] MAT [ 1 ] [ 2 ] MAT [ 2 ] [ 2 ]

Datos 2 6 3 8 4 9 7 2 3 5 1 6

MAT
0 0 1 2 3

MAT
0 0 1 2 1 2 3

2 6 3

8 4 9

7 2 3

5 1 6

Note que los valores quedan almacenados en diferentes posiciones dentro de la matriz, a pesar que son los mismos datos en ambas lecturas

19

5.2.c Asignacin de datos en una matriz

...
1

A[0][0]=5 A [ 1 ] [ 1 ] = -1 A[0][1]=1 A [ 2 ] [ 0 ] = -2 A[1][0]=8 A [ 2 ] [ 1 ] =15


1 0 1 2

A
0 1

5 8 -2.

1 -1 15

...
5.2.d Proceso (Matemticos y lgicos) Matemticos Lgicos

Asigna al elemento A[2][0] el resultado de: 5 + 8 (= 13)

A[2][0]= A[0][0] +A[1][0]


Asigna al elemento A[2][1] el resultado de: 1 * (-1) (= -1)

Compara -13 >= -1

A[2][1]= A[0][1] *A[1][1]

NO

A[ 2 ] [ 0 ] >= A[1][1]

SI

0 0

A:

1 2

5 8 13

1 -1 -1

5.2.e) Salida de datos


La salida de datos, al igual que la lectura de datos, se realiza por medio de dos estructuras controladas por un contador; una que recorra las filas y otra las columnas. En el siguiente porcin de flujograma se imprimen un conjunto de 12 datos (3X4=12) en una matriz MAT con 3 filas y 4 columnas.

20

...
f = 0, 2, 1 c = 0, 3, 1 MAT [ f ] [ c ]

...
En este ejemplo, la matriz se imprime fila por fila, controladas por la variable f (que toma valores desde 0 hasta 2) y en cada una se inician las columnas controladas por la variable c (que toma valores desde 0 hasta 3).

5.3.

Ejemplo de Uso de Matrices

5.3.1. Disee un flujograma que permita calcular la suma de los elementos positivos y la suma de
los elementos negativos de una tabla o matriz T, cuyas dimensiones no excedan de 100. I. Planteamiento del Problema Entrada de Datos - Nmero de filas de la matriz - Nmero de columnas de la matriz - Valor de cada elemento de la matriz Proceso Salida de Datos - Suma de los elementos positivos de la matriz - Suma de los elementos negativos de la matriz

II. Anlisis del Problema a) Variables de salida: Nombre Tipo Descripcin SNP Entera Suma de los elementos positivos SNN Entera Suma de los elementos negativos b) Variables de entrada: Nombre Tipo T[][] Entera M Entera N Entera

Descripcin Matriz de nmeros El nmero de filas de la matriz El nmero de columnas de la matriz.

c) Restricciones:

El nmero de filas y columnas no pueden ser ms de 100: (M>0 && M <= 100) && (N>0 && N <= 100)

21

d) Proceso:

SNP = 0 ; SNN = 0 ; Repetir desde c = 0 hasta c =N-1

T [ f ][ c ] > 0 ? SI : SNP = SNP + T [ f ][ c ] NO : T [ f ][ c ] < 0 ? SI : SNN = SNN + T [ f ][ c ]

Repetir desde f = 0 hasta f = M-1

e) Variables de proceso: Nombre Tipo f Entera c Entera

Descripcin Contador de filas Contador de columnas

III. Diseo de la solucin. Flujograma. Inicio


Reservar memoria para T [ 100 ] [ 100 ] Dimensin mxima: 100x100
1

SNP = 0 SNN = 0
f = 0, M-1, 1 c = 1, N-1, 1

M, N
Mientras (M<1 && M>100 ) || (N<1 && N>100)

T[f][c]>0 T[f][c] <0


Si

Si

SNP=SNP+T[f][c]

Los nmeros deben ser >0 y <= 100

SNN=SNN+T[f][c]

M, N
Suma de positivos:, SNP
f = 0, M-1, 1 c = 0, N-1, 1

Suma de negativos:, SNN

T[ f ][ c ]

Fin

22

5.3.2. Disee un flujograma que permita leer 25 datos enteros, e imprimirlos en forma de
tabla o matriz (fila por fila). I. Planteamiento del Problema Entrada de Datos - Valor de cada elemento de la Matriz (25 elementos, en una matriz 5X5) II. Anlisis del Problema a) Variables de salida: No se usan, se imprimen los mismos datos de entrada b) Variables de entrada: Nombre Tipo tabla [ ] [ ] Entera Proceso Salida de Datos - Impresin de la matriz en formato de tabla, fila por fila

Descripcin 25 Nmeros guardados como una matriz de 5 filas y 5 columnas La cantidad de filas (5) y de columnas (5) se consideran constantes y, se trabajaran como simblocas c) Restricciones: No se usan

f) Constantes con nombre: Nombre Tipo Descripcin filas Entera El nmero de filas de la matriz col Entera El nmero de columnas de la matriz. d) Proceso: filas = 5 ; col = 5 ;

Valor 5 5

//constantes con nombre Repetir desde j = 1 hasta col

imprimir tabla [ i ] [ j ] j == col ? SI : //pasar a la siguiente fila //imprimir fila vaca

Repetir desde i = 1 hasta filas

e) Variables de proceso: Nombre Tipo Descripcin i Entera Contador de filas j Entera Contador de columnas

23

III. Diseo de la solucin. Flujograma. Inicio filas = 5 col = 5 Reservar memoria para tabla [filas] [columnas]
LECTURA DE LA MATRIZ FILA POR FILA

i = 1, filas, 1 j = 1, col, 1

Tabla[i][j]

j==col

i = 1, filas, 1

\n \n
j = 1, col, 1

tabla [ i ][ j ]

Fin
1

Material editado por Ing. Carolina Ayala e Ing. Milagro Castillo P. ciclo II 2011

24

Anda mungkin juga menyukai