Publicado el 31 de Julio del 2017
566 visualizaciones desde el 31 de Julio del 2017
87,1 KB
6 paginas
Creado hace 10a (08/04/2014)
Ultimo Elemento
Primer elemento
Una Fila o Cola es una colección ordenada de elementos homogéneos en el que
los nuevos elementos se añaden de a uno por un extremo (el final) y se quita de a
uno por el otro extremo (el frente).
En las Filas el elemento que entró primero también sale primero.
Pilas y Filas
Filas en Pascal
- Fila de enteros
- Se identifican con un nombre
- Sólo se puede acceder al primer elemento (que es el primero que entró)
Primer elemento
5 7 8
Nombre de Fila
Auxiliar
Operaciones sobre Filas
Operaciones sobre Filas
Objetivo
Definición
Inicialización estática
Carga por teclado
Vacia? ( SI / NO)
PrimerElemento
<nro>
RecuperarElemento
AgregarElemento
MostrarElementos
<nro>
Fila
NombreFila: Fila
InicFila(NombreFila, ‘<nros>’)
ReadFila(NombreFila)
FilaVacia(NombreFila)
Primero(NombreFila)
Extraer(NombreFila)
Agregar(NombreFila, ‘<nro>’ )
WriteFila(NombreFila)
Objetivo
Definición
Inicialización estática
Carga por teclado
Vacia? ( SI / NO)
PrimerElemento
<nro>
RecuperarElemento
AgregarElemento
MostrarElementos
<nro>
Fila
NombreFila: Fila
InicFila(NombreFila, ‘<nros>’)
ReadFila(NombreFila)
FilaVacia(NombreFila)
Primero(NombreFila)
Extraer(NombreFila)
Agregar(NombreFila, ‘<nro>’ )
WriteFila(NombreFila)
Agregar(NombreFila, Extraer(NombreOtraFila )
Problema:
Program PasaElementosFila;
{Este Programa pasa los elementos de la fila Origen a Destino}
Se quieren pasar los elementos de una
Fila llamada Origen a otra Fila llamada
Destino.
uses Estructu;
var
Origen, Destino: Fila;
Begin
ReadFila(Origen);
InicFila(Destino, ' ');
While not FilaVacia(Origen) do
Agregar(Destino, Extraer(Origen));
WriteFila(Origen);
WriteFila(Destino)
end.
Problema
Program PasajeParcial;
{ Este programa Pasa los elementos de la Fila origen a la fila
destino hasta llegar al numero 3 }
Pasar los elementos de una Fila Origen a la
fila Destino hasta encontrar un numero 3
Uses Estructu;
Var
FilaOrigen, FilaDestino: Fila;
Begin
ReadFila(FilaOrigen);
inicFila(FilaDestino, ' ' );
while (primero(FilaOrigen) <> 3)do
Agregar(FilaDestino, extraer(FilaOrigen));
WriteFila(FilaOrigen);
WriteFila(FilaDestino);
end.
¿Es correcta la solución?
Si la FilaOrigen no tiene el 3 DA ERROR
Program PasajeParcial;
{ Este programa Pasa los elementos de la Fila origen a la fila destino
hasta llegar al numero 3 }
Uses Estructu;
Var
FilaOrigen, FilaDestino: Fila;
Begin
ReadFila(FilaOrigen);
inicFila(FilaDestino, ' ' );
while not Filavacia(FilaOrigen) do
If (primero(FilaOrigen) <> 3) then
Agregar(FilaDestino, extraer(FilaOrigen));
WriteFila(FilaOrigen);
WriteFila(FilaDestino);
end.
¿Es correcta la solución?
Si hay un elemento 3 no sale del ciclo.
Condiciones múltiples
Hay situaciones en que se desean evaluar
varias condiciones a la vez:
Una condición múltiple es una secuencia de
condiciones simples que se unen con
conectores lógicos.
Program PasajeParcial;
{ Este programa Pasa los elementos de la Fila origen
a la fila destino hasta llegar al numero 3 }
………..
Tenemos que pasar los elementos de Origen
mientras no esté vacía y no encontremos el numero
3.
Program PasajeParcial;
{ Este programa Pasa los elementos de la Fila origen a la fila
destino hasta llegar al numero 3 }
Uses Estructu;
Var
FilaOrigen, FilaDestino: Fila;
Begin
ReadFila(FilaOrigen);
inicFila(FilaDestino, ' ' );
while not Filavacia(FilaOrigen) and (primero(FilaOrigen) <> 3)do
Agregar(FilaDestino, extraer(FilaOrigen));
WriteFila(FilaOrigen);
WriteFila(FilaDestino);
end.
5 7 3 8
FILAORIGEN
Tablas de Verdad
Not (No)
Condición 1
Not Condición 1
Falso
Verdadero
Verdadero
Falso
5 7
3 8
FILADESTINO
FILAORIGEN
Tablas de Verdad
And (y)
Tablas de Verdad
Or (o)
Condición 1
Condición 2
Condición 1 and Condición 2
Condición 1
Condición 2
Condición 1 or Condición 2
Verdadero
Verdadero
Falso
Falso
Verdadero
Verdadero
Falso
Verdadero
Falso
Falso
Falso
Falso
Verdadero
Verdadero
Falso
Falso
Verdadero
Falso
Verdadero
Falso
Verdadero
Verdadero
Verdadero
Falso
Tablas de Verdad
Leyes de DeMorgan
Tablas de Verdad
Leyes de DeMorgan
Condición _1
Condición_ 2
Not (Condición_1 AND
Condición_2)
not Condición _1 or not Condición_2
Condición_1
Condición_1
Not (Condición _1 OR
Condición_2)
not condición_1 and not Condición_2
Verdadero
Verdadero
Falso
Verdadero
Falso
Verdadero
Falso
Falso
Verdadero
Verdadero
Falso
Verdadero
Falso
Verdadero
Verdadero
Verdadero
Verdadero
Verdadero
Falso
Verdadero
Falso
Falso
Verdadero
Falso
Falso
Falso
Falso
Falso
Falso
Falso
Verdadero
Verdadero
Program PasajeParcial;
{ Este programa Pasa los elementos de la Fila origen a la fila
destino hasta llegar al numero 3 }
Program PasajeParcial;
{ Este programa Pasa los elementos de la Fila origen a la fila
destino hasta llegar al numero 3 }
Uses Estructu;
Var
FilaOrigen, FilaDestino: Fila;
Begin
Uses Estructu;
Var
FilaOrigen, FilaDestino: Fila;
Begin
ReadFila(FilaOrigen);
inicFila(FilaDestino, ' ' );
while not Filavacia(FilaOrigen) and (primero(FilaOrigen) <> 3)do
Agregar(FilaDestino, extraer(FilaOrigen));
ReadFila(FilaOrigen);
inicFila(FilaDestino, ' ' );
while (primero(FilaOrigen) <> 3) and (not Filavacia(FilaOrigen))do
Agregar(FilaDestino, extraer(FilaOrigen));
WriteFila(FilaOrigen);
WriteFila(FilaDestino);
end.
WriteFila(FilaOrigen);
WriteFila(FilaDestino);
end.
¡MAL! IMPORTA EL ORDEN, no se
puede preguntar por el primer
elemento de una Fila vacía
Problema
Program ComparaCantidadElementos;
{Este programa analiza si dos filas tienen la misma cantidad de elementos. Si es así, el programa
pone el tope de la pila AUX en la pila IGUAL sino pone el tope de AUX en la Pila DISTINTO. }
• Analizar si dos filas tienen la misma
cantidad de elementos. Si es así, poner el
tope de la pila AUX en la pila IGUAL sino
poner el tope de AUX en la Pila
DISTINTO.
• Entender el problema y su objetivo
• Entender que datos se manejan
• Pensar en una estrategia para resolverlo
• Y LUEGO Codificar
Uses Estructu;
Var
Origen1, Origen2, Descarte: Fila;
Aux, Igual, Distinta: Pila;
Begin
ReadFila(Origen1);
ReadFila(Origen2);
InicFila(Descarte, ' ' );
InicPila(Aux, '1' );
InicPila(Igual, ' ' );
InicPila(Distinta, ' ' );
while not (Filavacia(Origen1)) and not (Filavacia(Origen2)) do
begin
Agregar(Descarte, extraer(Origen1));
Agregar(Descarte, extraer(Origen2));
end;
if (Filavacia(Origen1)) and (Filavacia(Origen2)) then
Apilar(Igual, Desapilar(Aux))
else
Apilar(Distinta, Desapilar(Aux));
WritePila(Igual);
WritePila(Distinta);
end.
Comentarios de: Filas en Pascal (0)
No hay comentarios