Está en la página 1de 22

Lenguaje de programacin

Con la llegada de las computadoras desaparecen las secuencias de posiciones de llaves mecnicas que deban desconectarse para obtener una accin determinada, una clave conectada era un 1 y una llave desconectada era un 0. Una sucesin de llaves en cualquiera de sus dos posiciones de ina una secuencia de ceros y unos !por ejemplo" 0100011010011101...# que vena a representar una instruccin o un conjunto de instrucciones !programa# para el ordenador !o computador# en el que se estaba trabajando. $ esta primera orma de especi icar programas para una computadora se la denomina lenguaje mquina o cdigo mquina. La necesidad de recordar secuencias de programacin para las acciones usuales llev a denominarlas con nombres ciles de memori%ar y asociar" $&& !sumar#, 'U( !restar#, )UL !multiplicar#, C$LL !ejecutar subrutina#, etc. $ esta secuencia de posiciones se le denomin *instrucciones*, y a este conjunto de instrucciones se le llam lenguaje ensamblador. +osteriormente aparecieron di erentes lenguajes de programacin, los cuales reciben su denominacin porque tienen una estructura sintctica similar a los lenguajes escritos por los ,umanos.

Concepto
Un lenguaje de programacin es un lenguaje que puede ser utili%ado para controlar el comportamiento de una mquina, particularmente una computadora. Consiste en un conjunto de smbolos y reglas sintcticas y semnticas que de inen su estructura y el signi icado de sus elementos y e-presiones. $unque muc,as veces se usa lenguaje de programacin y lenguaje in ormtico como si uesen sinnimos, no tiene por qu. ser as, ya que los lenguajes in ormticos engloban a los lenguajes de programacin y a otros ms, como, por ejemplo, el /0)L !lenguaje para el marcado de pginas 1eb#. Un lenguaje de programacin permite a uno o ms programadores especi icar de manera precisa" sobre qu. datos una computadora debe operar, cmo deben ser estos almacenados, transmitidos y qu. acciones debe tomar bajo una variada gama de circunstancias. 0odo esto, a trav.s de un lenguaje que intenta estar relativamente pr-imo al lenguaje ,umano o natural, tal como sucede con el lenguaje L.-ico. Una caracterstica relevante de los lenguajes de programacin es precisamente que ms de un programador puedan tener un conjunto com2n de instrucciones que puedan ser comprendidas entre ellos para reali%ar la construccin del programa de orma colaborativa. Los procesadores usados en las computadoras son capaces de entender y actuar seg2n lo indican programas escritos en un lenguaje ijo llamado lenguaje de mquina. 0odo programa escrito en otro lenguaje puede ser ejecutado de dos maneras"

)ediante un programa que va adaptando las instrucciones con orme son encontradas. $ este proceso se lo llama interpretar y a los programas que lo ,acen se los conoce como int.rpretes. 0raduciendo este programa al programa equivalente escrito en lenguaje de mquina. $ ese proceso se lo llama compilar y al traductor se lo conoce como compilador.

Clasi icacin de los lenguajes de programacin

Los lenguajes de programacin se determinan seg2n el nivel de abstraccin, 'eg2n la orma de ejecucin y 'eg2n el paradigma de programacin que poseen cada uno de ellos y esos pueden ser"

Segn su nivel de abstraccin


Lenguajes de bajo nivel
Los lenguajes de bajo nivel son lenguajes de programacin que se acercan al uncionamiento de una computadora. 3l lenguaje de ms bajo nivel es, por e-celencia, el cdigo mquina. $ .ste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de orma directa.

Lenguajes de medio nivel


/ay lenguajes de programacin que son considerados por algunos e-pertos como lenguajes de medio nivel !como es el caso del lenguaje C# al tener ciertas caractersticas que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo ,acen un lenguaje ms cercano al ,umano y, por tanto, de alto nivel.

Lenguajes de alto nivel


Los lenguajes de alto nivel son normalmente ciles de aprender porque estn ormados por elementos de lenguajes naturales, como el ingl.s. 3n ($'4C, el lenguaje de alto nivel ms conocido, los comandos como *45 C670$&68 9 10 0/37 '06+* pueden utili%arse para pedir a la computadora que pare si C670$&68 es igual a 10. +or desgracia para muc,as personas esta orma de trabajar es un poco rustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo ,acen en realidad de una orma rgida y sistemtica.

Segn la forma de ejecucin


Lenguajes compilados:
7aturalmente, un programa que se escribe en un lenguaje de alto nivel tambi.n tiene que traducirse a un cdigo que pueda utili%ar la mquina. Los programas traductores que pueden reali%ar esta operacin se llaman compiladores. ;stos, como los programas ensambladores avan%ados, pueden generar muc,as lneas de cdigo de mquina por cada proposicin del programa uente. 'e requiere una corrida de compilacin antes de procesar los datos de un problema. Los compiladores son aquellos cuya uncin es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda !lenguaje mquina con cdigo binario#. $l usar un lenguaje compilado !como lo son los lenguajes del popular <isual 'tudio de )icroso t#, el programa desarrollado nunca se ejecuta mientras ,aya errores, sino ,asta que luego de ,aber compilado el programa, ya no aparecen errores en el cdigo

Lenguajes interpretados
'e puede tambi.n utili%ar una alternativa di erente de los compiladores para traducir lenguajes de alto nivel. 3n ve% de traducir el programa uente y grabar en orma permanente el cdigo objeto que se produce durante la corrida de compilacin para utili%arlo en una corrida de produccin utura, el programador slo carga el programa uente en la computadora junto con los datos que se van a procesar. $ continuacin, un programa int.rprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la mquina, convierte cada proposicin del programa uente en lenguaje de mquina con orme vaya siendo necesario durante el proceso de los datos. 7o se graba el cdigo objeto para utili%arlo posteriormente.

La siguiente ve% que se utilice una instruccin, se le debe interpretar otra ve% y traducir a lenguaje mquina. +or ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser interpretado cada ve% que se ejecute el ciclo, lo cual ,ace que el programa sea ms lento en tiempo de ejecucin !porque se va revisando el cdigo en tiempo de ejecucin# pero ms rpido en tiempo de dise=o !porque no se tiene que estar compilando a cada momento el cdigo completo#. 3l int.rprete elimina la necesidad de reali%ar una corrida de compilacin despu.s de cada modi icacin del programa cuando se quiere agregar unciones o corregir errores> pero es obvio que un programa objeto compilado con antelacin deber ejecutarse con muc,a mayor rapide% que uno que se debe interpretar a cada paso durante una corrida de produccin por ejemplo ?0@ABCDED?EF1?01@BD

Segn el paradigma de programacin


Un paradigma de programacin representa un en oque particular o iloso a para la construccin del so t1are. 7o es mejor uno que otro sino que cada uno tiene ventajas y desventajas. 0ambi.n ,ay situaciones donde un paradigma resulta ms apropiado que otro. $tendiendo al paradigma de programacin, se pueden clasi icar los lenguajes en" Lenguajes imperativos (($'4C, C, CGG, Hava, etc.# Lenguajes Funcionales Puros: (/asIell, Miranda) Hbridos: (Lisp, 'c,emen 6caml, )L, etc# Lenguajes Logicos (+rolog# Lenguajes orientados a objetos ($da, CGG , <isual 5o-+ro, Hava, etc.#

+rogramacin
'e conoce como programacin de computadores a la implementacin de un algoritmo en un determinado lenguaje de programacin, con ormando un programa. )ientras que un algoritmo se ejecuta en una mquina abstracta que no tiene limitaciones de memoria o tiempo, un programa se ejecuta en una mquina real, que s tiene esas limitaciones. 3l lenguaje de programacin puede ser de alto nivel, medio nivel o bajo nivel, en uncin del grado de abstraccin.

+rogramas y algoritmos
Un algoritmo es una secuencia no ambigua, inita y ordenada de instrucciones que ,an de seguirse para resolver un problema. Un programa normalmente implementa !traduce a un lenguaje de programacin concreto# un algoritmo. 7tese que es la secuencia de instrucciones en s la que debe ser inita, no el n2mero de pasos reali%ados como la ejecucin de ellas. Los programas suelen subdividirse en partes menores !mdulos#, de modo que la complejidad algortmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. 'eg2n 7iIlaus Jirt, un programa est ormado por algoritmos y estructura de datos.

'e ,an propuesto diversas t.cnicas de programacin, cuyo objetivo es mejorar tanto el proceso de creacin de so t1are como su mantenimiento. 3ntre ellas se pueden mencionar las programaciones lineal, estructurada, modular y orientada a objetos.

Compilacin
3l programa escrito en un lenguaje de programacin !comprensible por el ser ,umano, aunque se suelen corresponder con lenguajes ormales descritos por gramticas independientes del conte-to# no es inmediatamente ejecutado en una computadora. La opcin ms com2n es compilar el programa, aunque tambi.n puede ser ejecutado mediante un int.rprete in ormtico 3l cdigo uente del programa se debe someter a un proceso de trans ormacin para convertirse en lenguaje mquina, interpretable por el procesador. $ este proceso se le llama compilacin. 7ormalmente la creacin de un programa ejecutable !un tpico.e-e para )icroso t Jindo1s# conlleva dos pasos. 3l primer paso se llama compilacin !propiamente dic,o# y traduce el cdigo uente escrito en un lenguaje de programacin almacenado en un arc,ivo a cdigo en bajo nivel, !normalmente en cdigo objeto no directamente al lenguaje mquina#. 3l segundo paso se llama enla%ado !del ingl.s link o linker# se junta el cdigo de bajo nivel generado de todos los ic,eros que se ,an mandado compilar y se a=ade el cdigo de las unciones que ,ay en las bibliotecas del compilador para que el ejecutable pueda comunicarse con el sistemas operativo y traduce el cdigo objeto a cdigo mquina. 3stos dos pasos se pueden mandar ,acer por separado, almacenando el resultado de la ase de compilacin en arc,ivos objetos !un tpico.obj para )icroso t Jindo1s,.o para Uni-#, para enla%arlos posteriormente, o crear directamente el ejecutable con lo que la ase de compilacin se almacena slo temporalmente. Un programa podra tener partes escritas en varios lenguajes !generalmente C, CGG y $sm#, que se podran compilar de orma independiente y enla%ar juntas para ormar un 2nico ejecutable.

+rogramacin e ingeniera del so t1are


3-iste una tendencia a identi icar el proceso de creacin de un programa in ormtico con la programacin, que es cierta cuando se trata de programas peque=os para uso personal, y que dista de la realidad cuando se trata de grandes proyectos. 3l proceso de creacin de so t1are desde el punto de vista de la 4ngeniera tiene los siguientes pasos" 1. 8econocer la necesidad de un programa para solucionar un problema identi icar la posibilidad de automati%acin de una tarea. ?. 8ecoger los requisitos del programa. &ebe quedar claro qu. es lo que debe ,acer el programa y para qu. se necesita.

F. 8eali%ar el anlisis de los requisitos del programa. &ebe quedar claro cmo debe reali%ar el programa las cosas que debe ,acer. Las pruebas que comprueben la valide% del programa se pueden especi icar en esta ase. D. &ise=ar la arquitectura del programa. 'e debe descomponer el programa en partes de complejidad abordable. @. 4mplementar el programa. Consiste en reali%ar un dise=o detallado, especi icando completamente todo el uncionamiento del programa, tras lo cual la codi icacin debera resultar inmediata. E. 4mplantar !instalar# el programa. Consiste en poner el programa en uncionamiento junto con los componentes que pueda necesitar !bases de datos, redes de comunicaciones, etc.# La 4ngeniera del 'o t1are se centra en los pasos de plani icacin y dise=o del programa, mientras que antiguamente !programacin artesanal# la reali%acin de un programa consista 2nicamente en escribir el cdigo.

6bjetivos de la programacin
La programacin de ordenadores debe perseguir tres objetivos undamentales"

Correccin" un programa es correcto si ,ace lo que debe ,acer. +ara determinar si un programa ,ace lo que debe es muy importante especi icar claramente qu. debe ,acer el programa antes de desarrollarlo y una ve% acabado compararlo con lo que realmente ,ace. Claridad" es muy importante que el programa sea lo ms claro y legible posible para mejorar el mantenimiento del so t1are. Cuando se acaba de escribir el cdigo del programa, se deben buscar errores y corregirlos. )s concretamente, cuando el programa est concluido, es necesario ,acerle ampliaciones o modi icaciones, seg2n la demanda de los usuarios, esta labor puede ser llevada acabo por el mismo programador que implement el programa o por otros. 3 iciencia" debe consumir la menor cantidad de recursos posible. 7ormalmente al ,ablar de e iciencia se suele ,acer re erencia al consumo de tiempo yKo memoria.

La e iciencia y la claridad de un programa pueden ser objetivos contrapuestos" se puede conseguir mayor claridad sacri icando parte de la e iciencia o viceversa. +ero ,ay que tener en cuenta que el tiempo del programador es caro, y que ,oy en da el precio de los ordenadores es ra%onable y cada ve% son ms baratos.

+rogramas" $lgoritmos para ser ejecutados por un ordenador

Un ordenador o computadora est, desde que se enciende ,asta que se apaga totalmente, ejecutando un algoritmo. +or lo general, estos algoritmos son vagos y con usos para que los entienda una mquina. Una mquina no puede entender *escribe /ola )undoL* porque no sabe lo que es *escribe* ni lo que es una letra o un espacio, ni lo que es una pantalla. 3n cambio, puede entender *mov ea-, 0-?Fa bF1* !escribir en la direccin de memoria ea- el n2mero 0-?Fa bF1#, aunque nosotros no. Un ordenador es solo un circuito electrnico, no unciona a base de magia ni nada por el estilo. &ebido a lo di icil que es escribir en lenguaje mquina, e incluso en ensamblador, se crearon di erentes lenguajes de programacin, ms o menos parecidos al ingl.s actual y a cmo se redacta un algoritmo. 3stos lenguajes proveen de cosas tan complejas para una mquina como los bucles or. Los compiladores se encargan de traducir esos ic,eros al lenguaje ensamblador que corresponda, el ensamblador de traducirlos a lenguaje mquina y el enla%ador de juntar todo ese cdigo mquina en un solo arc,ivo, el programa. M el microprocesador, de ir encendiendo o apagando transistores seg2n lo que le diga el cdigo mquina.

NOu. instrucciones ejecuta un ordenadorP


Lenguaje de mquina
Cada tipo de microprocesador contiene un conjunto de instrucciones que reali%an ciertas operaciones sobre una o ms palabras de bits> las instrucciones van tambi.n codi icadas en bits. 7o queremos ,acer aqu una discusin sobre arquitectura de ordenadores, por lo que con esto debe valer por a,ora. 'e entiende que escribir slo con dos teclas, el 0 y el 1, es incmodo. /istricamente, a la ,ora de dise=ar un algoritmo para que el ordenador ejecutara, se escriba mediante unas etiquetas mnemot.cnicas> .ste ue el origen del lenguaje ensamblador. +or ejemplo qui%s en una cierta arquitectura la instruccin de borrado de memoria !)emory Clear, en ingl.s# corresponda al cdigo 010. +ronto surgieron programas que lean, siguiendo el ejemplo, )C, y lo sustituan por 010.

Lenguaje ensamblador
3l cdigo mquina tena dos grandes inconvenientes para los programadores" Q 3l primero es que se trata de unas instrucciones di ciles de recordar ya que no guardan relacin con la operacin que se est reali%ando. Q 3l segundo inconveniente es que puede y de ,ec,o ,ay di erencias entre las instrucciones de un procesador a otro. 0odo esto ,a llevado a *poner nombre* a las instrucciones de cdigo mquina de manera que a una secuencia concreta de bits que reali%a una operacin se le pone un nombre sencillo que identi ique la operacin. 3sta traduccin a un lenguaje ms sencillo para las personas resulta en una mayor comodidad para el programador, adems el proceso de

traduccin inverso de lenguaje ensamblador a cdigo mquina puede ser reali%ado por un sencillo programa.

+rogramacin para seres ,umanos


Lenguajes de alto nivel
'obre este lenguaje ensamblador inicial se ueron construyendo otros lenguajes de programacin de ms alto nivel> esto signi ica que ocultan ciertos aspectos de manera que el programador no se ,a de preocupar sobre si en la mquina que quiere que se ejecute el algoritmo el )C corresponde a la instruccin 101 o 010. 'e produce, por tanto, una abstraccin de datos, muy deseable para poder utili%ar el trabajo de otros para avan%ar un paso ms en ve% de tener que *reinventar la rueda*, como se suele decir. 3stos te-tos en los que se codi ican los algoritmos son los cdigos uente> siguen las reglas sintcticas de un determinado lenguaje de programacin. 3-isten numerosos lenguajes de programacin, y se utili%a uno u otros seg2n sus caractersticas se adec2en ms o menos a la resolucin de nuestro problema.

Traductores e intrpretes
0ras la escritura del algoritmo, un compilador o un int.rprete !otros programas# trans ormarn el te-to en cdigo mquina que el procesador es capa% de ejecutar. 0oda esta abstraccin permite resolver problemas alejados de sumar n2meros binarios, como pueden ser la consulta de esta misma enciclopedia o jugar a un videojuego en F&.

Lenguajes interpretados vs. lenguajes compilados


Los lenguajes interpretados nacen como respuesta a la di icultad de manejo de los compilados. Un lenguaje compilado es slo apto para un sistema operativo o ormato de ejecutable !en Linu- y Uni- 'ystem < es 3L5, en Jindo1s o incluso en ('& es muy di erente#, y es tedioso de manejar" para comprobar bugs o errores el computador debe"

Compilar cada uno de los ic,eros de cdigo. 3nsamblarlos en ic,eros objeto. 3nla%ar los ic,eros objeto. <olverlos a ensamblar.

0odo eso no es gran derroc,e de recursos para un ordenador medio actualmente, pero dura sus 10 o 1@ segundos. 3n cambio, con un lenguaje interpretado, el programa int.rprete anali%a el ic,ero de cdigo y lo va ejecutando en tiempo real, sin compilarlo ni ensamblarlo. 6tra de las ventajas de los lenguajes interpretados es que son multiplata orma" un programa en +erl, por ejemplo, no debe ser compilado dos veces !una para Uni- y otra para Jindo1s#. Con que ,aya di erentes versiones del int.rprete en cada uno de esos ordenadores, espec icamente compilados para ellos, basta. 'us desventajas"

Consume muc,os recursos de memoria, sobre todo 8$). 'e depende del int.rprete" si no tienes instalado el int.rprete que corresponda, no podrs ejecutar el programa.

5undamentos de programacinK0.cnicas bsicas de programacin


La programacin estructurada sigue tres reglas" la secuencia, la iteracin y la decisin. La primera de ellas indica que las instrucciones del cdigo se leern de principio a in> la segunda indica que, seg2n cierta condicin, un n2mero de instrucciones podran repetirse un numero determinado de veces, y la tercera indica que seg2n unas ciertas condiciones se ejecutarn o no un conjunto de instrucciones. 3n el siguiente algoritmo para limpiar platos se aprecian estas tres caractersticas. La indentacin de las instrucciones indican cules son englobadas y cules no por sus predecesoras.
mientras haya platos coger plato mientras haya suciedad echar jabon pasar el estropajo por el plato si plato es azul ponerlo con los azules

3n cdigo no estructurado, quedara algo ms lioso.


1 2 3 4 5 6 7 coger plato echar jabon pasar el estropajo por el plato si hay suciedad ir a la instruccin 2 si el plato no es azul ir a la instruccin 7 ponerlo con los azules si hay ms platos ir a la instruccin 1

3n programas ms grandes, esto es muc,simo ms lioso. $,ora conocemos la ejecucin de los algoritmos. 'in embargo, un programa se compone tanto de algoritmos como de una estructura de datos sobre los que operar.

$ntes de empe%ar un programa


structura de un programa
3n la programacin estructurada ,ay un inicio y un in per ectamente bien de inido de acuerdo al diagrama de lujo que se plante al concebir la idea del programa. Un programa bien estructurado debera tener alg2n subprograma que capture cualquier error dentro del programa principal o de cualquier subprograma dentro de la aplicacin de

tal modo que el subprograma que captura los errores genere un registro de datos que describa el error generado yKo en qu. subprograma se gener el error para posteriormente corregirlo. +ara acilitar la correccin de estos errores se ,ace uso de los comentarios agregados en el cdigo uente.

!ariables " constantes


Como ,emos visto, el ordenador sigue una serie de instrucciones. +ero esas instrucciones tienen que operar sobre una serie de datos. 3l ordenador tpico slo procesa una instruccin a la ve%, por lo que necesita Respacios de memoriaR donde guardar o depositar, a modo de cajones, por usar un smil conocido, los diversos datos con los que trabaja. $qu es donde entran en juego las variables y constantes. 3n los inicios, con el ensamblador, se poda decir al ordenador, por ejemplo" R3jecuta la instruccin de esa posicin de memoriaR o tambi.n R3n esa posicin de memoria est guardada mi edad, imprmela por pantallaR. 0odo esto se deriva del ,ec,o de que los programas tambi.n son datos. 3sta ambigSedad presenta numerosos inconvenientes cuando se producen errores, como el lector se imaginar cilmente" de a, que, a medida que los lenguajes promocionan ,acia niveles superiores, se impida el tratamiento indistinto de los datos. $ partir de entonces, un programa tiene que decirle al sistema operativo los cajones que necesita y .ste se los proporciona independientemente de cules sean. Oui%s suene ms complicado de lo que es. Un ejemplo" Oueremos sumar dos n2meros. 7uestro programa tendr que tener tres cajones" Uno para cada n2mero y otro para el resultado. Cada cajn tiene un nombre en ve% de una posicin de memoria, de manera que slo ,ay que nombrarlo"
Necesito cajones ! " y #esultado $ee un n%mero y gurdalo en $ee un n%mero y gurdalo en " &uma y " y gurdalo en #esultado 'mprime el contenido de #esultado

/e aqu nuestro programa. Como cabe pensar, un procesador no tiene la instruccin *4mprime por pantalla*> esto es una llamada a otra porcin de cdigo que, gracias a la abstraccin, nosotros o no ,emos escrito, o ,emos escrito una sla ve%> a partir de lo cual podemos imprimir todo el te-to que queramos en la pantalla. Las posiciones de memoria $ y ( son <ariables. 'i queremos leerlas o escribirlas, podemos ,acerlo. 0picamente, e-istirn datos que no pensamos modi icar> no querremos que el usuario tenga que introducirlos cada ve%, pues son de naturale%a ms constante que otros !como puede ser el valor +i para calcular el permetro o rea de un crculo#. +ara evitar modi icarlos por error, podemos pedir al sistema variables especiales, que no puedan ser reescritas. 'on las Constantes. Un ejemplo"
(omentario) *ste programa calcula el rea de un c+rculo

(onstante ,' - 3.1415/265 0ariable # 0ariable #esultado $eer n%mero y guardar en # (alcular ,' 1 2# 1 #3 y guardar en #esultado 'mprimir #esultado

3l uso de variables y constantes se asemeja al uso que se les da en el lgebra o en otras ramas matemticas. 7tese tambi.n la clara separacin entre estructuras de datos y algoritmos. 'eg2n los lenguajes, esto puede ser o no obligatorio, pero es recomedable en aras de una mayor claridad del trabajo.

#omentarios
3l 2til concepto del comentario" son lneas de te-to que el compilador o el int.rprete no consideran como parte del cdigo, con lo cual no estn sujetas a restricciones de sinta-is y sirven para aclarar partes de cdigo en posteriores lecturas y, en general, para anotar cualquier cosa que el programador considere oportuno. Uno como programador debe tener como prioridad documentar nuestro cdigo uente ya que al momento de depurar nos a,orrar muc,o tiempo de analisis para su correccin o estudio. Los programadores pro esionales tienen la buena costumbre de documentar sus programas con encabe%ados de te-to!encabe%ados de comentarios# en donde describen la uncin que va a reali%ar dic,o programa, la ec,a de creacin, el nombre del autor y en algunos casos las ec,as de revisin y el nombre del revisor. +or lo general algunos programas requieren ,acer uso de llamadas a subprogramas dentro de una misma aplicacin por lo que cada subprograma debera estar documentado, describiendo la uncin que reali%an cada uno de estos subprogramas dentro de la aplicacin.

3structuras de datos y de control


structuras de control
Las estructuras de control pueden dividirse en dos" 3structuras de control Condicional y 3structuras de control 8epetitivo. Las estructuras de control condicional son las que incluyen alternativas de seleccion en base al resultado de una operacin booleana, como por ejemplo, una comparacin !$9(#. 'eg2n la e-presin sea cierta o alsa, se ejecutar un tro%o de cdigo u otro. 3s el caso de la sentencia 45 0/37 3L'3 de +ascal o (asic"

'4 *$&*

-5 67*N ,#'N6 8 ,#'N6 8

9ale 58 no 9ale 58

6tra sentencia de control son las de tipo 'J40C/ C$'3. 3n este tipo de sentencias se especi ica la variable a comparar y una lista de valores con lo que comparar. $quel que sea el verdadero, se ejecutar"
&:'6(7 ( &* 5) ,#'N6 8 ( &* 1) ,#'N6 8

9ale 58 9ale 18

6tras ,erramientas imprescindibles del control de la ejecucin de nuestro cdigo son los (UCL3' o C4CL6'. Consisten en un m.todo que permite repetir un tro%o de cdigo varias veces. /ay bsicamente dos tipos" Q (ucle 568" 3l bucle 568 consiste en una sentencia que engloba un grupo de instrucciones y tiene una variable cuyo valor se va modi icando en cada vuelta.
4;# -5 6; 15 Especificamos en este caso que A variar desde 0 hasta 10, con lo que repetiremos el bucle ,#'N6 8*stamos en el bucle8 10 veces. N*<6 Con esto cerramos el bucle e indicamos el final del bloque de instrucciones que se repiten

Q (ucle J/4L3" 3l bucle J/4L3 consiste en un bucle en el que el cdigo se repite ,asta que se cumpla alguna condicin booleana !es decir, una e-presin que d. como resultado verdadero o also#. /ay variaciones, como el 83+3$0...U704L, que se di erencia en el momento de comprobar si se ,ace verdadera o no la condicin.
:7'$* =>2"123 ?; aqu se comprueba - @1 #$% ?;N* el bucle el cdi"o. Aqu especificamos la expresin que evaluamos !ncrementamos el valor de A hasta que sea i"ual a Como en el &'(, necesitamos especificar donde acaba

structuras de datos
creo a como entero

creo b como entero creo suma como entero a9? b91 suma 9 a G b imprimir suma 3structura de una aplicacin Cualquier programa que se realice debe de llevar una estructura para disminuir la tarea de depuracin ya que esta labor lleva ms tiempo del estimado. 'i eres principiante en el rea de programacin debes de inir el programa a reali%ar, documentar cada uno de los pasos que reali%as en tu programa, debes de considerar alg2n metodo de captura de errores, etc. 3n este subcaptulo abarcaremos el cmo estructurar una aplicacin para e icientar o disminuir el tiempo en depuracin, as como locali%ar ms rpidamente los errores. +uedes buscar en 4nternet el concepto *pseudocdigo*, que no es ms que la escritura de un algoritmo en un lenguaje ms cercano al natural. 3s decir, la orden en lenguaje Havascript que repetira el proceso de quitar suciedad a=adiendo agua y jabn mientras se rota sera la siguiente"
Aunction Arotar2cuanto3B 9ar 9eces - 5C Aor 29eces - 5C suciedad - 5! 9eces - cuanto C 9eces@@3B suciedad - suciedad D 2agua @ jabn3C E E

)ientras que el algoritmo o pseudocdigo quedara as"


Auncin Arotar 2cuantas9eceslohago3 9ariable 9ecesFuelle9o - 5 repetir 2desde Fue 9ecesFuelle9o - 5 hasta Fue la suciedad - 5 9ecesFuelle9o cuantas9eceslohagoC aumentar 9ecesFuelle9o de una en una3 suciedad - suciedad D 2agua @ jabn3 Ain repetir Ain Auncin

3n primer lugar, es muy recomendable ,acer un esquema sobre el papel con toda clase de datos que se vayan a utili%ar.

5undamentos de programacinK4ntroduccin a la programacin estructurada


4ntroduccin
La programacin estructurada naci como solucin a los problemas que presentaba la programacin no estructurada, la cual se emple durante muc,o tiempo antes de la invencin de la programacin estructurada. Un programa no estructurado es un programa procedimental" las instrucciones se ejecutan en el mismo orden en que ,an sido escritas. 'in embargo, este tipo de programacin emplea la instruccin *goto*. Una instruccin *goto* permite pasar el control a cualquier otra parte del programa. Cuando se ejecuta una instruccin *goto* la secuencia de ejecucin del programa contin2a a partir de la instruccin indicada por *goto*. &e esta orma, para comprender como unciona un programa es necesario simular su ejecucin. 3sto quiere decir que en la mayora de los casos es muy di cil comprender la lgica de un programa de este tipo. $lgunos compliladores crean re erencias cru%adas a las instrucciones apuntadas por los *goto*, posibilitando una navegacin rpida a trav.s del cdigo uente. 'in embargo, es algo com2n en muc,os lenguajes de programacin el empleo de una variable en asociacin con el destino del *goto*, no permitiendo la creacin automtica de tablas de re erencias cru%adas. 3-isten problemas similares en algunos lenguajes de programacin estructurada, por ejemplo cmo implementar las vistas en di erentes idiomas, de orma que varias personas puedan visuali%ar la misma in ormacin, pero cada una en su idioma. 3sto se opone a la idea de utili%ar alg2n tipo de abstraccin que permita comprender cmo unciona realmente un programa, que es lo que ,ace la programacin estructurada. +or este motivo, &ijIstra propuso la eliminacin de la sentencia *goto*.

+rograma !computacin#
Un programa, o tambin llamado programa informtico, programa de computacin o programa de ordenador, es simplemente un conjunto de instrucciones para una computadora.1 Las computadoras necesitan de los programas para funcionar, un programa no !ace nada a menos "ue sus instrucciones sean ejecutadas por el procesador.? Un programa se puede referir tanto a un programa ejecutable como a su cdigo uente, el cual es trans ormado en un ejecutable cuando es compilado.

Teneralmente el cdigo uente de los programas es escrito por pro esionales conocidos como programadores. 3l cdigo uente es escrito en un lenguaje de programacin que sigue uno de los siguientes dos paradigmas" imperativo o declarativo. 3l cdigo uente puede ser convertido en una imagen ejecutable por un compilador. Cuando se pide que el programa sea ejecutado, el procesador ejecuta el programa instruccin por instruccin, ,asta que el programa termina.

&e acuerdo a sus unciones, los programas pueden ser clasi icados en so t1are de sistema y so t1are de aplicacin. +ueden ejecutarse muc,os programas de orma simultnea en un mismo ordenador, a lo cual se le llama multitarea.

+rogramacin

Cdigo uente de un programa escrito en el lenguaje de programacin Hava

La programacin es un proceso el cual consiste en escribir o editar el cdigo uente. 3ditar el cdigo uente signi ica poner a prueba, anali%ar y rede inir. La persona que tiene la ,abilidad para programar se le llama programador o desarrollador de so t1are. Usualmente, al gran proceso de programacin se le llama desarrollo de soft$are. 3l t.rmino ingenier%a de soft$are se est volviendo popular, re iri.ndose a la ingeniera como disciplina.

&aradigmas en los lenguajes de programacin


Los programas se pueden clasi icar por el paradigma del lenguaje de programacin que se usa para producirlos. Los principales paradigmas son imperativos y declarativos. Los programas que usan un lenguaje imperativo especi ican un algoritmo, usan declaraciones, e-presiones y sentencias.F Una declaracin asocia un nombre de variable con un tipo de dato, por ejemplo" 9ar G) integerC . Una e-presin contiene un valor, por ejemplo" 2 @ 2 contiene el valor D. 5inalmente, una sentencia debe asignar una e-presin a una variable o usar el valor de una variable para alterar el lujo de un programa. +or ejemplo" G )- 2 @ 2C iA G -- 4 then hazHalgo23C. Una crtica com2n en los lenguajes imperativos es el e ecto de las sentencias de asignacin sobre una clase de variables llamadas *no locales*.D Los programas que usan un lenguaje declarativo especi ican las propiedades que la salida debe conocer y no especi ica cualquier detalle de implementacin. &os amplias categoras de lenguajes declarativos son los lenguajes funcionales y los lenguajes lgicos. Los lenguajes uncionales !como /asIell# no permiten asignaciones de variables no locales, as, se ,acen ms cil, por ejemplo, programas como unciones matemticas. D 3l principio detrs de los lenguajes lgicos !como +rolog# es de inir el problema que se quiere resolver !el objetivo# y dejar los detalles de la solucin a el sistema de +rolog. @ 3l objetivo es de inido dando una lista de subQobjetivos. Cada subQobjetivo tambi.n se de ine dando una

lista de sus subQobjetivos, etc.tera. 'i al tratar de buscar una solucin, una ruta de subQ objetivos alla, entonces tal subQobjetivo se descarta y sistemticamente se prueba otra ruta. La orma en la cual es programa se crea puede ser por medio de te-to o de orma visual. 3n un lenguaje de programacin visual, los elementos son manipulados gr icamente en ve% de especi icarse por medio de te-to.

#ompilacin o interpretacin de lenguajes de programacin


'i un programa est escrito en un lenguaje de programacin comprensible para un ,umano, se le llama cdigo uente. 3l cdigo uente se puede convertir en un arc,ivo ejecutable con la ayuda de un compilador o tambi.n puede ser ejecutado de inmediato por medio de un int.rprete. Los programas que son compilados com2nmente son llamados ejecutables, imgenes binarias, o simplemente como binarios, ya que la orma en que se almacena el cdigo de los ejecutables es en binario. Los compiladores se utili%an para traducir el cdigo uente de un lenguaje de programacin, ya sea a cdigo objeto o a cdigo de mquina. 3l cdigo objeto necesita una trans ormacin ms para convertirse en cdigo de mquina, y el cdigo de mquina es el cdigo nativo del procesador, listo para su ejecucin. Un lenguaje de programacin utili%ado com2nmente para compilar es el lenguaje C. Los programas interpretados podran primeramente ser decodi icados e inmediatamente despu.s ejecutarse, o tambi.n puede darse el caso que se trans orme a una e iciente representacin intermedia para su utura ejecucin. ($'4C, +erl, y +yt,on son ejemplos de lenguajes en los cuales los programas se ejecutan inmediatamente. &e orma alternativa, los programas escritos en Hava primeramente son compilados y almacenados en un cdigo independiente de la mquina al cual se le llama bytecode. Un int.rprete llamado mquina virtual ejecuta dic,o bytecode cuando se le solicita. La principal desventaja de los int.rpretes es que los programas se ejecutan ms lentamente que si ueran compilados. 3l cdigo interpretado es ms lento que el cdigo compilado porque el int.rprete debe de decodi icar cada sentencia cada ve% que se carga y luego ejecutar dic,a accin. 'in embargo, el desarrollo del so t1are puede ser ms rpido usando un int.rprete porque las pruebas sobre el cdigo uente se llevan de orma inmediata cuando se omite la ase de compilacin. 6tra desventaja de los int.rpretes es que el int.rprete debe de estar presente en la computadora para poder ejecutar los programas, en cambio los programas ,ec,os con compiladores no necesitan tener el compilador presente en tiempo de ejecucin. Un lenguaje de programacin no es estricta y e-clusivamente compilado o interpretado. La clasi icacin usualmente re leja el m.todo ms popular de la ejecucin del lenguaje. +or ejemplo, ($'4C se trata como un lenguaje interpretado y C como un lenguaje compilado, a pesar de la e-istencia de compiladores para ($'4C e int.rpretes para C. .

3jecucin y almacenamiento de los programas


0picamente, los programas se almacenan en la memoria no voltil, para que luego un usuario de la computadora, directa o indirectamente, solicite su ejecucin. $l momento de dic,a solicitud, el programa se carga en la memoria de acceso aleatorio, por medio del so t1are llamado sistema operativo, el cual puede acceder directamente al procesador. 3l procesador ejecuta !corre# el programa, instruccin por instruccin ,asta que termina. $ un programa en ejecucin se le llama proceso. Un programa puede terminar de orma normal o a causa de un error, dic,o error puede ser de so t1are o de ,ard1are.

&rogramas empotrados en 'ard$are

3l microcontrolador a la derec,a de la )emoria U'( est controlada por un irm1are empotrado.

$lgunos programas estn empotrados en el ,ard1are. Una computadora con arquitectura de programas almacenados requiere un programa inicial almacenado en su 86) para arrancar. 3l proceso de arranque es para identi icar e iniciali%ar todos los aspectos del sistema, desde los registros del procesador, controladores de dispositivos ,asta el contenido de la memoria 8$).E 'eguido del proceso de iniciali%acin, este programa inicial carga al sistema operativo e iniciali%a al contador de programa para empe%ar las operaciones normales. 4ndependiente de la computadora, un dispositivo de ,ard1are podra tener irm1are empotrado para el control de sus operaciones. 3l irm1are se utili%a cuando se espera que el programa cambie en raras ocasiones o nunca, o cuando el programa no debe perderse cuando ,aya ausencia de energa. A

&rogramas cargados manualmente

4nterruptores para la carga manual en una &ata Teneral 7ova F

Los programas ,istoricamente se cargaron manualmente al procesador central mediante interruptores. Una instruccin era representada por una con iguracin de estado abierto o

cerrado de los interruptores. &espu.s de establecer la con iguracin, se ejecutaba un botn de ejecucin. 3ste proceso era repetitivo. 0ambi.n, ,istoricamente los programas se cargaban manualmente mediante una cinta de papel o tarjetas per oradas. &espu.s de que el programa se cargaba, la direccin de inicio se estableca mediante interruptores y el botn de ejecucin se presionaba.B

&rogramas generados automticamente


La programacin automtica es un estilo de programacin que crea cdigo uente mediante clases gen.ricas, prototipos, plantillas, aspectos, y generadores de cdigo para aumentar la productividad del programador. 3l cdigo uente se genera con ,erramientas de programacin tal como un procesador de plantilla o un 4&3. La orma ms simple de un generador de cdigo uente es un procesador macro, tal como el preprocesador de C, que reempla%a patrones de cdigo uente de acuerdo a reglas relativamente simples. Un motor de so t1are da de salida cdigo uente o lenguaje de marcado que simultneamente se vuelve la entrada de otro proceso in ormtico. +odemos pensar como analoga un proceso manejando a otro siendo el cdigo mquina quemado como combustible. Los servidores de aplicaciones son motores de so t1are que entregan aplicaciones a computadoras cliente. +or ejemplo, un so t1are para 1iIis es un sevidor de aplicaciones que permite a los usuarios desarrollar contenido dinmico ensamblado a partir de artculos. Las JiIis generan /0)L, C'', Hava, y Havascript los cuales son interpretados por un navegador 1eb.

jecucin simultnea
)uc,os programas pueden correr simultneamente en la misma computadora, a lo cual se le conoce como multitarea y puede lograrse a trav.s de mecanismos de so t1are o de ,ard1are. Los sistemas operativos modernos pueden correr varios programas a trav.s del plani icador de procesos U un mecanismo de so t1are para conmutar con recuencia la cantidad de procesos del procesador de modo que los usuarios puedan interactuar con cada programa mientras estos estn corriendo.C 0ambi.n se puede lograr la multitarea por medio del ,ard1are> las computadoras modernas que usan varios procesadores o procesadores con varios n2cleos pueden correr muc,os programas a la ve%. 10

Categoras uncionales
Los programas se pueden categori%ar seg2n lneas uncionales. 3stas categoras uncionales son so t1are de sistema y so t1are de aplicacin. 3l so t1are de sistema incluye al sistema operativo el cual acopla el ,ard1are con el so t1are de aplicacin.11 3l propsito del sistema operativo es proveer un ambiente en el cual el so t1are de aplicacin se ejecuta de una manera conveniente y e iciente. 11 $dems del sistema operativo, el so t1are de sistema incluye programas utilitarios que ayudan a manejar y con igurar la computadora. 'i un programa no es so t1are de sistema entonces es so t1are de aplicacin. 3l middle1are tambi.n es un so t1are de aplicacin que acopla el so t1are de sistema con la inter a% de usuario. 0ambi.n son so t1are de aplicacin los programas

utilitarios que ayudan a los usuarios a resolver problemas de aplicaciones, como por ejemplo la necesidad de ordenamiento.

Lenguaje ensamblador

Lenguaje de mquina del 4ntel B0BB. 3l cdigo de mquina se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el cdigo, en a%ul.

3l lenguaje ensamblador es un tipo de lenguaje de bajo nivel utili%ado para escribir programas in ormticos, y constituye la representacin ms directa del cdigo mquina espec ico para cada arquitectura de computadoras legible por un programador. 5ue usado ampliamente en el pasado para el desarrollo de so t1are, pero actualmente slo se utili%a en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del ,ard1are o se pretenden rendimientos inusuales de los equipos.

Caractersticas +rogramar en lenguaje ensamblador es di cil de aprender,


entender, leer, escribir, depurar y mantener, por eso surgi la necesidad de los lenguajes compilados.

$ pesar de perder rendimiento en un proceso de compilacin, en la actualidad la mayora de las computadoras son su icientemente rpidas. 3l lenguaje ensamblador no es portable. +rogramar en lenguaje ensamblador lleva muc,o tiempo. Los programas ,ec,os en lenguaje ensamblador son generalmente ms rpdos. $l programar cuidadosamente en lenguaje ensamblador se pueden crear programas de @ a 10 veces ms rpidos que con lenguajes de alto nivel. Los programas ,ec,os en lenguaje ensamblador generalmente ocupan menos espacio. Un buen programa en lenguaje ensamblador puede ocupar casi la mitad de espacio que su contraparte en lenguaje de alto nivel. Con el lenguaje ensamblador se pueden crear segmentos de cdigo imposibles de ormar en un lenguaje de alto nivel.

3nsambladores
Un ensamblador crea cdigo objeto traduciendo instrucciones mnemnicas a cdigos operativos, e interpretando los nombres simblicos para direcciones de memoria y otras entidades. 3l uso de re erencias simblicas es una caracterstica bsica de los

ensambladores, evitando tediosos clculos y direccionamiento manual despu.s de cada modi icacin del programa. La mayora de los ensambladores tambi.n incluyen acilidades para crear macros, a in de generar series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utili%ar subrutinas.1 Los ensambladores son por lo general ms ciles de programar que los compiladores de lenguajes de alto nivel, y ,an estado disponibles desde la d.cada de 1C@0. Los ensambladores modernos, especialmente para arquitecturas basadas en 84'C, como por ejemplo )4+', '+$8C y +$Q84'C optimi%an las instrucciones para e-plotar al m-imo la e iciencia de segmentacin? del C+U. Los ensambladores de alto nivel o recen posibilidades de abstraccin que incluyen"

Control avan%ado de estructuras. +rocedimientos de alto nivel, declaracin de unciones. 0ipos de datos que incluyen estructuras, registros, uniones, clases y conjuntos. 'o isticado procesamiento de macros.

Lenguaje
Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al lujo de rdenes ejecutables que pueden ser cargadas en la memoria de una computadora. +or ejemplo, un procesador -BE puede ejecutar la siguiente instruccin binaria como se e-presa en cdigo de mquina"

(inario" 10110000 01100001 !/e-adecimal" 0-b0E1#

La representacin equivalente en lenguaje ensamblador es ms cil de recordar"

)6< al, 0E1,

3sta instruccin signi ica"

)ueva el valor ,e-adecimal E1 !CA decimal# al registro *al*.

3l mnemnico *mov* es un cdigo de operacin u *opcode*, elegido por los dise=adores de la coleccin de instrucciones para abreviar *move* !mover#. 3l opcode es seguido por una lista de argumentos o parmetros, completando una instruccin de ensamblador tpica. La trans ormacin del lenguaje ensamblador en cdigo mquina la reali%a un programa ensamblador, y la traduccin inversa la puede e ectuar un desensamblador. $ di erencia de los lenguajes de alto nivel, aqu ,ay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de mquina. 'in embargo, en algunos casos, un ensamblador puede proveer *pseudo instrucciones* que se e-panden en un cdigo de mquina ms e-tenso a in de proveer la uncionalidad necesaria. +or ejemplo,

para un cdigo mquina condicional como *si V mayor o igual que* , un ensamblador puede utili%ar una pseudoinstruccin al grupo *,aga si menor que* , y *si 9 0* sobre el resultado de la condicin anterior. Los ensambladores ms completos tambi.n proveen un rico lenguaje de macros que se utili%a para generar cdigo ms complejo y secuencias de datos. Cada arquitectura de computadoras tiene su propio lenguaje de mquina, y en consecuencia su propio lenguaje ensamblador. Los ordenadores di ieren en el tipo y n2mero de operaciones que soportan> tambi.n pueden tener di erente cantidad de registros, y distinta representacin de los tipos de datos en memoria. $unque la mayora de las computadoras son capaces de cumplir esencialmente las mismas unciones, la orma en que lo ,acen di iere, y los respectivos lenguajes ensambladores re lejan tal di erencia. +ueden e-istir m2ltiples conjuntos de mnemnicos o sint-is de lenguaje ensamblador para un mismo conjunto de instrucciones, instanciados tpicamente en di erentes programas ensamblador. 3n estos casos, la alternativa ms popular es la provista por los abricantes, y usada en los manuales del programa.

Cdigo mquina !o lenguaje de mquina#


3l lenguaje de mquina est ormado por instrucciones sencillas, que Qdependiendo de la estructura del procesadorQ pueden especi icar"

8egistros espec icos para operaciones aritm.ticas, direccionamiento o control de unciones. +osiciones de memoria espec icas !offset#. )odos de direccionamiento usados para interpretar operandos.

Las operaciones ms complejas se reali%an combinando estas instrucciones sencillas, que pueden ser ejecutadas secuencialmente o mediante instrucciones de control de lujo. Las operaciones disponibles en la mayora de los conjuntos de instrucciones incluye"

mover llenar un registro con un valor constante mover datos de una posicin de memoria a un registro o viceversa escribir y leer datos de dispositivos computar sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de ellos o en otro registro reali%ar operaciones binarias, incluyendo operaciones lgicas !$7&K68KV68K760# comparar valores entre registros !mayor, menor, igual# a ectar el lujo del programa saltar a otra posicin en el programa y ejecutar instrucciones all saltar si se cumplen ciertas condiciones !45#

saltar a otra posicin, pero guardar el punto de salida para retornar !C$LL, llamada a subrutinas#

$lgunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instruccin compleja ,ace lo mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo"

salvar varios registros en la pila de una sola ve% mover grandes bloques de memoria operaciones aritm.ticas complejas o de punto lotante !seno, coseno, ra% cuadrada #

3l nivel de lenguaje ensamblador tiene aspectos importantes de los niveles de microarquitectura, en los cuales se encuentra !4'$ y sistema operativo# estos dos se utili%an para la traduccin en lugar de la interpretacin. $lgunas caractersticas del lenguaje se describen a continuacin Los programas que sirven para traducir alg2n programa para el usuario se llama traductores, el lenguaje en que esta escrito el programa original se llama lenguaje uente, el lenguaje original que sea modi icado se llama lenguaje objeto. 'e usa la traduccin cuando se cuenta con un procesador !ya sea ,ard1are o un interprete# para el lenguaje objeto pero no para el lenguaje uente, 'i la traduccin se reali%a correctamente, la ejecucin del programa traducido dar e-actamente los mismos resultados que ,abra dado la ejecucin del programa uente. /ay dos di erencias entre traduccin e interpretacin, en la traduccin no se ejecuta directamente el programa original, en el lenguaje uente se convierte en un programa equivalente llamado programa objeto o programa binario ejecutable y este unciona solo cuando se ,a acabado la traduccin. 3l cdigo mquina, un simple patrn de bits, es ,ec,o legible reempla%ando valores crudos por smbolos denominados mnemnicos. 'e invent para acilitar la tarea de los primeros programadores que ,asta ese momento tenan que escribir directamente en cdigo binario. 4nicialmente el cdigo de ceros y unos !el programa# deba introducirse en una tarjeta per orada. La posicin ocupada por cada punto equivala a un *1* o a un *0* seg2n ,ubiera o no una per oracin. Lo cual supona una orma casi id.ntica en la que ,oy se escriben los datos binaros en soportes tales como los C&s y &<&s. )ientras que una computadora reconoce la instruccin de mquina 4$QF?
15115555 51155551

para los programadores de microprocesadores -BE es muc,o ms cil reconocer dic,a instruccin empleando lenguaje ensamblador "
mo9b 5G61!Ial

!que signi ica mover el valor ,e-adecimal E1 !CA decimal# al registro RalR.#

Cada instruccin de la mquina se trans orma en una 2nica instruccin en cdigo simblico. +ero adems, para mejorar la legibilidad del programa, el cdigo simblico introduce instrucciones adicionales, que no corresponden a ninguna instruccin de la mquina y que proporcionan in ormacin. 'e llaman *pseudoinstrucciones*. 3l cdigo simblico puede parecer de di cil acceso, pero es ms cil de recordar e interpretar que el binario o el ,e-adecimal. Los lenguajes simblicos no resuelven de initivamente el problema de cmo programar un ordenador de la manera ms sencilla posible. +ara utili%arlos, ,ay que conocer a ondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muc,as cosas ms. $dems, el lenguaje ensamblador est muy ligado al microprocesador para que sea posible escribir programas independientes de la mquina en que van a ejecutarse. 3ste cdigo simblico no puede ser ejecutado directamente por un ordenador, por lo que es preciso traducirlo previamente. +ero la traduccin es un proceso mecnico y repetitivo, que se presta a su reali%acin por un programa de ordenador. Los programas que traducen cdigo simblico al lenguaje de mquina se llaman ensambladores !*assembler*, en ingl.s#, porque son capaces de ensamblar el programa traducido a partir de varias pie%as, procedimientos o subrutinas a cdigo binario !*1* y *0*# que entiende el procesador.