pilas una pila es una colección de elementos del mismo tipo organizada como una superposición...

72

Upload: veronica-farfan

Post on 23-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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
Page 2: 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

PilasUna 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.

Page 3: 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

Pilas

• Representación Gráfica

ELEMENTO n

ELEMENTO n -1………

ELEMENTO 1

Tope de la Pila

Page 4: 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

Pilas

• Que se puede hacer sobre una pila?

ApilarDesapilarVerTope

…..

Page 5: 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

Pilas en PascalEn 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

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()

TOPE

NombrePila

Page 6: 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

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.

Comentarios

NOMBRE

Page 7: 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

C:\fpc\bin\Inicial

Estado de las Pilas durante ejecución:

Program Inicial;{Este Programa es un ejemplo sencillo de manejo de Pilas en Pascal:Leer los datos de una Pila por pantalla e imprimirlos }

uses Estructu;var Origen: pila; Begin ReadPila(Origen); WritePila(Origen);end.

Ingresar elementos a la Pila: <Base><...><Tope>

123456789

10111213

Origen

1 4

1 4

Page 8: 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

Estado de las Pilas durante ejecución:

Program Inicial;{Este Programa es un ejemplo sencillo de manejo de Pilas en Pascal:Leer los datos de una Pila por pantalla e imprimirlos }

uses Estructu;var Origen: pila; Begin ReadPila(Origen); WritePila(Origen);end.

Ingresar elementos a la Pila: <Base><...><Tope>

123456789

10111213

Origen

1 4

1 4

<Base> 1 4 <Tope>

C:\fpc\bin\Inicial

Page 9: 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

Sentencias Secuenciales: se ejecutan una después de la otra

Page 10: 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

Problema: pasar el tope de una pila a otra

Origen Destino

Page 11: 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

Origen Destino

Problema: pasar el tope de una pila a otra

Apilar (Destino, Desapilar(Origen));

Page 12: 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

Problema: pasar el tope de una pila a otra

Origen Destino

¿ Qué pasaría si Destino tiene elementos?

Apilar (Destino, Desapilar(Origen));

Page 13: 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

Problema: pasar el tope de una pila a otra

Origen Destino

¿ Qué pasaría si Destino tiene elementos?

Apilar (Destino, Desapilar(Origen));

Page 14: 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

Problema: pasar el tope de una pila a otra

Origen Destino

Apilar (Destino, Desapilar(Origen));

¡ Desapilar de una pila vacía da

error!

¿Cómo se puede controlar?

¿Qué pasaría si Origen NO tiene elementos?

Page 15: 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

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.

Page 16: 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

Sentencia de control: Selección

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.

Page 17: 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

C:\fpc\bin\PasaTope

Estado de las Pilas durante ejecución:

Origen

Destino

Condición que dará Verdadero o Falso

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.

Page 18: 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

C:\fpc\bin\PasaTope

Estado de las Pilas durante ejecución:

Origen

Destino

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.

Ingresar elementos a la Pila: <Base><...><Tope>

1 4

1 4

Page 19: 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

Estado de las Pilas durante ejecución:

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.

Ingresar elementos a la Pila: <Base><...><Tope>

1 4

1 4Origen

Destino ‘ ‘

C:\fpc\bin\PasaTope

Page 20: 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

Estado de las Pilas durante ejecución:

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.

Ingresar elementos a la Pila: <Base><...><Tope>

1 4

1 4Origen

Destino ‘ ‘

C:\fpc\bin\PasaTope

Page 21: 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

Estado de las Pilas durante ejecución:

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.

Ingresar elementos a la Pila: <Base><...><Tope>

1 4

1 Origen

Destino

4

C:\fpc\bin\PasaTope

Page 22: 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

Estado de las Pilas durante ejecución:

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.

Ingresar elementos a la Pila: <Base><...><Tope>

1 4

1 Origen

Destino

4

<Base> 1 <Tope>

C:\fpc\bin\PasaTope

Page 23: 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

Estado de las Pilas durante ejecución:

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.

Ingresar elementos a la Pila: <Base><...><Tope>

1 4

1 Origen

Destino

4

<Base> 4 <Tope>

<Base> 1 <Tope>

C:\fpc\bin\PasaTope

Page 24: 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

Estado de las Pilas durante ejecución:

Program PasaTope; {Este Programa pasa el tope de la pila Origen a Destinoy avisa si la Pila Origen es vacia}

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 Writeln('La Pila Origen está vacía'); end.

Ingresar elementos a la Pila: <Base><...><Tope>

Origen

Destino

C:\fpc\bin\PasaTope

Page 25: 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

Estado de las Pilas durante ejecución:

Program PasaTope; {Este Programa pasa el tope de la pila Origen a Destinoy avisa si la Pila Origen es vacia}

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 Writeln('La Pila Origen está vacía'); end.

Ingresar elementos a la Pila: <Base><...><Tope>

Origen

Destino

C:\fpc\bin\PasaTope

Page 26: 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

Estado de las Pilas durante ejecución:

Program PasaTope; {Este Programa pasa el tope de la pila Origen a Destinoy avisa si la Pila Origen es vacia}

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 Writeln('La Pila Origen está vacía'); end.

Ingresar elementos a la Pila: <Base><...><Tope>

Origen

Destino

C:\fpc\bin\PasaTope

Page 27: 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

Estado de las Pilas durante ejecución:

Program PasaTope; {Este Programa pasa el tope de la pila Origen a Destinoy avisa si la Pila Origen es vacia}

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 Writeln('La Pila Origen está vacía'); end.

Ingresar elementos a la Pila: <Base><...><Tope>

Origen

Destino

La Pila Origen está vacía

C:\fpc\bin\PasaTope

Page 28: 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

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.

Page 29: 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

Problema:

Pasar todos los elementos de una Pila a Otra

Page 30: 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

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)); if not PilaVacia(Origen) then Apilar (Destino, Desapilar(Origen));……… WritePila(Origen); WritePila(Destino) end.

x While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen));

Page 31: 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

Estructura de control: Iteración (WHILE)

• 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 utilizando una condición para indicar su finalización.

Page 32: 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

Estado de las Pilas durante ejecución:

Destino

Origen

C:\fpc\bin\OrdenarPorSeleccion

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

1 4 3

C:\fpc\bin\PasaPila

Page 33: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

1 4 3

‘ ‘Destino

Origen

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 34: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

1 4 3

‘ ‘Destino

Origen

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 35: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

1 4

3Destino

Origen

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 36: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

1 4

Destino

Origen

3

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 37: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

1

3 4Destino

Origen

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 38: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

1

3 4Destino

Origen

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 39: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

3 4 1Destino

Origen

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 40: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

3 4 1Destino

Origen

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 41: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

3 4 1

<Base> Vacía <Tope>

Destino

Origen

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 42: 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

Estado de las Pilas durante ejecución:

Ingresar elementos a la Pila: <Base><...><Tope>

1 4 3

3 4 1

<Base> 3 4 1 <Tope>

Destino

Origen

<Base> Vacía <Tope>

C:\fpc\bin\PasaPila

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Page 43: 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

Estructura de control: Iteración (WHILE)

While (condición sea verdadera) doAcción o acciones a realizar

- La condición es evaluada en cada ciclo - Debe haber alguna acción dentro del conjunto de acciones que modifiquen el valor de la condición (SE CORTA la Iteración)

Page 44: 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

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Destino, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

Al ir desapilando los elementos de Origen, en algún momento la pila Origen estará vacía y la condición se dejará de cumplir

Page 45: 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

Program PasaPila;{Este Programa pasa los elementos de la pila Origen a Destino}

uses Estructu;var Origen, Destino: pila; Begin ReadPila(Origen); InicPila(Destino, ' '); While not PilaVacia(Origen) do Apilar (Origen, Desapilar(Origen)); WritePila(Origen); WritePila(Destino)end.

¡INCORRECTO!Nunca va a ser

falsa la condición, no se

termina la iteración

Page 46: 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

Ejercitación• Cargar desde teclado una pila DADA y pasar a la pila DISTINTOS todos aquellos elementos distintos al valor 8. (ej. 2 del práctico)

• ¿Cuál es la condición del siguiente ciclo? ¿Cuándo finaliza el ciclo? (Pila1, Pila2, y Descarte son pilas) (ej. 3 del práctico)

while not pilaVacia(Pila1) do

begin

apilar (Pila2, desapilar(Descarte))

end

• Pasar todos los elementos de una pila Origen a la pila Menor si son menores a 5 y sino pasarlos a la pila MAYOR.

Page 47: 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

C:\fpc\bin\DivideMenores5

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1 8 2

Page 48: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1 8 2‘ ‘

C:\fpc\bin\DivideMenores5

Page 49: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1 8 2‘ ‘

‘ ‘

C:\fpc\bin\DivideMenores5

Page 50: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1 8 2‘ ‘

‘ ‘

C:\fpc\bin\DivideMenores5

Page 51: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1 8 2‘ ‘

‘ ‘

C:\fpc\bin\DivideMenores5

Page 52: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1 8 2

‘ ‘

C:\fpc\bin\DivideMenores5

Page 53: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1 8 2

‘ ‘

C:\fpc\bin\DivideMenores5

Page 54: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1 8 2

‘ ‘

C:\fpc\bin\DivideMenores5

Page 55: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1

2

8

C:\fpc\bin\DivideMenores5

Page 56: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1

2

8

C:\fpc\bin\DivideMenores5

Page 57: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

1

2

8

C:\fpc\bin\DivideMenores5

Page 58: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

‘ ‘

2 1

8

C:\fpc\bin\DivideMenores5

Page 59: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

‘ ‘

2 1

8

C:\fpc\bin\DivideMenores5

Page 60: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

‘ ‘

2 1

8

<Base> 2 1 <Tope>

C:\fpc\bin\DivideMenores5

Page 61: 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

Ingresar elementos a la Pila: <Base><...><Tope>

Estado de las Pilas durante ejecución:

Program DivideMenores5; {este programa pasa todos los números de la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then

Apilar (Menores, Desapilar(Origen)) else

Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end. Origen

Menores

Mayores

1 8 2

‘ ‘

2 1

8

<Base> 2 1 <Tope> <Base> 8 <Tope>

C:\fpc\bin\DivideMenores5

Page 62: 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

Resumen: operaciones con Pilas

• ReadPila(nombrePila)

• InicPila(nombrePila, ' ') o InicPila(nombrePila, ‘3 6 7 ')

• PilaVacia(nombrePila)

• Tope(nombrePila)

• Apilar(nombrePila,Desapilar(nombreOtra Pila)) o Apilar(nombrePila, 8)

• WritePila(nombrePila)

Page 63: 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

Estructuras de control

• SECUENCIA

< sentencia 1 >;

< sentencia 2 >;

< sentencia 3 >;

Se ejecutan una sola vez en el mismo orden en que aparecen

Page 64: 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

Estructuras de control• SELECCIÓN

if <condición> then < sentencia si condición es verdadera >;

if <condición> then < sentencia si condición es verdadera >else < sentencia si condición es falsa >;

Page 65: 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

Estructuras de control

En <sentencia> se debe asegurar que la condición va a cambiar para ser falsa en algún momento y cortar el ciclo

ITERACIÓN

while <condición> do

< sentencia mientras condición sea verdadera >;

Page 66: 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

SENTENCIAS COMPUESTASUna serie de instrucciones básicas que se ejecutan una a continuación de otra como un bloque.

BEGIN<SENTENCIA 1>;<SENTENCIA 2>

END

..........IF not PilaVacia(Origen) THEN

IF tope(Origen) < 5 THEN

BEGIN

Apilar (Menores, Desapilar(Origen));

writePila(Menores);

END;

……….

..........IF not PilaVacia(Origen) THEN

IF tope(Origen) < 5 THEN

Apilar (Menores, Desapilar(Origen))

writePila(Menores);

……….

¿Qué diferencia hay entre los dos códigos?

Page 67: 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

Estructuras de controlif <condición> thenbegin < sentencia si condición es verdadera >; < sentencia si condición es verdadera >; < sentencia si condición es verdadera >endelse begin < sentencia si condición es falsa >; < sentencia si condición es falsa >;end

Page 68: 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

Estructuras de control

while <condición> do

begin < sentencia mientras condición es verdadera >;

< sentencia mientras condición es verdadera >;

< sentencia mientras condición es verdadera >;

end

Page 69: 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

Estructuras de control

Las estructuras de control se pueden combinar

EJEMPLO……..While not PilaVacia(Origen) do if tope(Origen) < 5 then begin Apilar (Menores, Desapilar(Origen)); writePila(Menores) end else begin

Apilar (Mayores, Desapilar(Origen)); writePila(Mayores) end

…………

Page 70: 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

INDENTACIÓNProgram DivideMenores5;{este programa pasa todos los númerosde la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then Apilar (Menores, Desapilar(Origen)) else Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end.

Program DivideMenores5;{este programa pasa todos los númerosde la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;varOrigen, Menores, Mayores: Pila; BeginReadPila(Origen);InicPila(Menores, ' ');InicPila(Mayores, ' ');While not PilaVacia(Origen) doif tope(Origen) < 5 then Apilar (Menores, Desapilar(Origen))else Apilar (Mayores, Desapilar(Origen));writePila(Menores);writePila(Mayores);end.

Page 71: 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

INDENTACIÓNProgram DivideMenores5;{este programa pasa todos los númerosde la pila Origen a la pila Menores y los otros a la pila Mayores}

uses Estructu;var Origen, Menores, Mayores: Pila; Begin ReadPila(Origen); InicPila(Menores, ' '); InicPila(Mayores, ' '); While not PilaVacia(Origen) do if tope(Origen) < 5 then Apilar (Menores, Desapilar(Origen)) else Apilar (Mayores, Desapilar(Origen)); writePila(Menores); writePila(Mayores);end.

Se puede “ver” donde termina el conjunto de instrucciones involucradas en una sentencia de control

Page 72: 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

Ejercitación