Top Banner
Estructuras de Datos Introducción
32

Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Jan 23, 2016

Download

Documents

Rosario Paula
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Estructuras de Datos

Introducción

Page 2: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Proceso(Programa

)

Datos de

Entrada

Datos de

salida

El proceso computacional

Page 3: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Programa: Un conjunto de instrucciones especificadas en un lenguaje de programación que definen el proceso que se efectúa sobre los datos

• Al ejecutarse el programa, se lleva a cabo un proceso computacional

Page 4: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Los programas están constituidos por instrucciones que invocan a las operaciones elementales.

Ej: Operación elemental de mover un dato de un “sitio” a otro. Instrucción que la invoca: mov origen,destino

(ensamblador)

• La memoria es donde son ejecutados los programas

Page 5: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Las variables:

- Son un espacio de memoria

- Almacenan un dato

- Se puede cambiar el dato que almacenan durante el trascurso del programa mediante una asignación

- Pertenecen a un tipo de dato Ver luego

Page 6: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Operadores: Permiten aplicar una función predefinida por el lenguaje sobre uno o más valores de algún tipo nativo llamados operandos. Ej: +, -,*,/ etc.

• Los términos o expresiones son construcciones que permiten representar un valor Ej: 10/2

Se construyen mediante operadores.

Page 7: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Ejemplos en C/C++

int a; //Se declara la vble entera afloat b; //Se declara la vble real bchar sexo='m'; //Declara y asigna la vble sexo

a=5; //Se asigna a a el valor 5b=1+ 2*(4/3); //Se asigna a b el valor de una expresióna=a+ b*4; //Se asigna a a el valor de una expresión

¿Después de la última asignación cuánto vale a?

Para evitar pérdida de decimales se debe realizar: b=1+ 2* (float)4/3;

Page 8: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Entrada (por teclado) y salida de datos (por pantalla):

Ej. En C:

int a;

printf("Entre un número entero");

scanf("%d",&a);

fflush(stdin);

printf("El valor de a es %d",a);

Nota: scanf tiene otros problemas aparte del manejo del buffer…

Page 9: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• También por medio de cout y cin (C++):

int a;

cout << "Entre un número entero";

cin >> a;

cout << "El valor de a es" << a;

Page 10: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Estructuras de Control de flujo

• Decisión:

if(condición){

//Código del if}else{

//Código del else}

Puede haber if’s anidados…

switch (expresión*){case constante1: bloque de código; break;case constante2: bloque de código; break;default: bloque de código;}

*Entera o un (sólo uno) carácter •El uso de break es opcional en el default

Page 11: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Iteración:• Ciclo for:

for(int vble=valor; condición;vble+incremento){ //Código dentro del ciclo}

• Ciclo while:while(condición){

//Código del ciclo}

•Ciclo do while:

do{

//Código del ciclo

} while(condición);

Page 12: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Funciones: Son agrupaciones de instrucciones que llevan a cabo una tarea específica. Declaración:tipo_de_vble_de_retorno nombre_funcion ( tipo_arg_1 nombre_arg_1, ... , tipo_arg_n nombre_arg_n){

/*Código de la función*/return nombre_variable_retorno;

}

Debe ser del mismo tipoque tipo_de_vble_de_retorno

Page 13: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Un tipo de datos es un conjunto de elementos con características comunes, sobre los cuales se definen determinadas operaciones.

• Consta de dos partes:

- Un conjunto de valores

- Un conjunto de operaciones sobre dichos valores

• Al conjunto de valores que incluye un tipo de dato se le conoce como dominio o rango

Page 14: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Tipos de datos nativosLos tipos de datos nativos son aquellos ofrecidos por un lenguaje de programación.Ej: En C/C++:

Tipo Operaciones:int suma, resta, producto etc.double suma, resta, producto etc.char concatenar, longitud, etc.

Por ejemplo el rango de int es -32768 a 32767

Page 15: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Tipos de datos definidos por el usuario:• Simples: A través de typedef:

Ej:

typedef int edad; //Define el tipo de dato

edad miedad = 14; //Vble de tipo edad

• “Complejos”: Las clases Énfasis en Curso de Objetos

Page 16: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Los tipos de datos también se pueden clasificar así:• Tipos de datos EscalaresSon aquellos tipos de datos cuyos miembros están compuestos por un solo ítem (dato). Ej: int, float,char etc.

• Tipos de datos AgregadosSon aquellos que están compuestos por más de un elemento de información (dato), a cada uno de estos elementos se les conoce como miembros o componentes. Ejemplo: Las estructuras y uniones en C/C++

Page 17: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Estructuras: Las estructuras son tipos de datos compuestos formados por varios datos llamados campos o miembros, cada uno de los cuales posee su propio espacio en memoria.

• Pueden incluso haber estructuras dentro de estructuras Ver ejemplo luego

Page 18: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Para declarar una estructura en C++ se utiliza la siguiente sintaxis:

struct nombre_de_estructura

{

Campos de la estructura;

};

Page 19: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

struct estudiante {

char nombre[20];char apellido[20];float nota;int id;

}; …struct estudiante pedro; // Vble de tipo estructura

// estudiante

Page 20: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• También es posible:

struct estudiante

{

char nombre[20];

char apellido[20];

float nota;

int id;

} juan, luisa; //Declara la estructura y 2 vbles

Page 21: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• También se puede aplicar typedef:struct estudiante{

char nombre[20];char apellido[20];float nota;int id;

};typedef struct estudiante alumno;alumno est1,est2, estaux; //Vbles de tipo alumno (es decir estructuras estudiante)

Page 22: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Para acceder a cada uno de los campos de la estructura se utiliza:

vbleEstructura.campo

Ej:juan.nota=4.0;cin>> juan.nombre;cout<<juan.nombre<<" "<<juan.nota;

Page 23: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Definición: Un elemento estándar (stdelement) es un tipo de dato que tiene como característica distintiva un campo llamado clave que lo diferencia de todos los demás elementos de su tipo y lo hace único. Ejemplo: un campo cédula en una estructura persona.

• Estos elementos son los más usados al definir tipos de datos para crear estructuras de datos con ellos y próximamente serán vistos.

Page 24: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Uniones: Son similares a las estructuras, la diferencia es que los campos comparten el mismo espacio de memoria.

union nombre_de_union

{

Campos de la union;

};

Page 25: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

union persona {

char nombre[20];char inicial;

} p;cin>> p.nombre;//Suponga se ingresa Pedro, entonces: cout << p.inicial; //Imprime ‘P’./*¿Si en vez de inicial hubiese un campo declarado también de 20 caracteres que saldría? */

Page 26: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

#include <iostream.h>union prueba{ int a; int b; int c;}p;

void main (void){ p.a=10; cout << p.a << p.b << p.c;}

Imprime 101010

#include <iostream.h>union prueba{ int a; float b; char c;}p;

void main (void){ p.a=8; cout << p.a; // Imprime 8 cout << p.b; // Valor inesperado cout << p.c; // Valor Inesperado}

Imprime 81.2104e-04

Page 27: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Arreglos o Vectores: Son un conjunto de posiciones adyacentes de memoria para almacenar datos del mismo tipo que tienen el mismo nombre y se diferencian en el índice.

• Para declarar un arreglo en C++ se utiliza la sintaxis:

tipo_de_dato nombre_arreglo [dimension];

• Los índices van desde 0 hasta dimension-1.

Page 28: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

int arreglo[10];

arreglo[3]=50;

//Asigna el valor 50 al 4to elemento del arreglo

cout<<"El cuarto elemento es"<<arreglo[3];

• Se pueden también definir por ejemplo vectores de estructuras Luego se verán…

Page 29: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Clases:• Énfasis en el curso de Objetos (herencia, sobrecarga de

operadores etc.)• Son similares a las estructurasPara definir una clase en C++ se utiliza la siguiente sintaxis:

class nombre_de_clase {

private:Campos_de_la_clase;

public:Constructor;Declaración_de_funciones;

};

Page 30: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Ejemplo: Especificación de una clase punto:

#include <iostream.h>class punto{

private:int color;int coordenada_x;int coordenada_y;

public:punto(int color, int X, int Y); //Constructorvoid cambiar_color(int nuevo_color);int consultar_color();

};

Page 31: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

Implementación de las funciones:

punto::punto(int color1, int X, int Y){ color=color1; coordenada_x=X; coordenada_y=Y;}

void punto::cambiar_color(int nuevo_color){ color=nuevo_color;}

int punto::consultar_color(){ return color;}

Constructor

Page 32: Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.

• Declararación de una variable (objeto) de tipo punto e invocación de sus funciones (métodos):

void main(void){ punto alpha( 23, 100, 80 ); cout << alpha.consultar_color(); alpha.cambiar_color( 50 ); cout << alpha.consultar_color();}