miércoles, 15 de febrero de 2012

LES INFORMO QUE EL DÍA DE MAÑANA SERA LA PRUEBA DE REPARACIÓN A LAS 2 DE LA TARDE.

martes, 7 de febrero de 2012

PRUEBA DE REPARACIÓN

Aquí tienen lo que deben estudiar para la prueba de reparación:

UNIDAD:
  1. Conceptos Básicos
  2. Conceptos Básicos - Ejercicios de Algoritmos 
  3. Técnicas Modernas de Programación 
  4.  Conceptos Básicos
  5. Conceptos Básicos - Ejercicios de Programas
  6. Conceptos Básicos - Clasificaciones
  7. NO
  8. Conceptos Básicos - Declaraciones
  9. Toda
  10. NO
  11. Toda

lunes, 23 de enero de 2012

YA PUBLICADAS TODAS LAS UNIDADES DEL ULTIMO CORTE DEL SEMESTRE. Espero que le saquen provecho a las unidades (8-9-11) publicadas que serán las del parcial, tal vez pueda ir algunos conceptos de las 10 así que repacen. 

ÉXITOS PARA TODOS Y GRACIAS POR PERMITIRME ESTAR CON USTEDES ESTE PRODUCTIVO SEMESTRE.

UNIDAD XI: ARCHIVOS ALEATORIO

ARCHIVOS ALEATORIOS O DIRECTOS 

A diferencia de los archivos secuenciales,  los archivos aleatorios almacenan datos en forma de registros. Como habíamos dicho en la unidad anterior para leer datos de un archivo secuencial había que leer todo el archivo, es decir que no podíamos leer por ejemplo los datos que estuviesen en la línea 35 del mismo sin antes pasar por todos los datos anteriores, por eso su nombre de archivo secuencial.  
En cambio los archivos aleatorios, también llamados archivos directos, almacenan los datos con una estructura diferente. Los datos se guardan  en registros mediante una estructura definida de tipo Type (estructura definida por nosotros) también llamada UDT.
Por ejemplo si tuviésemos 25 registros, cada uno con datos (apellido, e-mail, teléfono, etc.), y quisiera acceder al registro 17, puedo leer los datos del registro 17 sin tener que leer los 16 registros anteriores, ganando con ello más velocidad y teniendo una estructura de datos definida. 

Declaración de un archivo  
Para declarar un archivo de acceso directo se realiza con las palabras reservadas FILE OF, su sintaxis es la siguiente:
VariableArchivo : FILE OF TipoElementos; 
Esta declaración se realiza en la sección correspondiente a la declaración de las variables.
Ejemplo:
PROGRAM Archivo_Tipeado;
VAR 
Archivo : FILE OF Integer;
BEGIN 
END. 
Normalmente no se desea crear archivos que puedan almacenar un solo tipo de datos ya que se requerirían varios archivos, por ejemplo para alguna base de datos: uno para los nombres, otro para apellidos, otro para la edad, etc. Para evitar este inconveniente es posible usar registros del tipo RECORD, que permiten grabar en un solo registro un grupo de datos que pueden ser de diferentes tipos, uno de tipo INTEGER, uno de tipo STRING, etc. Los registros del tipo record deben ser declarados  antes de las variables en una sección llamada TYPE con el siguiente formato: 


La sección TYPE se escribe antes de la declaración de las variables.
Como ejemplo, si se quiere crear un archivo el que se guarden el nombre, domicilio, edad y estado civil de un grupo de personas, el primer paso a realizar es crear un registro que contenga todos estos campos:
TYPE  
Datos = RECORD  
Nombre : String[40];  
Domicilio : String[60]; 
Edad : Integer;  
EdoCivil : String[10]; 
END;  
El siguiente paso es declarar un archivo del tipo Datos así como una variable del mismo tipo de los que se utilizarán en el archivo: 
VAR  
Archivo : FILE OF Datos; 
Persona : Datos;  

Asignación de un archivo  
Aún cuando se tenga declarado el archivo no es posible grabar nada en él si no se le asigna un nombre real para guardarlo en el disco. El proceso de dicha asignación es el mismo que para los archivos de texto:
Assign (Archivo, 'Nombre.ext');
Nombre.txt puede ser una constante, una variable o  estar escrita directamente en el programa. Naturalmente debe cumplir con todas las reglas para nombrar un archivo. 

Abrir archivos  
Una vez declarado un archivo ya es posible abrirlo. En caso de querer abrir un archivo nuevo se utiliza la instrucción  Rewrite, o si el archivo ya existe en el disco se abre con el procedimiento Reset.  
No existe ninguna diferencia entre la apertura de un archivo de acceso directo para su lectura o para su escritura. Si al utilizar el procedimiento Rewrite el archivo asignado ya existía se eliminará del disco y se creará uno nuevo, por lo mismo se debe tener cuidado al momento de abrir estos archivos. 


Posicionamiento en el interior de un archivo
Cada uno de los registros de un archivo esta referenciado por un número específico comenzando desde el registro 0 y aumentando de 1 en 1. 
La función FilePos devuelve el número de registro actual, su sintaxis es: FilePos (VariableArchivo) 
VariableArchivo es la variable a la cual se asignó un nombre de archivo en el disco.
Para moverse a un registro determinado se utiliza la función Seek, con la siguiente sintaxis:
Seek (VariableArchivo, NumRegistro);
Para moverse al final del archivo para agregar un nuevo registro se utiliza este mismo comando con el parametro NumRegistro como sigue: 
Seek (VariableArchivo, FileSize(VariableArchivo)); 
Cuando se avanza en un archivo registro por registro se utiliza la función  EOF para determinar si ya se llegó al final del archivo. 

Lectura y escritura de archivos  
Para la lectura y escritura en un archivo de acceso directo únicamente se utilizan los procedimientos Read y Write. Después de cada operación de lectura o escritura el puntero se posiciona en el siguiente registro. 

Cerrar un archivo  
Para cerrar los archivos abiertos se procede igual  que en uno de acceso secuencial, utilizando el procedimiento close: Close (VariableArchivo);

UNIDAD X: SISTEMAS DE ARCHIVOS

ARCHIVO (FICHERO, FILE). 
Un archivo es un grupo de datos estructurados que son almacenados en algún medio y pueden ser usados por las aplicaciones.  La forma en que una computadora organiza, da nombre, almacena y manipula los archivos se denomina sistema de archivos. 
Como está organizada la información:
• Dato: Es el elemento primario de la información conformado por símbolos (letras, números, dibujos, señas, gestos) que reunidos pueden cobrar significación.
• Campo: elemento básico de información, que contiene un único valor y se caracteriza por su longitud y tipo. Ej.: nombre, su dirección, su teléfono, etc., de un profesor.
• Registro: colección de campos relacionados. Son tratados como unidad. Ej.: datos de un profesor.
• Archivo: colección de registros similares, tratados como una entidad. Tiene nombre único y puede tener acceso restringido. Ej.: archivo profesor.
• Base de Datos: colección de archivos relacionados. Tiene relaciones establecidas entre los archivos. Ej.: organización de un departamento.


Características generales de los archivos
• Nombre y extensión: Cada archivo es individual y es identificable por un nombre y una extensión opcional que suele identificar su formato.
• Los nombres de archivos originalmente tenían un límite de ocho caracteres  más tres caracteres de extensión, actualmente permiten muchos más caracteres dependiendo del sistema de archivos. Pascal solo acepta 7 caracteres.
• Tamaño: Los archivos tienen también un tamaño que se mide  en bytes, kilobytes, megabytes, gigabytes y depende de la cantidad de caracteres que contienen.
• Ubicación: La ruta de acceso a un archivo suele comenzar con la unidad lógica que lo contiene y los sucesivos subdirectorios hasta llegar al directorio contenedor, por ejemplo: "C:\Archivos de programaMicrosoftarchivo.txt".



SISTEMAS DE ARCHIVOS 
Un sistema de archivos es un conjunto de tipo de datos abstractos que son implementados para el almacenamiento, la organización jerárquica, la manipulación, el acceso, el direccionamiento y la recuperación de datos. Los sistemas de archivos comparten mucho en común con la tecnología de las bases de datos.

OPERACIONES CON ARCHIVOS
Existen muchas operaciones asociadas a archivos, las más elementales son:
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 algún registro en especial para mandarlo a una variable de cualquier tipo.
No confundir creación con apertura, creación es un proceso que solo se ejecuta una sola vez en la vida de un archivo, mientras que apertura, siempre se esta realizando por los programas especializados en algún proceso.
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 programa o se vera el anuncio ABORT,RETRY,FAIL.  98, /s, scandisk .

4.- Altas en archivo.- En este proceso se captura una estructura en memoria con sus datos pertinentes y después 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.
6.- Consulta de archivos: En este proceso se pretende desplegar todos los registros del archivo en disco a la pantalla.
7.- Búsqueda en archivos: Una de las operaciones mas comunes consiste en que el usuario pide toda la información de algún renglón en disco proporcionando la información de algún campo generalmente el campo clave de la estructura.
8.- Filtros.- En este proceso el usuario esta interesado en algún conjunto de renglones con características 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 común, 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: también muy común este proceso, por ejemplo el alumno ya egreso, el cliente huyo, etc.


ARCHIVOS SECUENCIALES 
Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a un determinado dato del archivo y este dato se encuentra en la mitad del archivo, para llegar a ese dato necesito pasar por todos los demás datos, de forma secuencial. El archivo finaliza con una marca de fin de archivo (eof).


Declaración de un archivo
Para declarar un archivo primero se declara una variable tipo text de la siguiente forma:
VAR 
VarArchivo : Text; 
Una vez declarada la variable se asigna al nombre de algún archivo:


ASSIGN (VarArchivo, NombreArchivo); Donde NombreArchivo es una cadena de
caracteres que contiene el nombre del archivo, la unidad de disco donde se encuentra y el
directorio.
Por ejemplo:
ASSIGN (VarArchivo, 'C:\DOS\PRUEBA.TXT');  

Abrir archivos  
Existen tres formas de abrir un archivo:


Escribir datos en un archivo
Para escribir datos a un archivo se utilizan las instrucciones Write y WriteLn, como si se quisiera escribir a la pantalla, con la diferencia de que se especificará la variable de archivo ya declarada. Ejemplo: WriteLn(VarArchivo, 'Prueba de archivos'); Esta sentencia grabaría el texto 'Prueba de archivos' en el archivo asignado a VarArchivo.

Leer datos de un archivo
Para leer los datos de un archivo de acceso secuencial se utilizan las instrucciones Read y ReadLn.
La instrucción Read lee uno o varios datos del archivo abierto y deja el puntero en el mismo renglón en el cual leyó los datos, en cambio ReadLn lee los datos y mueve el puntero al siguiente renglón.

Fin del archivo  
Normalmente los archivos de este tipo se leen renglón por renglón hasta llegar al final del mismo. Cuando se conoce de antemano el tamaño del archivo es posible utilizar un ciclo FOR, pero es más seguro utilizar la función EOF la cual es verdadera después de que el programa lee la última línea de un archivo de acceso secuencial.La sintaxis de la función EOF es: EOF (VaribleArchivo);


Es común realizar la verificación de la función con un ciclo WHILE como en el ejemplo
siguiente:
WHILE NOT EOF(Archivo) DO
BEGIN 
ReadLn(Archivo, Datos);
WriteLn(Datos); 
END; 
Cerrar archivos
Para asegurar que toda la información se grabe en el disco correctamente es necesario cerrar el archivo antes de que se termine la ejecución del programa, de lo contrario se corre el riego de que la última información que se haya accesado no se grabe en su totalidad.La instrucción para cerrar un archivo es Close, y su sintaxis es:Close (VaribleArchivo);

Función Eoln
La función Eoln sirve para verificar si el puntero ha llegado al final de la línea. Regresa el valor verdadero si se encuentra al final. Comúnmente se utiliza en las lecturas carácter por carácter.

Agregar datos a un archivo de texto  
Para añadir datos a un archivo de texto son necesarios los siguientes pasos:
Asignar un archivo a una variable con Assign
Agregar los datos con el procedimiento Append
Escribir los datos
Cerrar el archivo
A continuación se ilustra un ejemplo de un programa que agrega una línea a un archivo de texto:
PROGRAM Archivo; 
VAR 
Texto : TEXT;  
BEGIN 
Assign (Texto, 'PRUEBA.DAT'); 
ppend(Texto); 
WriteLn(Texto, 'Agregando una linea al archivo PRUEBA.DAT');
 Close (Texto) 
END. 





ARCHIVOS SECUENCIALES INDEXADOS 
Estos archivos mantienen las características básicas de los archivos secuenciales: los registros se organizan en secuencia basada en un campo clave.
Definición de Índice:
Un índice en informática es como el índice de un libro donde tenemos los capítulos del libro y la página donde empieza cada capítulo. Un índice es una estructura de datos que  permite recuperar las filas de una tabla de forma más rápida además de  proporcionar una ordenación distinta a la natural de la tabla. Un índice se define sobre una columna o sobre un grupo de columnas, y las filas se ordenarán según los valores contenidos en esas columnas. Por ejemplo, si definimos un índice sobre la columna  población de la tabla de  clientes, el índice permitirá recuperar los clientes ordenados por orden alfabético de población.

Ventajas de los archivos secuenciales indexados 
• Rápido acceso.
• El sistema de gestión de archivos se encarga de relacionar la posición de cada registro con su contenido mediante la tabla de índices.
Desventajas
• Desaprovechamiento del espacio por quedar huecos intermedio cada vez que se actualiza el archivo.
• Se necesita espacio adicional para el área de índices.

Características de los Archivos Secuenciales Indexados: 
• Los registros se organizan en una secuencia basada en un campo clave.
• Se incluye una tabla de índices que proporciona una capacidad de búsqueda para llegar a las proximidades de un registro deseado mediante la clave.

lunes, 16 de enero de 2012

UNIDAD IX: DATOS COMPLEJOS

PILAS

Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos. Como consecuencia, los elementos de una pila serán eliminados en orden inverso al que se insertaron. Es decir, el último elemento que se metió a la pila será el primero en salir de ella. 
En la vida cotidiana existen muchos ejemplos de pilas, una pila de platos en una alacena, una pila de latas en un supermercado, una pila de papeles sobre un escritorio, etc.

Representación en Memoria 

Las pilas no son estructuras de datos fundamentales, es decir, no están definidas como tales  en los lenguajes de programación. Las pilas pueden representarse mediante el uso de: 

• Arreglos.
• Listas enlazadas.

La representación gráfica de una pila es la siguiente:




COLAS

Son listas lineales de información a las cuales de accede de un modo determinado siendo el de tipo FIFO (First In, First Out) (Primero en Entrar, Primero en Salir), lo que quiere decir que el primer dato en entrar es también el primer dato  en salir, en las colas no se permite el acceso aleatorio a ningún elemento concreto. Las recuperaciones de operaciones son destructivas (elimina el elemento) de la cola, si no es almacenado en otro lugar se destruye.

Su utilización principal en las simulaciones, planificación de sucesos, y los procesos de entrada y salida con buffer. 
Existen muchísimos ejemplos de colas en la vida real, como por ejemplo: personas esperando en un teléfono público, niños esperando para subir a un juego mecánico, estudiantes esperando para subir a un camión escolar, etc.

Representación en Memoria 

Podemos representar a las colas de dos formas: 

• Como arreglos 
• Como listas ordenadas 

En lo sucesivo, al apuntador del primer elemento lo llamaremos F, al último elemento A y MAXIMO para definir el número máximo de elementos en la cola. 

Las colas lineales se representan gráficamente de la siguiente manera:




LISTAS

Son colecciones de elementos, donde cada uno de ellos, además de almacenar información, almacena la dirección del siguiente elemento. Una lista es una estructura lineal de datos. Es decir, cada uno de sus componentes y un predecesor únicos, con excepción del último y del primero. 

Las listas pueden implementarse mediante arreglos,  resultando así una estructura estática. También puede ser una memoria dinámica (La cantidad de memoria ocupada puede modificarse durante la ejecución del programa). Una lista enlazada o encadenada es una colección de elementos ó nodos, en donde cada uno contiene datos y un enlace o liga. 

A continuación se muestra el esquema de una lista:


GRAFOS

Un grafo es un conjunto de puntos (vértices) en el  espacio, que están conectados por un conjunto de líneas (aristas). 

Los grafos son estructuras de datos dinámicas no lineales, utilizadas comúnmente en el análisis de redes, en diseño de circuitos eléctricos, en estrategias de mercados, cartografía, mapas conceptuales, matemáticas, planificación de procesos y muchas área del conocimiento. 

Aristas

Son las líneas con las que se unen las aristas de un grafo y con la que se construyen también caminos.  
Si la arista carece de dirección se denota indistintamente  {a, b} o  {b, a}, siendo a y b los vértices que une.  
Si {a ,b} es una arista, a los vértices a y b se les llama sus extremos.  

Aristas Adyacentes: Se dice que dos aristas son adyacentes si convergen en el mismo vértice.  
Aristas Paralelas: Se dice que dos aristas son paralelas si vértice inicial y el final son el mismo.  
Aristas Cíclicas: Arista que parte de un vértice para entrar en el mismo.  
Cruce: Son dos aristas que cruzan en un punto.  

Vértices

Son los puntos o nodos con los que esta conformado  un grafo. Llamaremos grado de un vértice al número de aristas de las que es extremo. Se dice que un vértice es `par' o `impar' según lo sea su grado.  

Vértices Adyacentes: si tenemos un par de vértices de un grafo (U, V) y si tenemos un arista que los une, entonces U y V son vértices adyacentes y se dice que U es el vértice inicial y V el vértice adyacente. 
Vértice Aislado: Es un vértice de grado cero.  
 Vértice Terminal: Es un vértice de grado 1. 


ÁRBOLES
Es una estructura de datos formada por nodos los cuales están conectados por aristas. Un árbol se define como un tipo de grafo que no contiene ciclos.

Árbol Vacío: Un árbol puede estar vacío; es decir no contener ningún nodo. 
Raíz: es el nodo que está al tope del árbol. Un árbol solo tiene una raíz.

Camino: es la secuencia de nodos que hay que visitar para llegar de un nodo a otro de un árbol.

Padre: En un árbol toda rama va de un nodo n1 a un nodo n2, se dice que n1 es padre de n2.

Hijo: todo nodo puede tener más de una arista que lo lleva a otro nodo por debajo de él. Estos nodos que se encuentran por debajo de un nodo dado se llaman hijos.

Hojas: son aquellos  nodos que no tienen hijos.  En un árbol solo puede haber una raíz pero puede haber muchas hojas.
Subárbol: Cualquier nodo se puede considerar como la raíz de un subárbol.