Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia"

Transcripción

1 Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 3: El TAD Lista lineal Prof. Montserrat Serrano Montero

2 ÍNDICE El TAD lista lineal Implementación con estructuras estáticas Implementación con variables dinámicas El TAD lista enlazada Operaciones para lista enlazada ordenada

3 (significa que cada elemento tiene un único predecesor, excepto el primero, y un único sucesor, excepto el último) EL TAD LISTA LINEAL Conjunto de valores: - Una lista es una secuencia elementos de un determinado tipo la lista es homogénea. (a 1, a 2, a 3,..., a n ) donde n 0, si n = 0, la lista es vacía. - Los elementos de una lista tienen la propiedad de estar ordenados de forma lineal, según las posiciones que ocupan. a i precede a a i+1 para i = 1, 2, 3,..., n- 1 a i sucede a a i-1 para i = 2, 3, 4,..., n

4 EL TAD LISTA LINEAL Observaciones: - La lista es una estructura dinámica desde el punto de vista lógico, ya que su longitud dependerá del número de elementos que tenga, aumentará al insertar y se reducirá al suprimir. - El TAD lista puede implementarse de formas estática o dinámica. - Igualmente, considerar las operaciones básicas depende de: a) La implementación elegida para las listas b) El problema que se va a resolver.

5 EL TAD LISTA LINEAL Especificación informal: Sintaxis Semántica TAD lista (VALORES: secuencia de elementos; OPERACIONES: Inicia, Localiza, Recupera, Inserta, SuprimeDir, Modifica) Inicia (Lista) Lista Efecto: Devuelve una lista vacía. Localiza (Lista, Elemento) Posicion Efecto: Devuelve la posición donde está el Elemento de la Lista. Si no está, devuelve nulo. Recupera (Lista, Posición) Elemento Efecto: Devuelve el Elemento que está en la Posición. Excepción: Que la posición no sea un índice de la Lista. Inserta (Lista, Posición, Elemento) Lista Efecto: Devuelve la Lista después de añadir el Elemento en la Posición. Excepciones: Que la posición no sea un índice de la Lista, que la Lista esté llena. SuprimeDir (Lista, Posicion) Lista Efecto: Devuelve la lista sin el elemento de la Posición especificada. Excepciones: Que la posición no sea un índice de la Lista, que la Lista sea vacía. Modifica (Lista, Posicion, Elemento) Lista Efecto: Devuelve la lista con el nuevo Elemento en la Posición especificada. Excepciones: Que la Posición no sea un índice de la Lista, que la Lista sea vacía.

6 EL TAD LISTA LINEAL Especificación formal: TAD lista (VALORES: secuencia de elementos; OPERACIONES:Inicia, Localiza, Recupera, Inserta, SuprimeDir, Modifica) Sintaxis: *Inicia (Lista ) Lista Localiza (Lista, Elemento) Posicion Recupera (Lista, Posicion) Elemento *Inserta (Lista, Posicion, Elemento) Lista SuprimeDir (Lista, Posicion) Lista Modifica (Lista, Posicion, Elemento) Semántica: Lista SuprimeDir (Inicia (Lista )) error SuprimeDir (Inserta (L, P, E), P) L Modifica (Inicia (Lista ), P, E) error Modifica (Inserta (L, P, E), P, E1) Inserta (L,P,E1) * Constructores

7 TAD E IMPLEMENTACIÓN En este punto hay que marcar la distinción entre un TAD y la naturaleza de su implementación. Ambos conceptos pueden considerarse de forma estática o dinámica. Ej: 1. Una variable de tipo array es una estructura estática, pero puede almacenarse en memoria de forma estática (declarada en la zona de declaración de variables) o de forma dinámica (variables dinámicas). 2. Una pila o una lista son por naturaleza dinámicas pero pueden implementarse con asignación de memoria estática (dentro de un array) o con asignación de memoria dinámica (variables dinámicas y punteros).

8 IMPLEMENTACIÓN ESTÁTICA unit LEstatic; interface const Max =...; {especifica tamaño máximo lista} type tinfo =...;{tipo de campo de información lista} Lista = record Elementos: array [1..Max] of tinfo; Ultimo: integer Posicion = 0.. Max; procedure Inicia (var L: Lista); function Localiza (L: Lista; E: tinfo): Posicion; procedure Recupera (L: Lista; P:Posicion; var E: tinfo); procedure Inserta (var L: Lista; P:Posicion; E: tinfo); procedure SuprimeDir (var L: Lista; P: Posicion); procedure Modifica (var L: Lista; P: Posicion; E: tinfo);

9 IMPLEMENTACIÓN ESTÁTICA implementation procedure Inicia; L.Ultimo := 0 function Localiza; var Q: Posicion; Lc: boolean; Q := 1; Lc := false; while (Q <= L.Ultimo) and not Lc do Lc := L.Elementos [Q] = E; if not Lc then Q := Q + 1 if Lc then Localiza := Q else Localiza := 0

10 IMPLEMENTACIÓN ESTÁTICA implementation (continúa...) procedure Error (n: integer); {procedimiento oculto que sólo se ve en el módulo} case n of 1: writeln ( Error: posición no existe ); 2: writeln ( Error: lista llena. No se pueden añadir elementos); 3: writeln ( Error: lista vacía. No se pueden suprimir o modificar elementos ); {case} readln {Pausa} procedure Recupera; if (P > L.Ultimo) or (P < 1) then Error (1) else E := L.Elementos [P]

11 IMPLEMENTACIÓN ESTÁTICA implementation (continúa...) procedure Inserta; var Q: Posicion; if L.Ultimo = Max then Error (2) else if (P > L.Ultimo) or (P < 1) then Error (1) else for Q := L.Ultimo downto P do L.Elementos [Q + 1] := L.Elementos [Q] ; L.Ultimo := L.Ultimo + 1; L.Elementos [P] := E end procedure Suprime; var Q: Posicion; if L.Ultimo = 0 then Error (3) else if (P > L.Ultimo) or (P < 1) then Error (1) else L.Ultimo := L.Ultimo 1; for Q := P to L.Ultimo do L.Elementos [Q] := L.Elementos [Q+1] end

12 IMPLEMENTACIÓN ESTÁTICA implementation (continúa...) procedure Modifica; if L.Ultimo = 0 then Error (3) else if (P > L.Ultimo) or (P < 1) then Error (1) else L.Elementos [P] := E end.

13 IMPLEMENTACIÓN DINÁMICA Las desventajas de la implementación anterior son: a) Estructura rígida. Inserción y supresión desplazando el resto del array. b) No se utiliza de forma óptima la memoria. Hay que reservar espacio en memoria para toda la estructura durante toda la ejecución. Estos inconvenientes pueden solucionarse utilizando variables dinámicas. Los elementos de la lista dinámica se definen como datos de tipo registro con, al menos, dos componentes: 1. Almacén del dato de la lista. 2. Puntero, que almacena la posición de memoria del siguiente elemento de la lista o nil si es el último elemento.

14 EL TAD LISTA ENLAZADA Una lista dinámica simple se llama lista enlazada. Cada uno de los elementos de una lista dinámica se llaman nodos. El número de nodos puede variar rápidamente en un proceso, aumentando por inserción de nodos o disminuyendo por supresión de nodos. Una lista enlazada es aquella en la que el orden de las componentes se determina mediante un campo enlace explícito en cada nodo. Las operaciones sobre una lista enlazada permiten acceder a la misma mediante un puntero externo, que contiene la dirección del primer nodo de la lista.

15 TAD LISTA IMPLEMENTADO CON LISTAS ENLAZADAS unit LDinami; interface type tinfo =...;{tipo de campo de información lista} Ptr = ^Nodo; Nodo = record Info: tinfo; Sig: Ptr {Excepción a la regla de que los identificadores deben definirse antes de usarse. El tipo Ptr se define como un puntero a un registro del tipo Nodo, el cual no ha sido aún definido.} procedure Inicia (var L: Ptr); function Localiza (L: Ptr; E: tinfo): Ptr; procedure Recupera (L: Ptr; P: Ptr; var E: tinfo); procedure Inserta (var L: Ptr; P: Ptr; E: tinfo); procedure SuprimeDir (var L: Ptr; P: Ptr); procedure Modifica (L: Ptr; P: Ptr; E: tinfo);

16 TAD LISTA IMPLEMENTADO CON LISTAS ENLAZADAS implementation procedure Inicia; L := nil L function Localiza; while (L^.Sig < > nil) and (L^.Info < > E) do L := L^.Sig; if L^.Info < > E then Localiza := nil else Localiza := L L^.Sig L E

17 TAD LISTA IMPLEMENTADO CON LISTAS ENLAZADAS implementation (continúa...) procedure Recupera; if not (L=nil) then if (P < > nil) then E := P^.Info function Anterior (P: Ptr; L: Ptr): Ptr; {El anterior de lista vacía, de dirección no existente y del primer nodo de la lista, devuelve nil} if (L = nil) or (P = nil) or (L = P) then Anterior := nil else while (L^.Sig<>P) and (L^.Sig<>nil) do L := L^.Sig; if L^.Sig = P then Anterior := L else Anterior := nil end {else} L L^.Sig = P

18 TAD LISTA IMPLEMENTADO CON LISTAS ENLAZADAS a) b) c) implementation (continúa...) procedure Inserta; {Inserta en L un nodo con el var A: Ptrnodo; campo E, delante del nodo de dirección P} new (A); A^.Info := E; E if (L = nil) then L := A {si L vacía} else if P = L then {si P primer nodo} A^.Sig := P; L := A end A L=P A^.Sig = nil L=A A^.Sig = P else {si P es oto nodo, A entre anterior y P} Anterior (P, L)^.Sig := A; A^.Sig := P end E L Anterior (P, L)^.Sig

19 TAD LISTA IMPLEMENTADO CON LISTAS ENLAZADAS implementation (continúa...) procedure SuprimeDir; if P = L then {Primer nodo} L := L^.Sig; dispose (P) end else if Anterior (P, L) < > nil then {Enlaza anterior con siguiente} Anterior (P, L)^.Sig := P^.Sig dispose (P) end P = L L???? P???? Anterior (P,L)^.Sig:=P^.Sig procedure Modifica; if not (L = nil) then if (P < > nil) then P^.Info := E end.

20 CLASIFICACIÓN OPERACIONES DE TAD LISTA ENLAZADA Iniciar una lista enlazada: - Inicia (L) - EsVacia(L) Búsqueda en una lista: - Localiza (E, L) -Existe (E, L) Operaciones de dirección: - Siguiente (P, L) - Anterior (P, L) - Último (L) Inserción de un elemento en la lista: -Inserprim(E, L) - Inserta (E, P, L) - Inserfin (E, L) Supresión de un elemento de una lista: - Suprime (E, L) - SuprimeDir (P, L) - Anula (L) Recorrido de una lista: - Visualiza (L)

21 ALGUNAS OPERACIONES DEL TAD LISTA ENLAZADA EsVacia (L): Función que determina si L es vacía o no. Existe (E, L): Función que determina si el elemento E se encuentra en L o no. Inserprim (E, L): Inserta un nodo con la información E como primer nodo de la lista. Inserfin (E, L): Inserta un nodo con el campo E como último nodo de la lista L. Suprime (E, L): Elimina el nodo de la lista que contiene E Siguiente (P, L): Función que devuelve la dirección del nodo siguiente a P. Anterior (P, L): Función que devuelve la dirección del nodo anterior a P. Primero (L): Función que devuelve la dirección del primer nodo de la lista L. Último (L): Función que devuelve la dirección del último nodo de la lista L. Anula (L): Esta operación vacía la lista L. Visualiza (L): Visualiza el campo de información de todos los elementos de la lista.

22 IMPLEMENTACIÓN DEL TAD LISTA ENLAZADA unit LEnlaza; interface type tinfo =...;{tipo de campo de información lista} Ptr = ^Nodo; Nodo = record Info: tinfo; Sig: Ptr procedure Inicia ( var L: Ptr); function Esvacia (L: Ptr): boolean; function Localiza (E: tinfo; L: Ptr): Ptr; function Existe (E: tinfo; L: Ptr): boolean; function Anterior (P, L: Ptr): Ptr; function Siguiente (P, L: Ptr):Ptr; function Ultimo (L: Ptr): Ptr; procedure Inserprim (E: tinfo; var L: Ptr); procedure Inserta (E:tInfo; P:Ptr; var L:Ptr); procedure Inserfin (E: tinfo; var L: Ptr); procedure Suprime (E: tinfo; var L: Ptr); procedure Suprimedir (P: Ptr; var L: Ptr); procedure Anula (var L: Ptr); procedure Visualiza (L: Ptr);

23 IMPLEMENTACIÓN DEL TAD LISTA ENLAZADA implementation function EsVacia; EsVacia:= L=nil function Existe; if not EsVacia (L) then while (L^.Sig<>nil) and (L^.Info<>E) do L := L^.Sig; Existe := (L^.Info = E) else Existe := false

24 IMPLEMENTACIÓN DEL TAD LISTA ENLAZADA implementation (continúa...) function Siguiente; if EsVacia (L) or (P = nil) then Siguiente := nil else Siguiente := P^.Sig P P^.Sig function Ultimo; if EsVacia(L) then Ultimo := nil else while (L^.Sig<>nil) do L := L^.Sig; Ultimo := L; end L L^.Sig = nil

25 IMPLEMENTACIÓN DEL TAD LISTA ENLAZADA implementation (continúa...) function Crea (E: tinfo): Ptr; var N: Ptr; new (N); N^.Info := E; N^.Sig := nil; Crea := N procedure Inserprim; var A: Ptr; A := Crea (E); A^.Sig := L; L := A A A L E L E N N^.Sig = nil E A^.Sig = L

26 IMPLEMENTACIÓN DEL TAD LISTA ENLAZADA implementation (continúa...) procedure Inserfin; var A: Ptr; A := Crea (E); if EsVacia (L) then L := A else Ultimo(L)^.Sig := A; procedure Suprime; var A: Ptr; A := Localiza(E, L); if A<>nil then if A = L then L := L^.Sig {primer nodo} else Anterior (A, L)^.Sig := A^.Sig; dispose(a) end {if} L L Ultimo(L)^.Sig=A L L??? E???

27 IMPLEMENTACIÓN DEL TAD LISTA ENLAZADA implementation (continúa...) procedure Anula; while not EsVacia (L) do SuprimeDir (Ultimo(L), L) procedure Visualiza; while L< > nil do write(l^.info, ); L := L^.Sig end end.

28 TAD LISTA ORDENADA En las listas vistas anteriormente los elementos están ordenados con respecto a la posición que ocupan dentro de la lista. Si el tipo de información que representa cada elemento es un tipo ordinal se puede mantener la lista ordenada respecto a dicho campo. La formación de una lista ordenada se basa en dos operaciones: Posinser (E, L): Devuelve la dirección del nodo anterior al que contiene el campo E según la ordenación dada y nil si es el anterior al primero. Inserorden (E, L): Si la lista está vacía el nodo se inserta como el primero de la lista, si no se inserta en la posición que le corresponde.

29 IMPLEMENTACIÓN DE OPERACIONES LISTA ORDENADA function Posinser (E: tinfo; L: Ptr): Ptr; var T: Ptr; T := nil; if not EsVacia (L) then while (E >= L^.Info) and (L^.Sig <> nil) do T := L; L := L^.Sig if E >= L^.Info then T := L Posinser := T L L^.Sig T E

30 IMPLEMENTACIÓN DE OPERACIONES LISTA ORDENADA procedure Inserorden (E: tinfo; var L: Ptr); var A, N: Ptr; N := Crea (E); if EsVacia(L) then L := N else A := Posinser (E, L); if A = nil then {primera posición} N^.Sig := L; L := N else {posición intermedia} N^.Sig := A^.Sig; A^.Sig := N end end {else} L L N 15 A A^.Sig 15 N^.Sig N

31 IMPLEMENTACIÓN DE OPERACIONES LISTA ORDENADA Ahora la operación de búsqueda es más eficiente, ya que para decidir si un elemento está o no en la lista, basta con encontrar un elemento mayor. Buscorden (E, L): Devuelve la dirección del nodo que contiene el campo e o nil si no se encuentra en la lista. function Buscorden (E: tinfo; L: Ptr): Ptr; while (L^.Sig <> nil) and (L^.Info < E) do L := L^.Sig; if L^.Info = E then Buscorden := L else Buscorden := nil El resto de operaciones son iguales a las listas no ordenadas. Cambiar las llamadas a Localiza por Buscorden.

32 Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 3: TAD Pila Prof. Montserrat Serrano Montero

33 ÍNDICE Definición Especificación Implementación estática Implementación dinámica Aplicaciones de pilas Esquema recursivo TAD Pila

34 EL TAD PILA - Una pila es una lista (estructura dinámica) de elementos en la que todas las inserciones y supresiones se realizan por el mismo extremo de la lista. - La característica de esta estructura de datos es que el primer elemento obtenido es el último que se ha introducido; motivo por el que se conoce como estructura Lifo (Last in first out). - Se utiliza siempre que se quiere recuperar una serie de elementos en orden inverso a como se introdujeron. - Ejs.: pila de platos, de libros, etc.

35 EL TAD PILA Especificación informal: TAD pila (VALORES: pila de elementos; OPERACIONES: Inicia, EsVacia, Apilar, Desapilar, Cima) Inicia ( ) Pila Efecto: Devuelve una pila vacía. EsVacia (Pila) Boolean Efecto: Devuelve true si la pila está vacía y false en caso contrario. Apilar (Pila, Elemento) Pila Efecto: Devuelve una pila resultado de poner el elemento en la cima de la pila. Excepción: Que la pila esté llena. Desapilar (Pila) Pila Efecto: Devuelve la Pila sin el elemento de la cima. Excepción: Si la Pila está vacía produce error. Cima (Pila) Elemento Efecto: Devuelve el Elemento cima de la Pila. Excepción: Si la Pila está vacía produce error.

36 EL TAD PILA Especificación formal: TAD pila (VALORES: pila de elementos; OPERACIONES: Inicia, EsVacia, Apilar, Desapilar, Cima) Sintaxis: *Inicia ( ) Pila EsVacia (Pila) Boolean *Apilar (Pila, Elemento) Pila Desapilar (Pila) Pila Cima (Pila) Elemento Semántica: EsVacia (Inicia ( )) true EsVacia (Apilar (P, E)) false Cima (Inicia ( )) error Cima (Apilar (P, E)) Ε Desapilar (Inicia ( )) error Desapilar (Apilar (P, E)) P * Constructores

37 IMPLEMENTACIÓN ESTÁTICA unit PEstatic; interface const Max =...; {especifica tamaño máximo lista} type tinfo =...;{tipo de campo de información lista} Pila = record Elementos: array [1..Max] of tinfo; ultimo: integer procedure Inicia (var P: Pila); function EsVacia (P: Pila): Boolean; procedure Apilar (var P: Pila; E: tinfo); procedure Desapilar (var P: Pila); procedure Cima (P: Pila; var E: tinfo);

38 IMPLEMENTACIÓN ESTÁTICA implementation procedure Inicia; P.ultimo := 0 function EsVacia; EsVacia:= P.ultimo = 0; procedure Error (n: integer); {procedimiento oculto que sólo se ve en el módulo} case n of 1: writeln ( Error: Pila llena. ); 2: writeln ( Error: Pila vacía. ); {case} readln

39 IMPLEMENTACIÓN ESTÁTICA implementation (continúa...) procedure Apilar; if P.ultimo = Max then Error (1) else P.ultimo := P.ultimo +1; P.Elementos [P.ultimo] := E end procedure Desapilar; if EsVacia (P) then Error (2) else P.ultimo := P.ultimo - 1; procedure Cima; if EsVacia (P) then Error (2) else E := P.Elementos [P.ultimo]

40 IMPLEMENTACIÓN DINÁMICA La pila será un puntero a un nodo, puntero que señala el extremo de una lista enlazada por el que se efectúan las operaciones de manejo de la pila: P

41 TAD PILA IMPLEMENTADO CON LISTAS ENLAZADAS unit PDinami; interface type tinfo =...; {tipo de campo de información lista} Ptr = ^Nodo; Nodo = record Info: tinfo; Sig: Ptr procedure Inicia (var P: Ptr); function EsVacia (P: Ptr): boolean; procedure Apilar (var P: Ptr; E: tinfo); procedure Desapilar (var P: Ptr); procedure Cima (P: Ptr; var E: tinfo);

42 TAD PILA IMPLEMENTADO CON LISTAS ENLAZADAS implementation procedure Inicia; P := nil function EsVacia; EsVacia := P = nil procedure Apilar; var aux: ptrnodo; new (aux); with aux^ do (1) Info := E; (2) Sig := P; (3) P := aux P 15 8 aux P 15 8 aux 1 (1) (3) (2)

43 TAD PILA IMPLEMENTADO CON LISTAS ENLAZADAS implementation (continúa...) procedure Desapilar; var aux: Ptr; P if not EsVacia(P) then 15 (1) aux := P; (2) P := P^.Sig; 8 (3) dispose(aux); end else writeln ( Error: Pila vacía ) procedure Cima; if not EsVacia(P) then E := P^.Info else writeln ( Error: Pila vacía ) Pila (1) (3) (2) aux P ???? 8 aux

44 APLICACIONES DE LAS PILAS a) Eliminar la recursividad. b) Transformar expresiones aritméticas de unas notaciones a otras: 1. Infija: es la empleada normalmente y requiere el uso de paréntesis para modificar la prioridad de los operadores. 2. Prefija o polaca: es aquella en la que el operador se coloca delante de los dos operandos. En ella, no es necesario el uso de paréntesis. 3. Postfija o polaca inversa: coloca el operador a continuación de sus dos operandos. La ventaja que ofrece es que la expresión puede evaluarse de izquierda a derecha recorriéndola una sola vez.

45 A) ELIMINAR LA RECURSIVIDAD En cada llamada se añade una tabla de activación en una pila denominada recursiva. En esta pila se almacenan los argumentos y objetos locales con su valor en el momento de producirse la llamada. La recursividad se puede implementar mediante una unidad pila. Bajo esta perspectiva la recursividad se convierte en un par de bucles. El primero apila, el segundo desapila y evalúa.

46 EJEMPLO: FACTORIAL DE n function factorial (n: word): real; var pila: Ptr; i: word; fac: real; Inicia (pila); {primer bucle: apila las distintas llamadas} for i := n downto 1 do Apilar (i, pila); {Segundo bucle: resuelve las llamadas} fac:=1 {caso base} while pila < > nil do fac := Cima(pila) * fac; Desapilar(pila) factorial := fac function factorial (n: word): real; if n = 0 then factorial :=1 else factorial := n*factorial (n-1)

47 B) EVALUAR EXPRESIONES ARITMÉTICAS Pasos que sigue el ordenador: a) Transformar la expresión de infija a postfija. b) Evaluar la expresión postfija. Ejemplo inverso: a) Postfija a infija: Postfija: AB+CD*AB-/- Infija: ((A+B)-((C*D)/(A-B))) B (A+B) D (C*D) A C (A+B) (A+B)

48 B) EVALUAR EXPRESIONES ARITMÉTICAS B (A-B) ((C*D)/(A-B)) A (C*D) (A+B) (C*D) (A+B) (A+B) ((A+B)-((C*D) /(A-B))) b) Se calcularía el valor expresión sustituyendo los correspondientes valores, respetando el orden de operación.

49 ESQUEMAS RECURSIVOS CON PILAS uses Upila;... procedure X (var P); var elem: telem; if not EsVacia(P) then Cima (P, elem); Desapilar (P); Operación (elem); X (P); Apilar (P, elem); end Desapilar (P, elem);

50 IMPLEMENTACIÓN PILAS procedure Desapilar (var P: Ptr; var E: tinfo); var aux: Ptr; if not EsVacia (P) then E := P^.Info; aux := P; P:= P^.Sig; dispose (aux); end else writeln ( Error: Pila vacía )

51 EJ. ESQUEMA RECURSIVO Implementar un algoritmo en Pascal que cuente el número de elementos de una pila de forma recursiva sin utilizar ninguna estructura de datos auxiliar. a) Escribir la sección interface de la unidad Pila. b) function Contar (var P: Ptr): integer; var long, elem: integer; if not EsVacia (P) then Desapilar (P, elem); long := Contar (P) + 1; Apilar (P, elem); Contar := long; end else Contar := 0

52 Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 3:TAD cola Prof. Montserrat Serrano Montero

53 ÍNDICE Definición Especificación del TAD Implementaciones estáticas Implementación dinámica Esquemas recursivos

54 EL TAD COLA - Una cola es una lista de elementos, en la cual las eliminaciones se realizan por el frente o principio de la cola, y los nuevos elementos son añadidos por el otro extremo, llamado fondo o final de la cola. - En esta estructura el primer elemento que entra es el primero en salir, por eso se les llama listas Fifo (First in, first out). - Ejs.: espectadores esperando en la taquilla de un cine, tareas a realizar por una impresora, etc. - Las colas son estructuras de datos dinámicas.

55 EL TAD COLA Especificación informal: TAD cola (VALORES: cola de elementos; OPERACIONES: Inicia, EsVacia, Primero, Encolar, Desencolar); Inicia ( ) Cola Efecto: Devuelve una cola vacía. EsVacia (Cola) Boolean Efecto: Devuelve true si la cola está vacía y false en caso contrario. Primero (Cola) Elemento Efecto: Devuelve el Elemento Frente de la cola. Excepción: Si la Cola está vacía produce error. Encolar (Cola, Elemento) Cola Efecto: Añade un nuevo Elemento a la Cola por el Final. Excepción: Que la cola esté llena. Desencolar (Cola) Cola Efecto: Elimina el elemento Frente de la cola. Excepción: Si la Cola está vacía produce error.

56 EL TAD COLA Especificación formal: TAD cola (VALORES: cola de elementos; OPERACIONES: Inicia, EsVacia, Primero, Encolar, Desencolar) Sintaxis: *Inicia ( ) Cola EsVacia (Cola) Boolean Primero (Cola, Elemento) Cola *Encolar (Cola) Cola Desencolar (Cola) Cola Semántica: EsVacia (Inicia ( )) true EsVacia (Poner (Cola, E)) false Primero (Inicia ( )) Primero (Encolar (Cola, E)) error si EsVacia (Cola) entonces E si_no Primero (Cola) Desencolar (Inicia ( )) error Desencolar (Encolar (Cola, E)) si EsVacia (Cola) then Inicia ( ) si_no Encolar (Desencolar (Cola), E)

57 IMPLEMENTACIÓN ESTÁTICA unit CEstatic; interface const Max =...; {especifica tamaño máximo lista} type Posicion = 0..Max; tinfo =...; {tipo de campo de información lista} Cola = record Elementos: array [1..Max] of tinfo; frente, final: Posicion procedure Inicia (var C: Cola); function EsVacia (C: Cola): boolean; procedure Primero (C: Cola; var E: tinfo); procedure Encolar (var C: Cola; E: tinfo); procedure Desencolar (var C: Cola);

58 IMPLEMENTACIÓN ESTÁTICA implementation procedure Inicia; C.frente := 1; C.final := 0 function EsVacia; EsVacia := C.final < C.frente function EsLlena (C: Cola): boolean; EsLlena := C.final = Max procedure Primero; if not EsVacia (C) then E := C.Elementos [C.frente]

59 IMPLEMENTACIÓN ESTÁTICA implementation (continúa...) procedure Encolar; if not EsLlena (C) then with C do final := final +1; Elementos [final] := E end procedure Desencolar; if not EsVacia (C) then for i:= 1 to C.final-1 do C.Elementos [i] := C.Elementos [i+1]; C.final:=C.final-1; end end.

60 IMPLEMENTACIÓN CIRCULAR unit CCEstatic; interface const long =...; {especifica tamaño máximo lista} type Posicion = 0..long; tinfo =...; {tipo de campo de información lista} Cola = record Elementos: array [1..long] of tinfo; frente, final: Posicion procedure Inicia (var C: Cola); function EsVacia (C: Cola): boolean; function Primero (C: Cola): tinfo; procedure Encolar (E: tinfo; var C: Cola); procedure Desencolar (var C: Cola); Es preferible esta implementación porque no se desplazan los elementos del array, al suprimir el primer elemento de la cola, como ocurre en la implementación lineal.

61 TAD COLA IMPLEMENTADO CON ARRAY CIRCULAR implementation function Siguiente (P: integer): integer; Siguiente := (P mod long) + 1 procedure Inicia; C.frente := 1; C.final := long; function EsVacia; EsVacia := Siguiente (C.final) = C.frente function EsLlena(C: Cola): boolean; EsLlena := Siguiente(Siguiente(C.final)) = C.frente

62 TAD COLA IMPLEMENTADO CON ARRAY CIRCULAR implementation (continúa...) function Primero; if not EsVacia (C) then Primero := C.Elementos[C.frente] procedure Encolar; if not EsLlena (C) then with C do final := Siguiente (final); Elementos [final] := E end procedure Desencolar; if not EsVacia (C) then C.frente := C.frente + 1

63 IMPLEMENTACIÓN DEL TAD COLA CON LISTAS ENLAZADAS unit CDinamic; interface type tinfo =...; {tipo de campo de información lista} Ptr = ^Nodoc; Nodoc = record Frente Info: tinfo; Sig: Ptr Cola = record frente, final: Ptr procedure Inicia (var C: Cola); function EsVacia (C: Cola): boolean; procedure Primero (C: Cola; var E: tinfo); procedure Desencolar (var C: Cola); procedure Encolar (var C: Cola; E: tinfo); Final

64 TAD COLA IMPLEMENTADO CON LISTAS ENLAZADAS implementation procedure Inicia; C.frente := nil; C.final := nil function EsVacia; EsVacia := C.frente = nil procedure Primero; if not EsVacia (C) then E := C.frente^.Info

65 TAD COLA IMPLEMENTADO CON LISTAS ENLAZADAS implementation (continúa...) procedure Desencolar; var A: ptr; if not EsVacia (C) then with C do A:= frente; frente := frente^.sig; if frente = nil then final := nil; dispose (A); end

66 TAD COLA IMPLEMENTADO CON LISTAS ENLAZADAS implementation (continúa...) function Crea (E: tinfo): Ptr; var A: ptr; new (A); A^.Info:= E; A^.Sig := nil; Crea := A procedure Encolar; var N: ptr; N := Crea (E) with C do if EsVacia (C) then frente := N else final^.sig := N; final := N; end end.

67 ESQUEMAS RECURSIVOS CON COLAS uses Ucola;... procedure X (var C); var elem: tinfo; if not EsVacia (C) then elem := Primero (C); Desencolar (C); Operación (elem); X (C); Encolar (C, elem); end Desencolar (C, elem)

68 ESQUEMAS RECURSIVOS CON COLAS Ejemplo: Dado el TAD Cola de enteros se pide implementar una operación que invierta el contenido de una Cola. a) Escribir la sección interface de la unidad cola. b) procedure Invertir (var C: Cola); var elem: integer; if not EsVacia (C) then Desencolar (C, elem); Invertir (C); Encolar (C, elem) end

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

TAD Lineales: Pila, Cola y Lista

TAD Lineales: Pila, Cola y Lista TAD Lineales: Pila, Cola y Lista Objetivos! Dar a conocer los TAD lineales pila, cola y lista! Presentar la especificación de cada uno de los TAD! Discutir implementaciones alternativas para cada uno de

Más detalles

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 3: ESTRUCTURAS DINÁMICAS LINEALES. LISTAS ENLAZADAS, PILAS Y COLAS ÍNDICE Listas enlazadas Pilas Colas DEFINICIÓN DEL TIPO LISTA

Más detalles

Estructura de datos Tema 6: Tablas de dispersión (hashing)

Estructura de datos Tema 6: Tablas de dispersión (hashing) Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 6: Tablas de dispersión (hashing) Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Funciones hash

Más detalles

Estructuras de Datos y Algoritmos. Árboles de Expresión

Estructuras de Datos y Algoritmos. Árboles de Expresión Estructuras de Datos y Algoritmos Árboles de Expresión Año 2014 Introducción Los avances tecnológicos producen día a día una gran cantidad de información que debe ser almacenada y procesada en forma eficiente.

Más detalles

Estructura de Datos y de la Información. Pilas y expresiones aritméticas

Estructura de Datos y de la Información. Pilas y expresiones aritméticas Estructura de Datos y de la Información Pilas y expresiones aritméticas LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Instituto de Computación - Facultad de Ingeniería - Universidad de la República

Instituto de Computación - Facultad de Ingeniería - Universidad de la República Parcial de Programación 2 Julio de 2011 Generalidades: La prueba es individual y sin material. Duración: 3hs. Sólo se contestan dudas acerca de la letra de los ejercicios. Escriba las hojas de un sólo

Más detalles

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006 ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los

Más detalles

14. ÁRBOLES. 14.1 Fundamentos y terminología básica

14. ÁRBOLES. 14.1 Fundamentos y terminología básica Ricardo Ferrís / Jesús Albert Algoritmos y estructuras de datos I 14. ÁRBOLES 14.1 FUNDAMENTOS Y TERMINOLOGÍA BÁSICA... 79 14.2. ÁRBOLES BINARIOS... 81 14.3. FUNDAMENTOS... 82 14.3. OPERACIONES CON ÁRBOLES

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO MARCEL SANTOS ARIEL MARTINEZ AGUILAR GILBERTO. MATERIA: ESTRUCTURA

Más detalles

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases Herencia 3.- Herencia La herencia nos permite definir datos y métodos que son generales (comunes a distintas clases) por separado de las que son particulares a cada clase. Esto se logra definiendo lo que

Más detalles

3.2 Operaciones aritmético-lógicas en Pascal

3.2 Operaciones aritmético-lógicas en Pascal 3.2 Operaciones aritmético-lógicas en Pascal Operadores Los operadores sirven para combinar los términos de las expresiones. En Pascal, se manejan tres grupos de operadores : 1. ARITMÉTICOS 2. RELACIONALES

Más detalles

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Fundamentos de la informática 2. Algoritmos, diagramas de flujo y pseudocódigo Contenido Algoritmos Diagramas de flujo

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Características ARBOLES - CONCEPTOS Cada elemento del árbol se relaciona con cero o más elementos a quienes llama hijos. Si el árbol no

Más detalles

COLAS. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny

COLAS. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny COLAS 2002 GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny ESTRUCTURA DE DATOS TEMA 4 Estructura de datos Cola ÍNDICE 4.1. Definición y ejemplos...3 4.2. El TAD

Más detalles

Tema 4.- Pilas y Colas

Tema 4.- Pilas y Colas Apuntes elaborados por: Eduardo Quevedo, Raquel López y Aaron Asencio Revisado por: Javier Miranda el???? Tema 4.- Pilas y Colas Las pilas y colas son estructuras de datos que se utilizan generalmente

Más detalles

Algorítmica y Lenguajes de Programación. Ordenación (i)

Algorítmica y Lenguajes de Programación. Ordenación (i) Algorítmica y Lenguajes de Programación Ordenación (i) Ordenación. Introducción A lo largo del curso hemos visto distintas formas de almacenar datos: Vectores. Matrices. Ficheros Listas (pilas y colas)

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Introducción al tema a. Formar grupos de 4 personas b. Tomar una hoja en blanco y una lapicera o lápiz c. En la hoja en blanco diseña un

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B) APRENDERAPROGRAMAR.COM OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero

Más detalles

Ampliación de Estructuras de Datos

Ampliación de Estructuras de Datos Ampliación de Estructuras de Datos Amalia Duch Barcelona, marzo de 2007 Índice 1. Diccionarios implementados con árboles binarios de búsqueda 1 2. TAD Cola de Prioridad 4 3. Heapsort 8 1. Diccionarios

Más detalles

Pilas y Colas. Capítulo 3

Pilas y Colas. Capítulo 3 Pilas y Colas Capítulo 3 Pilas Una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de una

Más detalles

Fundamentos de la Programación

Fundamentos de la Programación Fundamentos de la Programación El Software Las operaciones que debe realizar el hardware son especificadas con una lista de instrucciones, llamadas programas o software. Dos grandes grupos de software

Más detalles

Práctico 5. Definiciones Inductivas - Segunda Parte -

Práctico 5. Definiciones Inductivas - Segunda Parte - Práctico 5 Definiciones Inductivas - Segunda Parte - Objetivos: Trabajar con tipos inductivos. Realizar pruebas por inducción y análisis de casos. Familiarizarse con los lemas de inversión y las tácticas

Más detalles

Estructura de datos (arreglos) Vectores y Matrices

Estructura de datos (arreglos) Vectores y Matrices Apunte del curso PROGRAMACIÓN (FI-UBA,, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez Estructura de datos (arreglos) Hasta aquí se han visto distintos tipos de estructuras

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

col 1 2 1 5 9 ----------------------------------------------- 3 Type mismatch cadena vacía fila 1 z + i 4 1 fila 2

col 1 2 1 5 9 ----------------------------------------------- 3 Type mismatch cadena vacía fila 1 z + i 4 1 fila 2 Nombre y Apellidos: Especialidad y Grupo: FUNDAMENTOS DE INFORMÁTICA 22-enero-2002 CUESTIÓN de Estructuras repetitivas y alternativas (1.5 puntos) 1. Suponiendo que el usuario teclea los datos 1, 2, 3,

Más detalles

Semántica Denotacional

Semántica Denotacional Semántica Denotacional Idea: El significado de un programa es la función denotada por el programa Componentes del metalenguaje para la definición semántica denotacional de un L.P.: Dominios sintácticos

Más detalles

Diseño Estructurado de Algoritmos

Diseño Estructurado de Algoritmos Diseño Estructurado de Algoritmos 1 Sesión No. 5 Nombre: Primitivas para el diseño de instrucciones. Segunda parte. Objetivo de la sesión: Al concluir la sesión el estudiante identificará las diferentes

Más detalles

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Índice 1 Introducción... 5 1.1 Perfil de la aplicación... 5 1.2 Requisitos técnicos... 5 2 Manual de usuario... 7 2.1 Instalación del certificado...

Más detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 3 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas

Más detalles

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática Manejo básico de base de datos Unas de las capacidades de Excel es la de trabajar con listas o tablas de información: nombres, direcciones, teléfonos, etc. Excel puede trabajar con tablas de información

Más detalles

Operación Microsoft Access 97

Operación Microsoft Access 97 Utilizar expresiones y criterios Trabajar con expresiones Las expresiones son un componente fundamental de numerosas operaciones en Access. Una expresión es una combinación de símbolos (identificadores,

Más detalles

Fórmulas y funciones

Fórmulas y funciones Fórmulas y funciones Uso de fórmulas Las fórmulas son el corazón y el alma de la hoja de cálculo. Si no las necesitáramos sería lo mismo que trabajáramos en un procesador de textos. Excel 2007 ofrece un

Más detalles

ÁRBOLES BINARIOS 2002. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny

ÁRBOLES BINARIOS 2002. GRUPO # 22 Alumnos: Aguilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny ÁRBOLES BINRIOS 2002 GRUPO # 22 lumnos: guilar Elba Barrios Miguel Camacho Yaquelin Ponce Rodríguez Jhonny ESTRUCTURS DE DTOS TEM 6 Estructuras de datos no lineales. Árboles binarios ÍNDICE 6.1. Introducción.

Más detalles

Seminario Profesional MS PROJECT 2010. MODULO 2: Introducción y organización de las tareas

Seminario Profesional MS PROJECT 2010. MODULO 2: Introducción y organización de las tareas MODULO 2: Introducción y organización de las tareas En este módulo aprenderemos a trabajar con las tareas, conoceremos los fundamentos básicos en la creación y organización de tareas en las secuencia más

Más detalles

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin

Más detalles

Estructuras de datos: Árboles binarios de

Estructuras de datos: Árboles binarios de Estructuras de datos: Árboles binarios de búsqueda, Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Árboles binarios de búsqueda, Table of Contents

Más detalles

Figura 4.1 Clasificación de los lenguajes de bases de datos

Figura 4.1 Clasificación de los lenguajes de bases de datos 1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto Este capítulo describen los distintos lenguajes para bases de datos, la forma en que se puede escribir un lenguaje

Más detalles

LINUX - Los archivos de órdenes I

LINUX - Los archivos de órdenes I LINUX - Los archivos de órdenes I Objetivos: Se pretende introducir al alumno en el uso de los archivos de órdenes (conocidos como scripts) utilizando el lenguaje de programación propio del intérprete

Más detalles

Cómo nombrar variables ( 2&

Cómo nombrar variables ( 2& &'()*+,, *)-.&'*/0+!" #$ # http://www.escet.urjc.es/~aiiq/ Introducción a Visual Studio.NET Aprendiendo el IDE de Visual Basic.NET Elementos del lenguaje. Variables y estructuras de datos Introducción

Más detalles

Curso 2006/2007 Estructura de Datos y de la Información I. Informática, I. T. Informática de Gestión y de Sistemas PRÁCTICA 2

Curso 2006/2007 Estructura de Datos y de la Información I. Informática, I. T. Informática de Gestión y de Sistemas PRÁCTICA 2 Curso 2006/2007 Estructura de Datos y de la Información I. Informática, I. T. Informática de Gestión y de Sistemas PRÁCTICA 2 1 El problema Desserts es un local de hostelería que sirve toda clase de postres.

Más detalles

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS. UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS. 5.1.- SECUENCIA En este caso, las instrucciones se ejecutan una después de la otra sin omitir ninguna de ellas. La sintaxis para

Más detalles

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO Identifica los tipos de datos y funciones - Tipos de Datos: Excel soporta 5 tipos de datos, estos son: a) Numéricos: Están formados por cualquiera de los 10 dígitos (del 0 al 9) y pueden estar acompañados

Más detalles

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,

Más detalles

ALGORITMO HILL CLIMBING

ALGORITMO HILL CLIMBING ALGORITMO HILL CLIMBING También es conocido como el método de ascenso de colinas Usa una técnica de mejoramiento iterativo Comienza a partir de un punto (punto actual) en el espacio de búsqueda Si el nuevo

Más detalles

Listas, Pilas, Colas y Punteros. Semana 3

Listas, Pilas, Colas y Punteros. Semana 3 Listas, Pilas, Colas y Punteros Semana 3 Dictado por Marco González Núñez 14 de Febrero de 2011 Estructuras de datos simples Hoy hablaremos de lo que sin duda me motivó a crear este curso que son los punteros,

Más detalles

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010 Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010 CONTENIDO 1. Qué es? 2. Cómo crear y acceder a la Comunidad Virtual en Microsoft SharePoint 2010? Ejemplo. 3. Qué tengo en la página de inicio

Más detalles

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que

Más detalles

El problema de los Filósofos

El problema de los Filósofos El problema de los Filósofos Problemas de Programación Concurrente Solución con Semáforos Para evitar una situación de interbloqueo se limita el número de filósofos en disposición de comer a 4. PROGRAM

Más detalles

Introducción a la calidad de código

Introducción a la calidad de código Universidad de Buenos Aires Facultad De Ingeniería Introducción a la calidad de código [75.40] Algoritmos y Programación I 2do Cuatrimestre 2010 Cátedra: Ing. Pablo Guarna Autor: Bernardo Ortega Moncada

Más detalles

Soporte lógico de computadoras

Soporte lógico de computadoras Soporte lógico de computadoras Software: Sistemas Operativos Lenguajes de programación Lenguajes de Programación. Clasificación Proximidad del lenguaje al que entiende el ordenador: Bajo nivel: específico

Más detalles

Introducción. Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales

Introducción. Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales Introducción Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl

Más detalles

Dividir automáticamente las palabras en todo un documento

Dividir automáticamente las palabras en todo un documento Guiones Si una palabra es demasiado larga para caber al final de una línea, Word lleva la palabra a la línea siguiente sin dividirla con un guión. Sin embargo, puede utilizar la característica de división

Más detalles

Clase Nº 9 OPERADOR PC. P á g i n a 1 HOJA DE CALCULO MICROSOFT EXCEL

Clase Nº 9 OPERADOR PC. P á g i n a 1 HOJA DE CALCULO MICROSOFT EXCEL P á g i n a 1 Clase Nº 9 HOJA DE CALCULO MICROSOFT EXCEL Para acceder a este programa se debe hacer clic en el botón INICIO, luego en PROGRAMAS, luego en MICROSOFT OFFICE y finalmente en MICROSOFT EXCEL.

Más detalles

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores PROGRAMACIÓN CONCURRENTE Tema 5 Monitores 1 Indice Definición de los monitores Sincronización condicional usando monitores Algunos problemas con monitores 2 Problemas de las regiones críticas condicionales

Más detalles

Capitulo V Administración de memoria

Capitulo V Administración de memoria Capitulo V Administración de memoria Introducción. Una de las tareas más importantes y complejas de un sistema operativo es la gestión de memoria. La gestión de memoria implica tratar la memoria principal

Más detalles

Curso 0 de Informática

Curso 0 de Informática Curso 0 de Informática 2015-2016 Tema 1: Introducción a la Informática y Conceptos básicos 1 Motivación (I): En los procesos industriales, cada vez es mayor el uso de sistemas informáticos para: Monitorización,

Más detalles

Organizando mi clase en el GES Material de apoyo

Organizando mi clase en el GES Material de apoyo Tabla de contenido 1. Cómo subir el programa del curso?... 1 1.1. Subir el programa del curso... 1 1.2 Enlazar un programa... 3 1.3 Crear un programa en GES... 5 2. Cómo agrego apuntes o material de clase?...

Más detalles

Programación: QBASIC

Programación: QBASIC 1. QBASIC Programación: QBASIC Guía del alumno Qbasic es una versión moderna del lenguaje BASIC. Se trata de un lenguaje de alto nivel. En un lenguaje de alto nivel las instrucciones tienen un formato

Más detalles

Tema: Arreglos de Objetos en C++.

Tema: Arreglos de Objetos en C++. Programación II. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Arreglos de Objetos en C++. Objetivos Específicos Describir la implementación de arreglos de Objetos.

Más detalles

Preguntas correspondientes al examen de la sesión 1

Preguntas correspondientes al examen de la sesión 1 Preguntas correspondientes al examen de la sesión 1 Qué tipo de datos puedes utilizar para los campos en una tabla de Access? En función de la naturaleza de la información puedes elegir entre varios tipos

Más detalles

Introducción a la Programación Ingenieria en Informática Junio 2008

Introducción a la Programación Ingenieria en Informática Junio 2008 Introducción a la Programación Ingenieria en Informática Junio 2008 Ejercicio 1 [2 puntos] Escribe un programa que reciba el fichero binario.dat, fichero binario de enteros positivos y devuelva un fichero

Más detalles

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario.

WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario. WinHIPE: edición, compilación y ejecución de programas; y generación de animaciones web. Manual de usuario. Índice contenido. INTRODUCCIÓN... 1-2 1. ENTORNO DE TRABAJO... 1-2 2. EDICIÓN DE PROGRAMAS...

Más detalles

Recomendaciones básicas para los estudiantes

Recomendaciones básicas para los estudiantes Recomendaciones básicas para los estudiantes Campus Virtual FaHCE Abril 2016 Acceso al Campus Se puede acceder al Campus desde la página principal de la Facultad (http://www.fahce.unlp.edu.ar) pulsando

Más detalles

Metodología y Tecnología de la Programación

Metodología y Tecnología de la Programación Metodología y Tecnología de la Programación Curso 2008/09 Tema 7 Tipos de Datos Abstractos Temario 7.1 Concepto de Tipo de Datos Abstracto 7.2 Clasificación de Tipos de Datos Abstractos 7.3 Especificación

Más detalles

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows 1 APUNTES DE WINDOWS Unidad 1: Windows y sus Elementos Elementos de Windows Escritorio: Es la pantalla que aparece cuando se inicia una sesión con Windows, desde aquí es de donde se administra el computador.

Más detalles

Menús. Gestor de Menús

Menús. Gestor de Menús Menús Para dar acceso a las categorías, artículos y generar espacio para los módulos se deben crear menús, éstos son enlaces a determinado recurso en el portal Web, sin ellos no es posible visualizar ninguno

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 2 de septiembre de 2015 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

ESTRUCTURA DE DATOS: ARREGLOS

ESTRUCTURA DE DATOS: ARREGLOS ESTRUCTURA DE DATOS: ARREGLOS 1. Introduccion 2. Arreglos - Concepto - Caracteristicas 3. Arreglos Unidimensionales 4. Arreglos Bidimensionales 5. Ventajas del uso de arreglos 6. Ejemplo 1. Introducción

Más detalles

PROPORCIONALIDAD - teoría

PROPORCIONALIDAD - teoría PROPORCIONALIDAD RAZÓN: razón de dos números es el cociente indicado de ambos. Es decir, la razón de los dos números a y b es a:b, o lo que es lo mismo, la fracción b a. PROPORCIÓN: es la igualdad de dos

Más detalles

Comercial Cartas de Fidelización

Comercial Cartas de Fidelización Comercial Cartas de Fidelización El objetivo es poder enviar, de una forma sencilla a través de e-mail, textos en su idioma a todos los clientes que cumplen determinadas características. En principio,

Más detalles

Operación de Microsoft Word

Operación de Microsoft Word Trabajar con tablas Las tablas permiten organizar la información y crear atractivos diseños de página con columnas paralelas de texto y gráficos. Las tablas pueden utilizarse para alinear números en columnas

Más detalles

Curso de Excel Avanzado

Curso de Excel Avanzado Curso de Excel Avanzado J. David Moreno TRABAJANDO CON RANGOS J. David Moreno 1 3 Para programar correctamente en VBA y trabajar con Excel es obligatorio aprender a trabajar con rangos (seleccionar, copiar,

Más detalles

Una desigualdad se obtiene al escribir dos expresiones numéricas o algebraicas relacionadas con alguno de los símbolos

Una desigualdad se obtiene al escribir dos expresiones numéricas o algebraicas relacionadas con alguno de los símbolos MATEMÁTICAS BÁSICAS DESIGUALDADES DESIGUALDADES DE PRIMER GRADO EN UNA VARIABLE La epresión a b significa que "a" no es igual a "b ". Según los valores particulares de a de b, puede tenerse a > b, que

Más detalles

Proyectos de Innovación Docente

Proyectos de Innovación Docente Proyectos de Innovación Docente Manual de Usuario Vicerrectorado de Docencia y Profesorado Contenido INTRODUCCIÓN... 3 DATOS PERSONALES... 6 Modificar email... 6 Modificar contraseña... 7 GESTIÓN PROYECTOS...

Más detalles

SISTEMAS OPERATIVOS AVANZADOS

SISTEMAS OPERATIVOS AVANZADOS SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

Funciones en Excel (II)

Funciones en Excel (II) Funciones en Excel (II) Las Funciones de Texto Jose Ignacio González Gómez Departamento de Economía Financiera y Contabilidad - Universidad de La Laguna www.jggomez.eu INDICE 1 Para qué las funciones de

Más detalles

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

Instalación del programa PSPP y obtención de una distribución de frecuencias.

Instalación del programa PSPP y obtención de una distribución de frecuencias. Práctica 2. Instalación del programa PSPP y obtención de una distribución de frecuencias. Con esta práctica instalaremos el programa PSPP. El programa es un software específico para el análisis estadístico

Más detalles

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP) MINISTERIO DE ADMINISTRACIÓN PÚBLICA (MAP) Dirección de Tecnología de la Información y Comunicación MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS

Más detalles

Usando el editor de texto vi

Usando el editor de texto vi Usando el editor de texto vi Juan José Álvarez Sánchez Escuela Universitaria de Informática Universidad de Valladolid campus Segovia 24 de febrero de 2004 1. Introducción Antes de empaparse en el uso del

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009 Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios Dra. Noemí L. Ruiz Limardo 2009 Objetivos de la Lección Al finalizar esta lección los estudiantes: Identificarán, de una lista de expresiones

Más detalles

Hoja1!C4. Hoja1!$C$4. Fila

Hoja1!C4. Hoja1!$C$4. Fila CAPÍTULO 6......... Cálculo y funciones con Excel 2000 6.1.- Referencias De Celdas Como vimos con anterioridad en Excel 2000 se referencian las celdas por la fila y la columna en la que están. Además como

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,

Más detalles

Microsoft Office XP Excel XP (I)

Microsoft Office XP Excel XP (I) PRÁCTICA 1 HOJA DE CÁLCULO Microsoft Office XP Excel XP (I) 1. Entrar en Windows 98 (ver práctica 1), y en el Excel abriendo el icono Microsoft Office del escritorio y seleccionar el icono Microsoft Excel,

Más detalles

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS CONTENIDOS 1. Introducción a las cadenas 2. Definición 3. Declaración de cadenas 4. Inicialización de cadenas 5. Escritura y Lectura de datos tipo cadena 6. Funciones de manipulación de cadenas 7. Arrays

Más detalles

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define.

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define. VECTORES El estudio de los vectores es uno de tantos conocimientos de las matemáticas que provienen de la física. En esta ciencia se distingue entre magnitudes escalares y magnitudes vectoriales. Se llaman

Más detalles

3. COLA DE PRIORIDAD DEFINICION (I)

3. COLA DE PRIORIDAD DEFINICION (I) 3. COLA DE PRIORIDAD DEFINICION (I) Conjunto de elementos ordenados con las operaciones: Crear ( ) > ColaPrioridad EsVacio () > Boolean Insertar (ColaPrioridad, Item) > ColaPrioridad BorrarMínimo (ColaPrioridad)

Más detalles

Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2

Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2 Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2 1. Rango de celdas. Definición. Selección Contenido. 2. Referencias relativas, absolutas y mixtas. 3. Gráficos. Creación,

Más detalles

35 Facultad de Ciencias Universidad de Los Andes Mérida-Venezuela. Potencial Eléctrico

35 Facultad de Ciencias Universidad de Los Andes Mérida-Venezuela. Potencial Eléctrico q 1 q 2 Prof. Félix Aguirre 35 Energía Electrostática Potencial Eléctrico La interacción electrostática es representada muy bien a través de la ley de Coulomb, esto es: mediante fuerzas. Existen, sin embargo,

Más detalles

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante) 1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Siemens Industry IA/DT/BT Service&Support - Automation Service, Automation Sup...

Siemens Industry IA/DT/BT Service&Support - Automation Service, Automation Sup... Page 1 of 7 Automation Technology > Productos y sistemas para manejo y visualización > Software HMI > Sistema SCADA SIMATIC WinCC > SIMATIC WinCC > Configuración del sistema WinCC -- Creación de la configuración

Más detalles