Está en la página 1de 34

Lencguaje de

programación
6.1 PILAS
Pilas Las pilas suelen emplearse en los siguientes contextos:
Definición : •  Evaluación de expresiones en notación postfija (notación polaca inversa).
Es un tipo especial de lista abierta en la que •  Reconocedores sintácticos de lenguajes independientes del contexto
sólo se pueden insertar y eliminar nodos en •  Implementación de recursividad.
uno de los extremos de la lista. Estas
operaciones se conocen como "push" y "pop", El nodo típico para construir pilas es el
respectivamente "empujar" y "tirar". Además, siguiente
las escrituras de datos siempre son inserciones
de nodos, y las lecturas siempre eliminan el struct nodo {
nodo leído.
Estas características implican un    int dato;
comportamiento de lista LIFO (Last In First    struct nodo *siguiente;
Out), el último en entrar es el primero en salir.
};

Push

2
Elaboración del modelo de un elemento de la pila
Para definir un elemento de la pila será utilizado el tipo struct. El elemento de la pila contendrá un campo dato y un
puntero siguiente. El puntero siguiente tiene que ser de la misma clase que el elemento, de lo contrario no va a poder
apuntar hacia el elemento. El puntero siguiente permitirá el acceso al próximo elemento.

typedef struct ElementoLista {


char *dato;
struct ElementoLista *siguiente;
}Elemento;

3
Operaciones sobre pilas.
Para permitir las operaciones sobre la pila, se deben guardar ciertos elementos: el primer elemento, el número de
elementos. El primer elemento, que se encuentra en la cabeza de la pila, nos permitirá realizar la operación de recuperación
de los datos situados en la parte superior de la pila. Para ello, se utilizará otra estructura.

Crear:
Se crea la pila vacía. El puntero inicio indicará la dirección del primer elemento de la lista, la variable tamaño contiene el
número de elementos.

typedef struct ListaUbicación{


Elemento *inicio;
int tamaño;
} Pila;
 

4
Operaciones sobre pilas.
Apilar:
Se añade un elemento a la pila.(push). Esta operación
sirve para insertar un elemento e en la pila S, lo vamos a
escribir como: push(S,e). Después de hacer esta
operación sucede que: El elemento en la cima de la pila
S ahora es e.
(1)La operación push recibe: la dirección de una
estructura pila y un elemento entero.
(2) Incrementa el tope (cima) de la pila para agregar el
elemento en una posición libre de la pila.
(3) Asignando el valor e en la casilla S->top.

5
Operaciones sobre pilas.
Desapilar:
Esta operación sirve para retirar el elemento en la cima
de la pila S, lo vamos a escribir como: pop(S,e).
(1) La función devuelve un tipo entero al recibir la
dirección de una variable de tipo estructura pila (struct
stack *). Las líneas (4) y (5) son las mas importantes ya
que se almacena el valor que ser devuelto y se
decrementa el tope de la pila.

6
Operaciones sobre pilas.
Cima: El siguiente segmento de código ilustra cómo se han
Devuelve el elemento que esta en la cima de la pila. (top usado las funciones antes creadas para implementar
o peek).Esta función debe devolver un número entero y Stacktop, por supuesto que se pueden separar y crear
dejar la pila sin cambio. Para esto: una nueva función que haga lo mismo:
• Pop(&A)
• Mostrar el elemento A
• Push(&A,elemento).

7
Operaciones sobre pilas.
Vacía:
Devuelve cierto si la pila está vacía o falso en caso
contrario.

8
Pilas alojadas en arreglo.
Una pila es una colección
ordenada de objetos (arreglo)
estos permiten almacenar
colecciones ordenadas.
La desventaja de implementar
una pila mediante un arreglo es
que esta última es de tamaño
fijo, mientras que usando
punteros la pila puede ser de
tamaño dinámico.

9
Implantación De Procedimiento Recursivo Mediante Pilas

Un procedimiento o función contiene tanto variables locales como argumentos ficticios o parámetros. A
través de los argumentos se transmiten datos en las llamadas a los subprogramas, o bien, se devuelven valores
al programa o subprograma invocante. Además, el subprograma debe guardar la dirección de retorno al
programa que realiza la llamada. En el momento en que termina la ejecución de un subprograma el control pasa
a la dirección guardada. Ahora, el subprograma es recursivo, entonces además de la dirección de retorno, los
valores actuales de las variables locales y argumentos deben de guardarse ya que se usarán de nuevo cuando
el subprograma se reactive.

10
Implantación De Procedimiento Recursivo Mediante Pilas

Supongamos que se ha llamado al subprograma P, que tiene llamadas a si mismo, es decir, es recursivo.
El funcionamiento del programa recursivo P será: ü se crea una pila para cada argumento. ü se crea una pila
para cada variable local. ü se crea una pila para almacenar la dirección de retorno. Cada vez que se hace una
llamada recursiva a P, los valores actuales de los argumentos y de las variables locales se meten en sus pilas
para ser procesadas posteriormente. Asimismo, cada vez que hay un retorno a P procedente de una llamada
recursiva anterior, se restauran los valores de variables locales y argumentos de la simas de la pilas. Para la
obtención de la dirección de retorno es de suponer que el procedimiento P contiene una llamada recursiva en la
sentencia N. Entonces guarda en optar pila la dirección de retorno, que será la sentencia siguiente, la N+1. De
tal forma que cuando el nivel de ejecución del procedimiento P actual termine, o sea, alcance la sentencia end
final, usará dicha pila de direcciones para volver al nuevo nivel de ejecución.

11
6.6 Estructura Dinamicas de Datos
Pilas Para el manejo de los datos se cuenta con dos
Definición sobre Pilas: operaciones básicas: apilar (push), que coloca un objeto
Una pila es una lista ordinal o estructura de datos en en la pila, y su operación inversa, retirar (o desapilar,
la que el modo de acceso a sus elementos es de tipo pop), que retira el último elemento apilado.
LIFO / Last-in, First-out (Ultimo en llegar, Primero Por analogía con objetos cotidianos, una operación
en Salir) que permite almacenar y recuperar datos. apilar equivaldría a colocar un plato sobre una pila de
Esta estructura se aplica en multitud de ocasiones en platos, y una operación retirar a retirarlo.
el área de informática debido a su simplicidad y
ordenación implícita de la propia estructura.

Las pilas suelen emplearse en los siguientes contextos:


•          Evaluación de expresiones en notación postfija (notación polaca inversa).
•          Reconocedores sintácticos de lenguajes independientes del contexto Push
•          Implementación de recursividad.

12
Operaciones sobre Pilas
Operaciones Pop.

Las operaciones a realizar para realizar la


inserción en la pila son muy simples, hacer
que el nuevo nodo apunte a la cima anterior,
y definir el nuevo nodo como cima de la
pila.

Vamos a ver un ejemplo de una inserción


POP.

13
Operaciones en
pila
Operación Push. Si aplicamos la operación pop a la pila de 4
elementos representada arriba el resultado
Cuando se elimina un elemento de la pila, sería:
el elemento que se borra es el elemento
situado en la cima de la pila, el que
menos tiempo lleva en la estructura
Las operaciones a realizar son muy
simples, avanzar el puntero que apunta a
la cima y extraer la cima anterior.

14
Pilas alojadas en arreglo
Una pila puede ser fácilmente implementada utilizando
arreglos y manteniendo siempre una referencia a la cima, es
decir, un índice que indique la posición del último elemento
agregado. Cada que un elemento se agrega a la pila
incrementamos en 1 dicho índice y agregamos el nuevo
elemento al arreglo en la posición que la cima indica. En el
caso de un pop realizamos lo opuesto: regresamos el
elemento que se encuentra en la posición de la cima y
decrementamos su valor en 1. Se podría también eliminar
(volver nulo) el valor en dicha posición antes de regresarlo,
pero de todas formas estaremos ocupando la misma cantidad
de memoria por lo que la supuesta optimización no tendría
sentido.

15
Unidad 7 programación avanzada

16
7.1 excepciones y multi threading

Excepciones
Es un mecanismo que nos proporciona C++ para
tratar errores que ocurran en nuestro programa.
Con las excepciones podemos tratar errores lógico y
errores en tiempo de ejecución
Usando excepciones evitamos que un programa deje
de funcionar drásticamente, lo cual ocasionan
problemas considerables.
Se usa tres palabra clave:
1- Throw: lanza una excepción cuando aparece un
error-
2- Catch: captura una excepción para tratarla.
3- Try: identifica un bloque de código en el cual se
podrían activar excepciones concretas.

17
7.1 excepciones y multi threading

Multi threading
Es la clase de subproceso que representa un solo
subproceso en C ++. Para iniciar un hilo, simplemente
necesitamos crear un nuevo objeto hilo y pasar el código
de ejecución que se va a llamar (es decir, un objeto
invocable) al constructor del objeto. Una vez que se crea Una vez que un hilo ha comenzado, es posible que debamos esperar
el objeto, se lanza un nuevo hilo que ejecutará el código a que termine antes de poder tomar alguna acción. Por ejemplo, si
especificado en invocable. asignamos la tarea de inicializar la GUI de una aplicación a un hilo,
debemos esperar a que termine el hilo para asegurarnos de que la GUI
Un invocable puede ser cualquiera de los tres se haya cargado correctamente.
1- Un puntero de función Para esperar un hilo, use la función thread join () . Esta función hace
2- Un objeto de función que el hilo actual espere hasta que el hilo identificado por * this haya
terminado de ejecutarse.
3- Una expresión lambda
Después de definir invocable, páselo al constructor.
Esperando que terminen los hilos

18
7.1 excepciones y multi threading

Ejemplo usando Multi threading con varios invocable

19
7.2 fundamentos de la programación orientada a objetos:

Que es POO.
La Programación Orientada a Objetos (POO) no es más que un
nuevo paradigma de programación.
La POO tiene como su más importante característica la reutilización
del código, mismo que debe ser simple y lo suficientemente
comprobado antes de estar disponible para ser utilizado. Hablar de
reutilización de código, significa que una vez que se realiza la
implementación, esta solución debe ser lo más parametrizable posible
para que sea general y por lo tanto pueda ser invocado desde la mayor
cantidad de casos posibles en los que sea requerido.

20
7.2 fundamentos de la programación orientada a objetos:

Conceptos dentro de POO ATRIBUTO


CLASE Características individuales que diferencian un objeto de otro y
determinan su apariencia, estado u otras cualidades.
Define atributos y métodos que implementa la estructura de datos.
Define comportamientos y características que van a tener los objetos Además son las variables que se crean dentro de la clase, las cuales
toman valores distintos para cada objeto

OBJETO
Un objeto es una instancia de una clase. MÉTODO
Puede ser identificado en forma única por su Definen el comportamiento de los objetos de una clase, es un conjunto de
nombre, el cuál es representado por los valores instrucciones que realizan una determinada tarea y son similares a las funciones de los
de sus atributos en un momento en lenguajes estructurados.
particular.Al ser una instancia de una clase, es
Además de dar la posibilidad de comportamiento a los objetos, son muy usados
el que decide cómo se va a comportar de
también para ir separando código que es muy extenso y en la definición de la clase se
acuerdo a lo que le haya definido la clase.
note mayor orden y quede más entendible. Y con esto ir dando pasos a la modularidad y
reusabilidad.
HERENCIA
Es el mecanismo que permite que una clase A herede propiedades de una clase B. Se Dice que "A hereda de B". Objetos de la clase A
tienen así acceso a los atributos y métodos de la clase B sin necesidad de redefinirlos.
21
7.2 fundamentos de la programación orientada a objetos:
Ejemplo, para un sistema de facturación se necesitará crear una clase Detalle, y se creará un
objeto detalle, que deberá calcular el acumulado de las compras realizadas (método
CalcularSubtotal), calcular el descuento que se aplica bajo ciertas condiciones (método
CalcularDescuento), calcular el impuesto que se aplica sobre las compras realizadas (método
CalcularImpuesto), calcular el total a pagar (método CalcularTotal). La siguiente figura ilustra dos
de las clases que pueden crearse en el sistema de facturación, y en color azul se muestran los
cálculos que son las funcionalidades de la clase Detalle.
También se ha señalado la clase Factura, que representa los datos de la factura (atributos:
nroFactura, CICliente, Fecha, entre otros) y como funcionalidad, se debería considerar el hecho de
generar automáticamente el número de factura).
Esto significa que bajo esta modalidad de programación, se crearán mucho más líneas de
código que las que se crearían en un modelo de programación secuencial, sin embargo este
aumento de codificación asegurará un código más sencillo y por lo tanto más seguro y validado.
Como se observa, la POO utiliza una terminología diferente a la utilizada hasta el momento,
entre los principales nuevos términos están: Clases, Objetos, Atributos, Métodos, entre otros,
mismos que ser irán describiendo a continuación.

22
7.2 fundamentos de la programación orientada a objetos:

Ejemplo: Estructuras dinámicas

23
7.2 fundamentos de la programación orientada a objetos:

Ejemplo: Con Poo

24
7.2 fundamentos de la programación orientada a objetos:

conceptos avanzados: de entrada/salida

25
Extra graphics

26
SlidesCarnival icons are editable shapes.

This means that you can:


● Resize them without losing quality.
● Change fill color and opacity.

Isn’t that nice? :)

Examples:

27
Big concept
Pila

28
You can also split your content

White Black
Is the color of milk and fresh snow, the color Is the color of ebony and of outer space. It has
produced by the combination of all the colors been the symbolic color of elegance,
of the visible spectrum. solemnity and authority.

29
Use charts to explain your ideas

White Gray Black

30
89,526,124$
That’s a lot of money

185,244 users
And a lot of users

100%
Total success!
31
Let’s review some concepts
Yellow Blue Red
Is the color of gold, butter and ripe Is the colour of the clear sky and the Is the color of blood, and because of
lemons. In the spectrum of visible light, deep sea. It is located between violet this it has historically been associated
yellow is found between green and and green on the optical spectrum. with sacrifice, danger and courage.
orange.

Yellow Blue Red


Is the color of gold, butter and ripe Is the colour of the clear sky and the Is the color of blood, and because of
lemons. In the spectrum of visible light, deep sea. It is located between violet this it has historically been associated
yellow is found between green and and green on the optical spectrum. with sacrifice, danger and courage.
orange.

32
Diagrams and infographics

33
� Now you can use any emoji as an icon!
And of course it resizes without losing quality and you can change the color.


How? Follow Google instructions
https://twitter.com/googledocs/status/730087240156643328

✋👆👉👍👤👦👧👨👩👪💃🏃💑❤😂😉😋
😒😭😸💣
👶😸 🐟🍒🍔💣 📌📖🔨🎃🎈🎨🏈🏰🌏🔌🔑
and
many more...

34

También podría gustarte