Академический Документы
Профессиональный Документы
Культура Документы
Actualmente, este trmino ha perdido relevancia. La evolucin tecnolgica y el abaratamiento de los costes de produccin han llevado a que los tres tipos posean caractersticas de precio y rendimiento similares. Sea cual sea su tipo, todas las computadoras poseen los siguientes componentes: Dispositivos de entrada. Se encargan de capturar informacin de entrada a la computadora: teclado, ratn, micrfono, etc. Dispositivos de salida: Se encargan de la salida de informacin de la computadora: monitor, impresora, altavoces, etc.
Dispositivos de almacenamiento : Se encargan de almacenar los datos para su uso posterior: disco duro, disquete, CD-ROM, etc. Unidad de Procesamiento: Realiza las operaciones con los datos.
A los dispositivos de entrada, salida y almacenamiento se les denomina Elementos Perifricos . Por otro lado, la Unidad de Procesamiento junto a la Memoria Central, forman la Unidad Central de Proceso (CPU). La Memoria Central es donde se almacenan temporalmente los datos con los que la Unidad de Procesamiento trabaja en cada momento.
Entrada
Salida
1.2
Programas
Un programa es el conjunto ordenado de instrucciones que indican a la computadora las acciones que debe realizar para cumplir una tarea especfica. En este sentido, con un programa especificamos a la computadora qu tiene que hacer, en el orden en el que lo tiene que hacer y los datos que ha de usar para ello. Los programas estn escritos en un determinado lenguaje formal libre de ambigedades, de forma que la especificacin de lo que queremos hacer sea unvoca. Con respecto al nivel de abstraccin de estos lenguajes, los podemos clasificar en dos grandes grupos: Lenguajes Mquina: Como su propio nombre indica, se trata de los lenguajes "nativos" de la computadora, y por ello es capaz de procesarlos directamente. Como veremos ms adelante resultan sumamente costosos para el programador. Lenguajes de Alto Nivel (Pascal, C, C++, Java, etc.): Se trata de lenguajes mucho ms cercanos al lenguaje humano, por lo que son ms comprensibles y menos engorrosos de usar para el programador. Los programas construidos con estos lenguajes han de ser traducidos a Lenguaje Mquina mediante el uso de un compilador para que la computadora los pueda procesar.
2
2.1
Impulsos elctricos
Esta dualidad nos permite adoptar un sistema binario para representar la informacin. As, la presencia de seal se representa por el 1 y la ausencia por el 0. Esto nos lleva al concepto de bit, que es la unidad mnima de informacin. Un bit puede adoptar los valores 0 1. Un nico bit aporta poca cantidad de informacin. Es por ello que los bits se agrupan de 8 en 8 formando un byte . Un byte permite representar 28 = 256 combinaciones diferentes. A su vez, los bytes se agrupan formando palabras , que dependiendo de cada computadora pueden ser de 8, 16, 32 64 bytes.
2.2
Programacin de la Computadora
La computadora por s misma no realiza ninguna tarea. Necesita de un conjunto de programas que le digan lo que tiene que hacer. A este conjunto de programas se le denomina software (parte inmaterial o modificable). En contrapartida, a la parte visible y material (circuitera, perifricos) se le denomina hardware . No todas las computadoras poseen el mismo hardware, por tanto, tampoco el mismo lenguaje nativo. Desde este punto de vista, entendemos por: Instruccin: cadena de ceros y unos que permiten al procesador reconocer una operacin elemental y realizarla. Lenguaje de mquina : conjunto de instrucciones que puede ejecutar el procesador y las reglas para su codificacin. En este sentido, cada computadora posee un conjunto de instrucciones distinto. Por tanto, cada computadora nicamente podr trabajar con el software escrito en su lenguaje mquina.
2.3
En ocasiones es necesario volver atrs en alguna de las fases de la programacin. Por ejemplo, en la compilacin es posible que un error sintctico en la fase de programacin haga que al compilador no le sea posible traducir el cdigo a lenguaje mquina. Este error es fcilmente subsanable una vez conocido profundamente el lenguaje usado. Un problema ms difcil aparece cuando en la fase de ejecucin no aparecen los resultados esperados. El problema puede venir desde un error de programacin o anlisis hasta una ambigedad en el proceso de formalizacin del problema.
2.4
Lenguaje Mquina
Como hemos visto en apartados anteriores, el lenguaje mquina es el lenguaje nativo de cada computadora. Por tanto, dicho lenguaje est escrito en el sistema binario (ceros y unos). Aunque el objetivo de este curso es aprender el uso de lenguajes de alto nivel, veamos un ejemplo constructivo de cmo realizar un programa en este lenguaje para una computadora imaginaria: Cada instruccin de la computadora consta de una palabra de 8 bits, en la que en los 3 primeros bits se especifica el cdigo de operacin y en los 5 siguientes la direccin del operando en la memoria. Cada operacin, normalmente consta de dos operandos y un resultado y, como vemos, solamente podemos especificar uno. El segundo operando y el resultado de la operacin estn en un registro llamado acumulador. El juego de instrucciones de la computadora es el siguiente:
Descripcin Copia en el acumulador la palabra cuya direccin de memoria se indica. Suma el operando con el acumulador guardando el resultado en el acumulador. Resta el operando del acumulador y guarda el resultado en el acumulador. Si el contenido del acumulador es cero salta a la direccin que indica el operando. Si el contenido del acumulador es igual al operando iguala a cero el acumulador. Copia el acumulador la direccin de memoria que indica el operando. Detiene la ejecucin del programa sea cual sea el operando.
Para realizar un programa en lenguaje mquina necesitamos realizar tres etapas: Descomponer el problema en operaciones elementales Asignar un lugar en la memoria central para cada instruccin y dato Codificar cada instruccin como una serie de dgitos binarios segn la tabla de instrucciones, mquina del procesador.
El siguiente programa, en lenguaje mquina, resta un nmero de otro y el resultado lo almacena en una posicin de memoria:
Direccin 00000 00001 00010 00011 00100 00101 00110 00111 01000 Memoria Central Instruccin 00100101 01100110 11000100 11100000 00000000 00000111 00000010 00000000 00000000 Contenido Programa
Como podemos imaginar, la programacin en lenguaje mquina resulta excesivamente costosa e improductiva. Esto se debe a que la codificacin de un algoritmo a este lenguaje resulta ilegible, lo que hace que la depuracin de un error resulte altamente engorrosa.
2.5
Lenguaje ensamblador
Para salvar los problemas del lenguaje mquina surgi el lenguaje ensamblador. Este lenguaje, aun siendo dependiente de cada computadora, utiliza nemotcnicos para las operaciones y etiquetas para las direcciones de memoria con los datos. Esto hace que resulte mucho ms sencillo que el lenguaje mquina. De cada instruccin en ensamblador existe una traduccin directa al lenguaje mquina.
Veamos cmo quedara el ejemplo anterior en lenguaje ensamblador. El conjunto de instrucciones del lenguaje sera :
Cdigo 001 010 011 100 101 110 111 Abreviatura CAR ALM SUM RES BC BNC PAR Operacin Cargar Almacenar Sumar Restar Bifurcar si es cero Bifurcar si no es cero Parar
C: A: B:
Como vemos, al utilizar nemotcnicos para las operaciones no es necesario recordar el cdigo de cada una. Lo mismo ocurre con las etiquetas de las direcciones de memoria.
3
3.1
Por ejemplo, en el lenguaje COBOL, para realizar una resta de dos nmeros nicamente se realiza una instruccin: SUBSTRACT I MPUESTOS FROM SUELDO GIVING LIQUIDO En este ejemplo hemos calculado el lquido eliminando los impuestos del sueld o bruto. Otra forma de expresarlo sobre el mismo lenguaje sera: LIQUIDO = SUELDO-IMPUESTOS Como vemos, los lenguajes de alto nivel poseen numerosas ventajas, entre las que podemos destacar: Son ms productivos Ms fciles de aprender Autodocumentados. Las variables tienen un nombre que imponemos dependiendo del contexto. No es necesario conocer en profundidad la mquina Son independientes de mquina. Portabilidad
3.2
Sistemas Operativos
El sistema operativo es el vnculo entre el hardware y el software de un computador. Se constituye por una capa de software (conjunto de programas). El propsito del sistema operativo es el de facilitar el uso del hardware tanto al usuario como a los programas de usuario. Las funciones principales del sistema operativo son las siguientes: Comunicacin con los perifricos. Coordinacin de los procesamientos concurrentes. Administracin de la memoria. Supervisin, contabilidad y seguridad de los recursos. Administracin de programas y datos
FIRMWARE Microprogramacin
El firmware est entre el software y el hardware. Se trata de programas y datos propios de la mquina e insertados en hardware. Pese a ser parte de su hardware son modificables. Por ejemplo, la BIOS es parte del firmware de una computadora.
Aparte de sta, existen otras clasificaciones menos relevantes, como por ejemplo, con respecto al proceso de traduccin. En este sentido, hablaremos de: Lenguajes compilados : A travs de un programa denominado compilador, se traduce el programa completo a cdigo mquina una sola vez. A continuacin se ejecuta dicho cdigo independientemente del compila dor. Lenguajes interpretados : Cada instruccin se traduce y ejecuta de forma individual a travs de un programa denominado intrprete. Cada vez que ejecutemos el programa necesitaremos utilizar el intrprete.
A lo largo de este curso nos centraremos en el paradigma imperativo, y en concreto en el lenguaje C. Se trata de un lenguaje muy extendido, debido a su gran potencia y versatilidad. Es un lenguaje bsicamente compilado, aunque existen determinadas versiones del mismo interpretadas.