SlideShare una empresa de Scribd logo
1 de 54
Estructura de Datos y
Algoritmos
Repaso Tipos de Datos
¿Qué es un dato?
 Información en bruto, sin ningún significado
 Dado un enunciado, evento o acción, los datos
 Permiten representar sus actores o participantes
 Analizándolos, se podrá obtener resultados deseados
 Analicemos el siguiente hecho:
 El estudiante Juan Paz de edad 23 años, tiene promedio 8.3 en sus
calificaciones
 Podemos tomar los siguientes datos
 Nombre: Juan Paz -> Conjunto de Caracteres
 Edad: 23 -> entero
 Promedio: 78,3 -> real
Como representar los datos
 Los seres humanos:
 Usamos lenguaje natural o símbolos
 Ejemplo:
 Para representar números, usamos el sistema decimal
 Para representar palabras, usamos el abecedario
 La computadora:
 Usa conjuntos de 1s y 0s
 El dato mas pequeño en el computador es
 Un 1 o un 0 -> bit
 El conjunto de 8 bits -> 1 byte
Como representar los datos
 Los datos se clasifican en TIPOS
 Son los diferentes dominios existentes.
Ejemplo:
 Edad, Año de Nacimiento, Numero de multas
 Tienen dominio numérico
 Nombre, Dirección, Num. Cedula,
 Caen en el dominio de la información tipo texto
 Y las operaciones permitidas para dicho
dominio
Tipos de Datos Básicos
NOMBRE CONJUNTO DE VALORES OPERACIONES
Enteros Negativos y positivos sin decimal Sumar, restar, dividir, multiplicar,
residuo
Reales Negativos y positivos, con
decimal
Sumar, restar, dividir, multiplicar
Lógicos Verdadero o Falso(1 o 0) And, Or, Not
Caracteres Letras, números, especiales,
juntos forman una cadena
Sumar carácter + entero restar,
multiplicar por entero
En la computadora
1000
1001
1002
1003
 Solo vienen integrados los tipos de datos básicos
 En la computadora
 Cada byte es un casillero y tiene una dirección en
memoria
 Los datos (números y letras) se almacena en estos
casilleros
 ¿Cuantas casilleros ocupa un dato?
 Depende de su tipo y del hardware de la computadora
 Un entero puede ocupar casillas de hasta 4 bytes
 Un doble siempre ocupara mas, por su mayor precisión
 PERO, un carácter SIEMPRE ocupara casillas de 1 byte
Declaración de variables en C
 Una declaración de variables en C incluye
 Tipo de dato y
 Nombre de variable(identificador)
 Ejemplo:
int a, b;
float c;
 ¿Para que se declaran variables?
 Especifica cuanta memoria debe reservarse y
 Como se van a interpretar dichos datos
f = a + b
 Es una suma de enteros, que al final se convierte a real
int a;
4 bytes,
dir: 100
1 byte,
dir: 104
100
101
102
103
104
char c;
Direcciones de Memoria
1000
1001
1002
1003
&a es
1000
 Las variables
 Tienen direcciones de memoria
 Si deseamos conocer dicha dirección
 En lenguaje C
 Se usa el operador & de dirección
 Ejemplo:
int a;
a = 3;
printf(“Valor:%d Dir: %d”, a, &a);
 Un puntero
 Es una variable que puede almacenar dirección
de memoria
Estructura de Datos y
Algoritmos
Repaso Estructuras de
Datos
¿Qué es una Estructura de Datos?
 Una estructura de datos es una forma de organizar
un conjunto de datos elementales con el objetivo de
facilitar su manipulación. Un dato elemental es la
mínima información que se tiene en un
programa.(ejemplos de datos elementales serían int,
float, char,etc…)
 Lo que se pretende con las estructuras de datos es
facilitar un esquema lógico para manipular los datos
en función del problema que haya que tratar y el
algoritmo para resolverlo.
¿Qué es una Estructura de Datos?
 En algunos casos la dificultad para resolver un
problema radica en escoger la estructura de datos
adecuada. Y, en general, la elección del algoritmo y de
las estructuras de datos que manipulará estarán muy
relacionadas.
Ejemplos de estructuras de datos
 Vectores (matriz o array)
 Listas Enlazadas
 Pilas (stack)
 Colas (queue)
 Árboles
 Árboles Binarios
 Árboles finitarios
 Conjuntos (set)
 Grafos
 Tablas Hash
Estructura de Datos y
Algoritmos
Tipos Inductivos
Tipos Inductivos ("Recursivos")
 tienen en general cardinalidad infinita
 contienen valores de "tamaño arbitrario"
 Ejemplos:
 números naturales
 listas
Tipos Inductivos ("Recursivos")
 Tomemos por ello un problema para representar estos
tipos en computadoras
Concretamente: ¿Cómo se implementan las variables
de estos tipos ?
 T x;//T es el tipo de la variable x
 un espacio fijo en memoria con una dirección
(secuencia de bits ubicada en cierta posición de la
memoria)
 El espacio debe ser suficiente para contener
cualquier valor de tipo T
Tipos Inductivos ("Recursivos")
 Si los valores de tipo T pueden ser de
tamaño arbitrariamente grande,
entonces no hay espacio finito suficiente
para contener cualquier valor de tipo T.
 Por ello: sólo un rango de los naturales
es representable:
([MinNat, MaxNat])
El caso de las listas
 ¿Cómo tendría que ser una variable capaz de
contener cualquier lista?
 infinita
 de tamaño ajustable
(Cada lista es finita; pero la variable debería poder
crecer y contraerse al agregar y quitar elementos
de la lista)
El caso de las listas
 Solución:
La lista se extiende "hacia afuera" a lo largo de la
memoria ocupando un número de variables.
El caso de las listas
 ¿ Cómo ?
 Ejemplo: Consideramos [1, 2, 3]
 Cada elemento es representable en una variable
común (ej.: de tipo CARDINAL)
El caso de las listas
 A esta información, hay que agregar otra, que
representa la estructura (lineal) de la lista:
 ¿ Dónde está el primer elemento ?
 ¿ Dónde está el siguiente de cada elemento ?
El caso de las listas
 Si llamamos a la lista en cuestión, podemos
representarla con una variable que:
 indique dónde está el primer elemento, o sea que
 apunte a la variable que contiene el primer
elemento, que es lo mismo que
 contenga como valor la dirección (un
nombre, una referencia a) de la variable que
contiene el primer elemento
El caso de las listas
El caso de las listas
 ¡¡¡Necesitamos un nuevo “tipo” de valores !!!
 Direcciones
 Referencias
 Nombres
 indicadores (indicaciones)
 punteros
 Debe poderse representar la lista vacía, cuyo primer
elemento no existe. Necesitamos un valor que “no
apunte”.Este valor se conoce como NULL .
 Operación:  es la variable a la que señala
(apunta)
 Notar que  no está definida para l = NULL
El caso de las listas
 Además necesitamos representar la estructura
secuencial.
 Para ello, hacemos que cada componente de la lista
apunte al siguiente:
El caso de las listas
 Tenemos NODOS formados por dos
componentes (campos):
 El elemento propio de la lista (información)
 El puntero al siguiente nodo (posiblemente
no existente)
 En C podemos representar los nodos
como estructuras (struct)
El caso de las listas
 Debe poderse crear y destruir variables en forma
dinámica (mediante instrucciones de programa,
durante la ejecución de los programas)
 ¿ Por qué ?
El caso de las listas
 Debemos poder implementar asignaciones
(abstractas) como:
S = x.S (operación que agrega un elemento a la lista)
(comparar con n = n + 1)
 En tal caso, la lista contenida en la variable S se
agrandaría en un elemento
El caso de las listas
 En la representación con nodos y punteros,
corresponde a crear un nuevo nodo y agregarlo a la
lista.
 Por ejemplo, a la asignación abstracta l = 0.l (antes de
la asignación l=[1,2,3]) corresponde:
El caso de las listas
 El nuevo nodo:
 debe ser creado
 debe cargársele información
 l debe ser actualizada
 Igualmente, deben poderse destruir nodos,
correspondientemente con las operaciones que borran
elementos de listas
Tenemos pues ESTRUCTURAS DINÁMICAS.
Su tamaño es gobernado por instrucciones de
Programa. Esto no pasa con estructuras estáticas como
son los arreglos.
Listas Encadenadas
Estructura de Datos y
Algoritmos
Repaso Punteros
Punteros en C
 Para cada tipo T existe el tipo de los punteros a
variables de tipo T:
POINTER TO T
(que en C se declararía: T *variable;)
Punteros en C
 Notar que si p es una variable de tipo POINTER TO T,
entonces los estados posibles de p son:
 Estar apuntando a una variable de tipo T
 Contener el valor NULL (tiene valor, pero no
apunta)
 No tener valor (no haber recibido todavía valor)
Punteros en C
 El único literal (constante primitiva) de cada tipo de
puntero es NULL
 Las operaciones asociadas a cada tipo de puntero
son:
  (puntero a variable)
 +
 -
 == (verificación de igualdad de dos punteros, y solo
de punteros)
 = (asignación)
Punteros en C
 Un tipo de dato
 El puntero solo podrá almacenar direcciones de
memoria de variables del tipo especificado
 Se pueden definir punteros de cualquier tipo:
 float *pf;
 char *pc;
 Un identificador que siempre va antecedido del
operador *
pt almacena la
dirección de x, se dice
que pt apunta a x
x
pt
1000
1001
1003
1005
1000
int *pt, x;
x = 3;
pt = &x;
3
1000
Punteros en C
 Un puntero apunta a una variable
 A través del puntero se puede llegar a conocer todo sobre la
variable
 Ejemplo:
c = ‘A’
printf(“%c”, *pc1);
*pc1 = ‘N’
printf(“%c”,c);
Es equivalente a :
printf(“%c”, c);
Es equivalente a :
c = ‘N’
Imprime ‘N’ pues c ya
cambio
char c, *pc1, *pc2;
pc1 = &c;
 Si quiero conocer la dirección, uso el puntero
printf(“%d”, pc1); //Imprimo la dir. Almacenada por pc1
pc2 = pc1; //pc2 almacena la misma dir. que pc1
 Si quiero conocer el contenido al que apunta un puntero,
uso el operador *, sobre dicho puntero
Punteros en C
 A éstas operaciones deben agregarse las operaciones
que permiten crear y destruir variables dinámicamente
 En todo contexto en que sea válida la importación:
#include <stdio.h>
Punteros en C
 Tomemos disponibles las siguientes
funciones (C extendido), para cualquier
tipo T:
 T *variable = new(T);
 delete(variable);
 delete [] variable (si variable es un
arreglo creado dinamicamente)
Punteros en C
 El funcionamiento de estos procedimientos es
como sigue:
p = new(T)
 Crea una variable de tipo T (siendo p una variable
de tipo POINTER TO T)
 deja p apuntando a esa nueva variable
 no importando cuál era el estado previo de p
delete(p)
 Tiene como precondición que p esté apuntando a
alguna variable
 La variable apuntada por p desaparece
 p queda "sin valor"
Punteros en C
1. Los tipos de punteros son atómicos. Pueden ser
retornados como valores de funciones. Son usados
para formar estructuras encadenadas.
2. Dada una variable T *p hay tres formas de asignarle
valor
1. p = NULL;
2. p = q;
3. P = new(T);
Asignar un valor a un puntero
 p = NULL, hace que p "no apunte"
Asignar un valor a un puntero
 p = q, donde q es otra variable del mismo tipo que p.
Entonces q debe tener valor. Luego de esta
asignación, o bien p y q son NULL (no apuntan) o bien
apuntan a la misma variable.
Asignar un valor a un puntero
 p = new(T), es la manera de crear punteros efectivos
a variables.
 Luego, necesariamente, si un puntero apunta a una
variable, ésta es una variable creada dinámicamente
(usando new)
Punteros en C
Observaciones Complementarias
3. Dada la siguiente situación:
Decimos que p, q (sus punteros) son alias
de la misma variable.
Punteros en C
¿ Qué ocurre al ejecutarse delete(p)?
 q queda apuntando a una variable inexistente (lo
cual es diferente de contener el valor NULL, es
decir: "NO APUNTAR")
 De hecho, ocurre que los contenidos de ambas
variables son inútiles. O sea, la situación es análoga
al caso en que no tienen valor asignado.
Punteros en C
¿ Qué ocurre al ejecutarse DELETE(p)?
 Ejecutar p o q en esta situación conduce a un error de
ejecución (el mensaje suele ser “SEGMENTATION FAULT" o
algo que sugiera "ausencia de variable alojada en la dirección
en cuestión")
 En presencia de alias, la ejecución de DELETE puede tener,
como efecto lateral, que más de un puntero quede "apuntando
a una variable inexistente“  OJO
Punteros en C
4. Sean p, q variables de tipo char*, tal
que:
Punteros en C
 ¿Que pasa si hacemos …?
 [1]p = q
 [2]*p = *q (esta es la notación en C para p y q
respectivamente)
¿Que pasa si hacemos …?
 Luego de ejecutar [1], tenemos:
(Notar también el desperdicio posible de memoria luego
de ejecutar [1], ‘a’ queda inaccesible y “gastando
memoria”)
¿Que pasa si hacemos …?
 Luego de ejecutar [2], tenemos:
Punteros en C
 NEW y DELETE son traducidos en términos de los
procedimientos (más primitivos) malloc y free.
 Esto explica porqué importamos los últimos pero
usamos los primeros.
Referencias
 http://www.fing.edu.uy/inco/cursos/prog2
 www.dspace.espol.edu.ec/bitstream/.../1.
Tipos%20de%20Datos.ppt
Bibliografía
 Wirth, N. Algoritmos y Estructuras de
Datos. Prentice-Hall. 1987.
FIN
¿Preguntas?

Más contenido relacionado

Similar a Estructuras Datos Algoritmos

Estructura de datos y algoritmos
Estructura de datos y algoritmosEstructura de datos y algoritmos
Estructura de datos y algoritmosrenatodquintero
 
Presentacion Editor de Dasto de SPSS.pdf
Presentacion Editor de Dasto de SPSS.pdfPresentacion Editor de Dasto de SPSS.pdf
Presentacion Editor de Dasto de SPSS.pdfCarlos Ligarda Samanez
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++Ryoga Luis
 
Manual de r commander
Manual de r commanderManual de r commander
Manual de r commanderLenin Medina
 
Estructura de datos manipulación de listas y tablas
Estructura de datos manipulación de listas y tablas Estructura de datos manipulación de listas y tablas
Estructura de datos manipulación de listas y tablas Pamelaguibkdoe
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datosluna_72
 
Computación I
Computación IComputación I
Computación IOrianajpr
 
Luis hernandez 22310621
Luis hernandez   22310621Luis hernandez   22310621
Luis hernandez 22310621Luis Miguel
 
Que es una hoja de calculo instala bles y online
Que es una hoja de calculo instala bles y onlineQue es una hoja de calculo instala bles y online
Que es una hoja de calculo instala bles y onlineRonald Estevez
 
Estructura de datos manipulación de listas y tablas fundamentos
Estructura de datos manipulación de listas y tablas fundamentosEstructura de datos manipulación de listas y tablas fundamentos
Estructura de datos manipulación de listas y tablas fundamentosAngel Carrasco
 
Estructura de datos manipulación de listas y tablas
Estructura de datos manipulación de listas y tablasEstructura de datos manipulación de listas y tablas
Estructura de datos manipulación de listas y tablasangel carrasco
 
Cap06 arreglos y vectores.
Cap06 arreglos y vectores.Cap06 arreglos y vectores.
Cap06 arreglos y vectores.Miguel Martinez
 
Manual de R-Commander
Manual de R-CommanderManual de R-Commander
Manual de R-CommanderJordan Huilca
 

Similar a Estructuras Datos Algoritmos (20)

Modulo2a
Modulo2aModulo2a
Modulo2a
 
Estructura de datos y algoritmos
Estructura de datos y algoritmosEstructura de datos y algoritmos
Estructura de datos y algoritmos
 
Arreglos C++
Arreglos C++Arreglos C++
Arreglos C++
 
Presentacion Editor de Dasto de SPSS.pdf
Presentacion Editor de Dasto de SPSS.pdfPresentacion Editor de Dasto de SPSS.pdf
Presentacion Editor de Dasto de SPSS.pdf
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++
 
Manual de r commander
Manual de r commanderManual de r commander
Manual de r commander
 
Calculo relacional1
Calculo relacional1Calculo relacional1
Calculo relacional1
 
Expocicion sabado
Expocicion sabadoExpocicion sabado
Expocicion sabado
 
Estructura de datos manipulación de listas y tablas
Estructura de datos manipulación de listas y tablas Estructura de datos manipulación de listas y tablas
Estructura de datos manipulación de listas y tablas
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Computación I
Computación IComputación I
Computación I
 
Compu
CompuCompu
Compu
 
Luis hernandez 22310621
Luis hernandez   22310621Luis hernandez   22310621
Luis hernandez 22310621
 
Que es una hoja de calculo instala bles y online
Que es una hoja de calculo instala bles y onlineQue es una hoja de calculo instala bles y online
Que es una hoja de calculo instala bles y online
 
arrays
arraysarrays
arrays
 
Estructura de datos manipulación de listas y tablas fundamentos
Estructura de datos manipulación de listas y tablas fundamentosEstructura de datos manipulación de listas y tablas fundamentos
Estructura de datos manipulación de listas y tablas fundamentos
 
Estructura de datos manipulación de listas y tablas
Estructura de datos manipulación de listas y tablasEstructura de datos manipulación de listas y tablas
Estructura de datos manipulación de listas y tablas
 
Cap06 arreglos y vectores.
Cap06 arreglos y vectores.Cap06 arreglos y vectores.
Cap06 arreglos y vectores.
 
Manual de R-Commander
Manual de R-CommanderManual de R-Commander
Manual de R-Commander
 
Funciones
FuncionesFunciones
Funciones
 

Más de SANTOS400018

Sesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
Sesion_15-Auditoria-Redes-COBITDSFSDFA.pptSesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
Sesion_15-Auditoria-Redes-COBITDSFSDFA.pptSANTOS400018
 
Sesion_07-Configuracion-DNSASDASDASDASF.ppt
Sesion_07-Configuracion-DNSASDASDASDASF.pptSesion_07-Configuracion-DNSASDASDASDASF.ppt
Sesion_07-Configuracion-DNSASDASDASDASF.pptSANTOS400018
 
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.ptSesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.ptSANTOS400018
 
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.pptEXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.pptSANTOS400018
 
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.pptTEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.pptSANTOS400018
 
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.pptMETASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.pptSANTOS400018
 
EXPOSICION-2sasdADAdADAdasssssASASad.ppt
EXPOSICION-2sasdADAdADAdasssssASASad.pptEXPOSICION-2sasdADAdADAdasssssASASad.ppt
EXPOSICION-2sasdADAdADAdasssssASASad.pptSANTOS400018
 
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.pptEXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.pptSANTOS400018
 
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.pptTEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.pptSANTOS400018
 
METASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptMETASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptSANTOS400018
 
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptxEXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptxSANTOS400018
 
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptxCLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptxSANTOS400018
 
Sumilla del Curso-gestion de redes -(SI 115).pdf
Sumilla del Curso-gestion de redes -(SI 115).pdfSumilla del Curso-gestion de redes -(SI 115).pdf
Sumilla del Curso-gestion de redes -(SI 115).pdfSANTOS400018
 
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdfTEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdfSANTOS400018
 
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.pptPrimera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.pptSANTOS400018
 
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptxMetodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptxSANTOS400018
 
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxRepresentecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxSANTOS400018
 
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.pptTeoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.pptSANTOS400018
 
Teoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
Teoria-Probabilidadasffsdfdgfdfgfghgfh.pptTeoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
Teoria-Probabilidadasffsdfdgfdfgfghgfh.pptSANTOS400018
 
Calculos-Estocasticos<adaDAdADadDdDd.pptx
Calculos-Estocasticos<adaDAdADadDdDd.pptxCalculos-Estocasticos<adaDAdADadDdDd.pptx
Calculos-Estocasticos<adaDAdADadDdDd.pptxSANTOS400018
 

Más de SANTOS400018 (20)

Sesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
Sesion_15-Auditoria-Redes-COBITDSFSDFA.pptSesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
Sesion_15-Auditoria-Redes-COBITDSFSDFA.ppt
 
Sesion_07-Configuracion-DNSASDASDASDASF.ppt
Sesion_07-Configuracion-DNSASDASDASDASF.pptSesion_07-Configuracion-DNSASDASDASDASF.ppt
Sesion_07-Configuracion-DNSASDASDASDASF.ppt
 
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.ptSesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
Sesion_10b-ASNVDZFASFASDASDASDSDDDDDDDDDAS.pt
 
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.pptEXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
EXPOSICION-3gdsgsgfdgfgdfgdfgdfgdfgee.ppt
 
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.pptTEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNqwewqrwq-EXPOSICION.ppt
 
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.pptMETASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
METASISTEMA-EXPOSICIONsfwerwerwrqwrqr.ppt
 
EXPOSICION-2sasdADAdADAdasssssASASad.ppt
EXPOSICION-2sasdADAdADAdasssssASASad.pptEXPOSICION-2sasdADAdADAdasssssASASad.ppt
EXPOSICION-2sasdADAdADAdasssssASASad.ppt
 
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.pptEXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
EXPOSICIONasdasdasdaszdfaszfsdfsdgggsd-1.ppt
 
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.pptTEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
TEORÍA-COMUNICACIÓNgkghkkhk-EXPOSICION.ppt
 
METASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.pptMETASISTEMA-EXPOSICIONfgertertertretr.ppt
METASISTEMA-EXPOSICIONfgertertertretr.ppt
 
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptxEXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
EXPOSICIONfyeryeryeryrtytrutyutyiyuiui.pptx
 
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptxCLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
CLASE_MODELO_EXPOSICIONzxfsdfdvfgfgh.pptx
 
Sumilla del Curso-gestion de redes -(SI 115).pdf
Sumilla del Curso-gestion de redes -(SI 115).pdfSumilla del Curso-gestion de redes -(SI 115).pdf
Sumilla del Curso-gestion de redes -(SI 115).pdf
 
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdfTEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
TEMA - SOTELO ANTAURCOfgfdgdfgdfgfhgfh.pdf
 
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.pptPrimera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
Primera_D-Semanaz<xcz<c<zc-Fundamentos_C++.ppt
 
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptxMetodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
Metodo-Gaussadasdasfasfasfdgfgfhgfhgjhj.pptx
 
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptxRepresentecion-EspectraDAxz<x<zx<zxz<l.pptx
Representecion-EspectraDAxz<x<zx<zxz<l.pptx
 
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.pptTeoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
Teoria-Probabilidad-3dfsdfsdgsdgsgfdgdf.ppt
 
Teoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
Teoria-Probabilidadasffsdfdgfdfgfghgfh.pptTeoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
Teoria-Probabilidadasffsdfdgfdfgfghgfh.ppt
 
Calculos-Estocasticos<adaDAdADadDdDd.pptx
Calculos-Estocasticos<adaDAdADadDdDd.pptxCalculos-Estocasticos<adaDAdADadDdDd.pptx
Calculos-Estocasticos<adaDAdADadDdDd.pptx
 

Último

Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
Final Ashto método mecánica de suelos info
Final Ashto método mecánica de suelos infoFinal Ashto método mecánica de suelos info
Final Ashto método mecánica de suelos infoMEYERQuitoSalas
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...ssuser646243
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialyajhairatapia
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxHarryArmandoLazaroBa
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptxTEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptxYEDSONJACINTOBUSTAMA
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciazacariasd49
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 

Último (20)

Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
Final Ashto método mecánica de suelos info
Final Ashto método mecánica de suelos infoFinal Ashto método mecánica de suelos info
Final Ashto método mecánica de suelos info
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundial
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptx
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptxTEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potencia
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 

Estructuras Datos Algoritmos

  • 1. Estructura de Datos y Algoritmos Repaso Tipos de Datos
  • 2. ¿Qué es un dato?  Información en bruto, sin ningún significado  Dado un enunciado, evento o acción, los datos  Permiten representar sus actores o participantes  Analizándolos, se podrá obtener resultados deseados  Analicemos el siguiente hecho:  El estudiante Juan Paz de edad 23 años, tiene promedio 8.3 en sus calificaciones  Podemos tomar los siguientes datos  Nombre: Juan Paz -> Conjunto de Caracteres  Edad: 23 -> entero  Promedio: 78,3 -> real
  • 3. Como representar los datos  Los seres humanos:  Usamos lenguaje natural o símbolos  Ejemplo:  Para representar números, usamos el sistema decimal  Para representar palabras, usamos el abecedario  La computadora:  Usa conjuntos de 1s y 0s  El dato mas pequeño en el computador es  Un 1 o un 0 -> bit  El conjunto de 8 bits -> 1 byte
  • 4. Como representar los datos  Los datos se clasifican en TIPOS  Son los diferentes dominios existentes. Ejemplo:  Edad, Año de Nacimiento, Numero de multas  Tienen dominio numérico  Nombre, Dirección, Num. Cedula,  Caen en el dominio de la información tipo texto  Y las operaciones permitidas para dicho dominio
  • 5. Tipos de Datos Básicos NOMBRE CONJUNTO DE VALORES OPERACIONES Enteros Negativos y positivos sin decimal Sumar, restar, dividir, multiplicar, residuo Reales Negativos y positivos, con decimal Sumar, restar, dividir, multiplicar Lógicos Verdadero o Falso(1 o 0) And, Or, Not Caracteres Letras, números, especiales, juntos forman una cadena Sumar carácter + entero restar, multiplicar por entero
  • 6. En la computadora 1000 1001 1002 1003  Solo vienen integrados los tipos de datos básicos  En la computadora  Cada byte es un casillero y tiene una dirección en memoria  Los datos (números y letras) se almacena en estos casilleros  ¿Cuantas casilleros ocupa un dato?  Depende de su tipo y del hardware de la computadora  Un entero puede ocupar casillas de hasta 4 bytes  Un doble siempre ocupara mas, por su mayor precisión  PERO, un carácter SIEMPRE ocupara casillas de 1 byte
  • 7. Declaración de variables en C  Una declaración de variables en C incluye  Tipo de dato y  Nombre de variable(identificador)  Ejemplo: int a, b; float c;  ¿Para que se declaran variables?  Especifica cuanta memoria debe reservarse y  Como se van a interpretar dichos datos f = a + b  Es una suma de enteros, que al final se convierte a real int a; 4 bytes, dir: 100 1 byte, dir: 104 100 101 102 103 104 char c;
  • 8. Direcciones de Memoria 1000 1001 1002 1003 &a es 1000  Las variables  Tienen direcciones de memoria  Si deseamos conocer dicha dirección  En lenguaje C  Se usa el operador & de dirección  Ejemplo: int a; a = 3; printf(“Valor:%d Dir: %d”, a, &a);  Un puntero  Es una variable que puede almacenar dirección de memoria
  • 9. Estructura de Datos y Algoritmos Repaso Estructuras de Datos
  • 10. ¿Qué es una Estructura de Datos?  Una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación. Un dato elemental es la mínima información que se tiene en un programa.(ejemplos de datos elementales serían int, float, char,etc…)  Lo que se pretende con las estructuras de datos es facilitar un esquema lógico para manipular los datos en función del problema que haya que tratar y el algoritmo para resolverlo.
  • 11. ¿Qué es una Estructura de Datos?  En algunos casos la dificultad para resolver un problema radica en escoger la estructura de datos adecuada. Y, en general, la elección del algoritmo y de las estructuras de datos que manipulará estarán muy relacionadas.
  • 12. Ejemplos de estructuras de datos  Vectores (matriz o array)  Listas Enlazadas  Pilas (stack)  Colas (queue)  Árboles  Árboles Binarios  Árboles finitarios  Conjuntos (set)  Grafos  Tablas Hash
  • 13. Estructura de Datos y Algoritmos Tipos Inductivos
  • 14. Tipos Inductivos ("Recursivos")  tienen en general cardinalidad infinita  contienen valores de "tamaño arbitrario"  Ejemplos:  números naturales  listas
  • 15. Tipos Inductivos ("Recursivos")  Tomemos por ello un problema para representar estos tipos en computadoras Concretamente: ¿Cómo se implementan las variables de estos tipos ?  T x;//T es el tipo de la variable x  un espacio fijo en memoria con una dirección (secuencia de bits ubicada en cierta posición de la memoria)  El espacio debe ser suficiente para contener cualquier valor de tipo T
  • 16. Tipos Inductivos ("Recursivos")  Si los valores de tipo T pueden ser de tamaño arbitrariamente grande, entonces no hay espacio finito suficiente para contener cualquier valor de tipo T.  Por ello: sólo un rango de los naturales es representable: ([MinNat, MaxNat])
  • 17. El caso de las listas  ¿Cómo tendría que ser una variable capaz de contener cualquier lista?  infinita  de tamaño ajustable (Cada lista es finita; pero la variable debería poder crecer y contraerse al agregar y quitar elementos de la lista)
  • 18. El caso de las listas  Solución: La lista se extiende "hacia afuera" a lo largo de la memoria ocupando un número de variables.
  • 19. El caso de las listas  ¿ Cómo ?  Ejemplo: Consideramos [1, 2, 3]  Cada elemento es representable en una variable común (ej.: de tipo CARDINAL)
  • 20. El caso de las listas  A esta información, hay que agregar otra, que representa la estructura (lineal) de la lista:  ¿ Dónde está el primer elemento ?  ¿ Dónde está el siguiente de cada elemento ?
  • 21. El caso de las listas  Si llamamos a la lista en cuestión, podemos representarla con una variable que:  indique dónde está el primer elemento, o sea que  apunte a la variable que contiene el primer elemento, que es lo mismo que  contenga como valor la dirección (un nombre, una referencia a) de la variable que contiene el primer elemento
  • 22. El caso de las listas
  • 23. El caso de las listas  ¡¡¡Necesitamos un nuevo “tipo” de valores !!!  Direcciones  Referencias  Nombres  indicadores (indicaciones)  punteros  Debe poderse representar la lista vacía, cuyo primer elemento no existe. Necesitamos un valor que “no apunte”.Este valor se conoce como NULL .  Operación:  es la variable a la que señala (apunta)  Notar que  no está definida para l = NULL
  • 24. El caso de las listas  Además necesitamos representar la estructura secuencial.  Para ello, hacemos que cada componente de la lista apunte al siguiente:
  • 25. El caso de las listas  Tenemos NODOS formados por dos componentes (campos):  El elemento propio de la lista (información)  El puntero al siguiente nodo (posiblemente no existente)  En C podemos representar los nodos como estructuras (struct)
  • 26. El caso de las listas  Debe poderse crear y destruir variables en forma dinámica (mediante instrucciones de programa, durante la ejecución de los programas)  ¿ Por qué ?
  • 27. El caso de las listas  Debemos poder implementar asignaciones (abstractas) como: S = x.S (operación que agrega un elemento a la lista) (comparar con n = n + 1)  En tal caso, la lista contenida en la variable S se agrandaría en un elemento
  • 28. El caso de las listas  En la representación con nodos y punteros, corresponde a crear un nuevo nodo y agregarlo a la lista.  Por ejemplo, a la asignación abstracta l = 0.l (antes de la asignación l=[1,2,3]) corresponde:
  • 29. El caso de las listas  El nuevo nodo:  debe ser creado  debe cargársele información  l debe ser actualizada  Igualmente, deben poderse destruir nodos, correspondientemente con las operaciones que borran elementos de listas Tenemos pues ESTRUCTURAS DINÁMICAS. Su tamaño es gobernado por instrucciones de Programa. Esto no pasa con estructuras estáticas como son los arreglos.
  • 31. Estructura de Datos y Algoritmos Repaso Punteros
  • 32. Punteros en C  Para cada tipo T existe el tipo de los punteros a variables de tipo T: POINTER TO T (que en C se declararía: T *variable;)
  • 33. Punteros en C  Notar que si p es una variable de tipo POINTER TO T, entonces los estados posibles de p son:  Estar apuntando a una variable de tipo T  Contener el valor NULL (tiene valor, pero no apunta)  No tener valor (no haber recibido todavía valor)
  • 34. Punteros en C  El único literal (constante primitiva) de cada tipo de puntero es NULL  Las operaciones asociadas a cada tipo de puntero son:   (puntero a variable)  +  -  == (verificación de igualdad de dos punteros, y solo de punteros)  = (asignación)
  • 35. Punteros en C  Un tipo de dato  El puntero solo podrá almacenar direcciones de memoria de variables del tipo especificado  Se pueden definir punteros de cualquier tipo:  float *pf;  char *pc;  Un identificador que siempre va antecedido del operador * pt almacena la dirección de x, se dice que pt apunta a x x pt 1000 1001 1003 1005 1000 int *pt, x; x = 3; pt = &x; 3 1000
  • 36. Punteros en C  Un puntero apunta a una variable  A través del puntero se puede llegar a conocer todo sobre la variable  Ejemplo: c = ‘A’ printf(“%c”, *pc1); *pc1 = ‘N’ printf(“%c”,c); Es equivalente a : printf(“%c”, c); Es equivalente a : c = ‘N’ Imprime ‘N’ pues c ya cambio char c, *pc1, *pc2; pc1 = &c;  Si quiero conocer la dirección, uso el puntero printf(“%d”, pc1); //Imprimo la dir. Almacenada por pc1 pc2 = pc1; //pc2 almacena la misma dir. que pc1  Si quiero conocer el contenido al que apunta un puntero, uso el operador *, sobre dicho puntero
  • 37. Punteros en C  A éstas operaciones deben agregarse las operaciones que permiten crear y destruir variables dinámicamente  En todo contexto en que sea válida la importación: #include <stdio.h>
  • 38. Punteros en C  Tomemos disponibles las siguientes funciones (C extendido), para cualquier tipo T:  T *variable = new(T);  delete(variable);  delete [] variable (si variable es un arreglo creado dinamicamente)
  • 39. Punteros en C  El funcionamiento de estos procedimientos es como sigue: p = new(T)  Crea una variable de tipo T (siendo p una variable de tipo POINTER TO T)  deja p apuntando a esa nueva variable  no importando cuál era el estado previo de p delete(p)  Tiene como precondición que p esté apuntando a alguna variable  La variable apuntada por p desaparece  p queda "sin valor"
  • 40. Punteros en C 1. Los tipos de punteros son atómicos. Pueden ser retornados como valores de funciones. Son usados para formar estructuras encadenadas. 2. Dada una variable T *p hay tres formas de asignarle valor 1. p = NULL; 2. p = q; 3. P = new(T);
  • 41. Asignar un valor a un puntero  p = NULL, hace que p "no apunte"
  • 42. Asignar un valor a un puntero  p = q, donde q es otra variable del mismo tipo que p. Entonces q debe tener valor. Luego de esta asignación, o bien p y q son NULL (no apuntan) o bien apuntan a la misma variable.
  • 43. Asignar un valor a un puntero  p = new(T), es la manera de crear punteros efectivos a variables.  Luego, necesariamente, si un puntero apunta a una variable, ésta es una variable creada dinámicamente (usando new)
  • 44. Punteros en C Observaciones Complementarias 3. Dada la siguiente situación: Decimos que p, q (sus punteros) son alias de la misma variable.
  • 45. Punteros en C ¿ Qué ocurre al ejecutarse delete(p)?  q queda apuntando a una variable inexistente (lo cual es diferente de contener el valor NULL, es decir: "NO APUNTAR")  De hecho, ocurre que los contenidos de ambas variables son inútiles. O sea, la situación es análoga al caso en que no tienen valor asignado.
  • 46. Punteros en C ¿ Qué ocurre al ejecutarse DELETE(p)?  Ejecutar p o q en esta situación conduce a un error de ejecución (el mensaje suele ser “SEGMENTATION FAULT" o algo que sugiera "ausencia de variable alojada en la dirección en cuestión")  En presencia de alias, la ejecución de DELETE puede tener, como efecto lateral, que más de un puntero quede "apuntando a una variable inexistente“  OJO
  • 47. Punteros en C 4. Sean p, q variables de tipo char*, tal que:
  • 48. Punteros en C  ¿Que pasa si hacemos …?  [1]p = q  [2]*p = *q (esta es la notación en C para p y q respectivamente)
  • 49. ¿Que pasa si hacemos …?  Luego de ejecutar [1], tenemos: (Notar también el desperdicio posible de memoria luego de ejecutar [1], ‘a’ queda inaccesible y “gastando memoria”)
  • 50. ¿Que pasa si hacemos …?  Luego de ejecutar [2], tenemos:
  • 51. Punteros en C  NEW y DELETE son traducidos en términos de los procedimientos (más primitivos) malloc y free.  Esto explica porqué importamos los últimos pero usamos los primeros.
  • 53. Bibliografía  Wirth, N. Algoritmos y Estructuras de Datos. Prentice-Hall. 1987.