SlideShare una empresa de Scribd logo
1 de 34
INTRODUCCIÓN A
LAS ESTRUCTURAS
DE DATOS
ESTRUCTURA DE DATOS
UNIDAD 1
OBJETIVOS
 Conocer y comprender las
diferentes estructuras de datos,
 Identificar su tipos,
 Aprender a manipularlas para
buscar la manera más eficiente de
resolver problemas.
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 de nombre Pedro Velez de 22 años, tiene un promedio de
7.5
 Podemos tomar los siguientes datos
 Nombre: Pedro Velez -> Conjunto de Caracteres
 Edad: 22 -> entero
 Promedio: 7.5 -> real
INFORMACIÓN
 Es el resultado deseado luego de
procesar los datos
 Los datos, al ser procesados, se
convierten en información útil o
resultados.
Procesamiento:
Calcular salarios
Juan, Perez $320
Pedro, Rodriguez $310
Luis, Pozo $240
Datos de salida(se muestran
en el monitor)
Datos de entrada(ingresados x
teclado)
Juan, Perez
Pedro, Rodriguez
Luis, Pozo
160
155
120
Empleado Horas
Valor por hora = $2
¿Cómo 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
TIPOS DE 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
Un conjunto de valores y operaciones
definidas solo para esos valores
RECORDAR
 Un tipo de dato es el conjunto de valores
 Al que puede pertenecer una constante
 Que puede asumir una variable o expresión
 Que puede ser generado por una función
 De una constante, variable o expresión
 Se puede deducir su tipo de dato
 Ya sea de su forma o de su declaración
 Sin necesidad que se ejecute ningún proceso
 Las operaciones entre datos
 Necesitan participantes (argumentos) de determinado tipo
 Producen resultados de otro o el mismo tipo
TIPOS DE DATOS BASICOS
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
Los podemos distinguir fácilmente, están en el diario vivir:
El Sr. Vera de 63 años tiene cedula No. 0908815533, y paga $120 de
impuestos
Son tipos de datos simples
Que permiten representar información numérica, caracteres, etc.
Y EN LA COMPUTADORA?
 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
1000
1001
1002
1003
ALMACENANDO DATOS
TIPO DE DATO #bytes Representación interna En ANSI C
ENTEROS 2
4
8
Positivos: conjunto de bits
38 -> 00100110
Negativos:Complemento a Dos
-38 -> 11011001
int
long
REALES 8
16
Mantisa x base(exponente)
387.53 -> 38753 x 10-2
00000000100101110110000111111110
float
double
CARACTERES 1 ASCII
11000000 -> ‘A’
char
DECLARACION DE VARIABLES
 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
Al declarar una variable se
le asigna espacio en
memoria y una dirección
para dicho espacio
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
DECLARACION DE PUNTEROS
 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
int *p;
1000
1001
1002
1003
1004
1005
1000
int *pt, x;
x = 3;
pt = &x;
3
CONSULTANDO CONTENIDO
 Si 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 directamente 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
Ejercicio
EJERCICIO EN CLASE
*p1 = *p2;
int x,y;
int *p1,*p2;
x = -42;
y = 163;
p1 = &x;
p2 = &y;
*p1 = 17;
*p2 = x+5;
1000
1004
Es equivalente a escribir
x = y;
p1 = p2; Esto indica que p1
ahora apunta a la
misma variable que p2
1004
p1 = NULL;
p2 = NULL; Esto es equivalente a “encerar” el
puntero, y decir que no apunta a ninguna
variable
1000
1004
1008
1012
x
y
p1
p2
-42
22
1000
1004
17
22
0
0
163
1004
PASO DE PARAMETROS
 Las funciones son porciones de código
 Ejecutan una tarea especifica
 Usualmente toman datos de entrada->parámetros
 Y retornan un valor
 Los parámetros se pueden enviar de dos
formas:
 Por valor
 Por referencia
PASO POR VALOR
 La función no recibe la variable enviada
 Recibe una copia
 Similar a cuando va al hacer algún tramite y le piden
al cédula
 No entrega la cédula verdadera
 Entrega una copia
 La verdadera estará segura, aunque quemen y destruyan la
copia
 Ejemplo:
x = 5
printf(“%dn”,x);
funct(x);
printf(“%dn”,x);
void funct(int y){
y = y+1;
printf(“%dn”,y);
}
Se imprime 5, el valor de x no
cambia aunque la función haya
intentado modificarla
PASO POR REFERENCIA
 Aquí si la función recibe exactamente la
variable enviada
 No hay copias
 Si algo se le hace al parámetro, se le esta haciendo
a la variable
 Para esto, se usan punteros
 La función trabaja con un puntero a la variable
enviada
 Sabe todo sobre esa variable y se pude acceder a través de *
 Ejemplo:
x = 5
printf(“%dn”,x);
funct(&x);
printf(“%dn”,x);
void funct(int *py){
*py = *py+1;
printf(“%dn”,*py);
}
Se imprime 6, el valor de x cambió
dentro de la función
Ejercicio
TIPOS DE DATOS COMPUESTOS
 En ocasiones se necesitan
tipos de datos mas
complejos, y estructurados
 Variables que almacenen
mas de un valor
 Variables que representen
información de la vida real
 Estarán formados a partir de
tipos de datos simples
 En C, tenemos:
TIPO FORMATO
DECLARACION
Bytes
ARREGLOS int arrEj[10]; 10*2 = 20
ESTRUCTURAS typedef struct TReg{
int ID;
char Texto[100];
}Reg;
2 + 100 =
102
UNIONES typedef union TUn{
int ID;
char Texto[100];
}Un;
100
ARREGLOS
 Conjunto de elementos
 Finito, Ordenado y Homogéneo,
 Todos sus elementos son del mismo tipo
 Un arreglo estático se declara
int A[100];
 El tipo de los elementos, el identificador y
 El numero de elementos (dimensión)
 Cada elemento del arreglo tiene un índice
 En C, siempre el índice mas pequeño es el 0: limite inferior
 El limite superior, es 1 menos que la dimensión
 Si el arreglo tiene 100 elementos, el índice mas alto es el 99
 Y si un entero ocupa 4 bytes, el arreglo ocupa 400 bytes seguidos
0 1 2 3 4 ...
A
99
OPERACIONES
 No basta con la declaración, para ser tratado
como un tipo de dato
 Faltan las operaciones para actuar sobre él
 Consulta de un elemento
//Consulto el contenido de los elementos 4 y 5 de A
printf(“%d %d”,A[4], A[5]);
 Modificación de un elemento
A[3] = 2; //Almaceno un valor en el elemento 3 de A
for(i = 0; i < 100; i++)
A[i] = 0;
Tipo de dato:
Conjunto de valores y operaciones
definidas solo para esos valores
REPRESENTACION INTERNA
 Cuantos bytes ocupa un tipo de dato o
variable?
 En C lo indica el operador sizeof
 Ejemplo:
int a;
printf(“%d %d”, sizeof(int), sizeof(a));
 El computador internamente
 No almacena la dirección de todos los elementos
del arreglo
 Solo almacena la dirección del primer elemento
 El resto lo calcula así:
1000
1008
1016
1024
1032
Lista[0]
Lista[1]
Lista[2]
Lista[3]
Lista[4]
&Lista[i] -> &Lista[0] + (i*sizeof(Lista[0]))
RESERVA DE MEMORIA
DINAMICA
La declaración de una variable
Siempre reserva memoria
Aunque la variable no se use, ya se reservo memoria para ella: ESTATICA
Si deseamos reservar memoria, pero no en la declaración
Si no, a voluntad dentro del programa
La reserva seria dinámica
En C se usan
Punteros y
Las funciones de librería
#include <stdlib.h>
void *malloc(size_t size);
int *a; //No se reserva nada
..
/*Cuando se desee, se reserva*/
a = malloc(sizeof(int));
//La variable normalmente
*a = 3;
a no apunta a otra
variable, tiene
memoria propia,
solo para el
ARREGLOS DINAMICOS
 En ocasiones deseamos usar arreglos
 Donde no hayamos “predefinido” cuantos
elementos max. tendremos
 Queremos usar arreglos dinámicos
 Se declara el arreglo “potencial”:
int *arreglo;
 Dentro del programa, se pide memoria
cuando se necesite:
arreglo = malloc(sizeof(int)*20);
Para indicar el nuevo tamaño se puede
usar una constante o una variable,o
cualquier expresión
main(){
int *arreglo, n;
printf(“Ingrese el tamaño del arreglo:”);
n = GetInteger();
arreglo = malloc(sizeof(int)*n);
printf(“Ahora tiene %d elementos para trabajarn”,n);
...
}
Y LIBERA..
Al pedir memoria dinámicamente
Se debe liberar dentro del programa
En C se libera usando la función free
int *a;
a = malloc...;
…
free(a);
Cuando se
libera para
una
variable
Ejercicio
ARITMETICA DE PUNTEROS
 Los operadores + y –
 Se pueden usar con punteros
 Pero el significado de la operación cambia un poco
 Si un entero ocupa 4 bytes, tomemos este
ejemplo
int x;
int *p;
p = &x;
 Si la dirección de x es un valor 100 y decimos
p = p+2;
 Que dirección almacena pi?
102 108 104
La suma indica que p se mueva 2
“enteros” mas adelante
Cada entero equivale a 4 bytes
100 + 2*4 = 108
EJERCICIO EN CLASE
main(){
double Lista[3];
double *p,*p1,*p2;
int k;
Lista[0] = 1;
Lista[1] = 1.1;
Lista[2] = 1.2;
p = Lista;
p = p + 2;
printf(“%d”, *p);
p = p - 1;
printf(“%d”, *p);
p1 = Lista+2;
p2 = &Lista[0];
k = p1-p2;
printf(“%d”, k);
}
1000
1008
1016
Lista[0]
Lista[1]
Lista[2]
p
p2
p1
p se mueve 2
desfases
p retrocede un
desfase
Da el total de desfases
entre p1 y p2
1
1.
1
1.
2
Ejercicio
PASO DE ARREGLOS A
FUNCIONES
 Al pasar un arreglo a una función debe tomarse en cuenta
 ¿Necesitare también el tamaño del arreglo?
 Si es así, también debe incluirse como parámetro
 En prototipos y cabecera
float CalcPromedio(float A[], int size);
float funct(float B[]);
 En el cuerpo de la función
float CalcPromedio(float A[], int size){
…..
A[i] = 3;
}
 Siempre recuerde que
 El paso de arreglos, es un paso por referencia
Ejercicio
ARREGLOS BIDIMENSIONALES
 La programación ofrece innumerables opciones
 Un elemento de un arreglo, puede ser otro arreglo
 int A[3][3];
 A[3] es un arreglo de tres elementos
 Cada elemento es otro arreglo de 3 elementos enteros
(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)
A[0]
A[1]
A[2]
A[0][0]
A[1][0]
A[2][0]
A[0]1]
A[1][1]
A[2][1]
A[0][2]
A[1][2]
A[2][2]
int A[3][3];
Ejercicio
ESTRUCTURAS o REGISTROS
 Es un grupo de “componentes”. Cada componente
 Tiene su propio identificador, y
 Se conoce como “elemento” o “campo” de la estructura
 Ejemplo:
 Es la declaración del nuevo “tipo de dato”:
NombreCompleto
 Con este tipo de dato, podremos crear “variables”:
NombreCompleto snombre, enombre;
typedef struct TNombreCompleto{
char Primero[10];
char Inicial;
char Ultimo[10];
}NombreCompleto;
USANDO ESTRUCTURAS
 snombre es una variable de tipo NombreCompleto
 Tiene la misma forma que la del nuevo tipo de dato
 Cada miembro/campo ocupa memoria
 Para acceder a un campo, se indica,
 La variable seguida de un punto y del nombre del campo.
Ejemplo
snombre.Inicial = ‘L’;
primero inicial
ultimo
snombre
Los registros de tipo
NombreCompleto, tendrán la
misma “estructura”
Cada dato tiene diferente
tamaño y espacio en
memoria
Cada dato representa una
información diferente
Ejercicio
UNIONES
 Permite que una variable se interprete de varias
formas distintas, dependiendo de la necesidad
 En una estructura
 Siempre es válido referirse a cualquier miembro de la
misma
 Si hay n miembros, hay n cajones de memoria
 En una unión
 Solo trabajaremos con un miembro a la vez
 Hay un solo cajón de memoria, capaz de almacenar al mas
grande de los miembros
 Si el elemento escogido es mas pequeño, sobrara espacio
UNIONES
typedef union ValorPolimorifco{
int valor_entero;
float valor_real;
};
ValorPolimorfico a;
a.valor_entero = 9;
a.valor_real = 8.9;
typedef union ValorPolimorifco{
int valor_entero;
float valor_real;
Tdato tipo;
};
ValorPolimorfico a;
printf(“Tipo de dato:”);
a.tipo = GetInteger();
if a.tipo == Entero then
a.valor_entero = 9;
elseif a.tipo == Real then
a.valor_real = 8.9;
typedef enum {Entero, Real} Tdato;
AMBITO DE VARIABLES
 Los parámetros y variables, dentro de una función,
 Son variables con ámbito local
 Solo son validas en ese ambiente,
 Las variables también pueden tener un ámbito “global”
 Empiezan a existir desde su declaración, y
 Son liberadas con el alcance de un archivo: variables externas
 Para darle privacidad a una variable
 Para que no pueda ser vista por otros archivos,
 Se la declara static, con ámbito global para archivo únicamente

Más contenido relacionado

Similar a 00 Tipos de Datos.ppt

Estructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - InformáticaEstructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - InformáticaJairoMaxKevinMartine
 
fundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.pptfundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.pptLDACORGANIZACION
 
estructura de datos y algoritmos repaso
estructura de  datos y algoritmos repasoestructura de  datos y algoritmos repaso
estructura de datos y algoritmos repasoricardosusa5
 
Operadores y expresiones
Operadores y expresionesOperadores y expresiones
Operadores y expresionesJorge Ñauñay
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++Ryoga Luis
 
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
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilabGabriel Romero
 
Arreglos
ArreglosArreglos
Arregloslichic
 
Elementos para solucionar problemas en seudocódigo c5. p1.
Elementos para solucionar problemas en seudocódigo c5. p1.Elementos para solucionar problemas en seudocódigo c5. p1.
Elementos para solucionar problemas en seudocódigo c5. p1.DENIRAMIREZANDRADE
 
Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++Obmaro García
 
Unidad II Datos y Entidades Primitivas
Unidad II Datos y Entidades PrimitivasUnidad II Datos y Entidades Primitivas
Unidad II Datos y Entidades PrimitivasAverkleyCH
 

Similar a 00 Tipos de Datos.ppt (20)

5-EDA-teo.ppt
5-EDA-teo.ppt5-EDA-teo.ppt
5-EDA-teo.ppt
 
5-EDA-teo.ppt
5-EDA-teo.ppt5-EDA-teo.ppt
5-EDA-teo.ppt
 
Estructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - InformáticaEstructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - Informática
 
fundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.pptfundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.ppt
 
estructura de datos y algoritmos repaso
estructura de  datos y algoritmos repasoestructura de  datos y algoritmos repaso
estructura de datos y algoritmos repaso
 
Operadores y expresiones
Operadores y expresionesOperadores y expresiones
Operadores y expresiones
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Datos
DatosDatos
Datos
 
datos
datos datos
datos
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++
 
Tipos De Datos
Tipos De DatosTipos De Datos
Tipos De Datos
 
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
 
Expocision pseudocodigo
Expocision pseudocodigoExpocision pseudocodigo
Expocision pseudocodigo
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilab
 
Arreglos
ArreglosArreglos
Arreglos
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 
Elementos para solucionar problemas en seudocódigo c5. p1.
Elementos para solucionar problemas en seudocódigo c5. p1.Elementos para solucionar problemas en seudocódigo c5. p1.
Elementos para solucionar problemas en seudocódigo c5. p1.
 
Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++
 
Unidad II Datos y Entidades Primitivas
Unidad II Datos y Entidades PrimitivasUnidad II Datos y Entidades Primitivas
Unidad II Datos y Entidades Primitivas
 

Último

estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENSLuisLobatoingaruca
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfMIGUELANGELCONDORIMA4
 

Último (20)

estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
 

00 Tipos de Datos.ppt

  • 1. INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS ESTRUCTURA DE DATOS UNIDAD 1
  • 2. OBJETIVOS  Conocer y comprender las diferentes estructuras de datos,  Identificar su tipos,  Aprender a manipularlas para buscar la manera más eficiente de resolver problemas.
  • 3. 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 de nombre Pedro Velez de 22 años, tiene un promedio de 7.5  Podemos tomar los siguientes datos  Nombre: Pedro Velez -> Conjunto de Caracteres  Edad: 22 -> entero  Promedio: 7.5 -> real
  • 4. INFORMACIÓN  Es el resultado deseado luego de procesar los datos  Los datos, al ser procesados, se convierten en información útil o resultados. Procesamiento: Calcular salarios Juan, Perez $320 Pedro, Rodriguez $310 Luis, Pozo $240 Datos de salida(se muestran en el monitor) Datos de entrada(ingresados x teclado) Juan, Perez Pedro, Rodriguez Luis, Pozo 160 155 120 Empleado Horas Valor por hora = $2
  • 5. ¿Cómo 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
  • 6. TIPOS DE 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 Un conjunto de valores y operaciones definidas solo para esos valores
  • 7. RECORDAR  Un tipo de dato es el conjunto de valores  Al que puede pertenecer una constante  Que puede asumir una variable o expresión  Que puede ser generado por una función  De una constante, variable o expresión  Se puede deducir su tipo de dato  Ya sea de su forma o de su declaración  Sin necesidad que se ejecute ningún proceso  Las operaciones entre datos  Necesitan participantes (argumentos) de determinado tipo  Producen resultados de otro o el mismo tipo
  • 8. TIPOS DE DATOS BASICOS 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 Los podemos distinguir fácilmente, están en el diario vivir: El Sr. Vera de 63 años tiene cedula No. 0908815533, y paga $120 de impuestos Son tipos de datos simples Que permiten representar información numérica, caracteres, etc.
  • 9. Y EN LA COMPUTADORA?  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 1000 1001 1002 1003
  • 10. ALMACENANDO DATOS TIPO DE DATO #bytes Representación interna En ANSI C ENTEROS 2 4 8 Positivos: conjunto de bits 38 -> 00100110 Negativos:Complemento a Dos -38 -> 11011001 int long REALES 8 16 Mantisa x base(exponente) 387.53 -> 38753 x 10-2 00000000100101110110000111111110 float double CARACTERES 1 ASCII 11000000 -> ‘A’ char
  • 11. DECLARACION DE VARIABLES  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 Al declarar una variable se le asigna espacio en memoria y una dirección para dicho espacio int a; 4 bytes, dir: 100 1 byte, dir: 104 100 101 102 103 104 char c;
  • 12. 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
  • 13. DECLARACION DE PUNTEROS  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 int *p; 1000 1001 1002 1003 1004 1005 1000 int *pt, x; x = 3; pt = &x; 3
  • 14. CONSULTANDO CONTENIDO  Si 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 directamente 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 Ejercicio
  • 15. EJERCICIO EN CLASE *p1 = *p2; int x,y; int *p1,*p2; x = -42; y = 163; p1 = &x; p2 = &y; *p1 = 17; *p2 = x+5; 1000 1004 Es equivalente a escribir x = y; p1 = p2; Esto indica que p1 ahora apunta a la misma variable que p2 1004 p1 = NULL; p2 = NULL; Esto es equivalente a “encerar” el puntero, y decir que no apunta a ninguna variable 1000 1004 1008 1012 x y p1 p2 -42 22 1000 1004 17 22 0 0 163 1004
  • 16. PASO DE PARAMETROS  Las funciones son porciones de código  Ejecutan una tarea especifica  Usualmente toman datos de entrada->parámetros  Y retornan un valor  Los parámetros se pueden enviar de dos formas:  Por valor  Por referencia
  • 17. PASO POR VALOR  La función no recibe la variable enviada  Recibe una copia  Similar a cuando va al hacer algún tramite y le piden al cédula  No entrega la cédula verdadera  Entrega una copia  La verdadera estará segura, aunque quemen y destruyan la copia  Ejemplo: x = 5 printf(“%dn”,x); funct(x); printf(“%dn”,x); void funct(int y){ y = y+1; printf(“%dn”,y); } Se imprime 5, el valor de x no cambia aunque la función haya intentado modificarla
  • 18. PASO POR REFERENCIA  Aquí si la función recibe exactamente la variable enviada  No hay copias  Si algo se le hace al parámetro, se le esta haciendo a la variable  Para esto, se usan punteros  La función trabaja con un puntero a la variable enviada  Sabe todo sobre esa variable y se pude acceder a través de *  Ejemplo: x = 5 printf(“%dn”,x); funct(&x); printf(“%dn”,x); void funct(int *py){ *py = *py+1; printf(“%dn”,*py); } Se imprime 6, el valor de x cambió dentro de la función Ejercicio
  • 19. TIPOS DE DATOS COMPUESTOS  En ocasiones se necesitan tipos de datos mas complejos, y estructurados  Variables que almacenen mas de un valor  Variables que representen información de la vida real  Estarán formados a partir de tipos de datos simples  En C, tenemos: TIPO FORMATO DECLARACION Bytes ARREGLOS int arrEj[10]; 10*2 = 20 ESTRUCTURAS typedef struct TReg{ int ID; char Texto[100]; }Reg; 2 + 100 = 102 UNIONES typedef union TUn{ int ID; char Texto[100]; }Un; 100
  • 20. ARREGLOS  Conjunto de elementos  Finito, Ordenado y Homogéneo,  Todos sus elementos son del mismo tipo  Un arreglo estático se declara int A[100];  El tipo de los elementos, el identificador y  El numero de elementos (dimensión)  Cada elemento del arreglo tiene un índice  En C, siempre el índice mas pequeño es el 0: limite inferior  El limite superior, es 1 menos que la dimensión  Si el arreglo tiene 100 elementos, el índice mas alto es el 99  Y si un entero ocupa 4 bytes, el arreglo ocupa 400 bytes seguidos 0 1 2 3 4 ... A 99
  • 21. OPERACIONES  No basta con la declaración, para ser tratado como un tipo de dato  Faltan las operaciones para actuar sobre él  Consulta de un elemento //Consulto el contenido de los elementos 4 y 5 de A printf(“%d %d”,A[4], A[5]);  Modificación de un elemento A[3] = 2; //Almaceno un valor en el elemento 3 de A for(i = 0; i < 100; i++) A[i] = 0; Tipo de dato: Conjunto de valores y operaciones definidas solo para esos valores
  • 22. REPRESENTACION INTERNA  Cuantos bytes ocupa un tipo de dato o variable?  En C lo indica el operador sizeof  Ejemplo: int a; printf(“%d %d”, sizeof(int), sizeof(a));  El computador internamente  No almacena la dirección de todos los elementos del arreglo  Solo almacena la dirección del primer elemento  El resto lo calcula así: 1000 1008 1016 1024 1032 Lista[0] Lista[1] Lista[2] Lista[3] Lista[4] &Lista[i] -> &Lista[0] + (i*sizeof(Lista[0]))
  • 23. RESERVA DE MEMORIA DINAMICA La declaración de una variable Siempre reserva memoria Aunque la variable no se use, ya se reservo memoria para ella: ESTATICA Si deseamos reservar memoria, pero no en la declaración Si no, a voluntad dentro del programa La reserva seria dinámica En C se usan Punteros y Las funciones de librería #include <stdlib.h> void *malloc(size_t size); int *a; //No se reserva nada .. /*Cuando se desee, se reserva*/ a = malloc(sizeof(int)); //La variable normalmente *a = 3; a no apunta a otra variable, tiene memoria propia, solo para el
  • 24. ARREGLOS DINAMICOS  En ocasiones deseamos usar arreglos  Donde no hayamos “predefinido” cuantos elementos max. tendremos  Queremos usar arreglos dinámicos  Se declara el arreglo “potencial”: int *arreglo;  Dentro del programa, se pide memoria cuando se necesite: arreglo = malloc(sizeof(int)*20); Para indicar el nuevo tamaño se puede usar una constante o una variable,o cualquier expresión main(){ int *arreglo, n; printf(“Ingrese el tamaño del arreglo:”); n = GetInteger(); arreglo = malloc(sizeof(int)*n); printf(“Ahora tiene %d elementos para trabajarn”,n); ... }
  • 25. Y LIBERA.. Al pedir memoria dinámicamente Se debe liberar dentro del programa En C se libera usando la función free int *a; a = malloc...; … free(a); Cuando se libera para una variable Ejercicio
  • 26. ARITMETICA DE PUNTEROS  Los operadores + y –  Se pueden usar con punteros  Pero el significado de la operación cambia un poco  Si un entero ocupa 4 bytes, tomemos este ejemplo int x; int *p; p = &x;  Si la dirección de x es un valor 100 y decimos p = p+2;  Que dirección almacena pi? 102 108 104 La suma indica que p se mueva 2 “enteros” mas adelante Cada entero equivale a 4 bytes 100 + 2*4 = 108
  • 27. EJERCICIO EN CLASE main(){ double Lista[3]; double *p,*p1,*p2; int k; Lista[0] = 1; Lista[1] = 1.1; Lista[2] = 1.2; p = Lista; p = p + 2; printf(“%d”, *p); p = p - 1; printf(“%d”, *p); p1 = Lista+2; p2 = &Lista[0]; k = p1-p2; printf(“%d”, k); } 1000 1008 1016 Lista[0] Lista[1] Lista[2] p p2 p1 p se mueve 2 desfases p retrocede un desfase Da el total de desfases entre p1 y p2 1 1. 1 1. 2 Ejercicio
  • 28. PASO DE ARREGLOS A FUNCIONES  Al pasar un arreglo a una función debe tomarse en cuenta  ¿Necesitare también el tamaño del arreglo?  Si es así, también debe incluirse como parámetro  En prototipos y cabecera float CalcPromedio(float A[], int size); float funct(float B[]);  En el cuerpo de la función float CalcPromedio(float A[], int size){ ….. A[i] = 3; }  Siempre recuerde que  El paso de arreglos, es un paso por referencia Ejercicio
  • 29. ARREGLOS BIDIMENSIONALES  La programación ofrece innumerables opciones  Un elemento de un arreglo, puede ser otro arreglo  int A[3][3];  A[3] es un arreglo de tres elementos  Cada elemento es otro arreglo de 3 elementos enteros (0,0) (0,1) (0,2) (1,0) (1,1) (1,2) (2,0) (2,1) (2,2) A[0] A[1] A[2] A[0][0] A[1][0] A[2][0] A[0]1] A[1][1] A[2][1] A[0][2] A[1][2] A[2][2] int A[3][3]; Ejercicio
  • 30. ESTRUCTURAS o REGISTROS  Es un grupo de “componentes”. Cada componente  Tiene su propio identificador, y  Se conoce como “elemento” o “campo” de la estructura  Ejemplo:  Es la declaración del nuevo “tipo de dato”: NombreCompleto  Con este tipo de dato, podremos crear “variables”: NombreCompleto snombre, enombre; typedef struct TNombreCompleto{ char Primero[10]; char Inicial; char Ultimo[10]; }NombreCompleto;
  • 31. USANDO ESTRUCTURAS  snombre es una variable de tipo NombreCompleto  Tiene la misma forma que la del nuevo tipo de dato  Cada miembro/campo ocupa memoria  Para acceder a un campo, se indica,  La variable seguida de un punto y del nombre del campo. Ejemplo snombre.Inicial = ‘L’; primero inicial ultimo snombre Los registros de tipo NombreCompleto, tendrán la misma “estructura” Cada dato tiene diferente tamaño y espacio en memoria Cada dato representa una información diferente Ejercicio
  • 32. UNIONES  Permite que una variable se interprete de varias formas distintas, dependiendo de la necesidad  En una estructura  Siempre es válido referirse a cualquier miembro de la misma  Si hay n miembros, hay n cajones de memoria  En una unión  Solo trabajaremos con un miembro a la vez  Hay un solo cajón de memoria, capaz de almacenar al mas grande de los miembros  Si el elemento escogido es mas pequeño, sobrara espacio
  • 33. UNIONES typedef union ValorPolimorifco{ int valor_entero; float valor_real; }; ValorPolimorfico a; a.valor_entero = 9; a.valor_real = 8.9; typedef union ValorPolimorifco{ int valor_entero; float valor_real; Tdato tipo; }; ValorPolimorfico a; printf(“Tipo de dato:”); a.tipo = GetInteger(); if a.tipo == Entero then a.valor_entero = 9; elseif a.tipo == Real then a.valor_real = 8.9; typedef enum {Entero, Real} Tdato;
  • 34. AMBITO DE VARIABLES  Los parámetros y variables, dentro de una función,  Son variables con ámbito local  Solo son validas en ese ambiente,  Las variables también pueden tener un ámbito “global”  Empiezan a existir desde su declaración, y  Son liberadas con el alcance de un archivo: variables externas  Para darle privacidad a una variable  Para que no pueda ser vista por otros archivos,  Se la declara static, con ámbito global para archivo únicamente