100%(1)100% au considerat acest document util (1 vot)
288 vizualizări362 pagini
1. El documento presenta un resumen de los temas y subtemas que componen la unidad 1 de introducción a la computación de un curso de programación. 2. Entre los temas se encuentran definiciones básicas de computación, tipos de computadoras, historia y generaciones de las computadoras. 3. También incluye conceptos sobre lenguajes de programación y aspectos históricos de los primeros dispositivos de cómputo como el ábaco y máquinas mecánicas y eléctricas que condujeron al desarrollo de las
1. El documento presenta un resumen de los temas y subtemas que componen la unidad 1 de introducción a la computación de un curso de programación. 2. Entre los temas se encuentran definiciones básicas de computación, tipos de computadoras, historia y generaciones de las computadoras. 3. También incluye conceptos sobre lenguajes de programación y aspectos históricos de los primeros dispositivos de cómputo como el ábaco y máquinas mecánicas y eléctricas que condujeron al desarrollo de las
1. El documento presenta un resumen de los temas y subtemas que componen la unidad 1 de introducción a la computación de un curso de programación. 2. Entre los temas se encuentran definiciones básicas de computación, tipos de computadoras, historia y generaciones de las computadoras. 3. También incluye conceptos sobre lenguajes de programación y aspectos históricos de los primeros dispositivos de cómputo como el ábaco y máquinas mecánicas y eléctricas que condujeron al desarrollo de las
1 Introduccin a la computacin 1.1Breve resea de la computacin 1.2mpacto de las computadoras en la sociedad 1.3Definiciones Lenua!e de "lto #ivel$ ba!o nivel$ ensamblador % ma&uina. 'ompilador Traductor Sistemas #um(ricos "r&uitectura de computadoras Sistemas operativos 1.)Descripcin de tipos de proramacin 1.).1 *roramacin estructurada 1.).2 *roramacin orientada a ob!etos 1.4.3 Programacin de descripcin de Hardware sistemas numricos 1.+Lenua!es de proramacin 2 Diseo de "loritmos 2.1 'onceptos b,sicos 2.2 -etodolo.a de la proramacin 2.3 Diaramas de flu!o 2.) *seudocodios 3 /undamentos del Lenua!e 3.1Desarrollo 0istrico del lenua!e estructurado 3.21structura eneral de un prorama 3.3*alabras reservadas 3.)2epresentacin de datos b,sicos 3.+Declaracin de variables$ 'onstantes$ *rocedimientos % /unciones 3.34peraciones aritm(ticas$ licas % relacionales. 3.5Diseo$ 1dicin$ 'ompilacin % 1!ecucin de proramas ) 1structuras de Decisin % 'ontrol ).11structura secuencial 4.2Estructuras de Transferencia ncondicionales ).31structuras de Transferencia 'ondicionales ).)1structuras 2epetitivas 6Bucles7 + "rrelos % "rc0ivos +.1"rrelos 68ectores % -atrices7 +.2-ane!o "rc0ivos 3 -dulos 3.1Diferencia entre /unciones % *rocedimientos. 3.2"ctivacin 9 Invocacin de /unciones % *rocedimientos 3.3Uso de /unciones % *rocedimientos con *ar,metros. 5 :raficacin 7.1Conceptos bsicos de grficas. 7.2ntroduccin bsica de manejo de grficas. 7.3Uso de libreras para la realizacin de graficas. 5.):raficacin de un punto % l.neas rectas 5.+:raficacin de /unciones -atem,ticas en el plano cartesiano. 7.6ntroduccin a la potencia grafica ; *uertos ;.1 'onceptos enerales de mane!os de puertos ;.2 'onfiuracin de los puertos en las computadoras ;.3 Uso de instrucciones para mane!o de puertos Unidad 1. Introduccin a la computacin 1.1 Breve resea de la computacin <istoria de la 'omputacin
'4-*UT"D42" Mquina capaz de efectuar una secuencia de operaciones mediante un programa, de tal manera, que se realice un procesamiento sobre un conjunto de datos de entrada, obtenindose otro conjunto de datos de salida. TI*4S D1 '4-*UT"D42"S Se clasifican de acuerdo al principio de operacin de "nalicas % Diitales. '4-*UT"D42" "#"L=:I'" 1. Aprovechando el hecho de que diferentes fenmenos fsicos se describen por relaciones matemticas similares (v.g. Exponenciales, Logartmicas, etc.) pueden entregar la solucin muy rpidamente. Pero tienen el inconveniente que al cambiar el problema a resolver, hay que realambrar la circuitera (cambiar el Hardware). '4-*UT"D42" DI:IT"L 1. Estn basadas en dispositivos biestables, i.e., que slo pueden tomar uno de dos valores posibles: '1' '>'. Tienen como ventaja, el poder ejecutar diferentes programas para diferentes problemas, sin tener que la necesidad de modificar fsicamente la mquina. <IST42I" D1 L" '4-*UT"'I=# Uno de los primeros dispositivos mecnicos para contar fue el baco, cuya historia se remonta a las antiguas civilizaciones griega y romana. Este dispositivo es muy sencillo, consta de cuentas ensartadas en varillas que a su vez estn montadas en un marco rectangular. Al desplazar las cuentas sobre varillas, sus posiciones representan valores almacenados, y es mediante dichas posiciones que este representa y almacena datos. A este dispositivo no se le puede llamar computadora por carecer del elemento fundamental llamado programa. Otro de los inventos mecnicos fue la Pascalina inventada por Blaise Pascal (1623 - 1662) de Francia y la de Gottfried Wilhelm von Leibniz (1646 - 1716) de Alemania. Con estas mquinas, los datos se representaban mediante las posiciones de los engranajes, y los datos se introducan manualmente estableciendo dichas posiciones finales de las ruedas, de manera similar a como leemos los nmeros en el cuentakilmetros de un automvil. La primera computadora fue la mquina analtica creada por Charles Babbage, profesor matemtico de la Universidad de Cambridge en el siglo XX. La idea que tuvo Charles Babbage sobre un computador naci debido a que la elaboracin de las tablas matemticas era un proceso tedioso y propenso a errores. En 1823 el gobierno Britnico lo apoyo para crear el proyecto de una mquina de diferencias, un dispositivo mecnico para efectuar sumas repetidas.
Mientras tanto Charles Jacquard (francs), fabricante de tejidos, haba creado un telar que poda reproducir automticamente patrones de tejidos leyendo la informacin codificada en patrones de agujeros perforados en tarjetas de papel rgido. Al enterarse de este mtodo Babbage abandon la mquina de diferencias y se dedico al proyecto de la mquina analtica que se pudiera programar con tarjetas perforadas para efectuar cualquier clculo con una precisin de 20 dgitos. La tecnologa de la poca no bastaba para hacer realidad sus ideas. El mundo no estaba listo, y no lo estara por cien aos ms. En 1944 se construy en la Universidad de Harvard, la Mark , diseada por un equipo encabezado por Howard H. Aiken. Esta mquina no est considerada como computadora electrnica debido a que no era de propsito general y su funcionamiento estaba basado en dispositivos electromecnicos llamados relevadores. En 1947 se construy en la Universidad de Pennsylvania la ENAC (Electronic Numerical ntegrator And Calculator) que fue la primera computadora electrnica, el equipo de diseo lo encabezaron los ingenieros John Mauchly y John Eckert. Esta mquina ocupaba todo un stano de la Universidad, tena ms de 18 000 tubos de vaco, consuma 200 KW de energa elctrica y requera todo un sistema de aire acondicionado, pero tena la capacidad de realizar cinco mil operaciones aritmticas en un segundo. El proyecto, auspiciado por el departamento de Defensa de los Estados Unidos, culmin dos aos despus, cuando se integr a ese equipo el ingeniero y matemtico hngaro John von Neumann (1903 - 1957). Las ideas de von Neumann resultaron tan fundamentales para su desarrollo posterior, que es considerado el padre de las computadoras. La EDVAC (Electronic Discrete Variable Automatic Computer) fue diseada por este nuevo equipo. Tena aproximadamente cuatro mil bulbos y usaba un tipo de memoria basado en tubos llenos de mercurio por donde circulaban seales elctricas sujetas a retardos. La idea fundamental de von Neumann fue: permitir que en la memoria coexistan datos con instrucciones, para que entonces la computadora pueda ser programada en un lenguaje, y no por medio de alambres que elctricamente interconectaban varias secciones de control, como en la ENAC. Todo este desarrollo de las computadoras suele divisarse por generaciones y el criterio que se determin para determinar el cambio de generacin no est muy bien definido, pero resulta aparente que deben cumplirse al menos los siguientes requisitos: La forma en que estn construidas. Forma en que el ser humano se comunica con ellas. *rimera :eneracin En esta generacin haba una gran desconocimiento de las capacidades de las computadoras, puesto que se realiz un estudio en esta poca que determin que con veinte computadoras se saturara el mercado de los Estados Unidos en el campo de procesamiento de datos. Esta generacin abarco la dcada de los cincuenta. Y se conoce como la primera generacin. Estas mquinas tenan las siguientes caractersticas: Estas mquinas estaban construidas por medio de tubos de vaco. Eran programadas en lenguaje de mquina. En esta generacin las mquinas son grandes y costosas (de un costo aproximado de ciento de miles de dlares). En 1951 aparece la UNVAC (NVersAl Computer), fue la primera computadora comercial, que dispona de mil palabras de memoria central y podan leer cintas magnticas, se utiliz para procesar el censo de 1950 en los Estados Unidos. En las dos primeras generaciones, las unidades de entrada utilizaban tarjetas perforadas, retomadas por Herman Hollerith (1860 - 1929), quien adems fund una compaa que con el paso del tiempo se conocera como BM (nternational Bussines Machines). Despus se desarroll por BM la IBM 701 de la cual se entregaron 18 unidades entre 1953 y 1957. Posteriormente, la compaa Remington Rand fabric el modelo 1103, que competa con la 701 en el campo cientfico, por lo que la BM desarrollo la 702, la cual present problemas en memoria, debido a esto no dur en el mercado. La computadora ms exitosa de la primera generacin fue la BM 650, de la cual se produjeron varios cientos. Esta computadora que usaba un esquema de memoria secundaria llamado tambor magntico, que es el antecesor de los discos actuales. Otros modelos de computadora que se pueden situar en los inicios de la segunda generacin son: la UNVAC 80 y 90, las BM 704 y 709, Burroughs 220 y UNVAC 1105. Seunda :eneracin Cerca de la dcada de 1960, las computadoras seguan evolucionando, se reduca su tamao y creca su capacidad de procesamiento. Tambin en esta poca se empez a definir la forma de comunicarse con las computadoras, que reciba el nombre de programacin de sistemas. Las caractersticas de la segunda generacin son las siguientes: Estn construidas con circuitos de transistores. Se programan en nuevos lenguajes llamados lenguajes de alto nivel. En esta generacin las computadoras se reducen de tamao y son de menor costo. Aparecen muchas compaas y las computadoras eran bastante avanzadas para su poca como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester. Algunas de estas computadoras se programaban con cintas perforadas y otras ms por medio de cableado en un tablero. Los programas eran hechos a la medida por un equipo de expertos: analistas, diseadores, programadores y operadores que se manejaban como una orquesta para resolver los problemas y clculos solicitados por la administracin. El usuario final de la informacin no tena contacto directo con las computadoras. Esta situacin en un principio se produjo en las primeras computadoras personales, pues se requera saberlas "programar" (alimentarle instrucciones) para obtener resultados; por lo tanto su uso estaba limitado a aquellos audaces pioneros que gustaran de pasar un buen nmero de horas escribiendo instrucciones, "corriendo" el programa resultante y verificando y corrigiendo los errores o bugs que aparecieran. Adems, para no perder el "programa" resultante haba que "guardarlo" (almacenarlo) en una grabadora de astte, pues en esa poca no haba discos flexibles y mucho menos discos duros para las PC; este procedimiento poda tomar de 10 a 45 minutos, segn el programa. El panorama se modific totalmente con la aparicin de las computadoras personales con mejore circuitos, ms memoria, unidades de disco flexible y sobre todo con la aparicin de programas de aplicacin general en donde el usuario compra el programa y se pone a trabajar. Aparecen los programas procesadores de palabras como el clebre Word Star, la impresionante hoja de clculo (spreadsheet) Visicalc y otros ms que de la noche a la maana cambian la imagen de la PC. El sortware empieza a tratar de alcanzar el paso del hardware. Pero aqu aparece un nuevo elemento: el usuario. El usuario de las computadoras va cambiando y evolucionando con el tiempo. De estar totalmente desconectado a ellas en las mquinas grandes pasa la PC a ser pieza clave en el diseo tanto del hardware como del software. Aparece el concepto de human interface que es la relacin entre el usuario y su computadora. Se habla entonces de hardware ergonmico (adaptado a las dimensiones humanas para reducir el cansancio), diseos de pantallas antirreflejos y teclados que descansen la mueca. Con respecto al software se inicia una verdadera carrera para encontrar la manera en que el usuario pase menos tiempo capacitndose y entrenndose y ms tiempo produciendo. Se ponen al alcance programas con mens (listas de opciones) que orientan en todo momento al usuario (con el consiguiente aburrimiento de los usuarios expertos); otros programas ofrecen toda una artillera de teclas de control y teclas de funciones (atajos) para efectuar toda suerte de efectos en el trabajo (con la consiguiente desorientacin de los usuarios novatos). Se ofrecen un sinnmero de cursos prometiendo que en pocas semanas hacen de cualquier persona un experto en los programas comerciales. Pero el problema "constante" es que ninguna solucin para el uso de los programas es "constante". Cada nuevo programa requiere aprender nuevos controles, nuevos trucos, nuevos mens. Se empieza a sentir que la relacin usuario-PC no est acorde con los desarrollos del equipo y de la potencia de los programas. Hace falta una relacin amistosa entre el usuario y la PC. Las computadoras de esta generacin fueron: la Philco 212 (esta compaa se retir del mercado en 1964) y la UNVAC M460, la Control Data Corporation modelo 1604, seguida por la serie 3000, la BM mejor la 709 y sac al mercado la 7090, la National Cash Register empez a producir mquinas para proceso de datos de tipo comercial, introdujo el modelo NCR 315. La Radio Corporation of America introdujo el modelo 501, que manejaba el lenguaje COBOL, para procesos administrativos y comerciales. Despus sali al mercado la RCA 601. Tercera eneracin Con los progresos de la electrnica y los avances de comunicacin con las computadoras en la dcada de los 1960, surge la tercera generacin de las computadoras. Se inaugura con la BM 360 en abril de 1964.3 Las caractersticas de esta generacin fueron las siguientes: Su fabricacin electrnica esta basada en circuitos integrados. Su manejo es por medio de los lenguajes de control de los sistemas operativos. La BM produce la serie 360 con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85, 90, 195 que utilizaban tcnicas especiales del procesador, unidades de cinta de nueve canales, paquetes de discos magnticos y otras caractersticas que ahora son estndares (no todos los modelos usaban estas tcnicas, sino que estaba dividido por aplicaciones). El sistema operativo de la serie 360, se llam OS que contaba con varias configuraciones, inclua un conjunto de tcnicas de manejo de memoria y del procesador que pronto se convirtieron en estndares. En 1964 CDC introdujo la serie 6000 con la computadora 6600 que se consider durante algunos aos como la ms rpida. En la dcada de 1970, la BM produce la serie 370 (modelos 115, 125, 135, 145, 158, 168). UNVAC compite son los modelos 1108 y 1110, mquinas en gran escala; mientras que CDC produce su serie 7000 con el modelo 7600. Estas computadoras se caracterizan por ser muy potentes y veloces. A finales de esta dcada la BM de su serie 370 produce los modelos 3031, 3033, 4341. Burroughs con su serie 6000 produce los modelos 6500 y 6700 de avanzado diseo, que se reemplazaron por su serie 7000. Honey - Well participa con su computadora DPS con varios modelos. A mediados de la dcada de 1970, aparecen en el mercado las computadoras de tamao mediano, o minicomputadoras que no son tan costosas como las grandes (llamadas tambin como mainframes que significa tambin, gran sistema), pero disponen de gran capacidad de procesamiento. Algunas minicomputadoras fueron las siguientes: la PDP - 8 y la PDP - 11 de Digital Equipment Corporation, la VAX (Virtual Address eXtended) de la misma compaa, los modelos NOVA y ECLPSE de Data General, la serie 3000 y 9000 de Hewlett - Packard con varios modelos el 36 y el 34, la Wang y Honey - Well -Bull, Siemens de origen alemn, la CL fabricada en nglaterra. En la Unin Sovitica se utiliz la US (Sistema Unificado, Ryad) que ha pasado por varias generaciones. 'uarta :eneracin Aqu aparecen los microprocesadores que es un gran adelanto de la microelectrnica, son circuitos integrados de alta densidad y con una velocidad impresionante. Las microcomputadoras con base en estos circuitos son extremadamente pequeas y baratas, por lo que su uso se extiende al mercado industrial. Aqu nacen las computadoras personales que han adquirido proporciones enormes y que han influido en la sociedad en general sobre la llamada "revolucin informtica". En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de uso masivo y ms tarde forman la compaa conocida como la Apple que fue la segunda compaa ms grande del mundo, antecedida tan solo por BM; y esta por su parte es an de las cinco compaas ms grandes del mundo. En 1981 se vendieron 800 00 computadoras personales, al siguiente subi a 1 400 000. Entre 1984 y 1987 se vendieron alrededor de 60 millones de computadoras personales, por lo que no queda duda que su impacto y penetracin han sido enormes. Con el surgimiento de las computadoras personales, el software y los sistemas que con ellas de manejan han tenido un considerable avance, porque han hecho ms interactiva la comunicacin con el usuario. Surgen otras aplicaciones como los procesadores de palabra, las hojas electrnicas de clculo, paquetes grficos, etc. Tambin las industrias del Software de las computadoras personales crece con gran rapidez, Gary Kildall y William Gates se dedicaron durante aos a la creacin de sistemas operativos y mtodos para lograr una utilizacin sencilla de las microcomputadoras (son los creadores de CP/M y de los productos de Microsoft). No todo son microcomputadoras, por su puesto, las minicomputadoras y los grandes sistemas continan en desarrollo. De hecho las mquinas pequeas rebasaban por mucho la capacidad de los grandes sistemas de 10 o 15 aos antes, que requeran de instalaciones costosas y especiales, pero sera equivocado suponer que las grandes computadoras han desaparecido; por el contrario, su presencia era ya ineludible en prcticamente todas las esferas de control gubernamental, militar y de la gran industria. Las enormes computadoras de las series CDC, CRAY, Hitachi o BM por ejemplo, eran capaces de atender a varios cientos de millones de operaciones por segundo. ?uinta :eneracin En vista de la acelerada marcha de la microelectrnica, la sociedad industrial se ha dado a la tarea de poner tambin a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. Surge la competencia internacional por el dominio del mercado de la computacin, en la que se perfilan dos lderes que, sin embargo, no han podido alcanzar el nivel que se desea: la capacidad de comunicarse con la computadora en un lenguaje ms cotidiano y no a travs de cdigos o lenguajes de control especializados. Japn lanz en 1983 el llamado "programa de la quinta generacin de computadoras", con los objetivos explcitos de producir mquinas con innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya est en actividad un programa en desarrollo que persigue objetivos semejantes, que pueden resumirse de la siguiente manera: Procesamiento en paralelo mediante arquitecturas y diseos especiales y circuitos de gran velocidad. Manejo de lenguaje natural y sistemas de inteligencia artificial. El futuro previsible de la computacin es muy interesante, y se puede esperar que esta ciencia siga siendo objeto de atencin prioritaria de gobiernos y de la sociedad en conjunto. -4D1L4 D1 84# #1U-"## Las computadoras digitales actuales se ajustan al modelo propuesto por el matemtico John Von Neumann. De acuerdo con el, una caracterstica importante de este modelo es que tanto los datos como los programas, se almacenan en la memoria antes de ser utilizados. http://www.monografias.com/trabajos/histocomp/histocomp.shtml HISTORIA DE LA COMPUTACIN 1.1 RESEA HISTRICA
Todo comenz con mquinas destinadas a manejar nmeros, es as como nos remitimos a el baco, inventado por los babilonios all por el ao 1000 A... !tilizado sobre todo por los c"inos para la realizacin de operaciones sencillas, esta #ormado por una tablilla con una serie de cuentas que sirven para e#ectuar sumas $ restas.
%usto antes de morir en 1&1', el matemtico escoc(s %o"n )apier *mejor conocido por su invencin de lo+aritmos, desarroll un jue+o de palitos para calcular a las que llam -)apier .ones.- As llamados porque se tallaron las ramitas de "ueso o mar#il, los -bones- incorporaron el sistema lo+artmico. /os 0uesos de )apier tuvieron una in#luencia #uerte en el desarrollo de la re+la deslizante *cinco aos ms tarde, $ mquinas calculadoras subsecuentes que contaron con lo+aritmos.
1n 1&21 la primera re+la deslizante #ue inventada por el del matemtico in+l(s 3illiam 4u+"tred. /a re+la deslizante *llam -rculos de 5roporcin-, era un jue+o de discos rotatorios que se calibraron con los lo+aritmos de )apier. !no de los primeros aparatos de la in#ormtica anal+ica, la re+la deslizante se us normalmente *en un orden lineal, "asta que a comienzos de 16'0, cuando calculadoras porttiles comenzaron a ser ms popular.
1n 1&27 la primera calculadora mecnica #ue diseada por 3il"elm 8c"ic9ard en Alemania. /lamado -1l :eloj alculador-, la mquina incorpor los lo+aritmos de )apier, "acia rodar cilindros en un alber+ue +rande. 8e comision un :eloj alcualdor para %o"annes ;epler, el matemtico #amoso, pero #ue destruido por #ue+o antes de que se terminara.
!no de los antepasados mas directos de la computadora actual, #ue creada por el cient#ico #ranc(s Blaise Pasca en el si+lo <=>>*1&?2,. A sus 1@ aos, 5ascal invento su primera ma!i"a calculadora, capaz de sumar $ restar A $ todo ello a base de en+arzar mltiples ruedas dentadas.
1n 1&&& la primera mquina de multiplicar se invent por 8ir 8amuel Borland, entonces Amo de mecnicas a la corte de :e$ "arles >> de >n+laterra. 1l aparato const de una serie de ruedas, cada representaba, dieses, cientos, etc. !n al#iler del acero mova los diales para ejecutar las calculaciones. A di#erencia de la 5ascalina, el aparato no tena avanz automtico de en columnas.
Aos mas tarde, en 1&'7, #o$$%ie& 'o" Leib"i$( per#ecciono los estudios de 5ascal, $ lle+o a construir una ma!i"a que no solo sumaba $ restaba, sino que tambi(n multiplicaba, divida e incluso calculaba races cuadradas.
1n 1'&6 el %u+ador de Ajedrez Autmata #ue inventado por .arn 1mpellen, un noble "n+aro. 1l aparato $ sus secretos se le dieron a %o"ann )epomu9 Baelzel, un inventor de instrumentos musicales, quien recorri 1uropa $ los 1stados !nidos con el aparato, a #inales de 1'00 $ temprano 1@00. 5retendi ser una mquina pura, el Autmata inclua un ju+ador de ajedrez -robtico-. 1l Automatn era una sensacin dondequiera que iba, pero muc"as comentaristas, incluso el 1d+ar Allen 5oe #amoso, "a escrito crticas detalladas diciendo que ese era una -mquina pura.- 1n cambio, +eneralmente, siempre se cre$ que el aparato #ue operado por un "umano oculto en el armario debajo del tablero de ajedrez. 1l Autmata se destru$ en un incendio en 1@C&.
8e invent la primera mquina l+ica en 1''' por "arles Ba"on, el onde de 8tan"ope. 1l -demostrador l+ico- era un aparato tamao bolsillo que resolva silo+ismos tradicionales $ pre+untas elementales de probabilidad. Ba"on es el precursor de los componentes l+icos en computadoras modernas.
1n 1'60 )ose*+,Ma-ie )ac!a-&*1C'2D1@7?, utilizo $a-.e$as *e-%o-a&as para controlar un telar. 1l -%acquard /oom- se invent en 1@0? por %osep"DBarie %acquard. >nspirado por instrumentos musicales que se pro+ramaban usando papel a+ujereados, la mquina se pareca a una atadura del telar que podra controlar automticamente de dibujos usando una lnea tarjetas a+ujereadas. /a idea de %acquard, que revolucion el "ilar de seda, estaba #ormar la base de muc"os aparatos de la in#ormtica e idiomas de la pro+ramacin.
/a primera calculadora de produccin masiva se distribu$, empezando en 1@20, por "arles T"omas de olmar. 4ri+inalmente se les vendi a casas del se+uro 5arisienses, el -aritmmetro- de olmar operaba usando una variacin de la rueda de /eibniz. Bs de mil aritmmetro se vendieron $ eventualmente recibi una medalla a la 1E"ibicin >nternacional en /ondres en 1@&2.
Bquina capaz de e#ectuar una secuencia de operaciones mediante un pro+rama, de tal manera, que se realice un procesamiento sobre un conjunto de datos de entrada, obteni(ndose otro conjunto de datos de salida.
Iispositivo electrnico capaz de recibir un conjunto de instrucciones $ ejecutarlas realizando clculos sobre los datos num(ricos, o bien compilando $ correlacionando otros tipos de in#ormacin. 1s un calculador electrnico de elevada potencia equipado de memorias de +ran capacidad $ aparatos peri#(ricos, que permite solucionar con +ran rapidez $ sin intervencin "umana, durante el desarrollo del proceso problemas l+icos $ aritm(ticos mu$ complejos. 1.2 LA PRIMERA COMPUTADORA
Jue en 1@70, cuando se establecieron los principios de #uncionamiento de las modernas computadoras. 8u paternidad se debe al matemtico in+les C+a-les Babba3e, quien tras lanzar en 1@22 la denominada ma!i"a &i%e-e"cialD con nada menos que 6& ruedas dentadas $ 2? ejes, se lanzo en pos de su pro$ecto mas relevanteKla m4!i"a a"al5$ica*1@77,.
/a primera computadora #ue la mquina analtica creada por "arles .abba+e, pro#esor matemtico de la !niversidad de ambrid+e en el si+lo <><. /a idea que tuvo "arles .abba+e sobre un computador naci debido a que la elaboracin de las tablas matemticas era un proceso tedioso $ propenso a errores. 1n 1@27 el +obierno .ritnico lo apo$o para crear el pro$ecto de una mquina de di#erencias, un dispositivo mecnico para e#ectuar sumas repetidas.
Bientras tanto "arles %acquard *#ranc(s,, #abricante de tejidos, "aba creado un telar que poda reproducir automticamente patrones de tejidos le$endo la in#ormacin codi#icada en patrones de a+ujeros per#orados en tarjetas de papel r+ido. Al enterarse de este m(todo .abba+e abandon la mquina de di#erencias $ se dedic al pro$ecto de la mquina analtica que se pudiera pro+ramar con tarjetas per#oradas para e#ectuar cualquier clculo con una precisin de 20 d+itos.
1n 16?? se constru$ en la !niversidad de 0arvard, la Bar9 >, diseada por un equipo encabezado por 0oGard 0. Ai9en. 1sta mquina no est considerada como computadora electrnica debido a que no era de propsito +eneral $ su #uncionamiento estaba basado en dispositivos electromecnicos llamados relevadores.
1.6 TIPOS DE COMPUTADORAS
1. A"4lo3a /a computadora anlo+a es la que acepta $ procesa seales continuas, tales comoK #luctuaciones de voltaje o #recuencias. 1jemploK 1l termostato es la computadora anlo+a ms sencilla. 2. Di3i$al /a computadora di+ital es la que acepta $ procesa datos que "an sido convertidos al sistema binario. /a ma$ora de las computadoras son di+itales. 7. H5b-i&a /a computadora "brida es una computadora di+ital que procesa seales anlo+as que "an sido convertidas a #orma di+ital. 1s utilizada para control de procesos $ en robtica. ?. P-o*7si$o es*ecial /a computadora de propsito especial est dedicada a un solo propsito o tarea. 5ueden ser usadas para producir in#ormes del tiempo, monitorear desastres naturales, "acer lecturas de +asolina $ como medidor el(ctrico. 1jemploK carros de control remoto, "orno microoondas, relojes di+itales, cmaras, procesador de palabras, etc. C. P-o*7si$o 3e"e-al /a computadora de propsito +eneral se pro+rama para una variedad de tareas o aplicaciones. 8on utilizadas para realizar clculos matemticos, estadsticos, contabilidad comercial, control de inventario, nmina, preparacin de inventario, etc. 1jemploK -main#rames- o minicomputadoras.
ate+oras de las computadoras S!*e-com*!$a&o-a /a supercomputadora es lo mEimo en computadora, es la ms rpida $, por lo tanto, la ms cara. uesta millones de dlares $ se "acen de dos a tres al ao. 5rocesan billones de instrucciones por se+undo. 8on utilizadas para trabajos cient#icos, particularmente para crear modelos matemticos del mundo real, llamados simulacin.
8Mai"%-ame8 /os -main#rame- son computadoras +randes, li+eras, capaces de utilizar cientos de dispositivos de entrada $ salida. 5rocesan millones de instrucciones por se+undo. 8u velocidad operacional $ capacidad de procesar "acen que los +randes ne+ocios, el +obierno, los bancos, las universidades, los "ospitales, compaas de se+uros, lneas a(reas, etc. con#i(n en ellas. 8u principal #uncin es procesar +randes cantidades de datos rpidamente. 1stos datos estn accesibles a los usuarios del -main#rame- o a los usuarios de las microcomputadoras cu$os terminales estn conectados al -main#rame-. 8u costo #lucta entre varios cientos de miles de dlares "asta el milln. :equieren de un sistema especial para controlar la temperatura $ la "umedad. Tambi(n requieren de un personal pro#esional especializado para procesar los datos $ darle el mantenimiento. Mi"icom*!$a&o-a /a minicomputadora se desarroll en la d(cada de 16&0 para llevar a cabo tareas especializadas, tales como el manejo de datos de comunicacin. 8on ms pequeas, ms baratas $ ms #ciles de mantener e instalar que los -main#rames-. 8u costo est entre los cincuenta mil "asta varios cientos de miles. !sadas por ne+ocios, cole+ios $ a+encias +ubernamentales. 8u mercado "a ido disminu$endo desde que sur+ieron las microcomputadoras.
Mic-ocom*!$a&o-a /a microcomputadora es conocida como computadora personal o 5. 1s la ms pequea, +racias a los microprocesadores, ms barata $ ms popular en el mercado. 8u costo #lucta entre varios cientos de dlares "asta varios miles de dlares. 5uede #uncionar como unidad independiente o estar en red con otras microcomputadoras o como un terminal de un -main#rame- para eEpandir sus capacidades. 5uede ejecutar las mismas operaciones $ usar los mismos pro+ramas que muc"as computadoras superiores, aunque en menor capacidad. 1jemplosK B>T8 Altair, Bacintos", serie Apple >>, >.B 5, Iell, ompaq, FateGa$, etc. 1.9 #ENERACIONES DE COMPUTADORAS
P-ime-a #e"e-aci7"
1n esta +eneracin "aba una +ran desconocimiento de las capacidades de las computadoras, puesto que se realiz un estudio en esta (poca que determin que con veinte computadoras se saturara el mercado de los 1stados !nidos en el campo de procesamiento de datos.
1sta +eneracin abarco la d(cada de los cincuenta. L se conoce como la primera +eneracin. 1stas mquinas tenan las si+uientes caractersticasK 1stas mquinas estaban construidas por medio de tubos de vaco. 1ran pro+ramadas en len+uaje de mquina.
1n esta +eneracin las mquinas son +randes $ costosas *de un costo aproEimado de ciento de miles de dlares,.
1n 16C1 aparece la !)>=A *)>=ersAl omputer,, #ue la primera computadora comercial, que dispona de mil palabras de memoria central $ podan leer cintas ma+n(ticas, se utiliz para procesar el censo de 16C0 en los 1stados !nidos.
1n las dos primeras +eneraciones, las unidades de entrada utilizaban tarjetas per#oradas, retomadas por 0erman 0ollerit" *1@&0 D 1626,, quien adems #und una compaa que con el paso del tiempo se conocera como >.B *>nternational .ussines Bac"ines,.
Iespu(s se desarroll por >.B la IBM 701 de la cual se entre+aron 1@ unidades entre 16C7 $ 16C'. 5osteriormente, la compaa :emin+ton :and #abric el modelo 1107, que competa con la '01 en el campo cient#ico, por lo que la >.B desarrollo la '02, la cual present problemas en memoria, debido a esto no dur en el mercado.
/a computadora ms eEitosa de la primera +eneracin #ue la >.B &C0, de la cual se produjeron varios cientos. 1sta computadora que usaba un esquema de memoria secundaria llamado tambor ma+n(tico, que es el antecesor de los discos actuales.
4tros modelos de computadora que se pueden situar en los inicios de la se+unda +eneracin sonK la !)>=A @0 $ 60, las >.B '0? $ '06, .urrou+"s 220 $ !)>=A 110C.
Se3!"&a #e"e-aci7"
erca de la d(cada de 16&0, las computadoras se+uan evolucionando, se reduca su tamao $ creca su capacidad de procesamiento. Tambi(n en esta (poca se empez a de#inir la #orma de comunicarse con las computadoras, que reciba el nombre de pro+ramacin de sistemas.
/as caractersticas de la se+unda +eneracin son las si+uientesK M 1stn construidas con circuitos de transistores. M 8e pro+raman en nuevos len+uajes llamados len+uajes de alto nivel.
1n esta +eneracin las computadoras se reducen de tamao $ son de menor costo. Aparecen muc"as compaas $ las computadoras eran bastante avanzadas para su (poca como la serie C000 de .urrou+"s $ la AT/A8 de la !niversidad de Banc"ester.
Al+unas de estas computadoras se pro+ramaban con cintas per#oradas $ otras ms por medio de cableado en un tablero. /os pro+ramas eran "ec"os a la medida por un equipo de eEpertosK analistas, diseadores, pro+ramadores $ operadores que se manejaban como una orquesta para resolver los problemas $ clculos solicitados por la administracin. 1l usuario #inal de la in#ormacin no tena contacto directo con las computadoras. 1sta situacin en un principio se produjo en las primeras computadoras personales, pues se requera saberlas -pro+ramar- *alimentarle instrucciones, para obtener resultadosA por lo tanto su uso estaba limitado a aquellos audaces pioneros que +ustaran de pasar un buen nmero de "oras escribiendo instrucciones, -corriendo- el pro+rama resultante $ veri#icando $ corri+iendo los errores o bu+s que aparecieran. Adems, para no perder el -pro+rama- resultante "aba que -+uardarlo- *almacenarlo, en una +rabadora de astte, pues en esa (poca no "aba discos #leEibles $ muc"o menos discos duros para las 5A este procedimiento poda tomar de 10 a ?C minutos, se+n el pro+rama. 1l panorama se modi#ic totalmente con la aparicin de las computadoras personales con mejores circuitos, ms memoria, unidades de disco #leEible $ sobre todo con la aparicin de pro+ramas de aplicacin +eneral en donde el usuario compra el pro+rama $ se pone a trabajar. Aparecen los pro+ramas procesadores de palabras como el c(lebre 3ord 8tar, la impresionante "oja de clculo *spreads"eet, =isicalc $ otros ms que de la noc"e a la maana cambian la ima+en de la 5. 1l sortGare empieza a tratar de alcanzar el paso del "ardGare. 5ero aqu aparece un nuevo elementoK el usuario. /as computadoras de esta +eneracin #ueronK la 5"ilco 212 *esta compaa se retir del mercado en 16&?, $ la !)>=A B?&0, la ontrol Iata orporation modelo 1&0?, se+uida por la serie 7000, la >.B mejor la '06 $ sac al mercado la '060, la )ational as" :e+ister empez a producir mquinas para proceso de datos de tipo comercial, introdujo el modelo ): 71C.
Te-ce-a 3e"e-aci7"
on los pro+resos de la electrnica $ los avances de comunicacin con las computadoras en la d(cada de los 16&0, sur+e la tercera generacin de las computadoras. 8e inau+ura con la >.B 7&0 en abril de 16&?.7
/as caractersticas de esta +eneracin #ueron las si+uientesK 8u #abricacin electrnica esta basada en circuitos inte+rados. 8u manejo es por medio de los len+uajes de control de los sistemas operativos. /a >.B produce la serie 7&0 con los modelos 20, 22, 70, ?0, C0, &C, &', 'C, @C, 60, 16C que utilizaban t(cnicas especiales del procesador, unidades de cinta de nueve canales, paquetes de discos ma+n(ticos $ otras caractersticas que a"ora son estndares *no todos los modelos usaban estas t(cnicas, sino que estaba dividido por aplicaciones,.
1l sistema operativo de la serie 7&0, se llam 48 que contaba con varias con#i+uraciones, inclua un conjunto de t(cnicas de manejo de memoria $ del procesador que pronto se convirtieron en estndares. 1n 16&? I introdujo la serie &000 con la computadora &&00 que se consider durante al+unos aos como la ms rpida.
1n la d(cada de 16'0, la >.B produce la serie 7'0 *modelos 11C, 12C, 17C, 1?C, 1C@, 1&@,. !)>=A compite son los modelos 110@ $ 1110, mquinas en +ran escalaA mientras que I produce su serie '000 con el modelo '&00. 1stas computadoras se caracterizan por ser mu$ potentes $ veloces.
A #inales de esta d(cada la >.B de su serie 7'0 produce los modelos 7071, 7077, ?7?1. .urrou+"s con su serie &000 produce los modelos &C00 $ &'00 de avanzado diseo, que se reemplazaron por su serie '000. 0one$ D 3ell participa con su computadora I58 con varios modelos.
A mediados de la d(cada de 16'0, aparecen en el mercado las computadoras de tamao mediano, o minicomputadoras que no son tan costosas como las +randes *llamadas tambi(n como mainframes que si+ni#ica tambi(n, +ran sistema,, pero disponen de +ran capacidad de procesamiento. Al+unas minicomputadoras #ueron las si+uientesK la 5I5 D @ $ la 5I5 D 11 de Ii+ital 1quipment orporation, la =A< *=irtual Address e<tended, de la misma compaa, los modelos )4=A $ 1/>581 de Iata Feneral, la serie 7000 $ 6000 de 0eGlett D 5ac9ard con varios modelos el 7& $ el 7?, la 3an+ $ 0one$ D 3ell D.ull, 8iemens de ori+en alemn, la >/ #abricada en >n+laterra. 1n la !nin 8ovi(tica se utiliz la !8 *8istema !ni#icado, :$ad, que "a pasado por varias +eneraciones.
C!a-$a #e"e-aci7"
Aqu aparecen los microprocesadores que es un +ran adelanto de la microelectrnica, son circuitos inte+rados de alta densidad $ con una velocidad impresionante. /as microcomputadoras con base en estos circuitos son eEtremadamente pequeas $ baratas, por lo que su uso se eEtiende al mercado industrial. Aqu nacen las computadoras personales que "an adquirido proporciones enormes $ que "an in#luido en la sociedad en +eneral sobre la llamada "revolucin informtica".
1n 16'& 8teve 3oznia9 $ 8teve %obs inventan la primera microcomputadora de uso masivo $ ms tarde #orman la compaa conocida como la Apple que #ue la se+unda compaa ms +rande del mundo, antecedida tan solo por >.BA $ esta por su parte es an de las cinco compaas ms +randes del mundo. 1n 16@1 se vendieron @00 00 computadoras personales, al si+uiente subi a 1 ?00 000. 1ntre 16@? $ 16@' se vendieron alrededor de &0 millones de computadoras personales, por lo que no queda duda que su impacto $ penetracin "an sido enormes.
on el sur+imiento de las computadoras personales, el so#tGare $ los sistemas que con ellas de manejan "an tenido un considerable avance, porque "an "ec"o ms interactiva la comunicacin con el usuario. 8ur+en otras aplicaciones como los procesadores de palabra, las "ojas electrnicas de clculo, paquetes +r#icos, etc. Tambi(n las industrias del 8o#tGare de las computadoras personales crece con +ran rapidez, Far$ ;ildall $ 3illiam Fates se dedicaron durante aos a la creacin de sistemas operativos $ m(todos para lo+rar una utilizacin sencilla de las microcomputadoras *son los creadores de 5NB $ de los productos de Bicroso#t,.
)o todo son microcomputadoras, por su puesto, las minicomputadoras $ los +randes sistemas continan en desarrollo. Ie "ec"o las mquinas pequeas rebasaban por muc"o la capacidad de los +randes sistemas de 10 o 1C aos antes, que requeran de instalaciones costosas $ especiales, pero sera equivocado suponer que las +randes computadoras "an desaparecidoA por el contrario, su presencia era $a ineludible en prcticamente todas las es#eras de control +ubernamental, militar $ de la +ran industria.
/as enormes computadoras de las series I, :AL, 0itac"i o >.B por ejemplo, eran capaces de atender a varios cientos de millones de operaciones por se+undo.
:!i"$a #e"e-aci7"
1n vista de la acelerada marc"a de la microelectrnica, la sociedad industrial se "a dado a la tarea de poner tambi(n a esa altura el desarrollo del so#tGare $ los sistemas con que se manejan las computadoras. 8ur+e la competencia internacional por el dominio del mercado de la computacin, en la que se per#ilan dos lderes que, sin embar+o, no "an podido alcanzar el nivel que se deseaK la capacidad de comunicarse con la computadora en un len+uaje ms cotidiano $ no a trav(s de cdi+os o len+uajes de control especializados.
%apn lanz en 16@7 el llamado -pro+rama de la quinta +eneracin de computadoras-, con los objetivos eEplcitos de producir mquinas con innovaciones reales en los criterios mencionados. L en los 1stados !nidos $a est en actividad un pro+rama en desarrollo que persi+ue objetivos semejantes, que pueden resumirse de la si+uiente maneraK 5rocesamiento en paralelo mediante arquitecturas $ diseos especiales $ circuitos de +ran velocidad. Banejo de len+uaje natural $ sistemas de inteli+encia arti#icial. 1l #uturo previsible de la computacin es mu$ interesante, $ se puede esperar que esta ciencia si+a siendo objeto de atencin prioritaria de +obiernos $ de la sociedad en conjunto. http://www.gestiopolis.com/recursos4/docs/eco/histocom.htm#HSTORA %20DE%20LA%20COMPUTACN 1.2 Impacto de las computadoras en la sociedad 1.3 Definiciones Lenua!e de "lto #ivel$ ba!o nivel$ ensamblador % ma&uina. Le"3!a.e M4!i"a 8on aqu(llos que estn escritos en len+uajes directamente inteli+ibles por la mquina *computadora,, $a que sus instrucciones son cadenas binarias (cadenas o series de caracteres de d+itos 0 $ 1, que especi#ican una operacin $ las posiciones *direccin, de memoria implicadas en la operacin se denominan instrucciones de mquina o cdigo mquina. 1l cdi+o mquina es el conocido cdigo binario. /as instrucciones en len+uaje mquina dependen del "ardGare de la computadora $, por tanto, di#erirn de una computadora a otra.
Ventaas del !enguae Mquina 5osibilidad de car+ar *trans#erir un pro+rama a la memoria, sin necesidad de traduccin posterior, lo que supone una velocidad de ejecucin superior a cualquier otro len+uaje de pro+ramacin.
"esventaas del !enguae Mquina Ii#icultad $ lentitud en la codi#icacin. 5oca #iabilidad. Fran di#icultad para veri#icar $ poner a punto los pro+ramas. /os pro+ramas solo son ejecutables en el mismo procesador *5!,.
1n la actualidad, las desventajas superan a las ventajas, lo que "ace prcticamente no recomendables a los len+uajes mquinas.
Le"3!a.es &e Ba.o Ni;el 8on ms #ciles de utilizar que los len+uajes mquina, pero al i+ual que ellos, dependen de la mquina en particular. 1l len+uaje de bajo nivel por eEcelencia es el ensamblador. /as instrucciones en len+uaje ensamblador son instrucciones conocidas como nemot#cnicos. 5or ejemplo, nemot(cnicos tpicos de operaciones aritm(ticas son K en in+l(s K AII, 8!., I>=, etc. A en espaol K 8!B, :18, I>=, etc.
!na instruccin tpica de suma sera K AII B, ), 5
1sta instruccin si+ni#ica -sumar el contenido en la posicin de memoria B al nmero almacenado en la posicin de memoria ) $ situar el resultado en la posicin de memoria 5- . 1videntemente es ms sencillo recordar la instruccin anterior con un nemot(cnico que su equivalente en cdi+o mquina. 0110 1001 1010 1011 !n pro+rama escrito en len+uaje ensamblador, requiere de una #ase de traduccin al len+uaje mquina para poder ser ejecutado directamente por la computadora. 1l pro+rama ori+inal escrito en len+uaje ensamblador se denomina programa fuente $ el pro+rama traducido en len+uaje mquina se conoce como programa obeto, el cual $a es directamente entendible por la computadora.
'e"$a.as &el le"3!a.e e"sambla&o- %-e"$e al le"3!a.e m4!i"a Ba$or #acilidad de codi#icacin $, en +eneral, su velocidad de clculo.
Des;e"$a.as &el le"3!a.e e"sambla&o- Iependencia total de la mquina lo que impide la transportabilidad de los pro+ramas *posibilidad de ejecutar un pro+rama en di#erentes mquinas. 1l len+uaje ensamblador del 5 es distinto del len+uaje ensamblador del Apple Bac"intos".
/a #ormacin de los pro+ramadores es ms compleja que la correspondiente a los pro+ramadores de alto nivel, $a que eEi+e no solo las t(cnicas de pro+ramacin, sino tambi(n el conocimiento del interior de la mquina.
/os len+uajes ensamblador tienen sus aplicaciones mu$ reducidas, se centran bsicamente en aplicaciones de tiempo real, control de procesos $ de dispositivos electrnicos.
Le"3!a.es &e Al$o Ni;el 1stos len+uajes son los ms utilizados por los pro+ramadores. 1stn diseados para que las personas escriban $ entiendan los pro+ramas de un modo muc"o ms #cil que los len+uajes mquina $ ensambladores. !n pro+rama escrito en len+uaje de alto nivel es independiente de la mquina *las instrucciones no dependen del diseo del "ardGare o de una computadora en particular,, por lo que estos pro+ramas son portables o transportables. /os pro+ramas escritos en len+uaje de alto nivel pueden ser ejecutados con poca o nin+una modi#icacin en di#erentes tipos de computadoras.
'e"$a.as &e los le"3!a.es &e al$o "i;el 1l tiempo de #ormacin de los pro+ramadores es relativamente corto comparado con otros len+uajes. /a escritura de pro+ramas se basa en re+las sintcticas similares a los len+uajes "umanos. )ombres de las instrucciones tales como :1AI, 3:>T1, 5:>)T, 451), etc. /as modi#icaciones $ puestas a punto de los pro+ramas son ms #ciles. :educcin del coste de los pro+ramas. Transportabilidad.
Des;e"$a.as &e los le"3!a.es &e al$o "i;el >ncremento del tiempo de puesta a punto al necesitarse di#erentes traducciones del pro+rama #uente para conse+uir el pro+rama de#initivo. )o se aprovec"an los recursos internos de la mquina que se eEplotan muc"o mejor en len+uajes mquina $ ensambladores. Aumento de la ocupacin de memoria. 1l tiempo de ejecucin de los pro+ramas es muc"o ma$or.
5ara una mejor compresin de este tema se de#inir el concepto de programa, por ser este un t(rmino mu$ utilizado en el dise$o estructurado de algoritmos. 1l nico len+uaje que realmente maneja una computadora es el len+uaje Bquina, este len+uaje est #ormado eEclusivamente por nmeros binarios. Adems un pro+rama en len+uaje mquina debe especi#icar todos los detalles re#erentes al "ardGare, lo que "ace que adems de mu$ lar+o, sea dependiente de la mquina en que se trabaje. 5or su parte un pro+rama escrito en un len+uaje de alto nivel, est compuesto de sentencias en un len+uaje ms cercano al len+uaje natural con respecto al primero. !n len+uaje de alto nivel es por tanto ms #cil de entender $ aprender, permite a los pro+ramadores olvidarse de los detalles del "ardGare $ concentrarse en la l+ica del pro+ramaA adems produce pro+ramas que se pueden ejecutar en di#erentes equipos de cmputo con pocos o nin+n cambio. 1ste curso se basar en el len+uaje A)8> . /1)F!A%1 I1 A/T4 )>=1/ /en+uaje de pro+ramacin parecidos a la len+ua del usuario *+eneralmente al in+l(s,. /os len+uajes de bajo nivel estn ms cercanos a los len+uajes comprensibles para el ordenador. omo los len+uajes de alto nivel "an de pasarse a una #orma que el ordenador pueda comprender antes de procesarlos, su ejecucin es ms lenta que la de los len+uajes de bajo nivel. /1)F!A%1 I1 .A%4 )>=1/ /en+uaje parecido al utilizado en el ordenador. /1)F!A%1 BAO!>)AK 1s el escaln in#erior al len+uaje de bajo nivelA es el len+uaje que el ordenador entiende directamente . +$$*<==>>>.i"&a?a.com=mo&!les=&ic$io"a-?=le$$e-.*+*@le$$e-ALBlimi$eA1C :!e es e"sambla&o- ? *a-a !e si-;e@ uando se empezaron a utilizar smbolos nmot(cnicos, se escribieron pro+ramas para traducir automticamente los pro+ramas escritos en len+uaje ensamblador a len+uaje mquina. A estos pro+ramas traductores se les llamo e"sambla&o-es.
LEN#UA)E DE ALTO NI'EL , 1s un tipo de len+uaje de pro+ramacin en el que el ordenador necesita un int(rprete para traducir las instrucciones enviadas debido a que son mu$ parecidas al len+uaje "umano. LEN#UA)E DE BA)O NI'EL , 1s aquel len+uaje de pro+ramacin que permite aumentar la velocidad de ejecucin de los pro+ramas, $a que son instrucciones simples $ no necesita un int(rprete para traducirlas. "ttpKNNGGG.ve+avaldavia.comNla#erttNll."tm Un lenguaje de bajo nivel es aquel que se programa en modo de programacin baja, como assembler(Ensamblador) Y un lenguaje de alto nivel es aquel le se programa utilizando un lenguaje avanzado (Como Visual Basic, C u otros) /en+uajes de alto nivel 8on len+uajes que no dependen del ordenador sobre el que se van a ejecutar, aunque en al+unos casos, el mismo len+uaje necesita di#erentes dialectos, se+n la arquitectura del ordenador o el sistema operativo sobre el que se ejecute. 8on cada vez ms parecidos al len+uaje empleado para la comunicacin verbal. 5or supuesto se escriben en in+l(s. Aunque se "an propuesto deversos estndares, la estandarizacin "ace menos e#iciente la productividad en su escritura $ ejecucin, por lo que los #abricantes pre#ieren crear pro+ramas cada vez ms ajustados a la mquina sobre la que se van a ejecutar $ muc"o ms e#icaces, apareciendo en pocos aos distintas versiones mejoradas de cada uno de ellos. 1n la actualidad, la +eneracin de cdi+o #uente se va reduciendo cada vez ms debido a los +eneradores automticos de cdi+o a partir de diseos visuales creados por los pro+ramadores. 1stos len+uajes poseen rdenes que ejecutan instrucciones, operadores que relacionan datos de tipo num(rico, de teEto, de #ec"a, l+icos, etc. Tambi(n poseen instrucciones declarativas para de#inir constantes o variables $ permiten incluir tantos comentarios como se desee. 1n al+unos len+uajes se pueden crear bibliotecas mal traducidas, como libreras, que contienen eEtensiones del len+uaje con nuevas instrucciones. 1stas bibliotecas puden ser adquiridas o creadas por los pro+ramadores insertando su cdi+o #uente como parte del cdi+o ori+inal de ese len+uaje. !n ejemplo puede ser cuando se de#inen dos variables en las que se desarrollan los valores num(ricos a sumar. 8e escriben los teEtos -5rimer nmeroK - $ -8e+undo nmeroK -. /a instruccin read se especi#ica para in#ormar a la memoria de los datos de teclado que se "a$an introducido. 1n la memoria se e#ecta la suma $ aparece en una determinada posicin de la pantalla. /os len+uajes de alto nivel necesitan de pro+ramas traductores para poder ser ejecutados. 0a$ dos tipos de traductoresK los compiladores $ los int(rpretes. 1nsambladores 8on len+uajes en los que a cada instruccin en cdi+o #uente le corresponde una instruccin en cdi+o mquina. 5oseen relativamente pocas instrucciones $ no utilizan direcciones #sicas de memoria, sino que permiten el uso de direcciones simblicas $ de comentarios. 5ara ser ejecutado un pro+rama escrito con len+uaje ensamblador necesita ser traducido, utilizndose para ello un -ensamblador- que +enera cdi+o mquina $ elimina los comentarios. 1l ensamblador +enera una tabla que mantiene re#erencias entre las direcciones simblicas de datos con las direcciones #sicas. 1n al+unos len+uajes ensambladores, que poseen cdi+o eEtendido, a determinadas instrucciones les corresponden varias instrucciones de cdi+o mquina. /en+uaje mquina 1l len+uaje mquina depende de la arquitectura del ordenador, siendo interpretado directamente por el ordenador sin nin+una modi#icacin. 5or las dos razones antes eEpuestas, su velocidad de ejecucin es mu$ alta. /a codi#icacin de los pro+ramas en len+uaje mquina se "ace en binario, octal o "eEadecimal, por lo que no es #cilmente le+ible por el pro+ramador. /os pro+ramas en len+uaje mquina utilizan direcciones #sicas de memoria para almacenar datos. 8on interpretables por ordenadores con el mismo tipo de arquitectura. 5or ejemplo, un pro+rama escrito para una estacin de trabajo de Ii+ital no puede ser interpretado correctamente por una estacin de trabajo de >.B o por un ordenador personal, $ viceversa. 1n cambio, un pro+rama escrito en len+uaje mquina para un ordenador personal con procesador 2@& puede ser inerpretado por un ?@&, $a que ambos procesadores comparten las mismas instrucciones. 1ste tipo de len+uaje ejecuta multitud de operaciones sencillas rpidamente. 5or ejemplo, al+unos pro+ramas no tienen instrucciones para la multiplicacin, por lo que "an de ejecutarlas como una sucesin de sumas, es decir, almacenando valores intermedios en memoria. "ttpKNNGGG.+aleon.comN9ronenNlen+uajes."tm /a entrada para un ensamblador es un *-o3-ama %!e"$e escrito en len+uaje ensamblador. /a salida es un *-o3-ama ob.e$o, escrito en len+uaje de mquina. 1l pro+rama objeto inclu$e tambi(n la in#ormacin necesaria para que el ca-3a&o- pueda preparar el pro+rama objeto para su ejecucin. 5ara evitar con#usiones, de aqu en adelante llamaremos le"3!a.e e"sambla&o- al conjunto de nemot(cnicos $ a las re+las para su manejo. Al pro+rama que traduce un pro+rama objeto a partir de un pro+rama escrito en len+uaje ensamblador lo llamaremos e"sambla&o-. Mo$i;os *a-a !$ili(a-lo. :apidezK omo el pro+ramador directamente selecciona las instrucciones que se ejecutan en el pro+rama, el pro+rama #inal queda mas optimizado que un pro+rama +enerado por un compilador. Ba$or control de la computadoraK !n pro+rama puede accesar directamente cualquier componente $ peri#(rico de la computadora. >ndependencia del len+uajeK )o depende de libreras o del len+uaje mismo para realizar una tarea especi#ica. /en+uajes como el .asic limitan al pro+ramador a lo que el len+uaje puede "acer. /a ma$ora de las computadoras pueden ensamblarK /os recursos necesarios para ensamblar un pro+rama son muc"o menores que los compiladores o interpretes. 1l ensamblador +eneralmente es ms rpido ensamblando un pro+rama que un compilador +enerando un arc"ivo ejecutable.
Mo$i;os *a-a "o !$ili(a-lo. Iesa#ortunadamente, tambi(n eEisten motivos para no crear los pro+ramas con ensamblador. Iependencia del "ardGareK 1l cdi+o se "ace en eEtremo dependiente del microprocesador, de los dispositivos, de los controladores, etc. 1ste punto ser analizado con mas detenimiento en dependencias de "ardGare. Ba$or tiempo de codi#icacinK 1l numero de lneas de un pro+rama "ec"o en ensamblador es ma$or a uno "ec"o en un len+uaje de alto nivel *por ejemploK Juncin en puede realizar varias decenas o centenas de instrucciones del microprocesador,. omprensin mas pro#unda de la computadoraK 1ntender un len+uaje de alto nivel es +eneralmente ms sencillo que el ensamblador. omprender ensamblador requiere conocimientos ms eEactos sobre el #uncionamiento interno de la computadora. 1rrores mas #recuentes en el pro+ramaK 1l evitar un error o encontrar al+uno que $a eEista es di#cil. /as "erramientas para este caso *como el ode=ieG $ el TurboIebbu+er, a$udan en +ran medida a ver lo que esta ocurriendo en la maquina, pero no localizan los errores. E"$o"cesD c!a"&o !$ili(o e"sambla&o- ? c!a"&o "o@ Iepende del pro+rama a desarrollar. 8i el pro+rama debe controlar en +ran medida los componentes internos de la computadora o debe ser lo su#icientemente veloz, entonces es recomendable utilizarlo. 8i se requiere un sistema +rande $ no se dispone de muc"o tiempo para entre+arlo, entonces es mejor juntar un len+uaje de alto nivel con ensamblador *las #unciones bsicas del pro+rama realizarlas en ensamblador, $ el pro+rama en +eneral codi#icarlo con el len+uaje de alto nivel,. 1ste punto se discute mas adelante en ensamblador $ len+uajes de alto nivel. "ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNpro+sis1Ntema22."tm Tipos de 1nsambladores. Aunque todos los ensambladores realizan bsicamente las mismas tareas, podemos clasi#icarlos de acuerdo a caractersticas. As podemos clasi#icarlos enK E"sambla&o-es C-!(a&os EC-oss,Assemble-F. 8e denominan as los ensambladores que se utilizan en una computadora que posee un procesador di#erente al que tendrn las computadoras donde va a ejecutarse el pro+rama objeto producido. 1l empleo de este tipo de traductores permite aprovec"ar el soporte de medios #sicos *discos, impresoras, pantallas, etc.,, $ de pro+ramacin que o#recen las mquinas potentes para desarrollar pro+ramas que lue+o los van a ejecutar sistemas mu$ especializados en determinados tipos de tareas.
E"sambla&o-es Resi&e"$es. 8on aquellos que permanecen en la memoria principal de la computadora $ car+an, para su ejecucin, al pro+rama objeto producido. 1ste tipo de ensamblador tiene la ventaja de que se puede comprobar inmediatamente el pro+rama sin necesidad de transportarlo de un lu+ar a otro, como se "aca en crossDassembler, $ sin necesidad de pro+ramas simuladores. 8in embar+o, puede presentar problemas de espacio de memoria, $a que el traductor ocupa espacio que no puede ser utilizado por el pro+ramador. Asimismo, tambi(n ocupar memoria el pro+rama #uente $ el pro+rama objeto. 1sto obli+a a tener un espacio de memoria relativamente amplio. 1s el indicado para desarrollos de pequeos sistemas de control $ sencillos automatismo empleando microprocesadores. /a ventaja de estos ensambladores es que permiten ejecutar inmediatamente el pro+ramaA la desventaja es que deben mantenerse en la memoria principal tanto el ensamblador como el pro+rama #uente $ el pro+rama objeto.
Mac-oe"sambla&o-es. 8on ensambladores que permiten el uso de macroinstrucciones *macros,. Iebido a su potencia, normalmente son pro+ramas robustos que no permanecen en memoria una vez +enerado el pro+rama objeto. 5uede variar la complejidad de los mismos, dependiendo de las posibilidades de de#inicin $ manipulacin de las macroinstrucciones, pero normalmente son pro+ramas bastantes complejos, por lo que suelen ser ensambladores residentes.
Mic-oe"sambla&o-es. Feneralmente, los procesadores utilizados en las computadoras tienen un repertorio #ijo de instrucciones, es decir, que el int(rprete de las mismas interpretaba de i+ual #orma un determinado cdi+o de operacin. 1l pro+rama que indica al int(rprete de instrucciones de la !5 cmo debe actuar se denomina micropro+rama. 1l pro+rama que a$uda a realizar este micropro+rama se llama microensamblador. 1Eisten procesadores que permiten la modi#icacin de sus micropro+ramas, para lo cual se utilizan microensambladores.
E"sambla&o-es &e !"a %ase. 1stos ensambladores leen una lnea del pro+rama #uente $ la traducen directamente para producir una instruccin en len+uaje mquina o la ejecuta si se trata de una pseudoinstruccin. Tambi(n va constru$endo la tabla de smbolos a medida que van apareciendo las de#iniciones de variables, etiquetas, etc. Iebido a su #orma de traduccin, estos ensambladores obli+an a de#inir los smbolos antes de ser empleados para que, cuando aparezca una re#erencia a un determinado smbolo en una instruccin, se conozca la direccin de dic"o smbolo $ se pueda traducir de #orma correcta. 1stos ensambladores son sencillos, baratos $ ocupan poco espacio, pero tiene el inconveniente indicado.
E"sambla&o-es &e &os %ases. /os ensambladores de dos #ases se denominan as debido a que realizan la traduccin en dos etapas. 1n la primera #ase, leen el pro+rama #uente $ constru$en una $abla &e s5mbolosA de esta manera, en la se+unda #ase, vuelven a leer el pro+rama #uente $ pueden ir traduciendo totalmente, puesto que conocen la totalidad de los smbolos utilizados $ las posiciones que se les "a asi+nado. 1stos ensambladores son los ms utilizados en la actualidad. "ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNpro+sis1Ntema221."tm 1l proceso de ensamble de uno$ dos o m,s pasos. omo se vio en la seccin anterior, eEisten ensambladores que realizan su tarea en una o ms #ases o pasos. 1l proceso de ensamble de un paso consiste en leer una lnea de pro+rama #uente $ traducirla a len+uaje mquina cuando se trata de una instruccin, o se ejecuta si es una seudoinstruccin. /a tabla de smbolos se va constru$endo a medida que se avanza en la lectura de las lneas del pro+rama #uente. 5ara que el ensamble de un paso #unciones, todos los smbolos deben estar de#inidos antes de emplearse. 1sto debido a que, para traducir correctamente cada instruccin, se debe conocer la direccin de cada uno de los smbolos que intervienen en ella. 1n otras palabras, no pueden quedar re#erencias pendientes porque $a no "abr otra oportunidad de resolverlas. Tampoco podrn "acerse saltos "acia lneas posteriores. )o es posible saltar "acia una lnea cu$a etiqueta todava no "a sido de#inida. 5ara resolver el problema que presenta el proceso de ensamble de un paso, se utiliza el proceso de ensamble de dos pasos o #ases. 1n la primera #ase, se lee el pro+rama #uente $ se constru$e la tabla de smbolos. 1n la se+unda #ase, se vuelve a leer el pro+rama #uente $ se traduce totalmente $a que se conoce la totalidad de los smbolos utilizados *inclu$endo las etiquetas, $ las posiciones de memoria que se les "an asi+nado. omo $a se conocen las direcciones de las etiquetas utilizadas, pueden realizarse saltos "acia adelante. "ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNpro+sis1Ntema222."tm INTRODUCCIN El ensamblador es el lenguaje mas directo con el ordenador, aunque tambin se le ha llamado Cdigo Mquina, en realidad no es as, esto es debido a la mala utilizacin del trmino Lenguaje Mquina o Cdigo Mquina, ste lenguaje en realidad est formado por unos ceros, que son los datos que realmente utilizan los ordenadores! Lenguaje Ensamblador, es en realidad el lenguaje propio del microprocesador del ordenador, el microprocesador , tambin llamado u", es en realidad el centro del ordenador, normalmente los conocemos por sus nombre, #$%, &$%, '$% , "entium, etc!! Estos son los nombres que les dan las fbricas de dichos microprocesadores! El lenguaje que utilizan los microprocesadores es el lenguaje ensamblador, ste lenguaje est formado por una serie de palabras o instrucciones las cuales son las ms directas con el microprocesador, es por ello , por lo que es el lenguaje ms rpido que ha, dado que es el lenguaje directo no necesita ninguna con(ersin, es por ello , por lo que se recurre a ste lenguaje para hacer determinadas funciones o programas que requieren mucha (elocidad , como los juegos , inteligencia artificial, etc!!! )ste curso pretende que una (ez terminado, tenga usted los conocimientos necesarios para adentrarse profundamente en la utilizacin de ste lenguaje para cuando le sea necesario hacer ritunas, funcione, etc! que le requieran ms (elocidad! "ttpKNNa$udatecnica.solodrivers.comNmanualesPpro+ramacionPensamblador."tm Uso % aplicaciones del lenua!e ensamblador. Importancia del Estudio y Uso de Ensamblador Ayuda a conocer a detalle cmo trabaa un %&' Util para !lectrnica y "i#tema# De#arrolla $abilidade# de Programacin A%an&ada 'eore# Oportunidade# de !mpleo en la Indu#tria Aplicaciones del Lenguaje Ensamblador Sistemas embebidos@impresoras, cmaras, autos, armas, juguetes, etc. Tiempo Real( en la industria manufactura, e.g. adquisicin datos, control robots Tran#porte( barcos, a(iones, sondas espaciales, etc. !ntretenimiento( *raficacin, Multimedia, Cine +ideo,uegos DSP( "rocesamiento de -e.ales, +oz e /mgenes Otra#( Medicina, 0erona1tica, 0rmamento, etc. Uso de lenua!e ensamblador Hay algn debate encima de la utilidad del lenguaje ensamblador. En muchos casos, compiladores modernos pueden rendir lenguajes de alto nivel en el cdigo como eso corre tan rpido como la mano que escribe en ensamblador. Sin embargo, algunos clculos discretos aun pueden darse mas rpidamente corriendo cdigo en ensamblador, y alguna programacin de bajo nivel es simplemente mas fcil de hacer en ensamblador. Algunas tareas de sistemas-dependientes realizadas por sistemas operativos simplemente no pueden ser expresadas en lenguajes de alto nivel. Muchos compiladores tambin rinden lenguajes de alto nivel en ensamblador antes de compilar completamente, permitiendo visualizar el cdigo de ensamblador para depurar [debug] y propsito de optimizacin. Muchos dispositivos integrados son tambin programados en ensamblador a exprimir la funcionalidad mxima absoluta fuera de los que es frecuente recursos computacionales muy limitados, aunque esto esta gradualmente cambiando en algunas reas como mas chips poderosos volviendo disponible para el mismo mnimo costo. http://www.geocities.com/SiliconValley/Haven/2037/documentos/Lenguaje_Ensamblador.htm Ti*os &e le"3!a.es e"sambla&o-es. Este lenguaje da la facilidad y las herramientas necesarias para tomar el control de todo lo que la PC puede realizar fsicamente. Como resultado de operaciones muy bsicas suministradas por el ensamblador que realiza tareas simples de transferencia de datos y operaciones lgicas, una pgina de cdigos en lenguaje ensamblador palidece en comparacion con una pgina de cdigo en lenguaje de alto nivel. Hablar del lenguaje mquina requiere comprender muchos conceptos extraos para los programadores de alto nivel, el programador de lenguaje ensamblador debe considerar la segmentacin de memoria; cuando hay control directo del acceso de memoria deben ser tomadas decisiones al minuto, se debe decidir el tamao y tipo de cada dato, muchas de estas consideraciones son nicas a la programacin en lenguaje ensamblador. ENSAMBLADOR. Un ensamblador es un software que traduce un programa en memoria escrito en mnemnicos por el usuario, a lenguaje mquina que pueda ser ejecutado por el microprocesador. Al programa en mnemnicos se le llama PROGRAMA FUENTE y al programa en lenguaje mquina se le denomina PROGRAMA OBJETO. Por lo tanto, la entrada al ensamblador es un programa fuente y la salida es un programa objeto. 0UNCIONES DEL ENSAMBLADOR. A dems de su tarea principal que es traducir mnemnicos a lenguaje mquina, un ensamblador generalmente realiza las siguientes funciones: o Permite al usuario asignar nombres a localidades de memoria, constantes numricas, dispositivo de E/S y una secuencia de instrucciones. o Acepta datos o direcciones en varios sistemas numricos (decimal y hexadecimal) y las convierte en binario. o Ejecuta algunas operaciones aritmticas en expresiones como parte del proceso de ensamblador. o Permite al usuario designar las reas de memoria donde ser colocados el programa a los datos en el momento de ejecucin. o Proporciona la informacin requerida para incluir otros programas o subrutinas de biblioteca dentro del programa que s esta realizando. o Permite al usuario controlar el formato del listado del programa resultante del ensamblador. El lenguaje ensamblador utiliza mnemnicos para representar los cdigos de operacin de las instrucciones y smbolos alfanumricos para representar las direcciones y los datos del programa. Entonces el programa se puede escribir como: -48 "A$ 61+>7 -48 BA$ "A -48 "A$ 61+17 "DD "A$ BA -48 61+27$ "A Las direcciones y los datos del programa anterior se expresaron directamente en hexadecimal. A continuacin se muestra el mismo programa utilizando todas las propiedades del lenguaje ensamblador. -48 "A$ #U-1 -48 BA$ "A -48 "A$ #U-2 "DD "A$ B -48 SU-"$ "A La ventaja de utilizar nombres simblicos en las instrucciones, en lugar de su valor numrico, es facilitar la escritura del programa, y tambin simplifica la insercin y eliminacin de instrucciones, haciendo ms fcil el redireccionamiento. La desventaja de un programa en lenguaje ensamblador, es que requiere un programa especial llamado ENSAMBLADOR, que se encarga de traducir los mnemnicos y los smbolos alfanumricos a lenguaje mquina. Adems sigue siendo necesario un conocimiento detallado de la arquitectura del microprocesador. El lenguaje ensamblador es una variante legible para el ser humano del lenguaje mquina que usan las computadoras para ejecutar programa. Al mismo tiempo la mejor manera de comunicarse con la PC y con el lenguaje mquina de programacin que utilice. El lenguaje ensamblador resulta indispensable cuando se desea escribir programas que controlen las E/S de la PC, agregar nuevas interfaces de E/S, escribir rutinas que aprovechen y maximicen el uso del hardware y en general realizar cualquier tarea que no pueden llevar acabo los dems lenguajes de programacin. El lenguaje ensamblador le brinda la oportunidad de conocer ms afondo la operacin de su PC esto le permite implementar software o hardware de una manera ms consiente. El lenguaje ensamblador hace que se conserve el control total de lo que desea hacer su PC. Una de las mayores importancias del ensamblador es que uno puede optimizar al mximo sus programas (tanto tamao, como velocidad de ejecucin). Otra importancia es la gran velocidad a la que ejecuta el cdigo. El lenguaje ensamblador permite a los ingenieros de software hacer interfaces con el sistema operativo y les da control directo de las operaciones de entrada y salida a monitores, impresoras, y a los importantes dispositivos de memoria de disco duro/flotante. Los programadores de aplicaciones con frecuencia tienen que hacer tambin interfaces directamente con el sistema operativo. Estas rutinas se escriben en lenguaje ensamblador. El lenguaje ensamblador es simplemente una representacin simblica del lenguaje mquina asociado, lo cual permite una programacin menos tediosa que con el anterior. Sin embargo es necesario un conocimiento de la arquitectura mecnica subyacente para realizar una programacin efectiva en cualquiera de estos niveles de lenguaje.
La mayora de los ensambladores son ENSAMBLADORES DE DOS ETAPAS (two-pass Asemblers). La PRIMERA ETAPA determina la direccin de memoria en la cual es ensamblado el primer byte de cada instruccin y genera una tabla para los valores de todos los nombres simblicos y etiquetas definidos en el programa. El ensamblador posee una tabla de cdigos de opeaci!con una entrada por cada cdigo de operacin, cada entrada contiene el mnemnico de la instruccin, su equivalente en lenguaje mquina y el nmero de bytes de la intruccin. Tambin el ensamblador tiene un "o!tado de locali#aci! $Locatio! "o%!te& L"', el cul al inicio se carga con 0 con el valor especificado por una directiva ORG, sta corresponde a la direccin inicial u origen del programa y se le asigna el primer byte de la primera instruccin. Si un programa tiene una etiqueta, esta se aade a la tabla de smbolos y se le asocia el valor conteniendo del LC en ese momento. El cdigo de operacin de la instruccin se extrae de la tabla de cdigo de operacin incrementando el contador de localizacin igual al nmero de bytes de la instruccin. Esta etapa termina cuando el ensamblador detecta la directiva END. En la SE!"#$ E%$&$, el ensamblador hace un recorrido por el programa, utilizando la tabla de smbolos de los cdigos de operacin, sustituye el mnemnico de cada instruccin por su equivalente en el lenguaje de mquina. 'ompilador Es$-!c$!-a &e !" Com*ila&o-. ualquier compilador debe realizar dos tareas principalesK anlisis del pro+rama a compilar $ sntesis de un pro+rama en len+uaje maquina que, cuando se ejecute, realizara correctamente las actividades descritas en el pro+rama #uente. 5ara el estudio de un compilador, es necesario dividir su trabajo en #ases. ada #ase representa una trans#ormacin al cdi+o #uente para obtener el cdi+o objeto. /a si+uiente #i+ura representa los componentes en que se divide un compilador. /as tres primeras #ases realizan la tarea de anlisis, $ las dems la sntesis. 1n cada una de las #ases se utiliza un administrador de la tabla de smbolos $ un manejador de errores "ttpKNNmE.+eocities.comNal#onsoaraujocardenasNcompiladores."tml %er arc)i%o( compilacion.pd* y compilador.doc Ventajas de compilador frente a un intrprete !e compila una vez, se ejecuta n"veces En bucles, la compilacin genera cdigo equivalente al bucle pero un interpret#ndolo se traduce tantas veces una l$nea como veces se repite el bucle El compilador tiene una visin global del programa, por lo que la in%ormacin de mensajes de errores es m#s detallada& Ventajas de un intrprete frente a compilador Un interprete necesita menos memoria que un compilador 'ermite una ma(or interactividad con el cdigo en tiempo de desarrollo& Un compilador, no es programa que %unciona de manera aislada sino que necesita otro programa para conseguir su objetivo, obtener un programa ejecutable a partir de un programa %uente en un lenguaje de alto nivel& Clasifcacin de compiladores El programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la computadora pueda interpretar ( ejecutar& 'ara cada lenguaje de programacin se requiere un compilador separado, el compilador traduce todo el programa antes de ejecutarlo& En otras palabras un compilador traduce programas insertados en la memoria por el sistema operativo para convertirlos en pulsaciones electrnicas ejecutables (lenguaje m#quina)& )os compiladores pueden ser de* Una sola pasada* E+amina el cdigo %uente una vez, generando el cdigo o programa objeto& 'asadas m,ltiples* -equiere pasos intermedios para producir un cdigo en otro lenguaje ( una pasada .nal para producir ( optimizar el cdigo producido durante los pasos anteriores& /ptimizacin* )ee un cdigo %uente, lo analiza ( descubre errores potenciales sin ejecutar el programa& Compiladores incrementales* 0eneran un cdigo objeto, instruccin por instruccin, cuando el usuario teclea cada orden individual& El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente& Ensamblador* Es un lenguaje %uente ( posee una estructura sencilla& Compilador cruzado* !e genera cdigo en un lenguaje objeto para una m#quina di%erente de la que se esta utilizando para compilar& U compilador cruzado nos permite programar, por ejemplo en 1indo2s para un ambiente como )inu+& Compiladores con montador* Ese tipo de compilador compila distintos mdulos de %orma independiente ( despu3s es capaz de enlazarlos& 4utocompilador* Compilador que esta escrito en el mismo lenguaje que se va a compilar, evidentemente no se puede ejecutar la primera vez& !irve para 5acer ampliaciones de lenguaje, mejorar el cdigo generado, etc& 6etacompilador* Es sinnimo de compilador de compiladores ( se re.ere a un programa que recibe como entrada las especi.caciones de lenguaje, para el que desea obtener un compilador ( genera como salida un compilador de ese lenguaje& 7escompilador* Es un programa que acepta como entrada cdigo m#quina ( lo traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilacin& Partes en las que trabaja un compilador Conceptualmente 8/-9-4: dise;o un compilador que trabajaba en %ases& Es decir, las %ases de un compilador trans%orman el programa %uente de una representacin a otra, en la pr#ctica se agrupan %ases ( las representaciones intermedias entre las %ases no necesitan ser construidas e+pl$citamente& Anlisis lxico Es la primera %ase de un compilador& !u principal %uncin consiste en leer los caracteres de entrada ( elaborar como salida una secuencia de componentes l3+icos que utiliza el analizador sint#ctico para 5acer el an#lisis& Aspectos del anlisis lxico <a( varias razones para dividir en %ases el an#lisis de la compilacin& El an#lisis l3+ico ( an#lisis sint#ctico* Un dise;o sencillo es la consideracin m#s importante, separar a estos dos tipos de an#lisis a menudo permite simpli.car una u otra de dic5as %ases& !e mejora la e.ciencia del compilador adem#s de permitir construir un procesador especializado ( potencialmente m#s e.ciente para esa %uncin& Con algunas t3cnicas de manejo de bu=ers para la lectura de caracteres de entrada ( procesamiento de componentes l3+icos se pueden mejorar signi.cativamente el rendimiento de un compilador& Errores lxicos !on pocos los errores simplemente en el nivel l3+ico (a que tiene una visin mu( restringida de un programa %uente& El analizador l3+ico debe devolver el componente l3+ico de un identi.cador ( dejar a otra %ase se ocupe de los errores& !uponga que una situacin en la cual el analizador l3+ico no puede continuar por que ninguno de los patrones concuerda con un pre.jo de la entrada& 9al vez la estrategia de recuperacin m#s sencilla sea recuperacin >E: 6/7/ '4:?C/@ (este m3todo de recuperacin es donde se borra caracteres sucesivos de la entrada 5asta que el analizador l3+ico pueda encontrar un componente l3+ico bien %ormado)& Administrador de entradas Utilizar A bu=er de entrada resulta ,til cuando es necesario un pre"an#lisis en la entrada para identi.car los componentes l3+icos despu3s se introducen algunas t3cnicas b#sicas para encontrar la velocidad del analizador l3+ico, como es el uso de centinelas que sirven para marcar el .nal de bu=er, 5a( tres m3todos generales de implantar un l3+ico* Utilizar un generador de analizadores l3+icos, como el compilador )EB para producir el analizador l3+ico a partir de una especi.cacin basada en e+presiones regulares, en este caso el generador proporciona rutinas para leer la entrada ( manejarla con bu=ers& Escribir el analizador l3+ico en un lenguaje convencional de programacin de sistemas utilizando las posibilidades de entrada ( salida de este lenguaje para leer la entrada& Escribir el analizador l3+ico en lenguaje ensamblador ( manejar e+pl$citamente la lectura de la entrada& Parejas de bufers !e utiliza un bu=er dividido en dos mitades de n"caracteres cada una como se indica en la .gura* 9e+to lenguaje %uente 9raductor 9e+to lenguaje objeto 'rograma objeto Compilador 'rograma %uente 6ensajes de error 'rograma %uente 4nalizador l3+ico 4nalizador sint#ctico 4n#lisis sem#ntico 0eneracin de cdigo intermedio /ptimizacin de cdigo 0enerador de cdigo 'rograma objeto 6anejo de errores 6anejo de tabla de s$mbolos 4nalizador l3+ico 4nalizador sint#ctico 9abla de s$mbolos Componente l3+ico /bt3n el siguiente componente l3+ico 'rograma %uente Bu=er C espacio en memoria "ttpKNN"tml.rincondelva+o.comN#undamentosDdeDpro+ramacionP'."tml Traductor T-a&!c$o-es !n traductor es un pro+rama que recibe como entrada cdi+o escrito en un cierto len+uaje $ produce como salida cdi+o en otro len+uaje. Feneralmente el len+uaje de entrada es de ms alto nivel que el de salida. 1jemplos de traductores son los ensambladores $ los compiladores. !n ensamblador es un pro+rama que traduce de un len+uaje ensamblador a len+uaje mquina, mientras que un compilador es un pro+rama que traduce de un len+uaje de alto nivel a un len+uaje de bajo nivel o a len+uaje mquina. !n traductor es un pro+rama que toma el teEto escrito en un len+uaje *el len+uaje #uente, $ lo convierte en el teEto equivalente en un se+undo len+uaje *el len+uaje destino u objeto,. 8i el #uente es un len+uaje abstracto o de alto nivel $ si el objetivo es un len+uaje de ensamble de bajo nivel o de mquina, el traductor es un compilador. 0ttp@99mB.eocities.com9alfonsoarau!ocardenas9compiladores.0tml Sistemas #um(ricos Re*-ese"$aci7" &e la i"%o-maci7". I"$-o&!cci7". En el sistema de n1meros decimales se dice que la base o raz es 23 debido a que usa 23 dgitos, los coeficientes se multiplican por potencias de 23! El sistema binario unicamente posee dos (alores posibles que son 3 2, en los cuales cada coeficiente 0 j se multiplica por # j , como ejemplo tendremos el desarrollo del n1mero binario 22323!22 el cual ser representado por la siguiente manera 4 25# ' 625# & 635# # 625# 2 635# 3 625# 72 625# 7# 2%6$636#6363!863!#8 9 #%!:8 "or lo tanto tenemos que un n1mero en un sistema de base;r< tiene coeficientes multiplicados por potencias de ;r< quedara representado de la siguiente manera 4 a n Qr n R a nD1 Qr nD1 R . . . R a 2 Qr 2 R a 1 Qr 1 R a 0 Qr 0 R a D1 Qr D1 R . . . R a Dm Qr Dm
Ti*os &e sis$emas "!mG-icos. Los sistemas de numeracin son conjuntos de dgitos usados para representar cantidades, as se tienen los sistemas de numeracin decimal, binario, octal, he=adecimal, romano, etc! Los cuatro primeros se caracterizan por tener una base ;n1mero de dgitos diferentes4 diez, dos, ocho, dieciseis respecti(amente< mientras que el sistema romano no posee base resulta ms complicado su manejo tanto con n1meros, as como en las operaciones bsicas! Los sistemas de numeracin que poseen una base tienen la caracterstica de cumplir con la notacin posicional, es decir, la posicin de cada n1mero le da un (alor o peso, as el primer dgito de derecha a izquierda despus del punto decimal, tiene un (alor igual a b (eces el (alor del dgito, as el dgito tiene en la posicin n un (alor igual a4 (b n ) * A donde4 b 9 (alor de la base del sistema n 9 n1mero del dgito o posicin del mismo 0 9 dgito! "or ejemplo4 digitos4 2 # ' > 8 & ! & # ' posicion 8 ' & # 2 3 ! 72 7# 7& !l #i#tema num+rico decimal El sistema de numeracin decimal es el ms usado, tiene como base el n1mero 23, o sea que posee 23 dgitos ;o simbolos< diferentes ;3, 2, #, &, ', 8, %, :, $, ><! El sistema de numeracin decimal fu desarrollado por los hind1es, posteriormente lo introducen los rabes en Europa, donde recibe el nombre de sistema de numeracin decimal o arbigo! -i se aplica la notacin posicional al sistema de numeracin decimal entonces el dgito n1mero n tiene el (alor4 (10 n )* A "i#tema ,inario El sistema de numeracin ms simple que usa la notacin posicional es el sistema de numeracin binario! Este sistema, como su nombre lo indica, usa solamente dos dgitos ;3,2<! "or su simplicidad por poseer 1nicamente dos dgitos diferentes, el sistema de numeracin binario se usa en computacin para el manejo de datos e informacin! ?ormalmente al dgito cero se le asocia con cero (oltios, apagado, desenergizado, inhibido ;de la computadora< el dgito 2 se asocia con 68, 62# (olts, encendido, energizado ;de la computadora< con el cual se forma la lgica positi(a! -i la asociacin es in(ersa, o sea el n1mero cero se asocia con 68 (olts o encendido al n1mero 2 se asocia con cero (olts o apagado, entonces se genera la lgica negati(a! 0 la representacin de un dgito binario se le llama bit ;de la contraccin binar digit< al conjunto de $ bits se le llama bte, as por ejemplo4 223 contiene & bits, 2332 contiene ' 2 contiene 2 bit! Como el sistema binario usa la notacin posicional entonces el (alor de cada dgito depende de la posicin que tiene en el n1mero, as por ejemplo el n1mero 223232 b es4 1Q*2 0 , R 0Q*2 1 , R 1Q*2 2 , R 0Q*2 7 , R 1Q*2 ? , R 1Q*2 C , S 1 R ? R 1& R 72 S C7 d La computadora est dise.ada sobre la base de numeracin binaria ;base #<! "or eso este caso particular merece mencin aparte! -iguiendo las reglas generales para cualquier base e=puestas antes, tendremos que4 E=isten dos dgitos ;3 o 2< en cada posicin del n1mero! ?umerando de derecha a izquierda los dgitos de un n1mero, empezando por cero, el (alor decimal de la posicin es #n! "or ejemplo,2232 # ;en base #< quiere decir4 1Q*2 7 , R 1Q*2 2 , R 0Q*2 1 , R 1Q*2 0 , S @ R ? R 0 R 1 S 17 10 "i#tema Octal 1l sistema de numeracin octal es tambi(n mu$ usado en la computacin por tener una base que es potencia eEacta de 2 o de la numeracin binaria. 1sta caracterstica "ace que la conversin a binario o viceversa sea bastante simple. 1l sistema octal usa @ d+itos *0,1,2,7,?,C,&,', $ tienen el mismo valor que en el sistema de numeracin decimal. omo el sistema de numeracin octal usa la notacin posicional entonces para el nmero 7?C2.72 q tenemosK #5;$ 3 < 6 85;$ 2 < 6 '5;$ # < 6 &5;$ & < 6 &5;$ 72 < 6 #5;$ 7# < 9 # 6 '3 6 '5%' 6 %' 6 &582# 6 &53!2#8 6 #53!328%#8 9 # 6 '3 6 #8% 6 28&% 6 3!&:8 6 3!3&2#8 9 2$&' 6 '3%#8 d entonces, &'8#!&# q 9 2$&'!'3%#8 d
El subindice q indica n1mero octal, se usa la letra q para e(itar confusin entre la letra o el n1mero 3! "i#tema $e-adecimal @n gran problema con el sistema binario es la (erbosidad! "ara representar el (alor #3#23 se requieren ocho dgitos binarios, la (ersin decimal slo requiere de tres dgitos por lo tanto los n1meros se representan en forma mucho ms compacta con respecto al sistema numrico binario! Aesafortunadamente las computadoras trabajan en sistema binario aunque es posible hacer la con(ersin entre decimal binario, a (imos que no es precisamente una tarea cmoda! El sistema de numeracin he=adecimal, o sea de base 2%, resuel(e este problema ;es com1n abre(iar he=adecimal como he= aunque he= significa base seis no base dieciseis<! El sistema he=adecimal es compacto nos proporciona un mecanismo sencillo de con(ersin hacia el formato binario, debido a sto, la maora del equipo de cmputo actual utiliza el sistema numrico he=adecimal! Como la base del sistema he=adecimal es 2%, cada dgito a la izquierda del punto he=adecimal representa tantas (eces un (alor sucesi(o potencia de 2%, por ejemplo, el n1mero 2#&'2% es igual a4 1Q1&7 R 2Q1&2 R 7Q1&1 R ?Q1&0 lo que da como resultado4 ?06& R C12 R ?@ R ? S ?&&010 Cada dgito he=adecimal puede representar uno de dieciseis (alores entre 3 2823! Como slo tenemos diez dgitos decimales, necesitamos in(entar seis dgitos adicionales para representar los (alores entre 2323 2823! En lugar de crear nue(os simbolos para estos dgitos, utilizamos las letras 0 a la B! La con(ersin entre he=adecimal binario es sencilla, considere la siguiente tabla4 Cinario De=adecimal
3333 3 3332 2 3323 # 3322 & 3233 ' 3232 8 3223 % 3222 : 2333 $ 2332 > 2323 0 2322 C 2233 C 2232 A 2223 E 2222 B Esta tabla contiene toda la informacin necesaria para con(ertir de binario a he=adecimal (isce(ersa! "ara con(ertir un n1mero he=adecimal en binario, simplemente sustitua los correspondientes cuatro bits para cada dgito he=adecimal, por ejemplo, para con(ertir 30CCAh en un (alor binario4 3 0 C C A ;De=adecimal< 3333 2323 2322 2233 2232 ;Cinario< "or comodidad, todos los (alores numricos los empezaremos con un dgito decimalE los (alores he=adecimales terminan con la letra h los (alores binarios terminan con la letra b! La con(ersin de formato binario a he=adecimal es casi igual de fcil, en primer lugar necesitamos asegurar que la cantidad de dgitos en el (alor binario es m1ltiplo de ', en caso contrario agregaremos ceros a la izquierda del (alor, por ejemplo el n1mero binario 2322332323, la primera etapa es agregarle dos ceros a la izquierda para que contenga doce ceros4 332322332323! La siguiente etapa es separar el (alor binario en grupos de cuatro bits, as4 3323 2233 2323! Binalmente buscamos en la tabla de arriba los correspondientes (alores he=adecimales dando como resultado, #C0, siguiendo la con(encin establecida4 3#C0 h ! Co";e-sio"es. Decimal a bi"a-ioD Oc$alD HeHa&ecimal uando deseamos e#ectuar la conversin de decimal a binario o "a cualquier otro sistema con base r es ms conveniente si el nmero se separa en parte entera $ en una parte #raccionaria, $ la conversin de cada parte se e#ecta por separado K
E.em*lo < onvertir el numero *?1, 10 a binario ?1 1 /8. 20 0 21 10 0 22 C 1 27 2 0 2? 1 1 B8. *?1, 10 S *101001, 2
5ara convertir cualquier entero decimal "a cualquier sistema de base r la divisin se "ace entre r en lu+ar de 2. E.em*lo < onvertir el numero *1C7, 10 a base @ 1C7 1 /8. 1C? 16 7 1CC 2 2 B8. *1C7, 10 S*271, @
5ara convertir una #raccin decimal a binario, el sistema que se si+ue es similar al que utilizamos para los enteros, sin embar+o, se usa la multiplicacin en lu+ar de la divisin, $ los enteros se acumulan en lu+ar de los residuos. E.em*lo < convertir *0.&@'C, 10 a base 2 1ntero Jraccin oe#iciente 0.&@'C Q2 1 0.7'C0 *a D1 , S 1 0.7'C0 Q2 0 0.'C *a D2 , S 0 0.'C Q2 1 0.C *a D7 , S 1 0.C Q2 1 0.0 *a D? , S 1 *0.&@'C, 10 S*0.1011, 2
uando deseamos convertir una #raccin decimal en nmero eEpresado en base r, el procedimiento es similar, la multiplicacin se "ace con r en lu+ar de 2 $ los coe#icientes se encuentran con los enteros. E.em*lo < convertir *0.C17, 10 a base @ 1ntero Jraccin oe#iciente 0.C17 Q @ ? 0.10? a D1 S ? 0.10? Q @ 0 0.@72 a D2 S 0 0.@72 Q @ & 0.&C& a D7 S & 0.&C& Q @ C 0.2?@ a D? S C 0.2?@ Q @ 1 0.6@? a DC S 1 0.6@? Q @ ' 0.@'2 a D& S ' uando deseamos "acer la conversin de un nmero decimal de una parte entera $ una parte #raccionaria la conversin se "ace por separado $ posteriormente se combinan las dos respuestas. E.em*lo < *?1.&@'C, 10 DT *101001.1011, 2
Bi"a-io a DecimalD Oc$alD HeHa&ecimal. !n nmero binario E puede convertirse en decimal e#ectuando la suma de las potencias cu$o valor es uno. 1jemplo K *1010.011, 2 S 1Q2 7 R0Q2 2 R1Q2 1 R0Q2 0 R0Q2 D1 R1Q2 D2 R1Q2 D7
S @R0R2R0R0R0.2CR0.12C S 10.7'C /as conversiones entre cdi+o binario, octal $ "eEadecimal es mu$ importante en las comparaciones di+itales, $a que cada d+ito octal corresponde a tres d+itos binarios $ a cada d+ito "eEadecimal corresponde cuatro d+itos binarios. *10110001101011.111100000110, 2 DT *2&1C7.'?0&, @
uando deseamos convertir un nmero binario a "eEadecimal, el proceso es similar eEcepto que el nmero binario se divide en +rupos de ?. *10110001101011.11110010, 2 DT *2&..J2, 1&
/os nmeros binarios son di#ciles de manejar $a que se requiere dos o cuatro veces mas d+itos que su equivalente decimal. E.em*lo < *111111111111, 2 DT *?06C, 10
!na #orma de reducir esta de#iciencia es emplear la relacin entre el sistema de nmeros binarios con el sistema octal o "eEadecimal. 1l nmero binario *111111111111, 2 tiene 12 d+itos $ los podemos eEpresar en octal *'''', @ *cuatro d+itos, o en "eEadecimal como *JJJ, 1& *tres d+itos,, la representacin octal o "eEadecimal es mas deseable $a que se representa en #orma mas compacta, como un tercio o un cuarto del nmero de d+itos requeridos por el nmero binario equivalente. l3eb-a boolea"a. Las lgebras booleanas, estudiadas por primera vez en detalle por George Boole , constituyen un rea de las matemticas que ha pasado a ocupar un lugar prominente con el advenimiento de la computadora digital. Son usadas ampliamente en el diseo de circuitos de distribucin y computadoras, y sus aplicaciones van en aumento en muchas otras reas. En el nivel de lgica digital de una computadora, lo que comnmente se llama hardware, y que est formado por los componentes electrnicos de la mquina, se trabaja con diferencias de tensin, las cuales generan funciones que son calculadas por los circuitos que forman el nivel. stas funciones, en la etapa de disea del hardware, son interpretadas como funciones de boole. En el presente trabajo se intenta dar una definicin de lo que es un lgebra de boole; se tratan las funciones booleanas, haciendo una correlacin con las frmulas proposicionales. Asimismo, se plantean dos formas cannicas de las funciones booleanas, que son tiles para varios propsitos, tales como el de determinar si dos expresiones representan o no la misma funcin. Pero para otros propsitos son a menudo engorrosas, por tener ms operaciones que las necesarias. Particularmente, cuando estamos construyendo los circuitos electrnicos con que implementar funciones booleanas, el problema de determinar una expresin mnima para una funcin es a menudo crucial. No resultan de la misma eficiencia en dinero y tiempo, principalmente, dos funciones las cuales calculan lo mismo pero donde una tiene menos variables y lo hace en menor tiempo. Como solucin a este problema, se plantea un mtodo de simplificacin, que hace uso de unos diagramas especiales llamados mapas o diagramas de Karnaugh, y el cual tiene la limitacin de poder trabajar adecuadamente slo con pocas variables. Se realizan estas presentaciones con el fin de demostrar la afinidad existente entre el lgebra de boole y la lgica proposicional, y con el objeto de cimentar el procedimiento de simplificacin presentado en la lgica de proposiciones. 2. 2esea <istrica A mediados del siglo XX, George Boole (1815-1864), en sus libros: "The Mathematical Analysis of Logic" (1847) y "An nvestigation of te Laws of Thought" (1854), desarroll la idea de que las proposiciones lgicas podan ser tratadas mediante herramientas matemticas. Las proposiciones lgicas (asertos, frases o predicados de la lgica clsica) son aquellas que nicamente pueden tomar valores Verdadero/Falso, o preguntas cuyas nicas respuestas posibles sean S/No. Segn Boole, estas proposiciones pueden ser representadas mediante smbolos y la teora que permite trabajar con estos smbolos, sus entradas (variables) y sus salidas (respuestas) es la Lgica Simblica desarrollada por l. Dicha lgica simblica cuenta con operaciones lgicas que siguen el comportamiento de reglas algebraicas. Por ello, al conjunto de reglas de la Lgica Simblica se le denomina LGEBRA DE BOOLE. A mediados del siglo XX el lgebra Booleana result de una gran importancia prctica, importancia que se ha ido incrementando hasta nuestros das, en el manejo de informacin digital (por eso hablamos de Lgica Digital). Gracias a ella, Shannon (1930) pudo formular su teora de la codificacin y John Von Neumann pudo enunciar el modelo de arquitectura que define la estructura interna de los ordenadores desde la primera generacin. Todas las variables y constantes del lgebra booleana, admiten slo uno de dos valores en sus entradas y salidas: S/No, 0/1 o Verdadero/Falso. Estos valores bivalentes y opuestos pueden ser representados por nmeros binarios de un dgito (bits), por lo cual el lgebra booleana se puede entender cmo el lgebra del Sistema Binario. Al igual que en lgebra tradicional, tambin se trabaja con letras del alfabeto para denominar variables y formar ecuaciones para obtener el resultado de ciertas operaciones mediante una ecuacin o expresin booleana. Evidentemente los resultados de las correspondientes operaciones tambin sern binarios. Todas las operaciones (representadas por smbolos determinados) pueden ser materializadas mediante elementos fsicos de diferentes tipos (mecnicos, elctricos, neumticos o electrnicos) que admiten entradas binarias o lgicas y que devuelven una respuesta (salida) tambin binaria o lgica. Ejemplos de dichos estados son: Abierto/Cerrado (interruptor), Encendida/Apagada (bombilla), Cargado/Descargado (condensador) , Nivel Lgico 0/Nivel lgico 1 (salida lgica de un circuito semiconductor), etctera. Los dispositivos con los cuales se implementan las funciones lgicas son llamados puertas (o compuertas) y, habitualmente, son dispositivos electrnicos basados en transistores. Estos dispositivos, y otros que veremos a lo largo de esta unidad, son los que permiten el diseo, y la ulterior implementacin, de los circuitos de cualquier ordenador moderno, as como de muchos de los elementos fsicos que permiten la existencia de las telecomunicaciones modernas, el control de mquinas, etctera. De hecho, pensando en los ordenadores como una jerarqua de niveles, la base o nivel inferior sera ocupada por la lgica digital (en el nivel ms alto del ordenador encontraramos los actuales lenguajes de programacin de alto nivel). En esta unidad se representan las puertas lgicas elementales, algunas puertas complejas y algunos ejemplos de circuitos digitales simples, as como algunas cuestiones de notacin. Por otra parte se plantean actividades de trabajo, muchas de las cuales implican una respuesta escrita en vuestro cuaderno de trabajo. El deseo del autor es que os resulte sencillo y ameno adentraros en el mundo de la lgica digital y despertaros la curiosidad, tanto por ella, como por la matemtica que subyace en ella.
3. Clebra Booleana El lgebra booleana es un sistema matemtico deductivo centrado en los valores cero y uno (falso y verdadero). Un operador binario " " definido en ste juego de valores acepta un par de entradas y produce un solo valor booleano, por ejemplo, el operador booleano AND acepta dos entradas booleanas y produce una sola salida booleana. Para cualquier sistema algebraico existen una serie de postulados iniciales, de aqu se pueden deducir reglas adicionales, teoremas y otras propiedades del sistema, el lgebra booleana a menudo emplea los siguientes postulados: Cerrado. El sistema booleano se considera cerrado con respecto a un operador binario si para cada par de valores booleanos se produce un solo resultado booleano. Conmutativo. Se dice que un operador binario " " es conmutativo si A B = B A para todos los posibles valores de A y B. Asociativo. Se dice que un operador binario " " es asociativo si (A B) C = A (B C) para todos los valores booleanos A, B, y C. Distributivo. Dos operadores binarios " " y " % " son distributivos si A (B % C) = (A B) % (A C) para todos los valores booleanos A, B, y C. dentidad. Un valor booleano se dice que es un elemento de identidad con respecto a un operador binario " " si A = A. nverso. Un valor booleano es un elemento inverso con respecto a un operador booleano " " si A = B, y B es diferente de A, es decir, B es el valor opuesto de A. Para nuestros propsitos basaremos el lgebra booleana en el siguiente juego de operadores y valores: - Los dos posibles valores en el sistema booleano son cero y uno, a menudo llamaremos a stos valores respectivamente como falso y verdadero. - El smbolo representa la operacin lgica AND. Cuando se utilicen nombres de variables de una sola letra se eliminar el smbolo , por lo tanto AB representa la operacin lgica AND entre las variables A y B, a esto tambin le llamamos el producto entre A y B. - El smbolo "+" representa la operacin lgica OR, decimos que A+B es la operacin lgica OR entre A y B, tambin llamada la suma de A y B. - El complemento lgico, negacin NOT es un operador unitario, en ste texto utilizaremos el smbolo " ' " para denotar la negacin lgica, por ejemplo, A' denota la operacin lgica NOT de A. - Si varios operadores diferentes aparecen en una sola expresin booleana, el resultado de la expresin depende de la procedencia de los operadores, la cual es de mayor a menor, parntesis, operador lgico NOT, operador lgico AND y operador lgico OR. Tanto el operador lgico AND como el OR son asociativos por la izquierda. Si dos operadores con la misma procedencia estn adyacentes, entonces se evalan de izquierda a derecha. El operador lgico NOT es asociativo por la derecha. Utilizaremos adems los siguientes postulados: P1 El lgebra booleana es cerrada bajo las operaciones AND, OR y NOT P2 El elemento de identidad con respecto a es uno y con respecto a + es cero. No existe elemento de identidad para el operador NOT P3 Los operadores y + son conmutativos. P4 y + son distributivos uno con respecto al otro, esto es, A (B+C) = (AB)+(AC) y A+ (BC) = (A+B) (A+C). P5 Para cada valor A existe un valor A' tal que AA' = 0 y A+A' = 1. ste valor es el complemento lgico de A. P6 y + son ambos asociativos, sto es, (AB) C = A (BC) y (A+B)+C = A+ (B+C). Es posible probar todos los teoremas del lgebra booleana utilizando stos postulados, adems es buena idea familiarizarse con algunos de los teoremas ms importantes de los cuales podemos mencionar los siguientes: Teorema 1: A + A = A Teorema 2: A A = A Teorema 3: A + 0 = A Teorema 4: A 1 = A Teorema 5: A 0 = 0 Teorema 6: A + 1 = 1 Teorema 7: (A + B)' = A' B' Teorema 8: (A B)' = A' + B' Teorema 9: A + A B = A Teorema 10: A (A + B) = A Teorema 11: A + A'B = A + B Teorema 12: A' (A + B') = A'B' Teorema 13: AB + AB' = A Teorema 14: (A' + B') (A' + B) = A' Teorema 15: A + A' = 1 Teorema 16: A A' = 0 Los teoremas siete y ocho son conocidos como Teoremas de DeMorgan en honor al matemtico que los descubri. Caractersticas: Un lgebra de Boole es un conjunto en el que destacan las siguientes caractersticas: 1- Se han definido dos funciones binarias (que necesitan dos parmetros) que llamaremos aditiva (que representaremos por x + y) y multiplicativa (que representaremos por xy) y una funcin monaria (de un solo parmetro) que representaremos por x'. 2- Se han definido dos elementos (que designaremos por 0 y 1) Y 3- Tiene las siguientes propiedades: Conmutativa respecto a la primera funcin: x + y = y + x Conmutativa respecto a la segunda funcin: xy = yx Asociativa respecto a la primera funcin: (x + y) + z = x + (y +z) Asociativa respecto a la segunda funcin: (xy)z = x(yz) Distributiva respecto a la primera funcin: (x +y)z = xz + yz Distributiva respecto a la segunda funcin: (xy) + z = (x + z)( y + z) dentidad respecto a la primera funcin: x + 0 = x dentidad respecto a la segunda funcin: x1 = x Complemento respecto a la primera funcin: x + x' = 1 Complemento respecto a la segunda funcin: xx' = 0 Propiedades Del lgebra De Boole 1. dempotente respecto a la primera funcin: x + x = x dempotente respecto a la segunda funcin: xx = x Maximalidad del 1: x + 1 = 1 Minimalidad del 0: x0 = 0 nvolucin: x'' = x nmersin respecto a la primera funcin: x + (xy) = x nmersin respecto a la segunda funcin: x(x + y) = x Ley de Morgan respecto a la primera funcin: (x + y)' = x'y' Ley de Morgan respecto a la segunda funcin: (xy)' = x' + y'
Funcin Booleana Una funcin booleana es una aplicacin de A x A x A x....A en A, siendo A un conjunto cuyos elementos son 0 y 1 y tiene estructura de lgebra de Boole. Supongamos que cuatro amigos deciden ir al cine si lo quiere la mayora. Cada uno puede votar si o no. Representemos el voto de cada uno por x i . La funcin devolver s (1) cuando el numero de votos afirmativos sea 3 y en caso contrario devolver 0. Si x1 vota 1, x2 vota 0, x3 vota 0 y x4 vota 1 la funcin booleana devolver 0. Producto mnimo (es el nmero posible de casos) es un producto en el que aparecen todas las variables o sus negaciones. El nmero posible de casos es 2 n . Siguiendo con el ejemplo anterior. Asignamos las letras A, B, C y D a los amigos. Los posibles casos son: Votos Resultado ABCD 1111 1 1110 1 1101 1 1100 0 1011 1 1010 0 1001 0 1000 0 0111 1 0110 0 0101 0 0100 0 0011 0 0010 0 0001 0 0000 0 Las funciones booleanas se pueden representar como la suma de productos mnimos (minterms) iguales a 1. En nuestro ejemplo la funcin booleana ser: f(A,B,C,D) = ABCD + ABCD' + ABC'D + AB'CD + A'BCD Diagramas De Karnaugh Los diagramas de Karnaugh se utilizan para simplificar las funciones booleanas. Se construye una tabla con las variables y sus valores posibles y se agrupan los 1 adyacentes, siempre que el nmero de 1 sea potencia de 2. En esta pgina tienes un programa para minimizacin de funciones booleanas mediante mapas de Karnaugh ). Clebra Booleana % circuitos electrnicos La relacin que existe entre la lgica booleana y los sistemas de cmputo es fuerte, de hecho se da una relacin uno a uno entre las funciones booleanas y los circuitos electrnicos de compuertas digitales. Para cada funcin booleana es posible disear un circuito electrnico y viceversa, como las funciones booleanas solo requieren de los operadores AND, OR y NOT podemos construir nuestros circuitos utilizando exclusivamente stos operadores utilizando las compuertas lgicas homnimas Un hecho interesante es que es posible implementar cualquier circuito electrnico utilizando una sola compuerta, sta es la compuerta NAND Para probar que podemos construir cualquier funcin booleana utilizando slo compuertas NAND, necesitamos demostrar cmo construir un inversor (NOT), una compuerta AND y una compuerta OR a partir de una compuerta NAND, ya que como se dijo, es posible implementar cualquier funcin booleana utilizando slo los operadores booleanos AND, OR y NOT. Para construir un inversor simplemente conectamos juntas las dos entradas de una compuerta NAND. Una vez que tenemos un inversor, construir una compuerta AND es fcil, slo invertimos la salida de una compuerta NAND, despus de todo, NOT ( NOT (A AND B)) es equivalente a A AND B. Por supuesto, se requieren dos compuertas NAND para construir una sola compuerta AND, nadie ha dicho que los circuitos implementados slo utilizando compuertas NAND sean lo ptimo, solo se ha dicho que es posible hacerlo. La otra compuerta que necesitamos sintetizar es la compuerta lgica OR, sto es sencillo si utilizamos los teoremas de DeMorgan, que en sntesis se logra en tres pasos, primero se reemplazan todos los DED por DFD despus se invierte cada literal y por ltimo se niega la totalidad de la expresin: A OR B A AND B.......................Primer paso para aplicar el teorema de DeMorgan A' AND B'.....................Segundo paso para aplicar el teorema de DeMorgan (A' AND B')'..................Tercer paso para aplicar el teorema de DeMorgan (A' AND B')' = A' NAND B'.....Definicin de OR utilizando NAND Si se tiene la necesidad de construir diferentes compuertas de la manera descrita, bien hay dos buenas razones, la primera es que las compuertas NAND son las ms econmicas y en segundo lugar es preferible construir circuitos complejos utilizando los mismos bloques bsicos. Observe que es posible construir cualquier circuito lgico utilizando slo compuertas de tipo NOR (NOR = NOT(A OR B)). La correspondencia entre la lgica NAND y la NOR es ortogonal entre la correspondencia de sus formas cannicas. Mientras que la lgica NOR es til en muchos circuitos, la mayora de los diseadores utilizan lgica NAND. +$$*<==>>>.mo"o3-a%ias.com=$-aba.os12=al3eb-a,boolea"a=al3eb-a, boolea"a.s+$ml Ci-c!i$os combi"a$o-ios. Un circuito combinacional es un sistema que contiene operaciones booleanas bsicas (AND, OR, NOT), algunas entradas y un juego de salidas, como cada salida corresponde a una funcin lgica individual, un circuito combinacional a menudo implementa varias funciones booleanas diferentes, es muy importante recordar ste echo, cada salida representa una funcin booleana diferente. Un ejemplo comn de un circuito combinacional es el decodificador de siete segmentos, se trata de un circuito que acepta cuatro entradas y determina cul de los siete segmentos se deben iluminar para representar la respectiva entrada, de acuerdo con lo dicho en el prrafo anterior, se deben implementar siete funciones de salida diferentes, una para cada segmento. Las cuatro entradas para cada una de stas funciones booleanas son los cuatro bits de un nmero binario en el rango de 0 a 9. Sea D el bit de alto orden de ste nmero y A el bit de bajo orden, cada funcin lgica debe producir un uno (para el segmento encendido) para una entrada dada si tal segmento en particular debe ser iluminado, por ejemplo, el segmento e debe iluminarse para los valores 0000, 0010, 0110 y 1000. En la siguiente tabla se puede ver qu segmentos deben iluminarse de acuerdo al valor de entrada, tenga en cuenta que slo se estn representando valores en el rango de 0 a 9, los decodificadores para las pantallas de siete segmentos comerciales tienen capacidad para desplegar valores adicionales que corresponden a las letras A a la F para representaciones hexadecimales, sin embargo la mecnica para iluminar los respectivos segmentos es similar a la aqu representada para los valores numricos. 0 a b c d e f 1 b c 2 a b d e g 3 a b c d g 4 b c f g 5 a c d f g 6 c d e f g 7 a b c 8 a b c d e f g 9 a b c f g
Los circuitos combinacionales son la base de muchos componentes en un sistema de cmputo bsico, se puede construir circuitos para sumar, restar, comparar, multiplicar, dividir y muchas otras aplicaciones ms. Circuitos Secuenciales Un problema con la lgica secuencial es su falta de "memoria". En teora, todas las funciones de salida en un circuito combinacional dependen del estado actual de los valores de entrada, cualquier cambio en los valores de entrada se refleja (despus de un intervalo de tiempo llamado retardo de propagacin) en las salidas. Desafortunadamente las computadoras requieren de la habilidad para "recordar" el resultado de clculos pasados. ste es el dominio de la lgica secuencial. Una celda de memoria es un circuito electrnico que recuerda un valor de entrada despus que dicho valor ha desaparecido. La unidad de memoria ms bsica es el flip-flop Set/Reset. Aunque recordar un bit sencillo es importante, la mayora de los sistemas de cmputo requieren recordar un grupo de bits, sto se logra combinando varios flip-flop en paralelo, una conexin de ste tipo recibe el nombre de registro. A partir de aqu es posible implementar diferentes circuitos como registros de corrimiento y contadores, stos ltimos tambin los conocemos como circuitos de reloj. Con los elementos mencionados es posible construir un microprocesador completo. 3. 2elacin entre la lica combinacional % secuencial con la proramacin En sta leccin hemos dado una repasada muy bsica a los elementos que forman la base de los modernos sistemas de cmputo, en la seccin dedicada al diseo electrnico estudiaremos a profundidad los conceptos aqu presentados, pero para aquellos que estn ms interesados en el aspecto programtico podemos decir que con los elementos vistos en sta leccin es posible implementar mquinas de estado, sin embargo la moraleja de sta leccin es muy importante: cualquier algoritmo que podamos implementar en software, lo podemos a su vez implementar directamente en hardware. sto sugiere que la lgica booleana es la base computacional en los modernos sistemas de cmputo actuales. Cualquier programa que Usted escriba, independientemente del lenguaje que utilice, sea ste de alto bajo nivel, se puede especificar como una secuencia de ecuaciones booleanas. Un hecho igualmente interesante es el punto de vista opuesto, es posible implementar cualquier funcin de hardware directamente en software, en la actualidad sta es la funcin principal del lenguaje ensamblador y otros con capacidad de trabajar directamente en hardware, como el C y el C++. Las consecuencias de ste fenmeno apenas se estn explotando, se infiere la existencia de un futuro muy prometedor para el profesional de la programacin, especialmente aquellos dedicados a los sistemas incrustados (embedded systems), los microcontroladores y los profesionales dedicados a la Programacin Orientada a Objetos. Para tener xito en stos campos de la investigacin es fundamental comprender las funciones booleanas y la manera de implementarlas en software. An y cuando Usted no desee trabajar en hardware, es importante conocer las funciones booleanas ya que muchos lenguajes de alto nivel procesan expresiones booleanas, como es el caso de los enunciados ifGt0en los bucles while. +$$*<==>>>.mo"o3-a%ias.com=$-aba.os12=al3eb-a,boolea"a=al3eb-a, boolea"a.s+$ml P-o*ie&a&es. P-o*ie&a&es &el al3eb-a &e Boole. 1. P-o*ie&a& &e cie--e. 5ara un conjunto s se dice que es cerrado para un operador binario si para cada elemento de 8 el operador binario especi#ica una re+la para obtener un elemento nico de 8. 5ara el conjunto ) S U1,2,7,?,VW es cerrado con respecto al operador binario *R, por las re+las de la adicin aritm(tica, $a que para que cualquier elemento a,b pertenecientes a ) por la operacin a R b S c el conjunto de los nmeros naturales no esta cerrado con respecto al operador binario *D, por la re+la de la resta aritm(tica, debido a que 2D7 S D1 $ 2,7 pertenecen a ) pero D1 no pertenece a ). /. Le? asocia$i;a. 1l operador binario *Q, es un conjunto 8 es asociativo siempre que EQ$Qz S EQ*$Qz, para toda E, $ pertenecientes a 8. 1. Le? co"m!$a$i;a. !n operador binario *Q, para un conjunto 8 es conmutativo siempre queK EQ$ S $QE para toda E,$ pertenecientes a 8. 2. Eleme"$o i&e"$i&a&. 1l conjunto 8 tendr un elemento identidad multiplicativo Xidentidad *Q,Y en 8 si eEiste un e perteneciente a 8 con la propiedad eQE S EQe Se para cada E pertenecientes a 8. 6. I";e-sa. 1l conjunto 8 tiene un elemento identidad *e, con respecto al operador *Q, siempre que para cada E perteneciente a 8 eEista un elemento $ perteneciente a 8 tal que EQ$Se. 9. Le? &is$-ib!$i;a. 8i el operador *Q, $ el operador *.,, son operadores binarios de 8, *Q, se dice que es distributivo sobre *.,. 8iempre queK EQ*$ . z, S *EQ$, . *EQz, D 1l operador binario *R, de#ine la adicin. D >dentidad aditiva es el cero. D /a inversa aditiva de#ine la sustraccin. D 1l operador binario *., de#ine la multiplicacin. D >dentidad multiplicativa es 1. D >nversa multiplicativa de A es i+ual a 1NA de#ine la divisin esto es A Q 1NA S 1 D /a nica le$ distributiva aplicable es la de operador *., sobre el operador R *., sobre *R, a*bRc,S*a.b, R*a.c, 5ara de#inir #ormalmente el l+ebra de .oole se emplean postulados de 0untin+ton. 1. a, ierre con respecto al operador *R, b, ierre con respecto al operador *., 2. a, !n elemento identidad con respecto al operador *R,, desi+nado por el cero ER0 S0RESE b, !n elemento identidad con respecto al operador *., desi+nado por el uno EQ1S1QESE 7. a, onmutativo con respecto al operador *R, K ER$ S $RE b, onmutativo con respecto al operador *., K EQ$ S$QE ?. a, 1l operador *., es distributivo sobre el operador *R, K E.*$Rz, S *E.$, R *$.z, b, 1l operador *R, es distributivo sobre el operador *., K ER*E.z, S *ER$, . *ERz, C. 5ara cada elemento de E pertenencia a . eEiste un elemento EZ complemento perteneciente a . denominado complemento de E tal queK a, EREZ S 1 b, EZ S 0 &. 1Eisten cuando menos dos elementos E,$ pertenecientes a . tal que E di#erente de $. 5or lo tanto tenemos que el l+ebra de .oole di#iere de la aritm(tica $ del l+ebra ordinaria en la si+K a, /os postulados 0untin+tonK no inclu$en al le$ asociativa, no obstante esta le$ es valida para el l+ebra booleana *para ambos operadores, b, /a le$ distributiva del operador *R, sobre el operador *., esto esK ER*$.z, S *ER$,.*ERz,, la cual es valida para el l+ebra de boole pero no para el l+ebra ordinaria. c, 1l l+ebra booleana no tiene inversa aditiva a multiplicativa, por lo tanto no "a$ operaciones de sustracciones o divisin. d, 1l postulado C de#ine un operador llamado completo que no se encuentra en el l+ebra ordinaria. e, 1n el al+ebra de .oole se de#ine un conjunto . de dos elementos *0 $ 1, $ el l+ebra ordinaria trata con el conjunto de los nmeros reales. 5ostulado 2 a, E R 0 S E b, E . 1 S E 5ostulado C a, E R EZ S 1 b, E . EZ S 0 Teorema 1 a, E R E S E b, E . E S E Teorema 2 a, E R 1 S 1 b, E . 0 S 0 Teorema 7 involucin *EZ,Z S E Teorema 7 conmutativo a, E R $ S $ R E b, E$ S $E Teorema ? asociativo a, E R *$ R z, S *E R $, Rz b, E *$z, S *E$, z 5ostulado ? distributivo a, E *$ R z, S E$ REz b, E R $z S *E R $,*E Rz, Teorema C mor+an a, * E R $,Z S EZ $Z b, *E$, S EZ R $Z Teorema & absorcin a, E R E$ S E b, E *E R $, S E E.em*losK
E R E S E E R E$ S E E R E S *E R E, . 1 E . 1 R E$ S E E R E S *E R E, *E R EZ, E *1 R $, S E E R E S E R EEZ E *$ R 1, S E E R E S E R 0 E *1, S E E R E S E E S E
/as variables booleanas pueden tomar varios valores de 1 0. !na #uncin booleana es una eEpresin #ormada por variables binarias.
E.em*loK J1 S E$zZ 5ara J1 considerar que es i+ual a 1 siK E S 1A $ S 1 A zZ S 1A de otra manera J1 S 0. 5or lo tanto tendremos que una #uncin booleana tambi(n puede representarse en una tabla de verdad. 5ara representar una #uncin booleana en una tabla de verdad se necesita una lsit de 2ncombinaciones de 1 $ 0 de las n variables binarias, $ una columna que muestra combinaciones para las cuales # es i+ual a 1 0.
J1 S EZ$zZ R EZ$z R E$Zz R E$zZ S EZ$ *zRzZ, R EzZ *$R$Z, S EZ$ R EzZ J2 S EZ$Zz R EZ$z R E$zZ R E$z S EZz *$R$Z, R E$ *zRzZ, S EZz R E$ J7 S EZ$ZzZ R EZ$z R E$Zz R E$zZ J? S EZ$Zz R E$ZzZ R E$Zz R E$zZ R E$z S E$Z *zRzZ, R E$ *zRzZ, R EZ$z S E$Z R E$ R EZ$z S E *$R$Z, R EZ$z S E R EZ$z
0!"cio"es l73icas.
Ma"i*!laci7" al3eb-aica uando una #uncin se incrementa con compuertas l+icas, cada literal en la #uncin denota una entrada a una compuerta. 1. ada literal denota la entrada a una compuerta. 2. ada termino se implanta con una compuerta. 5or el momento nos limitaremos a la minimizacin por literales. 5or lo cual debe quedar mu$ claro que en la manipulacin al+ebraica no "a$ re+las especi#icas a se+uir a que +aranticen la respuesta #inal. E.em*lo< :educir las si+uientes #unciones booleanas. 1. E *EZR$, S EEZ R E$ S E$ 2. EZ$Zz R EZ$z R E$ S EZz *$R$Z, R E$ S EZz R E$ 7. E R EZ$ S *EREZ,*ER$, S ER$ Com*leme"$o &e !"a %!"ci7". 1l complemento de una #uncin J es JZ obteniendose por el intercambio de 1Zs $ 0Zs $ de 0Zs $ 1Zs. E.em*lo<
*AR.R,Z S *AR<,Z para < S .R AZ . <Z [ AZ . *.R,Z [ AZ . .Z .Z *AR.RRIR1RJRVV..>, *AZ..Z.Z.IZ.1Z.JZVV.>Z, /a #orma +eneralizada de IZBor+an enuncia que el complemento de una #uncin se obtiene del intercambio de los operadores A)I $ 4: $ complementando cada literal. J1 S *EZ$zZ R EZ$Zz,Z S *ER$ZRz . ER$RzZ, J2 S [ E *$ZzZR$z,[ S EZ R [ E *$Rz,.*$ZRzZ,[ 4tra #orma ms simple para derivar el complemento de una #uncin es tomar el dual de la #uncin $ complementar cada literal. 0a$ que recordar que el cual de una #uncin se obtiene por el intercambio de los operadores A)I $ 4: $ los 1Zs $ los 0Zs. E.em*lo< J1 S EZ$zZ R EZ$Zz el &!al< J1 S *ER$ZRz, . *ER$RzZ, /as variables pueden ser normales *E, complemento *EZ,. uando tenemos un conjunto de n variables nosotros podemos #ormar 2n miniterminos de acuerdo a la si+uiente tablaK 5ara nS7 2nD1 combinaciones iniciando a partir de cero. ada minit(rmino lo obtenemos de un t(rmino A)I de las n variables $ complementado cada variable si el nmero binario que representa es un 0 $ no complementando si es un 1. ada minitermino se representa por mj donde j representa el equivalente decimal del nmero binario del minitermino de la misma #orma podemos tener los maEiterminos con las n variables #ormando un t(rmino 4: para cada maEitermino. 1n estas se "ace la consideracin de que cada variable no complementada corresponde al bit 0 $ complementada al bit 1. J1S EZ$Zz R E$ZzZ R E$z S m1Rm?Rm' J2S EZ$z R E$Zz R E$zZ R E$z S m7RmCRm&Rm' J1ZS EZ$ZzZ R EZ$zZ R EZ$z R E$Zz R E$zZ *J1Z,Z S *ER$Rz, . *ER$ZRz, . *ER$ZRzZ, . *EZR$RzZ, . *EZR$ZRz, S B0 . B2 . B7 . BC . B& 1l complemento de una #uncin booleana lo podemos obtener al #ormar miniterminos para cada combinacin que produce un cero en la #uncin $ aplicando el operador 4: a esos t(rminos. /as #unciones booleanas eEpresadas como una suma de miniterminos o productos de maEiterminos se dice que esta en #orma cannica. Sim*li%icacio" &e 0!"cio"es S!ma &e mi"i$e-mi"os. omo sabemos cualquier #uncin booleana puede eEpresarse como una suma de miniterminos. /a suma de estos elementos que son los que de#inen una #uncin booleana son aquellos que dan los 1Zs de la #uncin en una tabla de verdad. Al+unas veces es conveniente eEpresar la #uncin booleana en la #orma de suma de miniterminos. 8i no puede "acerse en esta #orma entonces puede realizarse primero por la eEpansin de la eEpresin en una suma de los t(rminos A)I. Iespu(s cada t(rmino se inspecciona para ver si contiene todas las variables, si se "an perdido una o ms variables, se aplica el operador A)I con una eEpresin EREZ en donde E es una de las variables perdidas.
E.em*lo< 1Epresar la #uncin J S AR.Z en una suma de miniterminos. JS AR.Z J*A,.,, AS A*.R.Z, S A.RA.Z S A.*RZ, R A.Z*RZ, S A. R A.Z R A.Z RA.ZZ .Z S .Z *ARAZ, S A.Z R AZ.Z J S A.RA.ZRA.ZRA.ZZRA.ZRAZ.Z J S AZ.ZRA.ZZ RA.ZRA.ZRA. J S m1R m?RmCR m&R m' J*A,.,,S8!B*1,?,C,&,', /a 8!Batoria representa al operador 4: que opera en los t(rminos $ nmeros si+uientes son los minit(rminos de la #uncin. /as letras entre par(ntesis que si+uen a J #orman una lista de las variables en el orden tomado cuando el minit(rmino se convierte en un t(rmino A)I. P-o&!c$o &e los maHi$G-mi"os. 5ara eEpresar una #uncin booleana como un producto de maEit(rminos, primero debe llevarse a una #orma de t(rminos 4:. 1sto es posible al uso de la le$ distributivaA esto es si ER$z S *ER$, *ERz,A para cualquier variable perdida E en cada t(rmino se opera a 4: con EEZ. E.em*lo< J S *EZR$, *ERz, *$Rz, *EZR$, S EZR$RzzZ S *EZR$Rz, *EZR$Rz, *ERz, S ERzR$$Z S *ER$Rz, *ER$ZRz, *$Rz, S $RzREEZ S *ER$Rz, *EZR$Rz, J S *EZR$Rz, *EZR$RzZ, *ER$Rz, *ER$ZRz, *ER$Rz, *EZR$Rz, J S *EZR$Rz, *EZR$RzZ, *ER$Rz, *ER$ZRz, J S *ER$Rz, *ER$ZRz, *EZR$Rz, *EZR$RzZ, B0 B2 B? BC J*E,$,z, S 5>*0,2,?,C, 1l operador 5> denota la operacin A)I de maEit(rminosA $ los nmeros son los maEit(rminos de la #uncin.
Co";e-si7" e"$-e %o-mas ca"7"icas. 1l complemento de una #uncin eEpresada como suma de minit(rminos es i+ual a la suma de los minit(rminos perdidos de la #uncin ori+inal. E.em*lo<
J*A,.,, S 8!B*1,?,C,&,', JZ*A,.,, S 8!B*0,2,7, S m0Rm2Rm7 8i obtenemos el complemento de JZ porque el teorema de IZBor+an se obtiene J en una #orma di#erente.
*JZ,Z S *m0Rm2Rm7,Z S m0Z.m2Z.m7Z S B0 . B2 . B7 S 5>*0,2,7, S *ER$Rz, . *ER$ZRz, . *ER$ZRzZ, J S AZIR.IR.ZI AZI S AZI*.R.Z, S AZ.IRAZ.ZI S AZ.I*RZ, S AZ.IRAZ.ZI S AZ.ZI*RZ, S AZ.ZIRAZ.ZZI .I S .I*ARAZ, S A.IRAZ.I S A.I*RZ, S A.IRA.ZI S AZ.I*RZ, S AZ.IRAZ.ZI .ZI S .ZI*ARAZ, S A.ZIRAZ.ZI S A.ZI*RZ, S A.ZIRA.ZZI S AZ.ZI*RZ, S AZ.ZIRAZ.ZZI J S AZ.IRAZ.ZIRAZ.ZIRAZ.ZZIRA.IRA.ZIRA.ZIRA.ZZI "r&uitectura de computadoras "2?UIT1'TU2" D1 U#" '4-*UT"D42"
2.1 'oncepto de <ardHare.
Podemos denominar al hardware como todo el conjunto fsico de la computadora, lo cual incluye el CPU (el cual contiene todas las tarjetas de procesamiento, ya sean de sonidos, grficos, mdem, unidades de discos, procesador, memoria RAM, etc.), el monitor, bocinas, escner, impresora, mouse, teclado, micrfono, entre otros. El Hardware es la unin de componentes fsicos capaces de realizar la comunicacin entre el usuario y el software. (De manera anloga, el software o sistema operativo es el traductor entre la maquina y el hombre, convirtiendo las seales digitales o anlogas en lenguaje humano).
Todo sistema de cmputo tiene componentes de hardware dedicados a estas funciones: 1. Unidad de entrada 2. Unidad de salida 3. Unidad central de procesamiento. 4. Memoria y dispositivos de almacenamiento.
2.2 Unidad 'entral de *rocesamiento.
Una unidad central de procesamiento (UCP) es donde ocurre el procesamiento de datos. Se le conoce como el cerebro de la computadora. En las microcomputadoras la CPU se encuentra en un chip llamado microprocesador. La CPU consiste de dos componentes bsicos: unidad de control y unidad de aritmtica y lgica.
2.3 Unidad de control La funcin de la unidad de control es coordinar todas las actividades de la computadora. Todos los recursos de la computadora son administrados por la unidad de control. Esta unidad contiene las instrucciones de la CPU para llevar a cabo comandos.
En resumen, la unidad de control es la que supervisa, controla las dems partes de la computadora y regula el trabajo que debe realizar, o sea, selecciona, verifica e interpreta las instrucciones del programa y despus verifica que se ejecuten.
2.) Unidad de aritm(tica lica I "LU
En la unidad de aritmtica lgica (ALU) es donde ocurre el procesamiento real de los datos. Se realizan todos los clculos y todas las comparaciones y genera los resultados. Cuando la unidad de control encuentra una instruccin de aritmtica o de lgica, le enva el control a la unidad de aritmtica lgica. La ALU contiene una memoria construida directamente en la CPU que se usa para guardar los datos que se estn procesando por la instruccin actual.
2.+ Unidad de entrada
Son todos los elementos que permiten la unin del usuario con la unidad de procesamiento central y la memoria.: Entre estos tenemos.
Teclado@ Dispositivos de entrada que traducen los datos a una forma que la computadora pueda interpretar, para luego procesarlos y almacenarlos, los hay de forma: Teclado alfanumrico y para perfoverificacin
-ouse % Jo%sticKs@ Dispositivos que convierten el movimiento fsico en seales elctricas binarias y que la misma sea repetida en el monitor. 1sc,ner o diitaliLador de im,enes@ Estn concebidos para interpretar caracteres, combinacin de caracteres, dibujos grficos escritos a mano o en maquinas o impresoras y traducirlos al lenguaje que la computadora entiende.
Dispositivos pticos@ entre estos tenemos, Lector de marcas o rastreador de marca ptica, Digitalizador de imgenes (scanner), Cmara digital:
Digitalizador de audio: entre estos tenemos, Micrfonos
2.3 Unidad de salida
Estos dispositivos permiten al usuario ver los resultados de los clculos o de las manipulaciones de datos de la computadora. El dispositivo de salida ms comn es el monitor, impresora, mdem.
-onitor@ sirve como dispositivo de salida para recibir mensajes del computador.
Impresora@ seguro Una impresora permite obtener una copia dura o fsica de cualquier informacin que pueda aparecer en pantalla. Hay dos grupos bsicos que son: impresora de mpacto y no impacto o de pgina.
-dem@ , dispositivo que sirve para enlaza dos ordenadores transformando las seales digitales.
2.5 'oncepto de -emoria
La memoria, es una de las partes mas importantes de las computadoras. Cualquier usuario desea agregarle mas memoria a su computadora. Para definirla, diremos que es la capacidad de la PC en retener datos o informacin de manera permanente o temporal. Memoria hay de dos tipos, la memoria RAM y memoria ROM, a continuacin se explican:
2.; Tipos De -emorias.
-emoria 24- 6del inl(s 2ead 4nl% -emor%$ memoria de slo lectura7. Es una memoria de slo lectura, de dimensiones ms pequeas que el microprocesador. Si se levanta la capa protectora de los circuitos integrados, se encuentra informacin sobre el tipo de memoria ROM, y el tamao mximo de informacin que puede contener. La ROM BOS (Basic nput/Output System, sistema bsico de entrada/salida) traduce todas las rdenes a cdigo mquina, para que la computadora pueda entenderlas.
2.M Dispositivos N *erif(ricos Los perifricos son los dispositivos externos conectados a la computadora que permiten a este recibir los datos de entrada, permitir la informacin de salida y almacenar los datos. Se pueden clasificar de tres formas, de entrada, de almacenamiento, que son a la vez de entrada y salida y finalmente los de salida.
2.1> Dispositivo de almacenamiento Es todo aparato que se utilice para grabar los datos de la computadora de forma permanente o temporal. Una unidad de disco, junto con los discos que graba, es un dispositivo de almacenamiento. A veces se dice que una computadora tiene dispositivos de almacenamiento primarios (o principales) y secundarios (o auxiliares). Cuando se hace esta distincin, el dispositivo de almacenamiento primario es la memoria de acceso aleatorio (RAM) de la computadora, un dispositivo de almacenamiento permanente pero cuyo contenido es temporal. El almacenamiento secundario incluye los dispositivos de almacenamiento ms permanentes, como unidades de disco y de cinta. http://www.gestiopolis.com/recursos4/docs/eco/histocom.htm#HSTORA%20DE%20LA %20COMPUTACN
Sistemas operativos S4/TO"21
3.1 'oncepto de SoftHare
El Software es un conjunto de programas, documentos, procedimientos, y rutinas asociadas con la operacin de un sistema de cmputo. Distinguindose de los componentes fsicos llamados hardware. Comnmente a los programas de computacin se les llama software; el software asegura que el programa o sistema cumpla por completo con sus objetivos, opera con eficiencia, esta adecuadamente documentado, y suficientemente sencillo de operar. Es simplemente el conjunto de instrucciones individuales que se le proporciona al microprocesador para que pueda procesar los datos y generar los resultados esperados. El hardware por si solo no puede hacer nada, pues es necesario que exista el software, que es el conjunto de instrucciones que hacen funcionar al hardware. 3.2 Sistema 4perativo
Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware de un computador y su propsito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un Sistema Operativo es, entonces, lograr que el Sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. 3.3 Tipos de Sistemas 4perativos.
Actualmente los sistemas operativos se clasifican en tres clasificaciones: sistemas operativos por su estructura (visin interna), sistemas operativos por los servicios que ofrecen y sistemas operativos por la forma en que ofrecen sus servicios (visin externa).
Sistemas 4perativos por Servicios68isin 1Bterna7. Esta clasificacin es la ms comnmente usada y conocida desde el punto de vista del usuario final.
*or #Pmero de Usuarios@ Sistema 4perativo -onousuario. Los sistemas operativos monousuarios son aqullos que soportan a un usuario a la vez, sin importar el nmero de procesadores que tenga la computadora o el nmero de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales tpicamente se han clasificado en este rengln. En otras palabras los sistemas monousuarios son aquellos que nada ms puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicacin que se este ejecutando.
Sistema 4perativo -ultiusuario. Los sistemas operativos multiusuarios son capaces de dar servicio a ms de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el nmero de procesadores en la mquina ni el nmero de procesos que cada usuario puede ejecutar simultneamente. En esta categora se encuentran todos los sistemas que cumplen simultneamente las necesidades de dos o ms usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing).
*or el #Pmero de Tareas@ Sistema 4perativo -onotarea. Los sistemas monotarea son aquellos que slo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez. Los sistemas operativos monotareas son ms primitivos y, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una.
Sistema Operativo Multitarea. Un sistema operativo multitarea es aqul que le permite al usuario estar realizando varias labores al mismo tiempo. Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutacin de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o ms aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicacin que se encuentra en primer plano (la que ve el usuario. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano, y siempre que esta aplicacin lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atencin del microprocesador durante una fraccin de segundo. Un sistema operativo multitarea puede estar editando el cdigo fuente de un programa durante su depuracin mientras compila otro programa, a la vez que est recibiendo correo electrnico en un proceso en background. Es comn encontrar en ellos interfaces grficas orientadas al uso de mens y el ratn, lo cual permite un rpido intercambio entre las tareas para el usuario, mejorando su productividad. Un sistema operativo multitarea se distingue por su capacidad para soportar la ejecucin concurrente de dos o ms procesos activos. La multitarea se implementa generalmente manteniendo el cdigo y los datos de varios procesos simultneamente en memoria y multiplexando el procesador y los dispositivos de E/S entre ellos. La multitarea suele asociarse con soporte hardware y software para proteccin de memoria con el fin de evitar que procesos corrompan el espacio de direcciones y el comportamiento de otros procesos residentes.
*or el #Pmero de *rocesadores@ Sistema 4perativo de Uniproceso. Un sistema operativo uniproceso es aqul que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese ms de uno le sera intil. El ejemplo ms tpico de este tipo de sistemas es el DOS y MacOS.
Sistema Operativo de Multiproceso.Un sistema operativo multiproceso se refiere al nmero de procesadores del sistema, que es ms de uno y ste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simtrica o asimtricamente. Asimtrica. Cuando se trabaja de manera asimtrica, el sistema operativo selecciona a uno de los procesadores el cual jugar el papel de procesador maestro y servir como pivote para distribuir la carga a los dems procesadores, que reciben el nombre de esclavos.
Simtrica. Cuando se trabaja de manera simtrica, los procesos o partes de ellos (threads) son enviados indistintamente a cual quiera de los procesadores disponibles, teniendo, tericamente, una mejor distribucin y equilibrio en la carga de trabajo bajo este esquema. Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un rea de memoria, un conjunto de registros con valores especficos, la pila y otros valores de contexto. Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de cdigo paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por s mismo esta facilidad, pero esta ltima opcin las ms de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o ms tiempo a la paralelizacin que a elaborar el algoritmo inicial.
). Sistemas 4perativos por su 1structura 68isin Interna7.
Segn, se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los cuales son: Requisitos de usuario: Sistema fcil de usar y de aprender, seguro, rpido y adecuado al uso al que se le quiere destinar. Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operacin, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad. A continuacin se describen las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener.
Estructura Monoltica.Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra. Las caractersticas fundamentales de este tipo de estructura son: Construccin del programa final a base de mdulos compilados separadamente que se unen a travs del ligador. Buena definicin de parmetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento. Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc. 3.) *roramas De "plicaciones
Los programas de aplicacin son un conjunto de programas que indican a la computadora cmo analizar tareas especficas para el usuario. La aplicacin es el objeto para el cual se usa la computadora. La computadora obtiene instrucciones a partir del programa de aplicacin. El programa de aplicacin lo escribe un programador de aplicacin, y trabaja bajo la direccin del sistema operativo de la computadora.
3.+ Tipos De *roramas De "plicaciones Los programas de aplicacin se dividen en paquetes de software (edicion de texto, almacenamiento y gestion de datos, realizacin de calculos generar informes, comunicacin con otros ordenadores, enviar y reciver correo etc.) y aplicaciones especficas (facturacin, contabilidad, nominas etc.)
Ejemplos de programas de aplicacin: *rocesador de palabras Simplifica la tarea de escribir, editar e imprimir un documento. Tambin mejora la produccin personal permitiendo la duplicacin de un documento sin rescribirlo, o recuperar el documento sin tener que ir sobre una tonelada de papeles para encontrarlo. El usuario puede ver la carta en la pantalla, leerla, corregirla y cambiarla antes de mandarla a imprimir. Puede guardar la carta en un disco y recuperarla ms tarde para hacerle leves cambios o usarla de nuevo en el futuro. Tambin puede cotejar y corregir la gramtica y sugerir sinnimos. Ahorra mucho tiempo. Ejemplos: Word, Wordperfect, Word Star.
<o!a electrnica
Es una hoja de clculo que permite la manipulacin de datos arreglados en filas y columnas. Una celda puede contener texto, un nmero o una frmula que establece una relacin con otras celdas. Cada vez que se cambia el contenido de una celda, la hoja electrnica libera de lo tedioso de hacer reclculos a mano, ahorrando una gran cantidad de tiempo. Tipos de aplicaciones: inventario, registro de datos, balanceo de chequera, planificacin de producto, requerimientos de materiales y labores, produccin del informe del tiempo, presupuesto, adquisicin y bsqueda de bienes races, anlisis de bienes races y mercadeo. Los paquetes complejos de hojas electrnicas pueden hacer comparaciones de lgica como "if-then-else" o pruebas de "less than/greater than". Estas operaciones se utilizan en tareas como el clculo de nminas. Ejemplos: Excel, Lotus 123.
3.3 Lenua!es de *roramacin
Los computadores interpretan (comprenden) un lenguaje muy simple llamado lenguaje de mquina. Cada instruccin del lenguaje de mquina es elemental. Un programa escrito en lenguaje de mquina necesita muchas instruccciones para hacer cosas simples (es decir, es difcil de escribir) y slo funciona en un computador del mismo tipo.
Los lenguajes de programacin de alto nivel constituyen un paso evolutivo y pretenden brindar cierto nivel de abstraccin e independencia del computador.
3.5 *roramas Los programas de computadora son simples largas listas de instrucciones para la computadora a ejecutar, tal vez con tablas de datos. Muchos programas de computadora contienen millones de instrucciones, y muchas de esas instrucciones son ejecutadas repetidamente. Una tpica PC moderna (en el aos 2003) puede ejecutar alrededor de 2-3 billones de instrucciones por segundo. Las computadoras no hacen beneficio de su extraordinaria capacidades por la habilidad de ejecutar complejas instrucciones. Preferiblemente, estas hacen millones de simples instrucciones ordenadas por gente inteligente, "programadores" [programmers]. Buenos programadores desarrollan juegos de instrucciones para hacer tareas comunes (por instancia, dibujar un punto en pantalla) y entonces haces esos juegos de instrucciones disponibles a otros programadores. http://www.gestiopolis.com/recursos4/docs/eco/histocom.htm#HSTORA%20DE%20LA %20COMPUTACN
Definicin % concepto. Un sistema operativo es el programa que oculta la verdad del hardware al programador y presenta una vista simple y agradable de los archivos nominados que pueden leerse y escribirse. Es sistema operativo resguarda al programador del hardware del disco y presenta una interfaz simple orientada al archivo, tambin disimula mucho del trabajo concerniente a interrupciones, relojes o cronmetros, manejo de memoria y otras caractersticas de bajo nivel. Desde su creacin, las computadoras digitales han utilizado un sistema de codificacin de instrucciones en sistema de numeracin binaria, es decir con los 0S. Esto se debe a que los circuitos integrados funcionan con este principio, es decir, hay corriente o no hay corriente. En el origen de la historia de las computadoras ( hace unos cuarenta aos), los sistemas operativos no existan y la introduccin de un programa para ser ejecutado se converta en un increble esfuerzo que solo poda ser llevado a cabo por muy pocos expertos. Esto hacia que las computadoras fueran muy complicadas de usar y que se requiriera tener altos conocimientos tcnicos para operarlas. Era tan complejo su manejo, que en algunos casos el resultado llegaba a ser desastroso. Adems, el tiempo requerido para introducir un programa en aquellas grandes mquinas de lento proceso superaba por mucho el de ejecucin y resultaba poco provechosa la utilizacin de computadoras para resolucin de problemas prcticos. Se buscaron medios ms elaborados para manipular la computadora, pero que a su vez simplificaran la labor del operador o el usuario. Es entonces cuando surge la idea de crear un medio para que el usuario pueda operar la computadora con un entorno, lenguaje y operacin bien definido para hacer un verdadero uso y explotacin de esta. Surgen los sistemas operativos. Un sistema operativo es el encargado de brindar al usuario una forma amigable y sencilla de operar, interpretar, codificar y emitir las ordenes al procesador central para que este realice las tareas necesarias y especificas para completar una orden. El sistema operativo, es el instrumento indispensable para hacer de la computadora un objeto til. Bajo este nombre se agrupan todos aquellos programas que permiten a los usuarios la utilizacin de este enredo de cables y circuitos, que de otra manera serian difciles de controlar. Un sistema operativo se define como un conjunto de procedimientos manuales y automticos, que permiten a un grupo de usuarios compartir una instalacin de computadora eficazmente. Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definicin exacta, es decir una que sea estndar; a continuacin se presentan algunas: 1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cmputo"; los sistemas operativos ponen dicha capacidad de cmputo al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento. 2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware del computador ;adems de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicacin y los datos. 3.- Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware del computador y su propsito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. 4.- Un Sistema Operativo es un conjunto de programas que controla la ejecucin de programas de aplicacin y acta como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema. En resumen, se podra decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son: o Gestionar el hardware.- Se refiere al hecho de administrar de una forma ms eficiente los recursos de la mquina. o Facilitar el trabajo al usuario.-Permite una comunicacin con los dispositivos de la mquina. El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de cdigo que se encuentra en el procesador, el cual carga el BOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicacin y software variado. /unciones % caracter.sticas. La funcin del sistema operativo es la de presentar al usuario con el equivalente de una mquina ampliada o mquina virtual que sea ms fcil de programar que el hardware implcito. nterpreta los comandos que permiten al usuario comunicarse con el ordenador. Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse. Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnticas. Gestiona los errores de hardware y la prdida de datos. Servir de base para la creacin del software logrando que equipos de marcas distintas funcionen de manera anloga, salvando las diferencias existentes entre ambos. Configura el entorno para el uso del software y los perifricos; dependiendo del tipo de mquina que se emplea, debe establecerse en forma lgica la disposicin y caractersticas del equipo. Como por ejemplo, una microcomputadora tiene fsicamente dos unidades de disco, puede simular el uso de otras unidades de disco, que pueden ser virtuales utilizando parte de la memoria principal para tal fin. En caso de estar conectado a una red, el sistema operativo se convierte en la plataforma de trabajo de los usuarios y es este quien controla los elementos o recursos que comparten. De igual forma, provee de proteccin a la informacin que almacena. Funciones de los sistemas operativos. 1.- Aceptar todos los trabajos y conservarlos hasta su finalizacin. 2.- nterpretacin de comandos: nterpreta los comandos que permiten al usuario comunicarse con el ordenador. 3.- Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el Mouse. 4.- Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnticas. 5.- Manejo de errores: Gestiona los errores de hardware y la prdida de datos. 6.- Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Definir el orden. (Quien va primero y quien despus). 7.- Proteccin: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario. 8.- Multiacceso: Un usuario se puede conectar a otra mquina sin tener que estar cerca de ella. 9.- Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos. Caractersticas de los sistemas operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas: Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente posible. Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos perifricos, cuando el usuario as lo requiera. Organizar datos para acceso rpido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalacin y uso de las redes de computadoras. Procesamiento por bytes de flujo a travs del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. El software de aplicacin son programas que se utilizan para disear, tal como el procesador de palabras, lenguajes de programacin, hojas de clculo, etc. El software de base sirve para interactuar el usuario con la mquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseo del mismo. El Software de base est compuesto por : o Cargadores. o Compiladores. o Ensambladores. o Macros. 1volucin 0istrica. Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios revolucionarios llamados generaciones. En el caso del Hardware, las generaciones han sido marcadas por grandes avances en los componentes utilizados, pasando de vlvulas ( primera generacin ) a transistores ( segunda generacin ), a circuitos integrados ( tercera generacin), a circuitos integrados de gran y muy gran escala (cuarta generacin). Cada generacin Sucesiva de hardware ha ido acompaada de reducciones substanciales en los costos, tamao, emisin de calor y consumo de energa, y por incrementos notables en velocidad y capacidad. :eneracion 'ero 6d(cada de 1M)>7 Los primeros sistemas computacionales no posean sistemas operativos. Los usuarios tenan completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano. *rimera :eneracion 6d(cada de 1M+>7 Los sistemas operativos de los aos cincuenta fueron diseados para hacer mas fluida la transicin entre trabajos. Antes de que los sistemas fueran diseados, se perda un tiempo considerable entre la terminacin de un trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunan por grupos o lotes. Cuando el trabajo estaba en ejecucin, este tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y lea e iniciaba el trabajo siguiente. Al inicio de los 50's esto haba mejorado un poco con la introduccin de tarjetas perforadas (las cuales servan para introducir los programas de lenguajes de mquina), puesto que ya no haba necesidad de utilizar los tableros enchufables. Adems el laboratorio de investigacin General Motors implement el primer sistema operativo para la BM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la transicin entre tareas se suavizaba para lograr la mxima utilizacin del sistema. Esto se conoce como sistemas de procesamiento por lotes de un slo flujo, ya que los programas y los datos eran sometidos en grupos o lotes. La introduccin del transistor a mediados de los 50's cambi la imagen radicalmente. Se crearon mquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque slo las grandes universidades y las grandes corporaciones o bien las oficinas del gobierno se podan dar el lujo de tenerlas. Para poder correr un trabajo (programa), tenan que escribirlo en papel (en Fortran o en lenguaje ensamblador) y despus se perforara en tarjetas. Enseguida se llevara la pila de tarjetas al cuarto de introduccin al sistema y la entregara a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigira a la impresora y desprendera la salida y la llevara al cuarto de salida, para que la recogiera el programador. Seunda :eneracion 6a mitad de la d(cada de 1M3>7 La caracterstica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramacin, y los principios del multiprocesamiento. En los sistemas de multiprogramacin, varios programas de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el procesador se cambia rpidamente de un trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina. La independencia de dispositivos aparece despus. Un usuario que desea escribir datos en una cinta en sistemas de la primera generacin tenia que hacer referencia especifica a una unidad de cinta particular. En la segunda generacin, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta densidad. Se desarrollo sistemas compartidos, en la que los usuarios podan acoplarse directamente con el computador a travs de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata. Tercera :eneracion 6mitad de d(cada 1M3> a mitad d(cada de 1M5>7 Se inicia en 1964, con la introduccin de la familia de computadores Sistema/360 de BM. Los computadores de esta generacin fueron diseados como sistemas para usos generales . Casi siempre eran sistemas grandes, voluminosos, con el propsito de serlo todo para toda la gente. Eran sistemas de modos mltiples, algunos de ellos soportaban simultneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se haba construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho despus de lo que el planificador marcaba como fecha de terminacin. Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios. 'uarta :eneracion 6mitad de d(cada de 1M5> en adelante7 Los sistemas de la cuarta generacin constituyen el estado actual de la tecnologa. Muchos diseadores y usuarios se sienten aun incmodos, despus de sus experiencias con los sistemas operativos de la tercera generacin. Con la ampliacin del uso de redes de computadores y del procesamiento en lnea los usuarios obtienen acceso a computadores alejados geogrficamente a travs de varios tipos de terminales. Los sistemas de seguridad se ha incrementado mucho ahora que la informacin pasa a travs de varios tipos vulnerables de lneas de comunicacin. La clave de cifrado esta recibiendo mucha atencin; han sido necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad a nadie mas que a los receptores adecuados. El porcentaje de la poblacin que tiene acceso a un computador en la dcada de los ochenta es mucho mayor que nunca y aumenta rpidamente. El concepto de maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles fsicos de; sistema de computacin que esta siendo accedida. En su lugar, el usuario ve un panorama llamado maquina virtual creado por el sistema operativo. Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad orientada hacia la informacin, y el trabajo de las bases de datos es hacer que esta informacin sea conveniente accesible de una manera controlada para aquellos que tienen derechos de acceso. <istoria de los Sistemas 4perativos. Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales caractersticas de un Sistema Operativo contemporneo, es til considerar como han ido evolucionando stos con el tiempo. Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos La primera de estas versiones podra ser esta: En los 40's, se introducen los programas bit a bit, por medio de interruptores mecnicos y despus se introdujo el leng. mquina que trabajaba por tarjetas perforadas. Con las primeras computadoras, desde finales de los aos 40 hasta la mitad de los aos 50, el programador interactuaba de manera directa con el hardware de la computadora, no exista realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a travs del lenguaje mquina (bits) o a travs de interruptores. Durante los aos 50's y 60's.- A principio de los 50's, la compaa General's Motors implanto el primer sistema operativo para su BM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseadores, capturistas, etc.), se encarguen de modificar sus programas. Establecan o apartaban tiempo, metan o introducan sus programas, corregan y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traduca en prdida de tiempo y tiempos de programas excesivos. En los aos 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta poca surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo. En los 80's, inici el auge de la NTERNET en los Estados Unidos de Amrica. A finales de los aos 80's comienza el gran auge y evolucin de los Sistemas Operativos. Se descubre el concepto de multiprogramacin que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales. Los 90's y el futuro, entramos a la era de la computacin distribuida y del multiprocesamiento a travs de mltiples redes de computadoras, aprovechando el ciclo del procesador. Se tendr una configuracin dinmica con un reconocimiento inmediato de dispositivos y software que se aada o elimine de las redes a travs de procesos de registro y localizadores. La conectividad se facilita gracias a estndares y protocolos de sistemas abiertos por organizaciones como la Org. ntern. de normas, fundacin de software abierto, todo estar mas controlado por los protocolos de comunicacin OS y por la red de servicios digital SDN. Se ha desarrollado otra versin, la cual se ha hecho en base a etapas o generaciones: 1a. 1tapa 61M)+G1M++7 @ Bulbos % coneBiones. Despus de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construccin de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la dcada de los 40's, Howard Aiken (Harvard), John Von Newman (nstituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), as como Conrad Zuse (Alemania), entre otros lograron construir mquinas de clculo mediante bulbos. Estas mquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho ms lentas que la computadora casera ms econmica en nuestros das. Toda la programacin se llevaba a cabo en lenguaje de mquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones bsicas de la mquina. Los lenguajes de programacin eran desconocidos (incluso el lenguaje ensamblador). No se oa de los Sistemas Operativos el modo usual de operacin consista en que el programador reservaba cierto perodo en una hoja de reservacin pegada a la pared, iba al cuarto de la mquina, insertaba su conexin a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o ms bulbos se quemara durante la ejecucin. La inmensa mayora de los problemas eran clculos numricos directos, por ejemplo, el clculo de valores para tablas de senos y cosenos. A principio de la dcada de los 50's la rutina mejoro un poco con la introduccin de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo dems el proceso era el mismo. 2a. 1tapa. 61M++G1M3+7 @ Transistores % Sistemas de *rocesamiento por lotes. La introduccin del transistor a mediados de los aos 50's modific en forma radical el panorama. Las computadoras se volvieron confiables de forma que podan fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por dems rpidas vas para reducir el tiempo invertido. La solucin que, por lo general se adopt, fue la del sistema de procesamiento por lotes. 3ra 1tapa 61M3+G1M;> 7 @ 'ircuitos interados % multiproramacin. La 360 de BM fue la primera lnea principal de computadoras que utiliz los circuitos integrados, lo que proporcion una gran ventaja en el precio y desempeo con respecto a las mquinas de la segunda generacin, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamao y sus problemas el sistema operativo de la lnea BM 360 y los sistemas operativos similares de esta generacin producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayora de sus clientes. Tambin popularizaron varias tcnicas fundamentales, ausentes de los sistemas operativos de la segunda generacin, de las cuales la ms importante era la de multiprogramacin. Otra caracterstica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cmputo. As, siempre que concluyera un trabajo el sistema operativo poda cargar un nuevo trabajo del disco en la particin que quedara desocupada y ejecutarlo. )ta 1tapa 61M;>G"ctualidad7 @ 'omputadoras personales. Un interesante desarrollo que comenz a llevarse a cabo a mediados de la dcada de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos. En los sistema operativo de red, los usuarios estn conscientes de la existencia de varias computadoras y pueden conectarse con mquinas remotas y copiar archivos de una mquina a otra. Cada mquina ejecuta su propio sistema operativo local y tiene su propio usuario. Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando est compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automtica y eficaz por el sistema operativo. 'lasificacin. Sistema 4perativo -ultitareas. Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutacin de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o ms aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicacin que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicacin. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicacin esta esperando informacin del usuario), y siempre que esta aplicacin lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atencin del microprocesador durante una fraccin de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es mucho ms lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultneas. Sistema 4perativo -onotareas. Los sistemas operativos monotareas son ms primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresin. Sistema 4perativo -onousuario. Los sistemas monousuarios son aquellos que nada ms puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicacin que se este ejecutando. Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y estn orientados principalmente por los microcomputadores. Sistema 4perativo -ultiusuario. Es todo lo contrario a monousuario; y en esta categora se encuentran todos los sistemas que cumplen simultneamente las necesidades de dos o ms usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing). Secuencia por Lotes. La secuencia por lotes o procesamiento por lotes en microcomputadoras, es la ejecucin de una lista de comandos del sistema operativo uno tras otro sin intervencin del usuario. En los ordenadores ms grandes el proceso de recogida de programas y de conjuntos de datos de los usuarios, la ejecucin de uno o unos pocos cada vez y la entrega de los recursos a los usuarios. Procesamiento por lotes tambin puede referirse al proceso de almacenar transacciones durante un cierto lapso antes de su envo a un archivo maestro, por lo general una operacin separada que se efecta durante la noche. Los sistemas operativos por lotes (batch), en los que los programas eran tratados por grupos (lote) en ves de individualmente. La funcin de estos sistemas operativos consista en cargar en memoria un programa de la cinta y ejecutarlo. Al final este, se realizaba el salto a una direccin de memoria desde donde reasuma el control del sistema operativo que cargaba el siguiente programa y lo ejecutaba. De esta manera el tiempo entre un trabajo y el otro disminua considerablemente. Tiempo 2eal. Un sistema operativo en tiempo real procesa las instrucciones recibidas al instante, y una vez que han sido procesadas muestra el resultado. Este tipo tiene relacin con los sistemas operativos monousuarios, ya que existe un solo operador y no necesita compartir el procesador entre varias solicitudes. Su caracterstica principal es dar respuestas rpidas; por ejemplo en un caso de peligro se necesitaran respuestas inmediatas para evitar una catstrofe. Tiempo 'ompartido. El tiempo compartido en ordenadores o computadoras consiste en el uso de un sistema por ms de una persona al mismo tiempo. El tiempo compartido ejecuta programas separados de forma concurrente, intercambiando porciones de tiempo asignadas a cada programa (usuario). En este aspecto, es similar a la capacidad de multitareas que es comn en la mayora de los microordenadores o las microcomputadoras. Sin embargo el tiempo compartido se asocia generalmente con el acceso de varios usuarios a computadoras ms grandes y a organizaciones de servicios, mientras que la multitarea relacionada con las microcomputadoras implica la realizacin de mltiples tareas por un solo usuario. CLASI0ICACIN DE LOS SISTEMAS OPERATI'OS /os sistemas operativos se clasi#ican enK 8istemas operativos por lotes. 8istemas operativos multipro+ramacin o de multitarea. 8istemas operativos multiusuario. 8istemas operativos de tiempo compartido. 8istemas operativos de tiempo real. 8istemas operativos distribuidos. 8istemas operativos de red. 8istemas operativos paralelos. Sis$emas o*e-a$i;os *o- lo$es. /os sistemas operativos por lotes requieren que la in#ormacin est( reunida en bloque o -lote- *el pro+rama, los datos, $ las instrucciones,. /os trabajos son procesados en el orden de admisin, se+n el modelo de -primero en lle+ar primero en ser atendido-. 1n estos sistemas la memoria se divide en dos zonas. !na de ellas es ocupada por el sistema operativo, $ la otra se usa para car+ar pro+ramas transitorios para su ejecucin. uando termina la ejecucin de un pro+rama se car+a un nuevo pro+rama en la misma zona de memoria. 0lgunos ejemplos de -istemas Fperati(os por lotes e=itosos son el -CF"E, del AC%%33, el cual est orientado a procesamiento cientfico pesado, el EGEC // para el @?/+0C 223:, orientado a procesamiento acadmico! 0lgunas otras caractersticas con que cuentan los -istemas Fperati(os por lotes son4 Hequiere que el programa, datos rdenes al sistema sean remitidos todos juntos en forma de lote! "ermiten poca o ninguna interaccin usuarioIprograma en ejecucin! Maor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios! ?o con(eniente para desarrollo de programas por bajo tiempo de retorno depuracin fuera de lnea! Con(eniente para programas de largos tiempos de ejecucin ;Ej!, anlisis estadsticos, nminas de personal, etc!<! -e encuentra en muchos computadores personales combinados con procesamiento serial! "lanificacin del procesador sencilla, tpicamente procesados en orden de llegada! "lanificacin de memoria sencilla, generalmente se di(ide en dos4 parte residente del -!F! programas transitorios! ?o requieren gestin crtica de dispositi(os en el tiempo! -uelen proporcionar gestin sencilla de manejo de archi(os4 se requiere poca proteccin ning1n control de concurrencia para el acceso! 0i3!-a. T-aba.os m4s com!"es !e -eali(a el Sis$ema O*e-a$i;o *o- lo$es. Sis$emas o*e-a$i;os m!l$i*-o3-amaci7" o &e m!l$i$a-eas. /os sistemas de multipro+ramacin son capaces de soportar dos o ms procesos concurrentes mltiples, permiten que residan al mismo tiempo en la memoria primaria las instrucciones $ los datos procedentes de dos o ms procesos. 1stos sistemas implican la operacin de multiproceso, para el manejo de la in#ormacin. 8e caracterizan principalmente por un +ran nmero de pro+ramas activos simultneamente que compiten por los recursos del sistema, como el procesador, la memoria, $ los -dispositivos de 1N8-. 1stos sistemas monitorean el estado de todos los pro+ramas activos $ recursos del sistema. -istemas Fperati(os como @?/G, JindoKs >8, JindoKs >$, JindoKs ?L, M0C7F-, F-I#, soportan la multitarea! Las caractersticas de un -istema Fperati(o de multiprogramacin o multitarea son las siguientes4 Mejora producti(idad del sistema utilizacin de recursos! Multiple=a recursos entre (arios programas! *eneralmente soportan m1ltiples usuarios ;multiusuarios<! "roporcionan facilidades para mantener el entorno de usuarios indi(iduales! Hequieren (alidacin de usuario para seguridad proteccin! "roporcionan contabilidad del uso de los recursos por parte de los usuarios! Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real! -istemas multiprocesadores son sistemas multitareas por definicin a que soportan la ejecucin simultnea de m1ltiples tareas sobre diferentes procesadores! En general, los sistemas de multiprogramacin se caracterizan por tener m1ltiples programas acti(os compitiendo por los recursos del sistema4 procesador, memoria, dispositi(os perifricos! Sis$emas o*e-a$i;os m!l$i!s!a-io. /os sistemas operativos multiusuario permiten acceder simultneamente a un sistema de computadoras a trav(s de dos o ms terminales. 1ste tipo de sistema operativo es #undamental en el manejo de redes de computadoras actualmente. Sis$emas o*e-a$i;os &e $iem*o com*a-$i&o /os sistemas operativos de tiempo compartido tratan de proporcionar un reparto equitativo de los recursos comunes para dar la impresin a los usuarios de que poseen una computadora independiente. 1n estos sistemas el administrador de memoria proporciona aislamiento $ proteccin de los pro+ramas, $a que +eneralmente no tienen necesidad de comunicarse entre ellos. 1l control de 1N8 se encar+a de proporcionar o retirar la asi+nacin a los dispositivos de #orma que se preserve la inte+ridad del sistema $ se proporcione servicio a todos los usuarios. 1l administrador de arc"ivos proporciona proteccin $ control en el acceso de la in#ormacin, dada la posibilidad de concurrencia $ con#lictos al tratar de acceder a los arc"ivos. Ejemplos de -istemas Fperati(os de tiempo compartido son Multics, F-I&%3 AEC723! Caractersticas de los -istemas Fperati(os de tiempo compartido4 "opulares representantes de sistemas multiprogramados multiusuario, Ej!4 sistemas de dise.o asistido por computador, procesamiento de te=to, etc! Aan la ilusin de que cada usuario tiene una mquina para s! Maora utilizan algoritmo de reparto circular! "rogramas se ejecutan con prioridad rotatoria que se incrementa con la espera disminue despus de concedido el ser(icio! E(itan monopolizacin del sistema asignando tiempos de procesador ;time slot<! *estin de memoria proporciona proteccin a programas residentes! *estin de archi(o debe proporcionar proteccin control de acceso debido a que pueden e=istir m1ltiples usuarios accesando a un mismo archi(o! Sis$emas o*e-a$i;os &e $iem*o -eal Los -istemas Fperati(os de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos! "or lo general, estn subutilizados sus recursos con la finalidad de prestar atencin a los procesos en el momento que lo requieran! -e utilizan en entornos donde son procesados un gran n1mero de sucesos o e(entos! Muchos -istemas Fperati(os de tiempo real son construidos para aplicaciones mu especficas como control de trfico areo, bolsas de (alores, control de refineras, control de laminadores! Lambin en el ramo automo(ilstico de la electrnica de consumo, las aplicaciones de tiempo real estn creciendo mu rpidamente! Ftros campos de aplicacin de los -istemas Fperati(os de tiempo real son los siguientes4 Control de trenes! Lelecomunicaciones! -istemas de fabricacin integrada! "roduccin distribucin de energa elctrica! Control de edificios! -istemas multimedia! 0lgunos ejemplos de -istemas Fperati(os de tiempo real son4 +=JorMs, -olaris, Lns F- -pectra! Los -istemas Fperati(os de tiempo real, cuentan con las siguientes caractersticas4 -e dan en entornos en donde deben ser aceptados procesados gran cantidad de sucesos, la maora e=ternos al sistema computacional, en bre(e tiempo o dentro de ciertos plazos! -e utilizan en control industrial, conmutacin telefnica, control de (uelo, simulaciones en tiempo real!, aplicaciones militares, etc! Fbjeti(o es proporcionar rpidos tiempos de respuesta! "rocesa rfagas de miles de interrupciones por segundo sin perder un solo suceso! "roceso se acti(a tras ocurrencia de suceso, mediante interrupcin! "roceso de maor prioridad e=propia recursos! "or tanto generalmente se utiliza planificacin e=propiati(a basada en prioridades! *estin de memoria menos e=igente que tiempo compartido, usualmente procesos son residentes permanentes en memoria! "oblacin de procesos esttica en gran medida! "oco mo(imiento de programas entre almacenamiento secundario memoria! *estin de archi(os se orienta ms a (elocidad de acceso que a utilizacin eficiente del recurso! Sis$emas O*e-a$i;os &is$-ib!i&os. "ermiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores! "uede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es transparente para el usuario! E=isten dos esquemas bsicos de stos! @n sistema fuertemente acoplado es a es aquel que comparte la memoria un reloj global, cuos tiempos de acceso son similares para todos los procesadores! En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, a que cada uno cuenta con su memoria local! Los sistemas distribuidos deben de ser mu confiables, a que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo! Entre los diferentes -istemas Fperati(os distribuidos que e=isten tenemos los siguientes4 -prite, -olaris7MC, Mach, Chorus, -pring, 0moeba, Laos, etc! Caractersticas de los -istemas Fperati(os distribuidos4 Coleccin de sistemas autnomos capaces de comunicacin cooperacin mediante intercone=iones hardKare softKare! *obierna operacin de un -!C! proporciona abstraccin de mquina (irtual a los usuarios! Fbjeti(o cla(e es la transparencia! *eneralmente proporcionan medios para la comparticin global de recursos! -er(icios a.adidos4 denominacin global, sistemas de archi(os distribuidos, facilidades para distribucin de clculos ;a tra(s de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc!<! "i#tema# Operati%o# de red. -on aquellos sistemas que mantienen a dos o ms computadoras unidas a tra(s de alg1n medio de comunicacin ;fsico o no<, con el objeti(o primordial de poder compartir los diferentes recursos la informacin del sistema! El primer -istema Fperati(o de red estaba enfocado a equipos con un procesador Motorola %$333, pasando posteriormente a procesadores /ntel como ?o(ell ?etKare! Los -istemas Fperati(os de red ms ampliamente usados son4 ?o(ell ?etKare, "ersonal ?etKare, L0? Manager, JindoKs ?L -er(er, @?/G, L0?tastic! 0i3!-a. Se m!es$-a !" Sis$ema O*e-a$i;o e" -e&. Sis$emas O*e-a$i;os *a-alelos. En estos tipos de -istemas Fperati(os se pretende que cuando e=istan dos o ms procesos que compitan por alg1n recurso se puedan realizar o ejecutar al mismo tiempo! En @?/G e=iste tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interacti(a, simulando paralelismo ;es decir, atender de manera concurrente (arios procesos de un mismo usuario<! 0s, en lugar de esperar a que el proceso termine de ejecutarse ;como lo hara normalmente<, regresa a atender al usuario inmediatamente despus de haber creado el proceso! Ejemplos de estos tipos de -istemas Fperati(os estn4 0lpha, "+M, la serie 0/G, que es utilizado en los sistemas H-I%333 de /CM! Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin que se les daba. A continuacin se mostrarn diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus caractersticas: Sistemas 4perativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interaccin entre los usuarios y los programas en ejecucin. Se renen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos como sucede en el procesamiento en serie. Estos sistemas son de los ms tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecucin muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecucin de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual est orientado a procesamiento cientfico pesado, y el EXEC para el UNVAC 1107, orientado a procesamiento acadmico. Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son: Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interaccin usuario/programa en ejecucin. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. Conveniente para programas de largos tiempos de ejecucin (ej, anlisis estadsticos, nminas de personal, etc.) Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestin crtica de dispositivos en el tiempo. Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el acceso. Figura. Trabajos ms comunes que realiza el Sistema Operativo por lotes. Sistemas 4perativos de tiempo real. Los Sistemas Operativos de tiempo real son aquelos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la finalidad de prestar atencin a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran nmero de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especficas como control de trfico areo, bolsas de valores, control de refineras, control de laminadores. Tambin en el ramo automovilstico y de la electrnica de consumo, las aplicaciones de tiempo real estn creciendo muy rpidamente. Otros campos de aplicacin de los Sistemas Operativos de tiempo real son los siguientes: Control de trenes. Telecomunicaciones. Sistemas de fabricacin integrada. Produccin y distribucin de energa elctrica. Control de edificios. Sistemas multimedia. Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas: Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos al sisterma computacional, en breve tiempo o dentro de ciertos plazos. Se utlizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc. Objetivo es proporcionar rpidos tiempos de respuesta. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa tras ocurrencia de suceso, mediante interrupcin. Proceso de mayor prioridad expropia recursos. Por tanto generalmente se utliza planificacin expropiativa basada en prioridades. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Poblacin de procesos esttica en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. Gestin de archivos se orienta ms a velocidad de acceso que a utlizacin eficiente del recurso. Sistemas 4perativos de multiproramacin 6o Sistemas 4perativos de multitarea7. Se distinguen por sus habilidades para poder soportar la ejecucin de dos o ms trabajos activos (que se estn ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al mximo su utilizacin. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno est usando el procesador, o un procesador distinto, es decir, involucra mquinas con ms de una UCP. Sistemas Operativos como UNX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las siguientes: Mejora productividad del sistema y utilizacin de recursos. Multiplexa recursos entre varios programas. Generalmente soportan mltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios inndividuales. Requieren validacin de usuario para seguridad y proteccin. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real. Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan la ejecucin simultnea de mltiples tareas sobre diferentes procesadores. En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos perifricos. Sistemas 4perativos de tiempo compartido. Permiten la simulacin de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una peticin a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecer en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin de que tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Caractersticas de los Sistemas Operativos de tiempo compartido: Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseo asistido por computador, procesamiento de texto, etc. Dan la ilusin de que cada usuario tiene una mquina para s. Mayora utilizan algoritmo de reparto circular. Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido el servicio. Evitan monopolizacin del sistema asignando tiempos de procesador (time slot). Gestin de memoria proporciona proteccin a programas residentes. Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples usuarios accesando un mismo archivos. Sistemas 4perativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caracteristicas de los Sistemas Operativos distribuidos: Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software . Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de recursos. Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.). Sistemas 4perativos de red. Son aquellos sistemas que mantienen a dos o ms computadoras unidas atravs de algn medio de comunicacin (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores ntel como Novell Netware. Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNX, LANtastic.
Sistemas 4perativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos que compitan por algn recurso se puedan realizar o ejecutar al mismo tiempo. En UNX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, sinulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). As, en lugar de esperar a que el proceso termine de ejecutarse (como lo hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos estn: Alpha, PVM, la serie AX, que es utilizado en los sistemas RS/6000 de BM. 1structura 6niveles o estratos de diseo7. nternamente los sistemas operativos estructuralmente de se clasifican segn como se hayan organizado intrnamente en su diseo, por esto la clasificacin ms comn de los S.O. son: Sistemas monolticos: En estos sistemas operativos se escriben como un conjunto de procedimientos, cada uno de los cuales puede llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en trminos de parmetros y resultados, y cada una tiene la libertad de llamar a cualquiera otra, si la ltima ofrece algn clculo til que la primera necesite. Para construir el programa objeto real del sistema operativo cuando se usa este mtodo, se compilan todos los procedimientos individuales a archivos que contienen los procedimientos y despus se combinan todos en un solo archivo objeto con el enlazador. En trminos de ocultamiento de informacin, esencialmente no existe ninguno; todo procedimiento es visible para todos (al contrario de una estructura que contiene mdulos o paquetes, en los cuales mucha informacin es local a un mdulo y slo pueden llamar puntos de registro designados oficialmente del exterior del mdulo) Esta organizacin sugiere una estructura bsica del sistema operativo: 1.- Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel) 2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema. 3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio Sistemas en estratos: Estos sistemas operativos se organizan como una jerarqua de estratos, cada uno construido arriba del que est debajo de l. El primer sistema construido en esta forma fuel el sistema THE que se fabric en Technische Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus alumnos. El sistema THE era un sistema de lote para una computadora alemana, la Electrolgica X8, que tena 32K de palabras de 27 bits ( los bits eran costosos en aquellos das) El sistema tena 6 estratos, estos se muestran en la siguiente tabla: 5 Operador de THE 4 Programas del usuario 3 Administracin de Entrada/Salida 2 Comunicacin entre el operador y el proceso 1 Administracin de la memoria y el tambor magntico 0 Distribucin del procesador y multiprogramacin - El estrato 0 trabajaba con la distribucin del procesador, cambiando entre procesos cuando ocurran interrupciones o los relojes expiraban. Sobre el estrato 0, el sistema constaba de procesos secuenciales, cada uno de los cuales poda programarse sin tener que preocuparse por el hecho de que mltiples procesos estuvieran corriendo en un solo procesador. En otras palabras, el estarto 0 ofreca la multiprogramacin bsica de la CPU. El estrato 1 realizaba el manejo de memoria. Este distribua espacio para procesos contenidos en la memoria central y en un tambor de 512K palabras que se usaba para contener partes de procesos (pginas) para las cuales no haba espacio en la memoria central. Sobre el estrato 1, los procesos no tena que preocuparse de si estaban en la memoria o en el tambor; el software del estrato 1 se haca cargo de asegurar que las pginas se trajeran a la memoria siempre que se necesitaran. El estrato 2 manejaba la comunicacin entre cada proceso y la consola de operador. El estrato 3 se haca cargo de manejar los dispositivos de E/S y de separar la informacin en flujo que entraba y sal de ellos. Sobre el estrato 3 cada proceso poda trabajar con dispositivos de E/S abstractos con propiedades agradables, en vez de dispositivos reales con muchas peculiaridades El estrato 4 era donde se encontraban los programas de los usuarios. No tenan que preocuparse por el manejo de los procesos, memoria, consola o E/S. El proceso operador del sistema se localizaba en el estrato 5. En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas, con el fin de tener una idea ms extensa de cmo esta estructurado el sistema operativo. Veremos brevemente algunas estructuras de diseos de sistemas operativos. 1structura modular. Tambin llamados sistemas monolticos. Este tipo de organizacin es con mucho la mas comn; bien podra recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una coleccin de procedimientos, cada uno de los cuales puede llamar a los dems cada vez que as lo requiera. Cuando se usa esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en trminos de parmetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto clculo til para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parmetros en lugares bien definidos, como en los registros o en la pila, para despus ejecutar una instruccin especial de trampa de nombre "llamada al ncleo" o "llamada al supervisor". Esta instruccin cambia la mquina del modo usuario al modo ncleo y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 1. El sistema operativo examina entonces los parmetros de la llamada, para determinar cual de ellas se desea realizar, como se muestra en el evento (2) de la figura 1. A continuacin, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k- esima llamada al sistema. Esta operacin que se muestra en (3) de la figura 1, identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario. Figura 1. La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atrado hacia el ncleo. (2) el sistema operativo determina el nmero del servicio solicitado. (3) el sistema operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control regresa al programa del usuario. Esta organizacin sugiere una organizacin bsica del sistema operativo: 1.- un programa principal que llama al procedimiento del servicio solicitado. 2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. 3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio. En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de l. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario. 1structura por microKernel. Las funciones centrales de un SO son controladas por el ncleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte ms importante del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el cdigo mquina de bajo nivel para manejar la administracin de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos Las funciones de bajo nivel del SO y las funciones de interpretacin de comandos estn separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de lnea de comandos con una interfaz grfica del usuario. Existen muchos "shells" diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versin 5.0 incluy un Shell llamado DOS SHELL. Estructura por anillos concntricos (capas). El sistema por "capas" consiste en organizar el sistema operativo como una jerarqua de capas, cada una construida sobre la inmediata inferior. El primer sistema construido de esta manera fue el sistema THE (Technische Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema tenia 6 capas, como se muestra en la figura 3. La capa 0 trabaja con la asignacin del procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los cronmetros. Sobre la capa 0, el sistema consta de procesos secunciales, cada uno de los cuales se podra programar sin importar que varios procesos estuvieran ejecutndose en el mismo procesador, la capa 0 proporcionaba la multiprogramacin bsica de la CPU. La capa 1 realizaba la administracin de la memoria. Asignaba el espacio de memoria principal para los procesos y un recipiente de palabras de 512K se utilizaba para almacenar partes de los procesos (pginas) para las que no exista lugar en la memoria principal. Por encima de la capa 1, los procesos no deban preocuparse si estaban en la memoria o en el recipiente; el software de la capa 1 se encargaba de garantizar que las pginas llegaran a la memoria cuando fueran necesarias. La capa 2 se encargaba de la comunicacin entre cada proceso y la consola del operador. Por encima de esta capa, cada proceso tiene su propia consola de operador. La capa 3 controla los dispositivos de E/S y guarda en almacenes (buffers) los flujos de informacin entre ellos. Por encima de la capa 3, cada proceso puede trabajar con dispositivos exactos de E/S con propiedades adecuadas, en vez de dispositivos reales con muchas peculiaridades. La capa 4 es donde estaban los programas del usuario, estos no tenan que preocuparse por el proceso, memoria, consola o control de E/S. el proceso operador del sistema se localizaba en la capa 5 Una generalizacin mas avanzada del concepto de capas se presento en el sistema MULTCS. En lugar de capas, MULTCS estaba organizado como una serie de anillos concntricos, siendo los anillos interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba llamar a un procedimiento de un anillo interior, debi hacer el equivalente a una llamada al sistema Mientras que el esquema de capas de THE era en realidad un apoyo al diseo, debido a que todas las partes del sistema estaban ligadas entre si en un solo programa objeto, en MULTCS, el mecanismo de anillos estaba mas presente durante el tiempo de ejecucin y era reforzado por el hardware. La ventaja del mecanismo de anillos es su facilidad de extensin para estructurar subsistemas del usuario. 5 El operador 4 Programas del usuario 3 Control de entrada/salida 2 Comunicacin operador-proceso 1 Administracin de la memoria y del disco 0 Asignacin del procesador y multiprogramacin Figura 3. Estructura del sistema operativo THE. Estructura cliente servidor Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el cdigo a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un ncleo mnimo. El punto de vista usual es el de implantar la mayora de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) enva la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. En este modelo, que se muestra en la figura 4, lo nico que hace el ncleo es controlar la comunicacin entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, cada parte es pequea y controlable. Adems como todos los servidores se ejecutan como procesos en modo usuario y no en modo ncleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, ste puede fallar, pero esto no afectar en general a toda la mquina. Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptacin para su uso en los sistemas distribuidos Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su mquina, o si se enva por medio de una red a un servidor en una mquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envi una solicitud y se recibi una respuesta. Sistemas 4perativos por su 1structura 68isin Interna7. Segn, se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los cuales son: Requisitos de usuario: Sistema fcil de usar y de aprender, seguro, rpido y adecuado al uso al que se le quiere destinar. Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operacin, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad. A continuacin se describen las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener. Estructura Monoltica. Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra. Las caractersticas fundamentales de este tipo de estructura son: Construccin del programa final a base de mdulos compilados separadamente que se unen a travs del ligador. Buena definicin de parmetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento. Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc. Generalmente estn hechos a medida, por lo que son eficientes y rpidos en su ejecucin y gestin, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones. 1structura Jer,r&uica. A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organizacin del software, del sistema operativo, donde una parte del sistema contena subpartes y esto organizado en forma de niveles. Se dividi el sistema operativo en pequeas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos. Se constituy una estructura jerrquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utiliz con fines didcticos. Se puede pensar tambin en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categora. En la estructura anterior se basan prcticamente la mayora de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concntricos o "rings". En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas ms internas del sistema operativo o ncleo del sistema estarn ms protegidas de accesos indeseados desde las capas ms externas. Las capas ms internas sern, por tanto, ms privilegiadas que las externas. -,&uina 8irtual. Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una mquina que parece idntica a la mquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramacin y la mquina extendida. El objetivo de los sistemas operativos de mquina virtual es el de integrar distintos sistemas operativos dando la sensacin de ser varias mquinas diferentes. El ncleo de estos sistemas operativos se denomina monitor virtual y tiene como misin llevar a cabo la multiprogramacin, presentando a los niveles superiores tantas mquinas virtuales como se soliciten. Estas mquinas virtuales no son mquinas extendidas, sino una rplica de la mquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que ser el que ofrezca la mquina extendida al usuario 'lienteGServidor6-icroKernel7. El tipo ms reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayora de las computadoras, ya sean grandes o pequeas. Este sistema sirve para toda clase de aplicaciones por tanto, es de propsito general y cumple con las mismas actividades que los sistemas operativos convencionales. El ncleo tiene como misin establecer la comunicacin entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicacin normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operacin de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro." [Alcal92]. Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el ncleo provee solamente funciones muy bsicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayora que el usuario final o programador puede usar. Estos servidores deben tener mecanismos de seguridad y proteccin que, a su vez, sern filtrados por el ncleo que controla el hardware. Actualmente se est trabajando en una versin de UNX que contempla en su diseo este paradigma. #Pcleo. El Ncleo del Sistema Operativo. Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada ncleo (nucleus, core o kernel, en ingls). El ncleo normalmente representa slo una pequea parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el cdigo que ms se utiliza. Por esta razn, el ncleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal slo cuando se necesitan. Los ncleos se disean para realizar "el mnimo" posible de procesamiento en cada interrupcin y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el ncleo se habilita para atender otras interrupciones. El ncleo de un sistema operativo normalmente contiene el cdigo necesario para realizar las siguientes funciones: Manejo de interrupciones. Creacin y destruccin de procesos. Cambio de estado de los procesos. Despacho. Suspensin y reanudacin de procesos. Sincronizacin de procesos. Comunicacin entre procesos. Manipulacin de los bloques de control de procesos. Apoyo para las actividades de entrada/salida. Apoyo para asignacin y liberacin de memoria. Apoyo para el sistema de archivos. Apoyo para el mecanismo de llamada y retorno de un procedimiento. Apoyo para ciertas funciones de contabilidad del sistema. Ncleo o Kernel y niveles de un Sistema Operativo. El Kernel consiste en la parte principal del cdigo del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5 capas: Nivel 1. Gestin de Memoria: que proporciona las facilidades de bajo nivel para la gestin de memoria secundaria necesaria para la ejecucin de procesos. Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas. Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos. Nivel 4. nformacin o Aplicacin o nterprete de Lenguajes: Facilita la comunicacin con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes. Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulacin de archivos con nombre, va asignando espacio y acceso de datos en memoria. El ncleo y los procesos. El ncleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misin es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalacin. Toda esta gestin la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. Los procesos relacionados con la entidad bsica de los sistemas operativos actuales: Los procesos. El esquema general del mismo es el siguiente: Definicin y concepto de proceso. El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso. Estados por los que pasa un proceso a lo largo de su existencia en la computadora. Operaciones que se pueden realizar sobre un proceso. Clasificacin de los procesos segn su forma de ejecucin, de carga, etc. Interrupciones 6/LI<7. El GE!"# $E %&!E##'PC%"&E $E P#%(E# &%VE)* +)%, (8irst )evel ?nterruption <andler)* D4lgoE que gestione las interrupciones E) C"&!#")A$"# $E %&!E##'PC%"&E $E P#%(E# &%VE)* E) +)%, En principio, una se;al es una indicacin por la que se altera la secuencia de ejecucin& <a( varios tipos de interrupcin, que se clasi.can en %uncin de su origen* F EB9E-:4!* !e producen %uera del procesador F ?:9E-:4!* !e producen dentro del procesador !i precisamos m#s* )as interrupciones EB9E-:4!, las denominamos* ?:9E--U'C?/:E! )as interrupciones ?:9E-:4!, pueden ser* EB9-4CG7?0/!* /peraciones que manipulan elementos internos del procesador 9-4'! o EBCE'C?/:E! )a misin del 8)?<, est# en el n,cleo, para dar una respuesta a cualquier tipo de se;al que se produce en el sistema& 4l producirse una se;al, la atrapa el <ard2are de interrupciones, que como m$nimo, salva el contenido del 'C en el 'CB del proceso& 4dem#s, puede que tambi3n salve el resto del entorno vol#til (tambi3n en el 'CB)& 9ambi3n direcciona al 8)?<, es decir, pone en el 'C la direccin del 8)?<& 'or lo tanto, podemos decir, que el 8)?< es un elemento so%t2are, es un proceso& Ya 5emos dic5o que el 8)?< es !o%t2are, pues se trata de un sencillo programa de.nido sobre un #rea de memoria dedicada a 3l, un #rea de memoria espec$.caH es decir, el 8)?< siempre est# en la misma parte de la memoria& El 8)?< 5ace dos cosas* IJ) 7etermina el origen de la interrupcin (4verigua qu3 interrupcin se 5a producido) AJ) 7irecciona la rutina que trata esa interrupcin !i el 8)?< es un programa, necesita parte del entorno vol#til* 'C, 4CC, &&& 'or ello, debe salvarse el entorno vol#til del proceso interrumpido& El entorno vol#til del proceso interrumpido, se puede salvar en dos momentos* 'uede salvarlo el <ard2are de interrupciones !i no lo salva el <ard2are de interrupciones, ser# lo primero que 5aga el 8)?<, antes incluso de determinar el origen de la interrupcin &"!A* <a( sistemas que de.nen unos registros m#quina para uso e+clusivo por parte del !istema /perativo, para evitar tener que estar salvando ( restaurando el contenido del entorno vol#til& +ormas de determinar el ori-en de una interrupcin* 6E7?4:9E !/8914-E* 6ediante una cadena de saltos o ?8s (o con una C4!E) El 8)?<, tiene un .nico punto de entrada* Ventaja* F Es mu( sencillo 7esventaja* F -endimiento mu( pobre (Cuantas m#s interrupciones, peor rendimiento) 'osible solucin* 'oner al principio de la cadena de saltos las comprobaciones de las interrupciones m#s %recuentes& 6E7?4:9E <4-714-E* 6ediante el uso de un comparador simult#neo, incluido en el <ard2are de interrupciones& El origen de la interrupcin, no lo va a detectar el 8)?<, lo va a detectar el <ard2are de interrupciones& El 8)?<, tiene : puntos de entrada, siendo : el n,mero de interrupciones que reconoce el sistema& Ventaja* F Es casi simult#neo, muc5o m#s r#pido que la secuencia de ?8s 7esventaja* F Coste Elevado* Un comparador para muc5as interrupciones es mu( caro C/6B?:4:7/ !/8914-E Y <4-714-E* El comparador distingue los 9?'/! de interrupcin& )as interrupciones se agrupan por tipos& E) <ard2are de interrupciones* IJ) !alva el contenido del entorno vol#til AJ) 6ediante un comparador simult#neo, determina el tipo al que pertenece la interrupcin producida KJ) !e direcciona al 8)?<, donde una peque;a cadena de saltos determina la interrupcin en concreto que se 5a producido !i : es el n,mero de tipos de interrupciones, el 8)?< tiene : puntos de entrada& Cuando el 8)?< est# atendiendo una interrupcin, pueden producirse otras& LMu3 5acemos con esas otras interrupciones que se producenN ?n5ibir (ignorar) el resto de interrupciones mientras se atiende una& 'ero esto no puede 5acerse siempre )as interrupciones m#s prioritarias deben tratarse nada m#s producirse 'osible solucin* 7e.nir niveles de prioridad entre las interrupciones, de %orma que si se est# atendiendo una interrupcin, quedar#n pendientes (o in5ibidas) las de menor o igual prioridad& 'roblema* !i se produce una interrupcin m#s prioritaria que la que se est# atendiendo, debe dejarse de atender la que se estaba atendiendo para atender la m#s prioritaria& 'or lo tanto, debe guardarse el entorno vol#til de la interrupcin que estaba atendiendo& )a interrupcin que pasa a ser atendida, tambi3n puede tener que dejarse, al llegar otra de ma(or prioridad &&& 'or tanto, es necesario un lugar a para almacenar entornos vol#tiles, es decir, un 'CB, por cada prioridad de interrupcin " I& %nicio del ser/icio de una interrupcin* )as interrupciones no pueden estar in5ibidas muc5o tiempo, es decir, el tiempo de tratamiento del 8)?< debe ser corto& 'roblema* <a( interrupciones cu(o tratamiento lleva muc5o tiempo& En ese caso, el 8)?<, slo inicia su tratamiento, ( luego, lama a otra rutina ajena o e+terna a 3l, que realiza el resto del tratamiento& Una interrupcin puede implicar cambio(s) de estado en alg,n(os) proceso(s)& 9?'/! 7E ?:9E--U'C?/:E!* ?nterrupciones que provocan cambios de estado del proceso en ejecucin 4lgunos e+tracdigos* 'eticiones de EO! !e;ales de error para suspensin ?nterrupciones de reloj* ?nterrupciones por e+piracin del temporizador ?nterrupciones que provocan cambios de estado en procesos que no est#n en ejecucin ?nterrupciones de EO! 0ttp@990tml.rincondelvao.com9sistemasG operativosQ2M.0tml Despac0ador6Sc0eduler7. Sc'edulling() "olas de Sc(ed%lli!g: Los procesos que estn en estado de espera se quedan en una lista llamada lista o cola de ready. Los procesos que hacen uso de E/S se guardan en una cola de E/S. Hay una cola de E/S por cada dispositivo. Sc(ed%lles: Componente del sistema operativo responsable de decidir quien hara uso de la CPU. "loritmos de Sc0edullin.G /'/S 6/irst 'ome /irst Served7 Cuando un proceso llega a la cola de ready su PCB es agregado al final de la lista. El uso de la CPU es otorgado al primero de la lista y una vez que un proceso comienza a ejecutar no deja de hacerlo hasta que se termina. El tiempo medio de espera para este algoritmo suele ser bastante alto. SJ/ 6S0ortest Job /irst7 Una vez que un proceso ejecuta no deja de hacerlo hasta que voluntariamente cambia de estado (no hay interrupcin por tiempo). Asocia a cada proceso el tiempo de CPU que habr de usar en su prxima vuelta y va a decidir por el ms pequeo. Si hubiera mas de uno utiliza FCFS para desempatar. El mayor problema de este algoritmo radica en el clculo de tiempo de uso de CPU. Este se puede aproximar a: Tn+1= .tn+(1- )Tn 0< <1 Tiempo calculado en la vuelta n Prximo uso de CPU Tiempo usado en la vuelta n El problema de este algoritmo es que el tiempo de espera para los procesos largos puede ser demasiado largo. Constantemente se estn entregando los procesos mas cortos y el ms grande nunca ser ejecutado. El FJS se puede subdividir en 2 tipos de algoritmos: PREEMPTVO o NO PREEMPTVO Preemptivo significa que si mientras un proceso se esta ejecutando, entra a la cola de ready un proceso mas corto, el proceso en la cola de ready se apropia de la CPU y comienza su ejecucin. *riorit% Sc0edullin Asocia a cada proceso una prioridad. Luego selecciona el proceso con mas prioridad para desempatar. En caso de que hubieran dos o mas procesos con la misma prioridad, se usa FCFS para desempatar. Hay dos tipo de prioridad en los procesos: la pioidad e)te!a definidas a travs del sistema operativo y la pioidad i!te!a definida por el tiempo de uso de la CPU, el control de E/S, etc. Este algoritmo tambin se puede ejecutar de dos maneras: preemptivo y no preemptivo. El algoritmo soluciona el problema del looping pero el problema es que los procesos con prioridad muy baja tienen chance de no ejecutarse nunca. Para solucionar este problema de espera infinita el envejecimiento de un proceso eleva su prioridad. 2ound 2obin Este es un algoritmo basado en FCFS. Trata la cola de ready como una lista circular. ntroduce el concepto de "Quantum" o "Time slice" : mayor tiempo de cpu que podr hacer uso un proceso en cada vuelta. Si el valor del Quantum fuese muy grande, el algoritmo funcionara como un FCFS. Si el Quantum fuera muy chico se produce un overhead por context switch (significa que el Quantum se setea en un tiempo menor al que demora el context switch). Este algoritmo es fuertemente dependiente del Quantum o Time Slice. El Quantum debe ser mayor que el 80% de los tiempos de CPU que hagan uso los procesos, pero no el proceso entero sino por cada burst. -?S 6-ultilevel ?ueue Sc0edullin7 Este algoritmo parte la cola de ready en un numero de colas n. Luego existe un criterio para clasificar en que cola ser colocado un proceso cuando que queda en estado de ready. Cada cola puede manejar su propio algoritmo de schedulling -/?S 6-ultilevel /eed BacK ?ueue Sc0edullin7 Define los siguientes parmetros: Numero de colas Algoritmo de schedulling usado en cada cola Mtodo para decidir a que cola entrara un proceso cuando entre a estado de ready Mtodo para decidir cuando un proceso ser enviado a una cola de menor prioridad. Mltiple CPU Para que mas de una CPU no tomen el mismo proceso de la cola de ready se utilizan mecanismos de sincronizacin. Otro mecanismo seria partir la cola en n colas (n CPUs), pero si se hiciera esto podra llegar a suceder que los procesos de una CPU fueran todos cortos y los de otra fueran largos por lo cual habra una CPU que quedara libre y otra ejecutando. Otra forma sera que una CPU decidiera cual CPU va a ejecutar cual proceso. Esto puede llevar a que la CPU que esta seleccionando quede un poco mas cargada porque en algn momento estar ejecutando el algoritmo de seleccin y un proceso asignado a ella. *rimitivas de comunicacin6I*'7. 0a$ varias primitivas de comunicacin entre procesos *>5 abreviadamente,. /a ma$ora de ellas requieren al+n tipo de modi#icacin a los pro+ramas para poder usarlas, pero "a$ una que es #cilmente accesible desde la lnea de comandos usando la met#ora de #ic"eros estndar en !)>< $ que no requiere modi#icacin al+una a los pro+ramas. 8e trata de las $!be-5as. 8i+uiendo la met#ora, !)>< nos permite manejar tuberas como si #ueran #ic"eros normales. "ttpKNNGGG.es.embnet.or+NIocN1%N1%D166@D02Ndbpipes.es."tml P-imi$i;as &e com!"icaci7" Al+unos 9ernel tienen operaciones espec#icas ajustadas a la invocacin remota. Amoeba, por ejemplo, tiene DoOperation/GetRequest--SendReply. 1s ms e#iciente que el simple 8endD:eceive *$ ms #iable $ le+ible,. Amoeba $ otros sistemas tienen tambi(n comunicacin con +rupos o radiado *parcial, *broadcast,. 1s importante para tolerancia de #allos, mejora de rendimiento $ recon#i+urabilidad. Iiversas variantesK como mensajes, como mltiples :5s, con un slo valor devuelto, con varios valores devueltos *todos juntos o pidiendo uno a uno,, etc. 1n la prctica, mecanismos de comunicacin de alto nivel tales como :5N:B>, radiado $ noti#icacin de sucesos *parecido a los manejadores de interrupciones,, se implementan en middleGare $ no en el 9ernel. )ormalmente, sobre un nivel T5N>5, por razones de transportabilidad, *aunque resulta \\caro-,. )a ?'C o%rece un mecanismo que permite a los procesos cumunicarse ( sincronizar sus acciones& )a mejor %orma de proveer la comunicacin entre procesos es mediante un sistema de mensajes& )a %uncin de un sistema de mensaje es permitir a los procesos comunicarse entre s$ sin tener que recurrir a variables compartidas& Un recurso ?'C o%rece por los menos A operaciones* en/iar (mensaje) (send) ( recibir (mesanje) (recei/e)& !ea ' ( M dos procesos que requieren comunicarse deber#n enviarse mensajesH para ello debe e+istir un enlace de comunicacin entre ellos& Este enlace puede implementarse de diversas maneras& )os m3todos para implementar lgicamente un enlace ( las operaciones de en/iar O recibir son* Comunicacin directa o indirecta Uso de bu=er autom#tico o e+pl$cito Env$o por copia o env$o por re%erencia 6ensajes de tama;o .jo o variables Comunicacin directa* 4qu$ cada proceso que desee comunicarse debe nombrar e+pl$citamente el destinatario o el remitente de la comunicacin& Este esquema se de.ne las primitivas de la sig& manera* Enviar(',mensaje)* Enviar un mensaje al proceso '& -ecibir(M& 6ensaje)* -ecibir un mensaje del proceso M& Con las siguientes propiedades* !e establece autom#ticamente el enlace entre cada par de procesos& )o procesos slo necesitan conocer la identidad de otro para la comunicacin& !olo 5a( un enlace entre cada par de procesos& El enlace puede ser unidireccional o bidireccional& Este esquema e+5ibe un simetr$a de direccionamientoH es decir, los procesos tanto emisor como receptor necesitan nombrar al otro para comunicarse& /tra variante de este esquema es utilizar asimetr$a de direccionamiento, con la sig& primitivas* Enviar(',mensaje)* enviar un mensaje al proceso '& -ecibir(?d,mensaje) * recibir un mensaje de cualquier proceso con el que 5ubo comunicacin& 4qu$ slo el emisor nombra al destinatarioH el destinatario no 3sta obligado a nombrar al emisor& Comunicacin indirecta* 4qu$ los mensajes se env$an a, ( se reciben de, buzones (tambi3n llamados 'UE-9/!)& Un buzn puede considerarse en lo abstracto como un objeto en el que los procesos pueden colocar mensajes ( del cual se pueden sacar mensajes& Cada buzn tiene una identi.cacin ,nica& 4qu$ dos proceso se pueden comunicarse slo si comparten un buzn& )as primitivas se de.nen como* Enviar (4,mensaje)* enviar un mensaje al buzn 4& -ecibir (4,mensaje)* recibir un mensaje del buzn 4& Un enlace de comunicacin tiene las sig& propiedades* !e establece un enlace entre un par de procesos slo si tienen un buzn compartido& Un enlace puede estar asociado a m#s de dos procesos& Entre cada par de procesos en comunicacin puede 5aber varios enlaces distintos, cada uno de los cuales corresponder# a un buzn& )os enlaces pueden ser unidireccionales o bidereccionales& <a( varias %ormas de designar el due;o de ( los usuarios de un buzn dado& Una posibilidad es permitir que un proceso declare variables de tipo buzn& El proceso que declara un buzn es el due;o de ese buzn& Cualquier otro proceso que conozca el nombre de dic5o buzn podr# usarlo& 'or otro lado, un buzn propiedad del !&/ tiene e+istencia propiaH es independiente ( no est# unido a ning,n proceso espec$.co& El !&/ establece un mecanismo que permite a un proceso* Crear un buzn nuevo Enviar ( recibir mensajes a trav3s del buzn 7estruir un buzn& "ttpKNN"tml.rincondelva+o.comNsistemasDoperativosP2&."tml 'omunicacin entre procesos 6I*'7 /os procesos en !)>< no comparten memoria, ni siquiera los padres con sus "ijos. 5or tanto, "a$ que establecer al+n mecanismo en caso de que se quiera comunicar in#ormacin entre procesos concurrentes. 1l sistema operativo !)>< de#ine tres clases de "erramientas de comunicacin entre procesos *>5,K los sem#oros, la memoria compartida $ los mensajes. 1l tipo de llamadas al sistema para estos >5s es anlo+o al de los sem#orosK eEisten sendas #unciones shmget $ msgget para crear o enlazarse a un se+mento de memoria compartida o a una cola de mensajes, respectivamente. 5ara alterar propiedades de estos >5s, inclu$endo su borrado, estn las #unciones shmctl $ msgctl. 5ara enviar o recibir mensajes, se utilizan las #unciones msgsnd $ msgrcv. 1n este apartado se describirn brevemente al+unas llamadas al sistema disponibles para el uso de las >5s dentro de la pro+ramacin en . Sem4%o-os ]Ou( es un sem#oro para el !)><[ Jormalmente es mu$ similar a la de#inicin clsica de Iij9stra, en el sentido de que es una variable entera con operaciones atmicas de inicializacin, incremento $ decremento con bloqueo. 1l !)>< de#ine tres operaciones #undamentales sobre sem#orosK Q semget rea o toma el control de un sem#oro Q semctl 4peraciones de lectura $ escritura del estado del sem#oro. Iestruccin del sem#oro Q semop 4peraciones de incremento o decremento con bloqueo omo el len+uaje no tiene un tipo -sem#oro- prede#inido, si queremos usar sem#oros tenemos que crearlos mediante una llamada al sistema *semget,. 1sta llamada permite crear un conjunto de sem#oros, en lu+ar de uno solo. /as operaciones se realizan atmicamente sobre todo el conjuntoA esto evita interbloqueos $ oscuras pro+ramaciones en muc"os casos, pero para esta prctica es ms bien un en+orro. Al crear un sem#oro se nos devuelve un nmero identi#icador, que va a #uncionar casi i+ual que los identi#icadores de #ic"ero de las llamadas open, creat, etc. /a #uncin semget nos permite adems -abrir- un sem#oro que $a est( creado. As, por ejemplo, si un proceso crea un sem#oro, otros procesos pueden sincronizarse con aqu(l *con ciertas restricciones, disponiendo del sem#oro con semget. 5ara darle un valor inicial a un sem#oro, se utiliza la #uncin semctl. 1l !)>< no o#rece las #unciones clsicas 5 $ = o equivalentes, sino que dispone de una #uncin +eneral llamada semop que permite realizar una +ama de operaciones que inclu$en las 5 $ =. semctl tambi(n se emplea para destruir un sem#oro. Llama&as al sis$ema *a-a sem4%o-os 1sta es una descripcin resumida de las tres llamadas al sistema para operar con sem#oros *semget, semctl $ semop,. 5ara una in#ormacin ms completa $ #idedi+na, dirjanse al manual de llamadas al sistema *seccin 2,. 5ara el correcto uso de todas estas #unciones, "an de incluir el #ic"ero cabecera <sys/sem.h> /as tres #unciones devuelven D1 si al+o "a ido mal $ en tal caso la variable errno in#orma del tipo de error. "pertura o creacin de un sem,foro 8intaEisK int semget ( key_t (e), int nsems, int semflg )A semget devuelve el identi#icador del sem#oro correspondiente a la clave 9e$. 5uede ser un sem#oro $a eEistente, o bien semget crea uno nuevo si se da al+uno de estos casosK a, 9e$ vale IPC_PRI!"#. 1ste valor especial obli+a a semget a crear un nuevo $ nico identi#icador, nunca devuelto por ulteriores llamadas a semget "asta que sea liberado con semctl. b, 9e$ no est asociada a nin+n sem#oro eEistente, $ se cumple que *sem#l+ ^ IPC_CR#!", es cierto. A un sem#oro puede accederse siempre que se ten+an los permisos adecuados. 8i se crea un nuevo sem#oro, el parmetro nsems indica cuntos sem#oros contiene el conjunto creadoA los 6 bits in#eriores de sem#l+ contienen los permisos estilo !)>< de acceso al sem#oro *usuario, +rupo, otros,. semflg es una mscara que puede contener IPC_CR#!", que $a "emos visto, o IPC_#$C%, que "ace crear el sem#oro, pero #racasando si $a eEista. 1jemploK int semid & semget ( IPC_PRI!"#, ', IPC_CR#!" ( )*++ ), 4peraciones de control sobre sem,foros 8intaEisK int semctl ( int semid, int semnum, int cmd*** ), 1sta es una #uncin compleja *$ de inter#az poco ele+ante, para realizar ciertas operaciones con sem#oros. semid es un identi#icador de sem#oro *devuelto previamente por semget, $ semnum, el sem#oro del conjunto sobre el que quieren trabajar. cmd es la operacin aplicadaA a continuacin puede aparecer un parmetro opcional se+n la operacin de#inida por cmd. /as operaciones que les interesan a ustedes son -#"!% semctl retorna el valor actual del sem#oro .#"!% se modi#ica el valor del sem#oro *un cuarto parmetro entero da el nuevo valor, IPC_R/I0 destru$e el sem#oro 1jemplosK valor & semctl (semid,semn1m,-#"!%), semctl (semid,semn1m,.#"!%,n1evo_valor), 4peraciones sobre sem,foros 8intaEisK int semop ( int semid, str1ct sem2134 sops, 1nsigned nsops ), 1sta #uncin realiza atmicamente un conjunto de operaciones sobre sem#oros, pudiendo bloquear al proceso llamador. semid es el identi#icador del sem#oro $ sops es un apuntador a un vector de operaciones. nsops indica el nmero de operaciones solicitadas. /a estructura sem213 tiene estos camposK struct sembuf { unsigned short sem_num; // nmero del semforo dentro del conjunto short sem_op; // clase de operacin // segn sea >0, <0 o ==0 short sem_flg; // modificadores de operacin }; ada elemento de sops es una operacin sobre al+n sem#oro del conjunto de semid. 1l al+oritmo simpli#icado de la operacin realizada es (ste *semval es el valor entero contenido en el sem#oro donde se aplica la operacin,. si semop<0 si semval >= |semop| semval -= |semop| si semval < |semop| si (semflag & IPC_NOWAIT)!=0 la funcin semop() retorna si no bloquearse hasta que semval >= |semop| semval -= |semop| si semop>0 semval += semop si semop==0 si semval = 0 SKIP si semval != 0 si (semflag & IPC_NOWAIT)!=0 la funcin semop() retorna si no bloquearse hasta que semval == 0 :esumiendo un poco, si el campo semop de una operacin es positivo, se incrementa el valor del sem#oro. Asimismo, si semop es ne+ativo, se decrementa el valor del sem#oro si el resultado no es ne+ativo. 1n caso contrario el proceso espera a que se d( esa circunstancia. 1s decir, semopSS1 produce una operacin = $ semopSSD1, una operacin 5. E.em*los &e !so 5ara ilustrar de #orma concreta el empleo de sem#oros bajo !)><, les mostramos unos ejemplos de subrutinas en que les pueden servir como modelos para elaborar sus rutinas de sincronizacin en las prcticas de la asi+natura. 1n concreto, son unas #unciones que implementan las operaciones 5 $ = de un sem#oro clsico *inicializacin, incremento $ decremento con posible bloqueo del proceso llamador,. As de#inidas, o con pocas modi#icaciones, les pueden servir como la inter#az para uso de sem#oros en sus aplicaciones. #include <sys/types.h> /* para key_t */ /* Crea un semforo con un valor inicial, dada una clave */ /* Devuelve el identificador (vlido o no) del semforo */ int crea_sem ( key_t clave, int valor_inicial ); /* Operaciones P y V sobre un semforo */ void sem_P ( int semid ); void sem_V ( int semid ); /***********************************/ /******** IMPLEMENTACIN *******/ /***********************************/ #include <sys/ipc.h> #include <sys/sem.h> #define PERMISOS 0644 /* crea_sem: abre o crea un semforo */ int crea_sem ( key_t clave, int valor_inicial ) { int semid = semget( /* Abre o crea un semforo... */ clave, /* con una cierta clave */ 1, /* con un solo elemento */ IPC_CREAT|PERMISOS /* lo crea (IPC_CREAT) con unos PERMISOS */ ); if ( semid==-1 ) return -1; /* Da el valor inicial al semforo */ semctl ( semid, 0, SETVAL, valor_inicial ); return semid; } /* abre_sem: Abrir un semforo que otro proceso ya cre */ int abre_sem (key_t clave) { return semget(clave,1,0); } /* Operaciones P y V */ void sem_P ( int semid ) /* Operacin P */ { struct sembuf op_P [] = { 0, -1, 0 /* Decrementa semval o bloquea si cero */ }; semop ( semid, op_P, 1 ); } void sem_V ( int semid ) /* Operacin V */ { struct sembuf op_V [] = { 0, 1, 0 /* Incrementa en 1 el semforo */ }; semop ( semid, op_V, 1 ); } "ttpKNNlabsopa.dis.ulp+c.esNpro+PcN>5.0TB 1.) Descripcin de tipos de proramacin 1.).1*roramacin estructurada La programacin estructurada es una teoria de programacin que consiste en construir programas de facil comprension! La programacin estructurada es especialmente util, cuando se necesitan realizar correciones o modificaciones despues de haber concluido un programa o aplicacion! 0l haberse utilizado la programacin estructurada, es mucho ms sencillo entender la codificacion del programa, que se habra hecho en diferentes secciones! La programacin estructurada se basa en una metodologi de desarrollo de programas llamda refinamiento sucesi(os4 -e plantea una operacion como un todo se di(ide en segmentos ms sencillos o de menor complejidad! @na (ez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores! -i se ha utilizado adecuadamente la programacin estructurada, esta integracion debe ser sencilla no presentar problemas al integrar la misma , de presentar algun problema, sera rapidamente detectable para su correccion! La representacion grafica de la programacin estructurada se realiza a tra(es de diagramas de flujo o floK chart, el cual representa el programa con sus entradas, procesos salidas! La programacin estructurada propone segregar los procesos en estructuras lo ms simple posibles, las cuales se conocen como secuencia, seleccion e interaccion! Ellas estan disponibles en todos los lenguajes modernos de programacin imperati(a en forma de sentencias! Combinando esquemas sencillos se pueden llegar a construir sistemas amplios complejos pero de facil entendimiento! "ttpKNNlen+uajesDdeDpro+ramacion.comNpro+ramacionDestructurada.s"tml Programacin estructurada El c-ecie"$e em*leo &e los com*!$a&o-es +a co"&!ci&o a b!sca- !" aba-a$amie"$o &el &esa--ollo &e so%$>a-eD *a-alelo a la -e&!cci7" &el cos$o &el +a-&>a-e ob$e"i&o 3-acias a los a;a"ces $ec"ol73icos. Los al$os cos$os &el ma"$e"imie"$o &e las a*licacio"es e" *-o&!cci7" "o-mal $ambiG" +a" !-3i&o la "ecesi&a& &e me.o-a- la *-o&!c$i;i&a& &el *e-so"al &e *-o3-amaci7". DE0INICIONES La *-o3-amaci7" es$-!c$!-a&a Ee" a&ela"$e sim*leme"$e PE FD es !" es$ilo &e *-o3-amaci7" co" el c!al el *-o3-ama&o- elabo-a *-o3-amasD c!?a es$-!c$!-a es la m4s cla-a *osibleD me&ia"$e el !so &e $-es es$-!c$!-as b4sicas &e co"$-ol l73icoD a sabe- < a. SECUENCIA. b. SELECCIN. c. ITERACIN. U" *-o3-ama es$-!c$!-a&o se com*o"e &e %!"cio"esDse3me"$osD m7&!los ?=o s!b-!$i"asD ca&a !"a co" !"a sola e"$-a&a ? !"a sola sali&a. Ca&a !"o &e es$os m7&!los EaI" e" el mismo *-o3-ama com*le$oFD se &e"omi"a programa apropiado c!a"&oD a&em4s &e es$a- com*!es$o s7lame"$e *o- las $-es es$-!c$!-as b4sicasD $ie"e s7lo !"a e"$-a&a ? !"a sali&a ? e" e.ec!ci7" "o $ie"e *a-$es *o- las c!ales "!"ca *asa "i $ie"e ciclos i"%i"i$os. La PE $ie"e !" $eo-ema es$-!c$!-al o $eo-ema %!"&ame"$alD el c!al a%i-ma !e c!al!ie- *-o3-amaD "o im*o-$a el $i*o &e $-aba.o !e e.ec!$eD *!e&e se- elabo-a&o !$ili(a"&o I"icame"$e las $-es es$-!c$!-as b4sicas E sec!e"ciaD selecci7"D i$e-aci7" F. DE0INICIN DE LAS ESTRUCTURAS BSICAS DE CONTROL L#ICO 1., SECUENCIA I"&ica !e las i"s$-!ccio"es &e !" *-o3-ama se e.ec!$a" !"a &es*!Gs &e la o$-aD e" el mismo o-&e" e" el c!al a*a-ece" e" el *-o3-ama. Se -e*-ese"$a 3-4%icame"$e como !"a ca.a &es*!Gs &e o$-aD ambas co" !"a sola e"$-a&a ? !"a I"ica sali&a. Las ca.as A ? B *!e&e" se- &e%i"i&as *a-a e.ec!$a- &es&e !"a sim*le i"s$-!cci7" +as$a !" m7&!lo o *-o3-ama com*le$oD siem*-e ? c!a"&o !e es$os $ambiG" sea" *-o3-amas a*-o*ia&os. /., SELECCIN TambiG" co"oci&a como la es$-!c$!-a SI,CIERTO,0ALSOD *la"$ea la selecci7" e"$-e &os al$e-"a$i;as co" base e" el -es!l$a&o &e la e;al!aci7" &e !"a co"&ici7" o *-e&ica&oJ e!i;ale a la i"s$-!cci7" I0 &e $o&os los le"3!a.es &e *-o3-amaci7" ? se -e*-ese"$a 3-4%icame"$e &e la si3!ie"$e ma"e-a < E" el &ia3-ama &e %l!.o a"$e-io-D C es !"a co"&ici7" !e se e;alIaJ A es la acci7" !e se e.ec!$a c!a"&o la e;al!aci7" &e es$e *-e&ica&o -es!l$a ;e-&a&e-a ? B es la acci7" e.ec!$a&a c!a"&o i"&ica %also. La es$-!c$!-a $ambiG" $ie"e !"a sola e"$-a&a ? !"a sola sali&aJ ? las %!"cio"es A ? B $ambiG" *!e&e" se- c!al!ie- es$-!c$!-a b4sica o co".!"$o &e es$-!c$!-as. 1., ITERACIN TambiG" llama&a la es$-!c$!-a HACER,MIENTRAS,:UED co--es*o"&e a la e.ec!ci7" -e*e$i&a &e !"a i"s$-!cci7" mie"$-as !e se c!m*le !"a &e$e-mi"a&a co"&ici7". El &ia3-ama &e %l!.o *a-a es$a es$-!c$!-a es el si3!ie"$e < A!5 el blo!e A se e.ec!$a -e*e$i&ame"$e mie"$-as !e la co"&ici7" C se c!m*la o sea cie-$a. TambiG" $ie"e !"a sola e"$-a&a ? !"a sola sali&aJ i3!alme"$e A *!e&e se- c!al!ie- es$-!c$!-a b4sica o co".!"$o &e es$-!c$!-as. 'ENTA)AS DE LA PRO#RAMACIN ESTRUCTURADA Co" la PED elabo-a- *-o3-amas &e com*!$a&o- si3!e sie"&o !"a labo- !e &ema"&a es%!e-(oD c-ea$i;i&a&D +abili&a& ? c!i&a&o. Si" emba-3oD co" es$e "!e;o es$ilo *o&emos ob$e"e- las si3!ie"$es ;e"$a.as < 1. Los *-o3-amas so" m4s %4ciles &e e"$e"&e-. U" *-o3-ama es$-!c$!-a&o *!e&e se- le5&o e" sec!e"ciaD &e a--iba +acia aba.oD si" "ecesi&a& &e es$a- sal$a"&o &e !" si$io a o$-o e" la l73icaD lo c!al es $5*ico &e o$-os es$ilos &e *-o3-amaci7". La es$-!c$!-a &el *-o3-ama es m4s cla-a *!es$o !e las i"s$-!ccio"es es$4" m4s li3a&as o -elacio"a&as e"$-e siD *o- lo !e es m4s %4cil com*-e"&e- lo !e +ace ca&a %!"ci7". 2. Re&!cci7" &el es%!e-(o e" las *-!ebas. El *-o3-ama se *!e&e $e"e- lis$o *a-a *-o&!cci7" "o-mal e" !" $iem*o me"o- &el $-a&icio"alJ *o- o$-o la&oD el se3!imie"$o &e las %allas o &e*!-aci7" E&eb!33i"3F se %acili$a &ebi&o a la l73ica m4s ;isibleD &e $al %o-ma !e los e--o-es se *!e&e" &e$ec$a- ? co--e3i- m4s %4cilme"$e. 7. Re&!cci7" &e los cos$os &e ma"$e"imie"$o. ?. P-o3-amas m4s se"cillos ? m4s -4*i&os. C. A!me"$o e" la *-o&!c$i;i&a& &el *-o3-ama&o-. &. Se %acili$a la !$ili(aci7" &e las o$-as $Gc"icas *a-a el me.o-amie"$o &e la *-o&!c$i;i&a& e" *-o3-amaci7". '. Los *-o3-amas !e&a" me.o- &oc!me"$a&os i"$e-"ame"$e. "ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNpascalNu1P1P?."tml ** PA#A$%G(A E!#'C!'#A$" ** /a 5ro+ramacin estructurada #ija su atencin en el conjunto de acciones que manipulan el #lujo de datos, mientras que la 445 se #ija en la interrelacin que eEiste entre los datos $ las acciones a realizar con ellos. Iescomposicin #uncionalK el sistema es considerado una unidad #uncional que se dis+re+a en procesos. 1l resultado del proceso de abstraccin para la solucin de un problema macro lo constitu$en pequeos subpro+ramas. !n problema macro se subdivide en unidades ms pequeas llamadas procesos, estos se pueden distribuir entre di#erentes personas que se vean involucradas en la solucin de un problema $ as e#ectuar los desarrollos de so#tGare de una manera ms rpida $ e#iciente. /os procesos son la parte central de este modelo pues a partir de estos se manejan las variantes *datos, que solucionarn el problema. Feneralmente se manejan muc"os procesos lo cual "ace lar+os cdi+os. 1l mantenimiento de los desarrollos deben e#ectuarse minuciosamente. /os procedimientos empleados en una aplicacin pueden reutilizarse teniendo cuidado en el manejo de los datos. /as operaciones se ajustan a las caractersticas propias de los len+uajes procedimentales. /os procesos que se modelan en el desarrollo de un problema plasman las operaciones necesarias para resolverlo ** E0E(P)" ("$E)" E!#'C!'#A) ** : S * a1 R b1, a2 R b2, a7 R b7 , : S * c1 .d1 R c2 .d2 R c7 .d7 , : S * e2 E #7 D e7 E #2, e7 E #1 D e1 E #7, e1 E #2 D e2 E #1, : S * 9+1, 9+2, 9+7 , : S :az cuadrada de *"1 E "1, "2 E "2, "7 E "7, I#T24DU''I4# " L" *24:2"-"'I4# 1ST2U'TU2"D"
/a pro+ramacin estructurada permite la escritura de pro+ramas #ciles de leer $ modi#icar. 1n un pro+rama estructurado el #lujo l+ico se +obierna por las estructuras de control bsicasK D secuenciales, repetitivas $ selectivas.
T(cnicas de 5ro+ramacinK /as nuevas teoras de la pro+ramacin se centran en las t(cnicas de pro+ramacin modular $ pro+ramacin estructurada. 1l diseo de un pro+rama entraa la descomposicin del problema en mdulos *partes independientes, _ programacin modular _, la pro+ramacin de cada mdulo mediante m(todos estructurados _ programacin estructurada _ $ su unin posterior.
5ro+ramacin BodularK 1l pro+rama se divide en mdulos, cada uno de los cuales ejecuta una nica actividad o tarea $ se codi#ican independientemente de otros mdulos. ada uno de estos mdulos se analizan, codi#ican $ ponen a punto por separado. ada pro+rama contiene un mdulo llamado programa principal que controla todo lo que sucedeA se trans#iere el control a submdulos de modo que ellos puedan ejecutar sus #unciones. /os mdulos son independientes en el sentido en el que nin+n mdulo puede tener acceso directo a cualquier otro mdulo eEcepto el mdulo al que llama $ sus propios submdulos.
Tamao de los mdulosK )o eEiste una re+la #ija que permita de#inir el tamao estndar del mdulo, una buena aproEimacin es considerar el tamao #sico de una p+ina *70 ?0 lneas de instrucciones,.
>mplementacinK 8e implementan utilizando mdulos que toman di#erentes nombres se+n el len+uaje de pro+ramacinK s!b-!$i"as en .A8> $ J4:T:A), *-oce&imie"$os en 5ascal, secciones en 4.4/, etc.
5ro+ramacin 1structuradaK 8e re#iere a un conjunto de t(cnicas que "an ido evolucionando. 1stas t(cnicas aumentan considerablemente la productividad del pro+rama reduciendo el tiempo requerido para escribir, veri#icar, depurar $ mantener los pro+ramas. /a pro+ramacin estructurada utiliza un nmero limitado de estructuras de control que minimizan la complejidad de los problemas $ que reducen los errores. 1sta incorporaK diseo descendente, recursos abstractos $ estructuras bsicas.
:ecursos abstractosK onsiste en descomponer una determinada accin compleja en t(rminos de un nmero de acciones ms simples capaz de ejecutarlas.
Iiseo descendenteK onsiste en e#ectuar una relacin entre las sucesivas etapas de estructuracin. 1s decir, se descompone el problema en etapas o estructuras jerrquicas, de modo que se puede considerar cada estructura desde dos puntos de vistaK ]lo que "ace[ $ ]cmo lo "ace[
Teorema de la pro+ramacin estructuradaK 8e "a demostrado que un pro+rama propio puede ser escrito utilizando solamente tres tipos de estructuras de controlK ` secuenciales, selectivas $ repetitivas. !n pro+rama es propio si posee un solo punto de entrada $ uno de salida, eEisten caminos desde el inicio "asta el #in que se pueden se+uir $ que pasan por todas las partes del pro+rama $, todas las instrucciones son ejecutables sin que "a$an bucles in#initos.
1structura secuencialK 1s aquella en que una accin si+ue a otra en secuencia. /as tareas se suceden de tal modo que la salida de una es la entrada de la si+uiente.
1structura selectivaK 8e utilizan para tomar decisiones l+icas. 1n (stas se evala una condicin $ en #uncin del resultado de la misma se realiza una opcin u otra. /as condiciones se especi#ican usando eEpresiones l+icas. 1n pseudocdi+o (stas palabras son if, then, else. /as estructuras selectivas pueden serK _ simples, dobles o mltiples.
8electivas simplesK 1jecuta una determinada accin cuando se cumple una determinada condicin. /a seleccin i# _ t"en *si _ entonces, evala la condicin $ si es verdadera ejecuta la accin de lo contrario no "ar nada.
8electiva dobleK 5ermite ele+ir entre dos opciones posibles en #uncin del cumplimiento o no de una determinada condicin. 8i la condicin es verdadera, se ejecuta la accin 1, si es #alsa, se ejecuta la accin 2. /a selectiva en pseudocdi+o es i# _ t"en _ else.
8electivas mltiplesK /a estructura de seleccin mltiple *case en pseudocdi+o, evaluar una eEpresin que podr tomar n valores distintos 1, 2, 7, ?, V..n. 8e+n que elija uno de estos valores en la condicin, se realizar una de las n acciones.
1structuras repetitivasK /as estructuras que repiten una secuencia de instrucciones un nmero determinado de veces se llaman bucles e iteracin al "ec"o de repetir la ejecucin de una secuencia de acciones.
1structura mientrasK /a estructura repetitiva mie"$-as es aquella en que el cuerpo del bucle se repite mientras se cumple una determinada condicin. uando se ejecuta esta instruccin, la primera cosa que sucede es que se evala la condicin. 8i la eEpresin es verdadera, entonces se ejecuta el cuerpo del bucle. 1ste proceso se repite una $ otra vez mientras la condicin sea verdadera.
1structura repetirK 8e ejecuta "asta que se cumpla una condicin determinada que se comprueba al #inal del bucle, esto permite que la iteracin se ejecute al menos una vez antes de la condicin ser evaluada.
1structuras desdeNpara *#or,K 8e utilizan las estructuras for cuando se conocen con certeza el nmero de veces que desea repetir un bucle, es decir, cuando es un nmero #ijo de veces.
1structura de decisin anidadasK 1s cuando i# _ t"en _ else contiene otra dentro de s, $ (sta a su vez contiene otra dentro de s. 1stas estructuras contendrn varios si..e"$o"ces dentro de otros. Iebido a que puede ser con#uso se implementa la identacin para evitar perder el "ilo de dnde comienza $ dnde termina cada estructura.
/a instruccin +oto *ir a,K 8e utiliza cuando queremos "acer una bi#urcacin incondicional. 8in embar+o, se recomienda usarla lo menos posible *si bien no usarla en absoluto,. "ttpKNNGGG.+eocities.comN$marteNtrabNin#pr+est."tml 1.).2*roramacin orientada a ob!etos ** PA#A$%G(A "#%E&!A$" A "10E!" ** a Iescomposicin en objetos. 1l sistema es considerado un objeto o conjunto de objetos. /os cuales son el resultado del proceso de abstraccin para la solucin del problema macro. a Iado que un problema macro puede ser dividido en objetos, estos pueden ser tratados por di#erentes personas que lue+o lo inte+raran para dar la solucin #inal.
a /os datos *estados, son la parte central del modelo $ los m(todos que los modi#ican muestran el comportamiento del objeto. a 1l mantenimiento de pro+ramas $ aplicaciones +eneralmente son #ciles de realizar. a /os objetos que se modelan en el desarrollo de un sistema se ajustan a la realidad que representa el problema, este puede representare como un objeto o conjunto de objetos abstractos. a 1l modelo orientado a objetos no es una t(cnica de pro+ramacin sino un medio de plasmar el mundo real. ** E0E(P)" ("$E)" "#%E&!A$" A "10E!" ** AdicinK : S A R ., : S*a1 R b1, a2 R b2, a7 R b7, 5roducto 5untoK : S A . ., : S*a1 .b1 R a2 .b2 R a7 .b7, 5roducto ruzK :SAE., : S*a2Q#7Da7Qb2, a7Qb1Da1Qb7, a1Qb2Da2Qb1, 5roducto por escalarK : S 9 A, : S * 9a1, 9a2, 9a7 , )ormaK : S N:N>, : S :az cuadrada de *AQA, 'e"$a.as &el Mo&elo o-ie"$a&o a ob.e$os co" -es*ec$o al mo&elo es$-!c$!-a&o a !n modelo de objetos es ms cercano a la realidad que un modelo #uncional. a !n desarrollo realizado con el modelo orientado a objetos es ms #cil de mantener $ de reutilizar. a 1l modelo orientado a objetos evita la redundancia en los procesos lue+o los cdi+os son ms entendibles $ resumidos. a /a inte+ridad que dan los objetos a los datos evita ambi+bedades en su uso, dando ma$or se+uridad en los resultados. a 1l modelo orientado a objetos #acilita la inte+ridad de mdulos que "allan sido realizados por separado sin correr ries+os en el manejo de los datos. "ttpKNNieee.udistrital.edu.coNconcursoNpro+ramacionPorientadaPobjetosNpooNpoovsest."tm l La programacin orientada a objetos, intenta simular el mundo real a tra(es del significado de objetos que contiene caracteristicas funciones! Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generacion! Como su mismo nombre indica, la programacin orientada a objetos se basa en la idea de un objeto, que es una combinacion de (ariables locales procedimientos llamados metodos que juntos conforman una entidad de programacin! El termino encapsulacion se usa para describir la combinacion de estructuras de datos de metodos que son manipulados por el objeto! La llamada a un objeto es lo que se denomina pasar un Na(isoN a un objeto! En la programacin orientada a objetos, encapsular significa, reunir controlar el grupo resultante como un todo no indi(idualmente! En la programacin orientada a objetos la abstraccion es un termino e=terno al objeto, que controla la forma en que es (isto por los demas! En la programacin orientada a objetos la modularidad se considera de la siguiente manera4 @n programa grande siempre sera ms complicado que la suma de (arios programas peque.os, con lo que se considera (entajoso di(idir un gran sistema en di(ersos modulos! En la programacin orientada a objetos tenemos la jerarquia, la cual consiste en la clasificacion organizacion de las abstracciones segun su naturaleza! El ms claro ejemplo de jerarquia es la herencia! En la programacin orientada a objetos se define la herencia como una jerarquia de e=tracciones, la relacion entre clases, donde se comparte la estructura el comportamiento de una o ms clase considerada como clases superiores o una superclase, con lo cual se resume que la herencia es una unidad independiente por si misma heredada de una abstraccion o superclase! @n ejemplo cotidiano lo encontramos en las aplicaciones que e=isten cactualmente en el mercado, donde un formulario cualquiera hereda las caracteristicas de uan (entana del sistema operati(o JindoKs ;Ma=imizar, Minimizar, Cerrar "ttpKNNlen+uajesDdeDpro+ramacion.comNpro+ramacionDorientadaDaDobjetos.s"tml La programacin Frientada a objetos ;"FF< es una forma especial de programar, ms cercana a como e=presaramos las cosas en la (ida real que otros tipos de programacin! Con la "FF tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en trminos de objetos, propiedades, mtodos otras cosas que (eremos rpidamente para aclarar conceptos dar una peque.a base que permita soltarnos un poco con este tipo de programacin! 'oti%acin Aurante a.os, los programadores se han dedicado a construir aplicaciones mu parecidas que resol(an una otra (ez los mismos problemas! "ara conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se cre la "FF! Oue es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas adelantar su trabajo, de manera que consigamos que el cdigo se pueda reutilizar! La "FF no es difcil, pero es una manera especial de pensar, a (eces subjeti(a de quien la programa, de manera que la forma de hacer las cosas puede ser diferente seg1n el programador! 0unque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difcil no es programar orientado a objetos sino programar bien! "rogramar bien es importante porque as nos podemos apro(echar de todas las (entajas de la "FF! Cmo #e pien#a en obeto# "ensar en trminos de objetos es mu parecido a cmo lo haramos en la (ida real! "or ejemplo (amos a pensar en un coche para tratar de modelizarlo en un esquema de "FF! Airamos que el coche es el elemento principal que tiene una serie de caractersticas, como podran ser el color, el modelo o la marca! 0dems tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar! "ues en un esquema "FF el coche sera el objeto, las propiedades seran las caractersticas como el color o el modelo los mtodos seran las funcionalidades asociadas como ponerse en marcha o parar! "or poner otro ejemplo (amos a (er cmo modelizaramos en un esquema "FF una fraccin, es decir, esa estructura matemtica que tiene un numerador un denominador que di(ide al numerador, por ejemplo &I#! La fraccin ser el objeto tendr dos propiedades, el numerador el denominador! Luego podra tener (arios mtodos como simplificarse, sumarse con otra fraccin o n1mero, restarse con otra fraccin, etc! Estos objetos se podrn utilizar en los programas, por ejemplo en un programa de matemticas hars uso de objetos fraccin en un programa que gestione un taller de coches utilizars objetos coche! Los programas Frientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar ellos mismos tambin son objetos! Es decir, el taller de coches ser un objeto que utilizar objetos coche, herramienta, mecnico, recambios, etc! Cla#e# en POO Las clases son declaraciones de objetos, tambin se podran definir como abstracciones de objetos! Esto quiere decir que la definicin de un objeto es la clase! Cuando programamos un objeto definimos sus caractersticas funcionalidades en realidad lo que estamos haciendo es programar una clase! En los ejemplos anteriores en realidad hablbamos de las clases coche o fraccin porque slo estu(imos definiendo, aunque por encima, sus formas! Propiedade# en cla#e# Las propiedades o atributos son las caractersticas de los objetos! Cuando definimos una propiedad normalmente especificamos su nombre su tipo! ?os podemos hacer a la idea de que las propiedades son algo as como (ariables donde almacenamos datos relacionados con los objetos! '+todo# en la# cla#e# -on las funcionalidades asociadas a los objetos! Cuando estamos programando las clases las llamamos mtodos! Los mtodos son como funciones que estn asociadas a un objeto! Obeto# en POO Los objetos son ejemplares de una clase cualquiera! Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se crear! Esta accin de crear un objeto a partir de una clase se llama instanciar ;que (iene de una mala traduccin de la palabra instace que en ingls significa ejemplar<! "or ejemplo, un objeto de la clase fraccin es por ejemplo &I8! El concepto o definicin de fraccin sera la clase, pero cuando a estamos hablando de una fraccin en concreto 'I:, $I2333 o cualquier otra, la llamamos objeto! "ara crear un objeto se tiene que escribir una instruccin especial que puede ser distinta dependiendo el lenguaje de programacin que se emplee, pero ser algo parecido a esto! miCoche 9 neK Coche;< Con la palabra neK especificamos que se tiene que crear una instancia de la clase que sigue a continuacin! Aentro de los parntesis podramos colocar parmetros con los que inicializar el objeto de la clase coche! !#tado# en obeto# Cuando tenemos un objeto sus propiedades toman (alores! "or ejemplo, cuando tenemos un coche la propiedad color tomar un (alor en concreto, como por ejemplo rojo o gris metalizado! El (alor concreto de una propiedad de un objeto se llama estado! "ara acceder a un estado de un objeto para (er su (alor o cambiarlo se utiliza el operador punto! miCoche!color 9 rojo El objeto es miCoche, luego colocamos el operador punto por 1ltimo el nombre e la propiedad a la que deseamos acceder! En este ejemplo estamos cambiando el (alor del estado de la propiedad del objeto a rojo con una simple asignacin! 'en#ae# en obeto# @n mensaje en un objeto es la accin de efectuar una llamada a un mtodo! "or ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasndole el mensaje Pponte en marchaQ! "ara mandar mensajes a los objetos utilizamos el operador punto, seguido del mtodo que deseamos imbocar! miCoche!ponerseEnMarcha;< En este ejemplo pasamos el mensaje ponerseEnMarcha;<! Da que colocar parntesis igual que cualquier llamada a una funcin, dentro iran los parmetros! Otra# co#a# Da mucho toda(a que conocer de la "FF a que slo hemos hecho referencia a las cosas ms bsicas! Lambin e=isten mecanismos como la herencia el polimorfismo que son unas de las posibilidades ms potentes de la "FF! La herencia sir(e para crear objetos que incorporen propiedades mtodos de otros objetos! 0s podremos construir unos objetos a partir de otros sin tener que reescribirlo todo! El polimorfismo sir(e para que no tengamos que preocuparnos sobre lo que estamos trabajando, abstraernos para definir un cdigo que sea compatible con objetos de (arios tipos! -on conceptos a(anzados que cuesta e=plicar en las lneas de ese informe! ?o ha que ol(idar que e=isten libros enteros dedicados a la "FF aqu solo pretendemos dar un repaso a algunas cosas para que os suenen cuando tengis que poneros delante de ellas en los lenguajes de programacin que debe conocer un desarrollador del Keb! "ttpKNNGGG.desarrolloGeb.comNarticulosN?66.p"p[manualS1C '4#'1*T4S D1 *24:2"-"'I=# 42I1#T"D" " 4BJ1T4S 1.1 Introduccin Un concepto muy importante introducido por la programacin estructurada es la abstacci!. La abstacci! se puede definir como la capacidad de examinar algo sin preocuparse de los detalles internos. En un programa estructurado es suficiente conocer que un procedimiento dado realiza una tarea especfica. El cmo se realiza la tarea no es importante; mientras el procedimiento sea fiable se puede utilizar sin tener que conocer cmo funciona su interior. Esto se conoce como abstraccin funcional. Una debilidad de la programacin estructurada aparece cuando programadores diferentes trabajan en una aplicacin como un equipo. Dado que programadores diferentes manipulan funciones separadas que pueden referirse a tipos de datos mutuamente compartidos, los cambios de un programador se deben reflejar en el trabajo del resto del equipo. Otro problema de la programacin estructurada es que raramente es posible anticipar el diseo de un sistema completo antes de que se implemente realmente. En esencia, un defecto de la programacin estructurada, como se acaba de ver, consiste en la separacin conceptual de datos y cdigo. Este defecto se agrava a medida que el tamao del programa crece. 1.2 "bstraccin de datos La abstacci! de datos permite no preocuparse de los detalles no esenciales. Existe en casi todos los lenguajes de programacin. Las estructuras de datos y los tipos de datos son un ejemplo de abstraccin. Los procedimientos y funciones son otro ejemplo. Slo recientemente han emergido lenguajes que soportan sus propios tipos abstactos de datos (TAD), como Pascal, Ada, Modula-2 y C++. 1.3 R?u( es la proramacin orientada a ob!etosS Se puede definir *44 como una tcnica o estilo de programacin que utiliza objetos como bloque esencial de construccin. Los ob*etos son en realidad como los tipos abstractos de datos. Un T"D es un tipo definido por el programador junto con un conjunto de operaciones que se pueden realizar sobre ellos. Se denominan abstractos para diferenciarlos de los tipos de datos fundamentales o bsicos. En ' se puede definir un tipo abstracto de datos utilizando t+pede, y st%ct y la implementacin de las operaciones con un conjunto de funciones. 'FF tiene muchas facilidades para definir y utilizar un tipo TAD. Al igual que los tipos de datos definidos por el usuario, un objeto es una coleccin de datos, junto con las funciones asociadas, utilizadas para operar sobre esos datos. Sin embargo la potencia real de los objetos reside en las propiedades que soportan: (ee!cia, e!caps%laci! y poli-o,is-o, junto con los conceptos bsicos de ob*etos, clases, -.todos y -e!sa*es. 1.) Traba!ando con ob!etos En programacin convencional los programas se dividen en dos componentes: procedimientos y datos. Este mtodo permite empaquetar cdigo de programa en procedimientos, pero Qu sucede con los datos? Las estructuras de datos utilizadas en programacin son globales o se pasan como parmetros. En esencia los datos se tratan separadamente de los procedimientos. En *44 un programa se divide en componentes que contienen procedimientos y datos. Cada componente se considera un ob*eto. Un ob!eto es %!a %!idad /%e co!tie!e datos + las ,%!cio!es /%e opea! sobe esos datos. A los elementos de un objeto se les conoce como -ie-bos; las funciones que operan sobre los datos se denominan -.todos (en C++ tambin se llaman ,%!cio!es -ie-bo) y los datos se denominan -ie-bos datos. En C+ + un programa consta de objetos. Los objetos de un programa se comunican entre s mediante el paso o e!01o de -e!sa*es (acciones que debe ejecutar el objeto). En *44 los objetos pueden se cualquier entidad del mundo real: G Ob*etos ,1sicos * automviles en una simulacin de trfico * aviones en un sistema de control de trfico areo * animales mamferos, etc G Ele-e!tos de i!te,aces g2,icos de %s%aios * ventanas * iconos * mens * ratones G Est%ct%as de datos * arrays * pilas * rboles binarios G Tipos de datos de,i!idos po el %s%aio * nmeros complejos * hora del da 1.+ Definicin de ob!etos Un ob*eto es una unidad que co!tie!e datos + las ,%!cio!es /%e opea! sobre esos datos. Los datos se denominan -ie-bos dato y las funciones -.todos o ,%!cio!es -ie-bo. Los datos y las funciones se e!caps%la! en una nica entidad. Los datos estn ocultos y slo mediante las funciones miembro es posible acceder a ellos. 1.3 'lases Una clase es un tipo definido por el usuario que determina las estructuras de datos y las operaciones asociadas con ese tipo. Cada vez que se construye un objeto de una clase, se crea una i!sta!cia de esa clase. En general, los trminos ob*etos e i!sta!cias de %!a clase se pueden utilizar indistintamente. Una clase es una coleccin de objetos similares y un objeto es una instancia de una definicin de una clase. La comunicacin con el objeto se realiza a travs del paso de mensajes. El e!01o a %!a i!sta!cia de %!a clase pod%ce la e*ec%ci! de %! -.todo o ,%!ci! -ie-bo. El paso de mensajes es el trmino utilizado para referirnos a la invocacin o llamada de una funcin miembro de un objeto. 1.5 -ensa!es@ activacin de ob!etos Los objetos pueden ser activados mediante la recepcin de mensajes. Un -e!sa*e es simplemente una peticin para que un objeto se comporte de una determinada manera, ejecutando una de sus funciones miembro. La tcnica de enviar mensajes se conoce como paso de -e!sa*es. Estructuralmente un mensaje consta de tres partes: - la ide!tidad del ob*eto ecepto - la ,%!ci! -ie-bo del ecepto cuya ejecucin se ha solicitado - cualquier otra i!,o-aci! adicio!al /%e el ecepto p%eda !ecesita para ejecutar el mtodo requerido. En C++, la notacin utilizada es !o-be3del3ob*eto4,%!ci!3-ie-bo 1!emplo: Se tiene un objeto o1 con los siguientes miembros dato: nombre_alumno y curso y con las funciones miembro: leerQnombre e imprimir. Si el objeto o1 recibe el mensaje imprimir, esto se expresa: o54i-pi-i$' La sentencia anterior se lee: "enviar mensaje imprimir al objeto o1". El objeto o1 reacciona al mensaje ejecutando la funcin miembro de igual nombre que el mensaje. El mensaje puede llevar parmetros: o1.leer_nombre("Pedro Prez") Sin los mensajes los objetos que se definan no podrn comunicarse con otros objetos. Desde un punto de vista convencional, el paso de -e!sa*es no es ms que el sinnimo de lla-ada a %!a ,%!ci!4 1.; *rorama orientado a ob!etos Un programa orientado a objetos es una coleccin de clases. Necesitar una funcin principal que cree objetos y comience la ejecucin mediante la invocacin de sus funciones miembro. Esta organizacin conduce a separar partes diferentes de una aplicacin en distintos archivos. La idea consiste en poner la descripcin de la clase para cada una de ellas en un archivo separado. La funcin principal tambin se pone en un archivo independiente. El compilador ensamblar el programa completo a partir de los archivos independientes en una nica unidad. En realidad, cuando se ejecuta un programa orientado a objetos, ocurren tres acciones: 1. Se crean los objetos cuando se necesitan 2. Los mensajes se envan desde uno objetos y se reciben en otros 3. Se borran los objetos cuando ya no son necesarios y se recupera la memoria ocupada por ellos 1.M <erencia La (ee!cia es la propiedad que permite a los objetos construirse a partir de otros objetos. Una clase se puede dividir en s%bclases. En C++ la clase original se denomina clase base; las clases que se definen a partir de la clase base, compartiendo sus caractersticas y aadiendo otras nuevas, se denominan clases dei0adas4 Las clases derivadas pueden heredar cdigo y datos de su clase base aadiendo su propio cdigo y datos a la misma. La herencia impone una relacin jerrquica entre clases en la cual una clase (i*a hereda de su clase pade. Si una clase slo puede recibir caractersticas de otra clase base, la herencia se denomina (ee!cia si-ple. Si una clase recibe propiedades de ms de una clase base, la herencia se denomina (ee!cia -6ltiple4 1.1> *olimorfismo En un sentido literal, significa la cualidad de tener ms de una forma. En el contexto de *44, el poli-o,is-o se refiere al hecho de que una misma operacin puede tener diferente comportamiento en diferentes objetos. Por ejemplo, consideremos la operacin sumar. El operador + realiza la suma de dos nmeros de diferente tipo. Adems se puede definir la operacin de sumar dos cadenas mediante el operador suma. "ttpKNNpro+ramarenc.Gebcindario.comNplusNcapitulo1."tm /a pro+ramacin orientada a objetos es una nueva #orma de ver viejos conceptos de modularidadK "a$ poco nuevoA pero al adaptar un len+uaje a los planteamientos de 544 e incitar a los pro+ramadores a utilizarlos, se consi+ue una mejora de productividad apreciable. 1. onceptos 2. 5alabras reservadas 7. 1structuras dinmicas $ objetos 1. Co"ce*$os E"ca*s!lamie"$o onsiste en a+rupar valores con m(todos *5:41I!:18 $ J!)T>4)8,. /a a+rupacin de valores si+ue el esquema de los :14:I8. /a a+rupacin de m(todos si+ue el esquema de la !)>T8. Iic"a combinacin se denomina 4.%1T. /os 4.%1T8 entran dentro de la cate+ora de los TL518A ms tarde pueden crearse variables de los tipos declarados. Oc!l$aci7" /os componentes de un 4.%1T pueden ser 5!./> o 5:>=AT1. ada una de estas palabras, reservadas, inicia una zona en la que se declaran datos o m(todos. 5ueden "aber varias zonas pblicas $No varias zonas privadas. )o obstante esta libertad, se recomienda disponer nicamente de 2 zonas, una pblica al principio $ una privada a continuacin. /a zona pblica al principio puede prescindir de la marca 5!./>. /os objetos quedan pues de la si+uiente #ormaK TYPE x= object elementos pblicos, datos y/o mtodos private elementos privados, datos y/o mtodos end;
asusticaK 4.%1T declarado en un 5:4F:ABK Todos los campos son utilizables desde cualquier sitio del pro+rama. /a distincin entre 5!./> $ 5:>=AT1 es puramente #ormal. 8e aplican las re+las tradicionales de mbitos de 5ascal. 4.%1T declarado en !)>T >)T1:JA1K /os campos 5!./> del 4.%1T son utilizables desde cualquier sitio de la !)>T, $ en cualquier otra !)>TN5:4F:AB que !818 esta. /os campos 5:>=AT1 del 4.%1T son utilizables desde cualquier sitio de esta !)>T, pero en nin+n otro sitio. 4.%1T declarado en !)>T >B5/1B1)TAT>4)K Todos los campos, sean 5!./> o 5:>=AT1, son utilizables desde cualquier sitio de la >B5/1B1)TAT>4). /a distincin entre 5!./> $ 5:>=AT1 es puramente #ormal. 8e aplican las re+las tradicionales de mbitos de 5ascal. /os componentes de un 4.%1T, sean 5!./> o 5:>=AT1, se pueden usar libremente para pro+ramar el contenido de los m^eacuteAtodos del 4.%1T en cuestin. He-e"cia !n objeto puede ser descendiente de otro. /a t(cnica consiste en co+er un objeto $a cerrado, sacar una copia $ escribirle cosas encimaK ms datos $No ms m(todos. Aparece una relacin asim(trica de ascendientesNdescendientes. /a relacin es transitiva. /os datos de los ascendientes eEisten en los descendientesA que no pueden de#inir nuevos campos con i+ual nombre. /os m(todos de los ascendientes en principio los pueden usar los descendientesA pero estos pueden rede#inirlos de nuevo, ocultando los de sus ascendientes. 8e puede lle+ar a mcetodos de ancestros remotos eEplicitando el tipo al que nos re#erimos. 5or ejemplo, si 4n es un objeto que procede de 41 a travces de varias "erencias, los mcetodos de 41 son accesibles en 4n como O1.metodo (...) 1l ascendiente inmediato es accesible como INHERITED metodo (...) 5ascal slo permite "eredar de 1 ascendiente. 0a$ len+uajes que permiten "eredar de varios *"erencia mltiple, Asi3"aci7" &e ;alo-es uando tenemos variables que son de tipos objeto, sus contenidos pueden asi+narse. on ciertas condiciones. 1l contenido de una variable =2 es asi+nable a una variable =1 *V1:= V2;, si $ slo si =1 $ =2 son del mismo tipo =1 es de un tipo ascendiente del tipo de =2 Al asi+nar un objeto a otro objeto, se copian los contenidos de los datos comunes. /a #iloso#a sub$acente es que un descendiente tiene siempre los componentes de sus ascendientes *inmediatos o remotos, $ por tanto la asi+nacin siempre sabe cmo llenar los componentes de destino, aunque "a$a que tirar al+unos que sobran. Al reve(s, sin embar+o, no sera posible, pues un ascendiente tiene menos cosas que sus descendientes $ dejara campos sin car+ar *las variables con contenidos inde#inidos son mu$ peli+rosas, #uente de mil errores, $ conviene evitarlas a toda costa,. /os m(todos asociados no se alteranK cada objeto mantiene los propios de su tipo. /a asi+nacin de valores tiene lu+ar en sentencias de asi+nacin *ej. =1KS =2A, en el paso de parmetros por valor *ej. 5:41I!:1 5 *=1K ...,A llamado como 5 *=2,A , Com*a-$ici7" &e ;alo-es 8e da cuando "a$ dos #ormas de acceder a un mismo objeto, cosa que tiene lu+ar al asi+nar punteros *aparecen aliases apuntando a la misma cosa, en el paso de parmetros por re#erencia *=A:, *aparecen varios nombres para la misma cosa, Polimo-%ismo 8e llama polimor#ismo a la utilizacin del mismo nombre para re#erirse a di#erentes cosas. 0a$ muc"os casos de polimor#ismo en 5ascal sin objetos, ejK 3rite es un procedimiento polimr#ico, pues puede trabajar sobre parmetros de di#erentes tipos Ios campos que se denominen i+ual pueden eEistir en :14:I8 di#erentes Ios variables o procedimientos que se denominen i+ual pueden eEistir en mbitos di#erentesA por ejemplo, en di#erentes !)>Ts. 1n 4.%1T8K Ios campos que se denominan i+ual pueden eEistir en 4.%1T8 di#erentes, nos re#erimos tanto a datos como a m(todos. !n tipo "eredado puede rede#inir la #uncionalidad de un m(todo que se llame i+ual en al+n ascendiente. Ie "ec"o, el elemento del ancestro queda oculto por el nuevo elemento. 1l polimor#ismo es mu$ natural, intuitivo $ carece de emocicon cuando a#ecta a objetos no relacionados entre sci. 1l polimor#ismo pasa a ser especialmente emocionante cuando se aplica entre objetos que mantienen una relacicon de "erencia. 1sto es as porque con el tipo de un ascendiente podemos estar re#iri(ndonos a una cosa de un tipo descendiente. omo esto slo se sabe cuando estamos ejecutando el pro+rama, se suele asociar al concepto de -late bindin+-. La$e Bi"&i"3 dtraducible por li+adura tarda, dinmica, ...e /a re+la bsica es que dado el tipo de un objeto, los m(todos que le son aplicables son los que le son propios, independientemente de que otros descendientes puedan "aberlos rede#inido. 1n un conteEto en el que eEista posibilidad de polimor#ismo en el sentido del ltimo prra#o del punto anterior, es posible que el m(todo asociado a un objeto no sea necesariamente el asociado a su tipo, sino que podamos re#erirnos al m(todo asociado al tipo del que es el contenido real de la cosa. /. Palab-as -ese-;a&as 5ascal asocia una serie de palabras novedosas para plasmar cada uno de estos conceptos. /a asociacin no es todo lo ele+ante que sera de desear, $ a veces "a$ palabras reservadas que se utilizan para di#erentes conceptos, $ conceptos que requieren de muc"as palabras reservadas. E"ca*s!lamie"$o 4.%1T, que sirve para de#inir TL518 objeto =A:, que sirve para crear variables de TL518 objeto 81/J, que es una variable que slo eEiste dentro de un m(todo $ se re#iere a la variable sobre la que se aplica el m(todo. o 1n proceduresN#unctions aisladas es necesario pasar un ar+umento para saber sobre qu( variable se aplica PROCEDURE pop (VAR p: pila); al llamarlo como pop (mipila); dentro de -pop-, la variable eEterna -mipila- se conoce por p. o omo los m(todos de los objetos estn estrec"amente li+ados a los objetos en s, la asociacin es directamente mipila.pop $ dentro de -pop-, la variable eEterna -mipila- se conoce por 81/J. Oc!l$aci7" 5!./>, que sirve para dar amplia visibilidad a un componente, dato o m(todo 5:>=AT1, que sirve para acotar la visibilidad de un componente, dato o m(todo He-e"cia TL51 descendienteS 4.%1T *ascendiente, declara un tipo derivado de otro >)01:>T1I, que permite que un descendiente se re#iera a un m(todo de su ascendiente inmediato Asi3"aci7" &e ;alo-es KS en asi+nacin convencional paso de parmetros por valor Com*a-$ici7" &e ;alo-es KS de punteros *aliases, paso de parmetros por re#erencia *=A:, Polimo-%ismo La$e Bi"&i"3 =>:T!A/ 1. palabra que se utiliza adjetivar un m(todo de #orma que sea susceptible de un -late bindin+-. 2. /os m(todos no =>:T!A/ se asocian en base al continente. 7. /os m(todos =>:T!A/ se asocian en base al contenido. 4)8T:!T4: 1. 8i un objeto tiene m(todos =>:T!A/, tambi(n debe tener m(todos 4)8T:!T4:. 2. ualquier m(todo *5:41I!:1 o J!)T>4), puede ser 4)8T:!T4:, $ debe "aber al+uno para ser llamado antes de usar al+n m(todo virtual. 7. 8i sobre una variable de un cierto tipo 4.%1T se intenta utilizar un m(todo =>:T!A/ antes de utilizar al+n m(todo 4)8T:!T4:, ocurre un error. ?. 8e puede activar un c"equeo Uf:RW para que el pro+rama de un error si se intenta utilizar un =>:T!A/ antes que un 4)8T:!T4:. C. 5robablemente sea suicida trabajar sin Uf:RW &. Todo esto son manas de Turbo 5ascalA no ocurre necesariamente en otros len+uajes. I18T:!T4: 1. ualquier m(todo puede ser I18T:!T4:. 2. 1stos m(todos sirven para indicarle a la mquina que cuando libere memoria *con I>85481, lo "a+a bien. 7. 8lo son necesarios cuando se trabaja con objetos ubicados dinmicamente $ que son polimr#icos. ?. 1n estos casos es obli+ado que el I18T:!T4: sea adems =>:T!A/. 1. Es$-!c$!-as &i"4micas ? ob.e$os /a utilizacin de t(cnicas orientadas a objetos no altera sustancialmente las t(cnicas clsicas en cuanto a pro+ramacin con estructuras dinmicas $ punteros como mecanismo de re#erencia a las mismas en tiempo de ejecucin. /as mismas estructuras que venamos utilizando se pueden envolver como objetos $ tratar como tipos abstractos de datos. 1s decir, tenemos una #orma alternativa de encapsulamiento o mdularizacin. 5ero si aparecen nuevas posibilidades en torno a los conceptos de polimor#ismo $ li+adura tarda *-late bindin+-,. 3.1. *olimorfismo % m(todos virtuales /os objetos introducen una posibilidad nuevaK los m(todos virtuales, que aprovec"an la i+norancia del pro+rama respecto de lo que un puntero est apuntando para introducir un concepto de +enericidad en la estructuracin de pro+ramas. Bs claramenteK la esencia de los objetos es asociar los m(todos *procedimientos $ #unciones, a los datos. 1sta asociacin se puede realizar a trav(s de un punteroK dado un puntero, se persi+ue para localizar el dato $ de (l averi+uamos qu( m(todo aplicar. Ie esta t(cnica podemos -abusar- de la tolerancia del sistema a base de pasar punteros de un sitio para otro $ slo en el ltimo momento *-late bindin+-, preocuparnos de averi+uar a qu( estamos apuntando. 8i somos capaces de relajar el c"equeo de tipos, podemos encontrarnos en tiempo de ejecucin con una variedad de objetos di#erentes apuntados. 1sta relajacin debe ser cuidadosa para no crear un caos. 1n pro+ramacin orientada a objetos la #orma controlada de combinar varios tipos de objetos de denomina polimor#ismo $ consiste en tolerar que a un objeto de un cierto tipo T1 se le asi+ne otro objeto de otro tipo T2, con la restriccin de que T2 sea un descendiente *tipo derivado, de T1. 1n particular, esta relajacin se puede aplicar a los punterosK TYPE PT1= ^T1; T1= OBJECT ... END; PT2= ^T2; T2= OBJECT (T1) ... END; VAR O1: PT1; O2: PT2; PROCEDURE P (X: PT1); BEGIN ... END; BEGIN O1:= O2; (* polimorfismo legal *) P (O2); (* polimorfismo legal *) 1sta tolerancia tiene cierta l+ica. !n tipo derivado slo puede ser un enriquecimiento de otro tipo. /os datos de un ascendiente son un subconjunto de los datos de un descendiente, $ por tanto todo lo que el antecesor conoce puede localizarse en el descendiente. 5ero, aparte de no dejar nin+n vacio, un descendiente puede tener un di#erente concepto de lo que "ace un cierto m(todo *un re#inamiento,K eEiste siempre al+o que se llama i+ual, pero su ejecucin puede ser di#erente. 1stos m(todos son los que se denominan virtualesK T1= OBJECT PROCEDURE X; virtual; END; T2= OBJECT (T1) PROCEDURE X; virtual; END; T1.X y T2.X pueden tener implementaciones distintas. !n puntero a un objeto de tipo 5T1, puede apuntar a un objeto de tipo T1, en cu$o caso 41g.< ejecutar T1.<. 5ero tambi(n puede encontrarse apuntando a un objeto de tipo T2, en cu$o caso ejecutara T2.<. 8lo se sabe en tiempo de ejecucin a qu( est apuntando en cada momento. 1stos procedimientos requieren una atencin especial, razn por la cual se le in#orma al sistema adosndoles la palabra =>:T!A/. 3.2. 'onstructores % destructores /os objetos susceptibles de ser apuntados se encuentran con otros detalles operacionales relativos a su inicializacin $ a su liquidacin *destruccin,. )os re#erimos a las operaciones de ubicacin de memoria *)13, $ de liberacin *I>85481,. /a ubicacin de memoria requiere al menos dos #asesK *1, ubicar sitio $ *2, inicializar los datos. omo un objeto suele tener datos privados slo accesibles a trav(s de los m(todos que aporta pblicamente *al menos esto es lo que recomiendan los tratados de buenas maneras de pro+ramar,, ocurre que tendremos al+n m(todo que se denomine -car+a- o similar. 5or ejemploK T1= OBJECT PROCEDURE X; virtual; CONSTRUCTOR init (valor: tipo); PRIVATE dato: tipo; END; CONSTRUCTOR T1.init (valor) BEGIN dato:= valor; END; L la creacin de un objeto de este tipo viene en dos #asesK NEW (O1); O1^.init (...); que, por comodidad $ por sistematizar operaciones, se pueden combinar en una sla operacinK NEW (O1, init (...)); Aparte de las razones aducidas de comodidad, en el caso de Turbo 5ascal el sistema requiere que si un objeto tiene m(todos virtuales, antes de utilizar estos se "a$a utilizado al+n constructor. 1sto es pura mana de Turbo 5ascalA pero si no se "ace, los pro+ramas no #uncionan. /a operacin sim(trica, I>85481 su#re una evolucin similarK T1= OBJECT PROCEDURE X; virtual; CONSTRUCTOR init (valor: tipo); DESTRUCTOR final; PRIVATE dato: tipo; END; DESTRUCTOR T1.final; BEGIN (* lo que haga falta ... *) END; Ionde -lo que "a+a #alta- quiere decir que antes de eliminar un objeto puede ser necesario atender a otras #acetas del pro+rama. asos tpicosK que un objeto ten+a un puntero a otro objeto $ no nos interese que se pierda memoria por eliminar al que apunta. que el objeto sea parte inte+rante de una estructura de datos ms compleja $ debamos ajustar el entorno antes de eliminar uno concreto. 8ea por la razn que sea, podemos eliminar en una o dos operacionesK O1^.final; DISPOSE (O1); DISPOSE (O1, final); uando trabajamos con m(todos vrituales, adems de la problemtica eEpuesta nos encontramos con situaciones en las que no se sabe "asta tiempo de ejecucin que es lo que "a$ que destruir. 1sto lleva simplemente a que los m(todos destructores sean de tipo =>:T!A/. 3.3. 4b!etos en(ricos /os m(todos virtuales nos llevan a la posibilidad de escribir unidades que trabajan sobre cualquier tipo de datos dentro de una jerarquizacin de objetos derivados. /a t(cnica consiste en identi#icar un tipo mu$ bsico con las mnimas #unciones necesarias, que se etiquetan como virtuales. 8obre este tipo elemental se desarrollan al+oritmos que "acen re#erencia a los m(todos virtuales. 1stas unidades se pueden cerrar sin necesidad de que se conozca eEactamente a que descendientes del tipo bsico se van a aplicar. Bs tarde, se pueden derivar nuevos objetos a partir del tipo bsico, dando contenido diverso a los m(todos virtuales que quedaron abiertos. 8e monta todo junto $ en tiempo de ejecucin los al+oritmos +en(ricos que "abiamos codi#icado se materializan sobre las instancias precisas de los objetos derivados. 1sta posibilidad de escribir unidades +en(ricas lleva a una posibilidad prctica de disponer cdi+o reutilizable o incluso comercializable por separado. "ttpKNNGGG.upv.esNprotelNusrNjotro#erNpascalNpoo."tm 1.).3*roramacin de descripcin de <ardHare sistemas num(ricos 1.+ Lenua!es de proramacin /en+uajes de pro+ramacion !n pro+rama es un conjunto de instrucciones que indica al ordenador las tareas a realizar. !n pro+rama consta de rdenes $ de declaraciones. /as rdenes indican las tareas a ejecutar. /as declaraciones in#orman sobre determinados aspectos de los elementos de un pro+rama. /as rdenes $ declaraciones se escriben correlativamente utilizando la sintaEis de uno de los len+uajes de pro+ramacion. 1sta sintaEis pretende ser lo ms parecida al len+uaje utilizado en la comunicacin verbal. /os pro+ramas as escritos, en len+uaje o cdi+o #uente, no pueden ser interpretados directamente por el ordenador, necesitan ser traducidos a len+uaje mquina. /en+uaje mquina es el len+uaje que puede ser entendido $ ejecutado directamente por el ordenador. 5ara conse+uir que el cdi+o #uente sea interpretado como cdi+o mquina se emplean compiladores $ lin9adores, que son dos tipos de pro+ramas ensambladores. /os di#erentes len+uajes se pueden clasi#icar en dos +ruposK len+uaje mquina $ len+uaje de pro+ramacin. Ientro de (stos, a su vez, "a$ dos +rupos, los len+uajes de alto nivel $ los len+uajes ensambladores. 8e crean tres tipos de #ic"eros para obtener un ejecutable. 1n primer lu+ar, el pro+rama #uente dar ori+en a un #ic"ero objeto, que a su vez es el ori+en del #ic"ero ejecutable. /as #ases por las que pasa un pro+rama, desde que se crea el cdi+o #uente "asta que termina su ejecucin, sonK edicin del teEto escrito para depurar los errores +ramaticales. /os errores l+icos, sintcticos, no detectados anteriormente se detectan en la #ase de compilacin, no permiten continuar con la creacin del #ic"ero ejecutable. 1n este caso se "a de reescribir el cdi+o errneo antes de un nuevo lin9ado. 0ttp@99HHH.aleon.com9Kronen9lenua!es.0tm ?u( es un Lenua!e de *roramacin Antes de "ablar de RR, es necesario eEplicar qu( es un len+uaje de pro+ramacin. !n len+uaje de pro+ramacin es un len+uaje escrito utilizado para escribir pro+ramas que se ejecutan en un computador. 1Eisten muc"os len+uajes de pro+ramacin de entre los que se destacan los si+uientesK 1. 2. RR 7. .asic ?. Ada C. %ava &. 5ascal '. 5$t"on @. Jortran 6. 8malltal9 0ttp@99es.HiKibooKs.or9HiKi9*roramaciT'3TB3nQenQ'Q-T'3T"1sQ- T'3T"1sU?u.'3."MQesQunQLenua!eQdeQ*roramaci.'3.B3n Lenua!e de proramacin es un conjunto de sintaxis y reglas semnticas que definen los programas del computador. Es una tcnica estndar de comunicacin para entregarle instrucciones al computador. Un lenguaje le da la capacidad al programador de especificarle al computador, qu tipo de datos actan y que acciones tomar bajo una variada gama de circunstancias, utilizando un lenguaje relativamente proximo al lenguaje humano. Un programa escrito en un lenguaje de programacin necesita pasar por un proceso de compilacin, es decir, ser traducido al lenguaje de mquina para que pueda ser ejecutado por el ordenador. 0ttp@99enc%clopedieG es.sn%Ke.com9articles9lenua!eQdeQproramacion.0tml Qu es un Lenguaje de Programacin? Un lenguaje de programacin es un conjunto de normas lingsticas que permiten escribir un programa y que ste sea entendido por el ordenador y pueda ser trasladado a ordenadores similares para su funcionamiento en otros sistemas. Un programa es una serie de instrucciones ordenadas correctamente que permiten realizar una tarea o trabajo especfico. Ahora bien, un lenguaje de programacin se basa en dos elementos muy importantes: Sintaxis: que se refiere a la utilizacin correcta de cada una de las sentencias de cierto lenguaje de programacin. Semntica: se encarga de que cada "oracin" del lenguaje de programacin utilizado tenga un significado correcto. A medida que la complejidad de los programas ha ido aumentando, se han requerido de nuevos lenguajes para poder describir esos problemas y que sean resueltos por el ordenador. Generaciones de Lenguajes de Programacin Las generaciones de los lenguajes de programacin, se han venido dando debido a que las necesidades que plantean los problemas son cada da ms grandes y complejo, a continuacin se hace un pequeo resumen de cada una de las generaciones de lenguajes de programacin. a. Primera Generacin: Los lenguajes de primera generacin o tambin conocidos como lenguajes maquina, son en los que se utiliza el cdigo binario(unos y ceros) para comunicarse con la computadora, esta generacin de lenguajes es muy complicada, ya que al usar pocos signos, no puede expresar cosas muy complicadas. En la actualidad ya casi no se trabaja con lenguajes maquina, los nicos que lo hacen son los diseadores de los "chips" de los procesadores. b. Segunda Generacin: Los lenguajes de esta segunda generacin son conocidos tambin como ensambladores, y se distinguen de los lenguajes maquina por su eficiencia(en comparacin con sus antecesores). Estos lenguajes ensambladores se basan en lo que es la comprensin de varias palabras en una sola, por ejemplo: ADC significara "sumar con reserva"(en ingles: ADd with Carry) Haciendo notoria la aclaracin, de que esta serie de instrucciones sern traducidas al lenguaje maquina por el compilador del lenguaje. c. Tercera Generacin: Los lenguajes de tercera generacin o de alto nivel son los lenguajes ms comunes o que ms conocemos(C, Pascal, Algol, Cobol, Fortran, BASC). Estos lenguajes se asemejan ya un poco ms al lenguaje humano, al utilizar palabras completas( en ingles) para la codificacin de los programas. d. Cuarta Generacin: Son los lenguajes de "programacin asistida" por medio de ayudantes o wizards, estos lenguajes se han diseado para facilitar la realizacion de muy variadas tareas, como lo son la simulacin de fenmenos fsicos, manipulacin de datos estadsticos, etc. Algunos de estos lenguajes son: Visual Basic, NFORMX 4GL, Visual J++, Visual C, he inclusive algunos autores consideran las planillas de calculo dentro de esta generacin. e. Quinta Generacin: En esta generacin, el programador solo ingresa hechos y hace consultas, no se preocupa de cmo hacer los algoritmos que entregan la respuesta, algunos autores hasta hace poco todava consideraban a esta generacin como un sueo, pero gracias al avance de la tecnologa, hoy en da es toda una realidad, como lo veremos a continuacin. 0ttp@99HHH.monorafias.com9traba!os+9proco9proco.s0tml Unidad .. Di#e/o de Algoritmo# 2.1 'onceptos b,sicos 1l diseo de al+oritmos es una actividad que consiste en especi#icar los pasos necesarios para alcanzar la solucin de un problema. Iebe considerarse que al+unos de esos pasos sern otros al+oritmos. aractersticas de un al+oritmoK 1. Alcanzar la solucin *correcta, en un tiempo #inito. 2. onstar de pasos claros, precisos $ no ambi+uos 7. Bostrar claramente cules son los datos iniciales $ cules son los resultados. 5or cada problema se debe considerar lo si+uienteK 1. Ie#inir con precisin qu( datos se utilizarn como entradas. 2. Ie#inir con precisin qu( datos se obtendrn como salidas. 7. 8i $a eEisten al+oritmos adecuados, aprovec"arlos prudentemente. ?. Ieterminar qu( acciones se deben e#ectuar sobre las entradas "asta convertirlas en resultados, $ describir cada una con #rases no ambi+uas. 5or lo +eneral las acciones que pueden inte+rarse en un al+oritmo sonK 1. 5edir datos, 2. Iesple+ar datos, 7. 1valuar condiciones $ ?. 1jecutar operaciones matemticas. ETAPAS DEL DESARROLLO DE PRO#RAMAS !n pro+rama se elabora para resolver un problema mediante la computadora. 1n computacin un problema consiste en obtener ciertos resultados a partir de unos datos previos. !n pro+rama es un +rupo de instrucciones, escritas en un len+uaje especializado, cu$a #inalidad es indicarle a una mquina cmo e#ectuar un trabajo. A cada lnea de un al+oritmo le corresponden una o ms lneas de cdi+oA un pro+rama puede constar de uno o ms al+oritmos 5ara desarrollar un pro+rama $ tener ma$or con#ianza sobre su correcto #uncionamiento es conveniente se+uir las si+uientes etapasK 1. Ie#inicin del problema, 2. Anlisis del problema, 7. Iiseo del al+oritmo, ?. 5ro+ramacin $ pruebas, C. Bantenimiento del pro+rama. 1l al+oritmo de#ine la l+ica con que #lu$en las instrucciones de un pro+rama. "ttpKNNGGG.c$ta.com.arNbibliotecaNbddocN01070?Nrr""Nrr""."tm C"&CEP!" $E P#"1)E(A2 Entendemos por problema una situacin en la que las cosas que tenemos son diferentes de las que deseamos& 1jemploK !na persona quien desea tener una casa nueva, sin embar+o, el solo dispone de los maderos, las pinturas $ las "erramientas, en sntesis desea una casa pero solo cuenta con los materiales. 8ig& P&I 'ara en%rentar estas situaciones problem#ticas proponemos un m3todo para >desenredar@ el problema ( paulatinamente construir la situacin 1.1.2 "L:42IT-4 Definicin@ 1s una serie de pasos ordenados licamente &ue permiten resolver un problema. Al+oritmos de la vida cotidiana. En la vida diaria podemos encontrar muc5os ejemplos como son* 4) -eceta de cocina I& 9ener listo los ingredientes A& Encender el %uego K& Colocar el sart3n sobre el %uego Q& 'oner aceite en la sart3n R& 4gregar los 5uevos ( dejarlos %re$r A minutos S& -etirar los 5uevos T& 4pagar el %uego 'odemos encontrar algoritmos 5asta en la actividad m#s sencilla, >dar un paso@ por ejemplo* I& 4po(ar el cuerpo sobre el pie izquierdo A& )evantar el pie derec5o K& 4vanzar el pie derec5o Q& Bajar el pie derec5o R& 4po(ar el cuerpo sobre el pie derec5o S& )evantar el pie izquierdo T& 4vanzar el pie izquierdo P& Bajar el pie izquierdo 4qu$ podemos apreciar que importante es seguir el orden marcado por el algoritmo, piense que ocurrir$a si despu3s de realizar el numero A se salte al paso S& 1.1.1 CARACTERKSTICAS DE LOS AL#ORITMOS +initud* El algoritmo debe alcanzar la solucin correcta en un limite de tiempo Precisin* )as instrucciones de un algoritmo deben ser claras, precisan ( no prestarse a interpretaciones (es decir evitar la ambigUedad) Entradas 3 alidas claramente defnidas* )as entradas se trans%ormaran para obtener las salidas, por ello un algoritmo debe mostrar con claridad cuales ser#n los resultados (datos iniciales ) Efecti/idad* )os pasos de un algoritmo deben conducir a la solucin del problema original Tarea 1: Realizar un algoritmo tipo agenda sobre las actividades que hace durante el da! siguiendo los pasos de la de"inici#n de algoritmos 42425 $%AG#A(A $efnicin* Es la representacin gra.ca de la solucin de un problema o un procedimiento De%i"ici7" &e Pse!&o c7&i3o< onsiste en redactar *en espaol, cada paso del al+oritmo, utilizando oraciones breves $ sin incluir adjetivos $ artculos. 5ttp*OO222&angel.re&comOt5e%orceOtrabajoOtrabajo&5tm 2.2 -etodolo.a de la proramacin De%i"ici7" &el *-oblema 1st dada en s por el enunciado del problema, el cual debe ser claro $ complejo. 1s importante que conozcamos eEactamente "que se desea obtener al final del proceso" A mientras esto no se comprenda no puede pasarse a la si+uiente etapa. A"4lisis &e los &a$os 5ara poder de#inir con precisin el problema se requiere que las especi#icaciones de entrada $ salida sean descritas con detalle $a que esto es un requisito para lo+rar una solucin e#icaz. !na vez que el problema "a sido de#inido $ comprendido, deben analizarse los si+uientes aspectos K /os resultados esperados. /os datos de entrada disponibles. 0erramientas a nuestro alcance para manipular los datos $ alcanzar un resultado *#rmulas, tablas, accesorios diversos,. !na medida aconsejable para #acilitar esta etapa consiste en colocarnos en lu+ar de la computadora deduciendo los elementos que necesitaremos para alcanzar el resultado. E.em*lo /.1 /eer el radio de un crculo $ calcular e imprimir su super#icie $ circun#erencia. Anlisis /as entradas de datos en este problema se concentran en el radio del crculo. Iado que el radio puede tomar cualquier valor dentro del ran+o de los nmeros reales, el tipo de datos radio debe ser real. /as salidas sern dos variables K super#icie $ circun#erencia que tambi(n sern de tio real. 1ntradas K :adio del crculo *variable :AI>4,. 8alidas K 8uper#icie del crculo *variable A:1A,. ircun#erencia del crculo *variable >:!)J1:1)>A,. =ariables K :AI>4, A:1A, >:!)J1:1)>A tipo real. DiseLo &e la sol!ci7" !na computadora no tiene capacidad para solucionar problemas ms que cuando se le proporcionan los sucesivos pasos a realizar, esto se re#iere a la obtencin de un al+oritmo que resuelva adecuadamente el problema. 1n caso de obtenerse varios al+oritmos, seleccionar uno de ellos utilizando criterios $a conocidos. 1sta etapa inclu$e la descripcin del al+oritmo resultante en un len+uaje natural, de dia+rama de #lujo o natural de pro+ramacin. omo puede verse, solo se establece la metodolo+a para alcanzar la solucin en #orma conceptual, es decir A sin alcanzar la implementacin en el sistema de cmputo. Ie acuerdo al ejemplo 2.1 tenemos que la in#ormacin proporcionada constitu$e su entrada $ la in#ormacin producida por el al+oritmo constitu$e su salida. /os problemas complejos se pueden resolver ms e#icazmente por la computadora cuando se dividen en subproblemas que sean ms #cil de solucionar. 1l problema de clculo de la lon+itud $ super#icie de un crculo se puede descomponer en subproblemas ms simples K /eer datos de entrada. alcular super#icie $ lon+itud. 1scribir resultados *datos de salida,. Co&i%icaci7" 8e re#iere a la obtencin de un pro+rama de#initivo que pueda ser comprensible para la mquina. >nclu$e una etapa que se reconoce como compilacin. 8i la codi#icacin ori+inal se realiz en papel, previo a la compilacin deber eEistir un paso conocido como transcripcin.
P-o3-ama 0!e"$e 1sta escrito en un len+uaje de pro+ramacin. *pascal, RR,=isual JoE, =isual .asic, etc,. 1s entendible por el pro+ramador.
P-o3-ama E.ec!$able 1st en len+uaje mquina. 1ntendible por la mquina. P-!eba ? &e*!-aci7" !na vez que se "a obtenido el pro+rama ejecutable, este es sometido a prueba a #in de determinar si resuelve o no el problema planteado en #orma satis#actoria. /as pruebas que se le aplican son de diversa ndole $ +eneralmente dependen del tipo de problema que se est resolviendo. omnmente se inicia la prueba de un pro+rama introduciendo datos vlidos, invlidos e incon+ruentes $ observando como reacciona en cada ocasin. 1l proceso de depuracin consiste en localizar los errores $ corre+irlos en caso de que estos eEistan. 8i no eEisten errores, puede entenderse la depuracin como una etapa de re#inamiento en la que se ajustan detalles para optimizar el desempeo del pro+rama. Doc!me"$aci7" Iebido a que el pro+rama resultante en esta etapa se encuentra totalmente depurado *sin errores,, se procede a la utilizacin para resolver problemas del tipo que di ori+en a su diseo. 1n vista de que esta utilizacin no podr ser supervizada en todas las ocasiones por el pro+ramador, debe crearse un manual o +ua de operacin que indique los pasos a se+uir para utilizar el pro+rama. Ma"$e"imie"$o 8e re#iere a las actualizaciones que deban aplicarse al pro+rama cuando las circunstancias as lo requieran. 1ste pro+rama deber ser susceptible de ser modi#icado para adecuarlo a nuevas condiciones de operacin. ualquier actualizacin o cambio en el pro+rama deber re#lejarse en su documentacin. (E!"$")"G%A DENTFCACN DEL PROBLEMA Un problema siempre surge en una situacin mas o menos compleja& Esto provoca que muc5as veces no se aprecia el verdadero problema& 'ara identi.car el problema es necesario encontrar dentro de la situacin todos los elementos importantes* aquellos que est#n presentes( lo que tenemos) ( aquellos que est#n ausentes ( lo que deseamos) Ejemplo* :uestro personaje esta sentado en su casa viendo la televisin& 4%uera esta lloviendo ( como su tec5o esta en mal estado el agua se introduce a la 5abitacin& 8ig P&A LCu#l es su problemaN I& El problema es que la televisin no se ve bien A& El problema es que el silln no es cmodo K& El problema es que las gotas 5acen ruido Q& El problema es que se esta metiendo el agua a su casa !n anlisis pro#undo de la situacin * $ un poco de sentido comn, podemos determinar que en realidad el problema consiste en que se esta metiendo el a+ua a la casaK nuestro personaje tiene una +otera, pero no quiera la +otera 1././ PLANTEAMIENTO DE ALTERNATI'AS DE SOLUCION )a solucin a un problema es la accin que permite eliminar las di%erencias entre lo que tenemos ( queremos& 'ara un mismo problema se puede tener varias soluciones, ( la eleccin de la mejor depender# de las circunstancias especi.cas& En el ejemplo de la gotera se mostraron Q posibilidades de solucin I& Esperar con resignacin a que acabe la lluvia A& Colocar el paraguas en el tec5o K& -epara el tec5o Q& Colocar una cubeta bajo la gotera& Cualquiera de estas soluciones es posible llevarla a la practicaH sin embargo, resulta casi obvio que las dos primera son risibles* la resignacin provocara que se da;e el piso ( los muebles, ( colocar un paraguas >le da la vuelta@ al problema& )a tercera solucin es la mejor, pero considerando que esta lloviendo, la solucin inmediata es colocar la cubeta ( ( cuando no llueva reparar el tec5o)& En algunos otros casos las soluciones propuestas son poco %actibles, otras %ant#sticas ( algunas otras %alsas, pues no resuelven el problema sino lo evitan o crean otro& Un ejemplo, un problema de nutricin se soluciona ( %alsamente) con comida c5atarra& )a solucin es una estrategia que sirve para alcanzar el resultado deseado de un problema, dic5a estrategia consta de un conjunto de trans%ormaciones que convierten los elementos disponibles en los objetos deseados& 8ig P&K -egresando al primer ejemplo el de la persona que desea una casa debe seguir para lograr su propsito* I& Elaboracin de planos de la casa A& Cortar los maderos al tama;o adecuado K& Construir puertas ( tec5os Q& 'intar la casa !i nuestro personaje sigue los pasos es seguro que podr# dis%rutar de una casa nueva& En general a la serie de pasos que permiten resolver un problema se le conoce como algoritmo& Acti/idad* 7etermine cual es el error en el siguiente problema* El siguiente algoritmo presenta un sencillo procedimiento de inscripcin en la escuela de manejo2 1. Lle3a- a la o%ici"a &e i"sc-i*ci7" /. Reco3e- solici$!& &e i"sc-i*ci7" 1. Lle"a- solici$!& co" los &a$os 2. E"$-e3a- la solici$!& 6. Sali- &e la o%ici"a Ta-ea., :esolver el si+uiente problemaK Ieterminar los pasos para ensear a un cie+o de nacimiento que pueda representar +r#icamente los colores. DISENO DE AL#ORITMOS 7ise;o de algoritmos es preparar una estrategia para solucionar un problema, sin embargo para 5acer el dise;o se debe tener completamente entendido el problema ( comprendida la solucin que se desea alcanzar& E%ectuar un an#lisis de la situacin I& 'roblema identi.cado* El personaje no puede ser su camino (debido ala llanta ponc5ada) ( debe continuar su viaje& A& !olucin* Cambiar la llanta ponc5ada por otra en buen estado 7ise;o de estrategia para obtener la solucin& Mue debemos considerar* a) E+iste un llanta de re%raccin en buen estado b) E+iste la 5erramienta necesaria (gato, llave de cruz, etc) c) )as 5erramientas ( la llanta de re%raccin est#n en la cajuela d) !e tiene las llaves de la cajuela e) El carro (a %ue estacionado ( en la orilla de la carretera) Como realizar el algoritmo para e%ectuar el cambio de la llanta I& Bajar del carro A& 4brir la cajuela K& !acar llanta de re%raccin ( 5erramientas Q& Colocar el gato bajo el carro R& Muitar el tapn ( aVojar tuercas (birlo) de la llanta da;ada S& )evantar el carro con el gato T& Muitar los birlo ( sacar la llanta P& Colocar la llanta de re%raccin W& Bajar el carro IX&4pretar los birlo ( poner tapones II&0uardar 5erramienta ( la llanta de la cajuela IA&Cerrar la cajuela IK&!ubir al carro ( continuar el viaje DESARROLLO DE SOLUCIONES !area 62 Acti/idades en parejas la metodolog$a de solucin Ba;ar al perro Consideraciones* si tiene perro ( en su casa 5a( jabn, toallas, agua, etc& Escribir ( enviar una carta Consideraciones* tiene que enviar una tarjeta de %elicitaciones a un viejo amigo& :o tiene la tarjeta, ni los timbres& En su casa tiene sobres, papel ( plumas& 'uede depositar la carta en un buzn o en la o.cina de correos& 'reparar un emparedado Consideraciones* 9iene 5ambre& El emparedado ser# de tipo tradicional (jamn ( queso)& En su casa no 5a( jamn ni queso, pero tiene el pan ( los dem#s ingredientes necesarios& 'or si desea calentarlo, si tiene gas ( estu%a& 4dornar una #rbol de navidad Consideraciones* (a es navidad, (a compro el #rbol ( no importa si es natural o arti.cial)& En su casa 5a( todos los adornos necesarios& -ealice un algoritmo que convierta dlares a pesos Elabore un algoritmo que me solucione el problema de encontrar el #rea de un rect#ngulo& -ealice un algoritmo que obtenga el #rea ( el per$metro de una circun%erencia& 8rmula para el per$metro* 'CA + r + pi 8rmula para el #rea* 4Cpi + r + r 5ttp*OO222&angel.re&comOt5e%orceOtrabajoOtrabajo&5tm 6E9/7/)/0Y4 7E )4 '-/0-464C?G: Una aplicacin in%orm#tica se compone de programas que tienen por objeto la realizacin autom#tica de una o varias tareas mediante el uso de un sistema in%orm#tico& El proceso desde el planteamiento del problema 5asta que se tiene la solucin in%orm#tica instalada en una o varias computadoras, se denomina ciclo de vida de una aplicacin informtica. Este se descompone en varias %ases* 84!E! de 7?!EZ/ 84!E! de ?:!94)4C?G: 'roblema ?ngenieros Especi.cacin 'rograma %uente 7iplomadosO?9 4lgoritmo 'rograma objeto 93cnicos 8' Ejecutable 4plicacin Anlisis2 Consiste en el e+amen ( descripcin detallada de los siguientes aspectos relativos al problema* equipo a utilizar, personal in%orm#tico necesario, estudio de los datos de entrada, estudio de los resultados que se pretenden obtener, relacin entre la entrada ( la salida, ( descomposicin del problema en mdulos& -esultado* documentos que componen la especi.cacin del problema& Pro-ramacin2 Consiste en el dise;o de la solucin al problema planteado en %orma de algoritmo& -esultado* documentos integrados por 5erramientas de representacin de algoritmos como seudocdigo, ordinogramas, etc&&& Codifcacin2 9ranscripcin del algoritmo resultante de la %ase anterior a un lenguaje de codi.cacin concreto& -esultado* se denomina programa ( antiguamente sol$a devolverse o generarse un documento en papel denominado hoja de codifcacin o cuaderno de carga. Edicin& !e escribe el programa %uente a partir de las 5ojas de codi.cacin en la memoria del ordenador, ( se graba en alg,n soporte permanente& Compilacin& 9raduccin del programa %uente a,n programa objeto o compilado, con programas traductores& +ase de montaje o lin7ado& !e a;ade al programa objeto una serie de rutinas del sistema& -esultado* programa ejecutable directamente en la m#quina sin necesidad de traductor& Prueba de ejecucin& Consiste en ejecutar el programa con una serie de conjuntos de datos de prueba para comprobar si el %uncionamiento de 3ste entra dentro de los est#ndares de calidad .jados& Explotacin 3 mantenimiento& )a e+plotacin consiste en el uso continuo ( 5abitual por parte de los usuarios de la aplicacin en un entorno& El mantenimiento de la aplicacin consiste en la comprobacin del buen %uncionamiento de 3sta ( en la adaptacin a cualquier nueva circunstancia que implique su actualizacin& !eg,n el momento en el que se detectan los errores, podemos clasi.carlos en los siguientes tipos* Errores de compilacin& Corresponden al incumplimiento de las reglas sint#cticas del lenguaje& 'or ejemplo palabras clave mal escritas, %alta de delimitadores& !on los mas %#ciles de corregir& Errores de ejecucin& !e deben a operaciones no permitidas, como dividir por cero, leer un dato num3rico en una variable num3rica, etc&&&!e detectan porque se produce una parada anormal del programa& Errores de l-ica& Corresponden a la obtencin por el programa de resultados que no son correctos& !on bastantes di%$ciles de encontrar, slo se puede ser ejecutando un n,mero su.ciente de juegos de prueba ( compararlos con los datos producidos por el programa con los que generar$amos a mano, o bien con una aplicacin su.cientemente probada& Errores de especifcacin& !e deben a la realizacin de unas especi.caciones incorrectas, debidas a la mala comunicacin entre el equipo de desarrollo ( quien platea el problema& )a eleccin del algoritmo m#s adecuado se debe basar en una serie de requerimientos de calidad que adquieren gran importancia a la 5ora de evaluar costes de dise;o ( mantenimiento, que son los siguientes* )e-ibilidad& Claro ( sencillo, que resulte %#cil su lectura ( su compresin& +iabilidad& -obusto, es decir, capaz de recuperarse ante errores ( usos inadecuados& Portabilidad& 4 dos niveles* I) los algoritmos generados en la %ase de programacin deben ser implementables en di%erentes lenguajesH A) los cdigos %uente obtenidos deben ser independientes de la m#quina ( del !/& (odifcabilidad& El cdigo 5a de ser %#cil de mantener, o sea, 5a de permitir que se realicen cambios para adaptarlos a nuevas situaciones& Efciencia& El programa generado tendr# que 5acer un uso correcto ( ajustado de los recursos que no son ilimitados& )a metodolog$a de la programacin es un conjunto de m3todos ( t3cnicas disciplinadas que a(udan al desarrollo de unos programas que cumplan los requisitos anteriormente e+puestos& Estos objetivos suelen ser la programacin modular que consist$a en una serie de descomposiciones del problema 5asta llegar a un conjunto de mdulos implementables& )a programacin estructurada consiste en el uso e+clusivo de las estructuras secuencia, seleccin e iteracin para el control de Vujo de las instrucciones& )a 7ocumentacin de los 'rogramas est# constituida principalmente por una serie de anotaciones dentro del propio cdigo %uente ( por una serie de documentos que acompa;an a la aplicacin so%t2are& !u .n es %acilitar la e+plotacin ( el mantenimiento de la aplicacin, ( debe ser amplia, clara ( precisa& E+isten dos tipos de documentos* %nterna& Est# constituida b#sicamente por el listado del programa %uente ( su objetivo es %acilitar la lectura ( comprensin del mismo& !e considera parte de la documentacin interna los siguientes aspectos* Comentarios& !on %rases e+plicativas que se colocan en cualquier parte del programa %uente, ignoradas por el compilador& Es conveniente incluir comentarios con aquellos razonamientos que nos 5a(an sido di%$ciles de alcanzar ( que preveamos que van a ser di%$ciles de comprender pasado un tiempo& Cdigo autodocumentado2 )as palabras reservadas de los lenguajes de alto nivel se podr$an considerar como parte de la documentacin por corresponder con t3rminos en ingl3s que e+presan su contenido& Externa& Es el conjunto de documentos que se acompa;a con el programa, pero sin %ormar parte de los .c5eros %uente& )a documentacin e+terna debe inVuir a los siguientes apartados* especi.cacin del an#lisis, descripcin del dise;o del programa, de las versiones si las 5ubiera, del programa principal ( los subprogramas, de los manuales del usuario ( el anual del mantenimiento& )as t3cnicas de desarrollo ( dise;o de programas usadas en la programacin convencional tienen inconvenientes sobre todo a la 5ora de veri.car ( modi.car un programa& Una t3cnica que se est# implantando, para paliar los problemas e+teriores al ciclo de vida de la aplicacin, es la descomposicin de un problema en problemas cada vez m#s peque;os 5asta llegar a mdulos implementables, 9op" do2n, en el cual tenemos la programacin estructurada& )as t3cnicas de programacin estructurada pretenden resolver los saltos condicionales ( los incondicionales, las cuales se pueden de.nir como la programacin sin saltos condicionales e incondicionales& )as caracter$sticas de un programa estructurado son las siguientes* %#cil de leer ( comprender, %#cil de codi.car en una amplia variedad de lenguajes ( sistemas, %#cil de mantener, e.ciente (aprovec5ando al m#+imo los recursos del sistema) ( modularizable& Un diagrama propio es aquel que slo posee una entrada ( una salida& Un programa propio es el que solo tiene un punto de entrada ( otro de salida, ( donde todo elemento del programa es accesible, es decir, e+iste al menos un camino de los que van del inicio al .n que pasa por 3lH es un programa que no tiene bucles in.nitos& 7os programas son equivalentes si ante cualquier situacin de datos proporcionan el mismo resultado pero de distinta %orma& 9odo programa propio tiene siempre al menos un programa propio equivalente que slo utiliza las estructuras b#sicas de programacin, que son la secuencia, seleccin e iteracin& / sea, que dise;ando programas con sentencias primitivas ( estructuras b#sicas podremos 5acer cualquier trabajo ( considerar en mejorar la creacin, lectura, comprensin ( mantenimiento de los programas& )a programacin estructurada utiliza* $ise8o !op $o9n2 )os programas se dise;an de lo m#s gen3rico a lo m#s particular por medio de sucesivos re.namientos o descomposiciones que nos llevar#n a las instrucciones particulares de cada programa& #ecursos abstractos2 Es el complemento per%ecto para el dise;o 9op"7o2n (, en el cual, utilizamos el concepto de abstraccin, es decir, en cada descomposicin suponemos que las partes resultantes est#n resueltas, dejando su realizacin al siguiente re.namiento ( considerando que al .nal estar#n %ormadas por un conjunto de instrucciones ( estructuras b#sicas& Estructuras bsicas2 !oda accin se puede realizar usando las K estructuras b#sicas de control, es decir, la secuencial, alternativa ( la repetitiva& Estructura secuencial2 Es una estructura con una entrada ( una salida, cu(a ejecucin es lineal ( las acciones se ejecutar#n en el orden en el que aparecen& Cada accin slo tendr# una entrada ( una salida& Estructuras alternativas2 Es una estructura con una sola entrada ( una sola salida, de la cual se realiza una opcin seg,n una condicin& [sta puede ser simple o compuesta& )as alternativas pueden ser de dos tipos* I\, dos salidas condicionales, una de las cuales puede ser nulaH ( A\, tres o m#s salidas& Estructura repetitiva2 Estructura con una entrada ( una salida, en la cual se repite un n,mero determinado o indeterminado de veces, dependiendo de una determinada condicin& FOR* se repite una accin un determinado n,mero de veces representado normalmente por :& no si WHILE* !e repite una accin mientras que se cumpla la condicin que calcula el bucle& )a condicin es evaluada siempre antes de cada repeticin& no si DO/WHILE: !e repite una accin mientras se cumpla la condicin que controla el bucle& )a condicin se evaluar# despu3s de cada repeticin del bucle& si Un #rbol o estructura arborescente es un gra%o en el que se distinguen generalmente tres clases de nodos* ra$z, nodos intermedios ( 5ojas& )a ra$z es el nodo del que parte toda la estructura del #rbol, es decir, es un nodo que slo tiene salidas& )os nodos intermedios son los que tienen una entrada o enlace de entrada o al menos una salida o enlace de salida& )as 5ojas son nodos que se sit,an en la parte m#s lejana a la ra$z ( que slo tienen entradas& E+isten tres tipos de ordenar un #rbol* Preorden2 Consiste en los siguientes tres pasos* IJ, consultar la ra$zH AJ, consultar el sub#rbolH ( KJ, consultar el sub#rbol derec5o& %norden2 4:; -ecorrer el sub#rbol izquierdo 5asta llegar a una 5oja ( tratar esa 5oja& AJ Consultar la ra$z& KJ, recorrer el sub#rbol derec5o 5asta llegar a una 5oja ( tratarla& Postorden2 IJ, recorrer el sub#rbol izquierdo 5asta llegar a una 5oja& AJ, recorrer el sub#rbol derec5o 5asta llegar a una 5oja& KJ, consultar la ra$z& El m3todo de ]ac^son es un m3todo de representacin de programas en %orma de #rbol ( que se denomina diagrama arborescente de ]ac^son& Consta de las siguientes partes* Defnicin detallada de los datos de E/S, inclu(endo los arc5ivos lgicos utilizados& Representacin del proceso o algoritmo& )a simbolog$a utilizada en este m3todo se puede describir como el uso de rect#ngulos que tienen los siguientes aspectos* 4ccin 7ecisin -epeticin )a lectura del diagrama generado se 5ace en preorden ( la representacin de un algoritmo se basa en los siguientes tres puntos* Un programa se representa por un solo diagrama en el que se inclu(en todas las operaciones necesarias para solucionar el problema& )a %orma para conectar dos p#ginas es mediante la palabra DprocesoE encerrada en un rect#ngulo ( con un n,mero o nombre& 9odo diagrama comienza con un rect#ngulo en cu(o interior .gura el nombre del programa& !e 5a de procurar, para %acilitar la lectura, que el diagrama que generemos sea lo m#s sim3trico posible& 8/-* en el rect#ngulo de condicin se escribir# o bien en n,mero de veces que se va a repetir el bucle o bien el nombre de la variable contador, su valor inicial, su valor .nal ( el incremento& Ej&* queremos que la condicin se repita R veces& 6?E:9-4!O1<?)E* en el rect#ngulo de Condicin se escribir# la condicin que rige el bucle& <4!94* En el rect#ngulo de Condicin se pondr# D5astaE ( la condicin& 'or ej&* El m3todo de C5apin se trata de una %orma de representar programas como un bloque compacto que consta de dos cosas* 7e.nicin detallada de los datos de EO!, inclu(endo los arc5ivos lgicos utilizados& -epresentacin del proceso o algoritmo& !u simbolog$a se basa en el empleo de rect#ngulos ( la lectura del gr#.co generado se 5ace de arriba a abajo& )a representacin del algoritmo se basa en los siguientes puntos* Un programa se representa por un solo diagrama en el que se inclu(en todas las operaciones a realizar para la resolucin del problema& 9odo diagrama comienza en un rect#ngulo en el que su parte superior ( %uera de 3l .gura el nombre del programa& Estructura secuencial2 !on como un conjunto de acciones secuenciales, donde 4BC7 se ejecutar#n de arriba a abajo& Estructura alternati/a2 'uede ser* simple o de una opcin, doble o m,ltiple& Estructura iterati/a2 8U:746E:9/ 7E '-/0-464C?G: (K) El dise;o descendente o toc"do2n consiste en una serie de descomposiciones sucesivas del problema inicial que reciben un re.namiento progresivo del repertorio de instrucciones que van a %ormar parte del programa& !us objetivos son* implifcacin del problema 3 de los subpro-ramas resultantes de cada descomposicin& Pro-ramacin independiente de cada uno de los mdulos, incluso por di%erentes personas& implifcacin de la lectura 3 el mantenimiento del programa .nal& Un programa dise;ado en 9oc"7o2n tiene dos partes bien di%erenciadas* Pro-rama principal2 7escribe la solucin completa del programa ( consta principalmente de llamadas a subprogramas& Estas llamadas son indicaciones al procesador de que debe continuar la ejecucin del programa en el comienzo del subprograma llamado, regresando al punto de partida una vez que lo 5a(a concluido& 4dem#s, puede contener operaciones e instrucciones primitivas del lenguaje, ( sentencias de control ejecutables por el procesador& 7ebe ser breve& ubpro-ramas2 8iguran agrupados en un lugar distinto al programa& !u estructura es parecida a la del programa principal, salvo en el encabezamiento ( la .nalizacin& [ste puede tomar sus propios subprogramas correspondientes& )a %uncin de un subprograma es la de resolver una parte del problema& [stos se dividen en* ubpro-ramas internos2 !on aquellos subprogramas que est#n localizados en el mismo arc5ivo que el programa principal& ubpro-ramas externos2 !on aquellos que .guran %$sicamente separados del programa principal, es decir, en distintos .c5eros %uente& !e pueden compilar independientemente ( tambi3n los podemos encontrar en un lenguaje di%erente del programa principal& )os objetos manipulados por un programa se clasi.can seg,n su porcin de programa (Oo subprogramas en que son de.nidos ( conocidos& )os objetos globales son los declarados en el programa principal, cu(o #mbito se e+tiende al mismo ( a todos sus subprogramas& !e pueden ver desde cualquier parte del programa& )os objetos locales de un subprograma son los declarados en dic5o subprograma, cu(o #mbito est# restringido a 3l mismo ( a los subprogramas declarados en 3l& !lo se puede ver dentro de 3l& Cada vez que se llama a un subprograma, los datos de entrada le son pasados por medio de determinadas variables, ( an#logamente, cuando termina la ejecucin los resultados regresan mediante otras o las mismas unidades& )os par#metros pueden ser* Parmetros formales2 !on variables locales de un subprograma utilizadas para la recepcin ( el env$o de los datos& !iempre son .jos& Parmetros actuales2 !on las variables ( datos enviados en cada llamada de subprograma por el programa o subprograma llamante& !on los valores ( cambian& !e denomina paso de par#metros al proceso de transmisin ( recepcin de datos ( resultados mediante variables de enlace& 'uede realizarse de dos modos* Paso por /alor o copia2 Cuando pasamos una variable a un subprograma, realmente le pasamos una copia de su valor, conserv#ndose el valor de la variable aunque se modi.que dentro del subprograma a la salida de 3ste& Paso por referencia o /ariable2 Cuando le enviamos una variable, le pasamos la direccin de 3sta& En este caso, el cambio que se produzca en el programa aparecer# reVejado al acabar la ejecucin de 3ste& Un parmetro actual pasado por valor es un dato de entrada al subprograma, ( se copia en su par#metro %ormal correspondiente& No se proporciona la variable al subprograma sino slo su contenido. Un parmetro actual pasado por referencia es una variable del programa llamante, para el programa llamado, el cual coloca un resultado en esa variable, que queda a disposicin del llamante una vez 5a concluido la ejecucin del programa& 'roporciona su direccin de memoria al par#metro %ormal asociado, pudiendo modifcarla ! dejando en ellas los valores "ue va a devolver. Estos par#metros suponen un a5orro de memoria, puesto que la variable local no e+iste realmente, sino que se asocia a la global en cada llamada& Una %uncin es un subprograma que recibir# una serie de par#metros en la posicin ( de los tipos indicados en su lista de par#metros ( que va a devolver un ,nico valor de un tipo determinado que ser# el tipo de la %uncin& )os procedimientos son un tipo de subprogramas que recibir#n una serie de par#metros o argumentos en la cantidad, tipo ( posicin que indique su lista de par#metros realizar# un determinado proceso ( no devolver# ning,n resultado de modo e+pl$cito& Es para cuando queremos modi.car o devolver m#s de un valor o variable u operar con una estructura de datos compleja& )as %unciones en C son el bloque principal en la construccin de programas& )a %orma general es* Especi.cador_de_tipo nombre_de_%uncin (lista_de_par#metros) ` asecuencia de accionesb c El especi.cador_de_tipo es el tipo de dato que devolver# la %uncin mediante la sentencia DreturnE& !i no lo especi.camos, el compilador asume un tipo de vuelta concreto& )a lista_de_par#metros es la lista de nombre de variables separadas por comas ( con sus tipos asociados que reciben los valores de loa par#metros o argumentos cuando se llama a una %uncin& 'uede no tener ning,n par#metro, ( entonces pondremos DvoidE& -eturn tiene dos usos importantes* +or<ar una salida inmediata de la %uncin en la que nos encontramos& $e/ol/er un /alor, generalmente, calculado en la %uncin& <a( dos %ormas de cmo una %uncin puede terminar su ejecucin ( que 3sta devuelva al sitio desde el que se la llam* (odo impl=cito2 !e produce al llegar a la llave que cierra el cdigo de la %uncin& (odo expl=cito2 'orque tienen que devolver un valor o para simpli.car el cdigo de la %uncin ( 5acerlo m#s e.ciente permitiendo varios puntos de salida& 9odas las %unciones, e+cepto void, devuelven un valor& !i la %uncin no es especi.cada como DvoidE ( no se especi.ca un valor de vuelta, entonces el valor devuelto por la %uncin queda t3cnicamente inde.nido& <a( varios tipos de %unciones* +unciones computacionales& 7ise;adas para operar con sus argumentos ( devolver un valor basado en esos c#lculos& !on aquellas %unciones que manipulan la in%ormacin ( nos devuelven un valor que indica ,nicamente el 3+ito o %racaso de tal manipulacin& Como eje* la %uncin de librer$a f#rite() que sirve para escribir en un .c5ero& !on %unciones que no tienen un valor de vuelta e+pl$cito ( son estrictamente de tipo procedimiento sin generar un valor& 'or ejemplo, la %uncin srand() que inicializa la semilla del generador de n,meros aleatorios& 4lgunas %unciones devuelven algo de todas %ormas, aunque no sea de inter3s, como por ejemplo printf que devuelve el nJ de caracteres escritos& Cuando se utiliza una sentencia RE$%RN en main, el programa devuelve un cdigo de terminacin al proceso que lo llam, ( debe ser un entero& En sistemas operativos como 6!"7/! o /!OA, un valor de vuelta X indica que el programa 5a terminado normalmente& 9odos los dem#s indica que se 5a producido alg,n error& )as reglas de #mbito de la %uncin son reglas que controlan si un %ragmento de cdigo conoce o tiene acceso a otro %ragmento de cdigo o datos& Cada %uncin es un bloque de cdigo ( es privado a esa %uncin sin poder accederse a 3l a menos que se llame a esa %uncin& El cdigo que comprende el cuerpo de la %uncin est# oculto al resto del programa ( no se puede acceder ni modi.car& !e denominan variables locales a las variables de.nidas de cada %uncin& E+isten a partir de que entra en la %uncin ( se destru(e cuando sale de ella, es decir, que no conservan su valor entre dos llamadas consecutivas, a e+cepcin de cuando una variable local se declara con el modi.cador Dstatic&& Cuando es as$, el compilador la trata como s$ %uera global, salvo que slo sigue siendo visible en el #mbito de la %uncin en la que se declar& :o se puede de.nir una %uncin dentro de otra %uncin& 'ara usar argumentos se deben declarar variables que acepten los valores de los argumentos& 9ambi3n se denominan par#metros, los cuales se comportan como variables locales de la %uncin, cre#ndose al entrar en 3sta ( destru(3ndose al salir de ella& !e utiliza la llamada por valor para pasar argumentos& Una %uncin por valor se la pasa copia del valor de la variable& Es posible causar una llamada por re%erencia pasando un puntero al argumento& El paso de arra(s o matrices como argumentos es una e+cepcin al convenio de paso por valor que se tiene en C& Cuando se usa un arra( como argumento de una %uncin slo se pasa la direccin de la matriz, no una copia de los datos de la matriz entera& C soporta tres argumentos, pero slo dos son de.nidos por 4:!??* argc ( argv& 'ermiten pasar in%ormacin al programa de C mediante la l$nea de comandos& Un argumento de l$nea de comandos es una in%ormacin que sigue al nombre del programa en la l$nea de comandos del sistema operativo& El par#metro argc contiene el nJ de argumentos de la l$nea de rdenes, o sea, el nJ de par#metros que podemos poner& El par#metro argv es un puntero a un arra( de punteros de caracteres& Cada elemento del arra( apunta a un argumento de la l$nea de rdenes& 9odos los argumentos de esta l$nea son tratados como cadenas de caracteres& Un prototipo de %uncin es una copia pr#cticamente literal de la cabecera de la declaracin de 3sta que se sit,a generalmente al principio de los .c5eros C ( %orzosamente antes de la I\ llamada a esa %uncin& 9iene dos objetivos %undamentales* 'dentifcar el tipo de vuelta de la %uncin para que el compilador pueda realizar una generacin de cdigo correcta& Especifcar el tipo ( nJ de argumentos que utiliza la %uncin& !u %orma es* tipo nombre %uncin (lista de argumentos) 5ttp*OO5tml&rincondelvago&comO%undamentos"de"la"programacion&5tml 2.3 Diaramas de flu!o 424 $%AG#A(A 42>24 $%AG#A(A $E E&!#A$A?P#"CE"?A)%$A SIMBOLO#IA 8iguras para la representacin del algoritmo en un diagrama de Entrada" 'roceso"!alida 5roceso 1ntrada o 8alida ESTRUCTURA Ejemplos #ealice un al-oritmo que con/ierta dlares a pesos $atos de entrada Proceso $atos de salida $lares (ultiplicar la cantidad Pesos de dlares por 442@@ pesos
Capturar los dlares (ultiplicar la cantidad de dlares por 442@@ pesos (ostrar los pesos 42>26 $%AG#A(A $E +)'0" $ia-rama de +lujo* -epresentacin gra.ca utilizando .guras en %orma de caja, que se usan seg,n corresponda a cada paso del algoritmo& Estas .guras se conectan mediante Vec5as, indicando la secuencia a seguir entre los pasos& SIMBOLO#IA 8iguras para la representacin del algoritmo en un diagrama de 8lujo >nicio N Jin Dolares Multiplicar dolares por pesos Pesos onector ESTRUCTURA Elabore un al-oritmo que me solucione el problema de encontrar el rea de un rectn-ulo2 Conociendo los datos de entrada; el proceso AclculosB 3 los datos de salida 3a se puede elaborar el al-oritmo ms fcilmente* Pseudocodi-o 42%nicio 62Conocer la base del rectn-ulo >2Conocer la altura del rectn-ulo 52(ultiplicar la base por la altura C2El resultado de la multiplicacin es el rea del rectn-ulo D2+in $%AG#A(A $E +)'0" $E E!E A)G"#%!(" inicio base altura Area=base*altura fin ondicio n >mpresora Jlec"as #ealice un al-oritmo que obten-a el rea 3 el per=metro de una circunferencia2 +rmula para el per=metro* PE6 x r x pi +rmula para el rea* AEpi x r x r 7atos de entrada 'roceso 7atos de salida radio !ustituir las variable 6ostrar el #rea ( pi en las A %mulas, para el per$metro #rea ( el per$metro Conociendo los datos de entrada; el proceso AclculosB 3 los datos de salida 3a se puede elaborar el al-oritmo ms fcilmente* 42%nicio 62Conocer el /alor del radio >2Conocer el /alor de pi 52(ultiplicar el radio por 6 por pi para obtener el per=metro C2(ultiplicar radio por radio por pi para obtener el rea D2(ostrar el per=metro 3 el rea del circulo F2+in $ia-rama de +lujo nicio ngre sar el valor de pi Per metro =2xrx pi Per metr o Area Fin Area = pixrxr ngre sar el valor de radio $EA##"))" $E ")'C%"&E !area >2 Acti/idades en parejas represent#ndolos en diagramas de Vujos Ba;ar al perro Consideraciones* si tiene perro ( en su casa 5a( jabn, toallas, agua, etc& Escribir ( enviar una carta Consideraciones* tiene que enviar una tarjeta de %elicitaciones a un viejo amigo& :o tiene la tarjeta, ni los timbres& En su casa tiene sobres, papel ( plumas& 'uede depositar la carta en un buzn o en la o.cina de correos& 'reparar un emparedado Consideraciones* 9iene 5ambre& El emparedado ser# de tipo tradicional (jamn ( queso)& En su casa no 5a( jamn ni queso, pero tiene el pan ( los dem#s ingredientes necesarios& 'or si desea calentarlo, si tiene gas ( estu%a& 4dornar una #rbol de navidad Consideraciones* (a es navidad, (a compro el #rbol ( no importa si es natural o arti.cial)& En su casa 5a( todos los adornos necesarios& -ealice un algoritmo que convierta dlares a pesos Elabore un algoritmo que me solucione el problema de encontrar el #rea de un rect#ngulo& -ealice un algoritmo que obtenga el #rea ( el per$metro de una circun%erencia& 8rmula para el per$metro* 'CA + r + pi 8rmula para el #rea* 4Cpi + r + r 0ttp@99HHH.anelfire.com9t0eforce9traba!o9traba!o.0tm 1. Introduccin Un Diagrama de Flujo representa la esquematizacin grfica de un algoritmo , el cual muestra grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema . Su correcta construccin es sumamente importante porque , a partir del mismo se escribe un programa en algn Lenguaje de Programacin. Si el Diagrama de Flujo est completo y correcto ,el paso del mismo a un Lenguaje de Programacin es relativamente simple y directo. Es importante resaltar que el Diagrama de Flujo muestra el sistema como una red de procesos funcionales conectados entre s por " Tuberas " y "Depsitos" de datos que permite describir el movimiento de los datos a travs del Sistema. Este describir : Lugares de Origen y Destino de los datos , Transformaciones a las que son sometidos los datos, Lugares en los que se almacenan los datos dentro del sistema , Los canales por donde circulan los datos. Adems de esto podemos decir que este es una representacin reticular de un Sistema ,el cual lo contempla en trminos de sus componentes indicando el enlace entre los mismos. En el presente Trabajo se representar a travs de un Diagrama de Flujo el Procedimiento que debe efectuarse para calcular el pago de los trabajadores de una Empresa . 2. Situacin *lanteada A continuacin se representara a travs de un Diagrama de Flujo el procedimiento utilizado para el calculo de pago de los trabajadores por La Empresa FrutiPack , C.A. , la cual se encarga de elaborar, procesar y empacar jugos de excelentes calidad para la Regin Centro Occidental del Pas. Para estos clculos se debe tomar en cuenta lo siguiente : Sueldo Bsico y las horas extras trabajadas . Para el pago de las horas extras se tienen en cuenta adems la categora del trabajador , la cual se muestra a continuacin : Cada trabajador puede tener como mximo 10 horas extras , si tienen ms slo se les pagarn 10. A los trabajadores con categora mayor a 4 no se les debe pagar horas extras. Datos SUE : Es una variable Real que expresa el sueldo bsico del trabajador. CATE : Es una variable de tipo entero , que expresa la categora del trabajador . 1 < CATE < CATE 8. HE : Es una variable de tipo entero , que expresa las horas extras trabajadas por el trabajador. PHE : Es una variable de tipo real. Almacena el costo de la hora extra , teniendo en cuenta la categora del trabajador. NSUE : Es una variable de tipo real . Almacena lo que hay que pagarle al trabajador teniendo en cuenta su sueldo y las horas extras trabajadas. Diagrama de Flujo nicio SUE , CATE , HE CATE PHE = 15.000 PHE = 25.000 PHE = 30.000 PHE = 40.000 PHE = 0 S NO HE >10 NSUE=SUE+10*PHE NSUE =SUE+HE*PHE NSUE
3. Biblioraf.a - Manual de Normas y Procedimientos .Empresa FrutiPack , C.A. http://www.monografias.com/trabajos12/diflu/diflu.shtml Diagrama# de *luo @n diagrama de flujo es una representacin grfica de un algoritmo o de una parte del mismo! Los diagramas de flujo audan en la comprensin de la operacin de las estructuras de control ;$i! %ientras<! La (entaja de utilizar un algoritmo es que se lo puede construir independiente mente de un lenguaje de programacin, pues al momento de lle(arlo a cdigo se lo puede hacer en cualquier lenguaje! Aichos diagramas se construen utilizando ciertos smbolos de uso especial como son rectngulos, diamantes, (alos, peque.os crculos, estos smbolos estn conectados entre s por flechas, conocidas como lneas de "lu&o! 0 continuacin se detallarn estos smbolos! Terminal! Hepresenta el inicio fin de un programa! Proce#o! -on acciones que el programa tiene que realizar Deci#in! /ndica operaciones lgicas o de comparacin, as como e=presiones !ntrada 0 "alida! ?os permite ingresar datos, de un perifrico, as como mostrarlos "alida! Es usado para mostrar datos o resultados Conector! -e coloca al principio fin de un pedazo de programa, enlaza dos partes cualquiera de un programa 12nea de *luo o indicador de direccin! Hepresentaremos el correspondiente diagrama de flujo del ejemplo #!2 http://www.geocities.com/inf135/tutc/Tema02.htm#_Toc523213550 2.) *seudocodios P#eudocdigo "seudocdigo Es un lenguaje artificial e informal que auda a los programadores a desarrollar algoritmos! El "seudocdigo es similar al lenguaje cotidianoE es cmodo amable con el usuario, aunque no es realmente in (erdadero lenguaje de computadora! ?o se ejecutan en las computadoras mas bien sir(en para audar al programadora razonar un programa antes de intentar escribirlo en alg1n lenguaje! @n programa ejecutado en "seudocdigo puede ser fcilmente con(ertido en un programa en C66, si es que esta bien elaborado! "or ejemplo supongamos que la nota para aprobar un e=amen es de %3! El enunciado en "seudocdigo sera4 Si calificacin >= 60 entonces Mostrar "Aprobado" FinSi El mismo enunciado se puede escribir en C66 como4 if ( calif >= 60 ) cout << "Aprobado"; ?tese que la operacin de trasladar el "seudocdigo a cdigo fuente, se lo realiza con el mnimo esfuerzo, no se necesita de un maor anlisis! Lle(ando el Ejemlo#!2 a "seudocdigo! -e puede refinar ms aun el algoritmo4 /nicializar (ariables! /nicializar los aprobados ;aprobados< en 3 /nicializar los reprobados ;reprobados< en 3 /nicializar el n1mero de estudiantes ;estudiantes< en 3 /ntroducir las primeras 23 calificaciones contar los aprobados los reprobados! Mientras ;Khile< el contador estuantes es menor o igual que 23 entonces
/ntroducir el siguiente resultado de e=amen -i el estudiante aprob
-umar 2 a aprobados
-i no
-umar 2 a reprobados
Bin-i -umar 2 al contador estudiantes BinMientras /mprimir un resumen de los resultados de e=menes decidir si se debe aumentar o no la colegiatura! /mprimir el n1mero de aprobados /mprimir el n1mero de reprobados -i estudiantes es ms $ entonces
/mprimir N0umentar la colegiaturaN!
Bin-i -implificando el problema queda escrito en "seudocdigo de la siguiente forma4 El problema anterior escrito en C66 "ttpKNNGGG.+eocities.comNin#17CNtutcNTema02."tmhPTocC27217CC0 Pse!&oc7&i3o 1s un len+uaje de especi#icacin de al+oritmos. 1l uso de tal len+uaje "ace el paso de codi#icacin #inal *esto es, la traduccin a un len+uaje de pro+ramacin, relativamente #cil.
1l pseudocdi+o naci como un len+uaje similar al in+l(s $ era un medio representar bsicamente las estructuras de control de pro+ramacin estructurada. 8e considera un primer borrador, dado que el pseudocdi+o tiene que traducirse posteriormente a un len+uaje de pro+ramacin. abe sealar que el pseudocdi+o no puede ser ejecutado por una computadora.
/a ventaja del pseudocdi+o es que en su uso en la plani#icacin de un pro+rama, el pro+ramador se puede concentrar en la l+ica $ en las estructuras de control $ no preocuparse de las re+las de un len+uaje espec#ico. 1s tambi(n #cil modi#icar el pseudocdi+o si se descubren errores o anomalas en la l+ica del pro+rama, adems de todo esto es #cil su traduccin a len+uajes como pascal, 4.4/, , J4:T:A) o .A8>.
1l pseudocdi+o utiliza para representar las acciones sucesivas palabras reservadas en in+l(s *similares a sus "omnimos en los len+uajes de pro+ramacin,, tales como star+begin+ end+ stop+ if,t-en,else+ .-ile+ repeat, until/*etc
0ecuencia >nicio accin1 accin2 K accin n Jin
"ecisin Sim*le si condicin entonces accin1 accin2 K accin n Doble si condicin t"en accin1 accin2 K en caso contrario accin1 acci2
Iteraccin 0i.a para var* 1ntera inicial "asta final "acer accin1 accin2 K accin n
Co"&icio"al al i"icio mientras condicin "acer accin1 accin2 K accin n
Co"&icio"al al %i"al :epetir accin1 accin2 K accin n 0asta que condicin
0eleccin casos selector de valor1 K accin1 accin2
valor2 K accin1 accin2
valor n K accin1 accin2
E.e-cicio < 8e requiere pre+untar dos valores, $ a continuacin o#recer un men con las operaciones bsicas *R, D, Q, N,. Iespu(s de presentar el resultado se o#recer la posibilidad de una nueva operacin.
I"icio Re*e$i- esc-ibi-*i5rimer valor K Z , lee-*<, esc-ibi-*i8e+undo valor K i, lee-*L, esc-ibi-*i1, 8uma i, esc-ibi-*i2, :esta i, esc-ibi-Ei7, Bultiplicacin i, esc-ibi-*i?, Iivisin i, esc-ibi-*iOu( operacin deseas realizar [ K i, lee-*45>4), casos 45>4) &e 1 K :18!/TAI4 <RL 2 K :18!/TAI4 <DL 7 K :18!/TAI4 <QL ? K si LS0 e"$o"ces esc-ibi-*i 1rror i, :18!/TAI4 0 e" caso co"$-a-io :18!/TAI4 <NL esc-ibi- *i:esultado K i,:18!/TAI4, esc-ibi-*iIeseas otro clculo K d8N)e i, lee-*45, Has$a !e :18 S i)Z 0i"
1ercicio 2 5re+untar un nombre $ repetirse en pantalla tantas veces como se desee. *pre+untar cantidad de repeticiones,, indicando el nmero de repeticin.
Decla-aci7" &e ;a-iables Ca&e"a < nom e"$e-o < E, n
>nicio esc-ibi-*i)ombre K i, lee-*nom, esc-ibi-*iuntas veces quieres repetirlo [ K i, lee-*n, *a-a E 1 +as$a n +ace- esc-ibi-*EZ.D i, nom, Jin "ttpKNNGGG.itlp.edu.mENpublicaNtutorialesNal+oritmosNtemaPC2."tm Unidad 3. 4undamento# del 1enguae 3.1 Desarrollo 0istrico del lenua!e estructurado 1l len+uaje estructurado se base enK 1, la l+ica estructurada, o en instrucciones que se or+anizan en procesos a+rupados $ cclicosA $ en 2, planteamientos sencillos del idioma espaol tales como sumar, multiplicar, mover $ otros similares. 1l ejemplo anterior de la ompaa de 8e+uros Jortress "ace uso del len+uaje estructurado, esto lo podemos observar en la tabla C.2.1. 1n ella se ordenan con una secuencia las re+las de decisiones $ a todo lo lar+o se "ace uso de la clusula *8j D 1)T4)18D I1 /4 4)T:A:>4,. TABLA 6./.1< E)EMPLO DE LA COMPAIA DE SE#UROS 0ORTRESS alcular la prima base >J la construccin de tabique T01) deducir 10 k del total 1)I>J >J se eli+e la opcin de reemplazo T01) a+re+ar 10k de la base al subtotal 1)I>J >J el propietario eli+e un deducible de f100 T01) aumentar 1Ck del subtotal al total 1)I>J >J la casa cuenta con alarma T01) deducir Ck del subtotal ajustado al subtotal ajustado 1)I>J on el #in de escribir en len+uaje estructurado, es conveniente ape+arse a las si+uientes convencionesK 1. 1Eprese toda la l+ica, en t(rminos de estructuras secuenciales, estructuras de decisin, estructuras case *decisin mltiple, o iteraciones *como ejemplo, v(ase la #i+ura C.2.1,. 2. !tilice $ aprovec"e t(rminos tales comoK >J, T01), 1/81, I4, I4 30>/1, I4 !)T>/, $ 51:J4:B *8j, 1)T418, I1 /4 4)T:A:>4, 1%1!T1, 1%1!T1 B>1)T:A8, 1%1!T1 0A8TA O!1 $ :1A/>1,. 7. 5ara mostrar con claridad la jerarqua *anidando,, utilice san+ras en los bloques de proposiciones. ?. uando la palabra o #rase utilizadas "a$an sido de#inida en un diccionario de datos, destaque tales palabras o #rases para indicar que tienen una connotacin reservada $ especializada. C. 8ea cuidadoso cuando utilice los operadores l+icos -$- *and, $ -o- *or,, evitando la con#usin al distin+uir entre -ma$or que- e -i+ual que- de relaciones similares. Aclare los planteamientos l+icos en el momento $ no espere "asta la etapa de codi#icacin del pro+rama. 0ttp@99HHH.itlp.edu.mB9publica9tutoriales9analisis9+2.0tm 3.2 1structura eneral de un prorama !#tructura general de un programa en C5 Los programas en CR pueden constar de uno o (arios archi(os! Cada archi(o puede contener uno o (arios espacios de nombres! @n espacio de nombres puede contener tipos como clases, estructuras, interfaces, enumeraciones delegados, adems de otros espacios de nombres! 0 continuacin, se muestra el esqueleto de un programa en CR que contiene todos estos elementos! // A skeleton of a C# program using System; namespace MyNamespace1 { class MyClass1 { } struct MyStruct { } interface IMyInterface { } delegate int MyDelegate(); enum MyEnum { } namespace MyNamespace2 { } class MyClass2 { public static void Main(string[] args) { } } } 0ttp@99msdn.microsoft.com9librar%9spa9default.aspS urlV9librar%9S*"9cscon90tml9vclrfeneralstructureofcs0arpproramQp.asp Es$-!c$!-a 3e"e-al &e !" *-o3-ama. 1.1., Cabece-aD &ecla-acio"es ? c!e-*o &el *-o3-ama. 1l esquema +eneral de un pro+rama en 5A8A/ es el que si+ueK PRO#RAM nombre *>)5!T,4!T5!T,A CONST (d7eclaracin de constantesd) TMPE (d7eclaracin de tipos de usuariod) VAR (d7eclaracin de variables* datos, resultados ( resultados intermediosd) PROCEDURE nombrePproc1 .... (d7eclaracin de procedimientos ( %uncionesd) 0UNCTION nombreP#unct1 .... BE#IN *Qomienzo de instruccionesQ, END. *QJin del pro+ramaQ, /a cabecera del pro+rama es obli+atoria $ es donde se indica el nombre del pro+rama en cuestin. /a cabecera siempre empieza con la palabra 5:4F:AB. /a parte de declaraciones $ de#iniciones es la zona del pro+rama donde se de#inen $ declaran todos los elementos *constantes, tipos, variables, #unciones $ procedimientos, con los que va a trabajar el pro+rama. 8e trata de una parte opcional *puede no eEistir, pero, si eEiste, debe de aparecer al principio del pro+rama, justo tras la cabecera del mismo $ en el orden apropiado. 1l cuerpo del pro+rama es la zona donde se encuentran las instrucciones ejecutables. 1l cuerpo del pro+rama siempre empieza con la palabra c.1F>)c $ acaba con c1)I.c. I1/A:A>4)18 A.11:A !1:54 Ie esta #orma, un pro+rama en 5A8A/, "a de tener, como mnimo, un encabezamiento $ un bloque o cuerpo con al menos una instruccin, por ejemploK PROGRAM Ejemplo (Input,Output); BEGIN write('HOLA'); (* CUERPO *) END. 1l iAZ es el carcter separador de sentencias o declaraciones sucesivas. /as sentencias o instrucciones tienen #ormato libre, por lo que pueden aparecer en cualquier lu+ar de una lnea. /o que no se puede dividir entre lneas son los nmeros ni los nombres constantes, variables, procedimientos etc. )tese que i.1F>)Z nunca va se+uido de iAZ $ que todo pro+rama debe terminar con un i.Z despu(s del i1)IZ #inal. !n ejemplo sencillo de pro+ramaK PROGRAM SUMA(Input,Output); { CABECERA } VAR A,B,C:INTEGER; { DECLARACIONES } BEGIN { CUERPO DEL PROGRAMA } read(A); read(B); C:=A+B; write(C) END. Estructura de un programa /a estructura +eneral de un pro+rama en 5ascal es la si+uienteK program identificador; {nombre o cabecera de programa se puede omitir} 1ses identificadores; label lista de etiquetas; const definiciones de constantes type declaraciones de tipos de datos definidos por el usuario var declaraciones de variables procedure definiciones de procedimientos function definiciones de funciones begin {cuerpo del programa o programa principal sentencias de los programas end. 1%1B5/4 pro+ram "olaA uses crtA t$pe tipoPsaludo S strin+A var saludo K tipoPsaludoA be+in clrscrA saludo KS c"olacA Griteln*saludo,A end. *24:2"-"@ Es una coleccin de instrucciones que indican a la computadora que debe hacer. Un programa se denomina software, por lo tanto , programa, software e instruccin son sinnimos. Co"ce*$o &e *-o3-ama !n pro+rama de computadora es un conjunto de instrucciones que producirn la ejecucin de una determinada tarea. 1n esencia, un pro+rama es un medio para lle+ar a un #in. 1l #in ser normalmente de#inido como la in#ormacin necesaria para solucionar un problema. 1n conclusin pro+rama es el proceso para solucionar un problema. 1l desarrollo de un pro+rama requiere las si+uientes #asesK 1. Ie#inicin $ anlisis del problema 2. Iiseo de al+oritmo Iia+rama de #lujo Iia+rama ) _ 8 5seudo cdi+o. 2. odi#icacin del pro+rama. 7. Iepuracin $ veri#icacin del pro+rama. ?. Iocumentacin. C. Bantenimiento. Pa-$es co"s$i$!$i;as &e !" *-o3-ama 1ntrada salida 1l pro+ramador debe establecer el conjunto de especi#icaciones que debe contener el pro+ramaK 1ntrada salida $ al+oritmos de resolucin que incluirn las t(cnicas para obtener las salidas a partir de las entradas. 8e debe establecer de donde provienen las entradas al pro+rama es decir los dispositivos de entrada teclado, disco. /a entrada de datos Soperacin de lectura de datos o accin de leer. /as salidas de datos se deben presentar en dispositivos de salida como impresora, monitor o disco. 4peracin de salida de datos S escritura o accin de escribir >nstrucciones $ tipos de instrucciones 1l proces de al+oritmo o de codi#icacin del pro+rama consiste en de#inir las acciones o instrucciones que resolvern el problema. /as instrucciones se deben escribir $ almacenar en memoria en el mismo orden en el que "an de ejecutarse es decir en secuencia. !n pro+rama puede ser lineal o no lineal, el lineal es el que las instrucciones se en secuencia sin bi#urcacin, ni lineal si tienen bi#urcacin, 5ro+rama 4 al+oritmo Ti*os &e i"s$-!ccio"es /as acciones bsicas que se pueden implementar de manera +eneral en un al+oritmo $ que esencialmente soportan todos los len+uajes. *son independientes del len+uaje, a, instrucciones de inicioN#in b, instrucciones de asi+nacin c, instrucciones de lectura d, instrucciones de escritura Tipos de instruccin pseudo cdi+o en in+les pseudo cdi+o en espaol omienzo de proceso bejn >nicio Jin de proceso end #in 1ntrada read leer 8alida Grite escribir Asi+nacin A C A C I"s$-!ccio"es &e asi3"aci7" /a operacin de asi+nacin es el modo de darle valores a una variable se representa con el operador la operacin de asi+nacin se conoce como instruccin o sentencia de asi+nacin en len+uaje de pro+ramacin. /a #lec"a se sustitu$e en al+unos len+uajes con el si+no S *.A8>, J4:T:A), 1jemplos A C /a accion de asi+nar es destructiva $a que el valor que tuviera la variable antes se perderia. A 21 A 1C A C 1l valor que quedara 8erra C los otros "an desaparecido. /as acciones de asi+nacin se clasi#ican se+n sea el tipo de eEpresiones en aritm(ticas, l+icas $ de caracteres . Asi3"aci7" a-i$mG$ica /a eEpresin que se evala es de tipo aritm(tico AB) 7R1?R@ 8e evala la eEpresin $ se asi+na a la variable AB), es decir ser i+ual a 2C T1:1 1?.CR@ 8e evalan las eEpresiones en la tercera accin T1:2 0.'CQ7.? 8e dividen los resultados de cada eEpresin $ B1I>A T1:1NT1:2 $ se asi+na a la variable B1I>A, Asi3"aci7" l73ica /a eEpresin que se evala es de tipo l+ico. 1jemplo B @TC 8u valor l+ico es verdadero. Asi3"aci7" &e ca-ac$e-es /a eEpresin que se evala es de tipo carcter < i12 de 4ctubre de 16?2Z I"s$-!ccio"es &e lec$!-a &e &a$os 1sta instruccin lee datos de al+n dispositivo de entrada a, leer )!B1:4, 04:A8, TA8A ]cual ser el si+ni#icado de las instrucciones si+uientes[ /eer del terminal los valores )!B1:4, 04:A8, TA8A. Arc"ivndolos en la memoria si los tres nmeros que se teclean en respuesta a ala instruccin sonK 1272C, 72, 1200, si+ni#icara que se "an asi+nado a las variables esos valores $ equivaldra a la ejecucin de las instrucciones. )!B1:4 1272C 04:A8 72 TA8A 1200 I"s$-!ccio"es &e esc-i$!-a &e -es!l$a&os 1stas instrucciones se escriben en un dispositivo de salida. 8e asi+naron previamente valores a las variables A . . de manera queK A 100 . 200
700 8e imprimirn o visualizaran en la pantalla los valores 100, 200, 700. >nstrucciones de bi#urcacin 1l desarrollo lineal de un pro+rama se interrumpe cuando se ejecuta una bi#urcacin pueden ser se+n el punto del pro+rama a donde se bi#urca "acia delante o "acia atrs. /a bi#urcacin puede ser condicional o incondicionalK >ncondicionalK la bi#urcacin se da sin necesidad del cumplimiento de nin+una condicin. ondicionalK la bi#urcacin depende del cumplimiento de una determinada condicin. Eleme"$os b4sicos &e !" *-o3-ama 5alabras reservadas *inicio, #in, si, entonces... etc., >dennti#icadores *nombres de variables esencialmente, aracteres especiales *coma apostro#e, etc., onstantes =ariables 1Epresiones >nstrucciones B!cles !n bucle o lazo *loop, es un se+mento de un al+oritmo o pro+rama, cu$as instrucciones se repiten un numero determinado de veces mientras se cumple una determinada condicin , 8e debe establecer un mecanismo para determinar las tareas repetitivas. 1ste mecanismo es una condicin que puede ser verdadera o #alsa $ se comprueba una vez a cada paso o interaccin del bucle *total de instrucciones que se repiten en el bucle,. !n bucle consta de tres partesK D decisin D cuerpo del bucle D salida del bucle 1l bucle a continuacin es in#inito $a que las instrucciones *10 *2, *7, se ejecutaran inde#inidamente, pues no eEiste salida del bucle al no cumplirse una determinada condicin. 5ara ver ejemplo de bucle pulsa aqui B!cles a"i&a&os 1n un al+oritmo puede "aber varios bucles. 1stos pueden ser anidados o independientes. .ucles anidadosK cuando estn dispuestos de tal modo que unos son interiores a otros. 1jemplo aqu Co"$a&o-es !n contador es una variable cu$o valor se incremento o decrementa, !na #orma de controlar a un bucle es mediante un contador /os procesos repetitivos son la base del uso de las computadoras. 1n estos procesos se necesitan normalmente contar los sucesos o acciones internas del bucle, como pueden ser los elementos de un #ic"ero de interacciones a realizar por el bucle. 1l contador se muestra en el ejemplo si+uiente con la variable 4)T. 1ste es un dia+rama de #lujo para un al+oritmo que se desea repetir C0 veces. 1jemplo de contador Acumulador !n acumulado es una variable cu$a misin es almacenar cantidades variables resultantes de sumas sucesivas. :ealiza la misma #uncin que un contador con de#erencia de que el incremento o decremento de cada suma es variable en lu+ar de constante como en el caso del contador. 8e representa con la instruccin 8 8R), donde ) es una variable $ no una constante. Decisi7" o selecci7" uando se quiere especi#icar dos o mas caminos alternativos en un al+oritmos se deben utilizar estructuras de decisin o solucin. !na instruccin de decisin o seleccin evala una condicin $ en #uncin del resultado de esa condicin se bi#urca en un determinado punto.
]ondicin[ Accin 81 Accin 82 I"$e--!*$o-es !n interruptor o conmutador *sGits", a veces se les denomina indicador, o bandera *#la+, es una variable que puede tomar diversos valores a lo lar+o de la ejecucin del pro+rama $ que permite comunicar in#ormacin de una parte a otra del mismo. /os interruptores pueden tomar dos valores di#erentes 1 $ 0 *Ie a" su nombre interruptor prendido apa+ado, 1scritura de al+oritmos pro+ramasK !n al+oritmo consta de dos componentesK !na cabecera de pro+rama !n bloque al+oritmo. /a cabecera de pro+rama es una accin simple que comienza con la palabra al3o-i$mo. 1sta palabra estar se+uida por el nombre asi+nado al pro+rama completo. 1l bloque es el resto del pro+rama $ consta de dos componentes o seccionesK las acciones de declaracin u las acciones ejecutables. /as declaraciones de#inen o declaran las variables $ constantes que ten+an nombres. /as acciones ejecutablesK son las acciones que posteriormente deber realizar el computador cuando el al+oritmo convertido en pro+rama se ejecute. Cabece-a &el *-o3-ama o al3o-i$mo Todos los al+oritmos $ pro+ramas deben comenzar con una cabecera, Al+oritmo abecera del pro+rama 8eccin de declaracin 8eccin de acciones en la que se eEpresa el identi#icado o nombre correspondiente con la palabra reservada que seala el len+uaje. 1n los len+uajes de pro+ramacin la palabra reservada suele ser pro+ram. Decla-aci7" &e ;a-iables 1n esta seccin se declaran o describen todas las variables utilizadas en el al+oritmo, listndose sus nombres $ especi#icando sus tipos. 1sta seccin comienza con la palabra reservada ;a- *abreviatura de variable, $ tiene el #ormato ;a- /ista de variablesD1K tipoD1 . . lista de variablesD n K tipoD n Ionde cada lista de variables es una variable simple o una lista de variables separadas por comas $ cada tipo es uno de los tipos de datos bsicos *entero real c"ar, o boolean, Decla-aci7" &e co"s$a"$es "!mG-icas 1n esta seccin se declara todas las constantes que ten+an nombre su #ormato es Co"s$ 5iS7.1?1C62 TamanoS?7 0orasS&.C0 Decla-aci7" &e co"s$a"$es ;a-iables ca-4c$e- /as constantes de carcter simple $ cadenas de caracteres pueden ser declaradas en la seccin del pro+rama co"s$D al i+ual que las constantes num(ricas. 1jemK co"s$ 1strellaS ZQZ JraseS Z12de octubleZ BensajeS i"ola mi neneZ omentarios Iocumentacin /a documentacin de un pro+rama es el conjunto de in#ormacin interna $ eEterna al pro+rama que #acilitara su mantenimiento. "ttpKNNconceptodepro+rama.tripod.comNpa+inaprincipal."tm 3.3 *alabras reservadas /as *alab-as cla;e $ las *alab-as -ese-;a&as son utilizadas por el len+uaje $ no pueden ser usadas como nombres de identi#icadores Palab-as -ese-;a&as 1n el si+uiente cuadro se listan las palabras reservadas, aquellas que emplea el len+uaje %ava, $ que el pro+ramador no puede utilizar como identi#icadores. Al+unas de estas palabras le resultarn #amiliares al pro+ramador del len+uaje NRR. /as palabras reservadas sealadas con un arterisco *Q, no se utilizan. abstract boolean brea9 b$te b$valueQ case castQ catc" c"ar class constQ continue de#ault do double else eEtends #alse #inal #inall$ #loat #or #utureQ +enericQ +otoQ i# implements import innerQ instanceo# int inter#ace lon+ native neG null operatorQ outerQ pac9a+e private protected public restQ return s"ort satatic super sGitc" s$nc"ronized t"is t"roG transient true tr$ varQ void volatile G"ile /as palabras reservadas se pueden clasi#icar en las si+uientes cate+orasK Tipos de datosK boolea"D %loa$D &o!bleD i"$D c+a- 8entencias condicionalesK i%D elseD s>i$c+ 8entencias iterativasK %o-D &oD >+ileD co"$i"!e Tratamiento de las eEcepcionesK $-?D ca$c+D %i"all?D $+-o> 1structura de datosK classD i"$e-%aceD im*leme"$sD eH$e"&s Bodi#icadores $ control de accesoK *!blicD *-i;a$eD *-o$ec$e&D $-a"sie"$ 4trasK s!*e-, "!llD $+is. "ttpKNNGGG.sc.e"u.esNsbGebN#isicaNcurso%avaN#undamentosNintroduccionNprimero."tm 3.) 2epresentacin de datos b,sicos :epresentacin de Iatos mo ve la in#ormacin el 5!, en los distintos tipos de datosK 1. )meros enteros sin si+no 2. )meros enteros con si+no 7. aracteres ?. 5unto #lotante C. 1structuras &. Arre+los '. adenas #Pmeros enteros sin sino Tipos -unsi+ned- de :epresentan solamente la ma+nitud, en #orma binaria. 5ermiten almacenar nmeros desde 0 "asta *2gn, D 1 n se refiere al nmero de bits usados para representar )meros de 1 b$te sin si+noK 0 a 2CCK unsigned char )meros de 2 b$tes sin si+noK 0 a &CC7CK unsigned short )meros de ? b$tes sin si+noK 0 a al+o ms de ? mil millonesK unsigned long #Pmeros enteros con sino /os ms usuales, -inte+er-, -lon+-. !n bit *el ms si+ni#icativo, es usado para representar el si+no. uando es 0, el nmero es positivo uando es 1, el nmero es ne+ativo 5ermiten almacenar nmeros desde D2g*nD1,, "asta R*2g*nD1,, D 1 .$tesK D12@ a R12', GordsK D72'&@ a 72'&' 5ara propsitos de aprovec"ar el mismo circuito sumadorNrestador para nmeros con si+no o sin si+no, los nmeros ne+ativos se almacenan usando el complemento a dos Com*leme"$o a !"o 5rimer paso para el manejo de nmeros ne+ativos onsiste en complementar todos los bits de un nmero binario /os d+itos 0 se convierten en d+itos 1, $ los d+itos 1 se convierten en d+itos 0 3peraciones para obtenerlo )4T D l+ico <4: del nmero contra una constante equivalente a tantos 1s binarios como bits ten+a el nmero. Com*leme"$o a &os 5ara manejo de nmeros ne+ativos 8e obtiene sumndole uno al complemento a uno Tiene la propiedad de que si sumamos un nmero binario con su complemento a dos, nos da 0. 5or tanto, se puede interpretar como el inverso aditivo o sim(trico 2epresentacin de caracteres 1s una abstraccin de datosK 1l 5! solamente sabe procesar nmeros 4tros datos deben representarse en t(rminos num(ricos di+o de caracterK de#ine una tabla de correspondencias entre caracteres $ nmeros asi+nados 1.I>K Anti+uo, usado en Bain#rames. A8>>K es de ' bits *0 a 12',, en 5cs se eEtiende a 2C& !nicode *unto flotante 1s una representacin de los nmeros reales, basada en la notacin cient#ica. 1n decimal en la notacin cient#ica podemos escribirK 1.6 E 10 6 o en #orma corta 1.616 1n este caso, el si+no es positivoA la mantisa es el nmero que multiplica, es decir, el 1.6A $ el eEponente *al que se eleva la base, es 6. 1n binario, simplemente se asi+nan los bits correspondientes para cada uno de estos elementos, pero se usa la base 2 en vez de la base 10. !tiliza para su representacin 72 bits *palabra doble,, &? *palabra cudruple,. 1l #ormato corto utiliza los 72 bits de la si+uiente maneraK 1 bit para si+no, @ bits para el eEponente, 2? bits para la mantisa. 1l ran+o de los nmeros a representar, en los positivos, es desde 2gD12@ *1.1'C E 10gD 7@, a 2g12@ *7.?0 E 10g7@,. L equivalentemente, en los ne+ativos. 1n , el #ormato de 72 bits es conocido como tipo floatA el de &? bits, como double. 1structuras !na coleccin de datos cu$a or+anizacin se caracteriza por las #unciones de acceso que se usan para almacenar $ acceder a elementos individuales de datos. 0a$ tres #ormas distintas de eEaminar una estructura de datosK )ivel Abstracto o /+ico. 1n este nivel, se encuentra la or+anizacin $ especi#icacin de los procedimientos $ #unciones +enerales de acceso. )ivel de >mplementacin. 1n este nivel, se eEamina las #ormas de representacin de los datos en memoria $ cmo implementar los procedimientos. )ivel de Aplicacin. 1ste nivel presenta con precisin las relaciones entre los datos $ como son representados por las estructuras. As, para calcular el espacio que ocupa una estructura $ ver su #orma de almacenamiento, nos basta con concatenar en memoria las de sus elementos. 5or ejemplo, la estructuraK struct ejemplo { int Datos1; char Datos2; }; :equiere 7 b$tes para su almacenamiento, encontrndose el entero a partir de la localidad 0 relativa al inicio de la estructura, $ el caracter a partir de la localidad 2. "rrelos 1l arre+lo es un tipo de datos estructurado #ormado por una coleccin #inita de elementos ordenados, todos del mismo tipo. 1l acceso se realiza mediante un ndice que permite especi#icar cul es el elemento deseado dando su posicin en la coleccin. !n b$te es la unidad de memoria que se asi+na para almacenar un valor. 1n el caso de un arre+lo las sentencias de declaracin le dicen al compilador cuntos b$tes se necesitan para representar el arre+lo. 1ntonces el nombre del arre+lo se asocia con las caracteristicas del mismo, estas sonK 1l lmite superior del ran+o. 1l lmite in#erior del ran+o /a posicin en memoria del primer b$te del arre+lo, llamada la direccin base. 1l nmero de posiciones de memoria necesarias para cada elemento del arre+lo. /a #uncin de acceso utiliza esta in#ormacin para determinar la posicin del elemento deseado, usando una simple multiplicacin $ una sumaK osicion !lemento"i# $ Direccin %ase & (i ' (imite )nferior* + ,ama-o !lemento 'adenas !na cadena es una secuencia de caracteres. 8e utiliza para +uardar teEtos. Iado que la lon+itud es dinmica, se usan al+unos bits eEtras con in#ormacin sobre la lon+itud mEima, la lon+itud real de la cadena o un indicador de #in de cadena. 5or ejemplo, 5ascal almacena en el primer b$te, el nmero de caracteres que contiene la cadena. 5or ello, la lon+itud mEima que permite es de 2C& caracteres. permite cadenas de lon+itud inde#inida, pues codi#ica la in#ormacin desde el primer b$te, "asta encontrar un caracter nulo *cdi+o A8>> 0,, que #unciona como terminador de cadena. Biblio3-a%5a aptulo 2 del libro de teEto. Banuales de $ 5ascal. 1stndares, por ejemplo el de la >111 para representacin de nmeros reales. "ttpKNNGGG.siner+iaDGeb.com.mENclasesNasm6'0@NTemasNclase0?."tm 3.+ Declaracin de variables$ 'onstantes$ *rocedimientos % /unciones Co"s$a"$es ? ;a-iables !na %onstante es aqu(lla que no cambia de valor durante la ejecucin de un pro+rama *o comprobacin de un al+oritmo en este caso,. 8e representa en la #orma descrita para cada cate+ora. /as Variables son aqu(llas que pueden modi#icar su valor durante la ejecucin de un pro+rama *idem,. 8u representacin se da a traves de letras $ smbolos +eneralmente num(ricos a los que se les asi+na un valor. 1jemplosK
adena cAc c%uanc c/a 5azc /+icos Jalso =erdadero .ariables /os datos que se utilizan dentro del pro+rama se +uardan dentro de lo que se denominan variables. /as variables se caracterizan por tenerK un nombre un tipo un valor /ombre, tipo 0 1alor 1l nombre +eneralmente puede ser cualquier combinacin de caracteres, d+itos $ el si+no de subra$ado. /a limitacin que presentan muc"os len+uajes con respecto al nombre es que debe comenzar por un caracter. 0a$ al+unos len+uajes que "acen distincin entre ma$sculas $ minsculas, mientras que otros no. 1l tipo de dato describe el conjunto posible de valores que puede tener una variable $ tambi(n las operaciones que se puede "acer con ella. ada len+uaje tiene un conjunto de tipos de datos bsico construdos dentro del len+uaje. /os tipos elementales sonK o caracter o c"ar o entero o int o real o #loat o l+ico o boolean 1l valor viene dado por el tipo de variableK o !na variable de tipo caracter puede tener como valor cualquier caracter que se pueda introducir por teclado. 5ara representar un valor de tipo caracter se usan las comas simples por ej. cac. 1ste "ec"o permite evitar ambi+bedades en el caso de "aber de#inido una variable con el nombre de una nica letra. o !na variable entera permite valores num(ricos tanto positivos como ne+ativos, por ej. D1', 2'@0, 0. 8uele "aber un valor mnimo $ mEimo permitidos. o !na variable real permite valores decimales, por ej. 7.1?1C, 1000.@'6. o /as variables boolenas o l+icas pueden tener dos valores, True *verdadero, o Jalse *#also,.
8e+n el tipo de las variables se pueden utilizar unos u otros operadores. o on todos los tipos de datos se pueden utilizar las operaciones de relacionesK menor l ma$or T i+ual S distinto mS menor o i+ual lS ma$or o i+ual TS o on los enteros $ reales se pueden utilizar las operaciones aritm(ticas bsicasK suma R resta D multiplicacin Q divisin N o on las variables booleanas se pueden "acer operaciones l+icasK A)I *L o multiplicacin l+ica, 4: *4 o suma l+ica, )4T *ne+acin, que se corresponden con la tabla de verdad "abitual de l+ica.
A B NOT A A OR B A AND B True True Jalse True True True Jalse Jalse True Jalse Jalse True True True Jalse Jalse Jalse True Jalse Jalse Declaracin de 1ariables A la "ora de escribir un pro+rama, el pro+ramador debe declarar las variables que utilizar. Feneralmente las declaraciones de "acen al comienzo del pro+rama, $ como mnimo se debe de#inir el nombre $ el tipo de cada variable que se utilizar. Al+unos len+uajes permiten especi#icar el valor inicial de cada variable. tipo4dato lista4nombre4variables5 E.em*lo< int sumando1, sumando2, total; boolean es2cierto, llue1e; c-ar letra2dni; float descuento, precio2neto; 3onstantes 0a$ un caso especial de datos denominados constantes. /as constantes no cambian durante la ejecucin del pro+rama. /a declaracin de la constante incluir el valor que tendr a lo lar+o del pro+rama. const tipo4dato nombre4constante 6 valor4constante5 E.em*lo< const float pi $ 4.151672;
recedencia de operadores !na eEpresin es una combinacin de operaciones entre variables $ literales. 1jemplosK D *a T C, A)I *b l 7, 4: *c S 10, D a N b R c Q a uando se evala una eEpresin con muc"os operandos, el resultado puede ser mu$ di#erente dependiendo del orden de ejecucin de las operaciones. 5or esto eEisten las si+uientes prioridades o precedencia de los operadoresK
4peradores de prioridad 1 *ms alta, )4T 4peradores de prioridad 2 Q , N , A)I 4peradores de prioridad 7 R , D , 4: 4peradores de prioridad ? *ms baja, l , lS, T , TS , S , mS /a re+la de ejecucin establece que los operadores de ma$or prioridad se ejecutan antes que los de ms baja prioridad. /os operadores de i+ual prioridad se ejecutan en el orden en que estn escritos, es decir, de izquierda a derec"a. 8i una eEpresin contiene una subeEpresin entre par(ntesis, (stos #uerzan la ejecucin de la subeEpresin, es decir, se ejecuta primero. 8i eEiste un anidamiento de par(ntesis, se ejecuta primero la subeEpresin ms interna. Declaracin de funciones Sinopsis La declaracin ( 4.1.2) da a conocer la funcin al compilador, de forma que a partir del punto de declaracin, ya se pueden realizar invocaciones a la misma. A su vez, la definicin estar en algn otro punto del programa, tal vez en una librera externa (en forma ya compilada) o en otro mdulo de programa (como texto fuente). Una funcin puede ser declarada varias veces en un mismo programa, y las declaraciones pueden aparecer en cualquier orden; en un fichero fuente o en varios, pero en cualquier caso antes de su uso, es decir: antes de cualquier invocacin a la funcin [5]. Adems de declarar el nombre de la funcin y el tipo devuelto (por defecto se supone int ) se declaran tambin el tipo de los parmetros. La declaracin tiene la siguiente sintaBis: [e5tern] <tipo-devuelto> nombre-funcion () W2a [e5tern] <tipo-devuelto> nombre-funcion (<tipo>, ...) W2b [e5tern] <tipo-devuelto> nombre-funcion (<tipo> <parametro>, ... ) W2c 1!emplos@ extern int funcion1 (); // no acepta ningn argumento extern int funcion1 (void); // mejor que la anterior funcion2 (char, int); // por defecto supone que devuelve int int funcion2 (char, int); // mejor que la anterior char funcion3 (char c, int i); // incluye nombres de parmetros 'omentario El especificador <tipo-devuelto> es opcional; por defecto se supone int, as que las declaraciones que siguen son equivalentes [4]: int func (<tipo> <parmetro>, ...) func (<tipo> <parmetro>, ...) #ota: Los compiladores MS Visual C++ y Borland C++ admiten que ciertos especificadores opcionales acompaen a la declaracin de funciones y otros objetos. Tales especificadores son de utilidad en circunstancias especficas ( 4.4.1b). Declaraciones Recuerde que las declaraciones deben realizarse antes que cualquier uso de la funcin. A su vez las definiciones pueden estar en cualquier sitio, aunque en algunos casos pueden existir excepciones (sustitucin inline 4.4.6b). Las declaraciones de funciones tienen un nombre especfico: se denominan prototipos ; el primero de los anteriores (2a ) es vlido, aunque desaconsejado (herencia del C); es el denominado estilo clsico Kernighan & Ritchie; el segundo (2b ), y tercero (2c ), son los aceptados en C++ [ 1]. #ota: Es importante resaltar que en la declaracin de parmetros no est permitido incluir funciones, es decir: las funciones no pueden pasar como argumentos a otras funciones [6]. Sin embargo C++ dispone de recursos cuando esto es necesario: Pasar un puntero ( 4.2.4) o una referencia ( 4.2.3) a la funcin. El viejo estilo K&R tiene la desventaja de no permitir al compilador comprobar el nmero y tipo de los argumentos utilizados en las llamadas a la funcin. Este problema fue eliminado con la introduccin de los prototipos que utilizan la forma completa [ 2], en la que se especifica el nmero y tipo de cada argumento aceptado por la funcin. El compilador usa estos datos para comprobar la validez de las llamadas a la funcin y como se ilustra en el ejemplo, es capaz, en su caso, de realizar dentro de ciertos lmites, un modelado de tipo ("Casting") de los argumentos para garantizar que coinciden con el tipo esperado. #ota: El mecanismo anterior, permite al compilador efectuar una comprobacin de tipos de los argumentos que pasan y del valor devuelto. Los lenguajes en los que no se realizan estas comprobaciones, se denominan de d(bilmente tipados ("Weakly typed"), tienen la desventaja de que no conocen exactamente el tipo de cdigo que ejecutarn. Supongamos que se tiene el siguiente cdigo: extern long lmax(long v1, long v2); // prototipo funcion() { int limit = 32; char ch = 'A'; long mval; mval = lmax(limit, ch); // Llamada a la funcion. } Puesto que se dispone de un prototipo para la funcin lmax, este programa convierte los parmetros limit y ch a lon (utilizando las reglas estndar de asignacin), antes de colocarlos en la pila para la llamada a lmax. Si no hubiese existido el prototipo, limit y ch hubieran sido puestos en la pila como entero y carcter respectivamente, en cuyo caso, los valores pasados a limit no hubieran coincidido con el tamao y/o contenido esperados por esta, originando problemas ( 4.4.6 Llamadas a funciones y conversin de argumentos). La inclusin del especificador opcional eBtern, sirve para indicar al compilador que la definicin de la funcin se encuentra en otro fichero distinto del actual. En caso contrario dicha definicin debe encontrarse en algn lugar del fichero d d (si es que existen llamadas a dicha funcin). Es decir, si aparece el siguiente trozo de cdigo: int alfa (int deg, int min, int sec); // declaracin de alfa ... int gr; gr = alfa( x, y, z); // uso de alfa la definicin de alfa debe estar en algn sitio del fichero que contiene dichas instrucciones, en caso contrario el compilador devolver un error: Unresolved external 'alfa()' referenced from ....OBJ. Es importante recordar que las funciones tienen mbito global y que, sus declaraciones (prototipos) aunque suelen estar al principio (inmediatamente despus de las directivas de preprocesado), pueden aparecer en cualquier parte del fichero. Ponerlas al principio tiene la ventaja de que sus nombres sean conocidos en la totalidad del fichero, con lo que pueden ser invocadas desde cualquier punto -desde cualquier otra funcin, incluso main()- sin tener que declarar un prototipo dentro de cada funcin que las invoque. *rototipos de funciones Los prototipos juegan un rol importante en la programacin C++; sirven tambin para clarificar y documentar el cdigo, sobre todo si los nombres de las variables son significativos. Por ejemplo, la funcin strcpy tiene dos parmetros: una cadena fuente y una destino, la cuestin es: Cual es cual? char *strcpy(char* dest, const char* source); Si se incluye un identificador en el parmetro de un prototipo, solo es utilizado para los posibles mensajes de error relativos a tal parmetro sin ningn otro efecto. De hecho, los identificadores (nombres) de los parmetros suelen ser largos y descriptivos en los prototipos, mientras que en las definiciones suelen ser abreviados, sin que, en este aspecto, tengan que haber coincidencia entre ambos (ver reglas de mbito para los identificadores de parmetros en prototipos de funciones 4.1.3). Como puede deducirse de estas palabras, esto significa que en realidad los nombres de los argumentos no son imprescindibles en los prototipos; solo son necesarios los tipos de los parmetros. Es decir: El prototipo de la funcin anterior podra perfectamente ser sustituido por: char *strcpy(char*, const char*); Un declarador de funcin con la palabra void entre parntesis: func(void);, indica que la funcin no acepta ningn parmetro; es equivalente a la expresin como func();, que tambin declara una funcin sin parmetros. *rototipos % fic0eros de cabecera: Es costumbre que los prototipos de las funciones incluidas en las libreras del lenguaje se agrupen en ficheros especficos, los denominados fic0eros de cabecera, que son ficheros de texto (en realidad ficheros fuente 1.4) en los que se agrupan todas las declaraciones que se utilizan en la librera. #ota: En realidad, los ficheros de cabecera no solo incluyen los prototipos y declaraciones de las funciones, tambin las declaraciones de las estructuras, macros ( 4.9.10b) y clases ( 4.11.2a) utilizadas. Por otra parte, tambin es frecuente que los programadores C++ construyan sus propias librer.as que acompaan a las que vienen preconstruidas en el lenguaje. Para ello se agrupan en ciertos mdulos aquellas funciones o clases ms frecuentemente utilizadas. Estos mdulos son compilados y enlazados de una forma especial de forma que no se obtiene un ejecutable, sino una librer.a de las que existen varios tipos ( 1.4.4a). En cualquier caso, sean libreras preconstruidas en el lenguaje o de fabricacin propia, los prototipos de las funciones incluidas en tales libreras se agrupan en ficheros de cabecera. Las que vienen con el lenguaje se localizan en el directorio \Include. Las de fabricacin propia se deben mantener en otro directorio separado del anterior. Puesto que es imprescindible incluir en cada fichero fuente la declaracin de cada funcin antes de que pueda ser utilizada , el hecho de tener agrupadas las declaraciones en un fichero de cabecera es de gran utilidad, porque solo es preciso incluir una directiva include ( 4.9.10g) al principio de cada fuente para tener la seguridad de que todos los prototipos estarn presentes. De otro modo tendra que escribirlos manualmente en cada fuente en que usara funciones de la librera. En la documentacin que acompaa a toda librera se indica siempre, junto con un ejemplo de uso, el nombre del fichero de cabecera que contiene los prototipos de las funciones utilizadas en la librera. Sin embargo, en ocasiones, cuando no se tiene a mano un buen manual de uso, o existe la sospecha de una errata en el mismo, puede ser til echar un vistazo al fichero de cabecera en que se incluye el prototipo de la funcin, ya que contiene bastante informacin sobre su uso; tipo y nmero de parmetros, valor devuelto, etc. #ota: Se ha llegado a afirmar que los ficheros de cabecera contienen toda la informacin necesaria para usar las libreras de cualquier tipo. Aunque desde luego pueden ser de gran ayuda, la afirmacin es un poco exagerada. En lo que respecta a las funciones, los prototipos contienen en realidad toda la gramtica de su invocacin, pero poco o nada sobre la "funcionalidad". #Pmero variable de arumentos Normalmente los prototipos de funciones declaran un nmero fijo de parmetros (que puede ser ninguno). Para las funciones que pueden aceptar un nmero variable de parmetros (tales como printf), el prototipo puede terminar en puntos suspensivos (...). Esta elipsis indica que la funcin puede ser invocada con diferentes tipos de argumentos en diferentes ocasiones. Los puntos pueden colocarse al final de una sublista de parmetros de conocidos, por ejemplo: func(int *count, long total, ...); Por supuesto, esta forma de prototipo reduce la comprobacin que puede efectuar el compilador; los parmetros fijos son comprobados en tiempo de compilacin, y los variables son pasados sin comprobacin [ 3]. 1!emplos A continuacin algunos ejemplos adicionales de prototipos y declaraciones de funciones. Obsrvese que para mayor concisin, en todas ellas se han omitido los nombres de los parmetros formales (que como hemos indicado, son opcionales en los prototipos): f(); /* En C, sin datos sobre los parametros, el estilo clsico K&R. Devuelve int */ f(); // En C++, f no recibe argumentos. Devuelve int. int f(void); // f devuelve int, no recibe argumentos. int p(int,long); /* p devuelve int, acepta dos parmetros: El primero un int, el segundo un long */ int __pascal q(void); /* q funcin Pascal, devuelve int, no recibe parmetro */ int printf(char *format,...); /* Devuelve int; un parmetro fijo, puntero a carcter, despus cualquier nmero de argumentos adicionales de tipo desconocido */ char* f(int) // funcin que devuelve puntero a carcter, acepta un int. int* f(int) // funcin que devuelve puntero a int, acepta int. struct str f(int) // funcin que devuelve estructura str acepta un int. int (*f (int))(int); /* funcin que acepta un entero y devuelve un puntero a funcin que acepta un int y devuelve un entero */ int (*(*f())[10])(); /* funcin que no recibe argumentos, devuelve un puntero a un array de 10 punteros a funcin que devuelven enteros */ int f(struct S* Sptr); /* funcin que recibe como argumento un puntero a una estructura y devuelve int */ d int (B::* getptr())(); /* funcin que no recibe argumentos, devuelve un puntero a funcin miembro de la clase B que no recibe argumentos y devuelve un int */ *olimorfismo Aparte de estas tareas de comprobacin y modelado de tipos, en realidad el objetivo principal de incluir en la declaracin de funciones una descripcin detallada del valor devuelto y de los parmetros aceptados, es permitir lo que se llama sobrecara (de funciones). Esto significa que dentro del mismo mbito puedan definirse varias funciones con nombres idnticos pero distintos parmetros y por supuesto distintas definiciones. Ms tarde, el compilador ser capaz de saber a cual de ellas nos estamos refiriendo, precisamente analizando los parmetros que pasamos a la funcin. Por ejemplo, en C++ est permitido el siguiente trozo de cdigo: int alfa (int deg, int min, int sec); // declaracion-1 de alfa void alfa (int deg); // declaracion-2 de alfa int alfa (char n); // declaracion-3 de alfa ... n = alfa('c'); // invocacin de alfa-3 el compilador conoce que, en este caso, la invocacin se refiere a la tercera declaracin de la funcin alfa, precisamente por el argumento que estamos utilizando. #ota: Las funciones main, Oin-ain y Lib-ain no pueden ser sobrecargadas. Ejemplo: extern "C" void WinMain(int, char*, char*); void WinMain(int, short, char*, char*); // Error!! Como veremos inmediatamente ( 4.4.1a), para saber que definicin ajusta mejor con los argumentos actuales, el compilador sigue una serie de reglas denominadas de conruencia est,ndar de arumentos. http://www.zator.com/Cpp/E4_4_1.htm Declaracin de Funciones En el lenguaje que estamos describiendo es posible declarar una o varias funciones, que pueden poseer parmetros formales y variables locales. En la gramtica empleada para hacer esta descripcin suponemos que la declaracin de variables locales es a travs de la seccin que declara cualquier variable global, por lo que debemos establecer diferencias entre globales y locales y las implicaciones que tiene declarar una funcin. Consideremos el siguiente programa: Entero a, b !eal c Caracter " #uncin Entero $ %!eal a, !eal b& Entero ', c (nicio ... #in #uncin Caracter y %Entero a& Caracter b (nicio ... #in (nicio ... #in )os puntos suspensivos indican rdenes que no son relevantes en este momento. *sociada a cada funcin debe considerarse una tabla diferente para registrar tanto a sus variables locales como a los parmetros que sta tenga %los parmetros en el conte$to de la funcin act+an como variables locales&. ,i la suposicin es que las mismas acciones que ya reali"amos para las variables globales se aplicarn para una funcin, obtendremos un esquema para la tabla de s-mbolos como el siguiente: donde $, y son funciones %registradas en el conte$to de las variables globales como fun.tipo/que/devuelve/la/funcin& y que lleva a construir su propia tabla, que le dar dominio y alcance a cada variable: si estoy en la tabla global, cono"co las variables globales y las funciones declaradas pero no tengo acceso a las variables declaradas en la funcin. si estoy en la tabla de la funcin cono"co a las variables locales, puedo conocer o tener acceso a las variables globales y a las funciones declaradas previamente. El tener acceso a las variables locales antes que a las variables globales permite que e$ista duplicidad en nombres en variables locales y globales y condiciona su dominio y alcance. Es por eso que la tabla de una funcin tiene un enlace a la tabla global para buscar en esta una variable no locali"ada en la tabla de la funcin. 0or cuestiones de simplicidad, consideraremos que las tablas se construyen de manera secuencial en una regin fija de memoria. )a declaracin mencionada arriba, quedar-a representada de la siguiente manera: donde esta tabla de s-mbolos empie"a en la localidad 1. *hora bien, esta estructura no distingue entre variables locales y los parmetros que una funcin puede tener. 0ara resolver esto, tomamos la +ltima entrada a una funcin para registrar en ella el n+mero de parmetros que la funcin posee distingimos esta entrada al emplear un s-mbolo no articulable como nombre de variable %!&. )a tabla queda conformada como sigue: Con esta estructura en mente se agregarn, a las reglas gramaticales, acciones que permitan construirla. http://webdia.cem.itesm.mx/ac/aesparza/aula/funcion0.html 42 +'&C%"&E Una %uncin a partir de uno o m#s valores llamados argumentos o par#metros devuelve un resultado en el nombre de la %uncin& $eclaracin de funciones* una %uncin constar$a de* a) Cabecera* tambi3n se le llama de.nicin de la %uncin& En la de.nicin de la %uncin deben .gurar una serie de par#metros, llamados par#metros %ormales para que cuando se llame a la %uncin se pueda establecer una correspondencia I a I ( de izquierda a derec5a entre los par#metros actuales ( %ormales& b) En el cuerpo de la %uncin estar#n el bloque de declaraciones ( el bloque de instrucciones& 7ebe incluir una instruccin mediante la cual la %uncin tomar$a un valor para devolverlo al programa principal o llamador& 8uncin a nombre de la %uncin b (lista de par#metros %ormales)* tipo de dato devuelto& 7eclaracin de las variables locales& ?nstrucciones (?nicio)& )os tipos de datos validos como resultado de una %uncin son* ordinales, reales, cadenas, punteros ( lgicos& En una lista de par#metros %ormales es posible separar estos par#metros con G ( 5a( que indicar cada tipo& 62 P#"CE$%(%E&!" Un procedimiento es un subprograma o subalgoritmo que realiza una tarea especi.ca ( que puede ser de.nido mediante X, I o n par#metros& 9anto la entrada de in%ormacin al procedimiento como la devolucin de resultados desde el procedimiento al programa principal o llamador o conductor se realiza a trav3s de los par#metros& El nombre de un procedimiento no esta asociado a ninguno de los resultados que obtiene& )a llamada a un procedimiento se realiza con la instruccin >)lamar_a@ o directamente con el nombre del procedimiento, es decir* anombre del procedimientob (lista de par#metros que se llaman actuales o reales)& $eclaracin de procedimientos* es similar a la de una %uncin e+cepto que el nombre del procedimiento no se encuentra asociado a ning,n resultado& 'rocedimiento anombre del procedimientob(lista de par#metros %ormales) (declaracin de variables locales) ?nicio & & & 8in_procedimiento )a lista de par#metros %ormales se debe separar por G ( debemos indicar el tipo de cada uno de ellos& http://html.rincondelvago.com/programacion-en-c_9.html 3.3 4peraciones aritm(ticas$ licas % relacionales. O*e-a&o-es ? O*e-a"&os
O*e-a&o-es !n operador es el smbolo que determina el tipo de operacin o relacin que "abr de establecerse entre los operandos para alcanzar un resultado.
/os operadores se clasi#ican en tres +ruposK Aritm(ticos. :elacionales. /+icos.
1., O*e-a&o-es A-i$mG$icos 8on aqu(llos que permiten la realizacin de clculos aritm(ticos. !tilizan operandos num(ricos $ proporcionan resultados num(ricos.
O*e-a&o- O*e-aci7" R 8uma D :esta Q Bultiplicacin N Iivisin real Iiv Iivisin entera Bod :esiduo g 1Eponenciacin
1jemplosK 'R7 S 10 10 Iiv ? S 2 'D7 S ? 20 Bod 7 S 2 'Q7 S 21 C Bod ' S C 10N?S 2.C ? g 2 S 1&
1n la eEpresin 'R7, los valores ' $ 7 se denominan operandos. 1l valor de la eEpresin 'R7 se conoce como resultado de la eEpresin.
Todos los operadores aritm(ticos no eEisten en todos los len+uajes de pro+ramacin, por ejemplo, en Jortran no eEisten Iiv $ mod.
3peradores "iv ) Mod 1l smbolo = se utiliza para la divisin real, $ el operador Di; representa la divisin entera. EH*-esi7" Res!l$a&o EH*-esi7" Res!l$a&o 10.CN7.0 7.C 10 Iiv 7 7 1N? 0.2C 1@ Iiv 2 6 2.0N?.0 0.C 70 Iiv 70 1 70N70 1.0 10 Bod 7 1 &N@ 0.'C 10 Bod 2 0
O*e-a&o-es Relacio"ales 5ermiten realizar comparaciones de valores de tipo num(rico o carcter. 1stos operadores sirven para eEpresar las condiciones en los al+oritmos. 5roporcionan resultados l+icos.
O*e-a&o- Si3"i%ica&o l Benor que T Ba$or que S >+ual que lS Benor o i+ual que TS Ba$or o i+ual que lT Ii#erente de
El %o-ma$o 3e"e-al *a-a las com*a-acio"es es< e8presin1 o*e-a&o- &e -elaci7" e8presin2
1l resultado de la operacin ser =erdadero o Jalso. As por ejemplo, si AS? $ .S7, entoncesK AT. 1s =erdadero *AD2, l *.D?, 1s Jalso
/os operadores de relacin se pueden aplicar a cualquiera de los cuatro tipos de datos estndarK enteros, real, l+ico $ carcter. iAZ l i;Z S =erdadero iAZ T iaZ S Jalso iBA:>AZ l i%!A)Z S Jalso *se considera la primera letra, i%A>B1Z T i%4:F1Z S Jalso
7ota2 La com*a-aci7" &e ca&e"as se -i3e *o- el c7&i3o ASCII.
P-io-i&a& De O*e-a&o-es A-i$mG$icos ? Relacio"ales Ietermina el orden en que "abrn de realizarse las operaciones en una eEpresin determinada. 5ara obtener la prioridad se deben conocer las si+uientes re+lasK
/as operaciones que estn encerradas entre par(ntesis se evalan primero. 8i eEisten di#erentes par(ntesis anidados *interiores unos a otros,, las eEpresiones ms internas se evalan primero.
/as operaciones aritm(ticas dentro de una eEpresin suelen se+uir el si+uiente orden de prioridad.
O*e-a&o- P-io-i&a& g Alta Q, N, Iiv
R, D, Bod :elacionales .aja
1n caso de coincidir varios operadores de i+ual prioridad en una eEpresin o subeEpresin encerrada entre par(ntesis, el orden de prioridad en este caso es de izquierda a derec"a.
uando se desea realizar una operacin con baja prioridad por adelantado, debe a+ruparse a los operandos involucrados. ? R 12 N2 S 10 *sin a+rupar, *? R 12, N2 S @ *con a+rupador,
E.em*lo< 4btener los resultados de las eEpresionesK ,2 N O P / Q 1 = 2 , 6
8olucinK ,2 NO P / Q R
:esultaK ,2 N OP S=2 ,6 ,/S P S=2 ,6 ,/S P / , 6 ,/9 , 6 ,11
!os par#ntesis tienen prioridad sobre el resto de las operaciones. A N EBP1F /a constante 7 se suma primero al valor de ., despu(s este resultado se multiplica por el valor de A.
EANBF P1 A ? B 8e multiplican primero $ a continuacin se suma 7.
A P EB=CF P D 1sta eEpresin equivale a AR .N R I
O*e-a&o-es L73icos 8on aqu(llos que permiten la combinacin de condiciones para #ormar una sola eEpresin l+ica. !tilizan operandos l+icos $ proporcionan resultados l+icos tambi(n.
O*e-a&o- Relaci7" not )e+acin *)o, and onjuncin *L, or Iis$uncin *4, Eor Iis$uncin 1Eclusiva *4N84/4,
Se ob$ie"e 'e-&a&e-o si< )4T 1l operando es #also A)I Ambos operandos son verdaderos 4: Al menos un operando es verdadero <4: 8olo uno de los operandos son verdadero
T M NOTETF NOTEMF T AND M T OR M T TOR M 0 0 = = J J J ' 0 J = J = = 0 ' = J J = = ' ' J J = = J
&rioridad "e !os 3peradores !gicos /os operadores aritm(ticos se+uan un orden espec#ico o de prioridad cuando eEistan ms de un operador en las eEpresiones. Ie modo similar los operadores l+icos $ relacionales tienen un orden de prioridad. E.em*los< No$ 2 U 9 5roduce un error, $a que el operador "o$ se aplica a ?. No$ E2 U 12F 5roduce un valor verdadero. E1.CVHF A"& EHV( PO.CF 8i E vale ' $ z vale ?, se obtiene un valor #also.
Asi3"aci7" /a operacin de asi+nacin es el modo de darle valores a una variable. /a operacin de asi+nacin se representa por el smbolo u operador . /a operacin de asi+nacin se conoce como instruccin o sentencia de asi+nacin cuando se re#iere a un len+uaje de pro+ramacin. A #in de manejar datos por medio de variables, estos pueden recibir valores determinados. 1l tipo de los valores que pueden recibir dependen de la declaracin previa de tales variables. 1n una asi+nacin se resuelve, primeramente la eEpresin *al lado derec"o del smbolo de asi+nacin, $ se asi+na el resultado en la variable. 1l #ormato +eneral de asi+nacin esK )omPvariable 1Epresin Ionde 18presin puede ser una variable o constante, operacin, #uncin. 1jemploK A 6 8i+ni#ica que la variable A se le "a asi+nado el valor 6. /a accin de asi+nar es destructiva, $a que el valor que tuviera la variable antes de la asi+nacin se pierde $ se reemlaza por el nuevo valor. As en la secuencia de operacionesK A 70 A 1@6 A 6 uando se ejecutan, el ltimo valor que toma A ser 6, $a que los valores anteriores a este "an desaparecido. /as acciones de asi+nacin se clasi#ican se+n sea el tipo de eEpresiones K 9ritm#ticas+ !gicas ) de %aracteres*
Asi+nacin Aritm(tica /as eEpresiones en las operaciones de asi+nacin son aritm(ticasK 8uma CR10R2 8e evala la eEpresin CR10R2 $ se asi+na a la variable 8uma, es decir, 1' ser el valor que toma 8uma. Asi+nacin /+ica /a eEpresin que se evala en la operacin de asi+nacin es l+ica. 8upn+ase que B, ), $ 5 son variables de tipo l+ico. B @ l C ) B o *' lS 12, 5 ' T & Tras ejecutar las operaciones anteriores, las variables B,),5 toman los valores, falso, 1erdadero, 1erdadero respectivamente.
Asi+nacin de caracteres /a operacimn que se evala es de tipo caracter. E c7 de Ba$o de 1666c /a accin de asi+nacin anterior asi+na la cadena de caracteres c7 de Ba$o de 1666c a la variable de tipo carcter E. EH*-esio"es /as eEpresiones son combinaciones de constantes, variables, smbolos de operadores, par(ntesis $ nombres de #unciones especiales. /as mismas ideas son utilizadas en notacin matemtica tradicional A por ejemplo K a P b E bP/F A!5 los *a-G"$esis i"&ica" el o-&e" &e c4lc!lo.
ada eEpresin toma un valor que se determina tomando los valores de las variables $ constantes implicadas $ la ejecucin de las operaciones indicadas.
!na eEpresin consta de operadores ? operandos. 8e+n sea el tipo de objetos que manipulan, las eEpresiones se clasi#ican en K Aritm(ticas :elacionales /+icas arcter
1l resultado de la eEpresin num(rica es de tipo num(rico A el resultado de una eEpresin relacional $ de una eEpresin l+ica es de tipo l+ico A el resultado de una eEpresin carcter es de tipo carcter.
1., EH*-esio"es A-i$mG$icas /as eEpresiones aritm(ticas son anlo+as a las #rmulas matemticas. /as variables $ constantes son num(ricas *real o entera, $ las operaciones son las aritm(ticas.
R suma D resta Q multiplicacin N divisin QQ, g eEponenciacin div divisin entera mod mdulo *resto,
/os clculos que implican tipos de datos reales $ enteros suelen dar normalmente resultados del mismo tipo si los operandos lo son tambi(n. 5or ejemplo, el producto de operandos reales produce un real.
E.em*lo < 2 H 9 se representa por ? Q & 1 W se representa por 7 g 6 1S &i; 9 se representa por 1@N& /., EH*-esio"es L73icas Eboolea"asF 1s una eEpresin que solo pueden tomar los valores de K verdadero $ #also. /as eEpresiones l+icas se #orman combinando constantes l+icas, variables l+icas $ otras eEpresiones $ otras eEpresiones l+icas utilizando los operadores l+icos "o$, a"& $ o-, $ los operadores relacionales *de relacin o comparacin, S, T, l, lS, TS, lT. 3.5 Diseo$ 1dicin$ 'ompilacin % 1!ecucin de proramas *roceso de creacin de un a!ecutable 1scribir el cdio Suponiendo cumplimentados los pasos anteriores, el programador est en condiciones de construir una imagen mental clara de como ser esa conexin entre la informacin de entrada y la salida, es lo que se denomina "espacio" de la solucin ("'How' domain"); su forma concreta es justamente el fuente del programa que se pretende. La codificacin consiste justamente trasportar a papel (en el lenguaje de programacin elegido) la imagen mental de esa conexin. Para escribir el cdigo fuente de un programa C++ solo se puede utilizar un subconjunto de 96 caracteres del juego total de caracteres US-ASC ( 2.2.1a). Son los siguientes [8]: )!e3o &e ca-ac$e-es im*-imiblesK a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ { } [ ] # ( ) < > % : ; . ? * + / ^ & | ~ ! = , \ " Ca-ac$e-es "o,im*-imibles denominados separadores 1spacio "orizontalA Tabulacin "orizontal *TA.,A Tabulacin vertical *=T,A 8alto de #orma *JJ,A )ueva lnea *)/,. #ota: Para escribir el cdigo solo hace falta un editor de texto plano, aunque las modernas "suites" de programacin incluyen editores especficos que estn conectados con el depurador, el compilador el enlazador (ver ms adelante) e incluso el sistema de ayudas, de forma que, por ejemplo, pueden mostrarnos automticamente la sentencia en la que se ha producido un error de compilacin, o la pgina correspondiente del manual si pulsamos en una palabra reservada y pedimos ayuda (F1 generalmente). Tambin muestran en diversos colores las palabras clave, los comentarios, etc. Los ms avanzados disponen incluso de opciones que podramos calificar de "inteligentes", en el sentido que pueden prever cual ser nuestro prximo movimiento en funcin de la sentencia que estamos escribiendo (por ejemplo, ofrecernos una lista de las propiedades y mtodos de una clase si nos estamos refiriendo a ella). Si el programa es mediano o grande, es posible que todava tenga que realizar una labor previa: disear a grandes rasgos cuales sern los mdulos del programa; mdulos que se correspondern aproximadamente con la distribucin del cdigo en ficheros fuente independientes. Quizs tenga que decidir tambin si algunas partes aparecern como librer.as [1]. Recuerde lo indicado al respecto al tratar de los Subespacios de Nombres ( 4.1.11). Esta fase es especialmente importante en el caso de programas muy grandes, cuyo desarrollo se reparte entre varios programadores que se encargan de uno o varios de estos mdulos. En estos casos, el anlisis, la especificacin, la subdivisin en partes (con sus especificaciones particulares), y la asignacin de estas como tareas a los programadores, lo habr realizado el jefe de programacin y desarrollo. Durante la fase de escritura no desdee dos puntos: ncluir la mayor cantidad de comentarios y aclaraciones posibles. Cuando se est muy "metido" en el programa todo parece evidente, pero piense que tiene que retocarlo dentro de unos aos, quizs entonces le parezca "Chino" y agradecer haber dejado la mayor cantidad de documentacin y aclaraciones al respecto. ncluso si es seguro que no volver a verlo, piense en el sufrido programador que le seguir si tiene que habrselas con su cdigo. En este sentido C++ no es precisamente COBOL, aunque afortunadamente permite incluir en el fuente comentarios todo lo extensos que se desee ( 3.1). No caiga tampoco en el error de pensar que esa informacin ya est en la documentacin escrita que le han obligado a entregar junto con los fuentes; posiblemente dentro de unos aos Usted mismo no encuentre esos documentos. ncluir la mayor cantidad posible de rutinas y condiciones de comprobacin de errores. Piense que el operador es un "manazas" o que los datos pueden venir con alguna corrupcin, error de transmisin, etc. Verifique constantemente que las condiciones son las esperadas ( 1.4.5). Una vez que se tiene el cdio fuente (en uno o varios mdulos), el proceso de traducirlo a instrucciones comprensibles por el procesador (lenua!e m,&uina) puede hacerse siguiendo dos modelos: los int(rpretes y los compiladores [3]. En el caso de lenguajes compilados como C++, el fichero de texto plano (ASC 2.2.1a) que contiene el fuente del programador (con la terminacin .' .'**), es sometido a un proceso de varias fases que terminan en la obtencin del ejecutable. De forma genrica, todo este proceso se denomina "compilacin", aunque es una generalizacin un tanto incorrecta, ya que la compilacin propiamente dicha es solo una de las etapas intermedias. Sera ms correcto decir "construccin" del ejecutable, aunque por la extensin y generalizacin de su uso seguiremos utilizando el trmino genrico "compilacin" para referirnos a l. Los procesos de construccin del ejecutable se esquematizan en la figura que comentamos a continuacin: W3 *reproceso En la primera fase de la compilacin; un programa especial, denominado maKe, es encargado de iniciar el proceso llamando a los diversos mdulos que se encargan de la construccin del ejecutable (en 1.4.0 se amplan detalles sobre esta parte del proceso). El primero de estos mdulos es el preprocesador. El preprocesador ( 1.4.1) estudia el texto buscando directivas de preprocesado ( 4.9.10), por ejemplo sentencias que pueden ser suprimidas, incluye los ficheros correspondientes a las directivas Uinclude, sustituye los Udefine, elimina los comentarios y expande las macros encontradas en el fuente y en los propios ficheros incluidos. El resultado obtenido es lo que se denomina unidad de compilacin ( 1.4.2). W5 "n,lisis sint,ctico Puesto que el fichero fuente est escrito en un "lenguaje" (C++ en este caso) que tiene sus propias reglas de sintaxis (como los lenguajes naturales), el compilador debe comprobar que estas reglas se han respetado. Este anlisis ("Parsing") es realizado por el analizador sintctico. En esta fase se realizan comprobaciones como que los parntesis estn cerrados, que no aparecen expresiones incompletas, etc. Para realizar esta labor, el "parser" debe identificar los tokens ( 3.2), de forma que el fuente es tokenizado, esto es, reducido a tokens y separadores. El fuente es escaneado, el analizador sintctico (parser) extrae los tokens de forma que selecciona el que coincida con la secuencia de caracteres ms larga posible dentro de la secuencia analizada [9]. Por ejemplo, la palabra clave eBternal es reconocida como un solo token (identificador de clase de almacenamiento) en vez de seleccionar eBtern (una palabra reservada) y al (que sera un identificador). Los separadores (whitespaces) es el nombre genrico dado a los espacios (32), tabulaciones verticales VT (11), horizontales TAB (9) nueva linea NL (10) y retorno de carro CR (13). Los separadores sirven para indicar donde empiezan y terminan las palabras, pero despus de esto cualquier separador redundante es descartado. Por ejemplo, las dos secuencias: int i; float f; - - - - - - - - - - - - - - - - - int i; float f; son lxicamente equivalentes y el resultado del anlisis son las seis palabras siguientes: int i ; float f ; El carcter ASC espacio puede formar parte de cadenas literales (alfanumricas), en cuyo caso es protegido del proceso de anlisis, permaneciendo como parte de la cadena. Por ejemplo: char name[] = "Playa Victoria"; es reducido a siete tokens, incluyendo una cadena literal "Playa Victoria" char name [ ] = "Playa Victoria" ; W; "n,lisis sem,ntico En lenguajes como el E!sa-blado la comprobacin se limita al anlisis anteriormente sealado; con esto se garantiza que el fuente original es correcto (sintcticamente), es decir, es un escrito correcto desde el punto de vista del lenguaje, otra cosa es que tenga un sentido computacionalmente correcto o diga tonteras, incongruencias o sinsentidos [6]. Por supuesto la meta del compilador es conseguir descubrir con anticipacin (al runtime) el mximo de errores posibles, en los lenguajes de alto nivel, esto se consigue con una cierta comprobacin del "sentido" o "significado" del escrito, es el denominado an,lisis sem,ntico (anlisis del significado). La mejor baza de que dispone C++ para esta segunda comprobacin es la comprobacin esttica de tipos ( 2.2), es decir, que las variables y las operaciones entre ellas se usan correctamente; esto supone verificar que las llamadas a funciones, los valores devueltos por estas y los operandos de las expresiones corresponden con el tipo que se les supone en cada caso. Por ejemplo: int x; char func(); .... x = func(); En este caso, la primera lnea declara que la variable x es tipo int (entero); la segunda declara que la funcin fun devuelve un carcter (c0ar); si una lneas ms adelante se pretende igualar la variable x con el valor devuelto por la funcin, el analizador semntico estara en condiciones de asegurar que existe una incongruencia en las pretensiones del programador, generando el correspondiente mensaje de advertencia o error . WM :enerador de cdio Todos estos tokens identificados por el analizador sintctico, son organizados en una estructura como las hojas de un rbol. A continuacin, el generador de cdigo recorre este rbol traduciendo sus hojas directamente en cdigo de la mquina para la que se compila. Si se solicita, el compilador tambin puede en esta fase generar un fichero en lenguaje macro ensamblador para su posible inspeccin por el programador (este cdigo es tambin dependiente de la mquina para la que se compila y fcilmente entendible por el humano; puede contener incluso comentarios para facilitar su lectura). #ota: El compilador Borland C++ dispone de opciones que permiten generar cdigo optimizado para procesadores ntel de modelos especficos ( 1.4.3a). A veces, despus del generador de cdigo puede ejecutarse un optimizador (peephole optmizer). Este generador de cdigo sera propiamente el compilador, es decir, el encargado de traducir algo entendible por el humano en cdigo mquina. En cualquier caso, el resultado es un fichero "objeto", generalmente con la terminacin .ob!. Tambin puede ordenarse al compilador que incluya en el "objeto", determinada informacin adicional que ser utilizada ms tarde por el depurador , por ejemplo los nmeros de lnea de las sentencias. Cuando se hace as, se habla de una compilacin "provisional" o de "depuracin"; distinta de la que se realiza para la versin definitiva (de campo) del programa en la que no se incluyen este tipo de informacin que ya no es necesaria. W1> 1nlaLado El ltimo paso en construir un ejecutable es el enlaLado. Recibe este nombre el proceso de aglutinar todos los recursos en un solo fichero ejecutable ( 1.4.4 ). Estos recursos son desde luego los ficheros-objeto obtenidos en la compilacin de los diversos mdulos (ficheros .c) que componen el programa. Adems, si se han utilizado funciones o clases de librera [1] (como es casi seguro), el enlaLador ("Linker") es el programa encargado de incluir los mdulos adecuados en el fichero ejecutable final. As pues, la funcin primordial del enlazador es resolver todas las referencias que puedan existir en el programa, es decir: que cada invocacin a un valor o a una funcin corresponda una direccin donde se encuentra el recurso correspondiente, y que estn todos contenidos en un solo fichero que pueda ser cargado y ejecutado por el Sistema Operativo. Eventualmente algunos recursos pueden estar en otros ficheros distintos del ejecutable, librer.as de enlaLado din,mico (en Windows se denominan DLLs). En cuyo caso el enlazador tambin incluir las direcciones y convenciones de llamada adecuadas para que puedan ser trados a ejecucin desde el programa principal. Por ltimo, el enlazador se encarga de insertar en el ejecutable un trozo de cdigo especial: El mdulo inicial, que es el encargado de iniciar la ejecucin ( 1.5). http9::;;;.<ator.com:3pp:!125.htm Feneralmente "a$ varias etapas para lle+ar desde el cdi+o #uente "asta el pro+rama ejecutable. 1. Feneracin del al3o-i$mo. 5lanteo del problema, des+lose en subproblemas $ solucin de estos en terminos abstractos *pseudocdi+o o dia+ramas de #lujo,. 2. Feneracin del cdi+o #uente *pueden ser ms de uno para la +eneracin de un nico ejecutable,. 1l pro+rama #uente * o c7&i3o %!e"$e, es una secuencia de sentencias escritas en la sintaEis del len+uaje que se in+resan utilizando un editor de teEtos. 7. ompilacin a objeto. 1ste paso se lleva a cabo a trav(s del uso de un compilador. 1ste se encar+a de traducir el pro+rama #uente en cdi+os que el computador pueda entender directamente *c7&i3o &e m4!i"a, tambien llamado c7&i3o ob.e$o,. 1n esta traduccin se trans#orman todas sentencias en sintaEis de a cdi+o de mquina, pero las llamadas a #unciones eEternas o de biblioteca no quedan resueltas, por lo que todavia, el codi+ objeto no puede ser ejecutado. ?. /i+ar las llamadas a #unciones no resueltas. 1ste paso se realiza a trav(s de un li+ador *lin9er,, el que se encar+a deK a partir de los cdi+os objeto $ de las biblio$ecas de rutinas *conjunto de cdi+os objetos de las #unciones de biblioteca, +enerar un mdulo ejecutable directamente por el computador **-o3-ama e.ec!$able,. Iependiendo del entorno de trabajo $ de las "erramientas de desarrollo que se esten utilizando para la +eneracin de pro+ramas, al+unos de los pasos anteriores pueden quedar ocultos a la vista del desarrollador. http9::ib.cnea.go1.ar:=icom:3urso322>>4:pasos.htm /os len+uajes de alto nivel necesitan de pro+ramas traductores para poder ser ejecutados. 0a$ dos tipos de traductoresK los compiladores $ los int(rpretes. /os compiladores /os compiladores traducen los pro+ramas #uente a pro+ramas objeto o compilados. 1stos pro+ramas objeto, en ensamblador, necesitan posteriormente de un traductor de ensamblador o lin9ador para ser traducidos a len+uaje mquina. 1l pro+rama resultante de la compilacin de un pro+rama #uente se llama pro+rama objeto. 5ara poder compilar un pro+rama se necesita esa aplicacin $ el 9it de desarrollo de aplicaciones. /os int(rpretes /os int(rpretes "acen que los pro+ramas #uente sean traducidos $ ejecutados directamente por el ordenador, sin necesidad de ser compilados. /a ma$or parte de los interpretes se emplean para trabajar en entornos inte+rados de desarrollo. !n ejemplo puede ser =isual .asic. )o se +eneran ejecutables, sino que son ejecutados desde la propia aplicacin. 5ara (l eEiste un 9it de desarrollo que permite traducir los pro+ramas interpretados a compilados, pudi(ndose posteriormente ejecutar desde el sistema operativo sin necesidad del entrono de desarrollo. Access tambi(n #unciona como un entorno de desarrollo que +enera bases de datos que puden ser interpretadas $ ejecutadas. 1l uso de entornos de desarrollo permite la creacin $ una rpida depuracin de pro+ramas de modo previo a su compilacin. 5ara ejecutar un pro+rama en =isual .asic, desde el entrono de desarrollo se selecciona el objeto a ejecutar $ en la barra de mens se selleciona ejecutar. Iespu(s se pulsa sobre iniciar o iniciar con compilacin completa. Aparecer en pantalla el resultado de la ejecucin del #ic"ero seleccionado. Tambi(n puede ejecutarse un pro+rama pulsando sobre el botn ejecutar de la barra de "erramientas. /a evolucin de los len+uajes de pro+ramacin se "a realizado en cuatro +eneraciones. /as dos primeras se corresponden de #orma aproEimada con las dos primeras +eneraciones de ordenadores. 1n la primera aparece el len+uaje mquina $ en la se+unda los len+uajes ensambladores. 1n la tercera aparecen J4:T:A), 4.4/, A/F4/, />85, 5A8A/, len+uaje $ los len+uajes estructurados. /a cuarta +eneracin est #ormada por los 8istemas de Festin de .ases de Iatos *8F.I,K I.2, 4racle, 8$base 8O/ 8erver $ en microin#omtica Acces, JoE5ro, Ibase $ =isual .asic, aunque este ltimo no es un 8F.I. 1nsambladores 8on len+uajes en los que a cada instruccin en cdi+o #uente le corresponde una instruccin en cdi+o mquina. 5oseen relativamente pocas instrucciones $ no utilizan direcciones #sicas de memoria, sino que permiten el uso de direcciones simblicas $ de comentarios. 5ara ser ejecutado un pro+rama escrito con len+uaje ensamblador necesita ser traducido, utilizndose para ello un -ensamblador- que +enera cdi+o mquina $ elimina los comentarios. 1l ensamblador +enera una tabla que mantiene re#erencias entre las direcciones simblicas de datos con las direcciones #sicas. 1n al+unos len+uajes ensambladores, que poseen cdi+o eEtendido, a determinadas instrucciones les corresponden varias instrucciones de cdi+o mquina. /en+uaje mquina 1l len+uaje mquina depende de la arquitectura del ordenador, siendo interpretado directamente por el ordenador sin nin+una modi#icacin. 5or las dos razones antes eEpuestas, su velocidad de ejecucin es mu$ alta. /a codi#icacin de los pro+ramas en len+uaje mquina se "ace en binario, octal o "eEadecimal, por lo que no es #cilmente le+ible por el pro+ramador. /os pro+ramas en len+uaje mquina utilizan direcciones #sicas de memoria para almacenar datos. 8on interpretables por ordenadores con el mismo tipo de arquitectura. 5or ejemplo, un pro+rama escrito para una estacin de trabajo de Ii+ital no puede ser interpretado correctamente por una estacin de trabajo de >.B o por un ordenador personal, $ viceversa. 1n cambio, un pro+rama escrito en len+uaje mquina para un ordenador personal con procesador 2@& puede ser inerpretado por un ?@&, $a que ambos procesadores comparten las mismas instrucciones. 1ste tipo de len+uaje ejecuta multitud de operaciones sencillas rpidamente. 5or ejemplo, al+unos pro+ramas no tienen instrucciones para la multiplicacin, por lo que "an de ejecutarlas como una sucesin de sumas, es decir, almacenando valores intermedios en memoria. http9::;;;.galeon.com:?ronen:lenguajes.htm Unidad 6. !#tructura# de Deci#in y Control ).1 1structura secuencial 'oncepto Una estructura secuencial es aquella en la que las instrucciones estan una a continuacin de la otra siguiendo una secuencia nica, sin cambios de ruta. La estructura secuencial tiene una entrada y una salida. En la Figura 4.1 se muestra el diagrama de flujo y el pseudocdigo de una estructura secuencial. Diarama de /lu!o *seudocdio Inicio . . accin 1 accin 2 accin 3 . . 6in /iura 2.1 Estructura Secuencial: Diagrama de Flujo y Pseudocdigo 1!ercicios 1!ercicio 1:- Disee un pseudocdigo que halle el rea y el permetro de un rectngulo. Considere que: area = base x altura y perimetro = 2 x (base+altura). "loritmo I7ICI8 // Declaracin de variables R#!% base, altura, area, perimetro // Entrada de datos %##R base, altura // Proceso de clculo area = base*altura perimetro = 2*(base+altura) // Salida de resultados I/PRI/IR area, perimetro 6I7 1!emplo 2:- Disee un pseudocdigo para convertir una longitud dada en metros a sus equivalentes en centmetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centmetros, 1 pulgada = 2.54 centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies. "loritmo I7ICI8 // Declaracin de variables R#!% cmetr,ccent, cpies, cpulg, cyard // Entrada de datos %##R cmetr // Proceso de clculo ccent = cmetr*100 cpulg = ccent/2.54 cpies = cpulg/12 cyard = cpies/3 // Salida de resultados I/PRI/IR cpulg, cpies, cyard 6I7 1!ercicio 3@G Una institucin benfica europea ha recibido tres donaciones en soles, dolares y marcos. La donacin ser repartida en tres rubros: 60% para la implementacin de un centro de salud, 40% para un comedor de nios y el resto para gastos administrativos. Disee un algoritmo que determine el monto en euros que le corresponde a cada rubro. Considere que: 1 dlar = 3.52 soles, 1 dlar = 2.08 marcos, 1 dlar = 1.07 euros. "loritmo I7ICI8 // Declaracin de variables R#!% c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3 // Entrada de datos %##R csoles, cdolares, cmarcos // Proceso de clculo ceuros = (csoles/3.52 + cdolares + cmarcos/2.08)*1.07 rubro1 = ceuros*0.60 rubro2 = ceuros*0.40 rubro3 = ceuros*0.20 // Salida de resultados I/PRI/IR rubro1, rubro2, rubro3 6I7 1!ercicio )@G En una competencia atltica de velocidad el tiempo se mide en minutos, segundos y centsimas de segundo y, el espacio recorrido se mide en metros. Disee un algoritmo para determinar la velocidad promedio de un atleta en km/hr. Considere que: 1 hora = 60 minutos, 1 minuto = 60 segundos, 1 segundo = 100 centsimas de segundo, 1 kilmetro = 1000 metros. "loritmo I7ICI8 // Declaracin de variables #7"#R8 tmin, tseg, tcen R#!% thor, velkmhr, espmt, espkm // Entrada de datos %##R tmin, tseg, tcen, espmt // Clculo del tiempo total empleado en horas thor = tmin/60 + tseg/3600 + tcen/360000 // Clculo del espacio recorrido en kilmetros espkm = espmt/1000 // Clculo de la velocidad en km/hr velkmhr = espkm/thor // Salida de resultados I/PRI/IR velkmhr 6I7 1!ercicio +@G Disee un algoritmo que determine la cifra de las unidades de un nmero natural. Solucin 1 "n,lisis Puede comprobarse que la cifra de las unidades de un nmero es igual al resto de la divisin del nmero entre 10. Observe para ello las siguientes divisiones: 3245 10 5 324 768 10 8 76 9 10 9 0 Podemos concluir entonces que: unidades = numero T 10 Siendo T el operador residuo. Este operador permite obtener el residuo de una divisin, as como / permite obtener el cociente. "loritmo I7ICI8 // Declaracin de variables #7"#R8 numero, unidades // Entrada de datos %##R numero // Proceso de clculo unidades = numero % 10 // Salida de resultados I/PRI/IR unidades 6I7 Solucin 2 "n,lisis El residuo de una divisin entera puede obtenerse tambin sin recurrir al operador T, de la siguiente forma: unidades = numero - (numero / 10) * 10 observe para esto que en la divisin 6numero91>7 los operandos son enteros por lo que el cociente ser un entero. As por ejemplo, si numero es igual a 32)+, la divisin 6numero91>7 produce 32), aunque matemticamente sea 32).+; es decir, se descarta la parte decimal. "loritmo I7ICI8 // Declaracin de variables #7"#R8 numero, unidades // Entrada de datos %##R numero // Proceso de clculo unidades = numero - (numero/10)*10 // Salida de resultados I/PRI/IR unidades 6I7 1!ercicio 3@G Disee un algoritmo que determine la suma de las cifras de un nmero entero positivo de 4 cifras. Solucin 1 "n,lisis Las cifras pueden ser obtenidas mediante divisiones sucesivas entre 10. Para el efecto, considere el caso de un nmero N igual a 3245: 3245 10 5 324 unidades = N%10 cociente = N/10 324 10 4 32 decenas = cociente%10 cociente = cociente/10 32 10 2 3 centenas = cociente%10 millares = cociente/10 "loritmo I7ICI8 // Declaracin de variables #7"#R8 N, suma, millares, centenas, decenas, unidades, resto // Entrada de datos %##R N // Proceso de clculo unidades = N%10 cociente = N/10 decenas = cociente%10 cociente = cociente/10 centenas = cociente%10 millares = cociente/10 suma = unidades + decenas + centenas + millares // Salida de resultados I/PRI/IR suma 6I7 Solucin 2 "n,lisis 2 Considerando que el nmero tiene 4 cifras, las cifras tambin pueden ser obtenidas mediante divisiones sucesivas entre 1000, 100 y 10. Para el efecto, considere el caso de un nmero N igual a 3245: 3245 1000 245 3 millares = N/1000 resto = N%1000 245 100 45 2 centenas = resto/100 resto = resto%100 45 10 3 4 decenas = resto/10 unidades = resto%10 "loritmo I7ICI8 // Declaracin de variables #7"#R8 N, suma, millares, centenas, decenas, unidades, resto // Entrada de datos %##R N // Proceso de clculo millares = N/1000 resto = N%1000 centenas = resto/100 resto = resto%100 decenas = resto/10 unidades = resto%10 suma = unidades + decenas + centenas + millares // Salida de resultados I/PRI/IR suma 6I7 1!ercicio 5@G Disee un algoritmo que lea la hora actual del da HH:MM:SS y determine cuantas horas, minutos y segundos restan para culminar el da. "loritmo I7ICI8 // Declaracin de variables #7"#R8 hor1, min1, seg1, hor2, min2, seg2, segres, resto // Entrada de datos %##R hor1, min1, seg1 // Clculo de la cantidad de segundos que restan para culminar el da segres = 86400 - (hor1*3600 + min1*60 + seg1)
// Descomposicin de segres en horas, minutos y segundos hor2 = segres/3600 resto = segres%3600 min2 = resto/60 seg2 = resto%60 // Salida de resultados I/PRI/IR hor2, min2, seg2 6I7 1!ercicio ;@G Disee un algoritmo para sumar dos tiempos dados en horas, minutos y segundos. "loritmo I7ICI8 // Declaracin de variables #7"#R8 hor1, min1, seg1, hor2, min2, seg2, hor3, min3, seg3, totseg, resto // Entrada de datos %##R hor1, min1, seg1, hor2, min2, seg2 // Determina la cantidad total de segundos entre los dos tiempos totseg = (hor1+hor2)*3600 + (min1+min2)*60 + (seg1+seg2)
// Descompone totseg en horas, minutos y segundos hor3 = totseg/3600 resto = totseg%3600 min3 = resto/60 seg3 = resto%60 // Salida de resultados I/PRI/IR hor3, min3, seg3 6I7 1!ercicio M@G El sueldo neto de un vendedor se calcula como la suma de un sueldo bsico de S/.250 ms el 12% del monto total vendido. Disee un algoritmo que determine el sueldo neto de un vendedor sabiendo que hizo tres ventas en el mes. "loritmo I7ICI8 // Declaracin de variables R#!% venta1, venta2, venta3, ventatot, comision, sueldoneto // Entrada de datos %##R venta1, venta2, venta3 // Proceso de clculo ventatot = venta1 + venta2 + venta3 comision = 0.12*ventatot sueldoneto = 250 + comision // Salida de resultados I/PRI/IR sueldoneto 6I7 1!ercicio 1>@G Disee un algoritmo que determine el porcentaje de varones y de mujeres que hay en un saln de clases. "loritmo I7ICI8 // Declaracin de variables R#!% porcvar, porcmuj #7"#R8 varones, mujeres, total // Entrada de datos %##R varones, mujeres // Proceso de clculo total = varones + mujeres porcvar = varones*100.0/total porcmuj = mujeres*100.0/total // Salida de resultados I/PRI/IR porcvar, porcmuj 6I7 1!ercicio 11@G En pases de habla inglesa es comn dar la estatura de una persona como la suma de una cantidad entera de pies ms una cantidad entera de pulgadas. As, la estatura de una persona podra ser 3' 2" ( 3 pies 2 pulgadas ). Disee un algoritmo que determine la estatura de una persona en metros, conociendo su estatura en el formato ingls. Considere que: 1 pie = 12 plg, 1 plg = 2.54 cm, 1 m = 100 cm. "loritmo I7ICI8 // Declaracin de variables R#!% estmt #7"#R8 cpies, cplgs // Entrada de datos %##R cpies, cplgs // Proceso de clculo estmt = (cpies*12 + cplgs)*2.54/100 // Salida de resultados I/PRI/IR estmt 6I7 1!ercicio 12@G Disee un algoritmo que exprese la capacidad de un disco duro en megabytes, kilobytes y bytes, conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte = 1024 bytes, 1 megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes. "loritmo I7ICI8 // Declaracin de variables R#!% cgigabyte, cmegabyte, ckilobyte, cbyte // Entrada de datos %##R cgigabyte // Proceso de clculo cmegabyte = cgigabyte*1024 ckilobyte = cmegabyte*1024 cbyte = ckilobyte*1024 // Salida de resultados I/PRI/IR cmegabyte, ckilobyte, cbyte 6I7 1!ercicio 13@G Disee un algoritmo que intercambie las cifras de las unidades de dos nmeros naturales. "loritmo I7ICI8 // Declaracin de variables #7"#R8 numero1, numero2, unidades1, unidades2 // Entrada de datos %##R numero1, numero2 // Determina las cifras de las unidades unidades1 = n1%10 unidades2 = n2%10 // Intercambia las cifras de las unidades numero1 = numero1 - unidades1 + unidades2 numero2 = numero2 - unidades2 + unidades1 // Salida de resultados I/PRI/IR n1, n2 6I7 0ttp@99HHH.eocities.com9davidQees9"loritmia9cap>2.0tm Es$-!c$!-a Sec!e"cial 1s aqu(lla en la que una accin *instruccin, si+ue a otra en secuencia. /as tareas se suceden de tal modo que la salida de una es la entrada de la si+uiente $ as suscesivamente "asta el #in del proceso. /a estructura secuencial tiene una entrada $ una salida. 8u representacin +r#ica es la si+uienteK
18T:!T!:A 81!1)>A/ ....
I>AF:ABA )D8 I1 !)A 18T:!T!:A 81!1)>A/
581!I44I>F4 I1 !)A 18T:!T!:A 81!1)>A/ >nicio K K acciones K K #in
E.em*lo< alcular el salario neto de un trabajador en #uncin del nmero de "oras trabajadas, precio de la "ora de trabajo $ considerando unos descuentos #ijos al sueldo bruto en concepto de impuestos *20 por 100,.
).2 1structuras de Transferencia Incondicionales ).3 1structuras de Transferencia 'ondicionales 1structuras 'ondicionales 1n este captulo se revisan los distintos m(todos con los que controla el %l!.o l+ico de un pro+rama. omo se revis en el captulo anterior, los operadores relaciones binarios que se usan sonK ==, !=, <, <=, > $ >= adems los operadores l+icos binariosK ||, && $ el operador l+ico unario de ne+acin !, que slo toma un ar+umento. /os operadores anterior son usados con las si+uientes estructuras que se muestran. La sentencia i3 /as tres #ormas como se puede emplear la sentencia if sonK if (condicion) sentencia; ...o if (condicion) sentencia5; else sentencia7; ...o if (condicion5) sentencia5; else if (condicion7) sentencia7; ... else sentencia!; 1l #lujo l+ico de esta estructura es de arriba "acia abajo. /a primera sentencia se ejecutar $ se saldr de la estructura if si la primera condicin es verdadera. 8i la primera condicin #ue #alsa, $ eEiste otra condicin, se evala, $ si la condicin es verdadera, entonces se ejecuta la sentencia asociada. 8i eEisten ms condiciones dentro de la estructura if, se van evaluando (stas, siempre $ cuando las condiciones que le precedan sean #alsas. /a sentencia que esta asociada a la palabra reservada else, se ejecuta si todas las condiciones de la estructura if #ueron #alsas. 5or ejemploK main() { int x, y, w; ........ if (x>0) { z=w; ....... } else { z=y; ....... } } 1l operador 9 1l operador ternario condicional ? es ms e#iciente que la sentencia if. 1l operador ? tiene el si+uiente #ormatoK expresion5 ? expresion 7 : expresion8; Oue es equivalente a la si+uiente eEpresinK if (expresion5) then expresion7 else expresion8; 5or ejemplo, para asi+nar el mEimo de a $ b a la variable z, usando ?, tendramosK z = (a>b) ? a : b; que es lo mismo queK if (a > b) z = a; else z = b; 1l uso del operador ? para reemplazar las sentencias if ... else no se restrin+e slo a asi+naciones, como en el ejemplo anterior. 8e pueden ejecutar una o ms llamadas de #uncin usando el operador ? poni(ndolas en las eEpresiones que #orman los operandos, como en el ejemplo si+uienteK f1(int n) { printf("%d ",n); } f2() { printf("introducido\n"); } main() { int t; printf(": "); scanf("%d",&t); /* imprime mensaje apropiado */ t ? f1(t) + f2() : printf("Se di un cero\n"); } La sentencia s:itch Aunque con la estructura if ... else if se pueden realizar comprobaciones mltiples, en ocasiones no es mu$ ele+ante, $a que el cdi+o puede ser di#cil de se+uir $ puede con#undir incluso al autor transcurrido un tiempo. 5or lo anterior, tiene incorporada una sentencia de bi#urcacin mltiple llamada switch. on esta sentencia, la computadora comprueba una variable sucesivamente #rente a una lista de constantes enteras o de caracter. Iespu(s de encontrar una coincidencia, la computadora ejecuta la sentencia o bloque de sentencias que se asocian con la constante. /a #orma +eneral de la sentencia switch esK switch (variable) { case constante1: secuencia de sentencias breaKX case constante2: secuencia de sentencias breaKX case constante3: secuencia de sentencias breaKX ... default: secuencia de sentencias } donde la computadora ejecuta la sentencia default si no coincide nin+una constante con la variable, esta ltima es opcional. uando se encuentra una coincidencia, la computadora ejecuta las sentencias asociadas con el case "asta encontrar la sentencia break con lo que sale de la estructura switch. /as limitaciones que tiene la sentencia switch ... case respecto a la estructura if sonK Slo se tiene posibilidad de revisar una sola variable. Con switch slo se puede comprobar por igualdad, mientras que con if puede ser con cualquier operador relacional. No se puede probar ms de una constante por case. /a #orma como se puede simular el ltimo punto, es no teniendo sentencias asociados a un case, es decir, teniendo una sentencia nula donde slo se pone el caso, con lo que se permite que el #lujo del pro+rama caiga al omitir las sentencias, como se muestra a continuacinK switch (letra) { case 'a': case 'e': case 'i': case 'o': case 'u': numvocales++; break; case ' ': numesp++; break; default: numotras++; break; } 1!ercicios 1. 1scribir un pro+rama que lea dos caracteres, e imprima su valor cuando se pueda interpretar como un nmero "eEadecimal. Aceptar letras ma$sculas $ minsculas para los valores del 10 al 1C. 2. /eer un valor entero. 8uponer que el nmero es un da de la semana. 8uponer que 0 corresponde a Iomin+o $ as sucesivamente. >mprimir el nombre del da. 7. Iados como entrada 7 enteros representando la #ec"a como da, mes, ao, imprimir la #ec"a del da anterior. 5or ejemplo para una entrada comoK 1 7 1662 /a salida serK Jec"a anterior a 1D7D1662 es 26D02D1662 ?. 1scribir un pro+rama el cual lea dos valores enteros. 8i el primero es menor que el se+undo, que imprima el mensaje \\Arribacc. 8i el se+undo es menor que el primero, que imprima el mensaje \\Abajocc. 8i los nmeros son i+uales, que imprima el mensaje \\i+ualcc. 8i "a$ un error en la lectura de los datos, que imprima un mensaje conteniendo la palabra \\1rrorcc $ "a+a exit( 0 ); "ttpKNN+arota.#ismat.umic".mENmn1NmanualNnode?."tml Co"&icio"ales /a especi#icacin #ormal de al+oritmos tiene realmente utilidad cuando el al+oritmo requiere una descripcin ms complicada que una lista sencilla de instrucciones. 1ste es el caso cuando eEisten un nmero de posibles alternativas resultantes de la evaluacin de una determinada condicin. /as estructuras selectivas se utilizan para tomar decisiones l+icasA de a" que se suelan denominar tambi(n estructuras de decisin o alternativas* 1n las estructuras selectivas se evala una condicin $ en #uncin del resultado la misma se realiza una opcin u otra. /as condiciones se especi#can usando eEpresiones l+icas. /a representacin de una estructura selectiva se "ace con palabras en pseudocdi+o *i#, t"en, else o bien en espaol si, entonces, sino,, con una #i+ura +eom(trica en #orma de romba o bien con un trin+ulo en el interior de una caja rectan+ular.
/as estructuras selectivas o alternativas pueden serK 8imples Bltiples
Al$e-"a$i;a Sim*le Esi,e"$o"ces=i%,$+e"F /a estructura alternativa simple si,e"$o"ces *en in+l(s i%,$+e" o bien I0, THEN , ejecuta una determinada accin cuando se cumple una determinada condicin. /a seleccin si,e"$o"ces evala la condicin $ . . . 8i la condicin es verdadera+ entonces ejecuta la accin 81 *o acciones caso de ser 81 una accin compuesta $ constar de varias acciones,.
8i la condicin es falsa, entonces no "acer nada.
A continuacin se muestra la +r#ica de la estructura condicional simple.
9lternativas M:ltiples ;seg:n4sea+ caso de < case= uando eEisten ms de dos elecciones *alternativas, posibles, es cuando se presenta el caso de alternativas mltiples. 8i el nmero de alternativas es +rande puede plantear serios problemas de escritura del al+oritmo $ naturalmente de le+ibilidad. /a estrucura de decisin mltiple evaluar una eEpresin que podr tomar n valores distintos 1,2,7,?,..n . 8e+n que elija uno de estos valores en la condicin, se realizara una de las n acciones, o lo que es i+ual, el #lujo del al+oritmo se+uir un determinado camino entre los n posibles.
/a representacin +r#ica se muestra a continuacinK
Dia3-ama &e 0l!.o
Dia3-ama N,S
Bodelo 1 Bodelo 2
Pse!&oc7&i3o 1n in+l(s la estructura de decisin mltiple se representa
Case eEpresin o% de1eK accin 81 de2eK accin 82 K deneK accin 8n
else accin 8E
e"&Xcase
E.em*lo< 8e desea disear un al+oritmo que escriba los nombres de los das de la semana en #uncin del valor de una variable I>A introducida por teclado. /os das de la semana son 'A por consi+uiente, el ran+o de valores de I>A ser 1..', $ caso de que I>A tome un valor #uera de este ran+o se deber producir un mensaje de error advirtiendo la situacin anmala.
I"icio /eer I>A 8e+nPsea I>A "acer 1K escribir*c/unesc, 2K escribir*cBartesc, 7K escribir*cBi(rcolesc, ?K escribir*c%uevesc, CK escribir*c=iernesc, &K escribir*c8abadoc, 'K escribir*cIomin+oc, else escribir*c1rrorc, #inPse+n %i" Ifs anidados En algunas aplicaciones, una de las alternativas de una estructura ifGt0enGelse puede incluir un decisin adicional. Por ejemplo, despus de que se elija una determinada accin sobre una determinada calificacin de una prueba, podra quererse evitar la posibilidad de error en los datos de entrada. Esto requiere una comprobacin adicional para verificar que los datos de entrada son validos, lo que sugiere el uso de una estructura if-then-else adicional incluida en cada una de las dos alternativas originales. Este proceso es un ejemplo de anidamiento. Ejemplo: "loritmo -"AQ3 Este algoritmo lee tres nmeros A, B, C, imprimiendo el valor del ms grande. Se supone que los tres valores son diferentes. 1.- Entrada de valores Read (A, B, C) 2.- Se determina el valor ms grande mediante comprobacin por pares if A > B then if A > C then MAX A (A > B, A > C) else MAX C (C > A > B) else if B > C then MAX B (B > A, b > C) else MAX C (C > B > A) 3.- Se imprime el valor ms grande Write `El valor ms grande es`, MAX 4.- Termino Exit 'ondiciones compuestas Estas condiciones se obtienen a partir de las expresiones simples, utilizando los operadores lgicos and, or y not. Los significados de estos operadores se describen adecuadamente por medio de las tablas de verdad. Las condiciones compuestas pueden utilizarse ya sea en enunciados if o en repeticiones condicionales. Ejemplo: "loritmo -"AQ3 62a. versin7 Este algoritmo lee tres nmeros A, B, C, imprime el valor del ms grande de ellos. Se supone que los tres valores son distintos. 1. - Entrada de los datos Read (A, B, C) 2. - Se determina el mayor valor if A > B and A > C then MAX A if B > A and B > C then MAX B if C > A and C > B then MAX C 3. - Se imprime el valor ms grande Write `El valor ms grande es`, MAX 4. - Termino http9::na0ar.uan.m8:=ia1alos:!structuras@2>de@2>desicion.html ).) 1structuras 2epetitivas 6Bucles7 Es$-!c$!-as Re*e$i$i;as ECiclosF En C existen 3 estructuras repetitivas: H0ile$ for y do .. H0ile Estructura While Sintaxis: :hile(condici;n) !cci;n, En este caso, la sentencia "ccin es ejecutada mientras el condicional condicin se evala verdadera (distinta de 0) En el caso de que el cuerpo del while (acciones a ejecutar en caso de que el condicional se verifique) posea ms de una sentencia, todas ellas son encerradas entre llaves: :hile(condici;n) < !cci;n', !cci;n=, ... > El condicional es una expresion relacional que puede involucrar operadores relacionales (>, <, >=, <=, ==, !=) y/o operadores logicos (&&, ||, !) Ejemplo: /* Programa que imprime la tabla de conversin de Fahrenheit a Celsius para F = 0, 20, 40,..., 300 */ #include <stdio.h> int main() { int Lower, Upper, Step; float Fahr, Celsius; Lower = 0; Upper = 300; Step = 20; Fahr = Lower; while(Fahr <= Upper) { Celsius = (5.0/9.0) * (Fahr - 32.0); printf("%4.0f F -> %6.1f C\n", Fahr, Celsius); Fahr = Fahr + Step; } /* fin del while */
return 0; } /* fin del main */ NOTAS: LaLo H0ile6...7 Y ... Z Lo &ue se encuentra entre par(ntesis es una eBpresin a evaluar. -ientras el resultado de la misma sea distinto de cero$ se e!ecutan las sentencias asociadas &ue se encuentran encerradas entre llaves. " este tipo de sentencias se las llama sentencias compuestas. Si el cuerpo de esta sentencia consiste en una sola sentencia simple$ pueden omitirse las llaves. Las sentencias compuestas no llevan el car,cter X como terminador. *ara me!orar la leibilidad del prorama$ conviene indentar las sentencias compuestas. ',lculo % asinacin@ Celsius = (5.0/9.0) * (Fahr - 32.0) 1l punto decimal en los operandos de la divisin es re&uerido para &ue la operacin sea llevada en punto flotanteX de lo contrario la misma se efectPa como cociente de nPmeros enteros$ truncando por lo tanto el resultado a cifras enteras. 1n nuestro caso ser.a truncado a >. Estructura for Esta estructura es una generalizacin de la estructura H0ile usada en el ejercicio anterior. Su funcin es ejecutar iterativamente el cuerpo del bloque, que como en el caso del H0ile puede ser simple o compuesto. La definicin de esta estructura de control posee 3 partes separadas por el carcter ";". 3or(a, 2, c) < ... ... > La parte a es la de inicializacin, y puede poseer una sentencia, ninguna, o varias separadas por el carcter ",". Esta parte se ejecuta inmediatamente antes de entrar en el ciclo. La parte b es el criterio o condicin de control de la iteracin. Se evala antes de entrar a cada ciclo, inclusive en la primer iteracin. Si su resultado es distinto de cero se ejecuta el ciclo; sino se abandona el ciclo y se sigue con la sentencia posterior al cuerpo del for. La parte c es la reinicializacin, que es ejecutada al final de cada ciclo. Podemos simular el bloque for con la siguiente lgica: a, :hile(2) < ... ... c, > E.em*lo< /* Tabla de conversin de grados F a Celsius utilizando constantes simblicas y bloque for */ #include <stdio.h> #define LOWER 0 #define UPPER 300 #define STEP 20 main() { int Fahr; for(Fahr = LOWER; Fahr <= UPPER; Fahr += STEP) printf("%4.0f F -> %6.1f C\n", Fahr, (5.0/9.0)* (Fahr - 32)); } NOTAK Uso de constantes simblicas. Cuando se requieran valores numricos constantes en un programa, deben definirse como constantes y no usar sus valores numricos dentro del programa. C permite definir constantes simblicas (directiva Udefine al preprocesador) que asocian un smbolo (LOWER, UPPER, STEP) con una expresin (0,300 y 20 respectivamente) de tal manera que el preprocesador reemplaza cualquier ocurrencia de esos smbolos por sus expresiones asociadas Es$-!c$!-a Do,Y+ile la estructura de control do-while es una variacin sobre el bloque while do < !cci;n', !cci;n=, ... >:hile(condici;n), La diferencia esta en que la condicin se chequea al final y las acciones son ejecutadas al menos una vez. Por ejemplo /* Programa que pide al usuario un nmero entero entre 1 y 10. Se contina pidiendo el valor hasta que cumpla la condicin */ #include <stdio.h> int main() { int n, error; do { printf("Ingrese un nmero entero entre 1 y 10: "); scanf("%d", &n); if (error = (n < 1 || n > 10)) printf("\nERROR: Intentelo nuevamente!!\n\n"); } while(error); /* ahora puedo procesar el valor ingresado sabiendo que es correcto. */ return 0; } /* fin del main */ http://www.ldc.usb.ve/~gabro/teaching/CI2125/Clase5_ciclos.htm Es$-!c$!-as Re*e$i$i;as /as estructuras que repiten una secuencia de instrucciones un nmero determinado de veces se denominan Bucles $ se denomina Iteracin al "ec"o de repetir la ejecucin de una secuencia de acciones. 1ntre las estructuras repetitivas se encuentranK Bientras *G"ile, :epetir *repeat, Iesde *#or, 1., Es$-!c$!-a Mie"$-as E>+ileF /a estructura repetitiva G"ile, es aqu(lla en que el cuerpo del bucle se repite mientras se cumple una determinada condicin, su representacin +r#ica esK
E.em*lo< ontar los nmeros enteros positivos introducidos por teclado. 8e consideran dos variables enteras )!B1:4 $ 4)TAI4: *contar el nmero de enteros positivos,. 8e supone que se leen nmeros positivos $ se detiene el bucle cuando se lee un nmero ne+ativo o cero.
Pse!&oc7&i3o I"icio contador 0 Lee- *numero, Bientras numero T 0 "acer contador contadorR1 Lee- *numero, JinPBientras Esc-ibi-*c1l nmero de enteros positivos es K c, contador, 0i"
Dia3-ama &e 0l!.o
Re*-ese"$aci7" e" N,S Unidad 7. Arreglo# y Arc)i%o# +.1 "rrelos 68ectores % -atrices7 /as variables que "emos utilizado "asta a"ora nos permiten el almacenamiento de un solo valor a la vez. 5ara resolver cierto tipo de problemas con datos mltiples en #orma e#iciente, se requiere almacenamiento en conjunto. A esta or+anizacin de elementos se le conoce con el nombre de arreglo* 4tra de#inicin de arreglo ms completa */uis %o$anes A.,, es un conjunto #inito $ ordenado de elementos "omo+(neos. /a propiedad -ordenado- si+ni#ica que el elemento primero, se+undo, terceroVnD(simo de un arre+lo puede ser identi#icado. /os elementos de una arre+lo debern ser "omo+(neos, es decir, del mismo tipo de datos. 5or ejemplo un arre+lo puede estar compuesto de todos sus elementos de tipo cadena, otro puede tener sus elementos de tipo entero, etc. Al tratar el tema de arre+los es necesario conocer el t(rmino de dimensin. Dime"si7" Desc-i*ci7" 0 !n solo punto. 1 *vector o lista, !na recta. ontiene lar+o. 2 *matriz o tabla, ontiene lar+o $ anc"o. 7 *cubo, Tiene lar+o, anc"o $ #ondo. "eclaracin de un 9rreglo NomX;a-iable < A--e3lo Z&ime"si7"[ &e NomX$i*o E" &o"&e &ime"si7" es*eci%ica < Vs!b5"&ice i"%e-io-U \Vs!b5"&ice s!*e-io-U 1n el orden K Jila, olumna, Jondo. E.em*lo &e !"a &ecla-aci7" < 0 "imensin < E 20 donde E, es de tipo 1ntero. 1 "imensin 2 > 1 2 7 ?
Ed2e C E K arre+lo d1..?e de 1nteros. ? "imensiones < 1 / 1 2
A
HZ/D2[ S H < a--e3lo Z1..1D 1..2[ &e E"$e-os. @ "imensiones 2 Ed1,?,2e 7 E K arre+lod1..7, 1..?, 1..2e de 1nteros. Las o*e-acio"es !e se *!e&e" -eali(a- co" a--e3los &!-a"$e el *-oceso &e -esol!ci7" &e !" *-oblema so" < Asi+nacin /ecturaN1scritura :ecorrido *acceso secuencial, Actualizar *aadir, borrar, insertar, 4rdenacin .squeda 'ec$o-es 8on aqu(llos de una sola dimensin, por lo que tambi(n son llamados arreglos 'nidimensionales* E.em*lo < !n vector de una dimensin llamado A/>J, que consta de n elementos. calif;1= calif;?= / calif;n, ?= calif;n, 1= calif;n= 1l subndice o ndice de un elemento *1, 2 Vn, desi+na su posicin en la ordenacin del vector. 4tras posibles notaciones del vector son K a 1 D a / D\Da " E" ma$em4$icas ? al3!"os le"3!a.esEBASICF AE1FD AE/FD\AE"F AZ1[D AZ/[D\AZ"[ E" *-o3-amaci7" EPascalF /os vectores se almacenan en memoria central de la computadora en un orden ad$acente. As, un vector de C0 elementos denominado )!B1:48 se representa +r#icamente por C0 posiciones de memoria sucesivas. Memo-ia NUMEROSE1F Di-ecci7" H NUMEROSE/F Di-ecci7" HP1 NUMEROSE1F Di-ecci7" HP/ < < NUMEROSE6CF Di-ecci7" HP2W ada elemento de un vector se puede procesar como si #uese una variable simple al ocupar una posicin de memoria. As K )!B1:48*2C, 'C *almacena el valor 'C en la posicin 2C a del vector )!B1:48 $ la instruccin de salida K escribir )!B1:48*2C,. "eclaracin nom Parre+lo S arre+lodlimin#..limsupe de tipo
)4B.:18S arre+lo d1..10e de carcter 8i+ni#ica que )4B.:18 es un arre+lo *arra$, unidimensional de 10 elementos *1 a 10, de tipo carcter. 9signacin NOMBRESESF ]A"a^ Asi3"a el ;alo- ]A"a^ al eleme"$o S &el ;ec$o- NOMBRES !ectura<1scritura de "atos /a /ecturaN1scritura de datos en un arre+lo u operaciones de entradaNsalida normalmente se realizan con estructuras repetitivas, aunque puede tambi(n "acerse con estructuras selectivas. /as instrucciones simples de lecturaNescritura se representarn como K leer A /ectura del vector A escribir A 1scritura del vector A leer =*C, /eer el elemento =*C, del vector =
Acceso Sec!e"cial al 'ec$o- E-eco--i&oF 8e puede acceder a los elementos de un vector para introducir datos *escribir, en el o bien para visualizar su contenido *leer,. 1stas operaciones se realizan utilizando estructuras repetitivas, cu$as variables de control *por ejemplo >, se utilizan como subndices del vector *por ejemplo, <*>,. 1l incremento del contador del bucle producir el tratamiento sucesivo de los elementos del vector.
E.em*lo < /ectura de 1C valores enteros de un vector denominado T4TA/.
T4TA/S a--a? d1..1Ce de entero &es&e i 1 +as$a 1C +ace- lee- T4TA/*i, %i" X&es&e
8i se cambian los limite in#erior $ superior, por ejemplo, C $ 12, el bucle de lectura sera K &es&e i C +as$a 12 +ace- lee- T4TA/*i, %i"X&es&e
/a salida o escritura de vectores se representa de un modo similar. &es&e i 1 +as$a 1C +ace- esc-ibi- T4TA/*i, %i"X&es&e =isualiza todo el vector completo *un elemento en cada lnea independiente,.
Ac$!ali(aci7" &e !" 'ec$o- 5uede constar de tres operaciones ms elementales K aF ALa&i- elementos *aade un nuevo elemento al #inal del vector, !n arre+lo A se "a dimensionado a & elementos, pero solo se "an asi+nado ? valores a los elementos A*1,, A*2,, A*7,, A*?,, se podrn aadir dos elementos ms con una simple accin de asi+nacin. A*C, 1C A*&, 6
b., I"se-$a- elementos *introduce un elemento en el interior de un vector,
E.em*lo < 8e tiene un arre+lo )4B de & elementos de nombres de personas, en orden al#ab(tico $ se desea insertar un nuevo nombre.
Ualcular la posicin ocupada por el elemento a insertarW 5 U>nicializar contador de insercionesW i n. mie"$-as i TS 5 "acer Utrans#erir el elemento actual "acia abajo, a la posicin iR1W )4B*iR1, )4B*i, Udecrementar contadorW i iD1 %i"Xmie"$-as U>nsertar el elemento en la posicin 5W )4B*5, inuevo elementoZ UActualizar el contador de elementos del vectorW n nR1 %i"
cF Bo--a- elementos *1limina elementos de un vector,
Al3o-i$mo &e Bo--a&o I"icio Use utilizar una variable auEiliar A!<, que contendr el valor del elemento que se desea borrarW A!< )4B*i, &es&e i j "asta )D1 +ace- Ullevar elemento jR1 "acia arribaW )4B*i, )4B*iR1, %i"X&es&e Uactualizar contador de elementosW Ua"ora tendr un elemento menos, )D1W ) )D1 0i"
Re%e-e"cia a !" eleme"$o &e A--e3lo variable de arre+lo dsubndicee 1jemplo K E Ed7e 6 escribir *Ed2e, [ 6 1 2 7
E.e-cicio < 8e desea la lectura $ desple+ado de C nombres. :esuelva el problema por cada uno de los si+uientes criterios K a, /ectura $ desple+ado alternados. b, Todas las lecturas, todos los desple+ados. aF ;a-iables < strin+ K nom entero K E
>nicio 5ara E 1 "asta C "acer escribir*i)ombre [ i, leer*nom, escribir* i/a persona nmeroZ, E, i se llama K i,nom, Jin
No$a < )o se utilizaron arre+los porque no se requera de almacenamiento mltiple.
bF ;a-iables < nom K Arre+lod1..Ce de strin+ E K 1ntero
>nicio *a-a E 1 +as$a C +ace- esc-ibi-*iIame el nombre nmeroZ,E,Z [Z, lee-*nomdEe, *a-a E 1 +as$a C +ace- esc-ibi-*i/a persona nmero i, E,Z se llama K i,nomdEe, Jin
O-&e"aci7" &e A--e3los 1Eisten diversos m(todos para ordenar los elementos de un arre+lo. 1l ms conocido de ellos *no el mejor, es el M#todo de la Burbua.
1l m(todo consiste en "acer un recorrido por el arre+lo comparando parejas de elementos A si estos no estn en el orden deseado, se procede a intercambiarlos.
Al #inalizar el recorrido se veri#ica la cantidad de intercambios, si esta es 0 se asume que el arre+lo est ordenado A en caso contrario se inicia nuevamente el recorrido.
/as parejas de elementos que se comparan deben ser conti+uos *elemento1 $ elemento2, elemento2 $ elemento7, etc,. 1l nmero total de comparaciones es n'1 *donde n es la cantidad de elementos,.
E.em*lo < 8e requiere la ordenacin de una lista con C valores enteros previamente introducidos.
'a-iables < />8TA K arre+lod1..Ce de entero E, auE K entero cambio K boleano
>nicio 5ara E 1 "asta C "acer escribir*iIame el valorZ,E,Z KZ, leer* />8TAdEe, repetir cambio #also para E 1 "asta ? "acer si />8TAdEe T />8TAdER1e entonces auE />8TAdEe />8TAdEe />8TAdER1e />8TAdER1e auE cambio ;erdadero #inPsiPentonces "asta cambio S #also escribir*i/ista ordenadaZ, para E 1 "asta C "acer escribir*i1lemento nmeroZ,E,Z esZ,/>8TAdEe, Jin !n arre+lo unidimensional es un tipo de datos estructurado que est #ormado de una coleccin #inita $ ordenada de datos del mismo tipo. 1s la estructura natural para modelar listas de elementos i+uales. 1l tipo de acceso a los arre+los unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arre+lo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un ndice para cada elemento del arre+lo que nos da su posicin relativa. 5ara implementar arre+los unidimensionales se debe reservar espacio en memoria, $ se debe proporcionar la direccin base del arre+lo, la cota superior $ la in#erior. REPRESENTACION EN MEMORIA /os arre+los se representan en memoria de la #orma si+uienteK 5 ? array@'..AB o3 integer 5ara establecer el ran+o del arre+lo *nmero total de elementos, que componen el arre+lo se utiliza la si+uiente #ormulaK R!7-8 & %s C (%iD') dondeK ls S /mite superior del arre+lo li S /mite in#erior del arre+lo 5ara calcular la direccin de memoria de un elemento dentro de un arre+lo se usa la si+uiente #ormulaK !@iB & 2ase(!) D @(iCli) 4 :B donde K A S >denti#icador nico del arre+lo i S >ndice del elemento li S /mite in#erior G S )mero de b$tes tipo componente 8i el arre+lo en el cual estamos trabajando tiene un ndice numerativo utilizaremos las si+uientes #rmulasK R!7-8 & ord (ls) C (ord (li)D') !@iB & 2ase (!) D @ord (i) C ord (li) 4 :B "rrelos Unidimensionales /a declaracin del arre+lo unidimensional es un tipo se+uido de un identi#icador con una eEpresin constante >)T entre corc"etes. 1l valor de la eEpresin, que debe ser positivo,es el tamao del arre+lo $ especi#ica el numero de elementos que contiene. /a #orma de declarar un arre+lo es la si+uienteK l tipo T l variable T d)e Ieclara un arre+lo de nombre l variable T con ) elementos de tipo l tipo T, en donde ) es una constante, /os corc"etes d e, sirven para encerrar los subndices. 5or ejemplo, para declarar un arre+lo de enteros llamado arre+lo con C elementos se "ace de la si+uiente #ormaK int arre+lodCeA 5ara accesar a al+n elemento del arre+lo, puede "acerse de las si+uientes #ormasK a, int arre+lode S U0,1,2,7,?,CW NQse valida cuando se inicializan todos los elementos del arra$QN b, int arre+lod?e S U?, 2, 7, &W NQse declara $ asi+na valores iniciales al arre+lo QN c, arre+lod7e S 10A NQ Asi+na 10 al ?er elemento del arre+lo listaQN num S arre+lod2eA NQ Asi+na el contenido del 7er elemento a la variable nu m QN Una Estructura de Datos, es una coleccin de datos que se caracterizan por su organizacin las operaciones que se definen en ella. Las Estructuras de Datos pueden ser de dos tipos: Estticas y Dinmicas. Las Estructuras de Datos estticas son aquellas en las que el espacio ocupado en la memoria se define en tiempo de compilacin no puede ser modificado durante la ejecucin del programa; por el contrario, en las Estructuras de Datos Dinmicas el espacio ocupado en memoria puede ser modificado en tiempo de ejecucin Un !""!# $arreglo%, es una coleccin de datos del mismo tipo, que se almacena en posiciones consecuti&as de memoria y reci'e un nom're com(os componentes indi&iduales de un arreglo se llaman Elementos y se distinguen entre ellos por el nom're del arreglo seguido uno o &arios )ices. El ice es un n( que indica la posici)ue ocupa el elemento dentro del arreglo. iiiiiiiiiiii i Los elementos del arreglo se almacenan en la memoria de la computadora en posiciones adyacentes $un elemento por posic Los arreglos se iiiiiiiiiiii i di&iden en: * U+,D,-E+.,/+!LE. $0ectores o Listas% * 1,D,-E+.,/+!LE. $2a'las o matrices% * -UL2,D,-E+.,/+!LE. !rreglos Unidimensionales o 0ectores. Un 0ector es una secuencia de elementos del mismo tipo y en los que el orden es significati&o. El orden est ado por el )ice del &ector; por ejemplo: 0ector3456 0 9 21 -1 8 5 -9 15 7 6 -4 33 Declarac e 0ectores: iiiiiiiiiiiii i Es la reser&ac e un espacio en memoria, para almacenar un conjunto de datos. iiiiiiiiiiiii i 7ormato: NOMBRE: ARRAY [N] DE TIPODEDATO NOMBRE: ,dentificador del arreglo. N: +( de elementos del arreglo. TIPODEDATO: Entero, "eal, 8adena, o. LLLLLLLLLLLLL L El )ice del primer elemento del &ector es 5 $cero% y el (o es +*4. Ejemplo: Declarar un 0ector llamado 2E-9 que almacene las tempraturas de cada :ora durante un d) 2E-9 : !""!# 3;<6 DE "E!L A--e3los A di#erencia de los elementos estudiados "asta a"ora, los arre+los pertenecen al dominio de los tipos de datos $ no al de las instrucciones de 5ascal. A +randes ras+os, son conjuntos de variables que comparten un mismo nombre, pudiendo ser re#erenciadas de manera individual las variables del conjunto con a$uda de uno o ms ndices. /os arre+los +uardan estrec"a similitud con elementos de datos de la vida cotidiana, como los vectores $ las tablas, $ en cierto modo trazan una lnea que separa la pro+ramacin bsica de la avanzada. omo la sintaEis #ormal de los arre+los es mu$ +eneral, se comenzar de#iniendo los arre+los unidimensionales o vectores. A--e3los !"i&ime"sio"ales< ;ec$o-es 8upn+ase que se tienen cinco variablesK a, b, c, d $ e. 8i se desea "acer re#erencia a las cinco, deben usarse sus nombres, $ eso implicara, a nivel de pro+ramacin, poner sus nombres en cada sentencia que se requiera *:ead/n, #rmulas, etc., $ repetir las mismas cinco veces. !n en#oque ms +eneral es poner a las variables un mismo nombre, $ distin+uirlas por un nmero, parecido a como "acen los libros de matemticas para re#erirse de manera +eneral a las componentes de los vectores o de las tuplas. 1ntonces, se "ablara de a(1*, a(2*, a(4*, a(5* $ a(6*, en vez de las letras usadas anteriormenteA como $a se sabe cmo +enerar los ndices *los nmeros entre par(ntesis que permiten distin+uir las variables,, se puede usar un ciclo para manipular las variables $ usar menos cdi+o. /a sintaEis para declarar un arre+lo de una sola dimensin esK Var <nomb> : Array [<li>..<ls>] Of <tipo>; donde lnombT es el nombre del arre+lo, lliT es el valor in#erior que puede tomar el ndice $ llsT es el valor superior del ndice. !n ejemplo real de declaracin de arre+los se muestra a continuacinK Var a : Array[1..5] Of Integer; que produce un arre+lo llamado a de cinco variables enteras. /a primera es ad1e, la se+unda es ad2e, $ as sucesivamente. ]ul es la utilidad de este esquema[ 8i se tienen que leer cinco variables declaradas por separado, con nombres distintos, se usara al+o como estoK ReadLn(a); ReadLn(b); ReadLn(c); ReadLn(d); ReadLn(e); mientras que con arre+los, basta escribirK For i := 1 To 5 Do ReadLn(a[i]); que es evidentemente ms cmodo. A lo lar+o del curso se "an visto pro+ramas que suman una cantidad de nmeros usando dos variables, una para leer cada nmero $ otra para acumular la suma. 1ste en#oque tiene la desventaja de que se pierden los valores de los sumandos. 1l uso de arre+los permite calcular la suma de los nmeros con una cantidad mnima de cdi+o $ a la vez conservar cada valor, como muestra el si+uiente pro+rama completoK Program SumaN; Uses WinCrt; Const n = 5; {Cant. de #s} Var nums: Array[1..n] Of Integer; s, i: Integer; Begin For i:=1 To n Do Begin Write('Nmero: '); ReadLn(nums[i]); s := s + nums[i]; End; WriteLn('Suma: ', s); End. )tese el uso de una constante para marcar el tamao del arre+loA dic"a constante, naturalmente, tambi(n sirve para controlar el Jor. Ie este modo, slo se "ace necesario cambiar un nmero para adecuar el pro+rama a la escala apropiada. Arreglos Unidimensionales (Vectores o Listas) (Variables con subndices)
Nota: Un arreglo de variables es una coleccin de variables simples todas del mismo tipo con un nombre comn, llamado el nombre del arreglo.
!stos siete valores se pueden guardar usando las variables !dad1 " 20, !dad2 " 19, !dad " 18, !dad# " 26, !dad$ " 2, !dad6 " 18 % !dad& " 2. 'tra (orma de guardarlos es como siete elementos del arreglo con nombre !dad.
)e puede *acer re(erencia a elementos en el arreglo *aciendo uso del nombre !dad % el nmero del elemento +,ndice de la variable- entre par.ntesis.
Referencia de la variable: !dad+1-, !dad+2-, !dad+-, ... Valor de la variable: 20, 19, 18, ...
Ejemplos:
1- +!dad+#- / !dad+2--02
2- )uma " 0 1or i " 1 2' 6 )uma " )uma / !dad+i- 3e4t i pic'utput.5rint 6!l promedio de las edades es:67)uma06 -ttp2<<...*ca)e)*upr*edu<crivera<sici@007<9rreglos'nidimensionales*-tm !n arre+lo *arra$, disposicin, vector o lista, tabla o matriz, es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo, en posiciones consecutivas de memoria. !n arre+lo se identi#ica por medio de un nombre. /os componentes individuales del arre+lo se denominan elementos $ se distin+uen entre ellos por el nombre del arre+lo se+uido de uno o varios ndices o subndices, entre par(ntesis. 1l identi#icador o ndice, determina la posicin de memoria de un elemento del arre+lo. 1.2.1.1 Clasi%icaci7" &e los A--e3los 1.2.1.1.1 A--e3los U"i&ime"sio"ales. !n arre+lo unidimensional es un conjunto #inito *nmero especi#ico de elementos,, ordenado, de elementos "omo+(neos *del mismo tipo,. Bigura 1.5 Crreglo unidimensional. 5ara tener acceso directo a la posicin de memoria que contiene el valor de cada elemento del arre+lo, se utiliza la si+uiente #rmulaK Iir 1d>eSIir 1d> i eR)um5osQ*>D> i , IondeK Iir 1d>eK Iireccin de memoria del elemento cu$o ndice es >. Iir 1d> i eK Iireccin de memoria del elemento inicial del arre+lo. )um5osK )mero de posiciones de memoria de que consta la celda. > i K jndice del elemento inicial. /as operaciones con vectores se pueden realizar con elementos individuales o sobre los vectores completos mediante las instrucciones bsicas $ estructuras de control. /as operaciones que se pueden realizar sobre elementos individuales sonK asi+nacin $ lectura. 1ntre las operaciones sobre el vector completo estnK o Reco--i&o< 1s la manera de acceder de manera sucesiva $ consecutiva a los contenidos de cada elemento del vector. o I"se-ci7"< onsiste en introducir en el arre+lo el valor del elemento. Aunque el sistema reserva memoria para cada elemento del arre+lo, puede suceder que al+una posicin de memoria se encuentre vaca. 8ur+en dos operaciones distintasK aadir una celda de memoria vaca o aadir en una celda de memoria ocupada, para no daar el contenido de memoria donde se inserta el nuevo dato, se desplaza este contenido $ todos los si+uientes a una posicin superior de la misma memoria. o BIs!e&a< onsiste en realizar un recorrido del vector, empezando desde su posicin de memoria ms baja con el #in de localizar un dato determinado. o Elimi"aci7"< .orrar el dato contenido en una de las posiciones del vector, si es una posicin di#erente de la ltima, todos los elementos con posiciones posteriores retroceden una posicin. 4rdenacinK onsiste en reor+anizar el contenido de cada uno de los elementos del vector se+n una secuencia determinada *ascendente o descendente,. Las operaciones con &ectores se pueden realizar con elementos indi&iduales o so're los &ectores completos, mediante las instrucciones ' cas y las estructuras de control; por ejemplo:
Operaciones sobre los elementos de un vector Las operaciones so're los elementos de un &ector son: !.,=+!8,H. LE82U"!. E.8",2U"!.
!.,=+!8,H: Es la acc e introducir un elemento a una posic spec)ca del &ector. !s)ues, si ii ii ii ii ii ii ii ii ii ii ii ii ii i i queremos que la posic del &ector tenga un &alor de *>, la iiiiiiiiiiiii i operac realizar es la siguiente: iiiiiiiiiiiii i !3?6@*> LECTURA: Es la operac acc e o'tener un &alor desde el teclado, para ser ii ii ii ii ii ii ii ii ii ii ii ii ii i i introducido en una posic el &ector: iiiiiiiiiiiii i LEE !3<6 ESCRITURA: Es la operac e sacar un &alor de una posic el &ector: ii ii ii ii ii ii ii ii ii ii ii ii ii i i E.8",1E !3?6
Operaciones sobre vectores completos: Las operaciones que se pueden realizar so're &ectores completos son: * "E8/"",D/. * 1 IAUED!. * ,+.E"8,H. * EL,-,+!8,H. * /"DE+!-,E+2/.
"E8/"",D/: Es la operac e escri'ir, asignar, leer o llenar de datos el &ector completo iiiiiiiiiiiii i y se realiza mediante las siguientes estructuras: 7/" ,nd@5 2/ B D/ LEE !3,nd6 7/" ,nd@5 2/ B D/ E.8",1E !3,nd6 ,nd@4 C:ile ,ndD@45 D/ ,nd@4 C:ile ,ndD@45 D/ LEE !3,nd6 E.8",1E !3,nd6 Ejemplo: Dis n 9seudo o que almacene en la memoria de la ec ec ec ec ec ec ec ec ec ec ec ec ec e c computadora un &ector llamado 7,1/ de 455 posiciones el cual contendr os primeros 455 n(sdel 7i'onacci: .oluc E'ig iiiiiiiiiiiii i 9seudo o 7i'onacci ccccccccccccc c 0aria'les 7,1/ : !""!# 34556 DE Entero !,1,8,, : Entero ,+,8,/ !F4 1@5 7,1/356@5 7,1/346@4 7/" ,@; 2/ BB D/ ,+,8,/ 8@!G1 7,1/3,6@8 1@! !@8 7,+ 7,+ 1 IAUED!: 8onsiste en determinar si un &alor espec)co se encuentra dentro del &ector. .e de'en eHaminar uno a uno todos los elementos, comenzando con el primer elemento del &ector y comparando con el elemento 'uscado. El pseudo o de '(da es el siguiente: ccccccccccccc c 9seudo o 1(da ccccccccccccc c 0aria'les I!LL!D/, J, ! : Entero ,+,8,/ I!LL!D/@5 LEE J !@5 CI,LE I!LL!D/@5 !+D !D$+( de Elementos del 0ector% D/ ,+,8,/ ,7 0E82/"3!6@J 2IE+ I!LL!D/@4 !@!G4 7,+ ,7 I!LL!D/@4 2IE+ E.8",1E KEl +( fu ncontradoK EL.E E.8",1E KEl n( no est n el &ectorK 7,+
/"DE+!-,E+2/: La ordenac clasificac e datos es el proceso de organizar ii ii ii ii ii ii ii ii ii ii ii ii ii i i datos en alg(den o secuencia espec)ca, tal como creciente o decrecente, para datos numcos, o alfa' camente para datos alfanumcos. Los mdos de ordenac e di&iden en dos categor): iiiiiiiiiiiii i /rdenac e !rrays. iiiiiiiiiiiii i /rdenac e !rc:i&os. iiiiiiiiiiiii i La ordenac e !rrays se denomina tam'i iiiiiiiiiiiii i ordenac nterna, ya que se iiiiiiiiiiiii i almacena en la memoria interna de la camputadora a gran &elocidad y acceso aleatorio. La ordenac e arc:i&os se suele :acer casi siempre iiiiiiiiiiiii i so're soportes de almacenamiento eHterno: Discos, 8intas, etc. y por ello, se denomina ordenac Hterna. 9ara este curso iiiiiiiiiiiii i emplearemos la ordenac nterna, es decir, la si si si si si si si si si si si si si s i ordenac e !rrays. iiiiiiiiiiiii i /"DE+!8,H 9/" 1U"1UL! / ,+2E"8!-1,/: El mdo de la 'ur'uja es uno de los conocidos por su sencillez y mmmmmmmmmmmmm m facilidad de implementaci)la idea ' ca del m i iiiiiiii do es comparar elementos consecuti&os en cada paso a lo largo del &ector. 8ada &ez que se realiza una comparac e los elementos se intercam'ian entre s)n caso de iiiiiiiiiiiii i no estar en orden. Es decir, se eHamina dos elementos adyacentes J3i6 y J3iG46; en caso de no estar ordenados J3i6 D J3iG46 o 'ien J3i6 J3iG46 se intercam'ian los &alores de dic:os elementos. Algoritmo de Ordenamiento por Burbuja: 9seudo o 1U"1UL! ccccccccccccc c 0aria'les !:!""!#3+6 DE Entero J,L,!UJ:Entero ,+,8,/ 7/" J@5 2/ $+*;% D/ ,+,8,/ 7/" L@5 2/ $$+*4%*$JG4%% D/ ,+,8,/ ,7 !3L6!3LG46 2IE+ ,+,8,/ !UJ@!3L6 !3L6@!3LG46 !3LG46@!UJ 7,+ 7,+ 7,+ 7,+ A--e3lo bi&ime"sio"al 1ste tipo de arre+los al i+ual que los anteriores es un tipo de dato estructurado, #inito ordenado $ "omo+(neo. 1l acceso a ellos tambi(n es en #orma directa por medio de un par de ndices. /os arre+los bidimensionales se usan para representar datos que pueden verse como una tabla con #ilas $ columnas. /a primera dimensin del arre+lo representa las columnas, cada elemento contiene un valor $ cada dimensin representa una relacin /a representacin en memoria se realiza de dos #ormas K almacenamiento por columnas o por ren+lones. 5ara determinar el nmero total de elementos en un arre+lo bidimensional usaremos las si+uientes #rmulasK R!7-8 0# R#7-%87#. (R') & %s' C (%i'D') R!7-8 0# C8%E/7!. (R=) & %s= C (%i=D') 7o. "8"!% 0# C8/P87#7"#. & R' 4 R= REPRESENTACION EN MEMORIA POR COLUMNAS 5 ? array @'..A,'..*B o3 integer 5ara calcular la direccin de memoria de un elemento se usan la si+uiente #ormulaK !@i,FB & 2ase (!) D @((F C li=) R' D (i D li'))4:B REPRESENTACION EN MEMORIA POR REN#LONES 5 ? array @'..A,'..*B o3 integer 5ara calcular la direccin de memoria de un elemento se usan la si+uiente #ormulaK !@i,FB & 2ase (!) D @((i C li') R= D (F D li=))4:B dondeK i S >ndice del ren+ln a calcular j S >ndice de la columna a calcular li1 S /mite in#erior de ren+lones li2 S /mite in#erior de columnas G S )mero de b$tes tipo componente Una -!2",M o 2!1L!, es un arreglo de dos dimensiones, por lo cual se manejan dos Nndices; el primer Nndice se refiere a la fila o rengln y el segundo a la columna; grficamente lo podemos entender asN:
8ol 4 8ol ; 8ol O 8ol < 7ila 4
7ila ;
7ila O
7ila <
9ara :acer referencia a un elemento de la matriz se tiene que indicar con dos Nndices: -atriz37ila638olumna6 Ejemplo: -3O63<6@P, -3463;6@<, -3Q63O6@E""/", -3;6346@> 8ol 4 8ol ; 8ol O 8ol < 5 < 4 4 > O 5 5 ; ? 4 P O P > < Declaracin de -atrices La declaracin de una matriz es similar a la de un !reglo Unidimensional $0ector%, con la diferencia de que :ay que agregar un Nndice para referenciar la nue&a dimensin de la matriz, la sintaHis es la siguiente: +om'reDel!rreglo: !""!# 3R de 7ilas63R de 8olumnas6 DE 2ipoDeDatos Ejemplo: La declaracin de la matriz mostrada en el ejemplo de arri'a serNa de la siguiente forma: -: !""!# 3<63<6 DE Enteros Ejemplo con -atrices DiseSe un 9seucocdigo que contenga en la memoria de la computadora una matriz de OTO con nUmeros enteros leNdos del teclado.
9seudocdigo -!2",M 0aria'les -!2: !""!# 3O63O6 DE Enteros 7ila, 8/lumna: Enteros ,+,8,/ 7/" 7ila@4 2/ O D/ ,+,8,/ 7/" 8olumna@4 2/ O D/ ,+,8,/ E.8",1E V2eclee un nUmero: V LEE -!237ila638olumna6 7,+ 7,+ 7,+ A--e3los bi&ime"sio"ales< $ablas 8i+uiendo la misma lnea, se pueden relacionar +rupos de vectores para #ormar tablas. 5or ejemplo, supn+ase que se quieren almacenar nombres de personas $ sus respectivos nmeros de tel(#onosA se puede tener un vector de nombres $ uno de nmeros, de modo que el iD(simo nmero de tel(#ono *en un vector, sea de la iD(sima persona *en el otro vector,. 5ues bienK eEiste un modo de #undir ambos vectores en un solo tipo de variable, una tabla de dos columnas $ varias #ilas *o viceversa, en la que la posicin d1, ie indique el nombre de una persona $ la posicin d2, ie indique el nmero de tel(#ono de esa persona. 5ara declarar esta estructura, se escribeK Var Tabla: Array[1..2, 1..n] Of String;. $ de manera +eneral, se puede declarar un arre+lo bidimensional asK Var <nomb>: Array[<li1>..<ls1>, <li2>..<ls2>] Of <tipo>; Ie "ec"o, aunque no estn contemplados en el pro+rama del /aboratorio de 1lementos de omputacin, se pueden de#inir ms dimensionesA no "a$ un lmite de#inido a la cantidad de dimensiones de un arre+lo. =olviendo al ejemplo de la lista de personas $ nmeros de tel(#ono, se puede escribir un pro+rama completo que use una tabla para leer $ +uardar esta in#ormacinK Program Telefonos; Uses WinCrt; Const n = 5; Var Tabla: Array[1..2, 1..n] Of String; i: Integer; Begin For i:=1 To n Do Begin WriteLn('Persona: ', i); Write('Nombre: '); ReadLn(Tabla[1, i]); Write('Telfono: '); ReadLn(Tabla[2,i]); End; End. 1n este momento, los datos estn en la memoria, $ el es#uerzo que se requiri para leerlos #ue menor que usando 10 variables independientes *cinco para los nombres $ cinco para los nmeros,. Adems, con slo cambiar un valor, el de n, el pro+rama almacena ms pares de nombre $ tel(#ono. L aunque no se ver aqu, manipular esos datos una vez ledos es i+ual de #cil. !nas consideraciones importantes sobre los arre+losK son racimos o conjuntos de variables, pero no pueden manejarse como tales. 8iempre deber "acerse re#erencia a una posicin espec#ica del arre+loA si se desea acceder a una parte del mismo o a su totalidad, deber "acerse de manera iterativa, visitando los elementos que lo componen uno a uno. -ttp2<<...*intec*edu*do<ArimeneB<guiaC*-tml A--e3los Bi&ime"sio"ales. !n arre+lo bidimensional es un conjunto de datos del mismo tipo, estructurado de tal #orma que se precisa de dos ndices para re#erenciar cada uno de sus elementos, el primer ndice se re#iere a la #ila $ el se+undo se re#iere a la columna. 1n cuanto al almacenamiento, el sistema reserva memoria para cada uno de sus elementos destinando en conjunto, un bloque de la misma, este se "alla estructurado asK almacenamiento consecutivo $ secuencial de una #ila dentro de otra, sin solucin de continuidadA almacenamiento consecutivo $ secuencial de una columna dentro de otra, sin solucin de continuidad. 5ara acceder a la posicin de cada elemento del arre+lo se tienen las si+uientes #rmulasK o Almacenamiento por #ilasK Iir 1d>,%eSIir 1d> i ,% i eR)um5osQ*)cQ*>D1,R*%D1,, o Almacenamiento por columnasK Iir 1d>,%eSIir 1d> i ,% i eR)um5osQ*)#Q*%D1,R*>D1,, IondeK Iir 1d>,%eK Iireccin de memoria del elemento cu$os ndices son >,%. Iir 1d> i ,% i eK Iireccin de memoria del elemento inicial del arre+lo. )cK )mero total de columnas. )#K )mero total de #ilas. > i $ % i K jndices del elemento inicial. /os arre+los bidimensionales tienen las mismas operaciones que los vectores. los al+oritmos cambian porque es necesario tener el orden se+n los dos ndices. +.2 -ane!o "rc0ivos Los archivos tambin denominados ficheros (file); es una coleccin de informacin (datos relacionados entre s), localizada o almacenada como una unidad en alguna parte de la computadora. Los archivos son el conjunto organizado de informaciones del mismo tipo, que pueden utilizarse en un mismo tratamiento; como soporte material de estas informaciones. I"%*+#!,,I-" $ .+S $*,/I0+S( Los archivos como coleccin de datos sirve para la entrada y salida a la computadora y son manejados con programas. Los archivos pueden ser contrastados con Arrays y registros; Lo que resulta dinmico y por esto en un registro se deben especificar los campos, l nmero de elementos de un arrays (o arreglo), el nmero de caracteres en una cadena; por esto se denotan como "Estructuras Estticas". En los archivos no se requiere de un tamao predeterminado; esto significa que se pueden hacer archivos de datos ms grandes o pequeos, segn se necesiten. Cada archivo es referenciado por su identificador (su nombre.). ,$*$,%E* 1S%I,$S #E .+S $*,/I0+S Las principales caractersticas de esta estructura son: ndependencia de las informaciones respecto de los programas La informacin almacenada es permanente Un archivo puede ser accedido por distintos programas en distintos momentos Gran capacidad de almacenamiento. ,.$SI2I,$,I+" #E .+S $*,/I0+S Los archivos se clasifican segn su uso en tres grupos: *ermanentes o -aestros@ Estos contienen informacin que varia poco. En algunos casos es preciso actualizarlos peridicamente. De -ovimientos Se cercan para actualizar los archivos maestros. Sus registros son de tres tipos: alta, bajas y modificaciones. De -aniobra o Traba!o. Tienen una vida limitada, normalmente menor que la duracin de la ejecucin de un programa. Su utilizan como auxiliares de los anteriores. %I&+S #E $*,/I0+S Los elementos de un archivo pueden ser de cualquier tipo, simples o estructurados o segn su funcin. SE3" S! 2!",I+"( Se define por: a.G "rc0ivos *ermanentes@ Son aquellos cuyo registros sufren pocas o ninguna variacin a lo largo del tiempo, se dividen en: 'onstantes@ Estn formados por registros que contienen campos fijos y campos de baja frecuencia de variacin en el tiempo. De Situacin@ Son los que en cada momento contienen informacin actualizada. <istricos@ Contienen informacin acumulada a lo largo del tiempo de archivos que han sufridos procesos de actualizacin o bien acumulan datos de variacin peridica en el tiempo. b.G "rc0ivos de -ovimiento Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algn campo comn en sus registros con aquellos, para el procesamiento de las modificaciones experimentados por los mismos. c.G "rc0ivo de -aniobra o Transitorio Son los archivos creados auxiliares creados durante la ejecucin del programa y borrados habitualmente al terminar el mismo. SE3" S!S E.EME"%+S( Los principales archivos de este tipo son: "rc0ivo de 1ntrada: Una coleccin de datos localizados en un dispositivo de entrada. "rc0ivo de Salida: Una coleccin de informacin visualizada por la computadora. 'onstantes: estn formados por registros que contienen campos fijos y campos de baja frecuencia de variacin en el tiempo. De Situacin: son los que en cada momento contienen informacin actualizada. <istricos: Contienen informacin acumulada a lo largo del tiempo de archivos que han sufrido procesos de actualizacin, o bien acumulan datos de variacin peridica en el tiempo. "rc0ivos de -ovimiento o Transacciones: Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algn campo comn en sus registros con aquellos, para el procesamiento de las modificaciones experimentados por los mismos. "rc0ivos de -aniobra o Transitorios: Son los archivos auxiliares creados durante la ejecucin del programa y borrados habitualmente al terminar el mismo.
) SE3" S!S E.EME"%+S Los principales archivos de este tipo son: "rc0ivo de 1ntrada, una coleccin de datos localizada en un dispositivo de entrada. "rc0ivo de Salida, una coleccin de informacin visualizada por la computadora. "rc0ivo de *rorama, un programa codificado en un lenguaje especifico y localizado o almacenado en un dispositivo de almacenamiento. "rc0ivo de TeBto, una coleccin de caracteres almacenados como una unidad en un dispositivo de almacenamiento. $,,ES+ $ .+S $*,/I0+S Se refiere al mtodo utilizado para acceder a los registros de un archivo prescindiendo de su organizacin. Existen distintas formas de acceder a los datos: Secuenciales; los registros se leen desde el principio hasta el final del archivo, de tal forma que para leer un registro se leen todos los que preceden. Directo; cada registro puede leerse / escribirse de forma directa solo con expresar su direccin en el fichero por l numero relativo del registro o por transformaciones de la clave de registro en l numero relativo del registro a acceder. *or [ndice; se accede indirectamente a los registros por su clave, mediante consulta secuenciales a una tabla que contiene la clave y la direccin relativa de cada registro, y posterior acceso directo al registro.
Din,micoX es cuando se accede a los archivos en cualquier de los modos anteriormente citados. La eleccin del mtodo esta directamente relacionada con la estructura de los registros del archivo y del soporte utilizado. %I&+S #E $,,ES+S "cceso Secuencial. Exige el tratamiento de elemento, para esto es necesario una exploracin secuencial comenzando desde el primer momento (Pascal permite este acceso) Secuenciales@ archivo de texto que debe ser ledo del principio hasta el final. "cceso Directo. Permite procesar o acceder a un elemento determinado y referencia directamente por su posicin en el soporte de almacenamiento (Turbo Pascal permite este acceso. "leatorios: es un archivo con registros de un mismo largo. Un programa puede accesar directamente cualquier registro sin tener que leer los registros previos.
Binarios: es un archivo que lee byte por byte sin asumir ninguna estructura. Los archivos Binarios no son un nuevo tipo de archivo, pero si una nueva forma de manipular cualquier tipo de archivo. Las tcnicas de archivo binarios permiten leer o cambiar cualquier byte de un archivo. Son herramientas extremadamente potentes, pero como toda herramienta potente debe manejarse con cuidado Entre otras caractersticas, a las tcnicas de archivo binario no les preocupa los caracteres EOF intercalados (Control+Z = Chr$(26)) que pueda tener un archivo. Ejemplo Open NombreArchivo for Binary as #NumeroArchivo. nstrucciones para manejar archivos 4*1#: reserva un espacio del buffer para la data que mover entre el programa y los archivos. La estructura es: OPEN filespec FOR {Append|Binary|nput|Outuput|Random} As #filenumber Por ejemplo: 4*1# "C:\Windows\AddrBook.ini" FOR nput As #1 Filespec: Es la localizacin de archivo en el que se trabajar, incluyendo usualmente el drive y path. "C:\Windows\AddrBook.ini" {Append| Binary| nput| Outuput| Random} El programador tiene que seleccionar uno. Binary y Random se utiliza para archivos binarios y aleatorios. Append, nput y Output son usados con archivos secuenciales. Un archivo secuencial no puede ser abierto para leer y escribir simultaneamente. Output es usado para escribir en el archivo. nput es usado para leer del archivo. Append es usado para colocar data al final de un archivo exitente. #filenumber: es necesario asignar un nmero al archivo. El nmero puede estar en el rango de #1 a #511 y es usado por Visual Basic para identificar el archivo. 'L4S1: para cerrar un archivo. La estructura es: 'L4S1 #filenumber Por ejemplo: 'L4S1 #1 O2IT1: envia data del programa al archivo secuencial. La estructura es: O2IT1 #filenumber, [OutputList] Por ejemplo: O2IT1 #1, UserName, UserCompany, SerialNumber O2IT1 es la operacin opuesta al I#*UT. Las expresiones en el OutputList son separadas por comas. O2IT1 inserta comillas y comas a la data que envia al archivo. I#*UT: lee data del archivo. La estructura es: I#*UT #filenumber, nputList Por ejemplo: I#*UT #1, UserName, UserCompany, SerialNumber Declaracin y asignacin de archivos La declaracin de un arc0ivo con tipo se efectPa con la a%uda de las palabras reservadas file of. 1l procedimiento de asinacin es id(ntico al utiliLado anteriormente. 1!emplo@ T%pe datos V record clave @ inteerX nombre @ strin\3>]X puesto @ strin\2>]X sueldo @ realX estado @ booleanX Ytrue activo$false ba!a licaZ endX 8ar arc0ivo@file of datosX bein "ssin6arc0ivo$^empleado.dat^7X SIST1-" D1 -"#1J4 D1 "2'<I84S. Tiene las siguientes funciones: Controla los datos en almacenamiento secundario [ ] Proporciona al usuario una abstraccin de cmo se manipulan los datos internamente. [ ] Proporciona independencia de E/S con los dispositivos [ ] Soporte de comparticin, proteccin, recuperacin de archivos y posibles cadas del sistema. [ ] Transmisin de datos de memoria principal a secundaria.[ ] Los archivos de una empresa pueden almacenarse en diferentes dispositivos. Todos los archivos se pueden almacenar por medio de diectoios, que no son otra cosa ms que tablas de smbolos de archivo, los directorios se pueden utilizar de dos formas: DI21'T42I4 D1 #I81L _#I'4 4 DI21'T42I4 *L"#4 Con este mtodo, se almacenan todos los archivos en un solo nivel, este mtodo en sistemas donde el volumen de archivos no es grande.[ ] DI21'T42I4 J12"2?UI'4 Los archivos son almacenados por medio de directorios, esta clasificacin se de acuerdo a la conveniencia del usuario o de la empresa. [ ] .La estructura tiene una forma de rbol con raz, este mtodo es el ms utilizado debido a que la revisin o bsqueda se realiza de forma sencilla. Para accesar a los archivos que se almacenan en un sistema jerrquico, el usuario debe indicar el o los directorios que se deben recorrer para localizar el archivo deseado, a esto se le denomina %ta de acceso del ac(i0o. La ruta de acceso puede ser de dos formas: 2uta absoluta.- Este tipo de ruta de acceso inicia siempre con una diagonal invertida [ ] C:\Edit c:\SOS\sistemas\report.txt 2uta relativa.- Este tipo de ruta de acceso realiza la bsqueda del archivo en el directorio de trabajo actual, si el archivo no se localiza aqu, el S.O. lo buscar en los directorios especificados en el PATH de un archivo con extensin .BAT. C:\Edit report.txt +&E*$,I+"ES E"E*$.ES 4!E SE *E$.I5$" S+B*E !" $*,/I0+( Las operaciones generales que se realizan son: 'reacin. Escritura de todos sus registros. 'onsulta. Lectura de todos sus registros. "ctualiLacin. nsercin supresin o modificacin de algunos de sus registros 'lasificacin. Reubicacin de los registros de tal forma que queden ordenados segn determinados criterios. Borrado. Eliminando total del archivo, dejando libre el espacio del soporte que ocupaba. +*$"I5$,I-" #E .+S $*,/I0+S( Los archivos se encuentran organizados lgicamente como una secuencia de registros de varias longitudes diferentes. Los arc0ivos de reistros de lonitud fi!a: son los que almacenan la informacin en los archivos mediante un encabezado y luego se introducen uno a uno los registros ubicados en posiciones consecutivas. Los reistros de lonitud variable: es el almacenamiento de registros de varios tipos en un archivo y permite uno o ms campos de longitudes variables y dichos campos pueden ser repetidos. La longitud de los registros debe estar definida correctamente para poder leer y escribir de forma efectiva. E"2+4!ES E"E*$.ES &$*$ .$ +*$"I5$,I-" #E $*,/I0+S( Los enfoques son: 1. G 1nfo&ue de acceso secuencial@ Se refiere al procesamiento de los archivos de acuerdo con el orden especifico. Ejemplo archivo secuenciales y de texto. 2. G 1nfo&ue de acceso Directo Permite recuperar registros individuales sin leer otros registros del archivo, ejemplos archivos indizados.
$*,/I0+S SE,!E",I$.ES( Se refiere al procesamiento de los registros, no importa el orden en que se haga, para eso los registros estn organizados en forma de una lista y recuperarlos y procesarlos uno por uno de principio a fin. 2udimentos de los arc0ivos Secuenciales; dependiendo del dispositivo de almacenamiento utilizado el archivo se puede mostrar el usuario como si fuera un sistema secuencial. Al finalizar un archivo secuencial se denota con una marca de fin de archivo. (End end-of-file) El usuario de un archivo secuancial puede ver los registros en un orden secuancial simple. La nica forma de recuperar registros es comenzar al principio y extraerlos en el orden contemplado. 'uestiones de proramacinX la manipulacin de los archivos se hace en el contexto de la programacin en un lenguaje por procedimientos de alto nivel. Estos lenguajes tienden a expresar la manipulacin de archivos mediante subrutinas que se definen como parte del lenguaje formal o se incluyen como extensiones del lenguaje en una biblioteca estndar. La mayor parte de los lenguajes por procedimiento de alto nivel cuenta con caractersticas que ayudan a detectar la marca de fin de archivo. )$*,/I0+S #E %E6%+( Tambin conocidos como (Slream File) son utilizados para almacenar documentos que consisten en texto; En ellos, cada registro es un solo smbolo o cdigo de control. El leer estos archivos recibimos la informacin en orden secuencial en el que aparece cuando lo vemos en un monitor. Los archivos de texto son una secuencia de lneas separadas por marcas de fin de lnea. 2udimentos de los arc0ivos de teBtosX El usuario escribe los archivos de textos mediante un procesador de palabras que le permitir almacenar la informacin pero no estrictamente en forma secuencial. El procesador tambin nos permite desplazarnos por todo el bloque de informacin y permitirnos realizar modificaciones. Mientras el usuario avance rpidamente en la lectura de registro lograra ver mas archivos. 'uestiones de proramacinX Casi todos los entornos de programacin por procedimientos de alto nivel cuentan con subrutinas para manipular los archivos de texto. Estas subrutinas pueden formar parte de la definicin formal del lenguaje o que se ofrezca en biblioteca como extensiones del mismo. $*,/I0+S I"#I5$#+S( Es la aplicacin de incluir ndices en el almacenamiento de los archivos; de esta forma nos ser ms fcil buscar algn registro sin necesidad de ver todo el archivo. Un ndice en un archivo consiste en un listado de los valores del campo clave que ocurren en el archivo, junto con la posicin de registro correspondiente en el almacenamiento masivo. /undamento de los [ndices a.- La colocacin de un listado al inicio del archivo: para la identificacin del contenido. b.- La presentacin de un segundo ndice: para reflejar la informacin de cada punto principal del ndice anterior. c.- La actualizacin de los ndices: Cuando se insertan y eliminan archivos, es preciso actualizar los ndices para evitar contratiempos actualizando un archivo. d.- La organizacin de un ndice: Nos evita examinar archivo por archivo para recuperar algn registro buscado; por lo tanto ahorraramos tiempo si tenemos una adecuado organizacin de los ndices. 'uestiones de *roramacin Algunos lenguajes de alto nivel cuentan con subttulos para manipular los archivos de un registro indizado. Valindose de las subrutinas es posible escribir programas sin tener que preocuparse por la estructura real del sistema de ndices que se aplique. $*,/I0+S #IS&E*S+S( Tambin llamados (Hashed Files) representan un sistema de almacenamiento de archivos que solo ofrece acceso directo, y permiten calcular la posicin de un registro en el almacenamiento masivo. 2udimentos de los arc0ivos dispersos. El usuario debe dividir el rea de almacenamiento asignando al archivo en varias secciones llamadas cubetas para poder ingresar los datos. La distribucin de la informacin en las cubetas es problemtica debido a que la estructura de los archivos es dispersa. Dentro de los archivos se presentan colisiones de informacin debido al agrupamiento de los registros ingresados. 'uestiones de proramacin. Casi ninguno de los lenguajes de programacin por procedimientos en la actualidad ofrece implantaciones directas de archivos dispersos; esto es debido a las cuestiones dependientes de la aplicacin implicadas en el diseo de estos archivos. )ME#I#$S #E !%I.I5$,I-" #E .+S $*,/I0+S( Para utilizar un archivo debemos tener en cuenta: 1. - [ndice de 8olatilidad; Un archivo es voltil cuando tiene un alto porcentaje de adiciones y supresiones debido al ingreso o eliminacin de registros respecto al numero promedio de registros que haya en el archivo. 2. - [ndice de "ctividad; Un archivo es activo cuando tiene un alto porcentaje de utilidad sea de actualizacin o consulta en un periodo de tiempo fijo respecto al numero promedio de registro que se encuentran en el archivo. El ndice de actividad suele emplearse para saber si un archivo puede explotarse como una organizacin secuencial o relativa. Archivos de acceso directo (con tipo) Los archivos tipeados (con tipo), tambin llamados arc0ivos binarios, contienen datos de tipo simple o estructurado, tales como integer, real , record, etc., excepto otro tipo de archivos. Los archivos con tipos estn estructurados en elementos o registros (record) cuyo tipo puede ser cualquiera. A los elementos de estos archivos se accede directamente, al no situarse stos en posiciones fsicamente consecutivas, sino en posiciones lgicas. Esta es la razn por la cual se les denomina arc0ivos de acceso aleatorio o directo. Los elementos de los archivos aleatorios son de igual tamao y el trmino acceso directo significa que es posible acceder directamente a un elemento con solo especificar su posicin #E2I"I,I+"ES( Los ms utilizados en el desarrollo del tema son: "rc0ivo 6/ic0ero7@ Conjunto de informacin estructurada en unidades de acceso denominada registro. 2eistros. Estructura de datos formada por uno o ms elementos denominados "Campos" y estos pueden estar compuestos a su vez por "subcampos". 'laves@ Se denomina a un campo especial del registro que sirve para identificarlo Blo&ue@ Es la cantidad de informacin que se transfiere en cada operacin de lectura o escritura sobre un archivo. 'ampo@ Es cada uno de los diferentes datos que constituyen un registro lgico. -ttp2<<...*monografias*com<trabaos7<arc-<arc-*s-tml Unidad 8. 'dulo# 3.1 Diferencia entre /unciones % *rocedimientos. 0!"cio"es versus *-oce&imie"$os Dimilitudes 1. /a de#inicin de ambos aparece en la seccin de subpro+ramas de la parte de declaraciones de un pro+rama $ consiste en una cabecera, una parte de declaraciones $ una parte de instrucciones se+uida por un punto $ coma. 2. Ambos son unidades de pro+rama independientes. /os parametros, constantes $ variables declarados en una #uncin o procedimiento son localesA solamente son accesibles dentro del subpro+rama. 7. uando se llama a una #uncin o a un procedimiento, el nmero de los parmetros reales debe ser el mismo que el nmero de los parmetros #ormales, $ los tipos deben coincidir, con una eEcepcinK se puede asociar un parmetro real de tipo entero con un parmetro #ormal por 1alor de tipo real. Diferencias 1. /os procedimientos se llaman mediante instrucciones de llamada a procedimientos. /as #unciones se llaman usando sus nombres en eEpresiones. 2. /a cabecera de una #uncin debe incluir un identi#icador de tipo que especi#ique el tipo del resultado. )o se asocia nin+n valor con el nombre de un procedimiento $, por tanto, tampoco nin+n tipo. 7. 1n los procedimientos, los valores se devuelven a trav(s de parmetros por variable. 1l valor de una #uncin se devuelve mediante su nombre. "ttpKNNGGG.ucm.esNin#oNdsipNclavelNcoursesNip0207Nnode&@."tml 3.2 "ctivacin 9 Invocacin de /unciones % *rocedimientos Declaracin de funciones W1 Sinopsis La declaracin ( 4.1.2) da a conocer la funcin al compilador, de forma que a partir del punto de declaracin, ya se pueden realizar invocaciones a la misma. A su vez, la definicin estar en algn otro punto del programa, tal vez en una librera externa (en forma ya compilada) o en otro mdulo de programa (como texto fuente). Una funcin puede ser declarada varias veces en un mismo programa, y las declaraciones pueden aparecer en cualquier orden; en un fichero fuente o en varios, pero en cualquier caso antes de su uso, es decir: antes de cualquier invocacin a la funcin [5]. Adems de declarar el nombre de la funcin y el tipo devuelto (por defecto se supone int ) se declaran tambin el tipo de los parmetros. W2 La declaracin tiene la siguiente sintaBis: [e5tern] <tipo-devuelto> nombre-funcion () W2a [e5tern] <tipo-devuelto> nombre-funcion (<tipo>, ...) W2b [e5tern] <tipo-devuelto> nombre-funcion (<tipo> <parametro>, ... ) W2c W2.1 1!emplos@ extern int funcion1 (); // no acepta ningn argumento extern int funcion1 (void); // mejor que la anterior funcion2 (char, int); // por defecto supone que devuelve int int funcion2 (char, int); // mejor que la anterior char funcion3 (char c, int i); // incluye nombres de parmetros W2.2 'omentario El especificador <tipo-devuelto> es opcional; por defecto se supone int, as que las declaraciones que siguen son equivalentes [4]: int func (<tipo> <parmetro>, ...) func (<tipo> <parmetro>, ...) #ota: Los compiladores MS Visual C++ y Borland C++ admiten que ciertos especificadores opcionales acompaen a la declaracin de funciones y otros objetos. Tales especificadores son de utilidad en circunstancias especficas ( 4.4.1b). W3 Declaraciones Recuerde que las declaraciones deben realizarse antes que cualquier uso de la funcin. A su vez las definiciones pueden estar en cualquier sitio, aunque en algunos casos pueden existir excepciones (sustitucin inline 4.4.6b). Las declaraciones de funciones tienen un nombre especfico: se denominan prototipos ; el primero de los anteriores (2a ) es vlido, aunque desaconsejado (herencia del C); es el denominado estilo clsico Kernighan & Ritchie; el segundo (2b ), y tercero (2c ), son los aceptados en C++ [ 1]. #ota: Es importante resaltar que en la declaracin de parmetros no est permitido incluir funciones, es decir: las funciones no pueden pasar como argumentos a otras funciones [6]. Sin embargo C++ dispone de recursos cuando esto es necesario: Pasar un puntero ( 4.2.4) o una referencia ( 4.2.3) a la funcin. El viejo estilo K&R tiene la desventaja de no permitir al compilador comprobar el nmero y tipo de los argumentos utilizados en las llamadas a la funcin. Este problema fue eliminado con la introduccin de los prototipos que utilizan la forma completa [ 2], en la que se especifica el nmero y tipo de cada argumento aceptado por la funcin. El compilador usa estos datos para comprobar la validez de las llamadas a la funcin y como se ilustra en el ejemplo, es capaz, en su caso, de realizar dentro de ciertos lmites, un modelado de tipo d d ("Casting") de los argumentos para garantizar que coinciden con el tipo esperado. #ota: El mecanismo anterior, permite al compilador efectuar una comprobacin de tipos de los argumentos que pasan y del valor devuelto. Los lenguajes en los que no se realizan estas comprobaciones, se denominan de d(bilmente tipados ("Weakly typed"), tienen la desventaja de que no conocen exactamente el tipo de cdigo que ejecutarn. Supongamos que se tiene el siguiente cdigo: extern long lmax(long v1, long v2); // prototipo funcion() { int limit = 32; char ch = 'A'; long mval; mval = lmax(limit, ch); // Llamada a la funcion. } Puesto que se dispone de un prototipo para la funcin lmax, este programa convierte los parmetros limit y ch a lon (utilizando las reglas estndar de asignacin), antes de colocarlos en la pila para la llamada a lmax. Si no hubiese existido el prototipo, limit y ch hubieran sido puestos en la pila como entero y carcter respectivamente, en cuyo caso, los valores pasados a limit no hubieran coincidido con el tamao y/o contenido esperados por esta, originando problemas ( 4.4.6 Llamadas a funciones y conversin de argumentos). W3.1 La inclusin del especificador opcional eBtern, sirve para indicar al compilador que la definicin de la funcin se encuentra en otro fichero distinto del actual. En caso contrario dicha definicin debe encontrarse en algn lugar del fichero (si es que existen llamadas a dicha funcin). Es decir, si aparece el siguiente trozo de cdigo: int alfa (int deg, int min, int sec); // declaracin de alfa ... int gr; gr = alfa( x, y, z); // uso de alfa la definicin de alfa debe estar en algn sitio del fichero que contiene dichas instrucciones, en caso contrario el compilador devolver un error: Unresolved external 'alfa()' referenced from ....OBJ. Es importante recordar que las funciones tienen mbito global y que, sus declaraciones (prototipos) aunque suelen estar al principio (inmediatamente despus de las directivas de preprocesado), pueden aparecer en cualquier parte del fichero. Ponerlas al principio tiene la ventaja de que sus nombres sean conocidos en la totalidad del fichero, con lo que pueden ser invocadas desde cualquier punto -desde cualquier otra funcin, incluso main()- sin tener que declarar un prototipo dentro de cada funcin que las invoque. W) *rototipos de funciones Los prototipos juegan un rol importante en la programacin C++; sirven tambin para clarificar y documentar el cdigo, sobre todo si los nombres de las variables son significativos. Por ejemplo, la funcin strcpy tiene dos parmetros: una cadena fuente y una destino, la cuestin es: Cual es cual? char *strcpy(char* dest, const char* source); Si se incluye un identificador en el parmetro de un prototipo, solo es utilizado para los posibles mensajes de error relativos a tal parmetro sin ningn otro efecto. De hecho, los identificadores (nombres) de los parmetros suelen ser largos y descriptivos en los prototipos, mientras que en las definiciones suelen ser abreviados, sin que, en este aspecto, tengan que haber coincidencia entre ambos (ver reglas de mbito para los identificadores de parmetros en prototipos de funciones 4.1.3). Como puede deducirse de estas palabras, esto significa que en realidad los nombres de los argumentos no son imprescindibles en los prototipos; solo son necesarios los tipos de los parmetros. Es decir: El prototipo de la funcin anterior podra perfectamente ser sustituido por: char *strcpy(char*, const char*); Un declarador de funcin con la palabra void entre parntesis: func(void);, indica que la funcin no acepta ningn parmetro; es equivalente a la expresin como func();, que tambin declara una funcin sin parmetros. W).1 *rototipos % fic0eros de cabecera: Es costumbre que los prototipos de las funciones incluidas en las libreras del lenguaje se agrupen en ficheros especficos, los denominados fic0eros de cabecera, que son ficheros de texto (en realidad ficheros fuente 1.4) en los que se agrupan todas las declaraciones que se utilizan en la librera. #ota: En realidad, los ficheros de cabecera no solo incluyen los prototipos y declaraciones de las funciones, tambin las declaraciones de las estructuras, macros ( 4.9.10b) y clases ( 4.11.2a) utilizadas. Por otra parte, tambin es frecuente que los programadores C++ construyan sus propias librer.as que acompaan a las que vienen preconstruidas en el lenguaje. Para ello se agrupan en ciertos mdulos aquellas funciones o clases ms frecuentemente utilizadas. Estos mdulos son compilados y enlazados de una forma especial de forma que no se obtiene un ejecutable, sino una librer.a de las que existen varios tipos ( 1.4.4a). En cualquier caso, sean libreras preconstruidas en el lenguaje o de fabricacin propia, los prototipos de las funciones incluidas en tales libreras se agrupan en ficheros de cabecera. Las que vienen con el lenguaje se localizan en el directorio \Include. Las de fabricacin propia se deben mantener en otro directorio separado del anterior. Puesto que es imprescindible incluir en cada fichero fuente la declaracin de cada funcin antes de que pueda ser utilizada , el hecho de tener agrupadas las declaraciones en un fichero de cabecera es de gran utilidad, porque solo es preciso incluir una directiva include ( 4.9.10g) al principio de cada fuente para tener la seguridad de que todos los prototipos estarn presentes. De otro modo tendra que escribirlos manualmente en cada fuente en que usara funciones de la librera. En la documentacin que acompaa a toda librera se indica siempre, junto con un ejemplo de uso, el nombre del fichero de cabecera que contiene los prototipos de las funciones utilizadas en la librera. Sin embargo, en ocasiones, cuando no se tiene a mano un buen manual de uso, o existe la sospecha de una errata en el mismo, puede ser til echar un vistazo al fichero de cabecera en que se incluye el prototipo de la funcin, ya que contiene bastante informacin sobre su uso; tipo y nmero de parmetros, valor devuelto, etc. #ota: Se ha llegado a afirmar que los ficheros de cabecera contienen toda la informacin necesaria para usar las libreras de cualquier tipo. Aunque desde luego pueden ser de gran ayuda, la afirmacin es un poco exagerada. En lo que respecta a las funciones, los prototipos contienen en realidad toda la gramtica de su invocacin, pero poco o nada sobre la "funcionalidad". W+ #Pmero variable de arumentos Normalmente los prototipos de funciones declaran un nmero fijo de parmetros (que puede ser ninguno). Para las funciones que pueden aceptar un nmero variable de parmetros (tales como printf), el prototipo puede terminar en puntos suspensivos (...). Esta elipsis indica que la funcin puede ser invocada con diferentes tipos de argumentos en diferentes ocasiones. Los puntos pueden colocarse al final de una sublista de parmetros de conocidos, por ejemplo: func(int *count, long total, ...); Por supuesto, esta forma de prototipo reduce la comprobacin que puede efectuar el compilador; los parmetros fijos son comprobados en tiempo de compilacin, y los variables son pasados sin comprobacin [ 3]. W3 1!emplos A continuacin algunos ejemplos adicionales de prototipos y declaraciones de funciones. Obsrvese que para mayor concisin, en todas ellas se han omitido d los nombres de los parmetros formales (que como hemos indicado, son opcionales en los prototipos): f(); /* En C, sin datos sobre los parametros, el estilo clsico K&R. Devuelve int */ f(); // En C++, f no recibe argumentos. Devuelve int. int f(void); // f devuelve int, no recibe argumentos. int p(int,long); /* p devuelve int, acepta dos parmetros: El primero un int, el segundo un long */ int __pascal q(void); /* q funcin Pascal, devuelve int, no recibe parmetro */ int printf(char *format,...); /* Devuelve int; un parmetro fijo, puntero a carcter, despus cualquier nmero de argumentos adicionales de tipo desconocido */ char* f(int) // funcin que devuelve puntero a carcter, acepta un int. int* f(int) // funcin que devuelve puntero a int, acepta int. struct str f(int) // funcin que devuelve estructura str acepta un int. int (*f (int))(int); /* funcin que acepta un entero y devuelve un puntero a funcin que acepta un int y devuelve un entero */ int (*(*f())[10])(); /* funcin que no recibe argumentos, devuelve un puntero a un array de 10 punteros a funcin que devuelven enteros */ int f(struct S* Sptr); /* funcin que recibe como argumento un puntero a una estructura y devuelve int */ int (B::* getptr())(); /* funcin que no recibe argumentos, devuelve un puntero a funcin miembro de la clase B que no recibe argumentos y devuelve un int */ W5 *olimorfismo Aparte de estas tareas de comprobacin y modelado de tipos, en realidad el objetivo principal de incluir en la declaracin de funciones una descripcin detallada del valor devuelto y de los parmetros aceptados, es permitir lo que se llama sobrecara (de funciones). Esto significa que dentro del mismo mbito puedan definirse varias funciones con nombres idnticos pero distintos parmetros y por supuesto distintas definiciones. Ms tarde, el compilador ser capaz de saber a cual de ellas nos estamos refiriendo, precisamente analizando los parmetros que pasamos a la funcin. Por ejemplo, en C++ est permitido el siguiente trozo de cdigo: int alfa (int deg, int min, int sec); // declaracion-1 de alfa void alfa (int deg); // declaracion-2 de alfa int alfa (char n); // declaracion-3 de alfa ... n = alfa('c'); // invocacin de alfa-3 el compilador conoce que, en este caso, la invocacin se refiere a la tercera declaracin de la funcin alfa, precisamente por el argumento que estamos utilizando. #ota: Las funciones main, Oin-ain y Lib-ain no pueden ser sobrecargadas. Ejemplo: extern "C" void WinMain(int, char*, char*); void WinMain(int, short, char*, char*); // Error!! http://www.zator.com/Cpp/E4_4_1.htm Invocacin de funciones % conversin de arumentos W1 Sinopsis Las invocacin de funciones se realiza colocando el nombre de la funcin y los argumentos actuales en el mismo orden que los parmetros formales correspondientes. Ejemplo: void funcion (int x, char c); ... int z = 12; char ch = 'Z'; funcion(ch, z); // Error: orden de argumentos cambiado !! funcion(z, ch); // Ok: invocacin con orden de argumentos correcto Recordemos que la sintaxis del lenguaje permite tambin la invocacin de funciones a travs de punteros a funciones ( 4.2.4b) e incluso de referencias ( 4.2.3), aunque esto ltimo sea menos frecuente. Cuando las funciones son miembros de clases la invocacin sigue una sintaxis especial ( 4.11.2e). En estos casos incluso existen operadores especiales para invocarlas a travs de sus punteros ( 4.9.16). W2 1valuacin de arumentos La gramtica C++ permite utilizar expresiones como argumentos en la invocacin de funciones. Estas expresiones son evaluadas, y sus posibles efectos laterales tienen efecto, antes que la funcin sea cargada en la pila ( 4.4.6b). Sin embargo, tales prcticas son en general desaconsejadas pues dan lugar a cdigo difcil de leer. Ejemplo: int x foo (int x) { return x+2; } ... int main() { int n = 3; cout << "foo -> " << foo(n++) << endl; cout << "foo -> " << foo(++n) << endl; ... } Salida: foo ->5 foo ->7 Hay que advertir que el orden de evaluacin de los argumentos es indefinido (depende del compilador), por lo que no es recomendable utilizar expresiones que dependan del orden de evaluacin de los parmetros. Ejemplo: int x foo (int x, int y) { return x + y; } ... int main() { int n = 3; cout << "foo -> " << foo(n++, n) << endl; ... } En estas condiciones es imposible precedir si la salida ser 7 u 8. W3 'onversin de arumentos A continuacin de la evaluacin, los valores resultantes de las expresiones son convertidos automticamente a los mismos tipos que los declarados para los parmetros formales. Ejemplo (suponiendo la definicin del caso anterior): cout << foo(x + 3.5); // -> 8 W3.1 Cuando no se ha declarado previamente un prototipo de la funcin, C++ realiza una invocacin a la funcin convirtiendo la totalidad de los argumentos segn las reglas de Conversiones aritmticas estndar ( 2.2.5). En cambio, si existe un prototipo de funcin en el mbito, C++ convierte los argumentos al tipo declarado para los parmetros. W3.2 Cuando un prototipo incluye puntos suspensivos (...), el compilador convierte todos los argumentos (si los hay) como en cualquier otro caso hasta la elipsis, despus conforma todos los dems parmetros (que han sido declarados variables) segn las reglas usuales para argumentos de funciones que no tienen prototipo. W3.3 Si existe un prototipo, el nmero de argumentos debe coincidir con los declarados (a menos que existan puntos suspensivos). El tipo de los argumentos tambin debe coincidir, pero solo hasta el punto en que una asignacin pudiera realizar legalmente una conversin (del tipo realmente pasado al tipo esperado). Tambin existe el recurso de hacer una conversin explcita ("cast") para convertir un argumento en un tipo que sea aceptable por el prototipo ( 4.9.9 Modelado de tipos). W) En C++ los parmetros son pasados por valor, lo que significa que existen copias locales de los argumentos formales, estas copias locales son variables locales de la funcin llamada. La nica excepcin es el caso de las matrices. Cuando se utiliza una matriz como argumento en la llamada a una funcin, el valor pasado es un puntero (a la direccin de memoria del principio de la matriz). Ejemplo: #include <iostream.h> void fun1(char* str) { // recibe puntero a carcter cout << str << endl; } void fun2(char str[]) { // recibe matriz de caracteres cout << str << endl; } int main() { // ====================== char ch[10] = "Hola mundo"; fun1(ch); fun2(ch); } Salida: Hola mundo Hola mundo Observe que el compilador acepta con total naturalidad que ch es un puntero a carcter en la invocacin func1(ch), y una matriz de caracteres en func2(ch). La razn es que en ambos casos, el compilador supone que ch es un puntero a carcter (en el ejemplo, al primer elemento de ch[], una matriz de caracteres), lo que coincidira con la definicin de func1, y que en la definicin de func2, char str[] es tomado como char* str. W+ Cuando se desea que la funcin llamada pueda alterar el valor de las variables de la funcin que la invoca, los argumentos actuales utilizados son punteros a las variables respectivas en la funcin invocante. A su vez la funcin invocada debe declarar el parmetro como un puntero y acceder a la variable indirectamente a travs de l. En el ejemplo que sigue deseamos que la funcin func pueda alterar el valor de la variable x. Observe que pasamos un puntero a dicha variable, y como func trata el argumento recibido p como tal puntero: { int x = 10; int* ptr = &x; func(ptr); // pasamos puntero a x } // ahora x = 30 ... void func (int* p) { // p es declarado como puntero *p = 3 * (*p); // y tratado como tal puntero!! } W3 Recordar que C++ tambin permite pasar los argumentos por referencia (Paso de argumentos 4.4.5). W5 -,s sobre conversin de par,metros En la lista de argumentos de invocacin de funciones es posible incluir sentencias de asignacin, aunque sea una prctica desaconsejable, pues da lugar a cdigo difcil de interpretar y en ocasiones sin mucho sentido. Por ejemplo, en C++ es vlido el siguiente cdigo que compila sin problema: #include <iostream.h> void fun (char* p, int n) { for (int i = 1; i <= n ; i++) cout << p << i << endl; } void main() { // ============= char* pt1 = "Hola, que tal!! "; char* pt2; int x; fun(pt2 = pt1, x =5); // desaconsejado !! } Salida: Hola, que tal!! 1 Hola, que tal!! 2 Hola, que tal!! 3 Hola, que tal!! 4 Hola, que tal!! 5 http://www.zator.com/Cpp/E4_4_6.htm Declaracin de funciones La &ecla-aci7" &e !"a %!"ci7" $ie"e la si3!ie"$e %o-ma < 31nction Nombre (p1,p2,...)?tipo <declaraciones locales y s12programas> 2egin <cuerpo de la funcin> Nombre := valor de la funcin end, p',p=,... lista de parGmetros 3ormales tipo tipo de dato del res1ltado H1e dev1elve la 31nci;n E.em*los < 31nction veri3ica ? 2oolean , < 61nci;n sin parGmetros 3ormales> 31nction cam2ia(ar valor_', valor_=? real)?real, 31nction potencia( 2ase, e5ponente ? real )?real, http://www.itlp.edu.mx/publica/tutoriales/pascal/u6_6_2_1.h tml Invocacin de funciones Las %!"cio"es se i";oca" &e la si3!ie"$e ma"e-a < Dnombre4funcinE Eparmetros4locales= 5
&o"&e < *a-4me$-osXlocales es !"a lis$a &e ;a-iables ?=o co"s$a"$es se*a-a&as *o- comas. La eHis$e"cia &e *a-4me$-osXlocales &e*e"&e-4 &e !e eHis$a" parmetros formales e" la &ecla-aci7" &e la %!"ci7". Po- e.em*loD -esol;amos el *-oblema &e cac!la- la -a5( c!a&-a&a &e !" "Ime-oD !$ili(a"&o el al3o-i$mo &e Ne>$o"< HEiP1F A HEiF P C.6 E a=HEiF ,HEiF F La co&i%icaci7" &el *-o3-ama se-5a < Program RaiI_c1adrada, <#l sig1iente programa calc1la la raJI c1adrada de 1n nKmero> Eses Crt, ar raiI, n1mero ? real, <0eclaraci;n de la 31nci;n raiI_c1ad> 31nction raiI_c1ad( a ? real ) ? real , ar c,5 ? real , 2egin 5 ?& '#CL , c ?& '.) , :hile !2s (cC5)>'#CL do 2egin c ?& 5 , 5 ?& 5 D ).A 4 ( a/5 C5 ) end, raiI_c1ad ?& 5 <#l res1ltado se asigna a nom2re_31nci;n> end, 2egin Clr.cr, Mrite(N%a raJI c1adrada de ? N), Read%n(n1mero) , raiI?&raiI_c1ad(n1mero), <Invoca a la 31nci;n raiI_c1ad> Mrite%n , Mrite%n(N#s ig1al a ? N,raiI?O?P), ReadQey, Clr.cr end. http://www.itlp.edu.mx/publica/tutoriales/pascal/u6_6_2_2.h tml *rocedimientos. Un procedimiento es un subprograma que realiza una tarea especfica. Puede recibir cero o ms variables de entrada y teniendo tambin cero o ms variables de salida. Un procedimiento est compuesto de un grupo de sentencias a las que se asigna un nombre (identificador) y constituye una unidad de programa. La tarea asignada al procedimiento se ejecuta siempre que en el programa principal se encuentra el nombre del procedimiento. Declaracin de un procedimiento. Al igual que cualquier otro identificador, todos los procedimientos se deben declarar dentro del cuerpo del programa. La declaracin de un procedimiento no indica a la computadora que ejecute las instrucciones dadas, sino que indica a la computadora cules son estas instrucciones y dnde estn localizadas cuando sea necesario. formato 1 void nombreproc(void) { declaracin de variables locales; cuerpo del procedimiento; } formato 2 void nombreproc(lista parmentros formales) { declaracin de variables locales; cuerpo del procedimiento; } nombreproc dentificador vlido. lista parmetro formales Parmetros formales del procedimiento; sirven para pasar informacin al procedimiento y/o devolver informacin del procedimiento a la unidad de programa que le invoca. Llamada al procedimiento. Los procedimientos se llaman dentro de un programa o de otro procedimiento directamente por su nombre, de acuerdo a los formatos 1 y 2. formato 1 nombreproc(); formato 2 nombreproc(lista parmetros actuales); La sentencia nombreproc inicia la ejecucin del procedimiento nombreproc; despus que ha terminado la ejecucin, se ejecuta la sentencia que sigue a la llamada al procedimiento. /unciones. Las funciones son los bloques constructores de C y el lugar donde se da toda la actividad del programa. La forma general de una funcin es: especificador_de_tipo nombre_de_la funcin(lista de parmetros) { cuerpo de la funcin } El especificador_de_tipo especifica el tipo de valor que devuelve la sentencia return de la funcin. El valor puede ser cualquier tipo vlido. Si no se especifica ningn tipo, el compilador asume que la funcin devuelve como resultado un entero. La lista de parmetros es la lista de nombres de variables separados por comas con sus tipos asiciados que reciben los valores de los argumentos cuando se llama a la funcin. Una funcin puede no tener parmetros en cuyo caso la lista de parmetros contiene slo la palabra clave void. La sentencia return La sentencia return tiene dos usos importantes. Primero, fuerza una salida inmediata de la funcin en que se encuentra. O sea, hace que la ejecucin del programa vuelva al cdigo que llam a la funcin. En segundo lugar, se puede utilizar para devolver un valor. 8uelta de una funcin. Hay dos formas en las que una funcin puede terminar su ejecucin y volver al sitio en que se llam. La primera ocurre cuando se ha ejecutado la ltima sentencia de la funcin y, conceptualmente, se encuetra la llave } del final de la funcin. ( La llave realmente no aparece en el cdigo objeto, por supuesto, pero se puede pensar como si as fuera.) Por ejemplo, esta funcin sencillamente imprime una cadena invertida en la pantalla: void imp_inversa(char *s) { register int t; for(t=strlen(s)-1; t>-1; t--) printf("%c", s[t]); } 8alores devueltos. Todas las funciones, excepto aquellas de tipo void, devuelven un valor. Este valor se especifica explcitamente en la sentencia return. Si una funcin no es especificada como void y si no se especifica un valor de vuelta, entonces el valor devuelto por la funcin queda tcnicamente indefinido. Mientras que una funcin no se declare como void, puede ser usada como operando en cualquier expresin vlida de C. Por tanto, cada una de las siguientes expresiones es vlida en Turbo C: x = potencia(y); if(max(x,y)>100) printf("mayor"); for(c=getchar(); isdigit(c); ) ...; Sin embargo, una funcin no puede ser el destino de una asignacin. Como: intercambio(x, y) = 100; /* Esto esta MAL!*/ Lo &ue devuelve main67 Cuando se usa una sentencia return en main(), el programa devuelve un cdigo de terminacin al proceso de llamada (que generalmente es el sistema operativo). El valor devuelto debe ser un entero. Pasa muchos sistemas operativos, incluyendo DOS y OS/2, un valor de vuelta de 0 indica que el programa ha terminado normalmente. Todos los dems valores indican que se ha producido algn tipo de error. "rumentos de funciones. Si una funcin va a usar argumentos, debe declarar variables que acepten los valores de los argumentos. Estas variables se llaman parmentros formales de la funcin. Se comportan como otras variables locales dentro de la funcin, crendose al entrar en la funcin y destruyndose a salir. Como muestra la siguiente funcin, la declaracin de parmetros aparece despus del nombre de la funcin y antes de la llave de apertura: /* devuelve 1 si c es parte de la cadena cad; 0 de otro modo */ est_en(char *cad, char c) { while(*cad) if(*cad==c) return 1; else cad++; return 0; } http://www.umsanet.edu.bo/programacion/sim(NF- 121)/tecnicas_de_diseno.htm 3.3 Uso de /unciones % *rocedimientos con *ar,metros. *rocedimientos con par,metros /os parametros formales son un tipo especial de variables en un procedimiento a las que se pueden pasar valores desde el eEterior del procedimiento. /os parametros formales se declaran en la cabecera del procedimiento. /os parmetros que pueden recibir valores pero que no pueden devolverlos reciben el nombre de parEmetros por 1alor o parEmetros de entrada. /os parmetros que pueden recibir $ devolver valores reciben el nombre de parEmetros por 1ariable o parEmetros de entrada:salida. /os procedimientos que usan parmetros requieren una cabecera distinta de aquellos que no lo "acen. A los procedimientos que usan parmetros se les llama mediante una instruccin de llamada a procedimiento, que no slo especi#ica el nombre del procedimiento sino tambi(n los valores pasados al procedimiento. 0ttp@99HHH.ucm.es9info9dsip9clavel9courses9ip>2>39node33.0tml *ar,metros por valor o de entrada 8on procedimientos que usan parmetros que pueden recibir valores de otras unidades de pro+rama pero que no pueden devolverlos. Cabece-a 8intaEisK PROCEDURE nombre ( declaracin'parEm'formales ); dondeK o PROCEDURE es una palabra reservadaA o nombre es el nombre de un procedimientoA o declaracin'parEm'formales declara los parmetros del procedimiento. /as declaraciones de los parmetros #ormales por valor tienen la #orma lista'parEmetros : tipo donde lista'parEmetros es una nica variable o una lista de variables separadas por comas $ tipo especi#ica su tipoA estas declaraciones se separan mediante punto $ coma. 4bjetivoK Ia nombre al procedimiento $ declara sus parmetros. Pa-$e &e &ecla-acio"es o omo en los procedimientos simples. Pa-$e &e i"s$-!ccio"es o omo en los procedimientos simples. I"s$-!cci7" &e llama&a 8intaEisK nombre ( lista'parEmetros'reales )A dondeK o nombre es el nombre de un procedimientoA o lista'parEmetros'reales es una nica eEpresin o una lista de eEpresiones separadas por comas. 4bjetivoK /lama el pro+rama nombrado. 8e suspende la ejecucin de la unidad de pro+rama actual, se pasan los valores de los parmetros reales a los correspondientes parmetros #ormales $ comienza la ejecucin del procedimiento. uando #inaliza la ejecucin del procedimiento, la ejecucin de la unidad de pro+rama ori+inal contina con la instruccin si+uiente a esta instruccin de llamada a procedimiento. o Antes de que se llame un procedimiento con parametros, sus parmetros #ormales estn inde#inidos. o 1n el momento de la llamada, se asocian posiciones de memoria con sus parmetros por valor, $ se copian los valores de los parmetros reales correspondientes en dic"as posiciones de memoria. o Tras la ejecucin del procedimiento, los parmetros por valor vuelven de nuevo a estar inde#inidosK cualquier valor que tuvieran durante la ejecucin del procedimiento se "a perdido $ no se devuelve a la unidad de pro+rama que llam al procedimiento. P-o3-ama onversin de monedaDDversin 2. ombina en un nico procedimiento con parametros de valor los procedimientos simples ConvertirPesetasEuros $ ConvertirEurosPesetas del pro+rama ConvertirMoneda1. 5ara ello, el pro+rama principal lee un cdi+o que indica el tipo de moneda a convertir $ la cantidad de dinero, $ comparte esta in#ormacin con el procedimiento. 5ermite tambi(n convertir varias cantidades $ calcular la cantidad total convertida. PROGRAM ConvertirMoneda2( input, output ); {********************************************************************* ** Entrada (teclado): Mes, dia y anyo actuales, un entero indicando el tipo de moneda, y varias cantidades monetarias. Objetivo: Convertir cantidades monetarias en pesetas a euros y viceversa, calculando el total de las cantidades. Salida (pantalla): Instrucciones al usuario, las cantidades monetarias, la fecha de las operaciones, y el total de las cantidades. ********************************************************************** **} CONST EuroPeseta = 166.386; {paridad euro-peseta} VAR MesActual, {mes actual} DiaActual, {dia actual} AnyoActual, {anyo actual} CodigoMoneda : integer; {indica el tipo de la moneda a ser convertida} Dinero, {cantidad monetaria a convertir} Total : real; {total de las cantidades}
PROCEDURE MostrarInstrucciones; {--------------------------------------------------------------------- --- Objetivo: Mostrar las instrucciones al usuario. Salida (pantalla): Instrucciones para usar el programa. ---------------------------------------------------------------------- -} BEGIN writeln( 'Este programa convierte pesetas a' ); writeln( 'euros y viceversa,' ); writeln( 'y calcula la cantidad total.'); writeln( 'Introduzca 0 para indicar que se han procesado todas', ' las cantidades,' ); writeln; writeln( 'Introduzca 1 para convertir pesetas a euros' ); write( ' 2 para convertir euros a pesetas: ' ) END {MostrarInstrucciones}; PROCEDURE Convertir( Codigo : integer; {codigo de moneda} Cantidad: real ); {cantidad monetaria} {--------------------------------------------------------------------- -- Acepta: Codigo, Cantidad. Objetivo: Convertir una cantidad monetaria a otro sistema monetario. Salida (pantalla): Cantidad monetaria equivalente. ---------------------------------------------------------------------- --} BEGIN write( 'Es equivalente a ' ); IF Codigo = 1 THEN writeln((1/ EuroPeseta) * Cantidad:4:2, ' euros' ) ELSE writeln(round(EuroPeseta * Cantidad):1, ' pesetas' ) END {Convertir}; BEGIN {**********************programa principal**************************} write( 'Introduzca el dia, mes y anyo actuales: ' ); readln( DiaActual, MesActual, AnyoActual ); MostrarInstrucciones; readln( CodigoMoneda ); Total := 0; write( 'Introduzca cantidad (0 para terminar): ' ); readln( Dinero ); WHILE Dinero > 0 DO BEGIN Convertir( CodigoMoneda, Dinero ); Total := Total + Dinero; write( 'Introduzca cantidad (0 para terminar): ' ); readln( Dinero ) END {WHILE}; writeln( '*** FECHA DE LA OPERACION: ', DiaActual:1, '-', MesActual:1, '-', AnyoActual:1 ); IF CodigoMoneda = 1 THEN writeln( 'La cantidad total convertida es ', round(Total):1,' pesetas' ) ELSE writeln( 'La cantidad total convertida es ', Total:4:2,' euros' ) END {programa principal}. E.em*los &e e.ec!ci7" Introduzca el dia, mes y anyo actuales: 12 02 2002 Este programa convierte pesetas a euros y viceversa, y calcula la cantidad total. Introduzca 0 para indicar que se han procesado todas las cantidades, Introduzca 1 para convertir pesetas a euros 2 para convertir euros a pesetas: 1 Introduzca cantidad (0 para terminar): 1000 Es equivalente a 6.01 euros Introduzca cantidad (0 para terminar): 500 Es equivalente a 3.01 euros Introduzca cantidad (0 para terminar): 1500 Es equivalente a 9.02 euros Introduzca cantidad (0 para terminar): 0 *** FECHA DE LA OPERACION: 12-2-2002 La cantidad total convertida es 3000 pesetas *ar,metros por variable o de entradaGsalida 8on procedimientos que usan parmetros que pueden recibir $ devolver valores a otras unidades de pro+rama Cabece-a o omo en los procedimientos con parmetros por valor, pero la declaracin de los parmetros #ormales por variable aparece precedida por la palabra reservada VAR para especi#icar que son parmetros por variable $ no por valorK VAR lista'parEmetros : tipo donde cada lista'parEmetros es un nica variable o una lista de variables separadas por comas $ tipo especi#ica su tipo, $ estas declaraciones aparecen separadas por punto $ coma. Pa-$e &e &ecla-acio"es o omo en los procedimientos simples. Pa-$e &e i"s$-!ccio"es o omo en los procedimientos simples. I"s$-!cci7" &e llama&a o omo en los procedimientos con parmetros por valor, pero, en el momento de la llamada, no se crean nuevas posiciones de memoria para los parmetros #ormales por variableA en lu+ar de ello, a los parmetros por variables se les asocia las posiciones de memoria $a eEistentes de los parmetros reales correspondientes. P-o3-ama onversin de monedaDDversin 7. PROGRAM ConvertirMoneda3( input, output ); {********************************************************************* ***** Entrada (teclado): Mes, dia y anno actuales, un entero indicando el tipo de moneda, y varias cantidades cantidades. Objetivo: Convertir cantidades monetarias en pesetas a euros y viceversa, calculando el total de cantidades. Salida (pantalla): Instrucciones al usuario, las cantidades monetarias convertidas, la fecha de las operaciones, y el total de las cantidades. ********************************************************************** *****} CONST EuroPeseta = 166.386; {paridad euro-peseta}
VAR MesActual, {mes actual} DiaActual, {dia actual} AnnoActual, {anno actual} MonedaCasa, {indica el tipo de moneda de la casa} CodigoMoneda : integer; {indica el tipo de la moneda a ser convertida} Dinero, {cantidad monetaria a convertir} DineroConv, {cantidad equivalente en el otro sistema monetario} Total : real; {total de las cantidades} PROCEDURE MostrarInstrucciones; {--------------------------------------------------------------------- - Objetivo: Mostrar las instrucciones al usuario. Salida (pantalla): Instrucciones para usar el programa. ---------------------------------------------------------------------- -} BEGIN writeln( 'Este programa convierte pesetas a' ); writeln( 'euros y viceversa, y calcula la cantidad total.'); writeln( 'Introduzca 0 para indicar que se han procesado todas ', 'las cantidades.' ); writeln; writeln( 'Introduzca 1 para convertir pesetas a euros'); writeln( ' 2 para convertir euros a pesetas. '); writeln( 'Recuerde 1 es el codigo para los euros'); write( ' 2 es el codigo para las pesetas: ') END {MostrarInstrucciones}; PROCEDURE Convertir2( Codigo : integer; {tipo de moneda} Cantidad : real; {cantidad a convertir} VAR CantEquiv : real ); {cantidad equivalente} {--------------------------------------------------------------------- -- Acepta: Codigo, Cantidad. Objetivo: Convertir una cantidad monetaria a otro sistema monetario. Devuelve: CantEquiv. Salida (pantalla): CantEquiv. ---------------------------------------------------------------------- --} BEGIN write( 'Es equivalente a ' ); IF Codigo = 1 THEN BEGIN CantEquiv := round(EuroPeseta * Cantidad); writeln( round(CantEquiv):1, ' pesetas' ) END {IF} ELSE BEGIN CantEquiv := (1/ EuroPeseta) * Cantidad; writeln( CantEquiv:4:2, ' euros' ) END {ELSE} END {Convertir2}; BEGIN {**********************programa principal**************************} write( 'Introduzca el dia, mes y anno actuales: ' ); readln( DiaActual, MesActual, AnnoActual ); MostrarInstrucciones; readln( MonedaCasa ); Total := 0; write( 'Introduzca tipo de moneda y cantidad (0 0 para terminar): ' ); readln( CodigoMoneda, Dinero ); WHILE Dinero > 0 DO BEGIN IF CodigoMoneda <> MonedaCasa THEN BEGIN Convertir2( CodigoMoneda, Dinero, DineroConv ); Total := Total + DineroConv END {IF} ELSE Total := Total + Dinero; write( 'Introduzca tipo de moneda y cantidad ', '(0 0 para terminar): ' ); readln( CodigoMoneda, Dinero ) END {WHILE}; writeln( '*** FECHA DE LA OPERACION: ', DiaActual:1, '-', MesActual:1, '-', AnnoActual:1 ); IF MonedaCasa = 1 THEN writeln( 'La cantidad total convertida es ', Total:4:2,' euros' ) ELSE writeln( 'La cantidad total convertida es ', round(Total):1,' pesetas' ) END {programa principal}. E.em*los &e e.ec!ci7" Introduzca el dia, mes y anno actuales: 13 02 2002 Este programa convierte pesetas a euros y viceversa, y calcula la cantidad total. Introduzca 0 para indicar que se han procesado todas las cantidades. Introduzca 1 para convertir pesetas a euros 2 para convertir euros a pesetas. Recuerde 1 es el codigo para los euros 2 es el codigo para las pesetas: 2 Introduzca tipo de moneda y cantidad (0 0 para terminar): 1 6.01 Es equivalente a 1000 pesetas Introduzca tipo de moneda y cantidad (0 0 para terminar): 2 1000 Introduzca tipo de moneda y cantidad (0 0 para terminar): 0 0 *** FECHA DE LA OPERACION: 13-2-2002 La cantidad total convertida es 2000 pesetas Introduzca el dia, mes y anno actuales: 13 02 2002 Este programa convierte pesetas a euros y viceversa, y calcula la cantidad total. Introduzca 0 para indicar que se han procesado todas las cantidades. Introduzca 1 para convertir pesetas a euros 2 para convertir euros a pesetas. Recuerde 1 es el codigo para los euros 2 es el codigo para las pesetas: 1 Introduzca tipo de moneda y cantidad (0 0 para terminar): 2 1000 Es equivalente a 6.01 euros Introduzca tipo de moneda y cantidad (0 0 para terminar): 1 6.01 Introduzca tipo de moneda y cantidad (0 0 para terminar): 0 0 *** FECHA DE LA OPERACION: 13-2-2002 La cantidad total convertida es 12.02 euros Re3las *a-a la asociaci7" &e *a-4me$-os /as si+uientes re+las resumen la relacin entre los parmetros #ormales $ los realesK 1. Iebe "aber el mismo nmero de parmetros reales que #ormales. 2. /os tipos de los parmetros #ormales $ reales asociados deben concordarA sin embar+o, un parmetro real de tipo integer puede estar asociado con un parmetro por 1alor de tipo real, pero no con un parmetro #ormal por 1ariable de tipo real. 7. !n parmetro real asociado con un parmetro #ormal por 1ariable debe ser una variableA no puede ser una constante o una eEpresin. /unciones 5ascal proporciona varias funciones predefinidas como sqr $ round. 1n 5ascal tambi(n se pueden utilizar funciones definidas por el usuario. omo los procedimientos, las #unciones se de#inen en la seccin de subpro+ramas de un pro+rama $ consisten en o cabecera, o parte de declaraciones $ o parte de instrucciones. Cabece-a 8intaEisK FUNCTION nombre ( declaracin'parEm'formales ) tipo'del'resultado ; dondeK FUNCTION es una palabra reservadaA nombre es un identi#icador vlido de 5ascalA declaracin'parEm'formales declara los parmetros de la #uncinA tipo'del'resultado es el tipo del valor de la #uncin. /a declaracin de los parmetros #ormales tiene la misma #orma que la cabecera de un procedimiento con parmetros. 8i la #uncin no tiene parmetros, se omiten la declaracin de parmetros #ormales $ los par(ntesis, de #orma que la cabecera tiene la #orma simple FUNCTION nombre : tipo'del'resultado ; 4bjetivoK Ia nombre a la #uncin $ declara sus parmetros $ el tipo del resultado. Pa-$e &e &ecla-acio"es o omo en los procedimientos. Pa-$e &e i"s$-!ccio"es o omo en los procedimientos , con la eEi+encia adicional de que al menos una de las instrucciones debe asi+nar un valor al identi#icador que nombra la #uncin. I"s$-!cci7" &e llama&a o )o "a$ instruccin de llamada a una #uncin. 5ara llamar a una #uncin se usa su nombre en una eEpresin, como en las #unciones 5ascal prede#inidas. P-o3-ama PROGRAM CalcularTablaDeCubos( input, output ); {********************************************************************* Entrada (teclado): Un rango de numeros reales y un tamanyo de paso. Objetivo: Calcular una tabla de cubos de los numeros especificados en un rango. Salida (pantalla): Indicaciones al usuario, una tabla de numeros y sus cubos. *********************************************************************} VAR Inferior, Superior, {limites del rango de valores} Paso, {incremento} Numero : real; {argumento actual} FUNCTION Cubo( x : real ) : real; {-------------------------------------------------------------------- Acepta: El numero real x. Objetivo: Calcular el cubo (tercera potencia) de x. Devuelve: El cubo de x. ---------------------------------------------------------------------} BEGIN Cubo := x * sqr(x); END {Cubo}; BEGIN {****************** programa principal ******************} write( 'Introduzca el rango de valores ', 'y el tamanyo del incremento: ' ); readln( Inferior, Superior, Paso ); writeln; writeln( 'numero su cubo' ); writeln( '====== =======' ); Numero := Inferior; WHILE Numero <= Superior DO BEGIN writeln( Numero:5:2, Cubo(Numero):12:4 ); Numero := Numero + Paso END {WHILE} END {programa principal}. !jemplo de ejecucin Introduzca el rango de valores y el tamanyo del incremento: 1 4 0.5 numero su cubo ====== ======= 1.00 1.0000 1.50 3.3750 2.00 8.0000 2.50 15.6250 3.00 27.0000 3.50 42.8750 4.00 64.0000 P-o3-ama PROGRAM CalificarAptoNoApto( input, output ); {********************************************************************* * Entrada (teclado): Una linea divisoria entre apto y no apto y las medias de varios estudiantes. Objetivo: Determinar las calificaciones apto-no apto de cada estudiante. Salida (pantalla): Indicaciones al usuario, y calificaciones.
*********************************************************************} VAR Media, {media del estudiante} LineaAN : real; {linea divisoria entre apto y no apto} Calificacion : char; {calificacion apto/no apto asignada} FUNCTION CalificacionAN( Media, {puntuacion media} LineaAN : real ) {linea divisoria} :char; {--------------------------------------------------------------------- Acepta: Valores reales Media y LineaAN. Objetivo: Calcular la calificacion: 'A' si Media >= LineaAN y 'N' si Media < LineaAN. Devuelve: La calificacion apto-no apto ---------------------------------------------------------------------} BEGIN IF Media >= LineaAN THEN CalificacionAN:= 'A' ELSE CalificacionAN := 'N' END {CalificacionAN}; BEGIN {**************** programa principal *****************} write( 'Introduzca la linea divisoria apto/no apto: ' ); readln( LineaAN ); writeln( 'Introduzca una media negativa para terminar el programa' ); writeln; write( 'Media del estudiante: ' ); readln( Media ); WHILE Media >= 0 DO BEGIN Calificacion := CalificacionAN( Media, LineaAN ); writeln( ' La calificacion es ', Calificacion ); write( 'Media del estudiante: ' ); readln( Media ) END {WHILE} END {programa principal}. !jemplo de ejecucin Introduzca la linea divisoria apto/no apto: 60 Introduzca una media negativa para terminar el programa Media del estudiante: 90 La calificacion es A Media del estudiante: 60 La calificacion es A Media del estudiante: 59.5 La calificacion es N Media del estudiante: 40 La calificacion es N Media del estudiante: -1 0ttp@99HHH.ucm.es9info9dsip9clavel9courses9ip>2>39node35.0tml Unidad 9. :ra*icacin Una computadora moderna es en gran medida un conjunto de interruptores electrnicos, los cuales se utilizan para representar y controlar el recorrido de datos denominados dgitos binarios (bits, un "0" o un "1"). El desarrollo del transistor fue uno de los inventos ms importantes para la revolucin de la computadora personal. Este fue inventado en 1948 por los ingenieros John Bardeen, Walter Brattain Y William Shockley de los laboratorios Bell. Funciona como un interruptor de estado slido, que sustituy al bulbo que era mucho menos adaptable por su tamao y consumo de energa. La conversin a transistores provoc la tendencia hacia la miniaturizacin que contina hasta el da de hoy. En 1959, los ingenieros de Texas nstruments inventaron el C (circuito integrado o chip), un semiconductor que contiene mas de un transistor sobre la misma base y que conecta los transistores sin necesidad de cables. El primer C tena seis transistores. En comparacin, el microprocesador Pentium Pro de ntel, que se usa en muchos de los sistemas mas avanzados, tiene mas de 5.5 millones de transistores, y la memoria cach integral que incluyen algunos de estos procesadores contiene hasta 32 millones de transistores adicionales! Actualmente, muchos chips tienen transistores que pueden contarse en varios millones. Cmo se miden los avances tecnolgicos de las computadoras? Una computadora esta formada por dos componentes estructurales con el mismo nivel de importancia: - El equipo fsico (hardware): Por sus caractersticas constructivas (circuitos, arquitectura global del sistema, tecnologa electrnica). - Los programas con los que funciona (software): Por los programas bsicos con los que opera. Es decir, como se entabla comunicacin con ella (lenguajes, sistema operativo, interfaces). Lo cual significa que su grande avance debe considerarse en esas dos direcciones. Desde la invencin de la primera computadora, estas han tenido un avance que se puede estudiar en trminos de "generaciones". Abarca desde los inicios de los aos 50 hasta los 60, y - Estaban construidas con electrnica de bulbos - Se programaban en lenguaje de mquina (nivel mas bajo de representacin de la informacin) Los programas son un conjunto de instrucciones para que la mquina efecte alguna tarea, y el lenguaje mas simple en el que puede escribir un programa es el lenguaje de mquina (porque el programa se escribirse con un conjunto de cdigos binarios). La primera generacin - 1947 ENAC. Primera computadora digital electrnica. Fue una mquina experimental. No era programable como las computadoras actuales. Era un enorme aparato que ocupa todo el stano en la universidad de Pennsylvania. Tena 18,000 bulbos, consuma varios KW de potencia y pesaba algunas toneladas. Realizaba hasta cinco mil sumas por segundo. Fue echa por un equipo de ingenieros y cientficos encabezados por los doctores John W. Mauchly y J. Prester Eckert en la Universidad de Pennsylvania, en los Estados Unidos. - 1949 EDVAC. Primera computadora programable. Tambin fue un prototipo de laboratorio, pero ya inclua en s diseo las ideas centrales que conforman a las computadoras actuales. ncorporaba las ideas del doctor John von Neumann. - 1951 UNVAC . Primera computadora comercial. Los doctores Mauchly y Eckert fundaron la compaa Universal Computer (Univac ), y su primer producto fue esta mquina. El primer cliente fue la oficina del censo de Estados Unidos. - 1953 BM 701. Para introducir los datos, estos equipos empleaban el concepto de tarjetas perforadas, que haba, sido inventada en los aos de la revolucin industrial (finales del siglo XV) por el francs Jacquard y perfeccionado por el estadounidense Hermand Hollerith en 1890. La BM 701 fue la primera de una larga serie de computadoras de esta compaa, que luego se convertira en la nmero 1 por su volumen de ventas. - 1954 - BM continu con otros modelos, que incorporaban un mecanismo de almacenamiento masivo llamado tambor magntico, que con los aos evolucionara y se convertira en disco magntico. Segunda generacin Estas computadoras ya no utilizaban bulbos, sino transistores, ms pequeos y consumen menos electricidad. La forma de comunicacin con estas nuevas computadoras es mediante lenguajes mas avanzados que el lenguaje de mquina, llamados "lenguajes de alto nivel" o lenguajes de programacin. Esta segunda generacin duro pocos aos, porque hubo nuevos avances tanto en el hardware como en el software. Tercera generacin Esta nueva generacin fue inaugurada con la presentacin comercial de la llamada "serie 360"de BM. BM se dedic a los aspectos de ingeniera, comercializacin y mercadotecnia de sus equipos, y en corto tiempo la nocin de las computadoras sali de los laboratorios y las universidades y se instal como un componente imprescindible de la sociedad industrial moderna. Las computadoras de la tercera generacin tienen ventajas importantes, debido a dos factores fundamentales: - Estn hechas a base de agrupamientos de transistores miniaturizados en paquetes conocidos como circuitos integrados (C.. o Chips) - Aunque se siguen programando en lenguajes de alto nivel, ahora un mtodo de comunicacin con el programador que resulta mas fcil de emplear que el anterior. Es decir, la electrnica de las computadoras de la tercera generacin (circuitos integrados) es ms compacta, rpida y densa que la anterior, y la comunicacin se establece mediante una interfaz (un intermediario) conocida como sistema operativo. Cuarta generacin El nacimiento de las microcomputadoras tuvo lugar en los Estados Unidos, a partir de la comercializacin de los primeros microprocesadores (ntel 8008,8080) a comienzos de la dcada de 1970. Durante la dcada de 1970 se impusieron dos tendencias: - Los sistemas Apple, - La PC de BM: que comenz una explosin comercial masiva, con su introduccin, en 1981. Esta ltima mquina (basada en microprocesador ntel 8088) tenia caractersticas interesantes, sobre todo porque su nuevo sistema operativo estandarizado (MS-DOS, Microsoft Disk Operating System) tena una capacidad mejorada de graficacin, la hacan ms atractiva y ms fcil de usar. Existe una familia completa de sistemas de computadoras personales, que se conocen con las nomenclaturas XT, AT y PS/2. - 1971 Microprocesador ntel 8008. Circuito de alta integracin que luego dara inicio a las microcomputadoras. - 1975 Aparece la microcomputadora Apple. Aparece el microprocesador Zilog Z80. nicia el auge de la microcomputacin. - 1981 BM lanza la computadora personal, luego conocida como PC-XT - 1984 BM ofrece la computadora personal PC-AT, basada en el microprocesador ntel 80286. - 1988 BM presenta la serie de computadoras personales PS/2, algunas de las cuales emplean el microprocesador 80386. Surge una gran cantidad de computadoras con ese y otros procesadores similares. - 1991 Microprocesador de muy alto rendimiento: ntel 80486, Motorola 68040, Sparc, tecnologa RSC, etc. Microprocesador Power PC (Performace Optimization With Enhanced RSC PC) resultado de alianza de Apple, BM y Motorola. - 1993 ntel lanza al mercado el procesador 80586 conocido como Pentium. 5.1 'onceptos b,sicos de r,ficas. 5.2 Introduccin b,sica de mane!o de r,ficas. 5.3 Uso de librer.as para la realiLacin de raficas. 5.) :raficacin de un punto % l.neas rectas raficaci!n de puntos o formas
8ctivado el modo gr9(ico, %a ser9 posible tra:ar l,neas u otras (ormas geom.tricas, gra(icar puntos o bien introducir 2e4tos al plano gr9(ico. 8 continuacin se describen algunos comandos cu%o uso es (recuente en actividades de gra(icado. raficado de puntos "ut"i#el($%&%'!digo(e'olor)) ;ra(ica, coloca un pi4el en las coordenadas +<,=- especi(icadas con el color indicado por el cdigo. >as coordenadas deber9n estar dentro del intervalo de coordenadas m,nimas % m94imas correspondientes al plano seleccionado. "ttpKNNmembers.#ortunecit$.comN+isela+onzalezNcomputacionNcap0@271."tml raficado de Lneas Line($*%&*%$+%&+)) 2ra:a una l,nea de las coordenadas +<1,=1- a las coordenadas +<2,=2-. Utili:ando el color % el estilo ?ue est.n activos. 8s, como puede modi(icar el color, tambi.n puede modi(icar el estilo de tra:ado de l,neas. LineRel((elta$%(elta&)) 2ra:a una l,nea desde la posicin actual del cursor *asta las coordenadas resultantes de incrementar < en @elta< % = en @elta=. Line,o($%&)) 2ra:a una l,nea desde la posicin actual del cursor *asta las coordenadas +4,=-7 !n los tres casos < % = son datos o variables de tipo entero. ,ra-a formas diversas A)./ 'rculos 'ircle($%&%r)) 2ra:a un c,rculo cu%o centro estar9 en las coordenadas +<,=- % tendr9 un radio r. 2anto < % = como r, son nmeros datos o variables enteras, delimitadas por las coordenadas m94imas % m,nimas del plano gr9(ico. 0)./ Elipses Ellipse($%&%Angulo1nicial%Angulo2inal%Radio$%Radio&)) 2ra:a una elipse o un arco el,ptico, <,= son las coordenadas del centro7 8mguloAnicial % 8ngulo1inal , especi(icados en grados, corresponden al inicio % (in del segmento ?ue se desee gra(icar. Badio< % Badio= representan los radios en cada una de las dos direcciones del plano. ')./ Rect3ngulos Rectangle($*%&*%$+%&+)) 2ra:a un rect9ngulo con v.rtices opuestos +<1,=1- % +<2,=2-. ()./ 0arras 0ar($inicial%&inicial%&final%$final)) 2ra:a un rect9ngulo con el estilo % color de llenado especi(icados, iniciando en +<inicial,=inicial- % (inali:ando en +=(inal,<(inal- , considerados como v.rtices opuestos. 0ar($inicial%&inicial%&final%$final%Espesor%'!digo0ooleano)) 2ra:a una barra en dimensiones, ?ue inicia en las coordenadas 0<inicial,=inicial- (inali:a en <(inal,=(inal- con un espesor, en pi4eles, de(inido. !l cdigo booleano ser9 2BU! o 18>)!. 2BU! marca per(ectamente los lados de la barra en tres dimensiones. E)./ Rebanada de pie. "ie4lice($%&%Angulo1nicial%Angulo2inal%Radio)) 2ra:a una rebanada de pastel, rellena con el color activo. +<,=- coordenadas del centro de la rebanada7 8nguloAnicial, 8ngulo1inal % Badio, en grados, delimitan el tamaCo de la rebanada. (espla-amiento del cursor dentro del plano gr3fico 5oveRel((elta$%(elta&)) @espla:amiento relativo del cursor, de su posicin actual, tantos pi4eles en < como en =, segn los incrementos +o decrementos- @elta< % @elta=: 5ove,o($%&)) @espla:amiento absoluto del cursor a las coordenadas +<,=-. Escribiendo ,e#tos dentro del plano gr3fico 5ara la escritura de te4tos dentro del plano gr9(ico, dispone de # instrucciones complementarias ?ue son las siguientes: A)./ @e(inicin de tipo de letra, direccin de escritura +vertical u *ori:ontal- % tamaCo del caracter. 4et,e#t4t6le(,ipo(eLetra%(irecci!n%,ama7o(e'aracter)) ,ipo(eLetra (irecci!n 0 @e(ault1ont 0 Dori:ontal +de i:?uierda a derec*a- 1 2riple41ont 0 Eertical +de abaFo *acia arriba- 2 )mall1ont )an)eri(1ont # ;ot*ic1ont ,ama7o(e'aracter: Bepresenta la ra:n de cambio en el tamaCo del caracter a escribir dentro del plano gr9(ico. )i suministra el valor de 1, entonces la escritura ser9 con el tamaCo preasignado. )i teclea 2,,..., aplicar9 ese (actor para aumentar el tamaCo de cada caracter. 0)./ Cuando el caracter es desplegado en su espacio reservado, segn el tamaCo ?ue *a%a seleccionado, es posible centrarlo a alinearlo a un e4tremo de dic*o espacio. 5ara ello dispone de la instruccin: 4et,e#t8ustif6(9ori-ontal%Vertical)) >os valores de los par9metros son:
9ori-ontal Vertical 0
8linea caracter a la derec*a del punto 0
Caracter despla:ado *acia arriba del punto 1 Centra te4to 1 Centrado 2
8linea caracter a la i:?uierda del punto 2
Dacia abaFo del punto
!sta alineacin o centrado es con respecto a las coordenadas en ?ue se despliega el te4to. ')./ !scritura de 2e4to :ut,e#t(;,e#to o letrero;)) @espliega te4to a partir de las coordenadas en ?ue est. posicionado el cursor. ()./ !scritura de te4to :ut,e#t$&($%&%;,e#to o letrero;)) @espliega te4to a partir de las coordenadas +<,=- especi(icadas. (efiniendo estilo para el graficado de lneas 8ntes de tra:ar una l,nea puede de(inir un estilo de tra:o con la siguiente instruccin: 4etLine4t6le(Estilo%"atr!n(eLlenado%rosor)) Estilo 0 >,nea )lida 1 >,nea con guiones sucesivos 2 >,nea con guiones sucesivos m9s grandes ?ue los anteriores "atr!n(eLlenado: Utilice 0 rosor 1 8nc*o 3ormal 2riple 8nc*o !4isten muc*as m9s instrucciones para gra(icado % es recomendable revisar en modo a%uda el contenido de la unidad ;B85D. "ttpKNNGGG.#ortunecit$.comNcampusNearl"amN@C0NcomputacionN>)I>1."tml 5.+ :raficacin de /unciones -atem,ticas en el plano cartesiano. 1n estas breves notas, desarrolladas por %uanDAntonio >n#ante $ %os( Bara :e$, pro#esores del Iepartamento de Batemtica Aplicada de la !niversidad omplutense de Badrid, se pretende dar un primer paso en el aprendizaje del uso de BAT/A.. 1n lo que si+ue, se supone que el usuario teclea lo que aparece en color rojo *de "ec"o, lo ptimo sera que el aprendiz de BAT/A. reprodujera (stos $ parecidos ejemplos por s mismo, $ precedido del smbolo TT, que "ace el papel del prompt de la mquina. 1n color ne+ro aparecer la respuesta de BAT/A. a la instruccin tecleada. /os comentarios aparecern en color verde. Antes de comenzar, "a+amos al+unas consideraciones +eneralesK BAT/A. distin+ue entre ma$sculas $ minsculas. /a comilla c es la que, en un teclado estndar, se encuentra en la tecla de la interro+acin. /os comentarios deben ir precedidos por k o, lo que es lo mismo, BAT/A. i+nora todo lo que va$a precedido por el smbolo k. /a a$uda de BAT/A. es bastante tilA para acceder a la misma basta teclear help. 1s recomendable usarlo para obtener una in#ormacin ms precisa sobre la sintaEis $ diversas posiblidades de uso de los comandos. A +randes ras+os, los temas aqu introducidos sonK Feneralidades. =ectores $ matrices. 4peraciones con vectores $ matrices. =ariables l+icas. 5olinomios. Ierivadas $ primitivas. Fr#icas de #unciones. 5ro+ramacin con BAT/A.. /os clculos que no se asi+nan a una variable en concreto se asi+nan a la variable de respuesta por de#ecto que es ans *del in+l(s, ans;er,K >>2+3 ans = 5 8in embar+o, si el clculo se asi+na a una variable, el resultado queda +uardado en ellaK >>x=2+3 x = 5 5ara conocer el valor de una variable, basta teclear su nombreK >>x x = 5 8i se aade un punto $ coma *;, al #inal de la instruccin, la mquina no muestra la respuesta... >>y=5*4; ... pero no por ello deja de realizarse el clculo. >>y y = 20 /as operaciones se evalan por orden de prioridadK primero las potencias, despu(s las multiplicaciones $ divisiones $, #inalmente, las sumas $ restas. /as operaciones de i+ual prioridad se evalan de izquierda a derec"aK >>2/4*3 ans = 1.5000 >>2/(4*3) ans = 0.1667 8e pueden utilizar las #unciones matemticas "abituales. As, por ejemplo, la #uncin coseno, >>cos(pi) % pi es una variable con valor predeterminado 3.14159... ans = -1 o la #uncin eEponencial >>exp(1) % Funcin exponencial evaluada en 1, es decir, el nmero e ans = 2.7183 Adems de la variable pi , BAT/A. tiene otras variables con valor predeterminadoA (ste se pierde si se les asi+na otro valor distinto. 5or ejemploK >>eps % psilon de la mquina. Obsrvese que MATLAB trabaja en doble precisin ans = 2.2204e-016 pero... >>eps=7 eps = 7 4tro ejemplo de #uncin matemticaK la raz cuadradaA como puede verse, trabajar con complejos no da nin+n tipo de problema. /a unidad ima+inaria se representa en BAT/A. como i o j, variables con dic"o valor como predeterminadoK >>sqrt(-4) ans = 0+ 2.0000i 1l usuario puede controlar el nmero de decimales con que aparece en pantalla el valor de las variables, sin olvidar que ello no est relacionado con la precisin con la que se "acen los clculos, sino con el aspecto con que (stos se muestranK >>1/3 ans = 0.3333 >>format long >>1/3 ans = 0.33333333333333 >>format % Vuelve al formato estndar que es el de 4 cifras decimales
5ara conocer las variables que se "an usado "asta el momentoK >>who Your variables are: ans eps x y o, si se quiere ms in#ormacin *obs(rvese que todas las variables son arra0s,K >>whos Name Size Bytes Class ans 1x1 8 double array eps 1x1 8 double array x 1x1 8 double array y 1x1 8 double array Grand total is 4 elements using 32 bytes 5ara des"acerse de una variable >>clear y >>who Your variables are: ans eps x =olver al ndice +eneral 5ara de#inir un vector #ila, basta introducir sus coordenadas entre corc"etesK >>v=[1 2 3] % Vector de 3 coordenadas v= 1 2 3 >>w=[4 5 6]; 1l operador ' es el de trasposicin *en realidad trasposicin $ conju+acin,K >>w' ans = 4 5 6 8i queremos declarar un vector de coordenadas equiespaciadas entre dos dadas, por ejemplo, que la primera val+a 0, la ltima 20 $ la distancia entre coordenadas sea 2, basta ponerK >>vect1=0:2:20 vect1 = 0 2 4 6 8 10 12 14 16 18 20 1quivalentemente, si lo que conocemos del vector es que la primera coordenada vale 0, la ltima 20 $ que tiene 11 en total, escribiremosK >>vect2=linspace(0,20,11) vect2 = 0 2 4 6 8 10 12 14 16 18 20 A las coordenadas de un vector se accede sin ms que escribir el nombre del vector $, entre par(ntesis, su ndiceK >>vect2(3) ans = 4 $ se pueden eEtraer subvectores, por ejemploK >>vect2(2:5) ans= 2 4 6 8 o, >>vect1(:) ans= 0 2 4 6 8 10 12 14 16 18 20 /as matrices se escriben como los vectores, pero separando las #ilas mediante un punto $ comaA as una matriz 7E7K >>M=[1 2 3;4 5 6;7 8 9] M = 1 2 3 4 5 6 7 8 9 >>M' % Su traspuesta (su adjunta) ans = 1 4 7 2 5 8 3 6 9 >>mat=[v;w;0 0 1] % Tambin es una matriz 3x3 mat = 1 2 3 4 5 6 0 0 1 A los elementos de una matriz se accede sin ms que escribir el nombre de la matriz $, entre par(ntesis, los respectivos ndicesK >>mat(1,3) % Elemento en la primera fila y tercera columna de la matriz mat ans = 3 Tambi(n se puede acceder a un #ila o columna completas, >>mat(:,2) % Segunda columna de mat ans = 2 5 0 >>mat(2,:) % Su segunda fila ans = 4 5 6 acceder a la matriz como si #uera una columna, >>M(2:7) % Los elementos segundo a sptimo de la matriz como columna ans = 4 7 2 5 8 3 o acceder a cualquiera de sus submatrices >>mat(2:3,[1 3]) % Submatriz formada por los elementos que estn en % "todas" las filas que hay entre la segunda y la tercera y % en las columnas primera y tercera ans = 4 6 0 1 1Eisten al+unas matrices de#inidas previamenteA por ejemplo, la matriz identidad, >>eye(5) % eye se pronuncia en ingls como I ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 la matriz nula, >>zeros(3) ans = 0 0 0 0 0 0 0 0 0 o la matriz cu$os elementos valen todos 1K >>ones(4) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8e puede conocer el tamao de una matriz $ la lon+itud de un vectorK >>size(mat) % Dimensiones de la matriz mat (nmero de filas y de columnas) ans = 3 3 >>size(v) ans = 1 3 >>length(v) % Longitud del vector (nmero de coordenadas) ans = 3 1Eisten comandos que permiten crear de #orma sencilla matrices. 5or ejemploK >>diag(v) % Matriz diagonal cuya diagonal es el vector v ans = 1 0 0 0 2 0 0 0 3 >>diag(diag(M)) % Matriz diagonal con la diagonal de M. La sentencia diag(M) da % el vector formado por la diagonal de la matriz M ans = 1 0 0 0 5 0 0 0 9 >>diag(ones(1,4),1)+diag(ones(1,4),-1) % Matriz tridiagonal 5x5 con 0 en la diagonal % principal y 1 en la sub y superdiagonal ans = 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 >>tril(M) % Matriz formada por la parte triangular inferior de M. ans = 1 0 0 4 5 0 7 8 9 >>triu(M) % Matriz formada por la parte triangular superior de M. ans = 1 2 3 0 5 6 0 0 9 /as #unciones matemticas elementales estn de#inidas de #orma que se pueden aplicar sobre arra0s. 1l resultado es el arra0 #ormado por la aplicacin de la #uncin a cada elemento del arra0. AsK >>log(v) ans = 0 0.6931 1.0986 >>p=(0:0.1:1)*pi % Vector definido como el producto de un vector por un escalar p = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 >>x=sin(p) x = Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000 /as operaciones "abituales entre arra0s *suma, resta $ producto escalar de vectoresA suma, resta, producto $ potencia de matrices, se representan con los operadores "abitualesK >>v,w % Recordamos los valores de v y w v = 1 2 3 w = 4 5 6 >>z=v*w' % Producto escalar (producto de matrices 1x3 por 3x1) z = 32 >>Z=w'*v % Producto de matrices 3x1 por 1x3 = Matriz 3x3 Z = 4 8 12 5 10 15 6 12 18 >>v*w % Los vectores v y w no se pueden multiplicar ??? Error using ==> * Inner matrix dimensions must agree. >>mat % Recordamos el valor de la matriz mat mat = 1 2 3 4 5 6 0 0 1 >>mat^2 % Matriz mat elevada al cuadrado ans = 9 12 18 24 33 48 0 0 1 Tambi(n pueden e#ectuarse multiplicaciones, divisiones $ potencias de arra0s, entendi(ndolas como elemento a elemento *como, de "ec"o, se realizan la suma $ la resta,. 1l operador utilizado para ellas es el "abitual precedido por un puntoA es decirK >>v.*w % Vector formado por los productos de las respectivas coordenadas: % ans(i)=v(i)*w(i) ans = 4 10 18 >>w./v % Vector formado por el cociente de cada coordenada de w entre la % coordenada correspondiente de v: ans(i)=w(i)/v(i) ans = 4.0000 2.5000 2.0000 >>mat.^2 % Matriz cuyos elementos son los de mat elevados % al cuadrado: ans(i,j)=mat(i,j)^2 ans = 1 4 9 16 25 36 0 0 1 Jinalmente, pueden calcularse determinantesK >>det(mat) ans = -3 $ resolverse sistemas de ecuaciones lineales con el verstil comando \K >>mat\v' ans = 2.6667 -5.3333 3.000 Tambi(n eEisten variables l+icas que toman los valores 0 *#also, o 1 *verdadero, . 5or ejemploK >>abs(v)>=2 % Vector lgico cuyas coordenadas valen 1 si la coordenada % correspondiente de v es >= 2 y 0 si no lo es ans = 0 1 1 >>vector=v(abs(v)>=2) % Vector formado por la coordenadas de v que % verifican la desigualdad vector = 2 3 >>v2=[3 2 1] v2 = 3 2 1 >>logica=v==v2 % Asignacin de un valor lgico (el doble signo igual es el % igual lgico) logica = 0 1 0 >>logic2=v~=v2 % Distinto (~ es el operador de negacin) logic2 = 1 0 1 8e puede trabajar con polinomiosK basta tener en cuenta que un polinomio no es ms que un vector. 1l orden de los coe#icientes es de ma$or a menor +rado, por ejemploK >>p=[1 0 2 0 3] % Polinomio x^4+2*x^2+3 p = 1 0 2 0 3 >>q=[2 1 0] % Polinomio 2*x^2+x q = 2 1 0 BAT/A. tiene #unciones espec#icas para polinomios comoK >>polyval(p,-1) % Evaluacin del polinomio x^4+2x^2+3 en x=-1 ans = 6 >>pro=conv(p,q) % Producto de los polinomios p y q pro = 2 1 4 2 6 3 0 >>deconv(pro,p) % Cociente entre pro y p; obviamente el resultado es q ans = 2 1 0 >>roots(pro) % Races del polinomio pro ans = 0 0.6050+1.1688i 0.6050-1.1688i -0.6050+1.1688i -0.6050-1.1688i -0.5000 >>poly([i -i 1/2 pi]) % Polinomio mnico que tiene por races a los % nmeros i, -i, 0.5 y pi ans = 1.0000 -3.6416 2.5708 -3.6416 1.5708 Ientro del mdulo *toolbo8, de matemtica simblica, se utiliza el pro+rama de clculo simblico BA5/1. on estas "erramientas, se puede trabajar con #unciones, >>f='sin(x)' % Funcin sin(x) definida mediante una cadena de caracteres f = sin(x) calcular derivadas, >>diff(f) ans = cos(x) >>diff(f,2) % Derivada segunda de f ans = -sin(x) o encontrar primitivas. >>int('log(x)') % Primitiva de la funcin logaritmo ans = x*log(x)-x >>diff('x*log(x)-x') % Comprobacin ans = log(x) BAT/A. tiene un +ran potencial de "erramientas +r#icas. 8e pueden dibujar los valores de un vector #rente a otro *de la misma lon+itud,K >>x=pi*(-1:0.1:1); >>y=x.*sin(x); >>plot(x,y) % Por defecto une los puntos (x(i),y(i)) mediante una poligonal
omo se ve, con pocos puntos la +r#ica tiene un aspecto demasiado lineal a trozos. 5ara -en+aar- al ojo, basta tomar ms puntos. >>x=pi*(-1:0.01:1); >>y=x.*sin(x); >>plot(x,y)
Tambi(n pueden dibujarse #unciones. AsK >>fplot('sin(x)',[0 2*pi]) % Dibuja la funcin seno en el intervalo [0,2*pi]
>>hold on % Mantiene en la ventana grfica los dibujos anteriores >>fplot('cos(x)',[0 2*pi]) % Dibuja sobre la grfica anterior la funcin cos(x)
>>hold off % Con esto olvida los dibujos anteriores % y dibuja en una ventana nueva >>fplot('x^2*sin(1/x)',[-0.05 0.05]) % Dibuja la funcin x^2*sin(1/x)
Tambi(n puede usarse el verstil comando ezplot *se lee como eas0 plot, que permite dibujar #unciones, >>ezplot('exp(x)') % Dibuja la funcin exponencial en un intervalo adecuado a la funcin
curvas en param(tricas, >>ezplot('sin(t)','cos(t)',[0 pi])
e implcitas >>ezplot('x^2 - y^2 - 1')
Tambi(n permite dibujar super#icies. /a #orma ms sencilla es mediante el comando ezsurf, >>ezsurf('sin(x*y)',[-2 2 -2 2])
aunque se pueden realizar +r#icas ms so#isticadasK >>t=0:0.001:0.009; >>v=900:1025; >>[T V]=meshgrid(t,v); >>aux1=16*pi^2*(T.^2).*((V-918).^2).*((V-1011).^2); >>aux2=aux1+(2*V-1929).^2; >>w=T./aux2; >>z=35000000*w; >>surfl(t,v,z); % Este comando dibuja la superficie creada mediante las >>shading interp; % ordenes anteriores. Los siguientes sirven para modificar >>colormap(pink); % el dibujo obtenido >>rotate3d; % Sirve para girar la figura mediante el ratn
5ara escribir un pro+rama con BAT/A. "abr que crear un #ic"ero que ten+a eEtensin .m $ conten+a las instrucciones. 1sto se puede "acer con cualquier editor de teEtos, pero tiene al+unas ventajas usar el editor propio de BAT/A. llamado medit. BAT/A. trabaja con memoria dinmica, por lo que no es necesario declarar las variables que se van a usar. 5or esta misma razn, "abr que tener especial cuidado $ cerciorarse de que entre las variables del espacio de trabajo no "a$ nin+una que se llame i+ual que las de nuestro pro+rama *proveniente, por ejemplo, de un pro+rama previamente ejecutado en la misma sesin,, porque esto podra provocar con#lictos. A menudo, es conveniente reservar memoria para las variables *por ejemplo, si se van a utilizar matrices mu$ +randes,A para ello, basta con asi+narles cualquier valor. Iel mismo modo, si se est usando muc"a memoria, puede ser conveniente liberar parte de ella borrando *clear, variables que no se va$an a usar ms. !n pro+rama escrito en BAT/A. admite la ma$ora de las estructuras de pro+ramacin al uso $ su sintaEis es bastante estndar. 1n los si+uientes ejemplos se muestra la sintaEis de al+unas de estas estructuras *i#, #or, G"ile,...,. 1jemplo 1K alcular la suma de los n primeros t(rminos de la sucesin 1, 2E, 7Eg2, ?Eg7, ... nSinput*c]untos t(rminos quieres sumar[ c,A ESinput*cIame el valor del numero E c,A sumaS1A #or iS2Kn sumaSsumaRiQEg*iD1,A end disp*c1l valor pedido esc, disp*suma, 1jemplo 2K Iecidir si un nmero natural es primo. nSinput*c)mero natural que deseas saber si es primo c,A iS2A primoS1A G"ile ilSsqrt*n, i# rem*n,i,SS0 k :esto de dividir n entre i primoS0A brea9 end iSiR1A end i# primo disp*c1l nmero dado es primo.c, else disp*c1l nmero dado no es primo.c, disp*cIe "ec"o, es divisible porKc, disp*i, end 1jemplo 7K 1scribir un nmero natural en una base dada *menor que diez,. nSinput*cIame el nmero que quieres cambiar de base c,A baseSinput*c]1n qu( base quieres eEpresarlo[ c,A iS1A G"ile nT0 c*i,Srem*n,base,A nS#iE*nNbase,A k 5arte entera de nNbase iSiR1A end disp*c/a eEpresin en la base dada esKc, iSiD1A disp*c*iKD1K1,, 5or ltimo, tambi(n pueden pro+ramarse #unciones. /a primera instruccin de un #ic"ero que conten+a una #uncin de nombre #un debe serK #unction dar+umentos de salidaeS#un*ar+umentos de entrada, 1s conveniente que el #ic"ero que conten+a la #uncin se llame como ellaA as, la #uncin anterior debera +uardarse en el #ic"ero #un.mA por ejemplo, si se desea pro+ramar una #uncin que calcule, mediante el al+oritmo de 1uclides, el mEimo comn divisor de dos nmeros naturales, basta escribir un #ic"ero euclides.m cu$o contenido seaK #unction mSeuclides*a,b, k lculo del mEimo comn divisor de dos nmeros naturales k mediante el al+oritmo de 1uclides i# alb cSbA bSaA aScA end G"ile bT0 cSrem*a,b,A aSbA bScA end mSaA 8i, una vez escrito el #ic"ero anterior, en el espacio de trabajo o en un pro+rama se escribe la instruccin mcdSeuclides*77,121, en la variable mcd se almacenar el valor 11. /as variables de una #uncin son siempre locales. 5or tanto, aunque en el seno de la #uncin se modi#iquen los ar+umentos de entrada, el valor de las variables correspondientes queda inalterado. 5or ejemplo, en la #uncin euclides.m se modi#ica el valor de los ar+umentos de entrada, pero, sin embar+oK TTES1CA TTmcdSeuclides*E,7,A TTE E S 1C 8i se pretende que las modi#icaciones de un ar+umento de entrada a#ecten a la variable correspondiente, deber situarse dic"o ar+umento, adems, en la lista de ar+umentos de salida.
0ttp@99HHH.mat.ucm.es9`infante9matlab9notas.0tm 5.3 Introduccin a la potencia rafica CAPKTULO 1 U" es$!&io &e las 3-4%icas *o- com*!$a&o-a /as computadoras se "an convertido en una "erramienta poderosa para producir im+enes en #orma rpida $ econmica. )o eEiste nin+una rea en donde no sea posible aplicar +r#icas por compuadora con al+n bene#icio, por ello se "a +eneralizado la utilizacin de +r#icas por computadora. 0o$ em da las +r#icas por computadora se utilizan de manera rutinaria en diversas reas, como en la ciencia, in+eniera, empresas, industria, +obierno, arte, entretenimiento, publicidad, educacin, capacitacin $ presentaciones +r#icas. 0a+amos un breve recorrido a trav(s de una +alera de aplicaciones de las +r#icas. 1.1 DISEO ASISTIDO POR COMPUTADORA /os m(todos de diseo asistido por computadora, que se conocen por lo +eneral como AI *computer assisted desi+n,, a"ora se utilizan de #orma rutinaria en el diseo de construcciones, automviles, aeronaves, embarcaciones, naves espaciales, computadoras, telas $ muc"os productos. 1n el caso de al+unas aplicaciones de diseo, los objetos se desplie+an primero en #orma de armazn mostrando la #orma +eneral $ sus caractersticas internas. /os desplie+ues del armazn permiten ver a los diseadores con rapidez los e#ectos de ajustes interactivos para disear #ormas. :e+ularmente, los paquetes de so#tGare de aplicaciones de AI o#recen al diseaDdor un entorno con ventanas mltiplesA estas diversas ventanas desple+ables muestran secciones ampli#icadas de vistas de di#erentes objetos. /os circuitos $ las redes para comuncaciones, abastacemientos de a+ua $ otros servicios pblicos se constru$en a trav(s de la colocacin repetida de al+unas #ormas +r#icas. /as #ormas usadas en un diseo representan los diversos componentes del circuito o de la red. on el paquete de diseo se o#recen #ormas estndar para circuitos el(ctricos, electrnicos $ l+icos. 5ara otras aplicaciones, un diseador puede crear smbolos personaliDzados empleados necesariamente para construir la red o el circuito. As, se disea el sistema colocando sucesivamente los componentes en el esquema, con el paquete de +r#icas o#reciendo de manera automtica las coneEiones entre los componentes. 1sto permite al diseador eEperimentar rpidamente con esquemas de circuitos alternativos para reducir al mnimo el nmero de componentes o el espacio para el sistema. on #recuencia se utilizan las animaciones en las aplicaciones del AI. /as animaDciones en tiempo real que emplean desplie+ues de armazones en un monitor de video son tiles para probar el comportamiento de un ve"culo o un sistema. uando no desple+amos objetos con super#icies presentadas, pueden realizarse con rapidez los clculos corresponDdientes a cada se+mento de la animacin para as crear un movimiento suave de tiempo real en la pantalla. >+ualmente, los desplie+ues de armazones permiten al diseador ver el interior del ve"culo $ observar el comportamiento de los componentes internos durante el movimiento. /as animaciones en entornos de realidad virtual se utlizan para determinar la #orma como in#lu$en ciertos movimientos en los operadores de ve"culos. 5or ejemplo, el operador de un tractor con a$uda de un dispositivo montado sobre la cabeza que presenta una vista estereoscpica del cuc"arn del car+ador #rontal o del retroeEcavador, manipula los controles como si se encontrara en el asiento del tractor. 1sto permite al diseador eEplorar diversas posiciones del cuc"arn o del retroeEcavador que pudieran obstruir la visin del operador. uando los diseos de objetos estn completos o casi completos, se aplican modelos de iluminacin realista $ presentaciones de super#icies para producir desplie+ues mostrando la apariencia del producto #inal. Tambi(n se crean desplie+ues realistas para la publicidad de automviles $ otros ve"culos mediante e#ectos especiales de iluminacin $ escenas de #ondo. 1l proceso de manu#actura tambi(n se asocia con la descripcin por computadora de objetos diseados para automatizar la construccin del producto. 5or ejemplo, se puede convertir el esquema de un tablero de circuitos en una descripcin de los procesos individuaDles necesarios para elaborar el esquema. Al+unas partes mecnicas se #rabican por medio de la descripcin de cmo se deben #ormar las super#icies con "erramientas. /ue+o, se ajustan las "erramientas controladas de manera num(rica para #abricar la parte de acuerdo con estos planos de construccin. /os arquitectos utilizan m(todos +r#icos interactivos para pro$ectar plantas arquitecDtnicas donde se muestra la disposicin de "abitaciones, ventanas, escaleras, anaqueles, barras de cocina $ otras caractersticas de la construccin. A partir del displie+ue del plano de una construccin en un monitor de video, un diseador el(ctrico puede eEperimentar con instalaciones para cableado, coneEiones el(ctricas $ sistemas de alarma de incendios. Iel mismo modo, aplicando paquetes para el esquema de instalaciones se determina la utilizacin del espacio en una o#icina o en una planta de #abricacin. Iesplie+ues realistas de diseos arquitectnicos permiten a los arquitectos $ a sus clientes estudiar la apariencia de una construccin particular o de un +rupo de ellas, como un campus universitario o un complejo industrial. on los sistemas de realidad virtual, los diseadores pueden simular un -recorrido- por las "abitaciones o alrededor de construccioDnes para apreciar mejor el e#ector +eneral de un diseo particular. Adems de presentar desplie+ues de #ac"adas realistas, los paquetes de AI para arquitectura o#recen medios para eEperimentar con planos interiores tridimensionales $ la uliminacin. Buc"as otras clases de sistemas $ productos se disean usando $a sea paquetes de AI +enerales o so#tGare de AI desarrollado en #orma especial. 1./ #R0ICAS DE PRESENTACIN /as +r#icas de presentacin, se utilizan a #in de producir ilustraciones para in#ormes o con el propsito de crear diapositivas de 7C mm o transparencias para usarse con pro$ectores. :e+ularmente, las +r#icas de presentacin se emplean para resumir datos #inancieros, estadsticos, matemticos, cient#icos $ econmicos para in#ormes de investi+aDcin, in#ormes administrativos, boletnes de in#ormacin al consumidor $ otros tipos de reportes. omo ejemplos comunes de las +r#icas de presentacin podemos citar las +r#icas de barras, +r#icas lineales, +r#icas de super#icie, +r#icas de pastel $ otros desplie+ues que muestran relaciones entre mltiples parmetros. 8e pueden "acer desplie+ues tridimensionaDles de esquemas $ +r#icas similares para proporcionar in#ormacin adicional. 1n la administracin de pro$ectos se emplean +r#icas de tiempo $ dia+ramas de redes de actividades para pro+ramar $ supervisar el avance de pro$ectos. 1.1 ARTE POR COMPUTADORA /os m(todos de +r#icas por computadora se utilizan en #orma +eneralizada tanto en aplicaciones de bellas artes como en aplicaciones de arte comercial. /os artistas utilizan una variedad de m(todos computacionales, inclu$endo "ardGare para propsitos especiales, pro+ramas artsticos de broc"a de pintar del artista *como /umena,, otros paquetes de pintura *como 5iEel5aint $ 8uper5aint,, so#tGare desarrollado de manera especial, paquetes de matemtica simblica *como Bat"ematica,, paquetes de AI, so#tGare de edicin electrnica de publicaciones $ paquetes de animaciones que proporcionan los medios para disear #ormas de objetos $ especi#icar movimientos de objetos. /a idea bsica del pro+rama paintbrus" *broc"a de pintar, permite a los artistas -pintar- im+enes en la pantalla de un monitor de video. 1n realidad, la ima+en se pinta por lo +eneral de manera electrnica en una tableta de +r#icas *di+italizador, utilizando un estilete, el cual puede simular di#erentes trazos, anc"uras de la broc"a $ colores. /os creadores de bellas artes emplean diversas tecnolo+as de computacin para producir im+enes. on el propsito de crear pinturas el artista utiliza una combinacin de paquetes de modelado tridimensional, dia+ramacin de la teEtura, pro+ramas de dibujo $ so#tGare de AI. 1n un ejemplo de -arte metamtico- un artista utiliz una combinacin de #unciones matemticas, procedimientos #ractales, so#tGare de Bat"ematica, impresoras de c"orro de tinta $ otros sistemas con el #in de crear una variedad de #ormas tridimensionaDles $ bidimensionales, al i+ual que pares de im+enes estereoscpicas. 4tro ejemplo arte electrnico creado a partir de relaciones matemticas es la obra de un compositor que est diseada en relacin con las variaciones de la #recuencia $ otros parmetros en una composiDcin musical para producir un video el cual inte+ra patrones visuales $ auditivos. Tambi(n se aplican estos m(todos en el arte comercial para crear lo+otipos $ otros diseos, distribuciones de p+ina que combinan teEto $ +r#icas, anuncios publicitarios por televisin $ otras reas. 5ara muc"as aplicaciones de arte comercial *$ pelculas, al i+ual que otras aplicacioDnes,, se emplean t(cnicas #otorrealistas para presentar im+enes de un producto. /as animaciones tambi(n se utilizan con #recuencia en publicidad $ los comerciales de televisin se producen cuadro por cuadro, donde cada cuadro del movimiento se presenta $ +raba como un arc"ivo de ima+en. 8e simula el movimiento al mover li+eramente las posiciones de los objetos con respecto a las del cuadro anterior. !na vez presentados todos los cuadros de la secuencia de animacin, se trans#ieren a pelcula o se almacenan en un b#er de video para "acer una reproduccin. /as animaciones en pelcula requieren 2? cuadros por cada se+undo de la secuencia de animacin. 8i se reproduce en un monitor de video, se requieren de 70 cuadros por se+undo. !n m(todo comn de +r#icas que se utilizan en muc"os comerciales es la trans#ormacin *morp"in+,, donde se trans#orma un objeto en otro *metamor#osis,. 1n televisin se "a empleado para trans#ormar una lata de aceite en un motor de automvil, un automvil en un ti+re, un c"arco en una llanta $ el rostro de una persona en otro. 1.2 ENTRETENIMIENTO 1s mu$ comn utilizar m(todos de +r#icas por computadora para producir pelculas, videos musicales $ pro+ramas de televisin. 1n ocasiones, se desplie+an slo im+enes +r#icas $ otras veces, se combinan los objetos con los actores $ escenas en vivo. 5or ejemplo, en una escena +r#ica creada para la pelcula 8tart Trec9 D T"e 3rat" o# ;"an, se dibujan en #orma de armazn el planeta $ la nave espacial $ se sonbrean con m(todos de presentacin para producir super#icies slidas. Al i+ual que pueden aparecer personas en #orma de armazn combinadas con actores $ una escena en vivo. /os videos musicales aprovec"an las +r#icas de muc"as maneras, se pueden combinar objetos +r#icos con accin en vivo, o se pueden utilizar t(cnicas de procesamiento de im+enes para producir una trans#ormacin de una persona o un objeto en otro *morp"in+,. 1.6 EDUCACIN M CAPACITACIN A menudo, se utilizan como instrumentos de a$uda educativa modelos de sistemas #sicos, #inancieros $ econmicos, los cuales se +eneran por computadora. Bodelos de sistemas #sicos, sistemas #isiol+icos, tendencias de poblacin o equipo, pueden a$udar a los estudiantes a comprender la operacin del sistema. 1n el caso de al+unas aplicaciones de capacitacin, se disean sistemas especiales, como los simuladores para sesiones de prctica o capacitacin de capitanes de barco, pilotos de avin, operadores de equipo pesado $ el personal de control de tr#ico a(reo. Al+unos simuladores no tiene pantallas de videoA por ejemplo, un simulador de vuelo que slo tiene un panel de control como instrumento de vuelo. )o obstante, la ma$or parte de los simuladoDres cuenta con pantallas +r#icas para la operacin visual. 1.9 'ISUALI_ACIN ient#icos, in+enieros, personal m(dico, analistas comerciales $ otros con #recuencia necesitan analizar +randes cantidades de in#ormacin o estudiar el comportamiento de ciertos procesos. /as simulaciones num(ricas e#ectuadas en supercomputadoras a menudo producen arc"ivos de datos que contienen miles e incluso millones de valores de datos. Ie modo similar, cmaras va sat(lite $ otras #uentes acumulan +randes arc"ivos de datos ms rpido de lo que se pueden interpretar. 1l rastreo de estos +randes conjuntos de nmeros para determinar tendencias $ relaciones es un proceso tedioso e ine#icaz. 5ero si se convierten los datos a una #orma visual, es #recuente que se perciban de inmediato las tendencias $ los patrones. 5or lo re+ular, la produccin de representaciones +r#icas para conjuntos de datos $ procesos cient#icos de in+eniera $ de medicina se conoce como visualizacin cient#ica. 1l t(rmino visualizacin empresarial se emplea en relacin con conjuntos de datos que se asocian con el comercio, la industria $ otras reas no cient#icas. 1Eisten muc"as clases de conjuntos de datos $ los esquemas de visualizacin e#ectivos dependen de las caractersticas de los datos. !na compilacin de datos contiene valores escalares, vectores, tensores de orden superior o cualquier combinacin de estos tipos de datos. L los conjuntos de datos pueden ser bidimensionales o tridimensionales. /a codi#iDcacin de colores es slo una manera de visualizar un conjunto de datos. /as t(cnicas adicionales inclu$en trazos, +r#icas $ dia+ramas de contorno, presentaciones de super#icie $ visualizacin de interiores de volumen. Adems, se combinan t(cnicas de procesamiento de im+enes con +r#icas por computadora para crear muc"as de las visualizaciones de datos. /as comunidades de matemticos, cient#icos #sicos $ otros utilizan t(cnicas visuales para analizar #unciones matemticas $ procesos o slo con el propsito de crear representaD ciones +r#icas interesantes. 1.O PROCESAMIENTO DE IM#ENES A pesar de que los m(todos empleados en las +r#icas por computadora $ en el proceD samiento de im+enes se traslapan, las dos reas realizan, en #orma #undamental, operaciones distintas. 1n las +r#icas por computadora, se utiliza una computadora para crear una ima+en. 5or otro lado, en el procesamiento de im+enes se aplican t(cnicas para modi#icar o interpretar im+enes eEistentes, como #oto+ra#as $ rastreos de televisin. /as dos aplicaciones principales del procesamiento de im+enes son *1, el mejoramiento de la calidad de la ima+en $ *2, la percepcin de la mquina de in#ormacin visual, como se utiliza en la robtica. 5ara aplicar los m(todos de procesamiento de im+enes, primero di+italizamos una #oto+ra#a u otra ima+en en un arc"ivo de ima+en. 1ntonces, se pueden aplicar m(todos di+itales para reordenar partes de im+enes, para mejorar separaciones de colores o para aumentar la calidad del sombreado. 1stas t(cnicas se utilizan en +ran medida en aplicaciones de arte comercial que implican el retoque $ el reorden de secciones de #oto+raD#as $ otras obras de arte. 8e emplean m(todos similares para analizar #oto+ra#as de la Tierra por sat(lite $ #oto+ra#as de +alaEias. /as aplicaciones m(dicas tambi(n "acen uso importante de estas t(cnicas de procesaDmiento de im+enes para mejorar #oto+ra#as, en tomo+ra#as $ simulacros de operaciones. /a tomo+ra#a es una t(cnica de #oto+ra#a por ra$os < la cual permite el desplie+ue de vistas transversales de sistemas #isiol+icos. Tanto la tomo+ra#a computarizada *TA computed tomo+rap"$, por ra$os <, como la tomo+ra#a de emisin de posicin *51TA position emission tomo+rap"$, utilizan m(todos de pro$eccin para reconstruir secciones transversaDles a partir de datos di+itales. 1stas t(cnicas son empleadas para supervisar #unciones internas $ mostrar secciones transversales durante una ciru+a. 4tras t(cnicas de pro$eccin de im+enes m(dicas inclu$en rastreadores ultrasnicos $ nucleares. on el ultrasonido, se utilizan ondas sonoras de alta #recuencia, en vez de ra$os <, para +enerar datos di+itales. /os rastreadores para medicina nuclear recopilan datos di+itales de la radiacin que emiten radionclidos in+eridos $ trazan im+enes con codi#icacin de colores. 5or lo +eneral, el procesamiento de im+enes $ las +r#icas por computadora se combinan en muc"as aplicaciones. 5or ejemplo, en medicina se utilizan estas t(cnicas para modelar $ estudiar #unciones #sicas, para disear miembros arti#iciales, as como planear $ practicar ciru+as. 1sta ltima aplicacin se conoce, por lo +eneral, ciru+a asistida por computadora. 8e obtienen secciones transversales bidimensionales del cuerpo a trav(s de la utilizacin de t(cnicas de pro$eccin de im+enes. /ue+o se ven $ manipulan los cortes utilizando m(todos +r#icos para simular procedimientos quirr+icos reales $ eEperimentar con diversas incisiones quirr+icas. 1.S INTER0ACES #R0ICAS POR USUARIO 1s comn que los paquetes de so#tGare o#rezcan una inter#az +r#ica. !n componente importante de una inter#az +r#ica es un administrador de ventanas que "ace posible que un usuario desplie+ue reas con ventanas mltiples. ada ventana puede contener un proceso distinto que a su vez puede contener desplie+ues +r#icos $ no +r#icos. 5ara activar una ventana en particular, slo "acemos clic en esa ventana utilizando un dispoD sitivo de pulsar interactivo. /as inter#aces tambi(n desplie+an menes e iconos para permitir una seleccin rpida de las opciones de procesamiento o de valores de parmetros. !n icono es un smbolo +r#ico diseado para semejarse a la opcin de procesamiento que representa. /a ventaja de los iconos es que ocupan menos espacio en la pantalla que las descripciones teEtuales corresDpondientes $ que se pueden entender con ma$or rapidez si estn bien diseados. /os menes contienen listas de descripciones teEtuales e iconos. "ttpKNNGGG.cs.buap.mENn+lcNcapi1."tml Unidad ;. Puerto# ;.1 'onceptos enerales de mane!os de puertos El ma"e.o &e *!e-$os /as operaciones de lectura $ escritura a puertos *#amilia de instrucciones >) $ 4!T del procesador @0@&N@0@@,, se puede realizar utilizando los arc"ivos especiales C.? de Bac" o los objetos +r#icos que o#rece )e<T8T15. 0ttp@99computacion.cs.cinvestav.mB9`ameneses9pub9tesis9ltesis9node1.0tm l Los puertos de comunicacin de la "C son de particular inters para el estudioso de la electrnica a que le permiten utilizar una computadora personal para controlar todo tipo circuitos electrnicos utilizados, principalmente, en acti(idades de automatizacin de procesos, adquicisin de datos, tareas repetiti(as otras acti(idades que demandan precisin! )ste artculo es el primero de una serie que analizar di(ersos usos para el puerto paralelo de la "C! 'onceptos b,sicos E=isten dos mtodos bsicos para transmisin de datos en las computadoras modernas! En un esquema de transmisin de datos en #erie un dispositi(o en(a datos a otro a razn de un bit a la (ez a tra(s de un cable! "or otro lado, en un esquema de transmisin de datos en paralelo un dispositi(o en(a datos a otro a una tasa de n n1mero de bits a tra(s de n n1mero de cables a un tiempo! -era fcil pensar que un sistema en paralelo es n (eces ms rpido que un sistema en serie, sin embargo sto no se cumple, bsicamente el impedimiento principal es el tipo de cable que se utiliza para interconectar los equipos! -i bin un sistema de comunicacin en paralelo puede utilizar cualquier n1mero de cables para transmitir datos, la maora de los sistemas paralelos utilizan ocho lneas de datos para transmitir un bte a la (ez, como en todo, e=isten e=cepciones, por ejemplo el estndar -C-/ permite transferencia de datos en esquemas que (an desde los ocho bits hasta los treinta dos bits en paralelo! En ste artculo nos concentraremos en transferencias de ocho bits a que sta es la configuracin del puerto paralelo de una "C! @n tpico sistema de comunicacin en paralelo puede ser de una direccin ;unidireccional< o de dos direcciones ;bidireccional<! El ms simple mecanismo utilizado en un puerto paralelo de una "C es de tipo unidireccional es el que analizaremos en primer lugar! Aistinguimos dos elementos4 la parte transmisora la parte receptora! La parte transmisora coloca la informacin en las lneas de datos e informa a la parte receptora que la informacin ;los datos< estn disponiblesE entonces la parte receptora lee la informacin en las lneas de datos e informa a la parte transmisora que ha tomado la informacin ;los datos<! Fbser(e que mbas partes sincronizan su respecti(o acceso a las lneas de datos, la parte receptora no leer las lneas de datos hasta que la parte transmisora se lo indique en tanto que la parte transmisora no colocar nue(a informacin en las lneas de datos hasta que la parte receptora remue(a la informacin le indique a la parte transmisora que a ha tomado los datos, a sta coordinacin de operaciones se le llama acuerdo entendimiento! Cin, en stos mbitos tecnolgicos es recomendable utilizar ciertas palabras en ingls que nos permiten irnicamente un mejor entendimiento de los conceptos tratados! Hepito4 a la coordinacin de operaciones entre la parte transmisora la parte receptora se le llama )and#)a<ing, que en espa.ol es el acto con el cual dos partes manifiestan estar de acuerdo, es decir, se dan un apretn de manos! El +a"&s+a`i"3 "ara implementar el handsha'ing se requieren dos lneas adicionales! La lnea de e#trobo#copio ;en ingls strobe< es la que utiliza la parte transmisora para indicarle a la parte receptora la disponibilidad de informacin! La lnea de admi#in ;ac'no(ledge< es la que utiliza la parte receptora para indicarle a la parte transmisora que ha tomado la informacin ;los datos< que est lista para recibir ms datos! El puerto paralelo pro(ee de una tercera lnea de handshaMing llamada en ingls bu#y ;ocupado<, sta la puede utilizar la parte receptora para indicarle a la parte transmisora que est ocupada por lo tanto la parte transmisora no debe intentar colocar nue(a informacin en las lneas de datos! @na tpica sesin de transmisin de datos se parece a lo siguiente4 Parte tran#mi#ora( La parte transmisora checa la lnea bus) para (er si la parte receptora est ocupada! -i la lnea bus) est acti(a, la parte transmisora espera en un bucle hasta que la lnea bus) est inacti(a! La parte transmisora coloca la informacin en las lneas de datos! La parte transmisora acti(a la lnea de strobe! La parte transmisora espera en un bucle hasta que la lnea ac'no(ledge est acti(a! La parte transmisora inacti(a la lnea de strobe! La parte transmisora espera en un bucle hasta que la lnea ac'no(ledge est inacti(a! La parte transmisora repite los pasos anteriores por cada bte a ser transmitido! Parte receptora( La parte receptora inacti(a la lnea bus) ;asumiendo que est lista para recibir informacin<! La parte receptora espera en un bucle hasta que la lnea strobe est acti(a! La parte receptora lee la informacin de las lneas de datos ; si es necesario, procesa los datos<! La parte receptora acti(a la lnea ac'no(ledge! La parte receptora espera en un bucle hasta que est inacti(a la lnea de strobe! La parte receptora inacti(a la lnea ac'no(ledge! La parte receptora repite los pasos anteriores por cada bte que debe recibir! -e debe ser mu cuidadoso al seguir stos pasos, tanto la parte transmisora como la receptora coordinan sus acciones de tal manera que la parte transmisora no intentar colocar (arios btes en las lneas de datos, en tanto que la parte receptora no debe leer ms datos que los que le en(e la parte transmisora, un bte a la (ez! 0ttp@99HHH.modelo.edu.mB9univ9virtec09circuito9paralelo.0tm 812 "2'<I84S ?U1 S1 1#'U1#T2"# D1#T24 D1 L" '"2*1T" D1 L" -"T12I" ;.2 'onfiuracin de los puertos en las computadoras 1l 0ardHare del puerto paralelo El puerto paralelo de una tpica "C utiliza un conector hembra de tipo A de #8 patitas ;AC7#8 -<, ste es el caso ms com1n, sin embargo es con(eniente mencionar los tres tipos de conectores definidos por el estndar I!!! 1.;6, el primero, llamado 1.;6 tipo A es un conector hembra de #8 patitas de tipo A, es decir, el que mencionamos al principio! El orden de las patitas del conector es ste4 El segundo conector se llama 1.;6 tipo , que es un conector de &% patitas de tipo centronics lo encontramos en la maora de las impresorasE el tercero se denomina 1.;6 tipo C, se trata de un conector similar al 2#$' tipo C pero ms peque.o, adems se dice que tiene mejores propiedades elctricas mecnicas, ste conector es el recomendado para nue(os dise.os! La siguiente tabla describe la funcin de cada patita del conector 2#$' tipo 04 *atita 19S *olaridad activa Descripcin 1 Salida 0 Strobe 2 ~ 9 Salida - Lneas de datos (bit 0/patita 2, bit 7/patita 9) 10 Entrada 0 Lnea acknowledge (activa cuando el sistema remoto toma datos) 11 Entrada 0 Lnea busy (si est activa, el sistema remoto no acepta datos) 12 Entrada 1 Lnea Falta de papel (si est activa, falta papel en la impresora) 13 Entrada 1 Lnea Select (si est activa, la impresora se ha seleccionado) 14 Salida 0 Lnea Autofeed (si est activa, la impresora inserta una nueva lnea por cada retorno de carro) 15 Entrada 0 Lnea Error (si est activa, hay un error en la impresora) 16 Salida 0 Lnea nit (Si se mantiene activa por al menos 50 micro-segundos, sta seal autoinicializa la impresora) 17 Salida 0 Lnea Select input (Cuando est inactiva, obliga a la impresora a salir de lnea) 18 ~ 25 - - Tierra elctrica Tabla 1( Con*iguracin del puerto paralelo e#t=ndar Fbser(e que el puerto paralelo tiene 2# lneas de salida ;$ lneas de datos, strobe, autofeed, init, select input< 8 de entrada ;acMnoKledge, bus, falta de papel, select error<! El estndar /EEE 2#$' define cinco modos de operacin4 2! Modo compatible #! Modo nibble &! Modo bte '! Modo E"", puerto paralelo ampliado 8! Modo EC", puerto de capacidad e=tendida El objeti(o del estndar es dise.ar nue(os dispositi(os que sean totalmente compatibles con el puerto paralelo estndar ;-""< definido originalmente por la /CM ;en ste artculo tratar solamente el modo compatible<! Da tres direcciones de EI- asociadas con un puerto paralelo de la "C, stas direcciones pertenecen al regi#tro de dato#, el regi#tro de e#tado el regi#tro de control! El registro de datos es un puerto de lectura7escritura de ocho bits! Leer el registro de datos ;en la modalidad unidireccional< retorna el 1ltimo (alor escrito en el registro de datos! Los registros de control estado pro(een la interface a las otras lneas de EI-! La distribucin de las diferentes se.ales para cada uno de los tres registros de un puerto paralelo esta dada en las siguientes tablas4 Direccin #ombre Lectura91scritura Bit U *ropiedades Base + 0 Puerto de datos Escritura Bit 7 Dato 7 Bit 6 Dato 6 Bit 5 Dato 5 Bit 4 Dato 4 Bit 3 Dato 3 Bit 2 Dato 2 Bit 1 Dato 1 Bit 0 Dato 0 Tabla .( Regi#tro de dato# Direccin #ombre Lectura91scritura Bit U *ropiedades Base + 1 Puerto de estado Slo Lectura Bit 7 Busy Bit 6 Acknowledge Bit 5 Falta de papel Bit 4 Select n Bit 3 Error Bit 2 RQ (Not) Bit 1 Reservado Bit 0 Reservado Tabla 3( Regi#tro de e#tado Direccin #ombre Lectura91scritura Bit U *ropiedades Base + 2 Puerto de control Lectura/Escritura Bit 7 No usado Bit 6 No usado Bit 5 Permite puerto bidireccional Bit 4 Permite RQ a travs de la lnea acknowledge Bit 3 Selecciona impresora Bit 2 nicializa impresora Bit 1 Nueva lnea automtica Bit 0 Strobe Tabla 6( Regi#tro de control @na "C soporta hasta tres puertos paralelo separados, por tanto puede haber hasta tres juegos de registros en un sistema en un momento dado! E=isten tres direccione# ba#e para el puerto paralelo asociadas con tres posibles puertos paralelo4 3=&CCh, 3=&:$h 3=#:$h, nos referimos a stas como las direcciones base para el puerto 1PT1, 1PT. 1PT3, respecti(amente! El registro de datos se localiza siempre en la direccin base de un puerto paralelo, el registro de estado aparece en la direccin base 6 2, el registro de control aparece en la direccin base 6 #! "or ejemplo, para un puerto L"L# localizado en 3=&:$h, sta es la direccin del registro de datos, al registro de estado le corresponde la direccin 3=&:>h su respecti(o registro de control est en la direccin 3=&:0h! Cuando la "C se enciende el C/F- ejecuta una rutina para determinar el n1mero de puertos presentes en el sistema asignando la etiqueta L"L2 al primer puerto localizado, si e=isten ms puertos entonces se asignarn consecuti(amente las etiquetas L"L# L"L& de acuerdo a la siguiente tabla4 Direccin inicial /uncin 0000:0408 Direccin base para LPT1 0000:040A Direccin base para LPT2 0000:040C Direccin base para LPT3 0000:040E Direccin base para LPT4 Tabla 7( Direccione# ba#e en el ,IO" "ara trabajar con el puerto paralelo necesitamos en primer lugar conocer la direccin base asignada por el C/F- ;estamos hablando de una "C compatible con /CM<, podemos utilizar un programa llamado Debug.e-e que nos indique la;s< direccin;es< asignada;s<4 en la plataforma JindoKs (amos al men1 inicio, seleccionamos programas luego %$*+,$ para abrir una (entana de $mbolo de %$*+,$ aqu podemos introducir los comandos indicados ms abajo! -i se trabaja en ambiente AF- basta con teclear en la lnea de comandos la palabra debug, el programa responde colocando un signo de menos > en donde tecleamos sin dejar espacios en blanco d?6?(?;1; presionamos la tecla entrar, entonces el programa debug.e-e nos indica en una serie de n1meros la;s< direccin;es< para el ;los< puerto;s< paralelo;s< disponibles en nuestro sistema, la siguiente imagen muestra el resultado obtenido en mi mquina4 -e puede obser(ar una serie de n1meros de dos dgitos ;ocho en total<, se trata del (olcado de memoria que empieza en la direccin '34333$h! Los primeros seis pares de n1meros representn las direcciones base para los puertos paralelo instalados, en la imagen de arriba se aprecia que el 1nico puerto paralelo de mi mquina est en la direccin 3=&:$h ;:$ 3&<! Los n1meros estn in(ertidos porque /ntel almacena tal informacin en un formato de Nbte de bajo orden 7 bte de alto ordenN! @na (ez que obtenemos la informacin deseada cerramos el programa +ebug.e-e simplemente tecleando la letra @ presionando la tecla entrar! "ara cerrar la (entana de $mbolo de %$*+,$ tecleamos la palabra e-it presionamos la tecla entrar! "or supuesto, tambin podemos conocer la direccin asignada al puerto paralelo utilizando un programa, faltaba ms, el cdigo es el siguiente4 /********************************************************** * puerto1.c * * (c)Virgilio Gmez Negrete * * Determina la direccion del puerto paralelo * **********************************************************/ #include <stdio.h> #include <dos.h> int main() { unsigned int __far *puntero_a_direccion; int i; puntero_a_direccion=(unsigned int __far *)0x00000408; for (i=0; i<3; i++) { if (*puntero_a_direccion == 0) printf("No se encontro puerto asignado a LPT%d \n", i+1); else printf("La direccion asignada a LPT%d es 0x%Xh\n", i+1, *puntero_a_direccion); puntero_a_direccion++; } return 0; } El programa es mu sencillo, necesitamos un puntero que se.ale a la ubicacin de memoria que almacena la informacin para las diferentes direcciones asignadas al puerto paralelo, lo llamamos punteroAaAdireccion, ste puntero debe ser de al menos dos btes, por sta razn se declara como de tipo un#igned int AA*ar! Es importante que @sted (erifique en la documentacin de su compilador la manera precisa para utilizar la palabra cla(e "ar, sta puede ser simplemente la palabra como tal bin puede lle(ar uno ;."ar< o dos guiones bajos ;.."ar<, aseg1rese de utilizar la forma correcta el programa no funcionar! Creo que con lo e=plicado arriba el funcionamiento del programa puerto1.c no presenta problema alguno! +ol(er al principio InterfaL para el puerto paralelo 0ctualmente, la maora de los puertos instalados en las computadoras son de tipo multimodal configurables a tra(s del C/F- de la mquina, en ste artculo me refiero e=presamente al modo Normal B"PPC, adems de ste estn las opciones ,idireccional, !PP %er#in 1.9, !PP %er#in 1.D !CP principalmente! El modo de operacin /ormal es el ms elemental solamente permite la escritura en las lneas de datos, patitas # a la > del conector AC7#8 del puerto paralelo de la "C! Elctricamente, el puerto paralelo entrega se.ales LLL como tal, teoricamente, se le puede conectar cualquier dispositi(o que cumpla con los ni(eles de (oltaje especficos de la lgica LLL, sin embargo el hardKare del puerto paralelo est mu limitado en cuanto a su capacidad de manejo de corriente, por sta razn se debe ser mu cuidadoso con el manejo de las se.ales del puerto, un corto circuito puede da.ar permanentemente la tarjeta madre de la "C! "ara disminuir lo ms posible el riesgo de da.os al puerto utilizamos un circuito integrado 961".66 como etapa separadora al mismo tiempo mejoramos la capacidad de manejo de corriente, de esta forma podemos conectar una serie de diodos emisores de luz ;LEA< que nos indiquen la acti(idad en las lneas de datos del puerto paralelo! El circuito se detalla en el siguiente diagrama4 "or cada lnea de entrada que tomamos directamente del puerto paralelo e=iste una etapa amplificadora7separadora dentro del circuito integrado :'L-#'' que nos permite trabajar con una tasa de entrega de corriente suficiente para desplegar en los diodos emisores de luz la informacin escrita en las lneas de datos del puerto! 0dems es posible habilitar deshabilitar el despliegue del nibble de orden inferior superior del bte escrito en el puerto! Colocando en un ni(el lgico alto la patita 2 del C/ :'L-#'' inhabilitamos el despliegue del nibble de orden bajo, un ni(el lgico alto en la patita 2> e(ita el despliegue del nibble de orden alto! "ara comodidad, conecto las patitas 2 2> permanentemente a tierra de tal manera que sea posible (isualizar la acti(idad en los diodos emisores de luz ;LEA<! En el diagrama se especifican con n1meros las correspondientes patitas del conector AC7#8! Fb(iamente se requiere de una fuente regulada de 8 +oltios para operar ste circuito, adems los siguientes materiales4 2! Circuito /ntegrado LLL :'L-#''! $! Aiodos Emisores de Luz! $! Hesistencias de ##3 Fhms, 2I# Jatt! 2! Cable conector para el puerto paralelo! ?aturalmente lo ms recomendable es probar el correcto funcionamiento del circuito ante# de conectarlo al puerto paralelo de la "C! Ensamble el circuito, preferentemente en un circuito impreso, conctelo a una fuente regulada de 8 +oltios, conecte temporalmente un e=tremo de una resistencia de 23,333 Fhms a una lnea de entrada, el resto de las lneas de entrada conctelas a tierra! El otro e=tremo de la resistencia conctelo directamente al borne positi(o de la fuente de alimentacin para inducir una se.al LLL alta, el respecti(o LEA debe encender! Con un trozo de alambre conectado a Lierra, toque temporalemente el e=tremo de la resistencia que est conectado a la lnea de entrada para inducir una se.al LLL de lgica baja, el LEA se debe apagar! Hepita sta operacin para cada una de las ocho lneas de entrada! @na (ez que ha (erificado el correcto funcionamiento del circuito est listo para conectarlo al puerto paralelo de la "C! En primer lugar apague la computadora el circuito! Conecte el cable al puerto paralelo asegurndose que el conector est firme en su sitio! Encienda el circuito por 1ltimo encienda la computadora, por regla general, el circuito de restablecimiento de la computadora coloca inicialmente en las lneas de datos del puerto paralelo un (alor igual a 3=3h, por lo tanto todos los diodos deben estar apagados una (ez que la computadora ha terminado su proceso de arranque, sin embargo, si alg1n diodo permanece encendido sto no indica una condicin de falla, es responsabilidad del softKare que @sted escriba para controlar el puerto inicializarlo con un (alor adecuado antes de realizar cualquier otra operacin! +ol(er al principio 1scribiendo datos al puerto paralelo Con ocho bits podemos escribir en el puerto un total de #8% (alores diferentes, cada uno de stos representa un bte de informacin cada bte puede representar una accin concreta que nosotros podemos definir de acuerdo a nuestras necesidades! En ste artculo el objeti(o es entender cmo trabajar con el puerto paralelo, por lo tanto hagamos un programa que nos permita escribir un n1mero cualquiera entre 3 #88 de tal manera que sea posible (isualizar el (alor en formato binario! En primer lugar consulte la documentacin de su compilador para (erificar la correcta sint=is de la funcin que nos sir(e para escribir en el puerto, en el caso especfico de -mantec C66, dicha funcin es outpB C! )sta funcin requiere dos parmetros, el primero de tipo unsigned int que especifica la direccin del puerto paralelo, el segundo de tipo char que especifica el (alor a escribir en las lneas de datos de puerto! @na tpica llamada a la funcin outp( ) se parece a sto4 outp(0x378, 65); -e aprecia la facilidad de manejo de la funcin, aunque diferentes compiladores dan a sus respecti(as funciones nombres diferentes, la mecnica es la misma, se requieren dos parmetros, la direccin del puerto el (alor a escribir en el puerto! Estudie el siguiente cdigo4 /********************************************************** * puerto2.c * * Escribe datos al puerto paralelo de la PC * * (c)1999, Virgilio Gmez Negrete * **********************************************************/ #include <stdio.h> #include <dos.h> int puerto(int direcc); int seleccion; int main() { unsigned int __far *puntero_a_direccion; int i, direccion[3]={0,0,0}, disponible[3]={0,0,0}; puntero_a_direccion = (unsigned int __far *)0x00000408; printf("Seleccione el puerto:\n"); /* Cuantos puertos existen? */ for (i=0; i<3; i++) { if (*puntero_a_direccion == 0) printf("Puerto LPT%d...............no disponible\n", i+1); else { disponible[i] = 1; direccion[i] = *puntero_a_direccion; printf("Puerto LPT%d...............%d\n", i+1, i+1); } puntero_a_direccion++; } printf("Salir del programa........0\n"); scanf("%d", &seleccion); do { switch(seleccion) { case 0:/* Salir del programa */ printf("Adios!!!\n"); return 0; break; case 1:/* Puerto LPT1 */ if(disponible[0]==1) puerto(direccion[0]); else { printf("ERROR: PUERTO NO DISPONIBLE\n"); return 0; } break; case 2:/* Puerto LPT2 */ if(disponible[1]==1) puerto(direccion[1]); else { printf("ERROR: PUERTO NO DISPONIBLE\n"); return 0; } break; case 3:/* Puerto LPT3 */ if(disponible[2]==1) puerto(direccion[2]); else { printf("ERROR: PUERTO NO DISPONIBLE\n"); return 0; } break; default: printf("ERROR: OPCION INCORRECTA!\n"); break; } if(seleccion!=0) { printf("Seleccione otra opcion\n"); scanf("%d", &seleccion); } } while(seleccion!=0); return 0; } int puerto(int direcc) { unsigned char valor; /* Solo valores entre 0 y 255 */ printf("Ahora puede escribir cualquier valor\n"); printf("entre 1 y 255, 0 para terminar el programa\n"); do { printf("Valor al puerto?\n"); scanf("%d", &valor); outp(direcc, valor); printf("Se ha escrito %d al puerto\n", valor); } while(valor!=0); return seleccion=0; } El programa determina el n1mero de puertos paralelo instalados en la computadora almacena sus respecti(as direcciones en el arreglo llamado direccionEiF, en caso de encontrarse una direccin (lida adems se establece en 2 el (alor del arreglo llamado di#ponibleEiF simplemente como una medida de seguridad adicional! Como resultado de stas acciones el programa despliega un men1 basado en los puertos encontrados, en este punto @sted puede seleccionar, en caso de que disponga de ms de un puerto, el puerto en donde est conectado el circuito mostrado en el diagrama de arriba! @na (ez seleccionado el puerto @sted puede escribir un (alor cualquiera comprendido entre 3 #88! /ndependientemente del puerto seleccionado toda la funcionalidad del programa est encapsulada en la funcin de tipo int llamada puertoB C a la cual se le pasa un 1nico parmetro que es la direccin del puerto seleccionado! La funcin est codificada de tal forma que al escribir un 3 el programa termina, de sta manera al cerrar el programa las lneas de datos del puerto paralelo estn todas en un ni(el lgico bajo! )ste programa el circuito asociado son 1tiles para entender de forma (isual la forma de representar (alores en formato binario, adems establece las bases de trabajo para otros proectos de control basados en computadora! Aisfrute la e=periencia! +ol(er al principio Descaras El diagrama esquemtico de la interfaz para el puerto paralelo el cdigo fuente de los programas mostrados en ste artculo estn disponibles en el archi(o llamado paralel2!zip ;22!: Sb!< R'mo se confiura el puerto serie S /a primera pre+unta seraK ] Iebo con#i+urar mis puertos serie [ 1n +eneral, slo debers con#i+urar los puertos serie en estos casosK Tu modem es interno $ 5lu+cnc5la$. Iebers con#i+urar el modem $ al menos el puerto serie que incorpora. Tienes ms de dos puertos serie, contando adems con los que incorporan los modems internos *si tienes al+uno,. 5or lo +eneral debers con#i+urar todos los puertos a partir del 4B7 incluido. !n tercer caso, ms raro, que consistira en tener un modem interno en 4B1 o 4B2 $ que no usara los recursos estandar *puerto 7#@ e interrupcion ? para 4B1, $ puerto 2#@ e interrupcin 7 para 4B2,. /os recursos utilizados por el modem pueden consultarse en el 5anel de ontrol de 3indoGs 6C *8istema DT Administrador de dispositivos DT 5uertos 4B $ /5T DT el puerto que sea DT :ecursos,. 1ntonces debers con#i+urar el puerto del modem. 8i no cumples nin+una de estas condiciones, puedes i+norar el resto de la seccin. !n puerto serie *ms eEactamente, la !A:T del puerto serie, usa un ran+o de direcciones de entradaDsalida $ una solicitud de interrupcin para comunicarse con el sistema operativo. 5ara el correcto #uncionamiento del ordenador $ del sistema operativo, nin+n otro dispositivo del ordenador puede usar al+uno de esos valores. )uestro objetivo ser conse+uir esto, $ en se+undo lu+ar, "acer que el sistema operativo atienda a ese ran+o de entradaDsalida $ esa interrupcin para comunicarse con el modem. Tradicionalmente la eleccin del ran+o de entradaDsalida $ la interrupcin se realizaba a trav(s de una serie de microinterruptores manuales situados en el modem. onocida la posicin de estos interruptores, se con#i+uraba el sistema operativo para que usara esos valores. 0o$ en da casi la totalidad de los modems internos son 5lu+cnc5la$, lo cual si+ni#ica que el sistema operativo puede, por so#tGare, decirle a la tarjeta qu( valores debe usar. 3onfiguracin de modems lugFnFla0 en (inu8 8i tienes un modem 5lu+cnc5la$, lo primero que "abr que "acer es decirle que ran+o de entradaDsalida $ que interrupcin debe usar. /o ms cmodo en este caso es usar los mismos valores que 3indoGs 6C. 5ara ello arranca 3indoGs 6C, $ "az >nicioD Ton#i+uracinDT5anel de control. !na vez en el 5anel de control, eli+e el icono c8istemac $ dentro de (l, el cAdministrador de dispositivosc. Ientro del apartado c5uertos 4B $ /5Tc eli+e el correspondiente al puerto 4B donde tienes el modem. .usca en c:ecursosc el ran+o de entradaDsalida $ la interrupcin que use $ apntalos. on esos valores en la mano, puedes con#i+urar tu modem 5lu+cnc5la$ en /inuE. 1so se "ace con el pro+rama cisapnpc. 1ntra en /inuE $ busca si tienes un arc"ivo llamado /etc/isapnp.conf. 8i no lo tienes "az lo si+uienteK pnpdump T NetcNisapnp.con# 1sto +enerar el esqueleto de un arc"ivo de con#i+uracin para cisapnpc. 1ste pro+rama +enerar un listado con todas las posibles posibilidades de con#i+uracin que permiten tus dispositivos 5lu+cnc5la$, pero todas des"abilitadas con un chc al principio de cada lnea. /os dispositivos aparecen por secciones por lo que es #cil encontrar los correspondientes a tu modem. As tu misin se reducir a encontrar en la seccin correspondiente a tu modem del arc"ivo /etc/isapnp.conf, dos lneas asK h *>4 0 *.A81 0E0))),, h *>)T 0 *>:O BB *B4I1 R1,,, donde ))) sea el ran+o de entradaDsalida que use el modem en 3indoGs $ BB la interrupcin. /as lneas no tienen por qu( ser consecutivas ni ir en nin+n orden especial. uando las encuentres, qutales el chc inicial. /ue+o, al #inal de la seccin del modem encontrars una lnea parecida a estaK h *AT L, Ie la misma #orma, le quitas el chc inicial. La est. /isto para enviar dic"os valores al modem. 1sto lo "ace la orden isapnp /etc/isapnp.conf $ deber aparecer en los scripts de arranque de /inuE para enviar los valores cada vez que enciendas el ordenador. /as distribuciones ms recientes *:edD0at C.0 $ posteriores, Iebian 2.0 $ posteriores, $a inclu$en dic"a invocacin por lo que no necesitars tocar los scripts de arranque. 1n caso de tener una distribucin anti+ua, ser necesario aadir dic"a orden. !n buen sitio para incluirla sera el script rc.local, que suele estar situado en uno de los subdirectorios de /etc. Ie todas #ormas ser necesario ejecutar isapnp /etc/isapnp.conf si queremos activar los cambios en este momento $ nos queremos a"orrar el rearrancar la mquina. A"ora "a$ que decirle al sistema operativo que debe usar esos valores para comunicarse con el modem. 1n el caso de los modems 5lu+cnc5la$ lo que viene a continuacin es imprescindible. 3onfiguracin de los puertos serie a ojos del sistema operati1o /o primero que "a$ que saber es que /inuE no llama a los puertos serie de la misma #orma que el I48 o 3indoGs. As eEiste la si+uiente correspondenciaK DOS,Yi"&o>s Li"!H 4B1 NdevNtt$80 4B2 NdevNtt$81 4B7 NdevNtt$82 DOS,Yi"&o>s Li"!H 4B? NdevNtt$87 4jo a las ma$sculas $ las minsculas del nombre de /inuE. 8on importantes. 5ara leer la con#i+uracin $ con#i+urar los puertos serie se usa la orden csetserialc. 5ara leer la con#i+uracin, "a$ que ejecutar setserial con el puerto serie que deseamos ver como nico parmetro. 5or ejemploK setserial NdevNtt$81 nos muestra la con#i+uracin de 4B2 $ se obtendr al+o como estoK NdevNtt$81, !A:TK 1&CC0A, 5ortK 0E02#@, >:O 7 o sea, el puerto serie */dev/ttyS1,, el tipo de c"ip !A:T que lleva *1&CC0A,, el puerto base de entradaD salida *2#@, $ la solicitud de interrupcin *7,. )tese que estos son los valores que el sistema operativo :11 que debe utilizar para comunicarse con el modemNpuerto serie. 1s posible que a"ora no coincidan con los reales, incluso que ni siquiera detecte la !A:T, lo cual no es raro en caso de modems 5lu+cnc5la$. 8i no coinciden, asi+naremos los valores adecuados. 5or #ortuna, por lo +eneral no ser necesario indicar la direccin base de entradaDsalida. 8alvo casos mu$, mu$ eEcepcionales 4B1 usa la direccin base 7#@, 4B2 la 2#@, 4B7 la 7e@ $ 4B? la 2e@, $ eso setserial lo sabe. As, al indicar el puerto serie, setserial implcitamente sabe cual es la direccin base. 1n cambio, en caso de tener un puerto 4BC o superior s ser necesario indicar la direccin base. As para 4B1D4B? slo indicaremos la interrupcin. 5or ejemplo, supon+amos que tenemos un modem en 4B7 que usa la interrupcion C. /a orden a introducir sera. setserial NdevNtt$82 irq C autocon#i+ L si quisi(ramos indicar tambi(n la direccin base de entradaDsalida *por tener el modem en 4BC, por ejemplo, se "ara as. setserial NdevNtt$8? port 0E2e@ irq 10 autocon#i+ lo cual "ace que el sistema operativo use un ran+o de direcciones desde la 2e@, $ la interrupcin 10. )tese que el c0Ec antes de la direccin base es importante. 5or ltimo slo queda ver que los cambios "an surtido e#ecto. 5ara ello bastar usar de nuevo setserial de la primera #orma que se indic. 5or des+racia esta con#i+uracin durar "asta que apa+uemos el ordenador. 5or tanto ser necesario incluir la lnea o lneas de con#i+uracin setserial /dev/ttyS2 irq 5... en uno de los scripts de arranque de /inuE para que los puertos se con#i+uren cada vez que se inicie el sistema operativo. !n buen candidato es rc.local, que estar en uno de los subdirectorios de /etc. 1n caso de ser necesario incluir en rc.local tanto el isapnp /etc/isapnp.conf para con#i+urar un modem 5lu+cnc5la$, $ el setserial... de los puertos serie, deber colocarse el isapnp... en primer lu+ar. Tambi(n "abr que usar setserial de la misma #orma si el ordenador tuviera ms de dos puertos serie, *contando los que traen los modems internos en caso de disponer de al+uno,. 1l motivo es que por al+una eEtraa razn de diseo del 5, 4B1 $ 4B7 por de#ecto comparten la misma interrupcin, $ a pesar de que esa con#i+uracin no es deseable, /inuE por de#ecto busca 4B7 en la misma interrupcin que 4B1, por lo que "abra que cambiar la de 4B7. /o mismo ocurre con 4B2 $ 4B? por lo que "abra que cambiar 4B?. 8i no se "iciera esto, podran ocurrir cosas mu$ raras, como ratones $ modems que dejan de #uncionar, modems que #uncionan -a pedales- *cuando se mueve el ratn,, etc... "ttpKNNGGG."ispa#uentes.comN"#DdocN"#'.0N"#D+uiaDusuarioNE10?@2."tml 812I/I'"'I=# D1L SE%!& N *"2C-1T24S D1 4*12"'I=# D1 L" T"2J1T" -"D21 Se conoce por set%p la configuracin de los parmetros (variables de operacin) de algunos elementos de la tarjeta madre por medio de los Servicios Bsicos de Entrada y Salida (BOS) de la misma. Estos ajustes se realizan mediante el programa de SETUP, al que se accede generalmente mediante la tecla <BORRAR> o <DELETE> durante el arranque. En algunas computadoras se accede al SETUP mediante otra tecla (o combinacin de teclas), lo que se informa al inicio del arranque. Este mensaje lo genera el programa de arranque (BOOT) almacenado en la memoria ROM del BOS, generalmente en idioma ingls: /I% 7#E.8 %+ E"%E* SE%!& (o un texto similar). En casos excepcionales no aparece en la pantalla durante el proceso de arranque, debindose consultar al Manual de Usuario o probando las teclas ms usuales: <DELETE>, <ESC>, <F2> a veces combinada con <ALT> o <CONTROL>. Las tecnologas difieren notablemente segn la fecha de fabricacin de la tarjeta madre, y aunque no existe tampoco uniformidad en los parmetros de operacin, analizaremos los ms comunes y los conceptos bsicos de la configuracin, sin profundizar en detalles. Tpicamente el SE%!& incluye las siguientes secciones: S%$"#$*# ,M+S SE%!&: Aqu se ajusta la hora y fecha, los parmetros de las unidades DE (discos duros o CD), unidades de disquete, y tipo de video. Se recomienda realizar la autodeteccin de las unidades DE de modo que se almacenen sus parmetros especficos y no dejar el ajuste AUTO, con la finalidad de agilizar el proceso de arranque. Algunas tarjetas (obsoletas) no realizan la autodeteccin DE, otras lo realizan desde el men principal del set%p, mientras las ms modernas lo incluyen dentro de esta seccin. Debe realizarse la autodeteccin siempre que se cambie o agregue una unidad, comprobando su reconocimiento por el BOS. Si alguna unidad no es reconocida, puede deberse a fallos de contacto en cualquiera de los extremos de los conectores DE, o en la alimentacin, o en los *%-pes que determinan la condicin de MASTER o ESCLAVO de las unidades DE. BI+S 2E$%!*ES SE%!&. Diversos ajustes se realizan en esta seccin: la proteccin de antivirus del BOS, el cach interno y externo, la secuencia de arranque, los ajustes del teclado, la habilitacin de las distintas opciones de memoria-sombra (s(ado9) y algunas secuencias variables del programa de arranque. No debe activarse la proteccin antivirus del BOS ya que puede ocasionar conflictos con el programa antivirus que se instale. Debe verificarse la activacin de los cachs internos y externos (siempre que la tarjeta cuente con ste ltimo), y seleccionar una secuencia de arranque rpida y eficiente: si no se va a arrancar habitualmente por disquete, NO debe dejarse la secuencia de arranque que comienza por A:, para evitar un indeseado intento de arranque por un disquete que inadvertidamente quede en la unidad, ocasionando un inesperado mensaje de ERROR EN DSCO. Las secciones de memoria s(ado9 del BOS y de VDEO deben quedar activadas, ya que contribuyen a una mayor velocidad de operacin. Si no se activan, las funciones se ejecutarn desde la memoria ROM, que es ms lenta que la memora RAM de sombra. ,/I&SE% 2E$%!*ES SE%!&( Su contenido vara sustancialmente segn la tecnologa, e incluye los intervalos de temporizacin electrnica. Se recomienda dejar activada su configuracin automtica, o leer cuidadosamente el manual de la tarjeta si se desea optimizar el ajuste manual de estos parmetros. &+9E* M$"$EME"% SE%!&( Configura las diversas variantes del sistema de ahorro de energa. Una computadora que permanezca conectada durante horas pero incluya continuos periodos de inactividad, puede resultar beneficiosa la activacin del sistema de ahorro de energa. Debe tenerse en cuenta que algunas desconexiones realizadas por este sistema pueden ocasionar demoras en la rehabilitacin del servicio cuando se envan las seales mediante el mouse, el teclado o el mdem. La configuracin que se adopte debe adecuarse al rgimen de operacin. &"&:&,I ,+"2I!*$%I+"( Configura la activacin de las seales de Plug and Play, y la asignacin de recursos a los conectores PC de la tarjeta madre. Deben dejarse los ajustes predeterminados, y modificarse solo en casos excepcionales de conflictos de recursos u otras condiciones inusuales. I"%E*$%E# &E*I&/E*$.S( Configuracin de los puertos DE, UDMA, PC, USB, y los SERALES y PARALELOS. Si solamente se utiliza el canal DE PRMARO no debe dejarse activado el funcionamiento del canal SECUNDARO, y la funcin UDMA debe activarse nicamente si el disco duro est habilitado para esta tecnologa. En esta seccin es frecuente ajustar la variante del puerto paralelo (SPP, ECP o EPP) que debe responder a los requerimientos de la impresora que se instale. .+$# BI+S #E2$!.%S( Realiza un conjunto de ajustes que corresponden a la configuracin de requerimientos mnimos, y es la ms segura. Pero debe adoptarse nicamente si la mquina no arranca o falla con el ajuste de requerimientos mximos, puesto que baja su velocidad y degrada su operacin. .+$# SE%!& #E2$!.%S ;o M$6IM!M &E*2+*M$",E<( Realiza un conjunto de ajustes que corresponden a la configuracin de requerimientos mximos y es ms rpida. Debe adoptarse siempre que no existan fallos en el arranque y el funcionamiento se estabilice. !SE* &$SS9+*#( Permite la modificacin de la clave de acceso al arranque o al programa SETUP4 En caso que la clave quede activada y se olvide, la tarjeta madre dispone de un *%-pe que permite la descarga de la memoria CMOS con lo que se borran todos los ajustes incluyendo la clave de acceso. Autodetecta la presencia y parmetros de las unidades DE (disco duro y CD). En algunos casos esta funcin est incorporada dentro de la seccin de STANDARD "MOS DEFAULT4 Generalmente hay dos formas de salir del SETUP: S$0E = E6I% SE%!& > O sea, salvar en la memoria CMOS los cambios realizados, y salir. E6I% 9I%/+!% S$0I"> Salir sin salvar, manteniendo la configuracin anterior. Generalmente ambas opciones estn disponibles en el men principal del SETUP, y la segunda puede alcanzarse pulsando repetidamente la tecla <DELETE> (<BORRAR>). En cualquiera de las dos formas se presenta un dilogo que solicita la validacin de la forma de salida. Una deficiente configuracin del SETUP puede ocasionar fallos en el arranque o un funcionamiento inestable o errtico, si la configuracin excede a las posibilidades de los componentes o por el contrario un funcionamiento degradado (lento) si no se aprovechan sus potencialidades, por lo que deben seguirse las indicaciones del manual de la tarjeta madre escogiendo las opciones que garanticen un funcionamiento estable con la mxima velocidad alcanzable y que se ajuste al rgimen de funcionamiento previsto. "ttpKNNmssimpleE.comNmantenimientoNsetup."tm ;.3 Uso de instrucciones para mane!o de puertos ANETOS< !structura general de un programa )ormalmente el pro+rama consta de dos partes principalesK declaraciones instrucciones /a parte de declaraciones de#ine las variables a usarse en las instrucciones. /as instrucciones describen el al+oritmo con el que se quiere solucionar el problema planteado. Ientro del pro+rama se pueden intercalar zonas de comentarios que pueden servir para aclarar $ documentar el cdi+o pro+ramado. omo notacin para identi#icar comentarios, estos se encerrarn de la si+uiente #ormaK <F comentario F<
)nstruccin de Csignacin 1Eiste una instruccin bsica que se denomina asi+nacin. /a asi+nacin permite modi#icar el valor de una variable declarada. /a asi+nacin est de#inida para cada uno de los tipos de datos elementales vistos. /a sintaEis de una asi+nacin es la si+uienteK nombre4variable 26 e8presin 5 1n la parte izquierda de la asi+nacin se pone el nombre de la variable que se quiere modi#icar. /a parte derec"a contiene una eEpresin que le dar el nuevo valor a la variable, $ por lo tanto debe tener el mismo tipo que la variable. /a eEpresin puede serK
un valor literal. 1j. float precio; precio 26 154>.1; el valor de otra variable. 1j. float precio, precio21enta; precio 26 154>.1; precio21enta 26 precio; una serie de operaciones entre variables $ literales que dan como resultado el valor a asi+nar. 1j. float precio21enta, precio2costo, descuento; precio21enta 26 precio2costo + 1>.> ' descuento; !ntrada 0 Dalida 1n muc"as situaciones es conveniente que los valores a asi+nar a una variable se obten+an del usuario por medio de dispositivos peri#(ricos de entrada como el teclado. Adems, a veces resulta tambi(n conveniente mostrar ciertos resultados al usuario por medio de dispositivos peri#(ricos de salida como la pantalla. 8e dispone de las si+uientes pseudoDinstrucciones de entradaNsalida de datos, tambi(n denominadas de >N4 o inputNoutputK lee- *nombrePvariable, equivalente a nombrePvariable KS lee- mos$-a- *nombrePvariable, 5or simplicidad de notacin, estas instrucciones #uncionan con cualquiera de los tipos elementales de#inidos. /a instruccin leer +uarda en la variable nombrePvariable el valor que el usuario introduce por teclado. 5or ej. c-ar letra; leer (letra*; o letra 9$ leer ;
espera que el usuario introduzca cualquier letra del teclado $ le asi+na este valor a la variable letra. /a instruccin mostrar visualiza en la pantalla el valor de la variable nombrePvariable. int total; total 9$ 1>>; mostrar (total*; muestra en la pantalla el valor de la variable total, en este ejemplo el nmero 100. 8e considera adems que tambi(n es posible usar la instruccin mostrar de las si+uientes manerasK mostrar (G !sta es una frase a mostrar en pantallaG*; mostrar (G !l 1alor de la 1ariable total es9 G , total*; 1n el primer caso se muestra la #rase encerrada entre comillas, $ en el se+undo caso, adems de mostrarse la #rase encerrada entre comillas se muestra a continuacin el valor de la variable cu$o nombre est lue+o de la coma separadora. 3ontrol de )nstrucciones 5ara "acer un pro+rama se necesita contar con mecanismos que permitan a+rupar instrucciones $ controlar el orden de ejecucin de las mismas. 1Eisten tres mecanismos o estructuras de controlK omposicin secuencial omposicin condicional omposicin iterativa o repetitiva 3omposicin Decuencial !n pro+rama puede contener simplemente una secuencia de instrucciones. /as instrucciones de una secuencia se ejecutan una despu(s de la otra. comienBo secuencia de instrucciones fin5 E.em*lo< encontrar la solucin de una ecuacin de primer +rado a E R b S 0. /os datos a $ b se leen de teclado, se calcula el valor de E resultante, $ se muestra el resultado por pantalla. :+ declaraciones +: float a, b, 8; :+instrucciones+: comienBo leer (a*; leer (b*; 8 9$ ' b : a; mostrar (G!l 1alor de 8 es9 G, 8*; fin5 3omposicin 3ondicional Al resolver un problema, a veces s debe proceder de una manera $ a veces de otra dependiendo de al+una determinada condicin. I"s$-!cci7" si,sino /a composicin condicional permite ejecutar una secuencia de instrucciones si una condicin dada es verdadera, $ en caso contrario ejecutar otra secuencia de instrucciones alternativas. 0i condicin entonces comienBo secuencia1 de instrucciones fin si5 sino comienBo secuencia2 de instrucciones fin sino5 E.em*lo< encontrar el valor absoluto de un nmero. 1l nmero se introduce por teclado, se calcula el valor absoluto $ se muestra por pantalla. :+ declaraciones +: float numero, 1alor2absoluto; :+instrucciones+: comien<o leer (numero*; Di numero H$ > entonces comien<o 1alor2absoluto 9$ numero; fin si; sino comien<o 1alor2absoluto 9$ ' numero; fin sino; mostrar (G!l 1alor absoluto es9 G, 1alor2absoluto*; fin; uando no se quiera realizar nin+una accin en caso de que la condicin no es verdadera, simplemente se i+nora la parte del -sino-. Feneralizando, la instruccin -siDsino- puede contar con ) alternativas o condiciones a evaluar. /as condiciones se evalan en el orden de aparicin, $ cuando se localiza la primera condicin verdadera se ejecuta la serie de instrucciones correspondientes a esa alternativa. 0i condicin1 entonces comienBo secuencia1 de instrucciones fin si5 sino si condicin2 entonces comienBo secuencia2 de instrucciones fin sino si5 sino si condicin4 entonces comienBo secuencia4 de instrucciones fin sino si5 . . . sino si condicin/ entonces comienBo secuencia/ de instrucciones fin sino si5 sino comienBo secuencia/&1 de instrucciones fin sino5 Caso es*ecial &e co"&icio"al< i"s$-!cci7" en caso 1Eiste una variante de la instruccin condicional que puede usarse en lu+ar de la instruccin -siDsino- cuando se deban realizar distintas secuencias de instrucciones dependiendo del valor de una eEpresin. en caso e8presin sea 1alor19 comienBo secuencia1 de instrucciones; fin5 1alor29 comienBo secuencia2 de instrucciones; fin5 . . . 1alor/9 comienBo secuencia/ de instrucciones; fin5 sino2 comienBo secuencia/&1 de instrucciones; fin5 fin en caso5 E.em*lo< el usuario introduce una letra en el teclado, $ si la misma es una vocal el pro+rama debe mostrar el nombre de un animal que comience con dic"a vocal. :+ declaraciones +: char letra; :+instrucciones+: comien<o leer (letra*; en caso de Iue letra sea FaF9 mostrar(GabejaG*; FeF9 mostrar(GelefanteG*; FiF9 mostrar(GiguanaG*; FoF9 mostrar(GosoG*; FuF9 mostrar(Gun perroG*; sino9 mostrar(G(a letra no es 1ocalG*; fin en caso; mostrar (G!l 1alor absoluto es9 G, 1alor2absoluto*; fin;
. 3omposicin )terati1a o Jepetiti1a !na composicin iterativa permite ejecutar repetidamente una secuencia de instrucciones mientras se cumpla una condicin. I"s$-!cci7" mientras mientras condicin repetir comienBo secuencia de instrucciones fin mientras5 8e comprueba la condicin $ si es verdadera se ejecuta la secuencia de instrucciones. uando se termina de ejecutar la secuencia se vuelve otra vez a evaluar la condicin $ si (sta se si+ue cumpliendo se vuelve a ejecutar la secuencia nuevamente. 1ste proceso se repite "asta que l condicin es #alsa, en cu$o caso se contina ejecutando la si+uiente instruccin a la instruccin -mientras-. E.em*lo< construir un pro+rama que sume todos los nmeros que introduce el usuario "asta que introduzca el nmero cero.
:+ declaraciones +: float numero, suma2acumulada; :+instrucciones+: comien<o :+ iniciali<acin +: suma2acumulada 9$ >; leer (numero*; mientras numero H > repetir comien<o suma2acumulada 9$ suma2acumulada & numero; leer (numero*; fin mientras; mostrar (G(a suma acumulada es9 G, suma2acumulada*; fin; Caso es*ecial &e i"$e-aci7"< i"s$-!cci7" para 1Eiste una variante de la instruccin iterativa en el caso de que se quiera repetir una secuencia un nmero de veces dado. para nombre21ariable desde 1alor2inicial -asta 1alor2final inc incremento comienBo secuencia de instrucciones fin para5 >nicialmente la variable nombrePvariable se inicializa con el valorPinicial que si+ue a desde. ada vez que se ejecuta la secuencia de instrucciones el valor de esta variable se incrementa con el valor incremento que si+ue al inc. uando la variable tiene un valor superior al valorP#inal que si+ue a "asta el ciclo deja de repetirse. 1n total se realizan valorP#inal D valorPinicial R 1 iteraciones. E.em*lo< modi#icamos el ejemplo anterior de manera que el usuario indica primero la cantidad de nmeros que quiere sumar.
:+ declaraciones +: int cantidad, contador; float numero, suma2acumulada; :+instrucciones+: comien<o :+ iniciali<acin +: suma2acumulada 9$ >; leer (cantidad*; para contador desde 1 hasta cantidad inc 1 comien<o leer (numero*; suma2acumulada 9$ suma2acumulada & numero; fin para; mostrar (G(a suma acumulada es9 G, suma2acumulada*; fin;