Вы находитесь на странице: 1из 39

Administracion de Archivos

1.1 Definicin y Concepto.


Todos los programas computacionales usan estructuras de datos de alguna clase;
y muchos otros usan archivos. Aquellos que disean y desarrollan software para
aplicaciones comerciales y tecnolgicas, as como quienes disean y desarrollan
sistemas computacionales, es decir, sistemas operativos, compiladores, sistemas
de administracin de bases de datos y sistemas de comunicacin entre
procesadores, requieren de conocimientos de archivos y estructuras de datos. Las
estructuras de datos y la organizacin de archivos son los elementos principales
que determinan el rendimiento de los programas.
Cualquier aplicacin encargada de la manipulacin de ficheros en dispositivos de
almacenamiento. Estos programas hacen ms fcil el manejo de los archivos en
discos duros, discos flexibles, discos pticos, etc.
Las funciones bsicas que permite un administrador de archivos son: copiar,
pegar, mover, crear directorios, borrar, renombrar y buscar.
En WINDOWS la aplicacin administradora de archivos es llamada
EXPLORADOR DE WINDOWS.

1.1.1 SISTEMA DE ARCHIVOS


Es un mtodo para el almacenamiento y organizacin de archivos de computadora
y los datos que estos contienen, para hacer ms fcil la tarea encontrarlos y
accederlos. Los sistemas de archivos son usados en dispositivos de
almacenamiento como discos duros y CD-ROM e involucran el mantenimiento de
la localizacin fsica de los archivos.
Ms formalmente, un sistema de archivos es un conjunto de tipo de datos
abstractos que son implementados para el almacenamiento, la organizacin
jerrquica, la manipulacin, el acceso, el direccionamiento y la recuperacin de
datos. Los sistemas de archivos comparten mucho en comn con la tecnologa de
las bases de datos.
En general, los sistemas operativos tienen su propio sistema de archivos. En ellos,
los sistemas de archivos pueden ser representados de forma textual (ej.: el shell
de DOS) o grficamente (ej.: Explorador de archivos en Windows) utilizando un
gestor de archivos.
El software del sistema de archivos se encarga de organizar los archivos (que
suelen estar segmentados fsicamente en pequeos bloques de pocos bytes) y

directorios, manteniendo un registro de qu bloques pertenecen a qu archivos,


qu bloques no se han utilizado y las direcciones fsicas de cada bloque.
Los sistemas de archivos pueden ser clasificados en tres categoras: sistemas de
archivo de disco, sistemas de archivos de red y sistemas de archivos de propsito
especial.
Ejemplos de sistemas de archivos son: FAT, UMSDOS, NTFS, UDF, ext2, ext3,
ext4, ReiserFS, XFS, etc.

1.1.2 JERARQUIA DE DATOS


Una Base de datos jerrquica es un tipo de Sistema Gestor de Bases de Datos
que, como su nombre indica, almacenan la informacin en una estructura
jerrquica que enlaza los registros en forma de estructura de rbol (similar a un
rbol visto al revs), en donde un nodo padre de informacin puede tener varios
nodos hijo.
Esta relacin jerrquica no es estrictamente obligatoria, de manera que pueden
establecerse relaciones entre nodos hermanos. En este caso la estructura en
forma de rbol se convierte en una estructura en forma de grafo dirigido. Esta
variante se denomina Bases de datos de red.
1.1.3TIPOS DE ARCHIVOS
Existen bsicamente dos tipos de archivos, los archivos ascii y los archivos
binarios. El vocablo ascii es un acrnimo para American Standard Code for
Information Interchange. Es un estndar que asigna un valor numrico a cada
carcter, con lo que se pueden representar los documentos llamados de Texto
Plano, es decir, los que son legibles por seres humanos. Los archivos binarios son
todos los dems. Como ejemplos tenemos:

Archivos binarios:
o De imagen: .jpg, .gif, .tiff, .bmp (Portable bitmap), .wmf (Windows Meta File),
.png (Portable Network Graphics), .pcx (Paintbrush); entre muchos otros
o De video: .mpg, .mov, .avi, .gif
o Comprimidos o empaquetados: .zip, .Z, .gz, .tar, .lhz
o Ejecutables o compilados: .exe, .com, .cgi, .o, .a
o Procesadores de palabras: .doc
Archivos ascii
o Archivos fuente: .f, .c, .p
o Formatos de texto: .tex, .txt, .html
o Formatos de intercambio: .rtf, .ps, .uu

o Dentro de los archivos ASCII de uso comn por los programas de


bioinformtica estn los siguientes:
o De secuencias: .seq
o De secuencias mltiples: .aln, .msf (Multiple Sequence Format, secuencias
alineadas), .rsf (Rich Sequence Format, estos archivos pueden incluir una o ms
secuencias relacionadas o no).
Todos estos archivos se caracterizan por tener ciertos formatos distintivos, que
hacen posible su reconocimiento por parte de los programas de manipulacin y
anlisis de secuencias como el PHYLIP, el GCG; entre muchos otros.

1.1.4 INTERFAZ CON USUARIO


Es el medio con que el usuario puede comunicarse con una mquina, un equipo o
una computadora, y comprende todos los puntos de contacto entre el usuario y el
equipo, normalmente suelen ser fciles de entender y fciles de accionar.
Las interfaces bsicas de usuario son aquellas que incluyen cosas como mens,
ventanas, teclado, ratn, los beeps y algunos otros sonidos que la computadora
hace, en general, todos aquellos canales por los cuales se permite la
comunicacin entre el ser humano y la computadora. La mejor interaccin
humano-mquina a travs de una adecuada interfaz (Interfaz de Usuario), que le
brinde tanto comodidad, como eficiencia.
Tipos de interfaces de usuario
Dentro de las Interfaces de Usuario se puede distinguir bsicamente dos tipos: A)
Una interfaz de hardware, a nivel de los dispositivos utilizados para ingresar,
procesar y entregar los datos: teclado, ratn y pantalla visualizadora.
B) Una interfaz de software, destinada a entregar informacin acerca de los
procesos y herramientas de control, a travs de lo que el usuario observa
habitualmente en la pantalla.
C) Una interfaz de Software-Hardware, esta permite un puente entre la maquina y
las personas, permite a la maquina entender la instruccion y a el hombre entender
el codigo binario traducido a informacin legible.
1.1.5 DISEO DEL SISTEMA DE ARCHIVOS
El Sistema de Archivos es un componente importante de un S. O. y suele
contener:
Mtodos de acceso relacionados con la manera de acceder a los datos
almacenados en archivos.
Administracin de archivos referida a la provisin de mecanismos para que los
archivos sean almacenados, referenciados, compartidos y asegurados.
Administracin del almacenamiento auxiliar para la asignacin de espacio a los
archivos en los dispositivos de almacenamiento secundario.
Integridad del archivo para garantizar la integridad de la informacin del archivo.

El sistema de archivos est relacionado especialmente con la administracin del


espacio de almacenamiento secundario, fundamentalmente con el
almacenamiento de disco.
Una forma de organizacin de un sistema de archivos puede ser la siguiente:
Se utiliza una raz para indicar en qu parte del disco comienza el directorio raz
.
El directorio raz apunta a los directorios de usuarios.
Un directorio de usuario contiene una entrada para cada uno de los archivos del
usuario.
Cada entrada de archivo apunta al lugar del disco donde est almacenado el
archivo referenciado.
Los nombres de archivos solo necesitan ser nicos dentro de un directorio de
usuario dado.
El nombre del sistema para un archivo dado debe ser nico para el sistema de
archivos.
En sistemas de archivo jerrquicos el nombre del sistema para un archivo suele
estar formado como el nombre de la trayectoria del directorio raz al archivo.

1.1.6 SEGURIDAD EN ARCHIVOS.


Los sistemas de archivos generalmente contienen informacin muy valiosa para
sus usuarios, razn por la que los sistemas de archivos deben protegerla.
El Ambiente de Seguridad
Se entender por seguridad a los problemas generales relativos a la garanta de
que los archivos no sean ledos o modificados por personal no autorizado; esto
incluye aspectos tcnicos, de administracin, legales y polticos.
Se consideraran mecanismos de proteccin a los mecanismos especficos del
sistema operativo utilizados para resguardar la informacin de la computadora.
La frontera entre seguridad y mecanismos de proteccin no est bien definida.
Dos de las ms importantes facetas de la seguridad son:
La prdida de datos.
Los intrusos.
Algunas de las causas ms comunes de la prdida de datos son:
Actos y hechos diversos, como incendios, inundaciones, terremotos, guerras,
revoluciones, roedores, etc.
Errores de hardware o de software, como fallas en la cpu, discos o cintas ilegibles,
errores de telecomunicacin, errores en los programas, etc.
Errores humanos, por ej., entrada incorrecta de datos, mal montaje de cintas o
discos, ejecucin incorrecta de programas, prdida de cintas o discos, etc.
La mayora de estas causas se pueden enfrentar con el mantenimiento de los
respaldos (back-ups) adecuados; debera haber copias en un lugar alejado de los
datos originales.
Respecto del problema de los intrusos, se los puede clasificar como:
Pasivos: solo desean leer archivos que no estn autorizados a leer.
Activos: desean hacer cambios no autorizados a los datos.

Para disear un sistema seguro contra intrusos:


Hay que tener en cuenta el tipo de intrusos contra los que se desea tener
proteccin.
Hay que ser consciente de que la cantidad de esfuerzo que se pone en la
seguridad y la proteccin depende claramente de quin se piensa sea el enemigo.
Algunos tipos de intrusos son los siguientes:
Curiosidad casual de usuarios no tcnicos.
Conocidos (tcnicamente capacitados) husmeando.
Intentos deliberados por hacer dinero.
Espionaje comercial o militar.
Otro aspecto del problema de la seguridad es la privaca:
Proteccin de las personas respecto del mal uso de la informacin en contra
de uno mismo.
Implica aspectos legales y morales.
Tambin debe sealarse la posibilidad del ataque del caballo de Troya:
Modificar un programa normal para que haga cosas adversas adems de su
funcin usual.

1.1.7 MECANISMOS DE PROTECCION DE ARCHIVOS


Muchos objetos del sistema necesitan proteccin, tales como la cpu, segmentos
de memoria, unidades de disco, terminales, impresoras, procesos, archivos, bases
de datos, etc.
Cada objeto se referencia por un nombre y tiene habilitadas un conjunto de
operaciones sobre l.
Un dominio es un conjunto de parejas (objeto, derechos):

Cada pareja determina:


o Un objeto.
o Un subconjunto de las operaciones que se pueden llevar a cabo en l.
Un derecho es el permiso para realizar alguna de las operaciones.
Es posible que un objeto se encuentre en varios dominios con distintos derechos
en cada dominio.
Un proceso se ejecuta en alguno de los dominios de proteccin:

Existe una coleccin de objetos a los que puede tener acceso.

Cada objeto tiene cierto conjunto de derechos.


Los procesos pueden alternar entre los dominios durante la ejecucin.
Una llamada al S. O. provoca una alternancia de dominio.
En algunos S. O. los dominios se llaman anillos.
Una forma en la que el S. O. lleva un registro de los objetos que pertenecen a
cada dominio es mediante una matriz :

Los renglones son los dominios.

Las columnas son los objetos.

Cada elemento de la matriz contiene los derechos correspondientes al


objeto en ese dominio, por ej.: leer, escribir, ejecutar.

1.1.8 IMPLEMENTACION DEL SISTEMA DE ARCHIVOS


El aspecto clave de la implantacin del almacenamiento de archivos es el registro
de los bloques asociados a cada archivo.
Algunos de los mtodos utilizados son los siguientes:

Asignacin contigua o adyacente:


o Los archivos son asignados a reas contiguas de almacenamiento secundario.
o Las principales ventajas son:
Facilidad de implantacin, ya que solo se precisa el nmero del bloque de inicio
para localizar un archivo.
Rendimiento excelente respecto de la e / s.
o Los principales defectos son:
Se debe conocer el tamao mximo del archivo al crearlo.
Produce una gran fragmentacin de los discos.

Asignacin no contigua:
o Son esquemas de almacenamiento ms dinmicos, destacndose los
siguientes:
o Asignacin encadenada orientada hacia el sector:
El disco se considera compuesto de sectores individuales.
Los archivos constan de varios sectores que pueden estar dispersos por todo el
disco.
Los sectores que pertenecen a un archivo comn contienen apuntadores de uno
a otro formando una lista encadenada.
Una lista de espacio libre contiene entradas para todos los sectores libres del
disco.
Las ampliaciones o reducciones en el tamao de los archivos se resuelven
actualizando la lista de espacio libre y no hay necesidad de condensacin.
Las principales desventajas son:
Debido a la posible dispersin en el disco, la recuperacin de registros
lgicamente contiguos puede significar largas bsquedas.
El mantenimiento de la estructura de listas encadenadas significa una
sobrecarga en tiempo de ejecucin.
Los apuntadores de la estructura de lista consumen espacio en disco.
o Asignacin por bloques:
Es ms eficiente y reduce la sobrecarga en ejecucin.
Es una mezcla de los mtodos de asignacin contigua y no contigua.
Se asignan bloques de sectores contiguos en vez de sectores individuales.
El sistema trata de asignar nuevos bloques a un archivo eligiendo bloques libres
lo ms prximos posible a los bloques del archivo existentes.
Las formas ms comunes de implementar la asignacin por bloques son:
Encadenamiento de bloques.
Encadenamiento de bloques de ndice.
Transformacin de archivos orientada hacia bloques.
o Encadenamiento de bloques o lista ligada:
Las entradas en el directorio de usuarios apuntan al primer bloque de cada
archivo.

Cada uno de los bloques de longitud fija que forman un archivo contiene dos
partes:
Un bloque de datos.
Un apuntador al bloque siguiente.
Cada bloque contiene varios sectores.
Frecuentemente el tamao de un bloque se corresponde con el de una pista
completa del disco.
Localizar un registro determinado requiere:
Buscar en la cadena de bloques hasta encontrar el bloque apropiado.
Buscar en el bloque hasta encontrar el registro.
El examen de la cadena desde el principio puede ser lento ya que debe
realizarse de bloque en bloque, y pueden estar dispersos por todo el disco.
La insercin y el retiro son inmediatos, dado que se deben modificar los
apuntadores del bloque precedente.

1.1.9 LLAMADAS AL SISTEMA


Las llamadas al sistema proveen una interfaz entre los procesos y el Sistema de
Operacin. Por lo general estas llamadas se encuentran disponibles como
instrucciones en lenguaje ensamblable. En algunos sistemas podemos realizar
llamadas al sistema desde programas en lenguajes de alto nivel, en cuyo caso se
asemejan a llamadas a funciones o procedimientos. Es el mecanismo usado por
una aplicacin para solicitar un servicio al sistema operativo.
Las llamadas al sistema comnmente usan una instruccin especial de la CPU
que causa que el procesador transfiera el control a un cdigo privilegiado,
previamente especificado por el mismo cdigo. Esto permite al cdigo privilegiado
especificar donde va a ser conectado as como el estado del procesador.
Cuando una llamada al sistema es invocada, la ejecucin del programa que invoca
es interrumpida y sus datos son guardados, normalmente en su PCB, para poder
continuar ejecutndose luego. El procesador entonces comienza a ejecutar las
instrucciones de cdigo de alto nivel de privilegio, para realizar la tarea requerida.
Cuando esta finaliza, se retorna al proceso original, y contina su ejecucin. El
retorno al proceso demandante no obligatoriamente es inmediato, depende del
tiempo de ejecucin de la llamada al sistema y del algoritmo de planificacin de
CPU.

1.1.10 TIPOS DE INTERFAZ

Control de las funciones manipulables del equipo.


Puesta en marcha y apagado.
Herramientas de desarrollo de aplicaciones
Manipulacin de archivos y directorios.
Comunicacin con otros sistemas.
Information de estado.
Configuracin de la propia interfaz y entorno.

Intercambio de datos entre aplicaciones.


Control de acceso.

1.1.11 COMANDOS DE CONTROL


Secuencia de comandos de control
o Comprobar si alguien est utilizando activamente el producto y, si es as,
impedir la reinstalacin, la actualizacin o la eliminacin.
o Asegurarse de que el sistema host local es compatible con el software (las
secuencias de comandos pueden realizar comprobaciones de compatibilidad ms
a fondo que las aplicadas por los atributos name del producto).
o Eliminar archivos anticuados o versiones del producto instaladas con
anterioridad.
Crear enlaces con los archivos o copias adicionales de los mismos despus
de instalarlos.
Copiar los archivos configurables en su lugar durante la transferencia.
1.1.12 EL SISTEMA DE ARCHIVOS VISTO POR EL USUARIO
Los sistemas de archivos, estructuran la informacin guardada en una unidad de
almacenamiento (normalmente un disco duro de una computadora), que luego
ser representada ya sea textual o grficamente utilizando un gestor de archivos.
La mayora de los sistemas operativos poseen su propio sistema de archivos.
Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el
acceso a los datos como una cadena de bloques de un mismo tamao, a veces
llamados sectores, usualmente de 512 bytes de longitud. El software del sistema
de archivos es responsable de la organizacin de estos sectores en archivos y
directorios y mantiene un registro de qu sectores pertenecen a qu archivos y
cules no han sido utilizados. En la prctica, un sistema de archivos tambin
puede ser utilizado para acceder a datos generados dinmicamente, como los
recibidos a travs de una conexin de red (sin la intervencin de un dispositivo de
almacenamiento).
Los sistemas de archivos tradicionales proveen mtodos para crear, mover,
renombrar y eliminar tanto archivos como directorios, pero carecen de mtodos
para crear, por ejemplo, enlaces adicionales a un directorio o archivo (enlace duro
en Unix) o renombrar enlaces padres (".." en Unix)
1.2. Dato.
Un dato es una representacin simblica (numrica, alfabtica, algortmica,
espacial, etc.) de un atributo o variable cuantitativa o cualitativa. Los datos
describen hechos empricos, sucesos y entidades. Es un valor o referente que
recibe el computador por diferentes medios, los datos representan la informacin
que el programador manipula en la construccin de una solucin o en el desarrollo
de un algoritmo.

Los datos aisladamente pueden no contener informacin humanamente relevante.


Slo cuando un conjunto de datos se examina conjuntamente a la luz de un
enfoque, hiptesis o teora se puede apreciar la informacin contenida en dichos
datos. Los datos pueden consistir en nmeros, estadsticas o proposiciones
descriptivas. Los datos convenientemente agrupados, estructurados e
interpretados se consideran que son la base de la informacin humanamente
relevante que se pueden utilizar en la toma de decisiones, la reduccin de la
incertidumbre o la realizacin de clculos. Es de empleo muy comn en el mbito
informtico y, en general, prcticamente en cualquier investigacin cientfica.

En programacin, un dato es la expresin general que describe las caractersticas


de las entidades sobre las cuales opera un algoritmo.

En estructura de datos, es la parte mnima de la informacin.

Un dato por s mismo no constituye informacin, es el procesamiento de los datos


lo que nos proporciona informacin.

1.3. Campo.
Espacio para el almacenamiento de un dato en particular.
Los campos suelen tener asociados un tipo de dato que permiten almacenar, es
decir, si el campo debe ser un nmero entero, una fecha, un texto, etc. El tipo de
dato permite determinar el tamao del campo, que puede ser fijo o variable.
Campo en informtica puede significar:
- En las bases de datos, un campo es la mnima unidad de almacenamiento de
informacin accesible. Un registro est compuesto de uno o ms campos.
- En las hojas de clculos, los campos son llamados celdas.
- En programacin orientada a objeto, el campo es el dato encapsulado dentro de
una clase o un objeto. En caso de un campo tpico (tambin llamado variable de
instancia), por cada instancia del objeto hay una variable de instancia. Por
ejemplo, la clase Empleado tiene un campo Nombre, entonces hay un nombre
distinto por empleado. En tanto un campo esttico (tambin llamado variable de
clase) es una variable compartida por todas las instancias.
1.4. Registro.

Es un tipo o conjunto de datos almacenados en un sistema.


Para la informtica, existen distintos tipos de registros, pero en todos los casos
hay una referencia al concepto de almacenar datos o informacin sobre el estado,
procesos o uso de la computadora.
En primer lugar, un registro del sistema viene a ser una base de datos que tiene el
fin de almacenar configuracin, opciones y comandos propios del sistema
operativo. En general, estos registros se utilizan en los sistemas Windows de
Microsoft. Un registro de sistema puede contener informacin y configuraciones
del hardware y software en uso, preferencias del usuario, asociaciones de
archivos y ficheros, usos de sistema, cambios y modificaciones, etctera. Estos
registros son conservados dentro del sistema con denominaciones como
"User.dat" o "System.dat" y pueden ser recuperados por el usuario para su
transporte a otro sistema.
Otro tipo de registro es el de programacin. Este tipo de dato est formado por
varios elementos en asociacin que responden a una misma estructura. Los
registros de programacin pueden ser elementales o complejos y guardan
informacin sobre cmo el software o aplicacin en particular funcionar o actuar
en cada momento.
Por otro lado, en una base de datos tambin se hace uso de registros. Cada
registro representa un tem o elemento nico que se encuentra en una tabla, hoja
o base. As, el registro est configurado por el conjunto de datos que pertenecen a
una entidad en particular.
En todos estos casos y otros, el empleo de registros tiene el fin de almacenar
informacin y datos, ponerla en relacin y colocarla al alcance bajo un ndice o
sistema de orden que permita su acceso y uso en cualquier momento. Los
registros son el mtodo que tanto el usuario como el sistema informtico utilizan
para acceder y utilizar toda la informacin.

1.5. ARCHIVO.
Un archivo o fichero informtico es un conjunto de bits que son almacenados en un dispositivo.
Un archivo es identificado por un nombre y la descripcin de la carpeta o directorio que lo
contiene. A los archivos informticos se les llama as porque son los equivalentes digitales de los
archivos escritos en expedientes, tarjetas, libretas, papel o microfichas del entorno de oficina
tradicional.

Contenido de los archivos


En lo que concierne al sistema operativo un archivo es, en la mayora de los
casos, simplemente un flujo unidimensional de bits, que es tratado por el sistema
operativo como una nica unidad lgica. Un archivo de datos informtico
normalmente tiene un tamao, que generalmente se expresa en bytes; en todos
los sistemas operativos modernos, el tamao puede ser cualquier nmero entero
no negativo de bytes hasta un mximo dependiente del sistema. Depende del

software que se ejecuta en la computadora el interpretar esta estructura bsica


como por ejemplo un programa, un texto o una imagen, basndose en su nombre
y contenido. Los tipos especiales de archivos, como los nodos de dispositivo que
representan simblicamente partes del hardware, no consisten en un flujo de bits y
no tienen tamao de archivo.
Los datos de un archivo informtico normalmente consisten en paquetes ms
pequeos de datos (a menudo llamados registros o lneas) que son
individualmente diferentes pero que comparten algn rasgo en comn. Por
ejemplo, un archivo de nminas puede contener datos sobre todos los empleados
de una empresa y los detalles de su nmina; cada registro del archivo de nminas
se refiere nicamente a un empleado, y todos los registros tienen la caracterstica
comn de estar relacionados con las nminas -esto es muy similar a colocar todos
los datos sobre nminas en un archivador concreto en una oficina que no tenga
ninguna computadora. Un archivo de texto puede contener lneas de texto,
correspondientes a lneas impresas en una hoja de papel.
La manera en que se agrupan los datos en un archivo depende completamente de
la persona que disee el archivo. Esto ha conducido a una pltora de estructuras
de archivo ms o menos estandarizadas para todos los propsitos imaginables,
desde los ms simples a los ms complejos. La mayora de los archivos
informticos son usados por programas informticos. Estos programas crean,
modifican y borran archivos para su propio uso bajo demanda. Los programadores
que crean los programas deciden qu archivos necesitan, cmo se van a usar, y
(a menudo) sus nombres.
Identificacin y organizacin de archivos.
En los ms modernos sistemas informticos, los archivos siempre tienen nombres.
Los archivos se ubican en directorios. El nombre de un archivo debe ser nico en
ese directorio. En otras palabras, no puede haber ms de un archivo con el mismo
nombre dentro del mismo directorio.

El nombre de un archivo y la ruta al directorio del archivo lo identifica de manera


unvoca entre todos los dems archivos del sistema informtico -no puede haber
dos archivos con el mismo nombre y ruta-. El aspecto del nombre depende del tipo
de sistema informtico que se use. Las primeras computadoras slo permitan
unas pocas letras o dgitos en el nombre de un archivo, pero las computadoras
modernas permiten nombres largos que contengan casi cualquier combinacin de
letras Unicode y dgitos unicode, haciendo ms fcil entender el propsito de un
archivo de un vistazo. Algunos sistemas informticos permiten nombres de archivo
que contengan espacios; otros no. La distincin entre maysculas y minsculas en
los nombres de archivo est determinada por el sistemas de archivos. Los
sistemas de archivos Unix distinguen normalmente entre maysculas y
minsculas, y permiten a las aplicaciones a nivel de usuario crear archivos cuyos
nombres difieran solamente en si los caracteres estn en maysculas o
minsculas. Microsoft Windows reconoce varios sistemas de archivos, cada uno

con diferentes polticas en cuanto a la distincin entre maysculas y minsculas.


El popular antiguo sistema de archivos FAT puede tener varios archivos cuyos
nombres difieran nicamente en las maysculas y minsculas si el usuario utiliza
un editor de discos para editar los nombres de archivo en las entradas de
directorio. Las aplicaciones de usuario, sin embargo, normalmente no permitirn al
usuario crear varios archivos con el mismo nombre pero con diferentes letras en
maysculas y minsculas.

Operaciones sobre archivos completos.

Creacin de un archivo.
El objetivo de esta operacin es permitir a los usuarios la creacin de nuevos archivos. Mediante
esta operacin se indican las propiedades y las caractersticas del archivo para que el sistema de
archivos pueda reconocerlo y procesarlo. En el proceso de creacin del archivo debe registrarse la
informacin necesaria para que el sistema pueda localizar el archivo y manipular sus registros
lgicos. Para ello, el mtodo de acceso debe obtener informacin sobre el formato y el tamao de
los registros lgicos y fsicos, la identificacin del archivo, la fecha de creacin, su posible tamao,
su organizacin, aspectos de seguridad, etc.

Apertura de un archivo.

En esta operacin el mtodo de acceso localiza e identifica un archivo existente


para que los usuarios o el propio sistema operativo pueda operar con l. En
algunos sistemas la operacin de creacin no existe como tal, y es la operacin de
archivo de un fichero no existente, la que implcitamente, crea un nuevo archivo.
Los errores que pueden producirse en la apertura de un archivo son los siguientes:
El archivo no se encuentra en el lugar indicado (dispositivo, directorio, nombre).
El archivo se ha localizado pero el usuario no tiene permiso para acceder al
mismo.
El archivo no se puede leer por errores en el hardware del dispositivo de
almacenamiento.

Cierre de un archivo.
Esta operacin se utiliza para indicar que se va a dejar de utilizar un archivo
determinado. Mediante esta operacin el mtodo de acceso se encarga de
"romper" la conexin entre el programa de usuario y el archivo, garantizando la
integridad de los registros. Al ejecutar esta operacin, el sistema se encarga de
escribir en el dispositivo de almacenamiento aquella informacin que contienen los
bfer asociados al archivo y se llevan a cabo las operaciones de limpieza
necesarias. Tras cerrar el archivo, sus atributos dejan de ser accesibles para el
mtodo de acceso. El nico parmetro necesario para realizar esta operacin es el
identificador del archivo devuelto por el mtodo de acceso al crear o abrir el
archivo. Los errores que se pueden producir al cerrar un archivo son los
siguientes:
El archivo no est abierto.
No se ha podido escribir en el dispositivo toda la informacin del archivo, debido a
fallos en el hardware.
No se ha podido escribir en el dispositivo toda la informacin del archivo por falta
de espacio en el dispositivo de almacenamiento.

Extensin del archivo.


Esta operacin permite a los programas de usuario aumentar el tamao de un
archivo asignndole ms espacio en el dispositivo de almacenamiento. Para
realizar esta operacin el mtodo de acceso necesita conocer el identificador del
archivo y el tamao del espacio adicional que se debe asignar al archivo. En
funcin de la organizacin del archivo, el mtodo de acceso determinar si el
espacio adicional que debe asignar debe ser contiguo al archivo o no. Mediante
esta operacin el atributo que indica el tamao del archivo ser modificado y se
devolver al programa de usuario con un cdigo de estado. El nico motivo para
que esta operacin no se lleve a cabo con xito es que no haya suficiente espacio
disponible en el lugar adecuado (no contiguo).

Proteccin de archivos.
Muchos sistemas informticos modernos proporcionan mtodos para proteger los
archivos frente a daos accidentales o intencionados. Las computadoras que
permiten varios usuarios implementan permisos sobre archivos para controlar
quin puede o no leer, modificar, borrar o crear archivos y carpetas. A un usuario
dado se le puede conceder solamente permiso para modificar un archivo o
carpeta, pero no para borrarlo; o a un usuario se le puede conceder permiso para
crear archivos o carpetas, pero no para borrarlos. Los permisos tambin se
pueden usar para permitir que solamente ciertos usuarios vean el contenido de un
archivo o carpeta. Los permisos protegen de la manipulacin no autorizada o
destruccin de la informacin de los archivos, y mantienen la informacin privada
confidencial impidiendo que los usuarios no autorizados vean ciertos archivos.

Otro mecanismo de proteccin implementado en muchas computadoras es una


marca de slo lectura. Cuando esta marca est activada en un archivo (lo que
puede ser realizado por un programa de computadora o por un usuario humano),
el archivo puede ser examinado, pero no puede ser modificado. Esta marca es til
para informacin crtica que no debe ser modificada o borrada, como archivos
especiales que son usados solamente por partes internas del sistema informtico.
Algunos sistemas incluyen tambin una marca oculta para hacer que ciertos
archivos sean invisibles; esta marca la usa el sistema informtico para ocultar
archivos de sistema esenciales que los usuarios nunca deben modificar.

Proteccin legal de datos de archivos.


La proteccin de datos personales y velar por la privacidad de la informacin es un
tema de suma importancia a nivel de empresas y de pases. El mal uso de
informacin personal puede constituir un delito.
Algunos pases han creado organismos que se encargan del tema y de legislar
respecto del acceso, uso y confidencialidad de los datos establecidos.

Almacenamiento de archivos.
En trminos fsicos, la mayora de los archivos informticos se almacenan en
discos duros, discos magnticos que giran dentro de una computadora que
pueden registrar informacin indefinidamente. Estos discos permiten acceso casi
instantneo a los archivos informticos.
Hace unos aos solan usarse cintas magnticas para realizar copias de
seguridad. Tambin se usaban otros medios de almacenamiento como discos
compactos grabables, unidades Zip, etctera.

No obstante en la actualidad han cobrado mucho auge las memorias flash,


dispositivos con mucha capacidad de almacenamiento que tienen la ventaja de ser
pequeos y porttiles; suelen usarse para guardar archivos en dispositivos
pequeos como telfonos mviles o reproductores de audio porttiles

Respaldo de archivos.
Cuando los archivos informticos contienen informacin que es extremadamente
importante, se usa un proceso de respaldo (back-up) para protegerse contra
desastres que podran destruir los archivos. Hacer copias de respaldo de archivos
significa simplemente hacer copias de los archivos en una ubicacin separada de
modo que se puedan restaurar si le pasara algo a la computadora, o si fueran
borrados accidentalmente.

Hay muchas maneras de hacer copias de respaldo de archivos. La mayora de los


sistemas informticos proporcionan utilidades para ayudar en el proceso de
respaldo, que puede llegar a consumir mucho tiempo si hay muchos archivos a
salvaguardar. Copiar los archivos a otro disco duro en la misma computadora
protege contra el fallo de un disco, pero si es necesario protegerse contra el fallo o
destruccin de la computadora entera, entonces de deben hacer copias de los
archivos en otro medio que puede sacarse de la computadora y almacenarse en
una ubicacin distante y segura.

Sistemas de archivos y gestores de archivos.


La manera en que un sistema operativo organiza, da nombre, almacena y
manipula los archivos se denomina globalmente como su sistema de archivos.
Todos los sistemas operativos tienen al menos un sistema de archivos; algunos
sistemas operativos permiten usar varios sistemas de archivos diferentes. Por
ejemplo, en Microsoft Windows 7, se reconocen los antiguos sistemas de archivos
FAT y FAT32 de las versiones antiguas de Windows, adems del sistema de
archivos NTFS que es el sistema de archivos normal en las versiones recientes de
Windows. NTFS no es ms moderno que FAT32; ha existido desde que Windows
NT se public en 1993.

Cada sistema de archivos tiene sus propias ventajas y desventajas. La FAT


estndar solamente permite nombres de archivo de ocho bytes (u ocho caracteres
de slo 1 byte) sin espacios (ms una extensin de tres bytes/caracteres), por
ejemplo, mientras que NTFS permite nombres mucho ms largos que pueden
contener espacios, y tener varias letras Unicode. Se puede llamar a un archivo
"Registros de nminas" en NTFS, mientras que en FAT estara limitado a algo
como "nominas.dat" (salvo que estuviera usando VFAT, una extensin de FAT que
permite nombres de archivo largos).

Los programas gestores o administradores de archivos son utilidades que le


permiten manipular archivos directamente. Le permiten mover, crear, borrar y
renombrar archivos y carpetas, aunque no le permiten realmente leer el contenido
de un archivo o almacenar informacin en l. Cada sistema informtico
proporciona al menos un programa gestor de archivos para su sistema de archivos
nativo. En Windows, el gestor de archivos usado ms comnmente es Windows
Explorer.
1.6. Base de datos.
Una base de datos (cuya abreviatura es BD) es una entidad en la cual se pueden
almacenar datos de manera estructurada, con la menor redundancia posible.
Diferentes programas y diferentes usuarios deben poder utilizar estos datos. Por lo
tanto, el concepto de base de datos generalmente est relacionado con el de red
ya que se debe poder compartir esta informacin. De all el trmino base. "Sistema
de informacin" es el trmino general utilizado para la estructura global que incluye
todos los mecanismos para compartir datos que se han instalado.
1.6.1. Por qu utilizar una base de datos?
Una base de datos proporciona a los usuarios acceso a informacin, que pueden
visualizar, ingresar o actualizar, en concordancia con los derechos de acceso que
se les hayan otorgado. Se convierte ms til a medida que la cantidad de datos
almacenados crece, puede ser local, es decir que puede utilizarla slo un usuario
en un equipo, o puede ser distribuida, es decir que la informacin se almacena en
equipos remotos y se puede acceder a ella a travs de una red.
La principal ventaja de utilizar bases de datos es que mltiples usuarios pueden
acceder a ellas al mismo tiempo.
1.6.2. Administracin de bases de datos
Rpidamente surgi la necesidad de contar con un sistema de administracin para
controlar tanto los datos como los usuarios. La administracin de bases de datos
se realiza con un sistema llamado DBMS (Database management system
[Sistema de administracin de bases de datos]). El DBMS es un conjunto de
servicios (aplicaciones de software) para administrar bases de datos, que permite:
un fcil acceso a los datos.
el acceso a la informacin por parte de mltiples usuarios.
la manipulacin de los datos encontrados en la base de datos (insertar, eliminar,
editar).

El DBMS puede dividirse en tres subsistemas:


El sistema de administracin de archivos:
para almacenar informacin en un medio fsico
El DBMS interno:
para ubicar la informacin en orden
El DBMS externo:
representa la interfaz del usuario
1.6.3. Los DBMS principales.
Los principales sistemas de administracin de bases de datos son:
Borland Paradox
Filemaker
IBM DB2
Ingres
Interbase
Microsoft SQL server
Microsoft Access
Microsoft FoxPro
Oracle
Sybase
MySQL
PostgreSQL

mSQL
SQL Server 11
1.7. Concepto de organizacin.
Una organizacin de datos es una estructura fsica-lgica que permite realizar operaciones
computacionales (editar, guardar, actualizar, etc.) sobre un contenido de informacin.
Estructura fsica; describe la manera fsica (bytes) de almacenar los datos en un soporte
(como se almacenan los datos en el soporte).
Estructura lgica; describe la manera lgica de representar la informacin a los usuarios
(como ve el usuario la informacin).
1.8. Tipos de organizacin.
Organizacin no estructurada
Utiliza informacin no estructurada contenida en libros, artculos informes.
Es tan grande la variedad de informacin que es muy difcil saber que es lo que nos va a
interesar en el caso de una bsqueda y seria imposible determinar un campo por cada tema.
Organizacin estructurada
Utiliza informacin estructurada o datos definidos (facturas, recibos de clientes, etc.).
El diseo de una buena base de datos deber reconocer con mtodo y exactitud los datos que
se van a utilizar, antes de su implementacin.
Esta organizada mediante campos.
Tratamiento de datos formateados (organizados).
Sistemas orientados a proceso.
Sistemas orientados a datos.
Sistema de Gestin de Datos Relacionales.
Tratamiento de datos no formateados (No organizados)
Documentos.
Sistemas de Recuperacin de Informacin.
Sistemas de Gestin de Bases de Datos Documentales.
1.8. Concepto de Acceso.

En informtica un acceso es el resultado positivo de una autentificacin, para que el acceso


dure un tiempo predeterminado, el servidor guarda en el cliente una cookie, esta permitir que
el usuario pueda entrar a su cuenta en el servidor hasta que esta caduque.
Cuando un atacante posee acceso directo a la informacin, bsicamente utiliza tcnicas
criptogrficas para hacer uso de la misma. Pero qu pasa cuando dicho atacante no tiene
acceso directo a la informacin (capa de software entre ambos)? Debe utilizar tcnicas de
control de acceso. Debemos saber que el principal problema en la construccin de sistemas
informticos seguros es el diseo de correctas polticas de seguridad, su exacta representacin
en modelos y su estricto desarrollo en mecanismos.
Para comprender todo lo que concierne a las tcnicas de control de acceso, primero debemos
dejar claros unos cuantos conceptos.

Objeto: Entidad pasiva que contiene, recibe o trata informacin.

Sujeto: Entidad activa que acta sobre un objeto.

Poltica de seguridad tcnica.


Conjunto de directrices que regula el tratamiento de los datos y el uso de recursos por un
sistema de informacin. Se expresa mediante un lenguaje natural.
Nosotros nos centraremos en la poltica de control de accesos y de flujos de informacin.
Modelo de seguridad
Expresin terica formal (matemtica) de una poltica de seguridad tcnica.
Mecanismo de seguridad
Algoritmo, que puede ser implementado en hardware o software, que representa un modelo de
seguridad.
1.9. Tipos de Acceso.
Acceso autorizado.
Un acceso autorizado es el resultado de una autentificacin correcta, un ejemplo es el ingreso
de usuario y contrasea:
Usuario:NombreDeUsuario
Contrasea:******

El servidor comparara los datos ingresados con los de la base de datos generalmente con el
lenguaje SQL, si los datos coinciden, el servidor guardara una cookie de sesin en el cliente y
permitir que este pueda ver y editar informacin dependiendo de los privilegios que este
usuario tenga.
Un ejemplo de la comparacin de datos ingresados con los de la base de datos en un
pseudocdigo:

SI NombreDeUsuario.Existe EN BaseDeDatos HACER


SI Contrasea = BaseDeDatos.NombreDeUsuario.Contrasea HACER
"Acceso"
SINO
"Contrasea incorrecta"
SINO
"Usuario incorrecto"

Primero chequea si existe o no el usuario, si existe el usuario compara la contrasea, si la


contrasea coincide con la de la base de datos, el usuario logra acceder, si la contrasea no
coincide con la de la base de datos, se le informa al usuario que la contrasea es incorrecta, si el
usuario directamente no se encuentra en la base de datos, se informa que el usuario es
incorrecto.
Acceso no autorizado
Un acceso no autorizado es producto de la explotacin de una vulnerabilidad en el sistema del
servidor o en alguna de sus aplicaciones o la utilizacin de algn otro mtodo para subir
privilegios como fuerza bruta, malware, sniffers o ingeniera social, entre otros.
Ejemplo de un acceso no autorizado por http explotando una vulnerabilidad en los scripts del
cgi-bin:
atacante>abrirurl> http://servidor/cgibin/scripts/.../.../.../comandos/directorio/
atacante>subirarchivo>...

En este caso el atacante exploto una vulnerabilidad para lograr obtener un acceso no
autorizado y poder subir su archivo.
Monitoreo de Servidores y redes informticas.
Un administrador las 24 horas en un servidor o red puede controlar todos los accesos en todas
las zonas y tiene los permisos suficientes para desconectar y bloquear a cualquier intruso.
Ban.
Un ban es una poltica muy til para impedir accesos no autorizados, este bloquea el acceso de
un usuario parcialmente o totalmente por un periodo de tiempo definido o indefinido este
puede aplicarse manualmente (por un administrador) o automticamente (por un bot o el
mismo sistema operativo).
Bans manuales.
Son aquellos dados por administrador cundo este ve un comportamiento extrao en el usuario
autentificado.
Bans automticos.
Son aquellos dados por un bot o el sistema operativo cundo detectan (basndose en
inteligencia artificial) un comportamiento extrao en el usuario autentificado o hay una
cantidad determinada de intentos fallidos en una autentificacin.

1.10. OPERACIONES CON ARCHIVOS.


Una operacin de un archivo es el mecanismo con el cual para que un usuario pueda manipular
un archivo de acuerdo a su necesidad, estos mecanismos pueden o no ser verstiles, tambin
muy sofisticados dependiendo del resultado a obtener luego de someterlo al proceso de este
mecanismo (Crear, editar, seleccionar, ejecutar, borrar, etc).
1.11. CREACIN.
Consiste en la asignacin de un espacio en el medio de almacenamiento (Disco duro) mediante
la colocacin del nombre del archivo en el directorio y en ocasiones solo puede ser abierto por
el programa que lo creo.
1.13. ACTUALIZACION.
Son los procesos que van a realizar modificaciones al contenido del archivo, mediante
mecanismos de aadir nuevos datos o eliminar datos contenidos en el mismo.
1.13. CONSULTAS.
Es el acceso a los datos para generar una salida por un medio determinado, el acceso puede ser
especifico, grupal o global y en esta operacin solo se leen los datos contenidos no sufren
alteraciones al cierre del archivo.
1.14. ORDENAMIENTO.
Consiste en la organizacin de los datos o registros de acuerdo a un criterio determinado y en el
cual se le asignara a estos un espacio distinto al que ya tenan.
1.16. MEZCLA.
Es la combinacin de dos o ms archivos para dar como resultado un archivo nico.
1.17. DIVISION.
Es la descomposicin de un archivo en dos o ms archivos.
1.18. BORRADO FISICO/BORRADO LOGICO.

II UNIDAD METODOS DE ORDENAMIENTO.


La ordenacin o clasificacin es el proceso de organizar los datos individuales de un vector en
algn orden o secuencia especfica (creciente o decreciente para datos numricos o
alfabticamente para los datos de tipo carcter). Durante la descripcin y anlisis del proceso
de bsqueda, hemos tenido ocasin de ver la importancia que tiene el poder trabajar con datos
ordenados.
Existen dos tipos de ordenacin, la llamada ordenacin interna que exige que la coleccin
completa de elementos a ordenar estn almacenados en memoria principal (normalmente en
forma de un vector) y la ordenacin externa en la que se trabaja con la restriccin de que la
mayora de datos se encuentran fuera de la memoria principal, esto es, en la memoria
secundaria (disco duro). La razn para esta distincin reside en que en un archivo es muy
frecuente que existan ms registros a ordenar que los que caben simultneamente en la
memoria principal; en consecuencia las hiptesis de partida son radicalmente distintas.
Afortunadamente la mayora de los sistemas operativos disponen de rdenes capaces de llevar
a cabo la ordenacin de un archivo (ej: la orden SORT en el DOS de Microsoft).
2.1. RECURSIVIDAD.
es una tcnica de programacin elemental que permite que una funcin pueda llamarse
asimismo desde la misma funcin. Se puede utilizar la recursividad como una alternativa a la
iteracin. La recursividad es una herramienta poderosa e importante en la resolucin de
problemas en programacin. Una solucin recursiva es normalmente menos eficiente en
trminos de tiempo de computadora que una solucin iterativa debido a las operaciones
auxiliares que llevan consigo las llamadas suplementarias a las funciones, en muchas
circunstancias el uso de la recursin permite a los programadores especificar las soluciones
naturales, ms lgicas, elegantes, sencillas, que seran, en caso contrario difcil de resolver.
No todas las funciones pueden llamarse a s mismas, sino que deben estar diseadas
especialmente para que sean recursivas, de otro modo podran conducir a bucles infinitos, o a
que el programa termine inadecuadamente. Tampoco todos los lenguajes de programacin
permiten usar recursividad. C++ permite la recursividad.
Cada vez que se llama a una funcin, se crea un juego de variables locales, de este modo, si la
funcin hace una llamada a s misma, se guardan sus variables y parmetros, usando la pila, y
la nueva instancia de la funcin trabajar con su propia copia de las variables locales. Cuando
esta segunda instancia de la funcin retorna, recupera las variables y los parmetros de la pila y
contina la ejecucin en el punto en que haba sido llamada.
Por ejemplo para calcular el factorial de cualquier nmero mayor que cero hay que calcular
como mnimo el factorial de otro nmero. La funcin que se utiliza es la funcin en la que se
encuentra en estos momentos, esta funcin debe llamarse a s misma para el nmero menor
inmediato, para poder ejecutarse en el nmero actual.
La recursividad es una de las formas de control ms importantes en la programacin. Los
procedimientos recursivos son la forma ms natural de representacin de muchos algoritmos.

El concepto de recursividad est ligado, en los lenguajes de programacin, al concepto de


procedimiento o funcin. Un procedimiento o funcin es recursivo cuando durante una
invocacin a l puede ser invocado a su vez l mismo.
El conocimiento de los principios fundamentales de la recursividad evita evadir su utilizacin
cuando su aplicacin sea conveniente para un determinado problema.
El uso de la recursividad es particularmente conveniente para aquellos problemas que pueden
definirse de modo natural en trminos de recursividad.

Ventajas:
No es necesario definir la secuencia de pasos exacta para resolver el problema.
Soluciones simples, claras.
Soluciones elegantes.
Soluciones a problemas complejos.

Desventajas:
Podra ser menos eficiente.
Sobrecarga asociada con las llamadas a subalgoritmos
Una simple llamada puede generar un gran nmero de llamadas Recursivas. (Fact(n) genera
n llamadas recursivas)
El valor de la recursividad reside en el hecho de que se puede usar para resolver problemas
sin fcil solucin iterativa.
La ineficiencia inherente de algunos algoritmos recursivos.
#include <iostream>
using namespace std;
int SumaDigitos(int);
int main() {
cout << 32890123 << ": " << SumaDigitos(32890123) << endl;
return 0;
}
int SumaDigitos(int n) {
if(n < 10) return n;
return n%10+SumaDigitos(n/10);
}
2. // El producto de forma recursiva
#include <iostream>
using namespace std;
int producto(int a, int b){
if (b==0)
return 0;
else

return a+producto(a,b-1);
}
3. // Suma recursiva de los elementos de un vector
#include <iostream>
using namespace std;
int SumaV (int *V, int n){
if (n==0)
return V[0];
else
return V[n]+sumaV(V,n-1);
}

2.2. POR INTERCAMBIO.


Se basa en el principio de comparar pares de elementos adyacentes y en caso de contravenir el
orden esperado, intercambiarlos, realizando este proceso las veces necesarias hasta que estn
todos ordenados.
Ejemplo: Clasificar en orden descendente por el mtodo de intercambio el siguiente vector:
A(1)

A(2)

A(3)

A(4)

A(5)

A(6)

A(7)

A(8)

50

15

56

14

35

12

algoritmo intercambio
inicio
desde I=1 desde N hacer
leer X(I)
fin-desde
desde I=1 hasta N-1 hacer
desde J=1 hasta N-I hacer
si X(J) >X(J+1) entonces
AUX <- X(J)
X(J) <- X(J+1)
X(J+1) <- AUX
fin-si
fin-desde
fin-desde
desde J = 1 hasta N hacer
escribir X(J)
fin-desde
fin

2.3. BURBUJA.

El mtodo de ordenacin por burbuja se basa en comparaciones sucesivas de


dos elementos consecutivos y realizar un intercambio entre los elementos hasta que
queden ordenados.
Supongamos el vector mostrado en la siguiente tabla, para realizar la ordenacin se
han de seguir estos pasos:
Se comparan los dos primeros elementos, si el segundo es superior al primero,
se dejan tal como estn, pero si el primero es el ms grande, se intercambian
los elementos.
A continuacin se compara el segundo elemento con el tercero aplicando los
mismos criterios del paso anterior.
De esta forma se repite la operacin de comparacin con todos los elementos
que forman el vector. Cuando se alcance el ltimo elemento se ha encontrado
el elemento que tiene el valor ms elevado y este ha quedado situado al final
del vector.
Para encontrar el segundo elemento se repite la operacin de ordenacin de
todos los elementos del vector excepto con el ltimo.
Reiterando el proceso descrito, el vector quedar ordenado cuando solo se
comparen los dos primeros elementos.

Primera ordenacin.
Ejemplo de ordenacin por burbuja para encontrar el primer elemento.
1
Vect
2 Compara 3 Compara 4 Compara 5 Compara
Comparac
or
cin
cin
cin
cin
in
V[
1]
V[
2]
V[
3]
V[
4]
V[
5]
V[
6]

34

34

34

34

34

34

53

53

53

53

15

15

15

15

15

15

53

53

El proceso de ordenacin expresado en pseudocdigo estructurado es:

El proceso de ordenacin expresado en pseudocdigo estructurado es:


desde j 1 hasta n-1 hacer
si elemento[j] > elemento[j+1] entonces
intercambiar(elemento[j], elemento[j+1])
fin_si
fin_desde
Segunda ordenacin.
Vect 1 Ordena 1 Compara 2 Compara 3 Compara 4 Compara
or
cin
cin
cin
cin
cin
V[
1]
V[
2]
V[
3]
V[
4]
V[
5]
V[
6]

34

34

34

34

15

15

53

15

15

15

34

15

34

53

53

53

53

53

Despus de la segunda ordenacin se han encontrado los dos elementos ms grandes


del vector y estos se han situado al final del mismo.
Algoritmo de burbuja.
Generalizando el proceso de ordenacin se obtine el siguiente pseudocdigo
estructurado para el algoritmo de burbuja.
iVariable
ordenaciones
jVariable
comparaciones
n - Nmero de elementos del vector (en C representa el ndice mayor)
algoritmo Burbuja
inicio
// Ordenaciones
desde i 1 hasta n-1 hacer
// Comparaciones

desde j 1 hasta n-i hacer


si elemento[j] > elemento[j+1] entonces
// Intercambiar los elementos
aux V[j]
V[j] V[j+1]
V[j+1] aux
fin_si
fin_desde
fin_desde
fin
Ejemplo en c++

#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
//-------------------------------------------------------------------------#pragma argsused
int main(int argc, char* argv[]){
// Variables
int v[]={3, 34, 1, 53, 15, 6};
int j, aux;
int i = 0;
bool ord = false;
// Visualizar el vector
for(int n=0; n<6; n++){
cout << v[n] << " ";
}
// Ordenaciones
while(!ord){
// Comparaciones
ord=true;
for(j=0;j<5-i;j++){
if(v[j]>v[j+1]){
// Intercambiar los elementos
aux=v[j];
v[j]=v[j+1];
v[j+1]=aux;
ord = false; //
Indicador
ordenado
}

de

vector

}
i++;
}
// Visualizar el vector ordenado
cout << endl;
for(int n=0; n<6; n++){
cout << v[n] << " ";
}
getch();
return 0;
}
//-------------------------------------------------------------------------2.4. QUICKSHORT.
El algoritmo usa la tcnica divide y vencers que bsicamente se basa en dividir un problema en
subproblemas y luego juntar las respuestas de estos subproblemas para obtener la solucin al
problema central.
Empezamos creando o generando un array de n elementos, por ejemplo yo use la funcin rand()
de C++ para generar aleatorios del 1 al 15, mi arreglo qued as:
array[] = {8, 1, 5, 14, 4, 15, 12, 6, 2, 11, 10, 7, 9};
left

right

0 1 2 3
4 5
6
7 8 9
10 11 12
8 1 5 14 4 15 12 6 2 11 10 7
9
Tomamos como pibote el 8 y usamos 2 ndices que me indiquen la posicin del array:
Uno que vaya de izquierda a derecha buscando los elementos mayores al pibote. array[left]
Y un ndice que busque de derecha a izquierda los elementos menores al pibote. array[right]
El ndice izquierdo ir aumentando en 1 mientras el array en la posicin izquierda sea menor o
igual al pibote.
El ndice derecho ir reducindose en 1 mientras el array en la posicin derecha sea mayor al
pibote.
Si al final de estas 2 operaciones, el ndice izquierdo es menor al derecho se intercambian las
posiciones array[left] con array[right] usando una variable temporal:
En este caso, en la primer recorrido el ndice izquierdo encuentra al 14 (mayor al pibote) y el ndice
derecho al 7 (menor al pibote), y se intercambian los ndices:
8 1 5 14 4 15 12 6 2 11 10 7
9
8 1 5 7
4 15 12 6 2 11 10 14 9
Segundo recorrido: El ndice izquierdo encuentra al 15 (mayor al
pibote) y el ndice derecho al 2 (menor al pibote), se intercambian:
8 1 5 7 4 15 12 6 2
11 10 14 9

8 1 5 7 4 2
12 6 15 11 10 14 9
Tercer recorrido: El ndice izquierdo encuentra al 12 (mayor al pibote) y el ndice derecho al 6
(menor al pibote), se intercambian:
8 1 5 7 4 2 12 6
15 11 10 14 9
8 1 5 7 4 2 6
12 15 11 10 14 9
Cuando los ndices se juntan o se cruzan ponemos el pibote en el lugar que le corresponde en el
array.
Se intercambian el 8 con el 6 y el array quedara as:
6 1 5 7 4 2 8 12 15 11 10 14 9
Ahora la funcin quicksort se llamara 2 veces recursivamente para los 2 subarray que tenemos.
El pibote es 6, se encuentra por la izquierda al 7 y por la derecha al 2. Se intercambian y como se
cruzaron los ndices movemos el pibote a su lugar:
6 1 5 7 4 2
6 1 5 2 4 7
4 1 5 2 6 7
Otra vez tenemos 2 subarrays.
El mismo proceso. Se ejecutar quicksort (array, 0, 3). El pibote ahora es 4, se encuentra por el
ndice izquierdo al 5 y por el derecho a 2. Se intercambian y como se juntaron los ndices se
mueve el pivote a su lugar.
4 1 5 2
4 1 2 5
2 1 4 5
Cuando se ejecuta quicksort (array, 0, 1) se intercambia los ndices otra vez.
2 1
1 2
Ahora se llamara a quicksort(array, 0, 0), se divide en 2 elementos el subarray y no hay nada
ms que hacer por que solo tienen 1 elemento.
Ahora se ejecuta el mismo proceso con el segundo subarray del array original. Quicksort (a, 7, 12)
Se encuentra el 15 y el 9, se intercambian y como luego se juntan los ndices, se coloca el pibote a
su lugar:
12 15 11 10
12 9
11 10
10 9
11 12
Tenemos otros 2 subarrays

14 9
14 15
14 15
y se vuelve a llamar la funcin quicksort.

Se intercambian los ndices y nos quedan otros 2 subarrays de 1 solo elemento entonces no se
ejecuta nada.
10 9
11
9
10 11
Con el anterior subarray (14, 15) se llama a quicksort(array, 11, 12).
14

15

Se divide en 2 elementos este subarray y no hay nada ms que hacer por que los array que
contienen al 14 y al 15 solo tienen 1 elemento.
De manera que el rbol recursivo de ordenacin queda ms o menos as:

Quick Sort
Complejidad computacional del Quicksort:
En el mejor de los casos tiene un costo de O(n*log (n)). Que es cuando el pibote siempre queda al
medio del arreglo.

Quicksort Mejor caso


En el peor de los casos tiene un costo de O(n^2). Cuando el pibote siempre se inclina hacia a un
lado, es decir, genera una array de slo 1 elemento y una segunda con el resto de elementos.

Quicksort peor caso


En el caso promedio tambin tiene un costo de O(n*log (n)). Se produce cuando el pibote se
inclina ms hacia un lado y los 2 subarrays tienen distinto tamao de elementos.

Quicksort caso promedio


Para calcular el tiempo de ejecucin estoy usando la funcin clock() que determina el tiempo usado
por el procesador. En este caso defino 3 variables ini, final y total.
Aqu est la implementacin del algoritmo en C++ disfrtenlo.
// Funcin para dividir el array y hacer los intercambios
int divide(int *array, int start, int end) {
int left;
int right;
int pivot;
int temp;
pivot = array[start];
left = start;
right = end;
// Mientras no se cruzen los ndices
while (left < right) {
while (array[right] > pivot) {
right--;
}
while ((left < right) && (array[left] <= pivot)) {
left++;
}

// Si todava no se cruzan los indices seguimos intercambiando


if (left < right) {
temp = array[left];
array[left] = array[right];
array[right] = temp;
}
}
// Los ndices ya se han cruzado, ponemos el pivot en el lugar que le corresponde
temp = array[right];
array[right] = array[start];
array[start] = temp;
// La nueva posicin del pivot
return right;
}
// Funcin recursiva para hacer el ordenamiento
void quicksort(int *array, int start, int end)
{
int pivot;
if (start < end) {
pivot = divide(array, start, end);
// Ordeno la lista de los menores
quicksort(array, start, pivot - 1);
// Ordeno la lista de los mayores
quicksort(array, pivot + 1, end);
}
}
main.cpp
#include
1
#include
2
#include
3
#include

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

<iostream>
<stdio.h>
<stdlib.h>
"quicksort.cpp"

using namespace std;


int main()
{
int const MAX = 100;
int arraySize;
clock_t start_time;
clock_t final_time;
double total_time;
start_time = clock();
cout << "Ingresa tamanyo: " << endl;
cin >> arraySize;
int a[arraySize];

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

// Para que el rand no genere siempre los mismos nmeros, utilizando la hora del
sistema
srand(time(0));
// Para generar enteros aleatorios usamos rand()
for (int i = 0; i < arraySize; i++) {
a[i] = rand() % MAX;
}
cout << "Array antes de ordenarse: " << endl;
for (int i = 0; i < arraySize; i++) {
cout << a[i] << " ";
}
cout << endl << endl;
quicksort(a, 0, arraySize - 1);
final_time = clock();
total_time = ((double)(final_time - start_time)) / CLOCKS_PER_SEC;
printf("Tiempo de ejecucin : %lf segundos \n", total_time);
cout << "Array ordenado " << endl;
for (int i = 0; i < arraySize; i++ ){
cout << a[i] << "-";
}
cout << endl << endl;
return 0;
}

2.5.
2.6. SELECCIN DIRECTA.
Es un algoritmo sencillo y uno de los ms sencillos de recordar e implementar. No es el mejor
algoritmo de ordenacin ya que realiza una gran cantidad de comparaciones, pero, por el contrario,
realiza muy pocos intercambios.
El algoritmo consiste en realizar varias pasadas sobre el vector, de tal manera que el elemento de
menor peso se coloque al principio del vector en un solo intercambio. En cada pasada se recorre la
parte no ordenada del vector buscando el elemento de menor peso y cuando se localiza se
intercambia con el primer elemento de la parte no ordenada del vector.

Veamos la implementacin del algoritmo en C:

/* funcion de ordenacion por seleccion directa */


void seleccion_directa(int v[], int N) {
int min, tmp; // elemento de menor peso y elemento temporal
/* recorremos todo el vector */
for(int i = 0; i < N - 1; i++) {
/* suponemos que es el primero */
min = i;
/* recorremos la parte no ordenada */
for(int j = i+1; j < N; j++) {
/* buscamos el de menor peso */
if(v[j] < v[min]) min = j;
}
/* intercambio posicion i por el de menor peso */
tmp = v[i];
v[i] = v[min];
v[min] = tmp;
}
}

2.8. INSERCION.
Consiste en colocar un elemento en el vector, en una parte ya ordenada del mismo y comenzar
de nuevo con los elementos restantes; fijarse que de hecho este mtodo es el que utilizamos
cuando se ordena un mazo de cartas, por lo que tambin es conocido como mtodo de la baraja.
Ejemplo:
En un vector, parcialmente ordenado en sus primeros siete elementos y hagamos la insercin
del octavo (45) en su lugar correspondiente:
5

14

24

39

43

65

84

45

Para insertar el elemento 45, que es el siguiente en la ordenacin, habr que insertarlo entre 43
y 65, lo que supone desplazar a la derecha todos los elementos de valor superior a 45, el
algoritmo se ejecutara en base a las comparaciones y desplazamientos sucesivos.
algoritmo ord_insercin
inicio
desde J=2 hasta N hacer
AUX <- X(J)
K <- J-1
mientras AUX < X(K) hacer
X(K+1) <- x(K)
K <- K 1

fin_mientras
X(K + 1) <- AUX
fin_desde
fin
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <conio.h>
#define LARGOCADENA 20
#define NUMCADENAS 30000
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,opc,a,intercambios=0,comparacion=0;
char cadena[LARGOCADENA];
clock_t generacion,orden;
//declaracion estructura
struct cadenita
{
char cadenota[LARGOCADENA];
};
//Arreglo de estructuras
struct cadenita cadenon[NUMCADENAS];
srand(time(NULL));
do
{
system("cls");
cout<<"Como desea ordenar los numeros:"<<endl;
cout<<"1. Menor a Mayor"<<endl;
cout<<"2. Mayor a Menor"<<endl;
cin>>opc;
if(opc!=1&&opc!=2)
{
cout<<"Seleccione una opcion valida"<<endl;
getch();
}
}
while(opc!=1&&opc!=2);
if(opc==1)
a=1;
else

a=-1;
/*creacion de numeros desordenados*/
generacion=clock();
for(j=0;j<NUMCADENAS;j++)
{
for(i=0; i<LARGOCADENA-1; i++)
{
cadena[i] = '0'+ ( rand() % ('0' - '9') );
}
cadena[i] = '\0';
strcpy(cadenon[j].cadenota,cadena);
cout<<cadenon[j].cadenota<<endl;
}
printf( "Numero de segundos transcurridos desde el comienzo
del programa: %f s\n", (clock()-generacion)/(double)CLOCKS_PER_SEC );
/*ordenarlos*/
orden=clock();
for(i=0;i<NUMCADENAS-1;i++)
{
j=i;
while(a==(strcmp(cadenon[j].cadenota,cadenon[j+1].cadenota))/*
,comparacion++*/)
{
strcpy(cadena,cadenon[j].cadenota);
strcpy(cadenon[j].cadenota,cadenon[j+1].cadenota);
strcpy(cadenon[j+1].cadenota,cadena);
intercambios++;
if(j!=0)
j--;
}
}
/*Mostrar datos ordenados*/
for(j=0;j<NUMCADENAS;j++)
{
cout<<cadenon[j].cadenota<<endl;
}
cout<<"El numero de intercambios fue "<<intercambios<<endl;
printf( "Numero de segundos transcurridos durante el
ordenamiento: %f s\n", (clock()(generacion+orden))/(double)CLOCKS_PER_SEC );
getch();

return 0;
}
2.9. Insercin Directa.
//Insercin Directa
//Codificado por sAfOrAs
#include<iostream>
#include"leearreglo.h"
using namespace std;
#define largo 50
void insercionDirecta(int A[],int n)
{

int i,j,v;

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


{
v = A[i];
j = i - 1;
while (j >= 0 && A[j] > v)
{
A[j + 1] = A[j];
j--;
}

A[j + 1] = v;
}
}

void main ()
{
int A[largo],n;
do{

cout<<"Cantidad de numeros a ingresar: ";cin>>n;


if(n<=0||n>largo)
cout<<"Debe ingresar un valor

> a 0 y < a "<<largo<<endl;

}while(n<=0||n>largo);

leeCadena(n,A);
insercionDirecta(A,n);
muestraCadena(n,A);

#include<iostream>

using namespace std;

3
4

void leeCadena(int cant,int n[])


{
int i;

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

cout<<"Ingresa numero "<<i+1<<": ";

cin>>n[i];
}

9
10
11

12
13

void muestraCadena(int cant,int n[])


{

14

int i;

15

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

16

17

cout<<n[i]<<endl;
}

18
19
20

21
2.10. SHELL
El mtodo de insercin como el mtodo de burbuja son de orden cuadrtico y en consecuencia
su tiempo de ejecucin se dispara cuando el nmero de elementos a ordenar es grande. Con el
objetivo de mejorar ambas aproximaciones Donald Shell propuso un nuevo mtodo que lleva
su nombre y que, sin mejorar la complejidad en el peor caso, se comporta de forma
sensiblemente ms eficaz en la gran mayora de los casos.
Se basa en tomar como salto inicial el valor N/2 (N = Nmero de elementos) y luego se va
reduciendo a la mitad en cada repeticin hasta que el salto o distancia se reduce a 1. Por tanto
habr que manejar la variable salto, de forma que los recorridos no sern los mismos en cada
iteracin.
Sea un vector: X(1), X(2), X(3),,X(N). El primer salto a dar que tendr un valor de:
1+N
-----2
algoritmo Shell
inicio
E <- N+1
mientras E > 1
E<- ent(E/2)
repetir
ID <- verdadero
I <- 1
desde I = 1 hasta N-E
si X(I) > X(I+E) entonces
AUX <- X(I)
X(I) <- X(I+E)
X(I+E) <- AUX
ID <- falso
Fin-si
fin-desde
hasta-que (ID = Verdadero)
fin-mientras
fin

Вам также может понравиться