Download - Pilas
![Page 1: Pilas](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/1.jpg)
![Page 2: Pilas](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/2.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/3.jpg)
Pilas
• Representación Gráfica
ELEMENTO n
ELEMENTO n -1………
ELEMENTO 1
Tope de la Pila
![Page 4: Pilas](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/4.jpg)
Pilas
• Que se puede hacer sobre una pila?
ApilarDesapilarVerTope
…..
![Page 5: Pilas](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/5.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/6.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/7.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/8.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/9.jpg)
Sentencias Secuenciales: se ejecutan una después de la otra
![Page 10: Pilas](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/10.jpg)
Problema: pasar el tope de una pila a otra
Origen Destino
![Page 11: Pilas](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/11.jpg)
Origen Destino
Problema: pasar el tope de una pila a otra
Apilar (Destino, Desapilar(Origen));
![Page 12: Pilas](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/12.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/13.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/14.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/15.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/16.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/17.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/18.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/19.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/20.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/21.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/22.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/23.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/24.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/25.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/26.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/27.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/28.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/29.jpg)
Problema:
Pasar todos los elementos de una Pila a Otra
![Page 30: Pilas](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/30.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/31.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/32.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/33.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/34.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/35.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/36.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/37.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/38.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/39.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/40.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/41.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/42.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/43.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/44.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/45.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/46.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/47.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/48.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/49.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/50.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/51.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/52.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/53.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/54.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/55.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/56.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/57.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/58.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/59.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/60.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/61.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/62.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/63.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/64.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/65.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/66.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/67.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/68.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/69.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/70.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/71.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022062423/568142dc550346895daf37d4/html5/thumbnails/72.jpg)
Ejercitación