miércoles, 24 de febrero de 2010

Sistema operativo (SO)


Un Sistema operativo (SO) es un programa informático que actúa de interfaz entre los dispositivos de hardware y los programas usados por el usuario para manejar un computador.1 Es responsable de gestionar, coordinar las actividades y llevar a cabo el intercambio de los recursos y actúa como estación para las aplicaciones que se ejecutan en la máquina.
Uno de los más prominentes ejemplos de sistema operativo, es el núcleo Linux, el cual junto a las herramientas GNU, forman las llamadas distribuciones GNU/Linux.
Uno de los propósitos de un sistema operativo como programa estación principal, consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con éstos detalles. Se encuentran en la mayoría de los aparatos electrónicos que utilizan microprocesadores para funcionar. (teléfonos móviles, reproductores de DVD, computadoras, radios, etc.)
Unix
Unix (registrado oficialmente como UNIX®) es un sistema operativo portable, multitarea y multiusuario; desarrollado, en principio, en 1969 por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy.
«después de treinta años de su creación, UNIX sigue siendo un fenómeno»
Dennis Ritchie
Familias
Como se puede deducir de esta breve reseña histórica, existen varias familias del sistema operativo UNIX, que han evolucionado de manera independiente a lo largo de los años. Cada familia se distingue no tanto por sus diferencias técnicas como por sus diferencias en propiedad intelectual. Se observa que todas las familias se han visto contaminadas, directa o indirectamente, por otras familias.


Familias UNIX más significativas
AT&T: la familia que tuvo su origen en el UNIX de AT&T. Considerada la familia UNIX "pura" y original. Sus sistemas operativos más significativos son UNIX System III y UNIX System V.
BSD: familia originada por el licenciamiento de UNIX a Berkely. BSD se reescribió para no incorporar propiedad intelectual originaria de AT&T en la versión 4. La primera implementación de los protocolos TCP/IP que dieron origen a Internet son la pila (stack) TCP/IP BSD.
AIX: Esta familia surge por el licenciamiento de UNIX System III a IBM.
Xenix: familia derivada de la adquisición de los derechos originales de AT&T primero por parte de Microsoft y de esta los vendió a SCO.
GNU: En 1983, Richard Stallman anunció el Proyecto GNU, un ambicioso esfuerzo para crear un sistema similar a Unix, que pudiese ser distribuido libremente. El software desarrollado por este proyecto -por ejemplo, GNU Emacs y GCC - también han sido parte fundamental de otros sistemas UNIX.
Linux: En 1991, cuando Linus Torvalds empezó a proponer el núcleo Linux y a reunir colaboradores, las herramientas GNU eran la elección perfecta. Al combinarse ambos elementos, conformaron la base del sistema operativo (basado en POSIX) que hoy se conoce como GNU/Linux. Las distribuciones basadas en el núcleo, el software GNU y otros agregados entre las que se pueden mencionar a Red Hat Linux y Debian GNU/Linux se han hecho populares tanto entre los aficionados a la computación como en el mundo empresarial. Obsérvese que Linux tiene un origen independiente, por lo que se considera un 'clónico' de UNIX y no un UNIX en el sentido histórico.
Las interrelaciones entre estas familias son las siguientes, aproximadamente en orden cronológico:
La familia BSD surge del licenciamiento del UNIX original de AT&T.
Xenix también surge por licenciamiento del UNIX original de AT&T, aunque aún no era propiedad de SCO.
AIX surge por licenciamiento de UNIX System III, pero también incorpora propiedad intelectual de BSD.
La familia original AT&T incorpora ilegalmente propiedad intelectual de BSD en UNIX System III r3.
La familia AIX vuelve a incorporar propiedad intelectual de la familia AT&T, esta vez procedente de UNIX System V.
Linux incorpora propiedad intelectual de BSD, gracias a que éste también se libera con una licencia de código abierto denominada Open-source BSD.
Según SCO Group, Linux incorpora propiedad intelectual procedente de AIX, gracias a la colaboración de IBM en la versión 2.4, más aún no está demostrado, hay un proceso judicial al respecto: Disputas de SCO sobre Linux.
Implementaciones más importantes
A lo largo de la historia ha surgido una gran multitud de implementaciones comerciales de UNIX. Sin embargo, un conjunto reducido de productos han consolidado el mercado y prevalecen gracias a un continuo esfuerzo de desarrollo por parte de sus fabricantes. Los más importantes son:
Solaris 10, un sistema operativo derivado de la rama BSD
Solaris de Sun Microsystems. Uno de los sistemas operativos Unix más difundido en el entorno empresarial y conocido por su gran estabilidad. Parte del código fuente de Solaris se ha liberado con licencia de fuentes abiertas (OpenSolaris).
AIX de IBM. El UNIX "propietario" de IBM ha cumplido 20 años de vida en el 2006 y continúa en pleno desarrollo, con una perceptible herencia del mainframe en campos como la virtualización o la RAS de los servicios, heredada de sus "hermanos mayores".
HP-UX de Hewlett-Packard. Este sistema operativo también nació ligado a las computadoras departamentales de este fabricante. También es un sistema operativo estable que continua en desarrollo.
Mac OS X. Curiosamente sus propios usuarios suelen desconocer que se trata de un UNIX completo, aprobado por The Open Group. Su diferencia marcada es que posee una interfaz gráfica propietaria llamada Aqua, y es principalmente desarrollada en Objective-C en lugar de C o C++.
Existen sistemas operativos basados en el núcleo Linux, y el conjunto de aplicaciones GNU (también denominado GNU/Linux), entre las más utilizadas encontramos:
Red Hat Enterprise Linux.
Cuyo fabricante Red Hat es conocido por su amplia gama de soluciones y aportes al desarrollo de software libre. Apoya el proyecto Fedora del cual se beneficia y de ella se derivan distribuciones compatibles como Oracle Enterprise Linux y CentOS, también distribuciones como Mandriva Linux, se basó en una de sus primeras versiones.
SUSE Linux de Novell. Originalmente liberado por la compañía alemana SuSE. Es popular por sus herramientas de administración centralizada. De manera análoga a Fedora con RedHat, Apoya el proyecto openSUSE.
Debian GNU/Linux. Con una de las comunidades más grandes y antiguas del movimiento de software libre, es base para distribuciones más comerciales como Xandros, Mepis, Linspire y Ubuntu.
También son populares los sistemas operativos descendientes del 4.4BSD:
FreeBSD. Quizá el sistema operativo más popular de la familia, de propósito múltiple. Con una implementación SMP muy elaborada, es el sistema operativo utilizado por los servidores de Yahoo. Y base de muchos sistemas operativos entre ellos Mac OS X de Apple.
OpenBSD. Ampliamente reconocida por su seguridad proactiva y auditoría permanente del código fuente. Es utilizada en ambientes donde la seguridad prima sobre todo, es usual encontrarlo instalado en servidores que actúan como Firewall, VPN o Proxy.
NetBSD . Se le conoce por su portabilidad, a octubre de 2008: 53 arquitecturas soportadas. La NASA lo ha utilizado para la investigación en redes TCP/IP satelitales, al igual que para reciclar computadoras viejas con software moderno.

GNU/Linux
GNU/Linux (Linux) es uno de los términos empleados para referirse al sistema operativo libre similar a Unix que usualmente utiliza herramientas de sistema GNU. Su desarrollo es uno de los ejemplos más prominentes de software libre; todo el código fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL (Licencia Pública General de GNU) y otras licencias libres.
A pesar de que Linux es el sistema operativo, cabe notar que debido a que usualmente se maneja con las herramientas GNU, una parte significativa de la comunidad, así como muchos medios generales y especializados, prefieren utilizar el término Linux para referirse a la unión de ambos proyectos. Para más información consulte la sección "Denominación GNU/Linux" o el artículo "Controversia por la denominación GNU/Linux". Una vez acabado el proyecto GNU, reclamará a su núcleo como motor principal, el conocido como Hurd.
No obstante, es posible instalarlo en una amplia variedad de hardware como computadoras de escritorio y portátiles. En computadoras de bolsillo, teléfonos móviles, dispositivos empotrados, videoconsolas y otros, puede darse el caso en que las partes de GNU se reemplacen por alternativas más adecuadas. Para saber más sobre las arquitecturas soportadas, lea el artículo "Portabilidad del núcleo Linux y arquitecturas soportadas".

LAS REDES

Clasificación de redes:
Por alcance:

Red de Área Personal (PAN)


Red de área personal o Personal area network es un conjunto de equipos conectados por medio de cables, señales, ondas o cualquier otro método de transporte de datos, que comparten información, archivos, recursos, entre otros. Estas redes normalmente son de unos pocos metros y para uso personal, así como fuera de ella.

Red de Área Local (LAN): Una red de área local, red local o LAN (del inglés Local Area Network) es la interconexión de varios ordenadores y periféricos. Su extensión está limitada físicamente a un edificio o a un entorno de 200 metros o con repetidores podríamos llegar a la distancia de un campo de 1 kilómetro. Su aplicación más extendida es la interconexión de ordenadores personales para compartir recursos e intercambiar datos y aplicaciones. En definitiva, permite que dos o más máquinas se comuniquen.


Red de Área Metropolitana (MAN): Una red de área metropolitana (Metropolitan Area Network o MAN, en inglés) es una red de alta velocidad (banda ancha) que dando cobertura en un área geográfica extensa, proporciona capacidad de integración de múltiples servicios mediante la transmisión de datos, voz y vídeo, sobre medios de transmisión tales como fibra óptica y par trenzado.
Las redes de área metropolitana, comprenden una ubicación geográfica determinada "ciudad, municipio", y su distancia de cobertura es mayor de 4 km . Son redes con dos buses unidireccionales, cada uno de ellos es independiente del otro en cuanto a la transferencia de datos.

Red de Área Amplia (WAN):
Una Red de Área Amplia (Wide Area Network o WAN, del inglés), es un tipo de red de computadoras capaz de cubrir distancias desde unos 100km hasta unos 1000 km, dando el servicio a un país o un continente. Muchas WAN son construidas por y para una organización o empresa particular y son de uso privado, otras son construidas por los proveedores de Internet (ISP) para proveer de conexión a sus clientes.
Normalmente la WAN es una red punto a punto, es decir, red de paquete conmutado. Las redes WAN pueden usar sistemas de comunicación vía satélite o de radio. Fue la aparición de los portátiles y los PDA {Asistente Digital Personal), es un computador de mano originalmente diseñado como agenda electrónica}, la que trajo el concepto de redes inalámbricas.

Red de Área Simple (SPL)
: Este tipo de red es útil para transferir entre dos o mas ordenadores que normalmente no se conectan entre si por una conexión de red permanente para uso casero de establecimiento de red

Red de Área de Almacenamiento (SAN):
Una red de área de almacenamiento, en inglés SAN (Storage Area Network), es una red concebida para conectar servidores, matrices (arrays) de discos y librerías de soporte. Su función es la de conectar de manera rápida, segura y fiable los distintos elementos que la conforman.



Por Método de la Conexión
Medios Guiados:

Cable coaxial: El cable coaxial es un cable utilizado para transportar señales eléctricas de alta frecuencia que posee dos conductores concéntricos, uno central, llamado vivo, encargado de llevar la información, y uno exterior, de aspecto tubular, llamado malla o blindaje, que sirve como referencia de tierra y retorno de las corrientes.
Cable de par trenzado: El cable de par trenzado es una forma de conexión en la que dos aisladores son entrelazados para tener menores interferencias y aumentar la potencia y la diafonía de los cables adyacentes.
Fibra óptica :
La fibra óptica es un medio de transmisión empleado habitualmente en redes de datos. Son el medio de transmisión por excelencia al ser inmune a las interferencias electromagneticas, también se utilizan para redes locales, en donde se necesite una alta confiabilidad y fiabilidad.Las fibras se utilizan ampliamente en telecomunicaciones, ya que permiten enviar gran cantidad de datos a una gran distancia, con velocidades similares a las de radio y/o cable.

Medios no Guiados:

Radio: la Red por radio es aquella que emplea la radiofrecuencia como medio de unión de las diversas estaciones de la red. Es una tecnología que posibilita la transmisión de señales mediante la modulación de bandas electromagnéticas. Estas bandas no requieren un medio físico de transporte, por lo que pueden propagarse a través del aire como en el espacio vacio.
Infrarrojos: Se encuentra limitada por el espacio y los obstáculos. El hecho que la longitud de onda de los rayos infrarrojos sean tan pequeños, hacen que no puedan propaarse d ela misma forma en que lo hacen las señales de radio.

Microondas:
Una red por microondas es un tipo de red inalámbrica que utiliza ondas electromagnéticas como medio de transmisión definidas en un rango determinado, generalmente entre 300 MHZ y 300 GHZ, y su longitud de onda en el rango de 1metro a 1 milímetro.

Laser: Los haces de luz coherente producidos por laser presentan una capacidad de transmisión de mensajes simultáneos muy superior a los de sistemas telefónicos convencionales.


Por Relación Funcional

Cliente – Servidor

Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.
La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.

Igual a Igual
Una red peer-to-peer (P2P) o red de pares
, es una red de computadoras en la que todos o algunos aspectos de esta funcionan sin clientes ni servidores fijos, sino una serie de nodos que se comportan como iguales entre si.
En estas redes no existen ni ordenadores cliente ni ordenadores que hagan de servidor. Las redes P2P permiten el intercambio directo de información, en cualquier formato, entre los ordenadores interconectados.
Dichas redes son útiles para diversos propósitos. A menudo se usan para compartir ficheros de cualquier tipo (por ejemplo, audio, video o software).

Arquitecturas de Red

Por Tipología de Red


Red en Bus Red:
se caracteriza por tener un único canal de comunicaciones (denominado bus, troncal o backbone) al cual se conectan los diferentes dispositivos. De esta forma todos los dispositivos comparten el mismo canal para comunicarse entre sí.

Ventajas

Facilidad de implementación y crecimiento.
Simplicidad en la arquitectura.
Desventajas
Longitudes de canal limitadas.
El desempeño se disminuye a medida que la red crece.
Es una red que ocupa mucho espacio.
Red en Estrella: es una red en la cual las estaciones están conectadas directamente a un punto central y todas las comunicaciones se han de hacer necesariamente a través de éste. Se utiliza sobre todo para redes locales.

Ventajas

Tiene los medios para prevenir problemas.
Fácil de agregar, reconfigurar arquitectura PC.
Fácil de prevenir daños o conflictos.
Desventajas
Si el nodo central falla, toda la red se desconecta.
Es costosa, ya que requiere más cable que las topologías bus o anillo.
Red en Anillo: Topología de red en la que cada estación está conectada a la siguiente y la última está conectada a la primera. Cada estación tiene un receptor y un transmisor que hace la función de repetidor, pasando la señal a la siguiente estación.

Ventajas
Simplicidad de arquitectura. Facilidad de implementación y crecimiento.
Desventajas
Longitudes de canales limitadas.
El canal usualmente degradará a medida que la red crece.
Lentitud en la transferencia de datos.

Red en Malla: es una topología de red en la que cada nodo está conectado a todos los nodos. De esta manera es posible llevar los mensajes de un nodo a otro por diferentes caminos.


Ventajas
Es posible llevar los mensajes de un nodo a otro por diferentes caminos.
No puede existir absolutamente ninguna interrupción en las comunicaciones.
Si falla un cable el otro se hará cargo del trafico.
Desventajas
Esta red es costosa de instalar ya que requiere de mucho cable.

Red en Árbol: Topología de red en la que los nodos están colocados en forma de árbol. Desde una visión topológica, la conexión en árbol es parecida a una serie de redes en estrella interconectadas salvo en que no tiene un nodo central. Es una variación de la red en bus, la falla de un nodo no implica interrupción en las comunicaciones. Se comparte el mismo canal de comunicaciones.
Ventajas

• Permite conectar mas dispositivos.
• Cableado punto a punto para segmentos individuales.

Desventajas

• Se requiere más cable.
• Es más difícil su configuración.

Red Mixta: (cualquier combinación de las anteriores)

Por la direccionalidad de los datos


Simplex (unidireccionales): un Equipo Terminal de Datos transmite y otro recibe.
Half-Duplex (bidireccionales): sólo un equipo transmite a la vez. También se llama Semi-Duplex (p. ej. una comunicación por equipos de radio, si los equipos no son full dúplex, uno no podría transmitir (hablar) si la otra persona está también transmitiendo (hablando) porque su equipo estaría recibiendo (escuchando) en ese momento).
Semi_Duplex: Es un no de intercambio de datos entre dos terminales, en la q la transmisión se lleva a cabo de manera alternativa.
Full-Duplex (bidireccionales): ambos pueden transmitir y recibir a la vez una misma información. (p. ej. videoconferencia).

Sistemas de información

Los sistemas de información dentro de una organización, no son algo nuevo. Desde mucho antes de utilizar las computadoras para su automatización, las organizaciones reunían, almacenaban y actualizaban información en el transcurso normal de su actuación diaria. Tanto antes como ahora, los sistemas de información consistían en procedimientos y reglas establecidas para entregar información a los miembros de la organización. Cada una de estas personas, requiere información distinta en la realización de su trabajo, las reglas del sistema indican el tipo, momento, formato y cual es la persona a quien se debería entregar una información específica.

Pero un sistema manual de información puede llegar a ser ineficiente y frustrante, incluso en organizaciones pequeñas. Un sistema de información automatizado o basado en computadoras, es la integración de hardware, software, personas, procedimientos y datos. Todos estos elementos se conjugan, trabajando juntos, para proporcionar información básica para la conducción de la empresa. Esta información hace posible que las empresas lleven a cabo sus tareas con mayor calidad y facilidad.

Los sistemas de información computarizados, además de llevar un seguimiento de las transacciones y operaciones diarias, propias del negocio, sirven de apoyo al flujo de información interno de la organización. La finalidad de los sistemas de información organizacionales es, procesar entradas, mantener archivos de datos relacionados con la organización y producir información, reportes y otras salidas para los usuarios que las necesitan. Puesto que los sistemas de información dan soporte a los demás sistemas de la organización, los analistas de sistemas tienen que estudiar primero el sistema organizacional como un todo y así entonces, poder precisar cuáles son y cómo funcionan los sistemas de información de la organización.
Componentes de un sistema de información.
Los sistemas de información dependen de otros subsistemas componentes para poder llevar a cabo las actividades de entrada, proceso, salida, almacenamiento y control que convierten recursos de datos en productos de información. Estos subsistemas incluyen personas, hardware, software, procedimientos y datos. En lo que sigue se detalla sobre cada uno de ellos.

Personas: Un sistema de cómputo involucra una variada gama de personas relacionadas con el mismo, puesto que su construcción, mantenimiento y uso representan una labor con cierto grado de complejidad. Se pueden dividir en dos grandes grupos: Los usuarios finales y los especialistas o profesionales.

Los usuarios finales son aquellos que operan o interaccionan directamente con el sistema a través de una estación de trabajo o incluso, quienes reciben reportes e información generada por el sistema.

Entre los profesionales se encuentran: Los analistas de los sistemas de información, encargados de idear soluciones cuando se requiere un nuevo sistema, actualizarlo, modificarlo o reconstruirlo; los programadores, que crean los programas de cómputo que forman parte de los sistemas de información; los administradores del sistema, encargados de mantener el sistema en buenas condiciones; los capacitadores, que instruyen y preparan a los usuarios para la utilización del sistema.

Hardware:
Consiste en los equipos, dispositivos y medios necesarios que constituyen la plataforma física mediante la cual, el sistema de información puede funcionar. Se incluyen aquí, por supuesto, los que permiten las comunicaciones y los enlaces de red. Estos recursos son, por ejemplo, computadoras, monitores, impresoras, disquetes o componentes de almacenamiento de información externos, disco óptico, papel de impresión, cableado de red, y otros.

Software o programas:
Son el componente lógico, es decir, los programas, las rutinas e instrucciones que conforman el sistema de información. Se les suele denominar aplicación de sistema de información. Es así como los sistemas de información pueden tener aplicaciones particulares, por ejemplo, para el área de ventas, de contabilidad, de personal o de compras. La aplicación que conforma un sistema de información completo contiene subconjuntos de programas que se encargan de apoyar las distintas actividades propias de la organización.
Cuando se habla de sistema de información, las personas suelen pensar que se refiere sólo a la aplicación, al conjunto de programas que la constituye. En general este es el uso convencional y aceptado, pero realmente es sólo una parte, un componente o subsistema como se ha explicado.

Datos:
Unidades de información que son almacenadas y generadas en el transcurrir de la labor de la empresa. Los datos son almacenados en las denominadas bases de datos o bases de conocimiento.
Entre las ventajas de la utilización de un sistema de información computarizado:

• Control más efectivo de las actividades de la organización.
• Integración de las diferentes áreas que conforman la organización.
• Integración de nuevas tecnologías y herramientas de vanguardia.
• Ayuda a incrementar la efectividad en la operación de las empresas.
• Proporciona ventajas competitivas y valor agregado.
• Disponibilidad de mayor y mejor información para los usuarios en tiempo real.
• Elimina la barrera de la distancia trabajando con un mismo sistema en puntos distantes.
• Disminuye errores, tiempo y recursos superfluos. Permite comparar resultados alcanzados con los objetivos programados, con fines de evaluación y control.
Entre las desventajas se puede encontrar:

• El tiempo que pueda tomar su implementación.
•La resistencia al cambio de los usuarios. Problemas técnicos, si no se hace un estudio adecuado, como fallas de hardware o de software o funciones implementadas inadecuadamente para apoyar ciertas actividades de la organización.

Estructura de datos

En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación. Un dato elemental es la mínima información que se tiene en un sistema.
Una estructura de datos define la organización e interrelación de éstos y un conjunto de operaciones que se pueden realizar sobre ellos.
Las operaciones básicas son:
Alta, adicionar un nuevo valor a la estructura.
Baja, borrar un valor de la estructura.
Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor, en forma secuencial o binario (siempre y cuando los datos estén ordenados).
Otras operaciones que se pueden realizar son:
Ordenamiento, de los elementos pertenecientes a la estructura.
Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas.
Cada estructura ofrece ventajas y desventajas en relación a la simplicidad y eficiencia para la realización de cada operación. De esta forma, la elección de la estructura de datos apropiada para cada problema depende de factores como la frecuencia y el orden en que se realiza cada operación sobre los datos.

Nunca hasta el presente, ha estado la información en tal cantidad y riqueza a disposición de las personas. La computación, las redes y el Internet se han convertido en medios por excelencia para acceder a la información de manera fácil y rápida. La información oportuna y confiable hace la diferencia en cualquier tipo de actividad que las personas desempeñen. Por esto, es importante saber cómo encontrar de manera eficaz la información de interés.

Organización de datos en el almacenamiento secundario
Para que las computadoras puedan almacenar y procesar los datos, estos se organizan regularmente en ciertos elementos. Cada uno de estos elementos se agrupa con sus similares, para formar otro elemento más complejo:
• Carácter: Es una letra, un número, signo de puntuación o signo especial.

• Campo: Contiene un grupo de caracteres que agrupados conforman un dato o atributo de información. Cuando se llena un formato de solicitud de ingreso en una Universidad, el nombre de la persona por ejemplo, representa un campo; su dirección, domicilio, y otros, representan a su vez otros campos.
• Registro: Está conformado por la agrupación de campos relacionados entre sí. Toda la información de inscripción de un estudiante constituye un registro.

• Archivo: Es un conjunto de registros relacionados. Todas las inscripciones de los estudiantes de una universidad podrían conformar un archivo.

• Base de datos: Está conformada por un conjunto de archivos interrelacionados. Los archivos de inscripción, además de los archivos de notas, de profesores y de materias conjuntamente pueden constituir una base de datos de una universidad.
Campo clave:
Es un campo particular dentro del registro, que permite la identificación exclusiva y unívoca de cada registro. La clave debe ser un valor que no se repita, como por ejemplo, el número de cédula de identidad, número de identificación, el número de carnet en una universidad o el número de seguro social.

Procesamiento de Datos.

Existen dos maneras tradicionales para procesar datos. El procesamiento por lotes y el procesamiento en tiempo real.

Procesamiento por lotes: En este procesamiento, los datos se reúnen por un periodo de tiempo (horas, días o hasta semanas) al final del cual, se procesan en una sola operación o lote

Procesamiento en tiempo real: Este ocurre cuando los datos se procesan en el mismo momento en que son generados.

Al principio, tan sólo se disponía de almacenamiento en cintas magnéticas que únicamente permiten almacenamiento secuencial. Esto obligaba a realizar todo el procesamiento por lotes. Con la aparición de los dispositivos de acceso directo (discos duros), fue posible el almacenamiento de acceso directo, que permite localizar velozmente el registro de interés. Esto posibilitó el procesamiento en tiempo real, que es muy apreciado en operaciones, como las de empresas comerciales. El procesamiento en tiempo real permite, por ejemplo, saber al instante cuántos productos han sido vendidos y con cuántos se cuenta en inventario, en tanto se van haciendo las ventas.

Aún cuando el procesamiento por lotes precedió al procesamiento en tiempo real, motivado a factores como la disponibilidad de la tecnología, no es correcto pensar en el procesamiento por lotes como algo caduco. Existen procesos que por su naturaleza deben hacerse por lotes, como por ejemplo el cálculo de la nómina de una compañía cada mes.

Archivos maestros y archivos de transacciones.
Se tratan ahora dos tipos de archivos que son utilizados cuando se desea actualizar los datos. El archivo maestro, mantiene la totalidad de registros en una versión actualizada. Por ejemplo, un archivo usado para la elaboración de los estados de cuenta bancarios. El archivo de transacciones, contiene los cambios más recientes a los registros, que permitirán actualizar el archivo maestro. Una muestra sería un archivo con los datos temporales de movimientos bancarios a lo largo de un mes.

PROGRAMACION

Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1 Está formado de un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.
También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa)
Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo el HTML. (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación sino un conjunto de instrucciones que permiten diseñar el contenido y el texto de los documentos)
Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.

Historia
Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje específico conocido como código máquina, el cual la máquina comprende fácilmente, pero que lo hace excesivamente complicado para las personas. De hecho sólo consiste en cadenas interminables de números 1 y 0. (Binario)
Para facilitar el trabajo, los primeros operadores de computadoras decidieron reemplazar los 1 y 0 por palabras o letras provenientes del inglés; éste se conoce como lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). En realidad escribir en lenguaje ensamblador es básicamente igual que hacerlo en lenguaje máquina, pero las letras y palabras son más fáciles de recordar y entender que los números.
La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos, denominados también lenguajes de alto nivel.
La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer a Charles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso aunque Babbage nunca completó la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con éstas le hizo ganarse el título de primera programadora de computadoras del mundo. El nombre del lenguaje de programación Ada fue escogido como homenaje a esta programadora.
A finales de 1953, John W. Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar el computador central IBM 704. El histórico equipo Fortran de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.2
El primer manual para el lenguaje Fortran apareció en octubre de 1956, con el primer compilador Fortran entregado en abril de 1957. Esto era un compilador optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador.
En 1960, se creó COBOL, uno de los lenguajes usados aun en 2010 en informática de gestión.
A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un método más eficiente para programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo fue el BASIC en las versiones introducidas en los microordenadores de la década de 1980. Mientras que una tarea tan sencilla como sumar dos números puede necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará con solo una.

Programación estructurada

La investigación a través del estudio de los códigos logró demostrar que cualquier programa se podía escribir, usando las tres estructuras siguientes de control:

1. La estructura secuencial: Está definida por el flujo de control automático de un programa. De manera natural, a menos que otra cosa se indique, la computadora ejecuta las líneas de código en el orden en que fueron escritas. El control del programa fluye de la línea anterior a la línea siguiente.

2. Las estructuras de selección: Se basan en una declaración condicional. Si es verdadera, ciertas líneas de código son ejecutadas. Si tal declaración es falsa, esas líneas no serán ejecutadas. Las dos estructuras de selección más comunes son: Si-Entonces (If-Then) y Si-Entonces-de lo contrario (If-Then-Else).

3. Las estructuras de repetición (o de ciclos): Su construcción también hace uso de declaraciones condicionales. Si la condición evaluada es verdadera, un bloque de una o más instrucciones se repetirá, hasta que la condición sea falsa. La computadora prueba la condición una primera vez, si es verdadera, ejecuta el bloque de comandos. Entonces, finalizada la primera repetición, comprueba de nuevo la condición y si es verdadera se repite el bloque nuevamente, y así sucesivamente hasta que la condición sea falsa. Ya que este funcionamiento es cíclico, cada una de estas repeticiones es llamada también ciclo. Tres estructuras de este tipo son: Repita para (For-Next), Repita Mientras (While) y Repita Hasta (Do-While).

Programación orientada a objetos (POO)

Los entusiastas de la POO aseguran que, a pesar de que sus conceptos básicos puedan parecer un tanto abstractos al principio, este tipo de programación se asemeja más a la manera natural de pensar y concebir el mundo. Por esta razón, el proceso de modelado es más intuitivo, y se hace posible crear y mantener programas de manera más sencilla y rápida.

Objetos:
En general cuando se observa o se piensa sobre un objeto, por ejemplo un carro, siempre se le percibe como un todo. No es común enfocarse en sus componentes de acero, vidrio o plástico, sino más bien, la mente lo percibe como unidad completa, como un objeto, como un todo. Si se desea describir el carro, se puede pensar en su color, tamaño y forma. Como todos los objetos, el carro posee atributos que permiten describirle. Se puede pensar además en las cosas que el carro puede hacer, como acelerar, retroceder, girar a derecha o izquierda

El carro tiene un conjunto de funciones que puede realizar. Además, es fácil notar que el carro contiene elementos que le constituyen: Los cauchos, el chasis, el sistema de tracción, y otros. Pero esos elementos a su vez están formados por otros elementos. Como es el caso del motor y de las partes que le forman. De manera muy similar, en la POO se emplean módulos llamados objetos, que poseen atributos y funciones. Los objetos encapsulan o contienen otros objetos, que a su vez pueden ser también contenedores de objetos

Clases y herencia de clases:
Cuando se mira alrededor, es posible ubicar los objetos en clases o categorías abstractas de objetos afines. En un proceso similar, en POO por ejemplo, los autos de las diferentes marcas se agruparían en una clase llamada carros. Una clase consiste en atributos y funciones que son compartidas por más de un objeto. En el caso de los carros, todos cuentan con un volante y cuatro ruedas y pueden ir hacia delante, en reversa, detenerse o acelerar. Los atributos de clase se denominan miembros de datos y las funciones de la clase, se conocen como funciones de miembro o métodos.

Las clases pueden ser divididas en subclases. Las subclases normalmente poseen todos los atributos de la clase predecesoras, a lo que se llama herencia de clase.
En el ejemplo de los carros, estos pueden tener una clase sedan, una clase deportivo y una clase camioneta pick up; todas las clases comparten como atributo un volante y como función acelerar. Además de las características heredadas, las subclases pueden tener características propias. Para las pick up, por ejemplo, cuentan además con dirección en las cuatro ruedas. De este modo todo objeto pertenece a una clase.
En POO crear un objeto se denomina instanciación. Al instanciar un objeto, éste adquiere de manera automática los atributos y métodos asociados a la clase a la cual pertenece. Normalmente no se espera que los carros operen por sí solos. Para que el carro vaya hacia delante se envía una señal, presionando el acelerador. En POO se utilizan los mensajes para indicar a los objetos que realicen una determinada función.

Pasos para la programación

Especificación del programa:
En este paso se identifica y se define la necesidad a resolver, que indicará los objetivos, salidas, entradas y requerimientos de procesamiento del programa. Los programadores, verifican si existe ya, una solución provista por alguien que haya encarado el problema con anterioridad y que lo ofrezca, bien en la propia organización o de manera comercial fuera de ella. Solamente si la solución no se encuentra disponible, o existen limitaciones para conseguirla, es cuando se comienza con la programación. En primer lugar, debe establecerse cuál es el problema que se intenta resolver, delimitándolo claramente. Se procede entonces, a determinar cuál es la salida de información que se desea genere el programa. La salida, se puede tratar de una salida impresa o una que se presente en el monitor, como por ejemplo, un reporte de facturación para cada mes. La determinación de entradas requiere identificar qué datos son necesarios para realizar el proceso y cuál es su origen. Seguidamente, se definen las tareas de procesamiento que deben realizarse para transformar los datos de entrada en salida.

Diseño del programa:
Es la etapa en la cual los programadores delinean cada componente del programa y las interfases entre cada componente. Se cuenta con muchas herramientas para este proceso, entre las que se tiene, diagramas de flujos (para programación estructurada), círculos y canales de mensaje (programación orientada a objetos) y seudocódigo. Estas herramientas permiten presentar una documentación que describe la solución en términos gráficos y descripción de las instrucciones que conforman los procedimientos.

Codificación del programa:
En esta fase se realiza la generación del programa, usando un lenguaje de programación. Se obtendrá de la fase el código que ejecutará la computadora. Implica desde la escritura de las instrucciones en el llamado código fuente, hasta la realización de prueba del mismo. Para esta fase se hace uso de la lógica que se determinó en el paso anterior para realizar la generación del programa. Puede hacerse uso del código que ya fue escrito y probado anteriormente (probablemente en otros proyectos), en especial si se está usando la POO. La integración y adaptación de código existente a una nueva aplicación, puede ahorrar gran cantidad de tiempo.

Prueba del programa:
La aparición de errores en los programas es prácticamente inevitable. Existen dos tipos de errores principalmente: de sintaxis y lógica. Los errores de sintaxis violan las reglas del lenguaje de programación. Para afrontarlos se hace uso de un compilador que los detectará de forma automática. Los errores de lógica causan que el programa se ejecute de manera inesperada o incorrecta. El proceso para eliminar los errores de lógica se denomina depuración.

Documentación del programa:
Este paso resalta la necesidad de completar y revisar toda la documentación acumulada en el proceso y adaptarla, para quienes estarán relacionados con el programa en el futuro: Los usuarios finales y los programadores. La documentación contiene de manera escrita todas las descripciones y procedimientos, que surgen a lo largo del proceso, acerca de un programa y su modo de uso. La documentación para los usuarios les indica cómo utilizar el programa y cómo resolver los mensajes de error. Suele ir incluida dentro del programa, en una opción de ayuda, o separada en manuales impresos. Para los programadores, la documentación es valiosa por dos situaciones: al pasar el tiempo, un programador puede olvidar detalles de su producto, o también, cuando un programador debe actualizar, modificar o dar mantenimiento a un programa desarrollado por otro.

Mantenimiento del programa:
Esta fase se inicia inmediatamente después de instalado el producto. Está motivada, porque algunos defectos menores podrían haber sido pasados por alto y deberán ser solventados o porque los programadores podrían querer añadir mayor funcionalidad al mismo, como respuesta a las inquietudes de los usuarios finales. Debido a que todas las organizaciones experimentan cambios con el tiempo, los programas inevitablemente deben cambiar con ellas. De modo que deberán ser ajustados, para mejorar, estandarizarse o adecuarse a los cambios.

Pasos de la Programación

Pasos Descripción
1. Especificación Determinar objetivos, salida, entrada y requerimientos del programa
2. Diseño Delinear los componentes y sus interfaces
3. Codificación Generar el programa en un lenguaje de programación
4. Prueba Verificar desempeño del programa, determinar errores de sintaxis y lógica
5. Documentación Redactar documentación para usuarios y programadores
6. Mantenimiento Corrección de errores, ajustes por nuevos cambios

Servicio Correctivo de la Computadora

Servicio Correctivo de la Computadora

El Servicio Correctivo de la computadora se realiza para solucionar fallas operativas de software o hardware; cambio o instalación de nuevos componentes de hardware y cuando la presencia de un Virus afecta el desempeño de la computadora.

El Servicio Correctivo, generalmente tiene una duración de 3 a 5 horas dependiendo de la rapidez de la computadora.

Respaldo de Base de Datos:

Es la transferencia de toda la información o datos existentes (Carpetas de documentos y archivos que no sean del sistema ni de programas, e-mail, contactos, favoritos, etc.) en el disco duro de una computadora a un medio externo de respaldo (Disco externo, Cd Virgen, Zip, diskette, etc).

Formateo en alto nivel:

Es la eliminación total de los datos del disco duro.

Eliminación de Virus:

Es el procedimiento por medio del cual se limpia la computadora de programas perjudiciales para su buen funcionamiento.

Levantamiento de sistema:

Es el proceso por medio del cual se instala el sistema operativo y demás programas de oficina, en una computadora.

Configuración de drivers de periféricos:

Es la instalación de los programas necesarios para reconocer los componentes de hardware instalados en la computadora.



Restauración de la base de datos:

Es la transferencia de toda la información o datos existentes (Carpetas de documentos y archivos que no sean del sistema ni de programas, email, contactos, favoritos, etc.) de un medio externo de respaldo (Disco externo, Cd Virgen, Zip, diskette, etc) al disco duro de la computadora.

Configuración y conexión a la red:

Trabajo a realizar para que las computadoras se puedan ver entre si y puedan utilizar otras impresoras.

Configuración a Internet y correo electrónico:

Instalación y proceso por medio del cual se conectan las máquinas a Internet y al correo electrónico de cada computadora.

Limpieza general del Equipo:

Eliminación de impurezas dentro del Gabinete, Teclado, Mouse, Unidades de CDROM y Floppy, que contenga la computadora.

Mantenimiento Preventivo de la Computadora

Mantenimiento Preventivo de la Computadora

El Mantenimiento Preventivo de la computadora puede tener uno o varios procesos que generalmente tienen una duración entre 1 y 6 horas, dependiendo de la cantidad de procesos a realizar y según la necesidad o el estado del mismo.

Estos se realizan para solucionar y prevenir fallas operativas de software o hardware; cambio o instalación de nuevos componentes de hardware; configuraciones de Correo Electrónico; Internet y conexiones a la Red.

Verificación periódica:

Es la revisión de componentes o partes de la computadora, mediante la ejecución de programas de prueba: Placas Madre, Teclados, Puertos de Comunicación (Serial, USB), Puerto de Impresión (Paralelo), Memoria Ram, Unidades de disco duro, Mouse.


Eliminación de temporales y archivos perdidos o corruptos:

Es la exclusión de archivos generados por las aplicaciones instaladas en la computadora y que ya no se utilizan, eliminación de temporales, archivos perdidos, carpetas vacías, registros inválidos y accesos directos que tienen una ruta que ya no existe, con la finalidad de liberar espacio en el Disco Duro, aumentar la velocidad y corregir fallas en el funcionamiento normal de la computadora.

Ejecución de programas correctivos de errores en la consistencia de los datos de discos duros.

Desfragmentación de discos:

Es la organización de los archivos en el disco, para mejorar la velocidad de la computadora.

Actualización de Antivirus:

Es la carga en el software antivirus, de la lista nueva de virus actualizada a la fecha, para el reconocimiento de cualquier infección nueva y el mejoramiento del motor de búsqueda del antivirus.

Respaldo de datos en medios externos:

Es la transferencia de toda la información o datos existentes (Carpetas de documentos, email, contactos, favoritos y archivos que no sean del sistema ni de programas) en el disco duro de una computadora a un medio externo de respaldo (Cd Virgen, Zip, diskette, etc…).

Reinstalación de programas de oficina, sin que alguno sea el Sistema Operativo:

Instalación de aplicaciones de oficina como el Office, aplicaciones de diseño, contabilidad, antivirus, etc…

Configuración de drivers de periféricos:

Es la instalación de los programas necesarios para reconocer los componentes de hardware instalados en la computadora (Impresora, Scanner, etc…).

Cuentas de correo:

Revisión y Configuración de las cuentas de Correo Electrónico en la computadora.

Revisión de red y configuración de la misma:

Trabajo a realizar para que las computadoras se puedan ver entre si y puedan utilizar otras impresoras conectadas a otros equipos.

Limpieza general del Equipo:

Eliminación de impurezas de los siguientes componentes: Teclado, Mouse, Fuente de Alimentación, Unidades de CDROM y Floppy, Regulador de voltaje, UPS, y pantallas.

La Informática

La Informática es la ciencia aplicada que abarca el estudio y aplicación del tratamiento automático de la información, utilizando dispositivos electrónicos y sistemas computacionales. También está definida como el procesamiento automático de la información.
Conforme a ello, los sistemas informáticos deben realizar las siguientes tres tareas básicas:

• Entrada: Captación de la información digital.
• Proceso: Tratamiento de la información.
• Salida: Transmisión de resultados binarios.

En los inicios del procesado de información, con la informática sólo se facilitaba los trabajos repetitivos y monótonos del área administrativa, gracias a la automatización de esos procesos, ello trajo como consecuencia directa una disminución de los costes y un incremento en la producción.
En la informática convergen los fundamentos de las ciencias de la computación, la programación y metodologías para el desarrollo de software, la arquitectura de computadores, las redes de computadores, la inteligencia artificial y ciertas cuestiones relacionadas con la electrónica. Se puede entender por informática a la unión sinérgica de todo este conjunto de disciplinas.
Esta disciplina se aplica a numerosas y variadas áreas del conocimiento o la actividad humana, como por ejemplo: gestión de negocios, almacenamiento y consulta de información, monitorización y control de procesos, industria, robótica, comunicaciones, control de transportes, investigación, desarrollo de juegos, diseño computarizado, aplicaciones/herramientas multimedia, medicina, biología, física, química, meteorología, ingeniería, arte, etc. Una de la aplicaciones más importantes de la informática es proveer información en forma oportuna y veraz, lo cual, por ejemplo, puede tanto facilitar la toma de decisiones a nivel gerencial (en una empresa) como permitir el control de procesos críticos.
Actualmente es difícil concebir un área que no use, de alguna forma, el apoyo de la informática. Ésta puede cubrir un enorme abanico de funciones, que van desde las más simples cuestiones domésticas, hasta los cálculos científicos más complejos.
Funciones de la Informática
Entre las funciones principales de la informática se cuentan las siguientes:
• Creación de nuevas especificaciones de trabajo.
• Desarrollo e implementación de sistemas informáticos.
• Sistematización de procesos.
• Optimización de los métodos y sistemas informáticos existentes.

Antecedentes históricos del computador
La primera máquina de calcular mecánica, un precursor del ordenador digital, fue inventada en 1642 por el matemático francés Blaise Pascal. Aquel dispositivo utilizaba una serie de ruedas de diez dientes en las que cada uno de los dientes representaba un dígito del 0 al 9. Las ruedas estaban conectadas de tal manera que podían sumarse números haciéndolas avanzar el número de dientes correcto. En 1670 el filósofo y matemático alemán Gottfried Wilhelm Leibniz perfeccionó esta máquina e inventó una que también podía multiplicar.
El inventor francés Joseph Marie Jacquard, al diseñar un telar automático, utilizó delgadas placas de maderaperforadas para controlar el tejido utilizado en los diseños complejos. Durante la década de 1880 el estadístico estadounidense Herman Hollerith concibió la idea de utilizar tarjetas perforadas, similares a las placas de Jacquard, para procesar datos. Hollerith consiguió compilar la información estadística destinada al censo de población de 1890 de Estados Unidos mediante la utilización de un sistema que hacía pasar tarjetas perforadas sobre contactos eléctricos.
El mundo de la alta tecnología nunca hubiera existido de no ser por el desarrollo del ordenador o computadora. Toda la sociedad utiliza estas máquinas, en distintos tipos y tamaños, para el almacenamiento y manipulación de datos. Los equipos informáticos han abierto una nueva era en la fabricación gracias a las técnicas de automatización, y han permitido mejorar los sistemas modernos de comunicación. Son herramientas esenciales prácticamente en todos los campos de investigación y en tecnología aplicada.

La máquina analítica
También en el siglo XIX el matemático e inventor británico Charles Babbage elaboró los principios de la computadora digital moderna. Inventó una serie de máquinas, como la máquina diferencial, diseñadas para solucionar problemas matemáticos complejos.
Muchos historiadores consideran a Babbage y a su socia, la matemática británica Augusta Ada Byron (1815-1852), hija del poeta inglés Lord Byron, como a los verdaderos inventores de la computadora digital moderna.
La tecnología de aquella época no era capaz de trasladar a la práctica sus acertados conceptos; pero una de sus invenciones, la máquina analítica, ya tenía muchas de las características de un ordenador moderno.
Incluía una corriente, o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para guardar los datos, un procesador para las operaciones matemáticas y una impresora para hacer permanente el registro.

Inicios de la Computación

La primera computadora electrónica comercial, la UNIVAC I, fue también la primera capaz de procesar información numérica y textual. Diseñada por J. Presper Eckeret y John Mauchly, cuya empresa se integró posteriormente en Remington Rand, la máquina marcó el inicio de la era informática. En la ilustración vemos una UNIVAC. La computadora central está al fondo, y en primer plano puede verse al panel de control de supervisión. Remington Rand entregó su primera UNIVAC a la Oficina del Censo de Estados Unidos en 1951.

El eniac
El ENIAC contenía 18.000 válvulas de vacío y tenía una velocidad de varios cientos de multiplicaciones por minuto, pero su programa estaba conectado al procesador y debía ser modificado manualmente. Se construyó un sucesor del ENIAC con un almacenamiento de programa que estaba basado en los conceptos del matemático húngaro-estadounidense John von Neumann. Las instrucciones se almacenaban dentro de una llamada memoria, lo que liberaba al ordenador de las limitaciones de velocidad del lector de cinta de papel durante la ejecución y permitía resolver problemas sin necesidad de volver a conectarse al ordenador.
A finales de la década de 1950 el uso del transistor en los ordenadores marcó el advenimiento de elementos lógicos más pequeños, rápidos y versátiles de lo que permitían las máquinas con válvulas. Como los transistores utilizan mucha menos energía y tienen una vida útil más prolongada, a su desarrollo se debió el nacimiento de máquinas más perfeccionadas, que fueron llamadas ordenadores o computadoras de segunda generación. Los componentes se hicieron más pequeños, así como los espacios entre ellos, por lo que la fabricación del sistema resultaba más barata.


Circuitos integrados
A finales de la década de 1960 apareció el circuito integrado (CI), que posibilitó la fabricación de varios transistores en un único sustrato de silicio en el que los cables de interconexión iban soldados. El circuito integrado permitió una posterior reducción del precio, el tamaño y los porcentajes de error. El microprocesador se convirtió en una realidad a mediados de la década de 1970, con la introducción del circuito de integración a gran escala (LSI, acrónimo de Large Scale Integrated) y, más tarde, con el circuito de integración a mayor escala (VLSI, acrónimo de Very Large Scale Integrated), con varios miles de transistores interconectados soldados sobre un único sustrato de silicio.

Los circuitos integrados han hecho posible la fabricación del microordenador o microcomputadora. Sin ellos, los circuitos individuales y sus componentes ocuparían demasiado espacio como para poder conseguir un diseño compacto. También llamado chip, un circuito integrado típico consta de varios elementos como reóstatos, condensadores y transistores integrados en una única pieza de silicio. En los más pequeños, los elementos del circuito pueden tener un tamaño de apenas unos centenares de átomos, lo que ha permitido crear sofisticadas computadoras del tamaño de un cuaderno. Una placa de circuitos de una computadora típica incluye numerosos circuitos integrados interconectados entre sí.
Evolución cronológica de la computadora
La necesidad del hombre de encontrar métodos rápidos y efectivos para resolver sus cálculos y su gran inventiva lo llevaron a través de los siglos al desarrollo de lo que hoy conocemos como la computadora. Desde el ábaco hasta las computadoras personales éstas han tenido una gran influencia en diferentes aspectos de nuestro diario vivir, mejorando nuestra calidad de vida y abriendo puertas que antes eran desconocidas para la humanidad.

Ábaco(500 AC)
El primer calculador de tipo mecánico fue ideado en Babilonia alrededor de 500 A.C. Este dispositivo mecánico llamado ábaco consistía de un sistema de barras y poleas con lo cual se podían efectuar diferentes tipos de cálculos aritméticos.
Oughtred presenta la regla de cálculo
Hacia 1622, el matemático inglés William Oughtred utilizó los recién inventados logaritmos para fabricar un dispositivo que simplificaba la multiplicación y la división. Consistía en dos reglas graduadas unidas que se deslizaban una sobre otra.

Primera máquina de sumar
El matemático y filósofo francés Blaise Pascal tenía diecinueve años cuando construyó la primera máquina sumadora del mundo en 1642. Utilizaba un engranaje de ruedas dentadas como contadores. El dispositivo llevaba 1 automáticamente al llegar a las decenas y también podía emplearse para restar.

Primera computadora digital programable
En 1834 el científico e inventor inglés Charles Babbage realizó los esquemas de un dispositivo el cual llamó máquina analítica lo que en realidad era una computadora de propósitos generales. Esta máquina era programada por una serie de tarjetas perforadas que contenían datos o instrucciones las cuales pasaban a través de un dispositivo de lectura, eran almacenados en una memoria y los resultados eran reproducidos por unos moldes. Esta máquina superaba por mucho la tecnología de su tiempo y nunca se terminó.

Primera sumadora de teclado
El teclado apareció en una máquina inventada en Estados Unidos en 1850. Podían sumarse una secuencia de dígitos pulsando unas teclas sucesivas. Cada tecla alzaba un eje vertical a cierta altura y la suma quedaba indicada por la altura total

Genraciones del Computador

Generaciones Del Computador

A.C. (Antes De Ordenadores)
• Dotación física
-Mecánico
• Software lógica
-Tarjetas o cinta de papel perforadas
-Ada Lovelace - primer programador (c. 1840)
-Máquina de Turing y Church-Turing Thesis (1937)
• Máquinas Especiales
-Ábaco
-Pascaline - Primera Máquina calculadora Automática (1642)
-Telar De Telar jacquar (1805)
-Motores De Babbage

-Motor De Diferencia (1822)
-Motor Analítico (1832)
-Hollerith

-Máquina De Tabulación (Censo 1890 De los E.E.U.U.)
-La máquina de tabulación de las formas Co. (1896) - se convierte la IBM en 1924
-Máquina sumadora De Burroughs (1888)
Primera generación: C. 1940 – 1955
• Dotación física
-Tubos de vacío

-Tambores magnéticos
-Cinta magnética (cerca del extremo de la generación)
• Software lógica
-Programas en terminología de la informática
-Programas en lenguaje ensamblador (cerca del extremo de la generación)
-1946 - von Neumann publica el documento sobre el ordenador salvado del programa
-1950 - Prueba de Turing publicada
• Máquinas Especiales
-1940 - ABC (1r ordenador electrónico)
-1940 - Robinson (1r ordenador, código operacionales de Enigma de las grietas)
-1946 - Calculadora numérica de ENIAC (1r completamente electrónico, de uso general)
-1950 - UNIVAC I (1r ordenador comercialmente acertado)

Segunda generación: C. 1955 – 1964
• Dotación física

-Transistores
-1947 - Convertido
-1955 - Calculadora Del Transistor De IBM's
-Minicomputadoras
-Discos magnéticos
-Tarjetas de circuito impresas
• Software lógica
-Lenguajes de alto nivel
-1956 - FORTRAN
-1959 - COBOL
• Máquinas Especiales
-1963 -- PDP 8 (1ra minicomputadora)

Tercera generación: C. 1964 – 1971
• Dotación física
-Circuitos integrados (c. desarrollada 1958)
-Familias de los ordenadores (1964 - IBM 360)
-1970 - Diskette
• Software lógica
-Los programas entraron directamente en los ordenadores
-Lenguajes de un nivel más alto (1965 - BASIC)
-Sistemas operativos
-Timesharing
• Máquinas Especiales
-1964 -- Serie del sistema 360 de la IBM (1ra familia de ordenadores)

Cuarta generación: C. 1971 – PRESENTE
• Dotación física
-1971 - Viruta del microprocesador introducida en los E.E.U.U. por Intel
-Microordenadores (Ordenadores Personales)
-Integración De la Escala Grande (LSI)
-Integración De la Escala Muy Grande (Vlsi)
• Software lógica
-Programación estructurada
-Conjuntos de aplicación
-Sistemas del windowing (interfaces utilizador gráficos -- GUIs)
-Programas conviviales
• Máquinas Especiales
-1971 - (1ra calculadora de bolsillo)
-1975 -- Altaír 8800 (1ra PC)
-1977 -- Manzana I (hágala usted mismo kit)
-1978 -- Manzana II (premontada)
-1981 -- PC DE LA IBM
-1984 -- Impermeable

sábado, 30 de enero de 2010

¿Que es un Algoritmo?

En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa Al Juarismi[] ) es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.[] Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución. Los algoritmos son objeto de estudio de la algoritmia.[]

En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales muestran algoritmos para usar el aparato en cuestión o incluso en las instrucciones que recibe un trabajador por parte de su patrón. También existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de ecuaciones.

Definición Formal:

En general, no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida).[Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo.[]

A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos como máquinas de Turing entre otros.[ Sin embargo estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una basta cantidad de estructuras de datos.[] [] En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:[]

Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).

Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.

Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.

En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría, por ejemplo el método de Newton y la eliminación de Gauss-Jordan funcionan, al menos en principio, con números de precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no por ello dejan de ser algoritmos.[] En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalentemente, en un lenguaje de programación suficientemente general):[]

Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial.

Medios de expresión de un algoritmo

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

La descripción de un algoritmo usualmente se hace en tres niveles:

  1. Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.
  2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.
  3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.

También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.

Pseudocódigo

Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de programación pero con algunas convenciones del lenguaje natural (de ahí que tenga el prefijo pseudo, que significa falso). Tiene varias ventajas con respecto a los diagramas de flujo, entre las que se destaca el poco espacio que se requiere para representar instrucciones complejas. El pseudocódigo no está regido por ningún estándar.

Sistemas formales

La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones μ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.

Implementación

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.

Análisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada.

El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y, en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Léxico, cuyos códigos pueden estar en el idioma del programador.

Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. En este último caso, la finalización con éxito del algoritmo no se podría definir como la terminación de éste con una salida satisfactoria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil.