Professional Documents
Culture Documents
Declaración Declaración
Sintaxis: struct nombre_estructura{ • Una vez que la composición a sido definida, las
tipo1 miembro1; variables de este tipo de estructuras pueden
tipo2 miembro2; declararse como sigue:
...................
tipoN miembroN; Sintaxis: struct nombre_estructura var1, var2, ..., varN;
};
• Es posible combinar la declaración de la estructura
con la declaración de las variables.
• La palabra struct define la estructura
• nombre_estructura es el nombre que identifica
estructuras de este tipo, (misma composición) • En este caso, el nombre de la estructura es
• miembro1, ..., miembroN, son declaraciones de opcional).
miembros individuales. Los miembros pueden ser
variables ordinarias, punteros, arreglos u otras
estructuras.
Programación Estructurada Programación Estructurada
Declaración Ejemplo
1
Estructuras Anidadas Ejemplo
• Anidamiento de
• Una estructura puede ser miembro de otra, (el ANSI struct fecha { estructuras.
establece que se puede anidar hasta 15 estructuras, int mes; 1. Declaración de una
pero la mayoría de los compiladores admiten más ). int dia; estructura fecha.
int anio;
• En tal situación, la declaración de la estructura };
interna debe aparecer antes que la declaración de la 2. Declaración una
estructura externa. struct cuenta { estructura con el
nombre cuenta donde
int numero_cuenta;
el último miembro es
• También se pueden definir arreglos de estructuras. char tipo_cuenta; una estructura
char nombre[30]; previamente
struct fecha ultimo_pago; declarada.
} clientes[100]; 3. Declaración de un arreglo
de 100 estructuras de
tipo cuenta.
Programación Estructurada Programación Estructurada
2
Referencia a los miembros de una estructura Operación de Asignación
• La instrucción typedef permite a los usuarios definir nuevos • La instrucción typedef es particularmente útil cuando se
tipos de datos que san equivalentes a los tipos existentes, es definen estructuras ya que elimina la necesidad de escribir
decir darle nuevos nombre a los tipos existentes. repetidamente la palabra calve struct.
• Sintaxis: typedef tipo nuevo_tipo;
• donde tipo es el tipo existente y nuevo_tipo es el nuevo Sintaxis: typedef struct {
nombre. tipo1 miembro1;
• La definición de un nuevo tipo de dato no reemplaza al tipo2 miembro2;
anterior, sino añade un nuevo nombre y con lo cual, ambos ...................
nombres se pueden usar para declarar variables.
tipoN miembroN;
typedef int edad;
} nuevo_tipo;
edad bebe, joven, adulto;
3
Paso de estructuras a funciones Paso de estructuras a funciones
• Se permite una transferencia por valor e incluso una función 3. Declaración de una variable cliente1 y cliente2.
puede devolver mediante la instrucción return una registro cliente1, cliente2 = {"Jose", 1200, 120.000};
estructura; (Notar el contraste de con los arreglos, que no ....
pueden ser pasados por valor ni se devuelven mediante la
instrucción return). 4. Llamada por referencia.
1. la definición de registro debe ser visible. fun1(&cliente2);
typedef struct {
char nombre[20]; 5. Llamada por valor.
int no_cuenta; fun2(cliente2);
float saldo;
} registro; 6. La función devuelve una estructura
cliente1 = fun3();
2. Prototipo de funciones.
void fun1(registro *pt);
void fun2(registro cliente);
registro fun3(void);
Programación Estructurada Programación Estructurada
Definición Definición
Ejemplos:
Int *a; c
Char *c;
Float *f; h o l a
4
Operadores Ejemplo
Ejemplo Aritmética
5
Funciones y Punteros Ejemplo
Ejemplo Utilización
Ejemplo OJO
Ejemplo 6 ¡Precauciones!
• Un puntero no se puede utilizar si no ha sido inicializado.
• Función que calcula el tamaño de un string Ejemplo:
int strlen(char* s)
int *p;
{
int b;
char* p = s;
*p = 66; /* error, se está guardando un valor, en una
while(*p)
posición de memoria desconocida */
p++; p = &b;
return (p – s); *p = 66; /* correcto, porque ‘p’ apunta a un lugar
} conocido y válido */
6
Introducción
Introducción Introducción
• Estas limitaciones dificultan:
• Sin embargo, no siempre es posible almacenar los datos • La manipulación de gran número de datos, ya que—
en la memoria central o principal del computador, en ocasiones—pueden no caber en la memoria
debido a las limitaciones que su uso plantea: principal.
• La transmisión de salida de resultados de un
programa pueda ser tratada como entrada a otro
• La cantidad de datos que puede manipular un programa programa.
está limitada a la memoria del computador.
Introducción Definición
Campos
7
Definición Definición
Campos
Componentes • Los caracteres se agrupan en campos de datos. Un
campo es un ítem o elemento de datos elementales,
tales como un nombre, rut, ciudad, teléfono, etc.
1. Registros: Corresponden a cada una de las filas
contenidas en el archivo. Normalmente se le asocia • Un campo está caracterizado por su tamaño o longitud
un identificador o clave. y su tipo de datos (cadena de caracteres, entero, lógico,
etc.).
2. Campos: Corresponden a las columnas contenidas
en los registros. A cada uno se le asocia su propio • Los campos pueden incluso variar en longitud. En la
tipo de dato básico o compuesto, así como también mayoría de los lenguajes de programación los campos
su tipo de validación y regla de integridad. de longitud variable no están soportados y se suponen
de longitud fija
Definición Definición
Campos Registros
• Un campo es la unidad mínima de información de un • Un registro es una colección de información,
registro. normalmente relativa a una entidad particular.
• Los datos contenidos en un campo se dividen con • Un registro es una colección de campos lógicamente
frecuencia en subcampos; por ejemplo, el campo fecha relacionados, que pueden ser tratados como una unidad
se divide en los subcampos día, mes, año. por algún programa.
Definición Definición
Registros Archivos
• Los registros pueden ser todos de longitud fija; por • Un Archivo de datos - o simplemente un archivo - es
ejemplo, los registros de empleados pueden contener el una colección de registros relacionados entre sí con
mismo número de campos, cada uno de la misma aspectos en común y organizados para un propósito
longitud para nombre, dirección, fecha, etc. También específico.
pueden ser de longitud variable.
• Por ejemplo, un archivo de una asignatura, contiene un
• Los registros organizados en campos se denominan conjunto de registros de los estudiantes de esa
registros lógicos. asignatura. Otros ejemplos pueden ser el Archivo de
nóminas de una empresa, inventarios, stocks, etc.
8
Definición Clasificación
Archivos
Clasificación General
• Un archivo en un computador es una estructura
diseñada para contener datos. • La forma de clasificación más básica se realiza de
acuerdo al formato en que residen estos archivos.
• Los datos están organizados de tal modo que puedan
ser recuperados fácilmente, actualizados o borrados y
almacenados de nuevo en el archivo con todos los • De esta forma hablamos de archivos ASCII (de texto) y
cambios realizados. archivos binarios.
Según su Uso
Dinámico
• Se accesan en primera instancia la tabla de índices de • La siguiente tabla resume las distintas denominaciones
manera de recuperar la dirección de inicio de bloque en dadas a los archivos según la utilización dada:
donde se encuentra el registro buscado. (dentro
del rea primaria o de overflow). Se permite para Tipo Definición Ejemplo
archivos con Organización Sec.Indexada.
Maestros Perduran durante todo el Archivo de empleados en un
ciclo de vida de los sistemas sistema de Remuneraciones
Directo
Transaccio Se utilizan para actualizar Archivo de ventas diarias en
• Es aquel que utiliza la función de Hashing para nales otros archivos. Pueden ser un sistema de ventas
recuperar los registros. Sólo se permite para archivos eliminados al término de
con Organización Relativa. este proceso o conservados
como respaldos
De Son copias de seguridad de
Respaldo otros archivos
Programación Estructurada Programación Estructurada
9
Clasificación de los Archivos Organización Básica de Archivos
• Los registros son almacenados en una distribución tal • Existe una relación directa entre la ubicación lógica de
que permiten ser consultados a través de índices. En un registro y su ubicación física.
ellos se distinguen 3 áreas de almacenamiento: • Para ello se necesita una función matemática que
1.De índices: Mecanismo de acceso a los registros de datos. asigne a un valor de clave una dirección física única.
2.Primaria o de datos: En donde se encuentran los datos
propiamente tal.
3.De overflow: Encargada de recibir aquellos registros que no • El encontrar una Fh óptima es tarea compleja por lo
pueden ser almacenados en el área primaria. que esta organización es poco utilizada.
• Se recomienda : Para archivos de consulta. • Se recomienda: Para archivos en donde sea crucial
minimizar tiempos de acceso.
10
Operaciones Básicas de Archivos Operaciones Básicas de Archivos
Concatenación Intercalación
• Consiste en generar un archivo
Clave Datos Clave Datos
• Consiste en unir 2 ó más archivos en 10 “
ordenado según algún criterio preestablecido 10 “
uno (uno a continuación del otro). 17 “ a partir de dos ó más archivos que pueden 13 “
23 “ o no encontrarse en la misma secuencia. 17 “
Clave Datos Clave Datos 35 “ Clave Datos Clave Datos 22 “
10 “ 13 “ 47 “ 10 “ 13 “ 23 “
17 “ 22 “ 55 17 “ 22 “ 30
23 “ 30 “ 62 23 “ 30 “ 35
35 “ 40 “ 13 35 “ 40 “ 40
Proceso Proceso
47 “ 92 “ 22 47 “ 92 “ 47
de de
55 “ 30 55 “ 55
Concatenaci Intercalaci
62 “ 40 62 “ 62
ón ón
92 92
Validación Actualización
• Consiste en asegurar la veracidad e integridad de los • Consiste en agregar y eliminar registros desde un
datos que ingresan a un archivo. Existen numerosas archivo, así como también modificar el valor de uno ó
técnicas de validación tales como: Dígito verificador, más campos. También se conoce como mantención de
chequeo de tipo, chequeo de rango. uno o más archivos.
Listado Archivo Listado
de de de
Errores transac. Errores
Maestro
de VALIDACIÓN VALIDACIÓN
Artículos
Maestro Maestro Maestro
de de de
Artículos’ Artículos Artículos’
11
Operaciones Básicas de Archivos Operaciones Básicas de Archivos
12
Operaciones Básicas de Archivos Operaciones Básicas de Archivos
Listar Archivo
Calcular Tamaño en bytes del archivo /* Lista el contenido del archivo (lo que existe) */
long filesize(FILE *stream) void Listado(FILE **f)
{ struct TEmpleado R;
{ /* Abriendo para lectura */
long curpos,length; if ((*f=fopen(archivo,"rb"))==NULL)
{
printf("Archivo no existe!!!");
curpos=ftell(stream); PulsarTecla();
}
fseek(stream,0L,SEEK_END); else
length=ftell(stream); { fseek(*f, 0L, SEEK_SET); /* Se ubica al principio del archivo */
fseek(stream,curpos,SEEK_SET); while(!feof(*f))
{clrscr();
printf("Registro %ld de %ld", (ftell(*f)/sizeof (struct TEmpleado))+1,
return length; filesize(*f)/sizeof(struct TEmpleado));
if (fread(&R, sizeof(struct TEmpleado), 1, *f)!=1) break;
} if (R.Existe){Ver(R);PulsarTecla();
}
else{
gotoxy(25,10);
printf("******* Registro Eliminado *******");
PulsarTecla();
}
}
fclose(*f);
}
}
Programación Estructurada Programación Estructurada
13
Operaciones Básicas de Archivos Operaciones Básicas de Archivos
Eliminación Lógica (marcado de registro) if (E.Existe)
void EliminarLogico(FILE **f) {
{ struct TEmpleado E; gotoxy(20,3); clreol();
char N[40]; Ver(E);
int I; E.Existe=False; /* Eliminacion logica */
/* Abriendo para Lectura-Escritura */ fseek(*f, I, SEEK_SET);
if ((*f=fopen(archivo, "r+b"))==NULL) fwrite(&E, sizeof (struct TEmpleado), 1, *f);
{printf("Error de Apertura");PulsarTecla();} gotoxy(20,11);
else
printf("Eliminando Registro...");
{ fseek (*f, 0L, SEEK_SET);
delay(4000);
gotoxy(25,2);
do }
{ clrscr(); else
gotoxy(20,2); printf("[Eliminaci¢n]"); {
gotoxy(20,5); printf("C¢digo Empleado a Eliminar: "); gotoxy(20,11);
gets(N) ; printf("Registro no existe...");
fflush(stdin); }
I=Posicion(*f,N); }
if(I==-1) gotoxy(25,23);
{ printf("Presione - n - para salir de [Eliminaci¢n]");
gotoxy(20,11); } while (toupper(getche())!='N');
printf("Registro no existe..."); fclose(*f);
} }
else
}
{
fseek(*f, I, SEEK_SET);
fread(&E, sizeof(struct TEmpleado), 1, *f);
14
Operaciones Básicas de Archivos
Programa Principal
/* Bloque principal */
int main(void)
{
clrscr();
if (!FileExist(&f,archivo))
{
printf ("Error de apertura o creacion de archivo");
exit(1);
}
else
Menu(); //Menú de operaciones básicas
return(0);
}
Programación Estructurada
15