Está en la página 1de 24

1

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 1
Estructuras de Datos 1
Arreglos 2
Vectores 3
Mtodos Bsicos de Ordenamiento 11
Matrices 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
11.
.. E
EEs
sst
ttr
rru
uuc
cct
ttu
uur
rra
aa d
dde
ee d
dda
aat
tto
oos
ss
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
2
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
22.
.. A
AAr
rrr
rre
eeg
ggl
ll o
oos
ss o
oo A
AAr
rrr
rra
aay
yys
ss
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.2 Bidimensionales, con dos dimensiones o subndices (Matrices o tablas)
2.3 Multidimensionales, con ms de dos dimensiones (3, 4, 5, etc.).
1 2 3 4 5
B
1
15 8 -11 0 1
2
1 2 7 1 0
3
9 -40 5 2 6
4
3 9 -6 -5 0
1 2 3 4 5 6
A
2 0 8 -2 1 10
4
3
2
1 1 2
C
1
2
3
3 0
15 -7
2 5
3 0
15 -7
2 5
3 0
15 -7
2 5
3 0
15 -7
2 5
3
3
33.
.. V
VVe
eec
cct
tto
oor
rre
ees
ss
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:
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 significa que A[2] es igual a -5
A[9] 99 significa que A[9] es igual a 99
A[0] 12 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):
0 1 2 3 4 5 6 7 8 9
4
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
K
Subndice
Elementos
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:
En donde:
Identificador : es el nombre que se le ha asignado al vector
n : 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:
0
4
1
12
2
3
3
6
4
7
5
14
4 12 3 6 7 14
0 1 2 3 4 5
Reservar en memoria el vector:
identificador [n]
5
i =0, 5, 1
K[ i ]
Digite el
elemento, i, del
vector:
3.2.c Asignacin
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
y realicemos los siguientes clculos:
4 12 3 6 7 14
0 1 2 3 4 5
K [ 3 ] = 2*K[ 0 ]+K[ 2 ]
K [ 6 ] = K[ 4 ] + K[ 5 ]
Asigna al elemento
K [ 3 ] el resultado
de: 2 * 4 + 3
Asigna al elemento
K [ 6 ] el resultado
de: 7 + 14
Todos los
elementos
V
K [ 0 ] = 4
K [ 3 ] = 3
K [6 ] = 14
v [ i ] =i+1
0 1 2 3 4 5 6
4 3 7 14
K [ 5 ] = 7
i =0, 5, 1
K
0
1
1
2
2
3
3
4
4
5
5
6
Varios elementos Un elemento
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.
6
El vector queda con los siguientes valores:
K
3.2.e Procesos Lgicos: Con vectores podemos realizar tambin las
comparaciones que sean necesarias:
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.
4 12 3 11 7 21
0 1 2 3 4 5
K[ i ]
i = 0, 5, 1
K[ 3 ] >= K[ 4 ]
Si No
K[ 3 ] >=v[ 1 ]
Si
K[ 3 ] >=my
Si
K[ 3 ] >=7.5
Si
7
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 Descripcin
e_prom Real Edad promedio de los 10 alumnos
mayor Entero Edad mayor del grupo de estudiantes
num Entero Nmero del estudiante con mayor edad
b) Variables de entrada
Nombre Tipo Descripcin
edad[ ] Entero 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 ? Repetir desde i = 0
SI: mayor = edad[ i ] hasta i <= 9, con cambios de 1
num = i
e_prom = sum/estu
e) Variables de proceso
Nombre tipo Descripcin
i Entera Contador de estudiantes
sum Entera Acumulador de edades Vi = 0; Vc =edad[ i ]; Vf=?
III Diseo de Solucin: Flujograma (En siguiente pgina)
8
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.
Si
Inicio
Reservar: edad[10]
sum = 0; mayor =-1
Declaracin del vector
mayor = edad[ i ]
i =0, 9, 1
edad[ i ]
sum = sum + edad[ i ]
edad[ i ] <=0
edad[ i ]
edad[ i ]>mayor
num = i
1
e_prom = sum /10
Edad promedio: , e_prom, Edad
mayor: , mayor,
N del estudiante con la edad
mayor: , num
Fin
Si
1
2
2
3
3
Error,
intente de
nuevo
digite la
edad del
estudiante
Proceso Entrada de Datos Salida de Datos
- Nota de cada estudiante
- Nmero de estudiantes (25)
- Nota de cada estudiante y el
correlativo del mismo
- Media
- Nmero de notas mayores que la
media
I. Planteamiento del Problema
9
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
e) Variables de proceso:
Nombre Tipo Descripcin
suma Real Sumatoria de todas las notas
III. Diseo solucin, flujograma:
suma = suma + notas[i]
notas [ i ] > media?
Si: m = m + 1
10
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.
Inicio
Reservar en memoria:
notas[ 25 ]
i =0, 24, 1
notas[ i ]
i+1, notas[ i ]
m = m + 1
Si
i =0, 24, 1
notas[ i ] >
media
1
El Promedio
es:, media
Nmero de alumnos con
nota > que el promedio, m
Fin
notas[ i ]<=0
&& notas[i]>10
notas[ i ]
Si
1
m = 0
media = suma/25
suma = 0
suma =suma + notas[ i ]
11
4
44.
.. M
MME
EET
TTO
OOD
DDO
OOS
SS B
BBA
AAS
SSI
II C
CCO
OOS
SS D
DDE
EE O
OOR
RRD
DDE
EEN
NNA
AAM
MMI
II E
EEN
NNT
TTO
OO
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.
12
El algoritmo anterior ordena de mayor a menor, si se quiere un ordenamiento descendente solo hay
que cambiar el signo de la condicin, as:
Inicio
Reservar:
a [ 5 ]
i =0, 4, 1
a [ i ]
a [ i ]
A
A
i =0, 4, 1
Fin
a[ i ]
Mientras
( c != 0)
c = 1
c = 0
i =0, 4-1, 1
a [ i ] >
a [ i +1]
x = a [ i ]
a [ i ] = a [ i+1 ]
a [ i+1 ] = x
c = 1
SI NO
Ordenamiento del
vector
Lectura e impresin del
vector desordenado
Vector ordenado
Ascendentemente
M
MM
T
TTO
OOD
DDO
OO D
DDE
EE O
OOR
RRD
DDE
EEN
NNA
AAM
MMI
II E
EEN
NNT
TTO
OO:
::
B
BBU
UUB
BBB
BBL
LLE
EE S
SSO
OOR
RRT
TT
13
En la siguiente versin se aplic modularidad, al mismo algoritmo de ordenamiento, disendose dos
mdulos, el principal y otro llamado orden.
Mdulo Principal: Lee e imprime el vector original, es decir desordenado.
Mdulo Orden: Recibe el vector original, lo ordena y lo imprime.
orden
principal
TOP-DOWN
. . .
a [ i ] <a [ i+1 ]
x = a[ i ]
a [ i ] = a [ i+1 ]
a [ i+1] = x
c = 1
No Si
. . .
14
orden ( a)
FIN
Mientras
( c != 0)
c = 1
c = 0
i =0, n1- 2, 1
v [ i ] >
v [ i +1]
x = v [ i ]
v [ i ] = v [ i+1 ]
v [ i+1 ] = x
c = 1
SI NO
INICIO
Reservar:
a [ n ]
i =0, n-1, 1
a [ i ]
n = 5
Declaracin de
la constante
Lectura
del vector
i =0, n-1, 1
a [ i ]
VECTOR ORIGINAL
DESORDENADO
Declaracin
del vector
orden ( v [ ], n1 )
RETORNAR
i =0, n1- 1, 1
v [ i ]
VECTOR ORDENADO
ASCENDENTEMENTE
15
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
F
F
j=i
aux=a[i]
MIENTRAS
j>0 && aux < a[ j-1]
a[ j ] = a[ j-1]
j = j - 1
a[ j ] = aux
16
5
55.
.. M
MMa
aat
ttr
rri
ii c
cce
ees
ss
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:
17
MAT
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] = A
MAT [1][1] = L
MAT [2][4]=
MAT [3][1] = 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:
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.
0 1 2 3 4
0
A
1
L
2

3
O
Reservar en memoria la
matriz: identificador [M][N]
18
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:
M A T
El resultado es:
MAT
0 1 2 3
0
2 6 3 8
1
4 9 7 2
2
3 5 1 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.
fila columna Lee Datos
0 0 MAT [ 0 ] [ 0 ] 2
0 1 MAT [ 0 ] [ 1 ] 6
0 2 MAT [ 0 ] [ 2 ] 3
0 3 MAT [ 0 ] [ 3 ] 8
1 0 MAT [ 1 ] [ 0 ] 4
1 1 MAT [ 1 ] [ 1 ] 9
1 2 MAT [ 1 ] [ 2 ] 7
1 3 MAT [ 1 ] [ 3 ] 2
2 0 MAT [ 2 ] [ 0 ] 3
2 1 MAT [ 2 ] [ 1 ] 5
2 2 MAT [ 2 ] [ 2 ] 1
2 3 MAT [ 2 ] [ 3 ] 6
0 1 2 3
0
1
2
INICIO
Reservar MAT[ 3][ 4]
MAT [ f ] [ c ]
FIN
f =0, 2, 1
c =0, 3, 1
Datos a utilizar:
2, 6, 3, 8, 4, 9,
7, 2, 3, 5, 1, 6
19
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:
MAT
MAT
0 1 2 3
0
2 8 7 5
1
6 4 2 1
2
3 9 3 6
Note que los valores quedan almacenados en diferentes posiciones dentro de la matriz, a pesar que
son los mismos datos en ambas lecturas
0 1 2 3
0
1
2
columna fila Lee Datos
0 0 MAT [ 0 ] [ 0 ] 2
0 1 MAT [ 1 ] [ 0 ] 6
0 2 MAT [ 2 ] [ 0 ] 3
1 0 MAT [ 0 ] [ 0 ] 8
1 1 MAT [ 1 ] [ 1 ] 4
1 2 MAT [ 2 ] [ 1 ] 9
2 0 MAT [ 0 ] [ 1 ] 7
2 1 MAT [ 1 ] [ 1 ] 2
2 2 MAT [ 2 ] [ 2 ] 3
3 0 MAT [ 0 ] [ 2 ] 5
3 1 MAT [ 1 ] [ 2 ] 1
3 2 MAT [ 2 ] [ 2 ] 6
INICIO
Reservar MAT[ 3][ 4]
MAT [ f ] [ c ]
FIN
c =0, 4, 1
f =0, 3, 1
Datos a utilizar:
2, 6, 3, 8, 4, 9, 7, 2,
3, 5, 1, 6
20
5.2.c Asignacin de datos en una matriz
. . .
. . .
5.2.d Proceso (Matemticos y lgicos)
Matemticos
0 1
0
5 1
1
8 -1
2
13 -1
Lgicos
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.
A:
A[2][0]= A[0][0] +A[1][0]
A[2][1]= A[0][1] *A[1][1]
Asigna al elemento
A[2][0] el resultado
de: 5 + 8 (= 13)
Asigna al elemento
A[2][1] el resultado
de: 1 * (-1) (= -1)
A[ 2 ] [ 0 ] >=
A [ 1 ] [ 1 ]
SI NO
Compara
-13 >=-1
A [ 0 ] [ 0 ] = 5
A [ 0 ] [ 1 ] = 1
A [ 1 ] [ 0 ] = 8
A [ 1 ] [ 1 ] = -1
A [ 2 ] [ 0 ] = -2
A [ 2 ] [ 1 ] =15
1
A
0 1
0
5 1
1
8 -1
2
-2. 15
1
21
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
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 Descripcin
T [ ] [ ] Entera Matriz de nmeros
M Entera El nmero de filas de la matriz
N Entera 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)
f =0, 2, 1
c =0, 3, 1
MAT [ f ] [ c ]
Proceso Entrada de Datos Salida de Datos
- Nmero de filas de la matriz
- Nmero de columnas de la
matriz
- Valor de cada elemento de la matriz
- Suma de los elementos positivos de
la matriz
- Suma de los elementos negativos
de la matriz
I. Planteamiento del Problema
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.
. . .
. . .
22
d) Proceso: SNP = 0 ; SNN = 0 ;
T [ f ][ c ] > 0 ?
SI : SNP = SNP + T [ f ][ c ]
NO : T [ f ][ c ] < 0 ?
SI : SNN = SNN + T [ f ][ c ]
e) Variables de proceso:
Nombre Tipo Descripcin
f Entera Contador de filas
c Entera Contador de columnas
III. Diseo de la solucin. Flujograma.
Si
Si
Inicio
Reservar memoria para
T [ 100 ] [ 100 ]
Dimensin
mxima:
100x100
M, N
Los nmeros
deben ser >0 y
<= 100
T[ f ][ c ]
f =0, M-1, 1
Mientras (M<1 &&
M>100 ) || (N<1 &&
N>100)
M, N
c =0, N-1, 1
1
f =0, M-1, 1
c = 1, N-1, 1
T[f][c]>0
T[f][c] <0
SNN=SNN+T[f][c]
SNP=SNP+T[f][c]
Suma de
positivos:, SNP
Suma de
negativos:, SNN
Fin
SNP = 0
SNN = 0
1
Repetir desde
f =0 hasta f = M-1
Repetir desde
c =0 hasta c =N-1
23
II. Anlisis del Problema
a) Variables de salida: No se usan, se imprimen los mismos datos de entrada
b) Variables de entrada:
Nombre Tipo Descripcin
tabla [ ] [ ] Entera 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 Valor
filas Entera El nmero de filas de la matriz 5
col Entera El nmero de columnas de la matriz. 5
d) Proceso:
filas = 5 ; col = 5 ; //constantes con nombre
imprimir tabla [ i ] [ j ]
j == col ?
SI : //pasar a la siguiente fila
//imprimir fila vaca
e) Variables de proceso:
Nombre Tipo Descripcin
i Entera Contador de filas
j Entera Contador de columnas
Proceso Entrada de Datos Salida de Datos
- Valor de cada elemento de la
Matriz (25 elementos, en una
matriz 5X5)
I. Planteamiento del Problema
Repetir desde
i = 1 hastafilas
Repetir desde
j = 1 hasta col
- Impresin de la matriz en formato
de tabla, fila por fila
5.3.2. Disee un flujograma que permita leer 25 datos enteros, e imprimirlos en forma de
tabla o matriz (fila por fila).
24
III. Diseo de la solucin. Flujograma.
Inicio
Reservar memoria para
tabla [filas] [columnas]
LECTURA DE
LA MATRIZ FILA
POR FILA
filas = 5
col = 5
1
tabla [ i ][ j ]
i = 1, filas, 1
j = 1, col, 1
1
i = 1, filas, 1
j = 1, col, 1
j==col
\n \n
Tabla[i][j]
Fin
Material editado por Ing. Carolina Ayala e
Ing. Milagro Castillo P. ciclo II 2011

También podría gustarte