Publicado el 31 de Julio del 2017
856 visualizaciones desde el 31 de Julio del 2017
140,2 KB
18 paginas
Creado hace 10a (01/04/2014)
Pilas
Una Pila es una colección de elementos del mismo tipo organizada como una
superposición ordenada de los mismos.
Por ejemplo Pila de platos, Pila de cartas, Pila de camisas, Pila de libros
TOPE DE LA PILA
Los elementos se recuperan en el
orden inverso al que fueron
almacenados.
El último en entrar (TOPE) es el
primer en salir.
Pilas
Pilas
• Representación Gráfica
• Que se puede hacer sobre una
Tope de la Pila
ELEMENTO n
ELEMENTO n -1
………
ELEMENTO 1
pila?
Apilar
Desapilar
VerTope
…..
1
Pilas en Pascal
En Pascal vamos a trabajar con Pilas de Enteros.
1) Cada pila tendrá un nombre.
1) Sólo se ve el TOPE, no se sabe cuantos elementos hay
TOPE
NOMBRE
1) Se podrán hacer las siguientes operaciones:
ReadPila()
InicPila ()
Tope()
Apilar ()
Desapilar() el Elemento que se desapila debe ir a otra Pila
EsVacia()
WritePila()
NombrePila
Comentarios
Estructu es una Unidad que
permite trabajar con pilas en Pascal
Se definen los datos con los que
va a trabajar el programa.
Se escriben las instrucciones
que trabajarán sobre los datos
para lograr el objetivo del
programa.
C:\fpc\bin\Inicial
Ingresar elementos a la Pila:
<Base><...><Tope>
Program Inicial;
{Este Programa es un ejemplo sencillo de manejo
de Pilas en Pascal:
Leer los datos de una Pila por pantalla e imprimirlos }
1
4
uses Estructu;
var
Origen: pila;
Begin
ReadPila(Origen);
WritePila(Origen);
end.
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
Program Inicial;
{Este Programa es un ejemplo sencillo de manejo
de Pilas en Pascal:
Leer los datos de una Pila por pantalla e imprimirlos }
<Base> 1 4 <Tope>
C:\fpc\bin\Inicial
Ingresar elementos a la Pila:
<Base><...><Tope>
1
4
uses Estructu;
var
Origen: pila;
Begin
ReadPila(Origen);
WritePila(Origen);
end.
Estado de las Pilas
durante ejecución:
Origen
1 4
Estado de las Pilas
durante ejecución:
Origen
1 4
2
Problema: pasar el tope de una
pila a otra
Sentencias Secuenciales: se ejecutan una después de la otra
Origen
Destino
Problema: pasar el tope de una
pila a otra
Problema: pasar el tope de una
pila a otra
¿ Qué pasaría si Destino tiene elementos?
Origen
Destino
Origen
Destino
Apilar (Destino, Desapilar(Origen));
Apilar (Destino, Desapilar(Origen));
3
Problema: pasar el tope de una
Problema: pasar el tope de una
pila a otra
¿ Qué pasaría si Destino tiene elementos?
pila a otra
¿Qué pasaría si Origen NO tiene elementos?
¡ Desapilar de
una pila vacía da
error!
¿Cómo se puede controlar?
Origen
Destino
Apilar (Destino, Desapilar(Origen));
Origen
Destino
Apilar (Destino, Desapilar(Origen));
Sentencia de control: Selección
Sentencia de control: Selección
A través de la selección se incorpora la capacidad de decisión en un
programa.
IF (condición) then
acción o acciones a realizar si la condición es verdadera
else
acción o acciones a realizar si la condición es falsa
donde condición es una expresión que al ser evaluada puede tomar
solamente uno de dos valores posibles: verdadero o falso.
De esta forma será posible seleccionar una de dos alternativas de acción
posibles durante la ejecución del programa.
If (condición) then
acción o acciones a realizar si la condición es verdadera
En este caso, si la condición es falsa, no se especifica ningún camino
alternativo a seguir.
4
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino }
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino }
C:\fpc\bin\PasaTope
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino);
end.
Condición que dará Verdadero o Falso
Estado de las Pilas
durante ejecución:
Origen
Destino
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino);
end.
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
1
4
Estado de las Pilas
durante ejecución:
Origen
1 4
Destino
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino }
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
1
4
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino }
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
1
4
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino);
end.
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino);
end.
Estado de las Pilas
durante ejecución:
Origen
1 4
Destino ‘
‘
Estado de las Pilas
durante ejecución:
Origen
1 4
Destino ‘
‘
5
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino }
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
1
4
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino }
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
1
4
<Base> 1 <Tope>
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino);
end.
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino}
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino);
end.
Estado de las Pilas
durante ejecución:
Origen
1
Destino 4
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
1
4
<Base> 1 <Tope>
<Base> 4 <Tope>
Estado de las Pilas
durante ejecución:
Origen
1
Destino 4
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino);
end.
Estado de las Pilas
durante ejecución:
Origen
1
Destino 4
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino
y avisa si la Pila Origen es vacia}
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
begin
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino)
end
else
end.
Writeln('La Pila Origen está vacía');
Estado de las Pilas
durante ejecución:
Origen
Destino
6
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino
y avisa si la Pila Origen es vacia}
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino
y avisa si la Pila Origen es vacia}
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
begin
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino)
end
else
end.
Writeln('La Pila Origen está vacía');
Estado de las Pilas
durante ejecución:
Origen
Destino
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
begin
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino)
end
else
end.
Writeln('La Pila Origen está vacía');
Estado de las Pilas
durante ejecución:
Origen
Destino
Program PasaTope;
{Este Programa pasa el tope de la pila Origen a Destino
y avisa si la Pila Origen es vacia}
C:\fpc\bin\PasaTope
Ingresar elementos a la Pila:
<Base><...><Tope>
La Pila Origen está vacía
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
begin
Apilar (Destino, Desapilar(Origen));
WritePila(Origen);
WritePila(Destino)
end
else
end.
Writeln('La Pila Origen está vacía');
Estado de las Pilas
durante ejecución:
Origen
Destino
Práctica
1) Cargar desde el teclado una pila DADA con
5 elementos. Pasar los tres primeros
elementos a la pila CJTO1 y los dos
restantes a la pila CJTO2, ambas pilas
inicializadas en vacío. (Ejercicio 1 de
Práctico 1)
2 ) Cargar desde el teclado una pila DADA.
Inicializar una pila MODELO con al menos
un elemento. Pasar el tope de DADA a una
pila MENOR si es menor al tope de
MODELO. Si es mayor pasarlo a una pila
MAYOR.
7
Problema:
Pasar todos los elementos de una Pila a Otra
Program PasaPila;
{Este Programa pasa los elementos de la pila Origen a Destino}
uses Estructu;
var
Origen, Destino: pila;
Begin
ReadPila(Origen);
InicPila(Destino, ' ');
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
x While not PilaVacia(Origen) do
………
WritePila(Origen);
WritePila(Destino)
if not PilaVacia(Origen) then
Apilar (Destino, Desapilar(Origen));
Apilar (Destino, Desapilar(Origen));
end.
C:\fpc\bin\OrdenarPorSeleccion
C:\fpc\bin\PasaPila
Estructura de control: Iteración (WHILE)
Program PasaPila;
{Este Programa pasa los elementos de la pila
Origen a Destino}
• Existen situaciones en las que se quiere
repetir un conjunto de acciones pero se
desconoce de antemano el número de veces.
La iteración es una estructura de control que
permite al algoritmo ejecutar en forma
repetitiva un conjunto de acciones util
Comentarios de: Pilas (0)
No hay comentarios