estructuras de datos introducción. proceso (programa ) datos de entrada datos de salida el proceso...

32
Estructuras de Datos Introducción

Upload: rosario-paula

Post on 23-Jan-2016

249 views

Category:

Documents


0 download

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();}