sábado, 9 de julio de 2016

Clase #1

 Historia de las Computadoras

De la necesidad de llevar las cuentas de todo lo que el hombre hacía en el transcurso de las épocas surgen los diferentes aparatos utilizados para facilitar esa tarea. 

Ø  Ábaco basada en cálculos es decir piedras o bolitas para contar: actualmente se pueden sumar, restar, dividir y multiplicar. Aprox. en 3500 a.c.

Ø  Pascal invento la Pascalina basada en engranajes: para sumar, restar y multiplicar. En 1642 d.c.

Ø  Joseph Marie Jacquard inventa una Máquina de telar que utilizaba las tarjetas perforadas, capaz de crear diferentes patrones o bordados en las telas a partir del almacenamiento de instrucciones en ellas almacenadas. En 1801.

Ø  En 1822, Charles Babbage creo la Máquina Diferencial, capaz de desarrollar polinomios. En 1863 crea la Máquina Analítica la cual era capaz de hacer todas las operaciones matemáticas y ser programada por medio de tarjetas de cartón perforadas y guardar una enorme cantidad de cifras, por lo que se le considera el “Padre de la informática”.

Ø  En 1889, Herman Hollerith creó la Máquina Tabuladora eléctrica que lograba registrar datos en tarjetas perforadas, gracias a esto se lograban tabular datos o realizar conteos que podrían tardar años. Fundó en 1896 la Compañía de máquinas tabuladoras que posteriormente pasó a ser la IBM.

Generaciones de las computadoras

Resulta aparente que las generaciones son determinadas es la forma en que están construidas y como el humano se comunica con ellas.

Primera Generación: 1938-1958. Década del 40 al 50

Había un gran desconocimiento de las capacidades de las computadoras. En ésta generación las máquinas son grandes y costosas.  Se usaban en el ámbito científico y militar. Ejemplo: la más exitosa fue la IBM 650.

Características:
· Usaban tubos al vacío para procesar información.
· Usaban tarjetas perforadas para ingresar los datos y la programación.
· Usaban cilindros magnéticos para guardar información e instrucciones internas.
· Eran sumamente grandes. Utilizaban gran cantidad de electricidad. Generaban gran  cantidad de calor y eran sumamente lentas.
· Se comenzó a utilizar el sistema binario para representar los datos. 

Segunda Generación: 1958 – 1964.  Primera mitad de la década del 60

En esta generación se reducen de tamaño y son de menor costo que la anterior. Aparecen muchas compañías y las computadoras eran bastante avanzadas para su época. Ejemplo: Seria 5000 de Parox o la Atlas de la Universidad de Manchester.

Características:
· Algunas computadoras se programaban con cintas perforadas o cableados en un tablero.
· Usaban transistores para procesar información.
· Los transistores eran más rápidos y pequeños que los tubos al vacío.
· Usaban pequeños anillos magnéticos para almacenar información e instrucciones.
· Se mejoraron los programas que fueron creados en la 1° generación.
· Se desarrollaron nuevos lenguajes de programación como Bobol (diseñado para el procesamiento de datos administrativos) y Fortran (diseñado para la manipulación de fórmulas científicas y la aplicación de métodos numéricos a la solución de problemas) que eran comercialmente accesibles.
· Se usaban en aplicaciones de reservación de líneas aéreas, control de tráfico aéreo y simulaciones de propósito general.
· La marina de los EE.UU desarrollo el primer simulador de vuelo.
· Surgieron las microcomputadoras y las terminales a distancias (un terminal “hardware” conocido también como consola es un dispositivo electrónico o electromecánico usado para interactuar con un computador).
· Se comenzó a disminuir el tamaño de las computadoras.

Tercera Generación: 1964-1971. Segunda mitad de la década del 60

Emergió con el desarrollo de circuitos integrados, pastillas de cilicio en las que se colocaban miles de componentes electrónicos en una integración en miniatura. Las computadoras se hicieron nuevamente más pequeñas, más rápidas desprendían menos calor  y energéticamente más eficientes.  Se reducía el tamaño y se aumentaba la capacidad de procesamiento. Ejemplo IBM 360, PDP-8 fue el primer mini ordenador.

Características:
· Se desarrollaron circuitos integrados para procesar información.
· Se desarrollan los chips para almacenar y procesar la información. Un chip es una pieza de cilicio que contiene los componentes electrónicos en miniatura llamado semiconductores.
· Los circuitos integrados recuerdan los datos ya que almacenan la información como cargas eléctricas.
· Surge la multiprogramación.
· Las computadoras pueden llevar a cabos ambas tareas de procesamiento y análisis matemático.
· Emerge la industria del software.
· Se desarrollan las minicomputadoras DEC PDP-1.
· Otra vez las computadoras se tornan más pequeñas, más ligeras y más eficientes.
· Consumían menos electricidad por lo tanto generaban menos calor.

Cuarta Generación: 1971-1983.  Década del 70
      
Aparecieron los micro-procesadores, son circuitos de alta densidad y de velocidad impresionante. Las micro-computadoras basadas en estos circuitos son extremadamente pequeñas y más baratas ya que su uso se extiende al mercado industrial. Aquí nacen las computadoras personales PC que han adquiridos proporciones enormes y que han influido en la sociedad en general sobre la llamada “Revolución Informática”.

Características:
· Se desarrolló el micro-procesador. Intel 4004.
· Se colocan más circuitos dentro de un chip.
· Se creó el circuito de integración a gran escala. LSI
· Se creó el circuito de Integración a muy gran escala. VSLI
· Cada chip puede hacer diferentes tareas.
· Actualmente se encuentran integrados en un chip la unidad de control y la unidad aritmética/lógica. Y la memoria primaria es operado por otros chips.
· Se reemplazó la memoria de anillos magnéticos por la memoria de chip de silicio.
· Se desarrollaron micro computadoras. IBM PC-AT. Es decir las computadoras personales o PC.
· Se desarrollaron las super-computadoras. En un solo super-compudador miles de usuarios pueden estar conectados al mismo tiempo y la super-computadora maneja el trabajo de cada usuario por separado.
· En 1975 aparece la compañía Microsoft y en 1976 la compañía Aple.
· Se desarrollan sistemas de bases de datos.

Quinta generación: 1984-1989. Década del 80
     
En vista a la acelerada marcha de la micro-electrónica la sociedad industrial se ha dado a la tarea de poner también a esa altura el desarrollo del software y de los sistemas con que se manejan las computadoras. Surge la competencia internacional por el dominio del mercado de la computación. Se ha facilitado la comunicación entre el computador y el usuario de modo que éste lo entienda sencillamente.

Características:
·  Se desarrollan las computadoras personales o las PC.
·  Aparece el concepto de Inteligencia Artificial. Es el campo de estudio que trata de aplicar en las computadoras el mismo sistema de resolución lógico de problemas utilizados por los humanos.
·  Robótica. Es el arte y ciencia de la creación y empleo de robots.
·  Sistemas expertos. Es una aplicación de inteligencia artificial que usa una base de conocimientos de la experiencia humana para ayudar a la resolución de problemas.
·  Redes de comunicaciones. Son los canales de comunicaciones que interconectan terminales y computadoras.

Sexta Generación: 1989-Actualidad. Década del 90 hasta hoy.
     
     Era de las computadoras inteligentes basadas en redes neuronales artificiales o “Cerebros artificiales”. Está en auge el desarrollo de robots humanoides capaces de imitar las acciones de los humanos. Se pretende de este modo inmortalizar a los humanos guardando en ellos el subconsciente de una persona. Al principio se desarrollaron con la intensión de realizar tareas peligrosas para los humanos pero ahora lo que se trata es de imitar al humano.

Características:
· Uso de procesadores en paralelo, o sea la división de tareas en múltiples unidades de procesamiento operando simultáneamente.
· Incorporación de chip de procesadores especializados en las tareas di vídeo y sonido.
· Aparición de fibra óptica.
· Mayor capacidad y velocidad en transferencia de datos. 

Evolución de las unidades de almacenamiento.

Tarjeta perforada, Disquete 5.4 y 3.5, CD-DVD, Pendrive, Almacenamiento en la nube.

Variable

Es un espacio de la memoria del ordenador a la que asignamos un contenido que puede ser un valor numérico o alfanumérico. 

Reglas para determinar nombres de variables:

   §      Único nombre, puede tener mismo valor o contenido.
   §      Siempre comienza por una letra.
   §      No se admiten como nombres aquellos que contengan:
                Espacios en blanco
                Símbolos especiales (guiones, puntos, comas, comillas, etc.)
                No incluyen palabras claves o reservadas
   §      Debe reflejar el contenido o función que cumple
   §      Utilizar la notación camello
   §      No deben ser muy largas
   §      Solo existe dentro de un bloque.
   §      El valor o contenido de una variable puede ir cambiando durante la ejecución del programa.

Partes en la vida de una variable:
  Ø  Declarativas.
  Ø  Inicialización.
  Ø  Utilización.


Constante

Es un valor que no puede ser alterado durante la ejecución de un programa. Corresponde a una longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos.


Reglas para determinar nombres de constantes:

   §      Se escriben en mayúsculas.
   §      Comienzan con la palabra reservada “Const”.

Clases de constantes:
   §      Constantes literales (sin nombre)
   §      Constantes declaradas (con nombre)
   §      Constantes expresión (se les asigna una expresión)

Algoritmo

Es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.

Ejemplos de algoritmos:
      ·         Conjunto de instrucciones que deben seguirse para instalar una impresora.
      ·         Una receta para preparar un plato de comida.
      ·         El algoritmo de Euclides para la obtención del máximo común divisor de dos números.
      ·         Prepararse para ir a la escuela.
      ·         Conducir vehículos.
      ·         Ir de compras.

Diseño de un algoritmo

Pseudocódigo: El pseudocódigo es un lenguaje algorítmico informal que es una imitación de uno o más lenguajes de programación de alto nivel. Un pseudocódigo puede contener símbolos (+, -, *, /, =, etc.), términos (leer, imprimir, abrir, cerrar, etc) y estructuras de programación (si, si...sino, hacer...mientras, mientras...hacer, para...mientras).


La ventaja del pseudocódigo es que, su uso en la planificación de un programa, permite al programador concentrarse en la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje específico. 

Etapas de desarrollo de un algoritmo:
A los algoritmos que pueden ser ejecutados por un computador se denominan algoritmos computacionales. Todo algoritmo computacional puede dividirse en cuatro etapas: ƒ 
Declaración de variables. ƒ 
Entrada de datos. ƒ 
Proceso de cálculo. ƒ 
Salida de resultados. 

Diagrama de Flujo: es una representación gráfica de un proceso. Cada paso del proceso es representado por un símbolo diferente que contiene una breve descripción de la etapa de proceso. Los símbolos gráficos del flujo del proceso están unidos entre sí con flechas que indican la dirección de flujo del proceso.



Reglas para la realización de diagramas de flujos
1- Cada símbolo significa un tipo de operación.
2- Dentro de cada símbolo se escribe un comentario para indicar la operación o proceso específico que se ha de ejecutar.
3- Los diagramas de flujos se leen de arriba hacia abajo y de izquierda a derecha.
4- Una secuencia de operaciones se ejecuta hasta que un símbolo de terminal designa el final de la ejecución o un conector de bifurcación transfiere el control a otro punto del diagrama.

Herramientas Software con las que podemos hacer diagramas de flujos:
Día.
Visio de Microsoft.
Draw.io
Draw de LibreOffice
yEd
ArgoUML
Gliffy
Diagram Designer
Pencil
Google Drawing

Lenguajes de Programación

Es aquella estructura que, con una cierta base sintáctica y semántica, imparte distintas instrucciones a un programa de computadora.

Tipos de Lenguajes de Programación:

1- Intérpretes (programas que adaptan las instrucciones encontradas en otro lenguaje) (Interpretados).
2- Compiladores (aquellos programas que traducen de un lenguaje a otro) (Compilados).

De acuerdo a su nivel de abstracción, se habla de: lenguaje de máquina (son las cadenas binarias que pueden ser legibles de manera directa por la computadora), lenguaje de bajo nivel (el lenguaje de programación que se acerca al funcionamiento de una computadora), lenguaje de medio nivel (comparte características con los lenguajes de bajo nivel pero también con los más avanzados) o lenguaje de alto nivel (formado por elementos del lenguaje humano).

Programación:
La programación de computadoras es el proceso iterativo de escribir o editar código fuente.

Paradigmas:
Los programas de ordenador se pueden clasificar según el paradigma del lenguaje de programación utilizado para producirlos. Dos de los principales paradigmas son imperativos y declarativos.

Imperativo: (Cómo se hace algo).
Especifican un algoritmo utilizando declaraciones, expresiones e informes. Una declaración asocia un nombre de variable a un tipo de datos. Una declaración puede asignar una expresión a una variable o usar el valor de una variable para alterar las estructuras de control del programa. Ejemplo (Basic, C, C++, Java, PHP, C#, Perl, etc.)

Declarativo: (Describe o declara cómo es algo).
Especifican las propiedades que tienen o que deben cumplirse para la salida. No especifican detalles expresados en términos de flujo de control de la máquina de ejecución pero sí de las relaciones matemáticas entre los objetos declarados y sus propiedades. NO se basa en el cómo se hace algo, sino que describe (declara) cómo es algo. El programador debe concentrarse en la lógica del algoritmo, más que en el control de la secuencia. Ejemplo (SQL, Prolog, HTML, XML, etc.)

Programa
Un programa es la implementación de un algoritmo mediante un lenguaje de programación de forma que sea entendible por el computador.

Problema -----> Algoritmo ------> Programa

Un programa es una serie de órdenes o instrucciones que están basadas en un lenguaje de programación que pueden ser interpretados por un ordenador para la realización de alguna función o la resolución de algún problema.

Sistemas
En latín systema, un sistema es módulo ordenado de elementos que se encuentran interrelacionados y que interactúan entre sí. El concepto se utiliza tanto para definir a un conjunto de conceptos como a objetos reales dotados de organización.

Informática:
El término informática proviene del francés informatique, implementado por el ingeniero Philippe Dreyfus a comienzos de la década del ’60. La palabra es, a su vez, un acrónimo de information y automatique. Procesamiento automático de información mediante dispositivos electrónicos y sistemas computacionales.

Sistema de Información: el sistema de archivo de libros de una biblioteca y Sistema Informático:  computadoras que ayudan en la tarea de organizar la biblioteca.

Sistemas Informáticos:
Un sistema informático (SI) es un sistema que permite almacenar y procesar información; es el conjunto de partes interrelacionadas: hardware, software y personal informático.
Funciones de un sistema informático:

Un sistema informático sirve para:
Agilizar un sistema ya existente, por lo general un sistema antiguo, obsoleto o manual; empleando las herramientas de la informática para tal fin. En general, se debería poder reemplazar el sistema antiguo por el nuevo casi en su totalidad.
Crear un sistema nuevo, para resolver algún problema específico.
Reducir la cantidad de errores posibles en un sistema, ya que al ser informatizado, muchas de las tareas se hacen por computadora. Lo más importante de un sistema informatizado, es que reduce la cantidad de tareas "manuales", las cuales son muy proclives a errores.
En menor medida, un sistema informático puede aumentar la productividad de la empresa, reducir la cantidad de trabajadores u horas de trabajo necesarias, ahorro de dinero, etc. 

Ciclo de vida de un sistema:
El método de ciclo de vida para el desarrollo de sistemas es el conjunto de actividades que los analistas, diseñadores y usuarios realizan para desarrollar e implantar un sistema de información. El método del ciclo de vida para el desarrollo de sistemas consta de 6 fases:
1). Investigación Preliminar:
2). Determinación de los requerimientos del sistema: 
3). Diseño del sistema:
4). Desarrollo del software:
5). Prueba de sistemas:
6). Implantación y evaluación:

Fases para la elaboración de un programa o sistema informático

El desarrollo de un programa o de un conjunto de aplicaciones se basa en un concepto llamado ciclo de vida. Son una serie de etapas o fases que hay que seguir secuencialmente. 

Las fases o etapas son: 
• Análisis. 
• Diseño. 
• Codificación o construcción.
• Implantación o explotación. 
• Mantenimiento.

ANÁLISIS 
En esta fase se establece el producto a desarrollar, siendo necesario especificar los procesos y estructuras de datos que se van a emplear. Debe existir una gran comunicación entre el usuario y el analista para poder conocer todas las necesidades que precisa la aplicación. En el caso de falta de información por parte del usuario se puede recurrir al desarrollo de prototipos para saber con más precisión sus requerimientos. 

En el análisis estructurado se pueden emplear varias técnicas como: 
Diagramas de flujo de datos: Sirven para conocer el comportamiento del sistema mediante representaciones gráficas. 
Modelos de datos: Sirven para conocer las estructuras de datos y sus características. (Entidad relación y formas normales). 
Diccionario de datos: Sirven para describir todos los objetos utilizados en los gráficos, así como las estructuras de datos. 
Definición de los interfaces de usuario: Sirven para determinar la información de entrada y salida de datos. 

Al final de esta fase tenemos que tener claro las especificaciones de la aplicación. 

DISEÑO
En esta fase se alcanza con mayor precisión una solución óptima de la aplicación, teniendo en cuenta los recursos físicos del sistema (tipo de ordenador, periféricos, comunicaciones, etc…) y los recursos lógicos (sistema operativo, programas de utilidad, bases de datos, etc…) 

En el diseño estructurado se pueden definir estas etapas: 
Diseño externo: Se especifican los formatos de información de entrada y salida (pantalla y listados).
Diseño de datos: Establece las estructuras de datos de acuerdo con su soporte físico y lógico (estructuras en memoria, ficheros y hojas de datos). 
Diseño modular: Es una técnica de representación en la que se refleja de forma descendente la división de la aplicación en módulos. Está basado en diagramas de flujo de datos obtenidos en el análisis.
Diseño procedimental: Establece las especificaciones para cada módulo, escribiendo el algoritmo necesario que permita posteriormente una rápida codificación. Se emplean técnicas de programación estructurada, normalmente ordinogramas y pseudocódigo. 

Al final de esta etapa se obtiene el denominado cuaderno de carga. 

CODIFICACIÓN
Consiste en traducir los resultados obtenidos a un determinado lenguaje de programación, teniendo en cuenta las especificaciones obtenidas en el cuaderno de carga. Se deben de realizar las pruebas necesarias para comprobar la calidad y estabilidad del programa. 

Las pruebas se pueden clasificar en: 
Pruebas unitarias: Sirven para comprobar que cada módulo realice bien su tarea. 
Pruebas de interconexión: Sirven para comprobar en el programa el buen funcionamiento en conjunto de todos sus módulos. 
Pruebas de integración: Sirven para comprobar el funcionamiento correcto del conjunto de programas que forman la aplicación (el funcionamiento de todo el sistema). 

EXPLOTACIÓN
En esta fase se realiza la implantación de la aplicación en el sistema o sistemas físicos donde van a funcionar habitualmente y su puesta en marcha para comprobar el buen funcionamiento. 

Actividades a tener en cuenta o realizar: 
• Instalación del/los programa/s.
• Pruebas de aceptación al nuevo sistema. 
• Conversión de la información del antiguo sistema al nuevo (si hay una aplicación antigua) 
• Eliminación del sistema anterior.

Al final de esta fase se debe de completar la información al usuario respecto al nuevo sistema y su uso. Así como facilitarle toda la documentación necesaria para una correcta explotación del sistema (manual de ayuda, manual de uso, guía de la aplicación, etc.) 

MANTENIMIENTO
Esta es la fase que completa el ciclo de vida y en ella nos encargaremos de solventar los posibles errores o deficiencias de la aplicación. Existe la posibilidad de que ciertas aplicaciones necesiten reiniciar el ciclo de vida. 

Tipos de mantenimiento: 
Mantenimiento correctivo: Consiste en corregir errores no detectados en pruebas anteriores y que aparezcan con el uso normal de la aplicación. Este mantenimiento puede estar incluido en la garantía o mantenimiento de la aplicación. 
Mantenimiento adaptativo: Consiste en modificar el programa a causa de cambio de entorno gráfico y lógico en el que estén implantados. (Nuevas generaciones de ordenadores, nuevas versiones del sistema operativo, etc.)
Mantenimiento perfectivo: Consiste en una mejora sustancial de la aplicación al recibir por parte de los usuarios propuestas sobre nuevas posibilidades y modificaciones de las existentes. 



Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo de vida, debiendo proceder de nuevo al desarrollo de cada una de sus fases para obtener un nuevo producto.