Está en la página 1de 12

1

INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN


1.1 CONCEPTOS BSICOS
Desde tiempos remotos el ser humano ha intentado facilitar su trabajo mediante el uso de herramientas. La Automtica, disciplina precursora de la Informtica, ha permitido relegar a operadores artificiales (mquinas) la realizacin de tareas fsicas o mentales difciles o penosas que antes realizaba el ser humano, pudiendo este concentrarse en tareas de mayor nivel intelectual, como puede ser la propia supervisin y manejo de dichas mquinas. El trmino Informtica nace de la yuxtaposicin de los trminos INFORmacin y autoMTICA y puede considerarse como la ciencia que se encarga del tratamiento automtico de la informacin. Una breve definicin de informtica que recoge elementos esenciales para su comprensin es la siguiente: Ciencia del tratamiento racional, mediante mquinas automticas, de la informacin De esta definicin se derivan dos hechos importantes. Por un lado, el tratamiento de la informacin es llevado a cabo mediante mquinas automticas: los ordenadores. Por otro lado, la racionalidad en dicho tratamiento introduce el componente humano como elemento indispensable de cualquier proceso informtico, ya que ser el ser humano quien determine el modo de tratar la informacin. La informtica es una disciplina acadmica relativamente joven. Baste con sealar que el trmino Computer Science no fue acuado hasta los aos 60 por el matemtico George Forsythe y que el primer Departamento de Informtica en una Universidad se form en el ao 1962. Sin embargo, la vertiginosa evolucin de las tecnologas de la informacin ha llevado a la informtica a estar presente en la actualidad en gran parte de los campos cientfico, econmico y social. La principal herramienta que emplea la informtica para llevar a cabo las tareas relacionadas anteriormente es el ordenador o computador. Su definicin nos aporta nuevas claves: Mquina automtica para el tratamiento de la informacin que ejecuta programas formados por una sucesin de operaciones aritmticas y lgicas

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

programa

ENTRADA datos

ORDENADOR

SALIDA resultado

Ilustracin 1: Tratamiento automtico de la informacin mediante el ordenador Es decir, para realizar el tratamiento de la informacin, el ordenador acepta unos datos denominados entrada (los datos), que mediante un programa transforma para proporcionar una salida (el resultado). Es precisamente en la determinacin del programa que el ordenador debe ejecutar donde el ser humano interviene de forma decisiva. La Ilustracin 1 esquematiza este proceso para el tratamiento automtico de la informacin mediante el ordenador. En general, la secuencia de operaciones necesarias para resolver un problema se denomina algoritmo, que puede considerarse como una frmula o receta para la resolucin de un problema. Cuando se pretende que el problema sea resuelto por un ordenador, dicho algoritmo debe expresarse de una forma adecuada: el programa. Un programa est formado por una serie de instrucciones que se corresponden con los distintos pasos del algoritmo que representa. Adems, las instrucciones del programa deben ajustarse a las normas que dicte el lenguaje de programacin utilizado. Finalmente, el conjunto de actividades que llevan al desarrollo de un programa informtico se denomina programacin. En la Ilustracin 2 se representan todos estos conceptos. Por ltimo, cabe distinguir dos conceptos importantes en el entorno de la informtica: hardware y software. Aunque la races hard (del ingls, rgido o inamovible) y soft (blando o flexible) de sendos trminos puedan considerarse contradictorias, en la informtica estos conceptos son complementarios, ya que el uno requiere del otro para poder ser utilizado. As, el hardware puede definirse como el conjunto de elementos fsicos que constituyen el ordenador (circuitos integrados, cableado, etc.), as como sus dispositivos perifricos (monitor, impresora, etc.), mientras que el software es el conjunto de programas que determinan el comportamiento del ordenador.

paridad BLOCK escribir ('Un n:') leer (n) n mod 2 = 0 if then else escribir ('Es par') escribir ('Es impar')

Lenguaje de programacin

program paridad(input,output); var n:integer; begin write('Introduzca un nmero entero: '); readln(n); if n mod 2 = 0 then writeln('El nmero es PAR') else writeln('El nmero es IMPAR') end.

ALGORITMO
Ilustracin 2: Relacin entre algoritmo y programa

PROGRAMA

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN


CPU Memoria
UC
Registros

ALU

BUS

Perifrico 1

Perifrico 2

Perifrico n


Unidades de Entrada/Salida

Ilustracin 3: Estructura bsica de un ordenador

1.2 ESTRUCTURA FUNCIONAL DE UN ORDENADOR


En 1834, el matemtico Charles Babbage dise la mquina analtica, considerada como el primer diseo de un ordenador de propsito general. Requera el uso de tarjetas perforadas para modificar las interconexiones entre los elementos que realizaban las operaciones cada vez que se deseaba programar la mquina. Esta mquina solo alcanz la etapa de diseo y no lleg a construirse nunca debido, entre otras causas, a la falta de apoyo financiero. En 1945, John von Neumann introduce el concepto de programa almacenado. En lugar de alterar fsicamente las conexiones para cada programa, la mquina de von Neumann se basaba en un mdulo electrnico que implementaba un conjunto de operaciones genricas seleccionables, y el almacenamiento en memoria, junto con los datos, de la secuencia de instrucciones a seleccionar (el programa). Esta solucin proporciona dos importantes ventajas frente a diseos anteriores: por un lado, el comportamiento de la mquina puede alterarse fcilmente con solo alterar el programa almacenado en memoria, y, por otro, el programa puede ejecutarse repetidas veces sin necesidad de ser introducido ms de una vez. En la Ilustracin 3 se esquematiza la estructura bsica del ordenador. En ella se distinguen tres componentes: la unidad central de proceso o CPU (Central Process Unit), la memoria y los dispositivos de E/S (perifricos). Todos ellos se encuentran conectados mediante un grupo de cables denominado bus. Para evitar conflictos, en cada instante solo uno de los componentes puede depositar informacin en el bus.

1.2.1 UNIDADES DE ENTRADA/SALIDA


Mediante las unidades de E/S, tambin denominadas perifricos, la CPU se comunica con el entorno exterior al ordenador. La Ilustracin 4 muestra algunos de los dispositivos perifricos ms habituales. Los perifricos se conectan al ordenador a travs de los denominados puertos de E/S. Mediante las unidades de entrada se introducen en el ordenador datos o instrucciones. Se encargan de transformar la informacin de entrada en seales elctricas asimilables por el ordenador. Ejemplos de unidades de entrada son el teclado, un lector de tarjetas, el ratn, el micrfono, etc.

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

Ilustracin 4: Unidades de E/S habituales en un ordenador Mediante las unidades de salida se obtienen los resultados de los programas ejecutados en el ordenador. Transforman seales elctricas procedentes del ordenador en informacin perceptible por el ser humano. Ejemplos son el monitor, la impresora, el plotter, los altavoces, etc.

1.2.2 MEMORIA
En ella se almacena la informacin de manera temporal o permanente. La memoria es compartida tanto por los datos como por las instrucciones.

MEMORIA PRINCIPAL
Consiste en varios millones de circuitos elementales biestables capaces cada uno de encontrarse en uno de dos posibles estados que representan los dgitos binarios 0 o 1. La unidad mnima de informacin que se transfiere a o desde la memoria principal recibe el nombre de palabra y est compuesta por un nmero fijo de bits que suele ser mltiplo del byte. Distinguimos dos valores asociados a cada elemento de la memoria: Su contenido, que ser el dato o la instruccin que almacene. Su direccin, que nos permite acceder a su posicin en memoria para leer o escribir su contenido. Destacamos dos tipos de memoria principal: Memoria ROM (Read Only Memory): En esta memoria slo puede leerse, no escribirse y es permanente, de modo que su contenido no se pierde al desconectar el ordenador. En un PC, un chip especial llamado BIOS almacena el programa de arranque del ordenador en una memoria de tipo ROM. Memoria RAM (Random Access Memory): En esta memoria puede tanto leerse como escribirse. Por contra, es voltil, es decir, pierde su contenido al desconectar el ordenador. El tiempo de acceso a cualquier elemento de memoria es independiente de la posicin que ocupe, lo que la hace ms rpida que la memoria ROM.

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

MEMORIA SECUNDARIA
De los dos tipos de memoria principal, slo la memoria RAM permite la operacin de escritura. Sin embargo, esta memoria es voltil, por lo que no es posible el almacenamiento permanente de informacin en ella a menos que el ordenador se mantenga encendido continuamente. La memoria secundaria cubre esta deficiencia, permitiendo al usuario el almacenamiento de informacin de forma permanente. Los dispositivos de memoria secundaria se caracterizan adems por su bajo coste en relacin con la memoria principal, lo que permite disponer de grandes capacidades de almacenamiento. Se trata de diferentes elementos tales como dispositivos magnticos (disquetes, discos duros, discos ZIP, cintas), dispositivos pticos (CD-ROMs, CD-RWs, DVDs, etc.) o memorias flash. El inconveniente de los dispositivos de memoria secundaria es su baja velocidad de acceso. Por ello, la informacin deber llevarse desde memoria secundaria a memoria principal (RAM) antes de ser procesada por la CPU.

1.2.3 UNIDAD CENTRAL DE PROCESO (CPU)


La CPU es la unidad encargada de ejecutar las instrucciones de los programas. Su funcionamiento puede describirse como la repeticin continua de los pasos de: captacin de una instruccin, ejecucin de la misma y devolucin del resultado. Distinguimos tres unidades fundamentales: Archivo de registros: Es un conjunto de celdas de memoria de acceso muy rpido que acta como almacn temporal de informacin, aumentando el rendimiento de la CPU. El archivo de registros evita el acceso continuo a la memoria principal (ms lento) para leer o escribir informacin. Unidad aritmtico-lgica: Conocida frecuentemente por su acrnimo en ingls, ALU, es el motor de clculo de la CPU. Se encarga de realizar esencialmente operaciones de tipo aritmtico (sumas, restas, etc.) y de tipo lgico (comparaciones, operaciones lgicas and, or o not, etc.), empleando el archivo de registros para tomar de ellos los operandos y depositar en ellos el resultado. El rendimiento de la CPU estar condicionado en gran medida por el conjunto de operaciones que implemente la ALU. Unidad de control: Acta como director de orquesta dentro de la CPU, coordinando el funcionamiento interno de esta. Capta cada instruccin desde la memoria, la descodifica determinando los pasos (microinstrucciones) que la componen y enva seales de control al resto de componentes para ejecutar dichas microinstrucciones.

1.3 METODOLOGA DE LA PROGRAMACIN


Un programador es alguien que resuelve problemas. Para llegar a ser un programador eficaz es necesario primero aprender a resolver problemas de un modo riguroso y sistemtico, lo que se denomina metodologa de la programacin. Aunque un problema puede resolverse normalmente de muchas formas distintas y se requiere cierta dosis de prctica e incluso de habilidad para obtener programas eficientes y de resolucin clara, existen pautas que guan al programador de forma genrica para alcanzar una buena solucin. En esta seccin se estudiarn dichas pautas. 5

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

La tarea de resolucin de problemas se divide en tres fases: Anlisis del problema: consiste en definir y comprender el problema en toda su extensin, analizando todo aquello que es relevante para su resolucin. Diseo del algoritmo: determinar y representar genricamente el mtodo de resolucin del problema (algoritmo). Resolucin del problema mediante el ordenador: traducir el algoritmo a un lenguaje de programacin y comprobar que se ha hecho correctamente.

1.3.1 ANLISIS DEL PROBLEMA


La fase de anlisis del problema tiene como objetivo conseguir que el programador alcance a comprender el problema en toda su extensin. Esto requiere que el problema est bien definido, es decir, que se disponga de una descripcin del problema suficientemente detallada. A menudo, es tarea del propio programador desarrollar este enunciado y completarlo durante el anlisis mediante la celebracin de entrevistas con personal experto en el rea de aplicacin del problema (directivos de la empresa, personal especializado, etc.). La correcta definicin del problema debe ir acompaada de la identificacin y descripcin de los datos de entrada y de salida del problema. Es decir, el programador debe determinar de qu datos relevantes para la resolucin del problema se dispone (entrada) y qu informacin debe proporcionarse como resolucin del problema (salida). Un dato de entrada puede definirse como un dato del que depende la salida del problema y que, a su vez, no depende de ningn otro (no puede calcularse a partir de otros datos de entrada). Para cada dato de entrada, deber especificarse lo siguiente: Identificador del dato, que permita referenciarlo durante la fase de anlisis. Descripcin del dato: en qu consiste el dato? Procedencia: Un dato de entrada puede solicitarse desde un dispositivo de entrada, generarse aleatoriamente o integrarse directamente en el propio programa. La primera alternativa deber emplearse cuando se trate de informacin de entrada que vara habitualmente de una resolucin a otra del problema y se indicar como procedencia el dispositivo de entrada receptor (teclado, etc.). La segunda alternativa se corresponde con programas donde alguno de los datos est sujeto al azar (por ejemplo, el valor de la tirada de un dado en un juego de azar). En tal caso, se indicar como procedencia aleatorio. La tercera alternativa es ms apropiada cuando se trate de datos de entrada con valores que habitualmente no varan, evitando as que el usuario tenga que introducir dichos valores idnticos en cada resolucin del problema. En este caso, se indicar como procedencia dato fijo. Valor (slo para datos fijos): Cuando el dato se integre directamente en el programa (dato fijo), se indicar el valor asociado. Restricciones (slo para datos procedentes de un dispositivo de entrada o aleatorios): debern indicarse las restricciones impuestas a los valores que el dato pueda tomar para que se considere vlido. El cumplimiento de estas restricciones deber posteriormente ser exigido por el programa mediante el correspondiente mecanismo de control de 6

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

entrada (en el caso de datos procedentes de teclado) o durante la generacin de los nmeros aleatorios (en el caso de datos aleatorios). Un dato de salida es aqul que proporciona toda o parte de la solucin del problema y deber poder obtenerse a partir de los datos de entrada especificados en el apartado anterior. Para cada dato de salida se proporcionar: Identificador del dato, que permita referenciarlo durante la fase de anlisis. Descripcin del dato: en qu consiste el dato? Destino: deber indicarse el dispositivo de salida hacia el que se dirigir el dato (monitor, impresora, etc.). Una ltima seccin de la fase de anlisis estar reservada a la inclusin de aquellos comentarios que el programador considere oportunos para clarificar an ms el problema a resolver.
EJEMPLO 1.1. Se desea realizar un programa que determine el precio de una llamada telefnica entre telfonos fijos. El precio de la llamada lo constituye el coste por establecimiento de llamada (0.10 euros) y un coste por paso (0.03 euros/paso). La duracin de un paso depende del tramo horario en el que se efecte la llamada, segn la siguiente tabla: Tramo 1 60 seg. Tramo 2 20 seg. Tramo 3 40 seg.

El usuario indicar la duracin de la llamada y el tramo horario en el que se efectu. ANLISIS: a) Datos de entrada: EST_LLAM=0.10. Coste del establecimiento de llamada (en euros). Dato fijo. PASO=0.03. Coste de un paso (en euros). Dato fijo. DUR1=60. Duracin de un paso en el primer tramo horario (en segundos). Dato fijo. DUR2=20. Duracin de un paso en el segundo tramo horario (en segundos). Dato fijo. DUR3=40. Duracin de un paso en el tercer tramo horario (en segundos). Dato fijo. duracion: Duracin de la llamada (valor entero, en segundos). Teclado. (duracion > 0). tramo: Tramo en el que se efectu la llamada (valor entero). Teclado. (tramo {1,2,3}). b) Datos de salida: precio: Coste de la llamada (en euros). Monitor. c) Comentarios: Las fracciones de pasos se computarn como pasos completos. Emplearemos una variable intermedia para calcular el nmero de pasos.

1.3.2 DISEO DEL ALGORITMO


Como ya sabemos, el algoritmo es la representacin de los pasos necesarios para resolver un problema. Estos pasos sern despus trasladados a instrucciones que el ordenador podr ejecutar. Aprender a disear algoritmos correctamente se considera esencial en la prctica de la programacin, ms que el conocimiento especfico del lenguaje de programacin ms novedoso. El 7

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

algoritmo determinar el mtodo de resolucin del problema, y si dicho mtodo se ha desarrollado adecuadamente su traduccin a un lenguaje de programacin u otro es una cuestin menor. Igualmente, el conocimiento de las particularidades internas de un tipo de ordenador u otro tampoco ser crucial para el diseo del algoritmo. Esto se debe a que el algoritmo es independiente tanto del lenguaje de programacin que vaya a emplearse como del ordenador donde finalmente se ejecute el programa que lo represente: de ah su gran importancia. Para la descripcin de un algoritmo pueden utilizarse representaciones grficas (diagramas) o textuales (pseudocdigo, lenguaje natural). Adems, el diseo de algoritmos requiere conocer de qu herramientas se dispone para describir los pasos de resolucin de un problema y cmo debemos utilizarlas. Esto depender de la metodologa de programacin que vayamos a emplear. En este curso nos centraremos en la metodologa de la programacin denominada programacin estructurada y emplearemos diagramas estructurados para la representacin de los algoritmos, los cuales sern estudiados en el siguiente captulo. La fase de diseo se descompone en dos subfases: a) Parte declarativa: en ella se incluir la definicin de constantes y la declaracin de variables que se estudiarn en el Captulo 2, en este orden. b) Representacin algortmica: descripcin del algoritmo empleando alguno de los mtodos de representacin mencionados.
EJEMPLO 1.2. La fase de diseo del problema planteado en el Ejemplo 1, empleando pseudocdigo para la representacin algortmica, sera la siguiente: a) Parte declarativa: CONSTANTES EST_LLAM=0.10 PASO=0.03 DUR1=60 DUR2=20 DUR3=40 VARIABLES duracion,tramo,numPasos: entero precio: real b) Representacin algortmica:
inicio leer desde teclado duracion mientras duracion 0 hacer escribir mensaje de error leer desde teclado duracion leer desde teclado tramo mientras tramo < 1 o tramo > 3 hacer escribir mensaje de error leer desde teclado tramo si tramo=1 entonces almacenar en numPasos el valor techo(duracion/DUR1) sino (es tramo=1) si tramo=2 entonces almacenar en numPasos el valor techo(duracion/DUR2) sino (es tramo=2) almacenar en numPasos el valor techo(duracion/DUR3) almacenar en precio el valor EST_LLAM+numPasosPASO escribir precio fin

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

1.3.3 RESOLUCIN DEL PROBLEMA MEDIANTE EL ORDENADOR


Tras el diseo del algoritmo, este debe traducirse a las instrucciones de un lenguaje de programacin para que pueda ser resuelto por el ordenador. Esta fase se divide en tres subfases: a) Codificacin o implementacin del algoritmo: es la conversin de los pasos del algoritmo a las instrucciones equivalentes en un lenguaje de programacin. El algoritmo escrito en un lenguaje de programacin se denomina programa, cdigo fuente o, simplemente, cdigo. b) Verificacin del programa: consiste en la comprobacin de que la codificacin del algoritmo se ha realizado correctamente, empleando adecuadamente de las reglas gramaticales y sintcticas del lenguaje utilizado. c) Validacin del programa: consiste en la comprobacin de que los resultados proporcionados por el programa se corresponden con los establecidos en el anlisis del problema. Veremos un ejemplo de esta ltima fase en el siguiente captulo, una vez que se conozcan las instrucciones en lenguaje C.

1.4 LOS LENGUAJES DE PROGRAMACIN


Para el desarrollo de un programa es necesario conocer al menos un lenguaje de programacin. Esta seccin se centra en estos, estableciendo una clasificacin atendiendo al grado de abstraccin del lenguaje y describiendo ciertas herramientas de programacin necesarias para que el ordenador pueda realizar la tarea descrita en el lenguaje de programacin empleado.

1.4.1 NIVELES DE ABSTRACCIN


El nivel de abstraccin de un lenguaje se refiere a en qu medida la sintaxis y uso de ese lenguaje se encuentra cercano al modo de trabajar de la mquina o, por el contrario, al modo de pensar y hablar del ser humano. La clasificacin de los lenguajes atendiendo al nivel de abstraccin est relacionada con la evolucin de los lenguajes de programacin, ya que el grado de abstraccin de los lenguajes ha ido aumentando con el paso de los aos. A grandes rasgos, podemos distinguir tres grupos: lenguajes mquina, lenguajes de bajo nivel y lenguajes de alto nivel. LENGUAJES MQUINA El ordenador representa internamente la informacin que maneja utilizando cdigo binario. En los primeros tiempos, los programadores tenan que realizar la tediosa tarea de traducir sus algoritmos directamente a las secuencias binarias que representaban las instrucciones y los datos contenidos en el programa. Estas instrucciones, conocidas como instrucciones de cdigo mquina, constituyen el lenguaje mquina de un ordenador. La ventaja de programar en lenguaje mquina es que el cdigo generado puede ser muy eficiente, es decir, emplear poca memoria y ser muy rpido, y, por tanto, utilizar la mnima cantidad de recursos. Sin embargo, la importancia de sus inconvenientes ha acabado con el uso de este tipo de lenguajes en la actualidad. Uno de estos inconvenientes es la dependencia respecto al hardware del ordenador, ya que, el lenguaje mquina de una familia de microprocesadores (por ejemplo, Intel Pentium) no tiene porqu ser compatible con el de otra. Otro inconveniente es la dificultad en la codificacin. Por ejemplo, la operacin aritmtica 43+5 podra representarse esquemticamente 9

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

en un hipottico lenguaje mquina como multiplicacin 0110 4 0100 3 0011 direccin 0001

suma 5 direccin 0101 0101 0001 donde puede observarse que tanto los cdigos de operacin como las direcciones de memoria y los valores se representan mediante cdigo binario. Obsrvese que la equivalencia real en instrucciones mquina sera exclusivamente la cadena binaria 0110010000110001010101010001, difcilmente comprensible de forma directa por el programador. LENGUAJES DE BAJO NIVEL (ENSAMBLADORES) Si bien en los primeros tiempos el programador utilizaba lenguaje mquina para describir sus programas, pronto se extendi la costumbre de emplear, durante el diseo de los algoritmos, mnemotcnicos para representar sus pasos (es decir, abreviaturas en ingls de las instrucciones de cdigo mquina a las que equivalen). Esto permita a los programadores abstraerse de las particularidades de la representacin interna de las instrucciones durante el desarrollo del mtodo de resolucin del problema y propici el siguiente paso en la evolucin de los lenguajes de programacin, los lenguajes ensambladores, donde las instrucciones se expresaban utilizando un lenguaje simblico (no binario) que aument la legibilidad de los programas. Sin embargo, estos lenguajes mantienen su dependencia de la mquina, siendo por tanto cada lenguaje ensamblador especfico de una familia de microprocesadores. Adems, cada instruccin en lenguaje ensamblador equivale a una nica instruccin en cdigo mquina. Por ejemplo, la operacin aritmtica anterior tendra en un hipottico lenguaje ensamblador un aspecto parecido al siguiente: MUL 4,3,A SUM 5,A Debido a lo todava complejo y poco intuitivo de su programacin, actualmente los ensambladores se utilizan en reas muy reducidas donde las exigencias en velocidad de ejecucin o aprovechamiento de recursos son elevadas. LENGUAJES DE ALTO NIVEL Aunque la introduccin de los lenguajes ensambladores supuso un importante paso hacia adelante en la evolucin de los lenguajes de programacin, an existan inconvenientes importantes que salvar, tales como la dependencia respecto al hardware y la obligacin de describir los mtodos de resolucin como una secuencia de los pequeos pasos que podan realizarse en lenguaje mquina. Se advirti la necesidad de proporcionar instrucciones de ms alto nivel que permitieran describir acciones de mayor envergadura, las cuales equivaldran luego a un conjunto de instrucciones en cdigo mquina. De esta idea surgieron los lenguajes de alto nivel, ms cercanos al modo de expresarse del ser humano y, por tanto, ms fciles de aprender y de utilizar. Igualmente, debido a su fcil comprensin, los programas escritos en un lenguaje de alto nivel son ms fciles de actualizar y corregir. El lenguaje C, que se trata en este curso, es un lenguaje de alto nivel. El ejemplo anterior se expresara en C con una nica instruccin: A = 43+5 10

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

fcilmente entendible. Obsrvese que esta nica instruccin en un lenguaje de alto nivel equivale a varias instrucciones en el cdigo mquina y el ensamblador del ejemplo anterior. Adems de su mayor legibilidad, otra de las caractersticas esenciales de los lenguajes de alto nivel es que son transportables. Esto significa que, a diferencia de los lenguajes de ms bajo nivel, el mismo programa puede ser vlido con pocos o ningn cambio en distintas plataformas, esto es, en ordenadores con distintos microprocesadores. Por tanto, los lenguajes de alto nivel son independientes del hardware. Sus inconvenientes se corresponden con las ventajas de los lenguajes mquina y ensambladores, ya que tanto en ocupacin de memoria como en tiempo de ejecucin los lenguajes de alto nivel presentan un consumo mayor que aqullos.

1.4.2 TRADUCTORES DE LENGUAJES


El ordenador slo entiende directamente programas escritos en lenguaje mquina. Cuando la codificacin se realiza utilizando un lenguaje simblico (ensambladores y lenguajes de alto nivel), ser necesario traducir dicho programa al cdigo correspondiente en lenguaje mquina. Como puede suponerse, el programador no tiene que hacer esto por s mismo, sino que existen programas que realizan dicha traduccin de forma automtica. Al programa escrito en lenguaje simblico se le llama programa o cdigo fuente y al resultado de la traduccin programa o cdigo objeto: Simblico Mquina TRADUCTOR Programa Programa fuente objeto Distinguimos tres tipos de traductores: ensambladores, compiladores e intrpretes. Los ensambladores traducen programas escritos en ensamblador a cdigo mquina, mientras que los compiladores e intrpretes traducen programas escritos en un lenguaje de alto nivel. Por otra parte, los intrpretes traducen el programa instruccin a instruccin, de forma que hasta que no terminan de ejecutar la ltima instruccin traducida no proceden a traducir la siguiente, por lo que no generan programa objeto en disco. Por contra, tanto compiladores como ensambladores traducen primero todo el programa fuente, generando un programa objeto en disco, y una vez terminada la traduccin, el programa podr ejecutarse. Las diferencias entre estos tres tipos de traductores estn esquematizadas en la Tabla 1. Ahora bien, cuando se desarrolla un programa, este puede hacer referencia a tareas que no se encuentren explcitamente en su cdigo, sino que estn situadas en la llamada biblioteca de funciones, la cual suele acompaar al traductor del lenguaje y lo hace ms verstil. Dichas tareas son frecuentes y comunes a muchos programas, tales como operaciones grficas (borrar la pantalla,
Lenguaje fuente L. ensamblador L. de alto nivel Traductor Ensambladores Compiladores Intrpretes Mtodo Todo el programa (programa objeto) Instruccin a instruccin

Tabla 1: Diferencias entre los tres tipos de traductores

11

1. INTRODUCCIN A LA INFORMTICA Y LA PROGRAMACIN

bibliotecas

programa fuente principal

ENSAMBLADOR O COMPILADOR

programa objeto

ENLAZADOR

programa ejecutable

programas fuentes secundarios

ENSAMBLADOR O COMPILADOR

otros mdulos

Ilustracin 5: Esquema de funcionamiento de compiladores y ensambladores dibujar un crculo, cambiar el color del texto), matemticas (logartmicas, trigonomtricas), etc. Por otro lado, un programa puede hacer referencia a otros programas desarrollados por el propio programador que resuelven tareas no incluidas en la biblioteca de funciones (por ejemplo, C no incorpora una funcin para calcular el factorial de un nmero). Por ello, despus de traducir el programa principal mediante un ensamblador o un compilador, ser necesario unir el programa objeto generado con el resto de mdulos donde existan tareas a las que se haga referencia desde dicho programa principal. Para conseguir el programa ejecutable resultado de esta operacin de unin se debe utilizar una herramienta denominada montador, enlazador o linkador. De este modo, cuando estamos empleando un compilador o un ensamblador, el esquema de funcionamiento es el que se muestra en la Ilustracin 5.

12

También podría gustarte