universidad latina introduccion a la programacion v.- tipos de datos compuestos

71
UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Upload: alejandra-araya-contreras

Post on 24-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

UNIVERSIDAD LATINA

INTRODUCCION A LA PROGRAMACION

V.- TIPOS DE DATOS COMPUESTOS

Page 2: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Los tipos de datos compuestos son aquellos que están formados por varios tipos de datos, ya sean estructurados en grupos o datos básicos.

Page 3: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

LOS DATOS A PROCESAR PUEDEN SER:

SIMPLES o BASICOS

Ocupan solo una casilla de memoria. (enteros, reales, caracteres, booleanos).

Ejem.- 567

ESTRUCTURADOS.- Hacen referencia a un grupo de casillas de memoria

-Arreglos o vectores, archivos, árboles, registros, Bases de Datos, etc.

Page 4: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Para la implementación de sistemas de software se requiere cualquiera de las siguientes estructuras:

• Cadenas• Estructuras o registros• Funciones• Arreglos (arrays) y matrices• Apuntadores• Pilas, colas• Archivos• Bases de Datos

Page 5: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

ESTRUCTURA DE DATOS ( ARREGLOS )

ARREGLOS O VECTORES.

ESTRUCTURADOS.- Hacen referencia a un grupo de casillas de memoria

Es una colección finita, homogenea y ordenada de elementos

Finita.- Indica el número máximo

Homogenea.- Son del mismo tipo (entero, reales, caracteres)

Ordemada.- Llevan un órden consecutivo a traves de un índice

Ejem.- A= 34 45 12 05 93 Datos(0) (1) (2) (3) (4) Indices

Page 6: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

ESTRUCTURA DE DATOS ( ARREGLOS )

ARREGLOS O VECTORES.

ESTRUCTURADOS.- Hacen referencia a un grupo de casillas de memoria

Los índices hacen referencia a los componentes (datos) en forma individual.

Ejem.- A= 34 45 12 05 93 Datos(0) (1) (2) (3) (4) Indices

En forma individual.- A[2]= 12

Cuanto vale A[1], A[4] …?

Page 7: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

VECTORES.

Un vector es un array (arreglo) unidimensional, es decir, sólo utiliza un índice para referenciar a cada uno de los elementos. Su declaración será:

tipo nombre [tamaño];

Ejemplo: int vector[10];

El tipo puede ser cualquiera de los ya conocidos y el tamaño indica el número de elementos del vector ( se debe indicar entre corchetes [ ] ).

Page 8: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Practica 51. Rellenamos un vector del 0 - 9

/* Declaración de un array. */

#include <stdio.h>

main()

{

int vector[10],i;

for (i=0;i<10;i++) vector[i]=i;

for (i=0;i<10;i++) printf(" %d",vector[i]);

}

Nota: En el ejemplo puedes observar que la variable i es utilizada como índice, el primer for sirve para rellenar el vector y el segundo para visualizarlo. Como ves, las posiciones van de 0 a 9 ( total 10 elementos ).

Page 9: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

OPERACIONES CON ARREGLOS O VECTORES.

Las operaciones básicas con Arreglos son:

•Lectura de un arreglo

•Despliegue de datos de un arreglo

•Llenado de un arreglo

•Ordenacion de un arreglo

•Búsqueda de datos en un arreglo

Page 10: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

LLENADO/LECTURA DE UN ARREGLO

Pseudocodigo:

Dame los 10 datos ?

PARA i desde 0 hasta 10 incrementa

LEE A[i].

Codigo en C o C++

printf ("Dame los 10 datos");

for (i=0; i<10; i++)

{

scanf ("%d", &valor [i]);

}

Page 11: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

DESPLIEGUE DE UN ARREGLO Y OPERACIONES CON SUS COMPONENTES

Pseudocodigo:

PARA i desde 0 hasta 10 incrementa

Inicio

DESPLIEGA “Valor”, Indice + 1, valor

SUMA los valores del arreglo

termina

Codigo en C o C++

for (i=0; i<10; i++)

{

printf ("Valor %d = %d\n", i+1, valor [i]);

suma += valor [i];

}

Page 12: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

PRACTICA 51a:

A) HACER UN PROGRAMA (ProgArreg.cpp) EN C o C++ QUE PIDA EL PROCESO PARA N CALIFICACIONES Y LOS DATOS DESPLEGANDO AL FINAL SU PROMEDIO.

Page 13: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

#include <stdio.h>

#include <conio.h>

int i, valor [100], suma=0, n;

float promedio;

main ()

{ printf ("Cuantas calificaciones ? ");

scanf ("%d", &n);

printf ("Dime los %d Datos en el mismo renglon\n", n);

for (i=0; i<n; i++)

{

scanf ("%d", &valor[i]);

}

for (i=0; i<n; i++)

{

printf ("Valor %d = %d\n", i+1, valor [i]);

suma += valor [i];

}

promedio = (float) suma/n;

printf ("El promedio es %g\n", promedio);

getch();

}

Page 14: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

ARREGLOS MULTIDIMENCIONALES:

Un vector es un array unidimensional, es decir, sólo utiliza un índice para referenciar a cada uno de los elementos. Su declaración será:

tipo nombre [tamaño];

Una matriz es un array multidimensional. Se definen igual que los vectores excepto que se requiere un índice por cada dimensión. Su sintaxis es la siguiente:

tipo nombre [tamaño 1][tamaño 2]...;

Una matriz bidimensional se podría representar gráficamente como una tabla con filas y columnas.

Page 15: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

ARREGLOS MULTIDIMENCIONALES:

Ejem.- Una matriz de 2X3 (2 filas por 3 columnas) se inicializa en C/C++ como:

int matriz[2][3] = {

{ 20,50,30 },

{ 4,15,166 }

};

Otra manera es llenar el arreglo mediante una instrucción FOR anidada

Page 16: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Practica 51b

/* Matriz bidimensional. */#include <stdio.h>#include <conio.h>

main() /* Rellenamos una matriz */{int x,i,numeros[3][4]; /* rellenamos la matriz */printf("Dime los valores de matriz 3X4\n");for (x=0;x<3;x++) for (i=0;i<4;i++)

scanf("%d",&numeros[x][i]);

/* visualizamos la matriz */ for (x=0;x<3;x++) for (i=0;i<4;i++) printf("%d",numeros[x][i]);getch();}Nota: al final mostrar la suma de los valores contenidos

Page 17: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Distribución de datos en una Matríz

int numeros[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

quedarían asignados de la siguiente manera:

numeros[0][0]=1 numeros[0][1]=2 numeros[0][2]=3 numeros[0][3]=4

numeros[1][0]=5 numeros[1][1]=6 numeros[1][2]=7 numeros[1][3]=8

numeros[2][0]=9 numeros[2][1]=10 numeros[2][2]=11 numeros[2][3]=12

Page 18: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

QUE SON ORDENAMIENTOS DE DATOS ?

SORT / ORDENACION.-

Es reagrupar un grupo de datos en una secuencia especifica de orden

(mayor -> menor o menor -> mayor)

Page 19: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

LA ORDENACION DE ELEMENTOS PUEDE SER:

• Ordenación Interna.- En memoria principal (arrays, listas).

• Ordenación Externa.- En memoria secundaria. (dispositivos de almacenamiento externo.- archivos y Bases de datos).

Page 20: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

POR INTERCAMBIO (Burbuja o bubble sort )

El bubble sort, también conocido como ordenamiento burbuja, funciona de la siguiente manera:

• Se va comparando cada elemento del arreglo con el siguiente; si un elemento es mayor que el que le sigue, entonces se intercambian; esto producirá que en el arreglo quede como su último elemento, el más grande.

• Este proceso deberá repetirse recorriendo todo el arreglo hasta que no ocurra ningún intercambio.

• Los elementos que van quedando ordenados ya no se comparan. "Baja el más pesado".

Page 21: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

EJEMPLO: Ordenamiento por Burbuja o bubble sort

Consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados. Sea un array de 6 números de empleados: {40,21,4,9,10,35}:

Primera pasada:{21,40,4,9,10,35} <-- Se cambia el 21 por el 40.{21,4,40,9,10,35} <-- Se cambia el 40 por el 4.{21,4,9,40,10,35} <-- Se cambia el 9 por el 40.{21,4,9,10,40,35} <-- Se cambia el 40 por el 10.{21,4,9,10,35,40} <-- Se cambia el 35 por el 40.

Segunda pasada:{4,21,9,10,35,40} <-- Se cambia el 21 por el 4.{4,9,21,10,35,40} <-- Se cambia el 9 por el 21.{4,9,10,21,35,40} <-- Se cambia el 21 por el 10.

Ya están ordenados, pero para comprobarlo habría que acabar esta segundacomprobación y hacer una tercera.

Page 22: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

// Definimos una función donde A=arreglo y N=tamaño

int bubblesort(int A[],int N){

int i,j,AUX;

for(i=2;i<=N;i++){ //avanza

for(j=N;j>=i;j--){ //retrocede

if(A[j-1]>A[j]){ //si i > d intercambio

AUX=A[j-1]; //guardamos en AUX

A[j-1]=A[j]; //pasamos d a i

A[j]=AUX; //copiamos AUX en d

}

}

}

return 1;

}

Page 23: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

• Practica 51c: Hacer un programa con Arreglos que ordene por el método de la burbuja Bubblesort en forma ascendente un vector de 10 números de empleados de una empresa.

Pseudocódigo:

1.- Inicio

2.- Definir un vector de 10 números

3.- Llenar el vector con los números

4.- Mostrar la salida de los números capturados en desorden

5.- Ordenar el vector por el método bubblesort

6.- Mostrar la salida con los números ordenados del vector

Códificación :

main()

{

int A[10];

llenavector(A,10); // es uma función

printf("ORDENAMIENTO POR BURBUJA \n");

printf("Numeros a ordenar: \n");

salida(A,10); // es uma función

printf("\n\nNumeros ordenados: \n");

bubblesort(A,10); // es uma función

salida(A,10); // es uma función

getch();

}

Page 24: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

Función que llena el vector con los números

int llenavector(int A[],int N){

int c;

int x;

cout<<"Ingrese 10 numeros de empleados:"<<endl;

for(c=1;c<=N;c++){

cin>>x; // lee x numero

A[c]=x; // lo graba en el vector

}

return 1;

}

Page 25: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

Mostrar la salida de los números capturados en desorden.

int salida(int A[],int N){

int c;

for(c=1;c<=N;c++){

printf("%d, ",A[c]); // muestra el vector

}

return 1;

}

Page 26: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

Ordenar el vector por el método bubblesort

int bubblesort(int A[],int N){ int i,j,AUX; for(i=2;i<=N;i++){ for(j=N;j>=i;j--){ if(A[j-1]>A[j]){ AUX=A[j-1]; //Intercambio A[j-1]=A[j]; A[j]=AUX; } } } return 1; }

Page 27: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

EI, Profesor Ramón Castro Liceaga

Muestra la salida de los números ordenados.

int salida(int A[],int N){

int c;

for(c=1;c<=N;c++){

printf("%d, ",A[c]); // muestra el vector

}

return 1;

}

// Nota: este mismo procedimiento fue el que se utilizó para mostrar los datos desordenados.

Page 28: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Que son los Apuntadores ?•Un puntero o apuntador es una variable que contiene la dirección de memoria de otra variable.

Permiten la relación lógica entre una variable o nodo con otros nodos. Se utilizan para pasar información entre una función y sus puntos de llamada.

Su sintaxis es la siguiente:

tipo *nombre;

Donde nombre es, naturalmente, el nombre de la variable, y tipo es el tipo del elemento cuya dirección almacena el apuntador.

Page 29: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Operadores de Apuntadores

•Existen dos operadores especiales para trabajar con apuntadores: & y *.

El primero (&) devuelve la dirección de memoria de su operando. Por ejemplo, si queremos guardar en el apuntador x la dirección de memoria de la variable num, deberemos hacer lo siguiente:

x=&num;

El segundo (*) devuelve el valor de la variable cuya dirección es contenida por el apuntador. Este ejemplo sitúa el contenido de la variable apuntada por x, es decir num, en la variable a:

a=*x;

Page 30: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Asignación en Apuntadores

•Los apuntadores se asignan igual que el resto de las variables. El programa ejemplo mostrará las direcciones contenidas en p1 y p2, que será la misma en ambos apuntadores.

Practica 51d.

/* Asignaciones de punteros. */#include <stdio.h>main() /* Asignamos direcciones */{int a;int *p1,*p2; p1=&a; p2=p1;

printf("%p %p",p1,p2);}

Page 31: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

De lo simple a lo complejo•Las variables simples pueden almacenar pocos datos • Los arreglos pueden almacenar conjuntos de ellos del mismo tipo y al mismo tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones.•Pero a menudo se necesita trabajar sobre datos de diversos tipos en este caso ni las variables escalares ni los arreglos son adecuados.

Page 32: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Definición de estructuras o registro

•Un registro es una estructura que contiene un conjunto de datos llamados campos. Los elementos individuales de una variable estructura reciben el nombre de campos y pueden ser de tipos diferentes.

Page 33: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Ejemplo1 de estructura (lista simple de animales)

// Estructura de una lista simple de nombres de animales

struct animal { char nombre[40]; struct animal *siguiente;};

Lista:

Elementos: Primero actual ultimo

Page 34: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Practica 51d.- (lista simple de nombres de clientes con apuntadores)

do {printf("\n 1.- Agregar nombre \n 2.- Listar \n 3.- Salir\n");printf("Dime la opcion ?");scanf ("%d",&opcion);getchar();

switch (opcion) {case 1: actual = (struct cliente *) malloc (sizeof(actual)); printf (" dime el nombre"); fgets(actual->nombre,40,stdin); if (primer==NULL) primer=actual; else { ultimo->siguiente=actual;}actual->siguiente=NULL;ultimo=actual;break;case 2: printf ("listado de nombres");actual=primer;while (actual!= NULL){printf ("\n Nombre : %s ",actual->nombre);actual=actual->siguiente;}break;case 3 : printf("Fin de programa");}} while (opcion != 3);printf("Programa terminado\n");return (0);}

#include <stdio.h>#include <stdlib.h>#include <malloc.h>

int main(){ struct cliente { char nombre[40]; struct cliente *siguiente;};

struct cliente *primer, *ultimo, *actual;

int opcion; primer=NULL; ultimo=NULL;

Page 35: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Registros y archivos

Si bien es cierto que se pueden manejar gran cantidad de datos del mismo y diferente tipo al mismo tiempo el problema es que al terminar de ejecutarse el programa los datos se pierden. De esta situación nace el concepto de archivos que son medios en memoria secundaria que facilita almacenar los datos en forma permanente.

Page 36: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Organización de los archivos :

En general existen dos tipos de archivos: Archivos Secuenciales.- En este caso los datos se almacenan en forma consecutiva y no es posible leer (recuerdan que significa esta operación) ningun registro (recuerdan la nota de arriba) directmente, es decir para leer el registro n se deberá recorrer o accesar los n-1 registros anteriores.

Archivos Directos o Random.- Para este caso si se puede acceder o leer directamente un renglón n cualquiera.

Page 37: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Organización Secuencial:

-El término organización secuencial implica que lógicamente los registros del archivo están almacenados consecutivamente.

La organización secuencial es la organización de archivo más común. Los registros son almacenados uno tras otro en orden de llegada. Para acceder un registro determinado se deben leer todos los registros que están almacenados antes de éste.

Page 38: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Operaciones básicas con archivos:

•ESCRIBIR O GRABAR: Operación mas elemental con un archivo, consiste en tomar un o unos datos en variables de cualquier tipo (escalar, mezcla de datos, arreglos, estructuras) y almacenarlas en un archivo de datos en disco.

•LEER: Operación consistente en sacar los datos del archivo en disco y mandarlos (Ver los datos) o cargar la variable respectiva

Page 39: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Métodos de lectura/escritura

El paquete standar de input/output de “C”, hace disponible 4 metodos o maneras diferentes de leer y escribir los datos a disco.

Tres de ellas corresponden exactamente a lo aprendido de leer y escribir datos desde el teclado hacia la pantalla.

1.- Datos a ser grabados o leidos como un caracter a la vez, se utilizaran funciones analogas a getchar y putchar.

2.- Datos que pueden ser leidos o grabados como una string se usaran funciones analogas a gets y puts.

3.- Datos que se capturen o desplieguen con formatos parecidos a los usados por scanf y printf se usaran funciones similares, es decir serán problemas que involucran mezclas de strings, caracteres, floats, etc.

4.- Tambien se podran leer y escribir datos de tipo arreglo y registros utilizando instrucciones apropiadas de lectura y escritura de datos que permita el compilador.

Page 40: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Almacenamiento de archivos

Modo Texto: en este caso los datos son almacenados usando Ascii y por tanto son plenamente visibles usando cualquier editor.

Modo Binario: en este caso los datos son almacenados en notación hexadecimal y por tanto se ocupa un editor binario para reconocerlos, sin embargo un archivo binario es mas compacto que un archivo texto.

Page 41: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Operaciones básicas con los archivos

1.- Creación de Archivo.- En este proceso se pretende solamente crear un archivo nuevo en disco con su nombre tipo y especialidad de almacenamiento de datos apropiado.

2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya existente en disco para procesarlo ya sea para cargar o grabar estructuras en sus registros o leer algun registro en especial para mandarlo a una variable de cualquier tipo.

3.-Cierre de archivos: Es la operación mas importante en cualquier programa que maneje archivos, o se cierra el archivo como ultima instrucción del pograma o se vera el anuncio ABORT,RETRY,FAIL.

4.-Altas en archivo.- En este proceso se captura una estructura en memoria con sus datos pertinentes y despues se graba la estructura al archivo en disco.

5.-Lectura de archivo.- En este proceso se abre el archivo, se manda el registro de disco a una estructura en memoria para su procesamiento.

Page 42: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Operaciones básicas con los archivos6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla ya sea consola o mejor aún, a una pagina html

7.-Busqueda en archivos: Una de las operaciones mas comunes consiste en que el usuario pide toda la información de algun renglon en disco porporcionando la información de algun campo generalmente el campo clave de la estructura.

8.- Filtros.- En este proceso el usuario esta interesado en algun conjunto de renglones con caracteristicas comunes (condición), por ejemplo todos los alumnos de “sistemas” o todos los empleados que ganen mas de $500.00 pesos, o todos los clientes que sean de “tijuana”, etc

9.-Modificaciones de registros o archivos: Problema muy comun, donde los datos originales ya grabados se tienen que cambiar o actualizar, por ejemplo el nombre no era “juan” es “juana”, o la calificación no es 100 es 20, etc.

10.- Bajas de registros: tambien muy comun este proceso,por ejemplo el alumno ya egreso, el cliente huyo, etc. (baja fisica o baja logica)

Page 43: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Abrir y cerrar un archivo en C.Abrir y cerrar

FILE *fopen(char *nombre, char *modo);Devuelve NULL en caso de errormodo="r" Lecturamodo="r+" Lectura (y escritura)modo="w" Escrituramodo="w+" Escritura (y lectura)modo="a" Añadir al finalmodo="a+" Añadir al final (y lectura)modos=rb, rb+, wb, wb+, ab, ab+ binarioint fclose(FILE *puntero al archivo);Devuelve 0 si no hay error

Page 44: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Ejemplos de creación, altas y consultas de un archivo en C.

FILE//Prog17.cpp// Objetivo : Crear la estructura del archivo, sin datos

#include <stdio.h>#include <conio.h>#include <string.h>

struct { int matricula; char nombre[30]; int edad;}alumno;

main() {

//creando y cerrando el archivo en disco

FILE *archdisco;// El archivo se llama alumnos.dat el el directorio raiz de Carchdisco = fopen("C:\\alumnos.txt","w");

fclose(archdisco);

printf("** ARCHIVO CREADO..: Verifiquelo en su ruta, Gracias ..\n");printf(">Presione ENTER para continuar ..");

getchar();}

Page 45: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Comentarios:La funcion fopen() cuando realiza el trabajo de abrir un archivo, regresa la direccion fisica donde crea o graba el archivo en disco.

El primer parametro o argumento en esta función es la UNIDAD de disco y el nombre del archivo. El segundo parametro o argumento es llamado modo y es una de los varios modos que podemos usar.

“r” → Lectura. “w” → Escritura. “a” → Append, si el archivo ya existe append empieza a añadir los nuevos datos al final del archivo ya existente. “r+” → Lectura y escritura, ya debe existir el archivo.“w+” → Crea para lectura y escritura y si ya existe, sobreescribe. “a+” → Crea o abre para lectura y append, sino existe el archivo sera creado.

En adicion a los valores listados tambien es permitido agregar uno de los siguientes caracteres, pero insertandolo antes del signo + modo significado.

t lo abre en modo texto. b lo abre en modo binario.

Page 46: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

// prog26.cpp. Objetivo: Captura datos en alumnos.txt

#include <stdio.h>#include <conio.h>#include <string.h>

struct { int matricula; char nombre[30]; int edad;} alumno;

main() {

// captura de camposprintf("No. de Cuenta :");scanf("%d",&alumno.matricula);getchar();printf("Nombre :");gets(alumno.nombre);printf("Edad :");scanf("%d",&alumno.edad);

// grabando a disco

FILE *archdisco;

archdisco = fopen("C:\\alumnos.txt","ab+");

fwrite(&alumno,sizeof(alumno),1,archdisco);

fclose(archdisco);

//avisando usuario

printf("** ALUMNO INSERTADO...\n");printf(">Presione ENTER para continuar ..");

getchar();getchar();

}

Page 47: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

// prog27.cpp. Despliega los datos a partir del archivo alumnos.txt#include <stdio.h>#include <conio.h>#include <string.h>

struct { int matricula; char nombre[30]; int edad;}alumno;

main() {

// leyendo discoFILE *archdisco;

archdisco = fopen("C:\\alumnos.txt","rb+");

// aqui siempre debe empezar el ciclo de lectura// y fread() regresa siempre cuantas estructuras leyo

while(fread(&alumno,sizeof(alumno),1,archdisco)==1){// desplegando estructurasprintf("%d ",alumno.matricula);printf("%s ",alumno.nombre);printf("%d ",alumno.edad);printf("\n");

}; // aqui termina while

// no olvidar cerrar archivo y siempre fuera de whilefclose(archdisco);

printf("**>\n");printf("Presione ENTER para continuar ..");getchar();}

Page 48: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Ejemplo de Directorio Telefonico

struct dir{ char nombre[30]; /* Nombre */ char calleNum[40]; /* calle numero */ char ciudadPob[20]; /* ciudad, poblacion */ char cp[6]; /* Codigo postal */ char telefono[20]; /* Direccion Postal */ struct dir *siguiente; /* Apuntador a la siguiente entrada */ struct dir *anterior; /* Apuntador al registro anterior */}lista_entrada;

Lista doblemente enlazada

Page 49: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Practica 51e

Hacer un programa Directorio con los datos del grupo.

Page 50: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Clases:

• Programación Orientada a Objetos.- Paradigma de programación que utiliza los objetos en sus interacciones para diseñar aplicaciones y programas informáticos.

• Objeto.- Cualquier cosa que se puede pensar o ver

• Clase.- Conjunto de objetos que interactúan

• Métodos.- acciones y operaciones

• Atributos.- Características o propiedades de los objetos.

Las características pueden ser:

• Encapsulamiento.- La capacidad de un objeto de tener datos (atributos) y códigos o métodos

• Herencia.- Las clases pueden heredar atributos de padres a hijas

• Polimorfismo.- Permite crear diferentes métodos

Page 54: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

TERMINOLOGÍAAlgunos términos importantes que podemos mencionar son:

Clave.- campo que contiene información única, se le llama campo clave

Registro Físico o Bloque. Un bloque, en informática, es la cantidad más pequeña de datos que pueden transferirse en una operación de entrada/salida entre la memoria principal de una computadora y los dispositivos periféricos o viceversa.

Factor de Bloqueo. Es el número de registros lógicos que puede contener como máximo un registro físico o bloque.

Tipos de Datos. Los tipos de datos hacen referencia al tipo de información que se trabaja, donde la unidad mínima de almacenamiento es el dato. Estructuras de Datos. Es una es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación.

Tipos Abstractos de Datos. (TAD) es un modelo matemático compuesto por una colección de operaciones definidas sobre un conjunto de datos para el modelo.

Page 55: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

TERMINOLOGÍACampo : Es la unidad de información lógicamente significativa más pequeña en unarchivo. Un registro de un archivo está compuesto de varios campos.

Registro: Conjunto de campos relacionados. Por ejemplo los datos de unafactura, como el RUT, NOMBRE, FECHA, DIRECCION, pueden conformar unregistro.

Acceso directo: Modo de acceder a un archivo, que implica saltar al lugarpreciso donde se encuentra un registro.

Acceso secuencial: Modo de acceder a un archivo, que implica leer el archivodesde el principio y continuar hasta que se haya leído todo lo necesario.

Búsqueda secuencial : Método de búsqueda en un archivo, que implica leer elarchivo desde el principio y continuar haciéndolo hasta que se haya encontrado elregistro deseado.

Método de acceso: Enfoque proporcionado para localizar información en unarchivo.

Page 56: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Características de los Campos

Longitud: Es el tamaño del campo, medido en caracteres. Puede ser fija ovariable.

Clase: Es la definición del tipo de dato que será almacenado en el campo. Lostipos de datos más comunes son: • Numéricos, • Binarios, • Alfabéticos, Alfanuméricos y Lógicos

Alineamiento: Es la ubicación del dato dentro del campo. Las posiciones típicasson a la izquierda y a la derecha.

Relleno: Un campo, dependiendo del sistema computacional, una vez definidasu clase puede ser llenado por el sistema, con valores predeterminados o pordefecto. Para los números se utiliza típicamente los ceros y para los caracteresse usan los blancos. Puede no existir relleno.

Page 57: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Estructura de RegistroPosicional: En esta representación cada campo tiene una posición fijadentro del registro.

• Relacional: Los Valores pueden se de cualquier largo, y la forma dedistinguirlos es a través de un separador, el que debe ser tal que nopertenezca al conjunto de valores posibles para los registro.

• Rotulada: Los campos atributos se especifican explícitamente en estarepresentación. Para esta representación se usan rótulos que identificancada campo.

Page 58: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Conceptos de la estructura: Presentación de datos

Estructura Jerárquica: Campos.- espacio de almacenamiento para un dato en particular (Ejem. Nombre) Registros.- Conjunto de campos (Ejem. Registro de clientes) Archivos.- Conjunto de registros (Ejem: Clientes, artículos, proveedores) Base de Datos.- Conjunto de archivos interrelacionados (Ejem. BD empresa)

Page 59: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Base de Datos

Conjunto de datos almacenados en archivos relacionados entre si que tienen un significado implícito para la toma de decisiones

Page 60: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Modelo de Base de Datos

Es el fundamento teórico de una base de datos y determina de que manera los datos van a ser guardados, organizados y manipulados en un sistema de base de datos. De esta forma, define la infraestructura ofrecida por un sistema de base de datos particular.

El ejemplo mas popular de un modelo de base de datos, es el modelo relacional

Page 62: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Sistema Manejador de Base de Datos

El sistema manejador de bases de datos (Data Base Manager System) es la porción más importante del software de un sistema de base de datos.

Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de alguna tarea específica. Consiste en un conjunto de programas, procedimientos y lenguajes que nos proporcionan las herramientas necesarias para trabajar con una base de datos. Incorporar una serie de funciones que nos permita definir los registros, sus campos, sus relaciones, insertar, suprimir, modificar y consultar los datos.

Page 63: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Funciones de un Sistema Manejador de Base de Datos

Las funciones principales de un DBMS son: Crear y organizar la Base de datos. Establecer y mantener las trayectorias de acceso a la base de datos de tal forma que los datos puedan ser accesados rápidamente. Manejar los datos de acuerdo a las peticiones de los usuarios. Registrar el uso de las bases de datos. Interacción con el manejador de archivos.

Page 64: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

DBMS más populares

Nombre Productos

Sybase Adaptive Server

OracleOracle8, Oracle8i, Oracle8iEE,

Oracle9i, Oracle 10g

PostgreSQL PostgreSQL

Microsoft Access, MS-SQL Server

MySQL MySQL

InformixIllustra, Universal Server, Dynamic

Server

IBM DB2

Apache Derby

SQLite SQLite

Firebird Firebird

Page 65: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Conexión con Bases de Datos

Son los procedimientos e instrucciones para acceder a la Base de Datos ya sea desde el SMBD o algún lenguaje de programación en particular por ejem. C#, Java, Visual Basic, etc.

Page 66: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Diseño y creación de Bases de Datos

Éstos son los pasos básicos para diseñar y crear una base de datos: 1.Determinar su finalidad a partir de analizar un problema de necesidad de información.2.Hacer un modelo o diseño conceptual. (Nivel general y abstracto)3.Hacer un modelo lógico. (Nivel detallado Entidad-Relación) 3.1.Determinar las tablas que se necesitan. 3.2.Determinar los campos que se incluirán en las tablas. 3.3.Determinar las relaciones entre las tablas.4. Hacer un modelo físico. (Llevar el modelo lógico al SMBD) 5.Agregar datos.

Page 67: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

Instrucciones SQL

Es el lenguaje de programación para Bases de Datos.

El Lenguaje de Consulta Estructurado (SQL) es un lenguaje Standard que funciona para interactuar con las Bases de Datos.

Nos centraremos especialmente en las siguientes Instrucciones

SELECTUPDATEINSERTDELETE

Page 68: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

SELECT

SELECT es la instrucción por excelencia del SQL, ya que permite Consultar o desplegar los datos determinados de la Base de Datos.

Sintaxis Básica:SELECT <campos>FROM <tablas>

WHERE <condición>ORDER BY <campos>

Ejemplos: select matricula, nombre, direccion, refpago from alumnos where id = 1; select * from alumnos order by nombre;

select alumnos.matricula, nombre, refpago, monpago from alumnos, pagos where refpago = pf;

Page 69: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

UPDATE

UPDATE sirve para actualizar datos en una tabla.

Sintaxis Básica:

UPDATE <tabla> SET <campo1> = <valor1>

<campo1> = <valor>WHERE <condición>

Ejemplo:

UPDATE alumnos SET carrera = 'administracion' WHERE id = 1;

Page 70: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

INSERT

INSERT es para insertar registros a una tabla.

Sintaxis Basica:

INSERT INTO <tabla> ( campo1, campo2... )VALUES (valor1, valor2.... )

Ejemplos:

INSERT INTO pagosVALUES (2,'2000000','30','mensualidad',1400);

Page 71: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION V.- TIPOS DE DATOS COMPUESTOS

DELETEDELETE sirve para borrar registros a una tabla.

Sintaxis Basica:

DELETE FROM <tabla>WHERE <condición>

Ejemplo: DELETE * FROM alumnos WHERE id >1;