You are on page 1of 48

ALGORITMOS Y

ESTRUCTURAS DE DATOS

PARTE II

Profesora: Ing. Irma Inga Serrano
2012
UNIVERSIDAD NACIONAL DE INGENIERIA
Facultad de Ingeniera Industrial y de Sistemas
Area de Sistemas Computacin e Informtica
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

IV. SUBPROGRAMAS Y
RECURSIVIDAD
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

SUBPROGRAMAS
Para resolver un problema complejo se debe descomponerlo en
subproblemas (programacin modular).

Para solucionar un subproblema se disea un subprograma.
Subprograma: programa que realiza una tarea especfica.

Existe un programa principal que enlaza a los subprogramas y
les transfiere el control para que se ejecuten

Caractersticas de un subprograma
1.- Tiene un nombre para invocarlo
2.- El subprograma invocado recibe el control y se ejecuta. Cuando
termina su tarea devuelve el control a quien lo invoc.
3.- La cabecera del subprograma le permite comunicarse con los
programas o subprogramas que lo invoquen.


U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S


VARIABLES GLOBALES: son variables declaradas en el
programa principal y son reconocidas por todos los
subprogramas.

VARIABLES LOCALES: son variables declaradas dentro de
los subprogramas y solo es reconocida por sta.

TIPOS DE SUBPROGRAMAS
1.- Funciones
2.- Procedimientos

Ubicacin:
Generalmente los subprogramas se escriben despus del
programa principal.

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

FUNCIONES
Caractersticas:
Subprograma que recibe uno o mas datos de entrada y
devuelve un solo resultado ( un dato entero, real, lgico,
carcter o cadena)
Su nombre est asociado al resultado que devuelve

Formato General de una Funcin:
tipo-de-dato Funcin nombre-funcin (lista de parmetros)
(declaracin de constantes y variables locales)
Inicio
acciones de la funcin
devolver (variable o expresin)
Fin-funcin

Lista de parmetros (formales): lista de variables (tipo de dato
y nombre) para datos de entrada.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Cmo funcionan?

1.- Un programa o subprograma invoca a la funcin de esta manera:

nombre-funcin (lista de argumentos)
Lista de argumentos: lista de datos de entrada (constantes,
variables, expresiones) que se le entrega a la funcin para que
entregue un resultado.

2.- La funcin recibe los datos de entrada (argumentos) y los asigna
a los parmetros formales uno a uno de izquierda a derecha.
Entonces:
Debe haber correspondencia entre parmetros formales y
argumentos tanto en el tipo de dato como en el nmero de ellos.

3.- La funcin ejecuta sus acciones y devuelve el resultado a quien lo
invoc
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROBLEMAS DE FUNCIONES

1.- Disee un algoritmo que reciba los nmeros enteros
positivos n y m (nm) y calcule la combinacin de n en m

2.-Se tienen los conjuntos A y B de n y m elementos
respectivamente (n 20, m 20) . Disee un algoritmo que
almacene los datos de A y B y luego verifique si A est
contenido en B .

3.- Disee un subprograma que reciba un nmero
hexadecimal de maximo 15 caracteres y devuelva su
equivalente en el sistema decimal

4.- Disee un subprograma que reciba una lnea de texto y
nos retorne el nmero de palabras que tienen por lo menos 3
vocales diferentes.

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROCEDIMIENTOS
Procedimiento es un subprograma que:
puede recibir cero, uno o mas datos de entrada y
puede devolver cero, uno o mas datos de salida
Su nombre solo es utilizado para invocarlo

Formato General de un Procedimiento:

Procedimiento nombre-procedimiento (lista de parmetros)
(declaracin de constantes y variables locales)
Inicio
acciones del procedimiento
Fin-procedimiento

Lista de parmetros (formales): lista de variables (tipo de dato y
nombre) para entrada y/o salida de datos.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Parmetros de valor y de referencia
Los parmetros de un subprograma que permiten el ingreso
de datos , pueden ser de dos tipos:
Parmetros de valor
Parmetros de referencia

Parmetro de valor:
Es la variable en la que se copia el dato del argumento

Parmetro de referencia:
Es la variable que hace referencia a la misma direccin del
argumento. Esto significa que el argumento y el parmetro
son dos nombres de un mismo espacio en la memoria (tienen
la misma direccin).
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROBLEMAS

1.- Disee un algoritmo que almacene los pesos de n alumnos
(n<=100) en un vector A, luego verifique si la suma de los
pesos de la primera mitad de A es igual a la suma de los
pesos de la segunda mitad. Si la verificacin resulta
verdadera, el algoritmo debe mostrar el mensaje pesos
balanceados de lo contrario debe mostrar el mensaje pesos
no balanceados.
Nota: a) considere que n es par impar. Si es impar no debe
tomar en cuenta el elemento del centro.
b) Utilice dos o mas subprogramas con los parmetros que
considere necesarios.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

2.- Disee un subprograma que reciba en una cadena una
fecha del ao 2005 en el formato dd/mm/aaaa y luego
presente dicha fecha escrita tal como se muestra en el
siguiente ejemplo:
El subprograma recibe: 12/12/2005
Salida: Lunes 12 de Diciembre de 2005

Nota: a) Tenga presente que el 01/01/2005 fue sbado.
b) Los meses 1, 3, 5, 7, 8, 10 y 12 tienen 31 das. Los meses
4, 6, 9 y 11 tienen 30 das y el mes 2 tiene 28 das.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

3.- Una tienda comercial cuenta con el cdigo (cadena) y la
venta del mes (en soles) de n productos (n200).
Nota: el cdigo es una cadena de 5 caracteres de los cuales los
4 primeros son dgitos y el ltimo es una letra (A, B, C, D, E) que
indica el grupo al que pertenece el producto.
Disee un algoritmo que utilizando subprogramas:
a) Almacene los datos (cdigo y venta) validndolos
b) Presente un listado que muestre la venta total por grupo.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

RECURSIVIDAD

Se dice que un objeto es recursivo si forma parte de si mismo
Se dice que un problema es recursivo (directo) si puede ser
expresado en funcin de otro(s) problema(s) del mismo tipo
pero de menor nivel de complejidad.

Caractersticas de un subprograma recursivo directo:
1.- Dentro de sus acciones se invoca a si mismo.
2.- Existe una condicin de alto y retorno que es dato.
3.- Es alternativo a una estructura repetitiva.

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROBLEMAS

Funciones recursivas
Disee un subprograma recursivo para cada uno de los
siguientes casos:
1.- Factorial
Entrada: un nmero entero mayor o igual a 0
Salida: el factorial del nmero.
2.- MCD de dos nmeros
Entrada: dos nmero enteros positivos
Salida: mximo comn divisor de ambos
3.- Bsqueda de un elemento en un arreglo
Entrada: un arreglo de cdigos (entero positivo de 4 cifras)
de n alumnos (n 100) y un cdigo dado,
Salida: si el cdigo dado se encuentra o no en el arreglo .
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

4.- Problema (3ra PC 2006-1 )
Crear un subprograma recursivo que reciba un valor de n
(entero positivo) y un valor de X(real) y nos entregue el valor
de la siguiente suma:
S = (X/1! ) (X
3
/3!) + (X
5
/5!) + (-1)
n+1
(X
2n-1
)/(2n-1)! ; n1

5.- Problema
Disee un subprograma recursivo que reciba a los conjuntos
A y B de n y m elementos (letras) respectivamente (n,m 20)
y muestre los elementos de A-B

6.- Problema (3ra PC 2005-1)
Crear una funcin recursiva que reciba un nmero
hexadecimal (como cadena) y luego nos retorne su
equivalente en el sistema decimal.

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

V. REGISTROS Y ARCHIVOS
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

REGISTRO
Es la unidad bsica de la base de datos de una entidad.




Es la estructura que permite almacenar datos (de una
entidad u objeto) que pueden ser de diferentes tipos
Ejemplo:
Se tiene los siguientes datos del alumno Juan Prez: nombre
completo (cadena), promedio ponderado (real), total crditos
aprobados (entero). Almacenar dichos datos.

BASE DE DATOS Archivos Registros
Nombre PromPond TCred
Alumno
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Caractersticas de los registros

El registro tiene un nombre general y se comporta
como una unidad
Est compuesto por elementos que se denominan
campos
Cada campo tiene un nombre. En cada campo se
pueden almacenar datos de tipo: bsico, arreglos o
registros
Para acceder a los datos de un campo:
nombre-registro.nombre-campo.nombre-subcampo.

Ejemplo: nombre, fecha de nacimiento (dia, mes, ao), PP



U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Declaracin de la estructura del registro
tipo
nombre de la estructura= registro
tipo de dato: nombre campo 1
tipo de dato: nombre campo 2
..
fin registro

Declaracin de la variable tipo registro
variable
nombre de la estructura: nombre de la variable

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Operaciones con registros

Asignacin
nombre-variable tipo registro.nombre-campo dato
Lectura/escritura
leer(nombre-variable tipo registro.nombre-campo)
Copia de un registro en otro
nombre registro1 nombre registro2


U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

EJEMPLOS
1.- Se cuenta con los siguientes datos de un alumno de ST-
221: nombre, notas de 4 PC , EP, EF. Disee un algoritmo
que almacene dichos datos y muestre el PF.

2.- Se cuenta con los siguientes datos de un alumno FIIS:
nombre, ao de ingreso (mes, ao) promedio ponderado. Se
cuenta con los siguientes datos de un docente FIIS: nombre,
ao de ingreso a la docencia, condicin (N/C), sueldo.
Disee un algoritmo para almacenar los datos de ambas
personas y muestre el nmero de aos (al 31 DIC 2011)
cumplidos que permanece en la FIIS
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

ARREGLOS DE REGISTROS

Son vectores cuyos elementos son registros
Declaracin:
arreglo(tamao) de nombre-estructura: nombre-arreglo

Ejemplo:
Se cuenta con los siguientes datos de un conjunto de n
alumnos FIIS (n100): nombre, especialidad, crditos
aprobados, promedio ponderado.
Disee un algoritmo que almacene dichos datos y luego
muestre un listado de alumnos por especialidad y dentro de
ella ordenados por orden de mrito segn el promedio
ponderado.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

ALU(1) --
ALU(2) --
ALU(n) --
ALU
nombre Esp cred prom
Solucin:
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROBLEMA

En un arreglo de registros se desea almacenar la informacin
de n (n200) alumnos de un curso consistente en: cdigo de
alumno (7c), nombre completo (35c), seccin (una letra),
promedio de prcticas, examen parcial, y examen final.
Con estos datos se desea:
a) Presentar por cada seccin el promedio general y los
alumnos con mayor promedio final. (Nota: PF =
(EP+2EF+PP)/4
b) Presente el % total de alumnos que desaprobaron el curso.
Disee el algoritmo que realice esta tarea.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

ARCHIVOS
ARCHIVOS DE DATOS:
Conjunto de registros relacionados entre si que se encuentran
almacenados en medios de almacenamiento externo (disco).
Es el archivo fsico.

BASE DE DATOS:
Conjunto de archivos que contienen datos relacionados.

Los archivos se relacionan entre si a travs del campo clave
(un campo del registro que lo identifica diferencindolo de los
dems.
Ejm de campo clave: cdigo de alumno, DNI, apellidos, etc.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Archivos Directos o Aleatorios

Caractersticas:
1.- Los registros se encuentran almacenados en el disco en forma
consecutiva (archivo fsico).

2.- Para transferir datos desde o hacia el archivo fsico, se utiliza
una variable tipo archivo (archivo lgico) con la misma
estructura del archivo fsico.

3.- Cualquier registro es directamente accesible mediante la
especificacin de un ndice que da la posicin del registro con
respecto al origen del archivo
Nota: la posicin de los registros empiezan en cero.


U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Archivos de acceso directo (..)

4.- Para acceder a un registro, se utiliza un elemento llamado
puntero de registro el cual identifica el registro sobre el cual
se va a realizar una operacin de lectura o escritura.

5.- Todas las operaciones de lectura/escritura de datos en un
archivo se realiza utilizando una variable auxiliar tipo registro
con la misma estructura que los registros del archivo.



U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

DECLARACION DE LA VARIABLE TIPO ARCHIVO
Y DE LA VARIABLE AUXILIAR

tipo
nombre- tipo-reg: registro
tipo de dato1: nombre-campo1
tipo de dato2: nombre-campo2
etc.
fin-registro

Variable
archivo de nombre-tipo-reg : nombre-variable tipo archivo
nombre-tipo-reg : nombre-variable de trabajo
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

OPERACIONES CON ARCHIVOS
Se realizan utilizando comandos

1.- CREACION DE ARCHIVO NUEVO
crear (nombre-archivo-fsico)

2.- ELIMINACION DE ARCHIVO : elimina un archivo fsico
borrar ( nombre de archivo fsico)

3.- APERTURA DE ARCHIVO EXISTENTE
Asigna o enlaza el archivo fsico con el archivo lgico
permitiendo la comunicacin entre ellos
abrir (nombre-arch-lgico , modo, nombre-arch-fsico)
El archivo se puede abrir en modo:
l: lectura de datos solamente.
e: escritura de datos solamente
l/e: lectura y escritura de datos

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

OPERACIONES CON ARCHIVOS (..)

4- CIERRE DE ARCHIVO
Cierra la conexin entre el archivo lgico y el archivo fsico
cerrar (nombre-archivo-lgico)

5.- LECTURA DE DATOS
Copia el registro seleccionado en la variable auxiliar
leer ( nombre-arch-lgico, nombre-variable-auxiliar)

6- ESCRITURA DE DATOS
Copia los datos del registro de trabajo en el archivo
escribir ( nombre-arch-lgico, nombre-variable-auxiliar)






U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Operaciones para el manejo de archivos

1.- Tamao del archivo (nmero de registros de un archivo):
tamao (nombre del archivo lgico

2.- Fin de archivo :
La funcin eof devuelve V si lleg al final del archivo y F si aun no
eof (nombre-arch-lgico)

3- Renombra archivo: Cambia el nombre del archivo fsico
renombrar (nombre-arch-antiguo, nombre-arch-nuevo)

4.- Seleccionar un registro utilizando el puntero
Si el archivo se apertura en modo l/e, antes de una lectura o escritura:
ubicar-p (nombre-arch-lgico, posicin)
Nota: para ubicar el puntero al final de un archivo:
ubicar-p (nombre-arch-lgico, tamao(nombre-arch-lgico)





U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Ejemplo
Prob 1
Existe un archivo fsico llamado PLANILLA.DAT que
almacena la informacin de un grupo de empleados la cual
consiste en Nombre del empleado (30c), nombre del
Departamento donde labora (15c) y el sueldo (real).

Disee un algoritmo que:
a) dado el nombre de un empleado, muestre el departamento
en que labora y su sueldo
b) adicione al archivo los datos de 20 nuevos empleados.
c) Presente un reporte mostrando por cada departamento
los siguientes datos: nombre del departamento, nmero de
empleados y sueldo promedio de los empleados.


U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

OTRAS OPERACIONES CON ARCHIVOS

1.- Ordenamiento de archivos
. Por seleccin (los registros cambian de posicin)
. Con archivo ndice (los registros no cambian de posicin)

2.- Eliminacin fsica de registros
Se utiliza un nuevo archivo en el que ya no se graban los
registros que se desean eliminar

3.- Insercin de un registro en un archivo ordenado
Se utiliza un nuevo archivo en el que se van grabando los
registros hasta que se encuentra la ubicacin del registro que
se desea insertar y se graba ste.


U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Ejemplos
Prob.1
Se tiene el archivo EMPLEADO.DAT que almacena los
siguientes datos: cdigo (9c), categora (1c) y sueldo (real).
Disee un algoritmo que en base al archivo realice lo
siguiente:
a) Dada a una categora ingresada por el usuario, presente un
reporte que contenga el cdigo y el sueldo de los empleados
que pertenecen a dicha categora, ordenados por sueldo en
forma descendente.
b) Elimine del archivo a los empleados que tengan sueldo
menor a S/. 550.00

Nota: Todo ordenamiento debe ser sin modificar las
ubicaciones actuales de los registros.


U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S


PROB.2 (4ta PC 2008-1)

Se tienen los siguientes archivos fsicos:
ALUMNOS.DAT (cdigo-alumno (3dig), nombre-completo)
NOTAS.DAT (cdigo-alumno, nombre-curso, nota, crditos)

Se pide disear un algoritmo para:
a) Por cada alumno, presentar cdigo, nombre, nmero de
crditos que ha llevado y el promedio ponderado de notas.
b) Presentar el nombre del curso o cursos con el mayor nmero
de desaprobados.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S


Prob 3.

Se tiene el archivo fsico ALUMNOS.DAT cuyos datos son
registros que tienen la siguiente estructura:
cdigo (9), nombre (40c), nmero de crditos aprobados,
promedio ponderado.

Disee un algoritmo que reciba el cdigo de un alumno y
luego utilizando un subprograma muestre el nmero de
crditos aprobados y el promedio ponderado del alumno.

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S


Prob 4. (4ta PC 2003-2)

Se tiene el archivo fsico ALUMNOS FIIS.DAT cuyos datos
son registros que tienen la siguiente estructura:
cdigo (7 caracteres: los 2 primeros dgitos son el ao de
ingreso), nombre (40c), nmero de crditos aprobados,
promedio ponderado.

Disee un subprograma que elimine del archivo a todos los
alumnos que hayan ingresado antes de 1990 , tengan menos
de 140 crditos aprobados y promedio ponderado menor a 09
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

VI. PROGRAMACION
DINAMICA
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Programacin dinmica:
Utiliza variables dinmicas

Variable dinmica:
Es un espacio en la RAM que no tiene nombre
La direccin de este espacio se encuentra almacenado en
una variable tipo puntero. Entonces, para acceder a una
variable dinmica se necesita de un puntero.

Nota



Variable esttica Variable dinmica



p
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Puntero:
Es una variable que almacena la direccin de una variable
dinmica
Indica el tipo de dato que almacena la variable dinmica

Declaracin de punteros:
Variables
*tipo de dato de la variable dinmica: nombre del puntero
Ejemplo:
*entero: p
p es un puntero que guarda la direccin de un dato entero
Se ha declarado la variable dinmica apuntado por p
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Operaciones con punteros
a) Asignacin
p nulo (inicializacin)
p q
b) Comparacin
p=q
p q


U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

Operaciones con la variable dinmica

Creacin de una variable dinmica:
Reservar (p)
(solicita la direccin de un espacio en memoria para la
variable dinmica)
Eliminacin de la variable dinmica:
liberar (p) (libera espacio en memoria)
Acceso a la variable dinmica:
Para almacenar datos o sacar datos de la variable dinmica:
Leer/escribir (nombre del puntero*)
Ejm . Leer (p*)
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

ESTRUCTURAS DINAMICAS

Lineales
Listas enlazadas
Pilas
Colas

No lineales
Arboles
Grafos

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

LISTAS ENLAZADAS

Caractersticas

Almacenan en la RAM datos del mismo tipo
Se encuentran en posiciones no necesariamente contiguas.
Sus elementos se denominan nodos
Cada nodo de la Lista es un registro que tiene dos campos:
INFO : almacena los datos que se desea almacenar
DIR: es un puntero que almacena la direccin del
elemento que le sigue.
Tiene un puntero de lista que guarda la direccin del primero.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROBLEMA 1 (Listas-Listas)

Se cuenta con los siguientes datos de n operaciones
comerciales: tipo (C (compra) V (venta)),cdigo-producto,
monto de la operacin.
Disee un algoritmo que almacene estos datos y luego
muestre el monto total de cada producto vendido, ordenado
en forma descendente segn el monto total.

PROBLEMA 2 (4ta PC 2005-2)
Para un experimento se tiene una muestra de 100 puados
de maz. Crear una LISTA para almacenar el nmero de
granos de maz que hay en cada puado. Luego debe
presentar el nmero de granos de maz que mas se repiten.

U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROB 3 (Archivos - listas )

Se tiene el archivo fsico ALUMNO.DAT que contiene los
siguientes datos: codigo-alumno (9c), nombre-alumno,
especialidad (2c), promedio ponderado acumulado, nmero
de crditos aprobados.
Dada una especialidad, se desea mostrar los datos (cdigo-
alumno, promedio ponderado acumulado) de aquellos
alumnos que cumplan con las siguientes condiciones: tengan
promedio ponderado mayo a 13 y tengan mas de 100 crditos
aprobados. Este reporte debe estar ordenado por orden de
mrito.
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROB 4 (Listas como parm. de subprograma: ef-2002-2)

En los nodos de una LISTA L se han almacenado los datos
de un grupo de empleados: cdigo (entero), nombre
completo, seccin (A, B, C) y sueldo (real).
Se pide disear un subprograma que reciba a esta lista L y
nos presente un reporte en donde figuren por cada seccin,
los datos de los empleados ordenados en forma decreciente
respecto al sueldo y en caso de sueldos iguales ordenados en
forma alfabtica. (6P)
U
n
i
v
e
r
s
i
d
a
d

N
a
c
i
o
n
a
l

d
e

I
n
g
e
n
i
e
r

a

F
I
I
S

PROBLEMA 5 ( listas que contienen listas: EF- 2007-2)

Disee un algoritmo que permita almacenar en una lista (Pila
o Cola) los siguientes datos de un conjunto de n alumnos:
(cdigo, nombre completo, y los cursos que lleva (por cada
curso almacene: nombre del curso y la nota final). Luego:
a) Dado el nombre de un curso, muestre el nmero de
aprobados y desaprobados en dicho curso.
b) Muestre un listado de todos los alumnos indicando: cdigo,
nombre completo y el promedio de notas de los cursos
llevados. Este listado debe estar en orden de mrito.

(7P)