leccion 2

download leccion 2

of 49

Transcript of leccion 2

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-1

    CONTENIDO DE LA LECCIN 2

    TERMINOLOGA BASICA EN COMPUTACIN , SOFTWARE, INGENIERIA DE SOFTWARE 1. Introduccin 2 2. Terminologa bsica en computacin 4

    2.1. Unidades de medida en computacin. 4 2.2. Sistemas numricos 5

    2.2.1. Operaciones aritmticas 6 2.2.2. Examen breve 2-1 8

    2.3. Organizacin de una computadora 8 2.4. Examen breve 2-2 13

    3. Software 13 3.1. Software de aplicacin 13 3.2. El software de sistema 14

    3.2.1. Lenguaje de mquina 16 3.2.2. Lenguaje ensamblador 20 3.2.3. Lenguaje de alto nivel 21 3.2.4. Sistema operativos 22 3.2.5. Evolucin de los sistemas operativos 22 3.2.6. Servicios que presta un sistema operativo 23

    4. Computacin personal, distribuida y cliente / servidor 29 5. Por qu C++? 29 6. Biblioteca estndar de C++ 31 7. Java 31 8. Examen breve 2-3 31 9. Ingeniera de Software 32

    9.1. Principios de Ingeniera de Software 34 10. Diseo orientado a objetos 37 11. Lo que necesita saber 40 12. Preguntas y problemas 43

    12.1. Preguntas 43

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-2

    LECCIN 2

    TERMINOLOGA BASICA EN COMPUTACIN , SOFTWARE, INGENIERIA DE SOFTWARE

    INTRODUCCION En la actualidad las computadoras son parte de la vida cotidiana. Casi todos hemos usado un procesador de texto. Tambin se usan las computadoras en formas que no son tan obvias, por ejemplo, cada vez que usa un telfono o viaja por avin. En el sistema telefni-co, son los programas los que proporcionan caractersticas especiales tales como la llamada en espera, dos a la vez, buzn de texto o de voz, sgueme, etc. En el caso del avin, puede que aterrice gracias a la computadora ms que al piloto. El trmino sistema computacio-nal se usa para enfatizar que existen dos componentes distintos: hardware y software. El hardware es la computadora en si misma. El software son los programas que dicen a la computadora qu hacer. Disear e implementar aplicaciones es un gran reto en nuestros das, una aplicacin puede tener miles de lneas de cdigo. En los ltimos aos ha surgido la tc-nica de diseo y programacin orientada a objetos, que ha mostrado su utilidad para mane-jar y hacer frente a la complejidad de las aplicaciones.

    Uno de los puntos cruciales asociados con el diseo de un sistema involucra el mane-jo de la complejidad del proceso de diseo. De forma habitual, los buenos diseadores em-plean alguna forma de abstraccin como herramienta para tratar esta complejidad. El trmi-no abstraccin aqu se refiere a la capacidad intelectual de considerar una entidad ais-lndola de cualquier ejemplar especfico de esa entidad. Por ejemplo, los diseadores de hardware que pretenden disear una computadora, habitualmente se preocupan de la fun-cionalidad de los circuitos integrados que piensan usar no del funcionamiento de los tran-sistores que se encuentran en esos circuitos integrados.

    El desarrollo de un sistema informtico se simplifica utilizando el concepto de abs-traccin en el proceso de diseo. En el diseo de software, supone especificar la funciona-lidad del sistema informtico en trminos generales de alto nivel. Una vez que puede ser demostrado que esta especificacin abstracta del sistema es correcta, es posible aadir ms detalle, para finalmente, conducir a una descripcin detallada de bajo nivel del sistema in-formtico en trminos que son directamente implementables usando un lenguaje de progra-macin. En cada paso de este proceso, el diseador verifica que el detalle adicional aadido al diseo del sistema es correcto. Permitindole concentrarse en el conjunto del diseo del sistema sin tener que perderse en los detalles de implementacin. C++ es un lenguaje estructurado, as como orientado a objetos. La programacin estructurada, algunas veces llamada programacin procedimental (de procedimientos), se construye utilizando el concepto de funcin. Una funcin se disea para realizar una tarea especfica y despus cuando se le requiere se le llama para que realice la tarea para la cual fue escrita. De esta manera, un programa consiste en una coleccin de funciones, cuya eje-cucin combinada soluciona el problema propuesto. Los programas se resuelven usando un enfoque modular descendente o de arriba-abajo, utilizando la tcnica de descomponer un problema en subproblemas cada vez menos complejo.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-3

    Por otro lado, la programacin orientada a objetos se construye utilizando los con-ceptos de clases y objetos, los cuales modelan entidades del mundo real en forma ms na-tural. Por natural debe entenderse que la programacin orientada a objetos permite cons-truir programas en la misma forma en que tendemos a pensar las cosas. Por ejemplo, ten-demos a clasificar las entidades del mundo real en vehculos, escuelas, materias, profesores, etc. Aprendemos acerca de esto estudiando sus caractersticas o atributos y su desempeo; considerando, por ejemplo, una clase de vehculos, stos comparten ciertas caractersticas o atributos, tales como motores, neumticos, transmisin, etc. Ms an, todos tienen un desempeo, como aceleracin, desaceleracin (frenado) y direccin. En otras palabras, te-nemos una impresin abstracta general de un vehculo por medio de sus atributos y su des-empeo ms que en cuanto a sus tuercas y tornillos, aunque sin stos, el vehculo en reali-dad no podra existir. Cmo se relacionan los objetos con las clases? Bien, su automvil es un ejemplo o instancia de la clase vehculo. Posee todos los atributos y desempeo de cualquier vehculo, pero es un ejemplo especfico de un vehculo. De igual modo, en pro-gramacin orientada a objetos, creamos una clase abstracta que describe los atributos generales y el desempeo de una entidad de programacin, despus creamos objetos de las clases que se manejarn dentro del programa, justo como su automvil es la cosa que actualmente maneja, no su nocin general abstracta de un vehculo. Si la programacin estructurada o procedimental se construye alrededor de las funciones y la programacin orientada a objetos se construye alrededor de las clases. Existe alguna relacin entra ambas? S! Las clases son construidas usando elementos de programacin estructurada, llamadas funciones. Esta es la razn por lo que necesitamos primero estudiar la programacin estructurada y gradualmente movernos a la programa-cin orientada a objetos. Conforme avance en las lecciones ir aprend iendo como hacer programas estructurados. Adems, empezar a pensar las cosas en funcin de clases y objetos. Cuando haya dominado estos conceptos fundamentales, estar listo para aprender, en cursos posteriores, acerca de la programacin orientada a objetos. En esta leccin, se introduce la terminologa bsica de los sistemas de computacin y los conceptos que existen detrs del diseo orientado a objetos.

    Objetivos de esta leccin: Conocer la terminologa bsica en computacin. Manejar los sistemas numricos binario, octal y hexadecimal. Realizar operaciones aritmticas en los sistemas numricos binario, octal y hexadeci-

    mal. Definir lo que es Software y lo que es Hardware. Saber como se encuentra organizada una computadora. Clasificar el software en software de aplicacin y software de sistema . Definir y analizar las diferentes categoras de lenguajes de programacin. Distinguir entre lo que es un intrprete y lo que es un compilador. Saber cual es el proceso que se requiere para obtener un programa ejecutable. Definir los objetivos bsicos de la Ingeniera de Software. Definir los principios de la Ingeniera de Software. Realizar diseos bsicos de clases y objetos.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-4

    TERMINOLOGA BSICA EN COMPUTACIN Uno de los aspectos importantes para aprender una nueva disciplina es conocer su terminologa. En particular la terminologa asociada con las computadoras se ha extend ido tanto que es difcil hablar de ellas si se desconoce la que se utiliza en este entorno. UNIDADES DE MEDIDA EN COMPUTACIN Gran parte de la terminologa usada en computacin involucra medidas para com-parar distintos aspectos de la computadora. Habitualmente, tienen que ver con la capacidad de algunos aspectos de la computadora o con la velocidad de la misma. Para medir la velo-cidad, es usual utilizar el tiempo que tarda en hacer alguna operacin. En estos casos, las unidades de medida son milsimas, millonsimas, milmillonsimas y billonsima de se-gundo. La tabla 2.1 muestra las medidas usadas ms frecuentemente. Las computadoras actuales hacen la mayora de las operaciones aritmticas en nanosegundos, aunque se ha logrado que se realicen en picosegundos.

    Tabla 2.1. Unidades utilizadas para medir la velocidad de una computadora

    Prefijo Smbolo Fraccin de segundo Picosegundos ps 10 -12 Nanosegundos ns 10 -9 Microsegundos mms 10 -6 Milisegundos ms 10 -3

    Otra unidad de medida que se usa a menudo es la que se conoce con el nombre de frecuencia del reloj. La frecuencia del reloj define el nmero de operaciones que la com-putadora puede realizar en un segundo y se expresa en ciclos por segundo o hertzios. Por ejemplo, una computadora con una frecuencia de reloj de 2,200,000,000 hertzios, hace algo cada 0.45 ns (es decir, cada 1/2,200,000,000). En la tabla 2.2, se muestran los prefijos utilizados, los cuales provienen del sistema mtrico decimal. En el ejemplo anterior, se de-bera escribir 2.2 Ghz (2.2 Gigahertzios). Cuanto ms rpido sea el reloj, ms rpida ser la computadora.

    Tabla 2.2. Potencias de 10 usadas frecuentemente y sus abreviaturas

    Prefijo Smbolo Significado Kilo K 10 +3

    Mega M 10 +6 Giga G 10 +9 Tera T 10 +12

    Para medir la capacidad de una computadora, se utilizan potencias de dos en vez de potencias de diez. Este sistema es el adecuado, porque las computadoras digitales usan el sistema numrico binario. La tabla 2.3 muestra las potencias de 2 que se usan de forma ms frecuente. Como se ve en la tabla, la abreviatura para 210 es K, donde K viene de kilo. El prefijo kilo se usa porque 1,024 est cercano a 1000. De igual forma, se usa mega para 220, porque su valor es cercano a 1,000,000. Cuando estas unidades se usan para expresar capacidad de almacenamiento en una computadora, se refieren siempre a los valores poten-

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-5

    cia de 2. Por ejemplo, una computadora que tiene 10 megabytes de memoria tiene 10 * 220 bytes, o 10,048,576 bytes, de memoria.

    Tabla 2.3. Potencias de 2 usadas frecuentemente y sus abreviaturas

    Prefijo Smbolo Significado Kilo K 2 +10 = 1,024

    Mega M 2 +20 = 1,048,576 Giga G 2 +30 = 1,073,741,824 Tera T 2 +40 = 1.099.511,627,776

    SISTEMAS NUMRICOS Los mismos principios del sistema decimal son vlidos en el sistema binario. Am-bos son sistemas numricos posicionales, es decir, sistemas en los que la posicin de cada dgito indica su valor relativo. Por ejemplo, en el nmero decimal 7,537, el 7 est en el lu-gar de los millares e indica un valor de 7000. Leyendo el nmero desde la derecha, cada dgito representa un una potencia del 10, comenzando con 100, e incrementando el expo-nente de uno en uno. As, el valor de 7,537 puede expresarse como: 7 * 103 + 5 * 102 + 3 * 101 + 7 * 100,

    En el sistema binario, las cosas se dan de igual manera, salvo que las potencias son del 2. Por ejemplo, el nmero binario 1010 representa el valor, 1 * 23 + 0 * 22 + 1 * 21 + 0 * 20 , decimal 10 (8 + 0 + 2 + 0). Para indicar que un nmero est en una base distinta a la deci-mal, es costumbre escribir la base como un subndice al final de dicho nmero. As, 1010102 es la representacin binaria del valor decimal 42, mientras 1011 representa el valor decimal 1,011. A los dgitos de un nmero en binario se les llama bits (de dgito binario en ingls: binary digit). Escribir nmeros binarios, aunque no sean muy grandes, suele ser tedioso, por lo que los bits de un nmero binario se agrupan hacindolos corresponder con una raz mayor (que, por supuesto, ser potencia de 2). Agrupar los bits de tres en tres empezando por la derecha da una representacin en base 8 u octal ( 23 = 8 ). As el nmero 101010102 agrupado de tres en tres conduce a (10)(101)(010)2 que convirtindolos a dgitos octales nos da: 102 = 2 1012 = 5 0102 = 2

    que es el nmero 2528. Este valor puede convertirse a decimal de la misma forma que se convierte un nmero a binario o un nmero decimal. La diferencia es que se usan potencia de 8. El nmero 2528 es: 2 * 82 + 5 * 81 + 2 * 80 que es el valor decimal 170. Para convertir un nmero decimal a su equivalente octal, se puede pensar en un n-mero arbitrario en octal, digamos: s ... wxyz, que denota: s * 8n 1+ ... w * 83 + x * 82 + y * 81 + z * 8 0 o s * 8n 1 + ... w * 512 + x * 64 + y * 8 + z * 1

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-6

    Ahora dividamos el nmero entre 8 para determinar el nmero de ochos que hay en l. El residuo es el valor de z. El valor de y se calcula dividiendo el cociente de la operacin anterior entre 8, que da el nmero de 64s en el valor. El residuo es el valor de y. El proceso se contina hasta que el nmero que se divide es menor que 8.

    Para dar un ejemplo, calculemos las representaciones octal y binaria del nmero de-cimal 756. El clculo se efecta de la siguiente manera:

    756 / 8 = 94 con residuo 4 94 / 8 = 11 con residuo 6 11 / 8 = 1 con residuo 3

    Por lo tanto, la representacin octal de 75610 es 13648. La representacin binaria se obtiene expandiendo cada dgito octal a su equivalente binario, de la siguiente manera:

    1 001 3 011 6 110 4 100

    que nos da el nmero binario 0010111101002. La unidad estndar de almacenamiento en la mayora de las computadoras es de 8 bits. Una agrupacin de 8 bits se conoce con el nombre de byte. Debido a que el sistema octal junta los bits en grupos de 3, y 3 no divide de forma exacta a 8, se usa ms frecuente-mente la base 16. El sistema numrico con base 16 se denomina sistema hexadecimal. En el sistema hexadecimal, los bits se agrupan en conjuntos de cuatro. As, hay dos grupos hexadecimales por byte. Si se toma la representacin binaria de 9810 y se dividen los bits en grupos de cuatro empezando por la derecha, se obtiene (110) (0010)2, que es 6216. Como prueba que se estn convirtiendo los nmeros correctamente, se puede volver a convertir el nmero decimal. Se usa el mismo proceso que se us para convertir un nmero octal o bi-nario a decimal, excepto, por supuesto, que la base es 16. El nmero 6216 es: 6 161 + 2 160 = 96 + 2 = 98, valor correcto. Puesto que un dgito hexadecimal puede tener hasta 16 valores, se necesitan smbo-los extra para representar los dgitos mayores que 9. El convenio es usar las le tras de la A a la F para representar los dgitos del 10 al 15. Teniendo esto en cuenta, la representacin hexadecimal de 756 es 2F416, que se ha obtenido escribiendo el equivalente binario de cada dgito octal y dividiendo los bits en grupos de cuatro, empezando por la derecha, segn se muestra a cont inuacin: 2 = 00102 15 = F 11112 4 = 01002 OPERACIONES ARITMTICAS

    Realizar operaciones aritmticas con nmeros positivos binarios es lo mismo que hacerlas con los nmeros decimales. En la figura 2.1 se muestran ejemplos de sumas y multiplicaciones. Para la suma, los dgitos binarios se suman empezando por la derecha.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-7

    Cuando la suma de dos dgitos es mayor que 1, se propaga un acarreo a la columna siguien-te. Para la multiplicacin, el multiplicando se multiplica por los dgitos del multiplicador empezando por la derecha. En el sistema binario, la multiplicacin es particularmente sen-cilla, porque se multiplica por cero o por uno. El ltimo paso es sumar todos los productos parciales para obtener el producto final.

    Suma binaria Suma decimal equivalente 00011 3 +01101 +13 10000 16 Multiplicacin binaria Multiplicacin decimal equivalente 0110 6 0111 7 0110 42 0110 0110 0000 0101010

    Figura 2.1. Suma y multiplicacin binarias Veremos a continuacin como representar los nmeros negativos. Todas las compu-tadoras usan un nmero fijo de dgitos binarios para representar un valor. Esta unidad bsi-ca de almacenamiento se denomina habitualmente palabra. Para mantener las cosas senc i-llas, supondremos que se trabaja con una computadora con palabra de 8 bits. Basndonos en lo que ya sabemos, est claro que los nmeros no negativos de 0 a 255 (28 1) se pueden representar en esta unidad de almacenamiento. Sin embargo, si se quiere representar nmeros negativos y ser capaz de hacer substracciones, hay que sacrifi-car el dgito ms significativo. La mayora de las computadoras modernas usan un sistema de representacin de enteros conocidos como complemento a dos. Con el sistema de complemento a dos, los nmeros no negativos (es decir, nmeros positivos y cero ) son representados como se dijo anteriormente. Sin embargo, los nmeros negativos se representan de forma muy distinta. Para una mquina con una palabra de n bits, la representacin en complemento a dos de N es 2n N expresado en binario. Para verlo de forma concreta, hagamos un ejemplo. De nuevo se asume que la lon-gitud de la palabra es de 8 bits. La representacin en complemento a dos de 5 es 00000101. La representacin en complemento a dos de -5 es la representacin binaria de 28 - 5 o 251. La representacin binaria de 251 es 11111011. Por lo tanto, la representacin en comple-mento a dos de -5 es 11111011.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-8

    Una forma sencilla de obtener la representacin en complemento a dos de un nme-ro entero negativo es seguir los siguientes pasos:

    Paso 1 . Escribir la representacin en complemento a dos del entero positivo. Paso 2 . Complementar a 1 cada bit (cambiar cada 1 por 0 y cada 0 por 1). Paso 3 . Aadir 1 al nmero complementado. Para ver un ejemplo, elijamos el nmero -13210 Paso 1 . 10000100 (132 en ocho dgitos binarios). Paso 2 . 01111011 (su complemento a 1). Paso 3 . 01111100 (aadir 1 al complemento).

    Por lo tanto, la representacin en complemento a dos de -13210 es 01111100. La prueba se hace verificando que la suma de las representaciones binarias de 132 y -132 es 0. La suma es:

    1000 0100 + 0111 1100

    100000000

    Fjese en el bit de acarreo a partir del bit en la posicin ms significativa. Cuando se efectan operaciones aritmticas en las que los nmeros se representen en complemento a dos, el acarreo del bit ms significativo se descarta. As la suma es 0. De los ejemplos anteriores, se puede deducir que en el sistema de complemento a dos el bit ms significativo de la palabra sirve como bit de signo. Un uno en la posicin ms significativa indica un valor negativo y un cero indica un valor positivo. El rango de valores que se puede representar con 8 bits es -128 a 127. En general, el rango de valores que puede ser representado en complemento a dos usando una palabra de n bits es -2n-1 a 2n-1- 1. El complemento a dos es importante porque proporciona a la computadora una for-ma de ejecutar restas sin necesidad de equipo especial. Para calcular la diferencia entre dos nmeros binarios, x e y, se genera el complemento a dos de y y se suma a x. El resultado es la diferencia de x y.

    ORGANIZACIN DE UNA COMPUTADORA

    Una computadora es un dispositivo capaz de efectuar clculos y tomar decisiones lgicas a velocidades miles de millones de veces ms rpidas que un ser humano. Por ejemplo, las computadoras personales actuales pueden llevar a cabo cien millones de sumas por segundo. Una persona con una calculadora de escritorio podra tardar dcadas antes de terminar la misma cantidad de clculos que una computadora personal puede hacer en un segundo.

    EXAMEN BREVE 2-1

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-9

    Las computadoras procesan datos que son controlados por conjuntos de instruccio-nes llamados programas de cmputo. Dichos programas guan a la computadora a travs de conjuntos ordenados de acciones especificados por personas llamadas programadores de computadoras.

    Los distintos dispositivos (como teclado, pantalla, ratn, discos, memoria, CD-

    ROM y unidades de procesamiento) que forman un sistema de cmputo se dice que son el hardware del sistema. Los programas que se ejecutan en la computadora se llaman softwa-re. El costo del hardware ha cado de manera impresionante durante los ltimos aos, hasta el punto en que las computadoras personales se han vuelto un dispositivo comn en los hogares. Por otro lado, los costos de desarrollo del software han aumentado de manera constante a medida que se desarrollan aplicaciones cada vez ms poderosas y complejas, sin que haya sido posible mejorar, en la misma proporcin que el hardware, la tecnologa de desarrollo del software. En estas lecciones aprender mtodos probados que pueden re-ducir los costos de desarrollo del software: programacin estructurada, refinamiento des-cendente paso a paso, funcionalizacin y programacin orientada a objetos.

    Sin importar las diferencias fsicas, prcticamente todas las computadoras pueden dividirse en seis unidades o secciones, que son:

    1. Unidad de entrada. Esta es la seccin receptora de la computadora. Obtiene informa-

    cin (datos y programas) de varios dispositivos de entrada y la pone a disposicin de las dems unidades para poder procesarla. Dos dispositivos de entrada de uso frecuente son el teclado y el ratn. A medida que se pulsan las teclas en el teclado, el sistema operativo lee las pulsaciones y las interpreta apropiadamente. El ratn es tambin un dispositivo de entrada muy til. Un ratn tpico tiene dos o tres botones y una pequea bola en la parte de abajo que permite que el ratn se mueva. A medida que se mueve el ratn, el puntero de la pantalla se mueve de acuerdo con el ratn. El puntero de la pan-talla se denomina cursor . Moviendo el ratn de forma que el cursor apunte a una zona determinada de la pantalla (por ejemplo a un men que ha sido pintado por la aplica-cin) y pulsando un botn del ratn, se puede enviar una seal a la comp utadora para realizar el mandato indicado en el elemento del men seleccionado. Usar mens y bo-tones para dar rdenes a la computadora es mucho ms sencillo que tener que teclear mandatos complicados que deben ser memorizados.

    Otros dispositivos de entrada son los escneres para imagen, entrada de voz y lpices

    pticos, CD-ROM. Tal vez en el futuro, la mayor parte de la informacin se introduzca hablndole a la computadora y explorando imgenes.

    2. Unidad de salida. Esta es la seccin de embarque de la computadora. Toma la informa-

    cin que ha procesado la computadora y la pone en varios dispositivos de salida, dejn-dola disponible para que sea utilizada fuera de ella. Actualmente, la mayor parte de la salida de informacin de las computadoras se presenta en pantalla, en las impresoras lser y de chorro o inyeccin de tinta (para informacin impresa) y trazadores (para imprimir informacin grfica) y altavoces (para sonido).

    Un dispositivo muy importante de salida en una computadora personal es la pantalla de

    video o monitor. El monitor, a veces denominado CRT (por Cathodic Ray Tube) o tubo de rayos catdicos, opera de forma similar a un televisor. Es controlado por un disposi-tivo de salida, denominado tarjeta grfica. La tarjeta grfica enva los datos a mostrar al monitor en un formato que el monitor puede manejar. Caractersticas importantes del monitor y de la tarjeta grfica son la frecuencia de refresco, la resolucin y el nmero

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-10

    de colores que soporta. La frecuencia de refresco indica lo rpido que la tarjeta grfica actualiza las imgenes en la pantalla. Este proceso debe hacerse de forma peridica porque el fsforo usado en el tubo de imagen debe ser recargado con energa, de lo con-trario, se desvanece. Una tasa de refresco baja, como 60 Khz., puede causar fatiga vi-sual debido a fluctuaciones imperceptibles de la imagen. Se puede detectar estas fluc-tuaciones mirando a la pantalla con el rabillo del ojo. Muchas tarjetas grficas pueden refrescar la pantalla con frecuencias de entre 70 y 100 Khz. Esta frecuencia elimina la fluctuacin y la subsiguiente fatiga del ojo.

    La resolucin indica cuntos puntos por pulgada se pueden pintar a lo largo y ancho de

    la pantalla. Un punto, en este contexto, se denomina a menudo pxel , que viene de pic-ture element . Una resolucin estndar soportada por tarjetas grficas que son compati-bles (VGA por Video Graphic Array) es 640 por 480; hay 600 pxeles a lo largo de la pantalla y 480 pixeles en vertical. La tarjeta grfica almacena la informacin a pintar en cada pxel en su propia memoria. De esta forma, puede refrescar la pantalla de forma constante sin interrumpir las operaciones de la CPU. La CPU y la tarjeta grfica slo necesitan comunicarse cuando la informacin a pintar cambia. Las tarjetas grficas que pueden trabajar en alta resolucin necesitan ms memoria. Por ejemplo, muchas tarjetas grficas soportan resoluciones que van desde 800 por 600 hasta 1200 por 1024. Dichas tarjetas neces itan 1 M o 2 M de memoria.

    Relacionado con la cantidad de memoria y la resolucin est el nmero de colores que

    pueden ser representados. La tarjeta grfica debe almacenar informacin del color a pintar en cada pixel de la pantalla. Para mostrar 256 colores (es decir, 28) se necesita un byte por cada pixel. Para representar color real, que denomina a un conjunto de 16.7 millones de colores, se necesitan 24 bits por pixel. Por lo tanto, se puede ver que el n-mero de colores que pueden representarse y la resolucin est relacionados con la can-tidad de memoria de la tarjeta. Ms memoria significa mayor resolucin o ms colores. En la mayora de las tarjetas grficas es posible intercambiar colores por resolucin. Por ejemplo, con una resolucin de 800 por 600 se puede usar colores reales, pero con una resolucin mayor, digamos 1024 por 768, se pueden mostrar solo 65,536 colores.

    3. Unidad de memoria. Esta es la seccin de almacn de acceso directo y capacidad rela-

    tivamente baja de la computadora. Retiene la informacin (datos y programas) que se ha introducido a travs de la unidad de entrada, de modo que queda a disponibilidad inmediata para que se procese cuando sea necesario. La unidad de memoria tambin re-tiene la informacin procesada hasta que la unidad de salida la pueda colocar en los dispositivos de salida. La unidad de memoria se conoce comnmente como memoria, memoria primaria, memoria central o memoria principal. En la mayora de las com-putadoras construidas actualmente, la memoria principal est organizada en una serie de posiciones, cada una de las cuales contiene 8 bits, o un byte, de informacin. Una propiedad importante de la memoria principal es que se puede acceder a cualquier po-sicin, o byte, en un tiempo mximo. Por esta razn, la memoria principal se conoce tambin como memoria de acceso directo o aleatorio, o RAM (por Random Access Memory). Esta propiedad contrasta con el acceso a una cinta magntica, donde para ac-ceder a la informacin en medio de la cinta hay que avanzar la cinta hasta el lugar ade-cuado. Por lo tanto, el tiempo de acceso a la informacin depende del lugar en que se encuentre. Este tipo de memoria se denomina memoria de acceso secuencial.

    Dos caractersticas importantes de la memoria principal son su tamao y su velocidad.

    El tamao de la memoria principal se mide en trminos del nmero de bytes que con-tiene. En una computadora personal, la memoria principal vara desde 16 megatytes hasta 640 Mb. La velocidad de la memoria principal se mide en funcin del tiempo que se necesita para leer informacin de una posicin en particular. Las velocidades t-picas de una computadora personal varan entre 60 y 120 nanosegundos.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-11

    En la mayora de las memorias de acceso aleatorio, los contenidos se pierden cuando se apaga la computadora. Por esta razn se le llama memoria voltil. Se necesita algn tipo de memoria que no pierda sus contenidos cuando se apaga la computadora. Con-secuentemente, adems de la RAM, la mayora de las computadoras tienen memoria de slo lectura, o ROM (por Read Only Memory). Este tipo de memoria no es voltil, por lo que la informacin almacenada en ella permanece aunque se apague la comp u-tadora. Los contenidos de la memoria ROM se configuran cuando se fabrica la comp u-tadora. Despus del montaje, la ROM no puede ser escrita, slo leda. De ah el nom-bre de memoria de slo lectura. Esta memoria, a veces denominada ROM BIOS (por Basic Input/Ouput Subroutines), contiene informacin que identifica el tipo de com-putadora y las instrucciones que arrancan la computadora cuando se acciona el inter-ruptor de corriente elctrica. El proceso de encendido de la computadora y de ejecu-cin del programa de la BIOS se denomina carga de la mquina o carga del sistema .

    4. ALU (Unidad aritmtica y lgica), Esta es la seccin de manufactura de la computa-

    dora. Es la responsable de efectuar clculos como sumar, restar, multiplicar y dividir. Contiene los mecanismos de la toma de decisiones que le permiten a la computadora, por ejemplo, comparar dos elementos de la unidad de memoria y determinar si son iguales.

    5. CPU (Unidad central de procesamiento). Se trata de la seccin administrativa . Es la

    coordinadora de la computadora y la responsable de supervisar la operacin de otras secciones. La CPU le indica a la unidad de entrada cundo debe leer informacin y de-jarla en la unidad de memoria; a la ALU cundo debe emplearse informacin de la uni-dad de memoria para efectuar clculos; y a la unidad de salida cundo enviar informa-cin de la unidad de memoria a ciertos dispositivos de salida. En las mquinas actuales los conmutadores se hacen con transistores ultra pequeos. Como consecuencia, una computadora completa cabe en un chip de silicio, que suele denominarse microproce-sador. El microprocesador Pentium Intel contiene cerca de 3,000,000 de transistores en un rea poco mayor que una pulgada cuadrada. El sucesor del Pentium, el Pentium Pro, tiene casi 5,500,000 transistores.

    6. Unidades de almacenamiento secundario. Esta es la seccin de almacenamiento de

    largo plazo y alta capacidad de la computadora. Los programas y datos que las dems unidades no estn utilizando, normalmente se almacenan en dispositivos de almacena-miento secundario (como discos) hasta que se vuelven a necesitar, tal vez horas, das, meses o, incluso, aos despus. El acceso a la informacin en almacenamiento secunda-rio tarda mucho ms que la que se encuentra en memoria primaria. Por lo que el costo por unidad de almacenamiento secundario es mucho menor que el costo por unidad de memoria primaria.

    Algunos dispositivos pueden manejar entrada y salida de datos y se denominan

    habitualmente dispositivos de entrada/salida. La mayor parte de los dispositivos de entra-da/salida se basan en algn tipo de tecnologa de grabacin magntica. Dispositivos tpicos de entrada/salida son las unidades de disquete, discos duros o fijos y unidades de cinta magntica. Las unidades de disquete escriben y leen discos pequeos extrables. Las unida-des de disquetes actuales contienen 1.44 megabytes de datos. Muchas mquinas tienen ac-tualmente unidades de discos Zip. Estos discos extrables pueden almacenar hasta 256 me-gabytes de informacin. Los discos fijos tienen una capacidad mucho mayor que los discos extrables, tales como los disquetes o las unidades Zip. Un disco duro tpico puede almace-nar entra 4 y 120 gigabytes de informacin. El disco de una unidad de disco duro no puede ser extrado, ya que est insertado en un contenedor cerrado al vaco para evitar que el pol-vo y otras partculas extraas interfieran con la lectura y la escritura de informacin.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-12

    Un disco debe formatearse antes de usarlo. La operacin de formateo escribe in-formacin en el disco para que los datos puedan ser escritos y ledos de forma eficiente. El proceso de formatear un disco es anlogo al proceso de dibujar lneas en un estacionamien-to y numerar sus lugares. Permite que la informacin pueda ser almacenada (estacionada) y recuperada (encontrar su coche sin tener que dar vueltas por el estacionamiento) de forma eficiente. Esto explica por qu un disco tiene menos espacio libre dentro despus de que ha sido formateado: las lneas y los nmeros ocupan espacio (por su analoga con el estacio-namiento). Dos caractersticas importantes de la CPU son el tamao de los nmeros que mane-ja y la velocidad que tarda en ejecutar una operacin aritmtica.

    El tamao de los nmeros que puede manejar una CPU se expresa habitualmente

    como el nmero de bits del entero ms grande que la CPU puede manipular. Hace unos pocos aos, el entero ms grande que poda manejar una mquina tpica era de 32 bits. Ac-tualmente, hay CPU capaces de manejar enteros de 64 bits. Un entero de n bits puede re-presentar los valores decimales comprendidos entre 0 y 2n 1. Por ejemplo, en una mqui-na con enteros de 8 bits, el mayor entero representable es 28 1 o 255.

    La velocidad a la cual una CPU puede ejecutar una operacin aritmtica se especifi-

    ca a menudo por el tiempo que lleva sumar dos enteros. Las computadoras construidas en la dcada de 1940 podan sumar nmeros de 32 bits entre 150 y 200 microsegundos. Una computadora actual tpica puede sumar nmeros de 32 bits entre 2 y 4 nanosegundos.

    Adems de la ALU, una CPU contiene una unidad de control. La unidad de control es responsable de leer instrucciones de la memoria y ejecutar

    la accin especificada por la instruccin (por ejemplo, una suma o una resta). Realizar la accin especificada por la instruccin se denomina ejecutar la instruccin, y las instruc-ciones en memoria se conocen como programa. La unidad de control repite los pasos de lectura y ejecucin de instrucciones continuamente. Este proceso, denominado ciclo de lectura/ejecucin, se ilustra en la figura 2.2.

    Para seguir la pista de la instruccin a leer y ejecutar a continuacin, la unidad de

    control maneja un contador de programa. El contador de programa almacena la direccin de memoria de la prxima instruccin a leer y ejecutar. En la mayora de los casos, el con-tador de programa recorre el programa secuencialmente. Es decir, las instrucciones son ledas y ejecutadas en el orden en que estn almacenadas en memoria. Sin embargo, si slo se pudiesen ejecutar instrucciones de forma secuencial, el uso de la computadora sera muy limitada. La unidad de control puede comprobar los datos ledos en la memoria y cambiar el contador de programa basndose en los resultados de la comprobacin. Esta habilidad capacita a la CPU para decidir las acciones a tomar basndose en los datos que estn siendo procesados. Esta toma de decisiones es fundamental para todos los dispositivos de compu-tacin.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-13

    Figura 2.2. Ciclo de lectura/ejecucin de una computadora

    SOFTWARE

    Estableciendo una analoga entre el equipo de cmputo (hardware) y un automvil, el software correspondera al conductor del automvil. Sin el conductor, no pasa nada. En otras palabras, el equipo de cmputo por si mismo no puede hacer nada. El equipo requiere el software que proporcione instrucciones paso a paso para decirle al sistema qu hacer.

    Resulta verdaderamente dramtico el uso actual de las computadoras con respecto al

    que se haca tan solo hace quince aos. Ciertamente, parte de la razn de este crecimiento es la dramtica reduccin del precio de una computadora. Otra razn ha sido el desarrollo de software til y de gran calidad, que ha simplificado el uso de las computadoras. El soft-ware puede clasificarse en: software de aplicacin y software de sistemas. La distincin entre ambos puede ser a veces difcil, pero generalmente, el software de aplicacin sirve para resolver un problema o proporcionar un servicio, en un dominio de problema o rea en particular. Obviamente, el abanico de aplicaciones es muy grande y crece rpidamente. Las computadoras personales han favorecido el desarrollo de nuevas reas de aplicacin:

    Edicin electrnica (DTP por DeskTop Publishing). Hojas de clculo. Gestores de informacin personal (PIM por Personal Information Managers). Gestores de finanzas personales (PFM por Personal Financial Managers). Gestores de presentacin (PM por Presentation Managers).

    SOFTWARE DE APLICACIN Aunque es cierto que todo el mundo usa los servicios que proporciona el software de sistemas, son las aplicaciones las que hacen de la computadora una herramienta indis-

    EXAMEN BREVE 2-2

    Leer la instruccin a la que apunta el contador del programa

    Actualizar el contador del programa para apuntar a la siguiente instruccin

    Ejecutar la instruccin actual

    Contador del programa

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-14

    pensable para la mayora de la gente. El software de aplicacin puede clasificarse de acuer-do al tipo de aplicacin:

    1. Una categora son los procesadores de texto, que son programas que ayudan a producir documentos. Algunos procesadores de texto populares son WordPerfect, Microsoft Word y AmiPro. Estos programas simplifican la edicin y son capaces de imprimir los documentos en impresoras de alta resolucin. Con los aos, la potencia de estos proce-sadores de texto ha crecido tremendamente. Los primeros procesadores de texto tenan correctores de ortografa, pero eso era todo. Las versiones actuales incluyen correctores gramaticales, diccionarios, herramientas de dibujo y de creacin de tablas, capacidad de crear documentos Web y cientos de otras caractersticas para facilitar la creacin de do-cumentos.

    2. Muy cercano a los procesadores de texto estn los programas de autoedicin (DTP por

    Desktop Publishing Programas). Estos programas incluyen facilidades para disear do-cumentos. Por ejemplo, tienen herramientas para crear formatos para boletines e infor-mes de una compaa. Estos programas de aplicacin permiten importar textos y foto-grafas de otras fuentes. Comparndolos con los procesadores de texto, los DTP tienen caractersticas ms sofisticadas para manejar grficos, colores y documentos grandes, como libros.

    3. Otra clase de aplicaciones muy populares son las hojas de clculo . Algunos piensan

    que fue la invencin de la hoja de clculo electrnica la que ayud a empezar la revolu-cin de la computacin personal. Las hojas de clculo proporcionan un medio sencillo y natural para tratar una amplia variedad de problemas. Las operaciones de contabilidad usan hojas de clculo extensivamente porque proporcionan una forma sencilla de hacer previsiones. Por ejemplo, simplemente cambiando unos pocos nmeros, la gente de ne-gocios puede conocer el efecto de una reduccin de ventas sobre la ganancia total. La mayora de las hojas de clculo actuales tienen herramientas para hacer representacin grfica de los datos usando distintos tipos de diagramas de lneas, barras o de pastel. El usuario selecciona los datos que quiere ver grficamente, y el tipo de grfico a usar, y la hoja de clculo produce de forma automtica un grfico usando los colores, claves y le-yendas adecuadas.

    4. Otro tipo de programacin de aplicacin, los gestores de informacin personal (PIM

    por Personal Information Manager), permiten a las personas organizar la informacin personal que es importante. Estos programas suelen incluir mdulos de agenda, para almacenas las cosas a hacer, las citas y las direcciones de telfono.

    5. Por otra parte, los gestores de finanzas personales (PFM por Personal Financial Ma-

    nager) permiten manejar informacin financiera personal. Los paquetes tpicos inclu-yen mdulos para mantener informacin de cuentas bancarias y cheques, presupuestos mensuales, estimacin de impuestos, valor de las pertenencias personales y carteras de bonos y acciones. Una posibilidad nueva de estas aplicaciones es la de conectarse en tiempo real a servidores bancarios o de bolsa y obtener los cargos que han hecho sus tarjetas de crdito o los precios de sus acciones. Estas caractersticas eliminan la tarea de introduccin manual de los valores al programa. A medida que se incrementa la po-tencia de las computadoras, se espera que aparezcan nuevos tipos de aplicaciones y me-joras en las caractersticas de las existentes.

    EL SOFTWARE DEL SISTEMA

    El software de sistema, por otro lado, sirve como base para el desarrollo y ejecucin

    de otros programas. En cierto sentido, el software de sistema sirve de puente entre el soft-

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-15

    ware de aplicacin y el hardware subyacente. Su objetivo es aislar al programador de los detalles de bajo nivel de la mquina y as incrementar la productividad. Esta visin de la organizacin de un sistema de computacin se ilustra en la figura 2.3.

    Figura 2.3. Visin de la organizacin de un sistema de computacin Los diferentes pasos (acciones) de un algoritmo se expresan en los programas co-mo instrucciones, sentencias o proposiciones (normalmente el trmino instruccin se suele referir a los lenguajes de mquina y bajo nivel, reservando la sentencia o proposicin para los lenguajes de alto nivel). Por consiguiente un programa consta de una secuencia de ins-trucciones, cada una de las cuales especifica ciertas operaciones que debe ejecutar la com-putadora.

    Las instrucciones se escriben en un lenguaje que est especficamente diseado para dar rdenes a una computadora. Estos lenguajes se denominan lenguajes de programacin. En general, los lenguajes de computadora pueden ser agrupados dentro de tres categoras principales:

    Lenguaje de mquina . Lenguaje ensamblador. Lenguaje de alto nivel.

    La elaboracin de un programa requerir conocer el juego de instrucciones del len-guaje. Las instrucciones bsicas y comunes a casi todos los lenguajes de programacin se pueden resumir en cuatro grupos:

    Instrucciones de entrada/ salida . Son instrucciones de transferencia de informacin y datos entre dispositivos perifricos (teclado, impresora, unidad de disco, etc.) y la me-moria principal.

    Nivel de programa de aplicacin

    Nivel del software de sistema

    Nivel del hardware

    Excel Word

    WordPerfect

    Borland

    Access

    Usuario 1 Usuario 2

    Usuario 3

    Usuario 4

    Usuario 6

    Usuario 5

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-16

    Instrucciones aritmticas y lgicas. Son instrucciones que ejecutan operaciones arit-mticas (suma, resta, multiplicacin, divisin, potenciacin), lgicas (operaciones and, or, not, etc.).

    Instrucciones selectivas. Son instrucciones que permiten la seleccin de tareas alterna-tivas en funcin de los resultados de diferentes expresiones condicionales.

    Instrucciones repetitivas. Son instrucciones que permiten la repeticin de secuencias de instrucciones un nmero determinado de veces.

    LENGUAJE DE MAQUINA Todos los componentes del equipo en un sistema de cmputo (hardware), incluyen-do la unidad central de procesamiento o CPU, por sus siglas en ingls, operan utilizando un lenguaje binario hecho de unos y ceros. La CPU no entiende ningn otro lenguaje. Cuando se disea una computadora, la CPU se construye de tal manera que interprete un conjunto de instrucciones bsicas determinadas por el fabricante. Cada una de stas tiene un cdigo binario nico que puede ser traducido directamente por la CPU. Este cdigo se denomina cdigo de mquina, y al conjunto de las instrucciones del cdigo de mquina se le conoce con el nombre de lenguaje de mquina. Un programa en lenguaje de mquina puede ser comprendido directamente por la computadora. Un lenguaje de mquina est formado por instrucciones que representan las operaciones fundamentales de la computado-ra. En consecuencia, distintos tipos de computadoras usan lenguajes de mquina diferentes. Por ejemplo, el lenguaje de mquina que entiende una Pentium de Intel es bastante distinto del lenguaje de mquina que comprende un procesador PowerPC de IBM. Parte del diseo de una computadora es determinar las operaciones fundamentales que puede llevar a cabo y la codificacin binaria de esas instrucciones. La codificacin binaria es el patrn de bits que representa una instruccin en particular. Las operaciones y su codificacin binaria se denominan juego de instrucciones. En la figura 2.4(a) se muestra un programa tpico en lenguaje de mquina. Para escribir tal programa, debe determinarse la operacin que se va a realizar y despus traducir la operacin al cdigo de mquina binario requerido, a partir de una lista de cdigos de mquina de la serie de instrucciones proporcionados por el fabricante de la CPU. Como puede imaginar, esto es un proceso extremadamente ineficiente. Se consume tiempo, es tedioso y sujeto a una tremenda cantidad de errores. Adems, operaciones simples como la multiplicacin y divisin, a menudo requieren varias lneas en cdigo de mquina. Por esta razn, la programacin en lenguaje de mquina se usa en raras ocasiones. Sin embargo, an los programas en lenguaje de alto nivel se traducen a lenguaje de mquina para permitirle a la CPU ejecutar las instrucciones del programa.

    01001100 mov bx, valor copiado x = 2; 11101001 mov ax, [bx] if(x

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-17

    Incluso en las computadoras actuales, el lenguaje de mquina es bastante primitivo, y escribir un programa directamente en lenguaje de mquina es tedioso. Para empeorar las cosas, sin ningn tipo de asistencia se debe usar directamente la codificacin binaria de las instrucciones.

    Ventajas de programar en lenguaje de mquina: Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traduccin

    posterior, lo que supone una velocidad de ejecucin superior a cualquier otro lenguaje de programacin.

    Desventajas de programar en lenguaje de mquina:

    Dificultad y lentitud en la codificacin. Poca fiabilidad. Dificultad grande de verificar y poner a punto los programas. Los programas solo son ejecutables en el mismo procesador.

    Para tener una idea de las dificultades de escribir programas en lenguaje de mqui-

    na, desarrollaremos a continuacin un programa para una computadora hipottica que con-tiene tan solo 8 instrucciones (ver tabla 2.4). Esta computadora hipottica ha sido diseada para su uso en mquinas despachado-ras de refrescos. Tiene un juego de instrucciones muy sencillo. Una instruccin para esta computadora tiene 7 bits. Los tres primeros indican la operacin a realizar. Estos bits se denominan cdigo de operacin, o cdigoop abreviado. Los cuatro bits restantes se usan nicamente en instrucciones de salto para especificar la posicin de memoria en donde leer la siguiente instruccin. Observe que debido a que slo hay 4 bits para la direccin, podr especificar 16 direcciones de memoria como mximo.

    Tabla 2.4 . Juego de instrucciones de una computadora hipottica despachadora de refrescos.

    Descripcin de la instruccin Codificacin binaria Reiniciar la mquina 000 0000 Esperar por una moneda 001 0000 Saltar la siguiente instruccin si la moneda no es falsa 010 0000 Aadir moneda al total 011 0000 Saltar la siguiente instruccin si total es menor que el costo de una lata de refresco

    100 0000

    Tomar foto y llamar a la polica 101 0000 Saltar a la posicin especificada 110 dddd Dar una lata de refresco y devolver el cambio si hay 111 0000 Consideremos la instruccin de salto. Su codificacin es:

    110 dddd

    el espacio entre las dos partes de la instruccin binaria separa el cdigo de operacin de la direccin. Este convenio es slo para nuestra conveniencia. El patrn de bits 110 se inter-pretar por la computadora como la orden de ejecucin de una instruccin de salto. Se usa la notacin dddd de los siguientes 4 bits para indicar que estos bits son una direccin.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-18

    Cuando la computadora hipottica ejecuta una instruccin de salto, los 4 bits que especifi-can la direccin se mueven al contador de programa (vase la figura 2.2). Como conse-cuencia, se lee la siguiente instruccin de esa posicin de memoria.

    Dada la informacin anterior, se desea escribir un programa en lenguaje de m-quina de la computadora hipottica que d una lata de refresco y el cambio cuando se haya depositado suficiente dinero. Puesto que ha habido muchos problemas con la gente que introduce monedas falsas en la mquina, si se detecta una, el programa debera or-denar a la computadora hipottica tomar una foto del delincuente y llamar a la polica. Entonces debera reiniciarse a s misma.

    DIAGRAMA DE FLUJO

    Figura 2.5. Diagrama de flujo del despachador de refrescos

    Inicio

    Reiniciar la mquina

    Esperar por una moneda

    Moneda falsa?

    total = total + depsito

    Suficiente dinero?

    C

    D

    A

    B

    D

    Tomar foto y llamar polica

    A

    Dar refresco y cambio

    B

    C C

    si no

    no si

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-19

    A continuacin (tabla 2.5), se muestra el programa en lenguaje de mquina que eje-cuta las acciones especificadas. Las instrucciones se almacenan secuencialmente en memo-ria empezando en la posicin 0. Lo primero que usted debera hacer es leer los comentarios de la derecha y examinar el programa. Es muy difcil determinar lo que hace el programa. Para cada instruccin hay que ir a la tabla que contiene el juego de instrucciones de la com-putadora hipottica y decodificar las instrucciones binarias. Debido a que se tienen que usar las instrucciones primitivas de la computadora hipottica, incluso entender la lgica del programa correctamente es difcil.

    Tabla 2.5. Programa en lenguaje de mquina para despechar una lata de refresco

    Posicin de memoria

    Instruccin Comentarios

    0000 000 0000 Reiniciar la mquina 0001 001 0000 Esperar por una moneda 0010 010 0000 Saltar si la moneda no es falsa 0011 110 1000 Saltar a la posicin 1000 0100 011 0000 Aadir la moneda al total 0101 100 0000 Saltar si no hay bastante dinero 0110 110 1010 Saltar a la posicin 1010 0111 110 0001 Saltar a la posicin 001 1000 101 0000 Tomar foto y llamar a la polica 1001 110 0000 Saltar a la posicin 0000 1010 111 0000 Dar el refresco y devolver cambio 1011 110 0000 Saltar a la posicin 0000

    Cmo podemos saber si el programa hace lo que se supone? Una actividad que un programador hace a menudo cuando escribe, o intenta entender, un programa es hacer una prueba de escritorio del programa. Con este procedimiento, el programador acta co-mo la computadora: lee y ejecuta las instrucciones del programa para determinar si el pro-grama actuar de forma apropiada cuando se ejecute en la mquina real. Para ver como funciona esta tcnica, hagamos una prueba de escritorio de nuestro sencillo programa en lenguaje de mquina. Se asume que la ejecucin empieza en la posicin 0000 y que el costo de un refresco es de 5.50 pesos. La prueba de escritorio se muestra en la tabla 2.6

    Tabla 2.6. Programa en lenguaje de mquina para despechar una lata de refresco

    Paso Contador de programa

    Accin Valor del total

    1 0000 Reiniciar la mquina 0.00 2 0001 Esperar por una moneda. Recibe 2.50 0.00 3 0010 Saltar si la moneda no es falsa 0.00 4 0100 Aadir la moneda al total 2.50 5 0101 Saltar si no hay bastante dinero 2.50 6 0111 Saltar a la posicin 0001 2.50 7 0001 Esperar por una moneda. Recibe 2.50 2.50 8 0010 Saltar si la moneda no es falsa 2.50 9 0100 Aadir la moneda al total 5.00

    10 0101 Saltar si no hay bastante dinero 5.00 11 0111 Saltar a la posicin 0001 5.00 12 0001 Esperar por una moneda. Recibe 1.00 5.00 13 0010 Saltar si la moneda no es falsa 5.00

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-20

    14 0100 Aadir la moneda al total 6.00 15 0101 Saltar si no hay bastante dinero 6.00 16 0110 Saltar a la posicin 1010 6.00 17 1010 Dar el refresco. Devolver cambio: 50 centavos 6.00 18 1011 Saltar a la posicin 0000 6.00 19 0000 Reiniciar la mquina 0.00

    El primer paso reinicia el estado de la mquina. Esta accin fija la cantidad total de

    dinero recibido hasta ahora a cero. A continuacin, se ejecuta la instruccin en la posicin 0001. Esta instruccin espera a que se deposite una moneda. Para la simulacin, se asume que se han depositado 2.50 pesos. Cuando se deposita la moneda, se contina la ejecucin en la posicin 0010 (paso 3). Esta instruccin comprueba si la moneda es falsa. No lo es, por lo que se salta la instruccin en la posicin 0011 y se contina en la posicin 0100. esta instruccin aade el valor de la moneda al total. Advierta que dicho total es ahora de 2.50 pesos. A continuacin, el programa comprueba si hay suficiente dinero depositado para comprar un refresco. El total es menor que 5.50 pesos, por lo que se salta la siguiente ins-truccin y se ejecuta la de la posicin 0111. Esta instruccin salta hacia atrs hasta la posi-cin 0001, que espera a que se deposite otra moneda. El programa contina, siendo deposi-tados a continuacin otros 2.50 pesos y luego 1.00 pesos (pasos 7 a 13).

    Despus de aadir el 1.00 peso al total, la ejecucin contina en el paso 14. Esta vez

    si hay bastante dinero, y la instruccin siguiente a la de salto es ejecutada. Esta instruccin salta a la posicin 1010. En el paso 17, se despacha un refresco y se devuelven 50 centavos. En el paso 18, se ejecuta la instruccin en la posicin 1011, por lo que se salta hacia atrs del programa, a la posicin 0000, y la mquina se reinicia para esperar otro cliente.

    La prueba de escritorio es extremadamente til para determinar lo que est hacien-

    do el programa. A posteriori, lo que hemos hecho puede parecer bastante tedioso. Se ha entrado bastante en detalle en el programa para ver qu esta pasando. A medida que se desarrollen sus habilidades personales, encontrar que se pueden hacer ejecuciones manuales de secciones pequeas de cdigo de forma bastante sencilla. Podra necesitar un borrador en papel para registrar los valores a medida que cambian, pero, generalmente, no es necesario escribir todos los pasos ejecutados. LENGUAJE ENSAMBLADOR

    Obviamente, escribir y comprobar un programa, aunque sea pequeo (500 o 1000 instrucciones) en lenguaje de mquina sera tedioso y proclive a cometer errores. Durante muchos aos, los programadores han dedicado mucho esfuerzo a desarrollar lenguajes que permitan a la gente escribir programas de forma ms natural. En un nivel ligeramente supe-rior al lenguaje de mquina esta el lenguaje ensamblador. Ms que usar unos y ceros, el lenguaje ensamblador emplea abreviaturas alfabticas llamadas mnemnicos que son f-cilmente recordadas por el programador. Por ejemplo, la palabra mnemnica para la adicin es ADD, para mover es MOV y as sucesivamente. Despus, un programa denominado en-samblador traduce las instrucciones del lenguaje ensamblador a cdigo binario. Un pro-grama en lenguaje ensamblador convencional se lista en la figura 2.4(b)

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-21

    El uso de mnemnicos en lenguaje ensamblador le proporciona un medio ms fcil para escribir e interpretar programas. Aunque los programas en lenguaje ensamblador son ms fciles de entender para los humanos, la CPU no puede interpretarlos directamente. Como resultado, los programas en lenguaje ensamblador deben traducirse a cdigo de m-quina. Este es el trabajo de otro programa llamado ensamblador, el cual traduce los pro-gramas escritos en lenguaje ensamblador a cdigo de mquina que puede ser ejecutado por la CPU.

    Aunque programar en lenguaje ensamblador es ms fcil que en lenguaje de m-quina, no es el medio de programacin ms eficiente. La programacin en lenguaje en-samblador es tambin tediosa y propensa a errores, ya que hay una relacin uno a uno entre los mnemnicos y el cdigo de mquina correspondiente. La solucin a estos problemas del lenguaje ensamblador son los lenguajes de alto nivel. Esto no significa que el lenguaje ensamblador no sea til. Debido a su relacin uno a uno con el lenguaje de mquina, los programas en lenguaje ensamblador son ms efi-cientes con respecto a la velocidad de ejecucin y utilizacin de memoria que los lenguajes de alto nivel. De hecho, muchos programas en lenguaje de alto nivel incluyen rutinas en lenguaje ensamblador, especficamente para tareas que requieren de un software de alta velocidad.

    Ventajas de programar en lenguaje ensamblador: Mayor facilidad de codificacin y en general, mayor velocidad de clculo.

    Desventajas de programar en lenguaje ensamblador:

    Dependencia total de la mquina, lo que impide la transportabilidad de los pro-gramas.

    La formacin de los programas es mas compleja que la correspondiente a la programacin de alto nivel, ya que exige no solo las tcnicas de programacin, sino tambin el conocimiento del interior de la computadora.

    Hoy da los lenguajes ensambladores tienen sus aplicaciones muy reducidas en la

    programacin de aplicaciones y se centran en aplicaciones de tiempo real, control de pro-cesos y de dispositivos electrnicos, etc. LENGUAJE DE ALTO NIVEL

    Una de las caractersticas del lenguaje de mquina y del lenguaje ensamblador es la necesidad de conocer los detalles de la mquina a programar. Como se mencion, cada tipo de computadora tiene su propio y nico lenguaje de mquina. El siguiente nivel de los lenguajes de programacin est formado por los lenguajes de alto nivel. Una caracterstica distintiva de un lenguaje de alto nivel es que no se requiere un conocimiento detallado de la computadora que est siendo programada. Otra caracterstica es que un lenguaje de pro-gramacin de alto nivel usa habitualmente un vocabulario y estructura que est cercana al tipo de problema a resolver. Por ejemplo, el lenguaje de programacin FORTRAN, que se usa para resolver problemas cientficos y de ingeniera, usa una notacin como la matem-tica. Por supuesto, el nombre FORTRAN deriva de la frase Formula Translation (traduc-

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-22

    cin de frmulas). Debido a este acoplamiento entre el lenguaje y el dominio de los pro-blemas, existen literalmente cientos de lenguajes de programacin de alto nivel.

    Un lenguaje de alto nivel consiste en una serie de instrucciones, que son similares

    al ingls y a la notacin matemtica comn. Una serie tpica de instrucciones de alto nivel se muestra en la figura 2.4(c). Las instrucciones en lenguaje de alto nivel son muy podero-sas. Una instrucciones tpica en un lenguaje de alto nivel equivale a muchas instrucciones de cdigo de mquina.

    Los lenguajes de alto nivel se desarrollaron a principios de los aos cincuenta para

    simplificar el proceso de programacin. Cuando se programa en un lenguaje de alto nivel, no es necesario conocer la serie de instrucciones especficas de la CPU. Puede concentrar-se ms en la solucin del problema.

    Ventajas de programar en lenguaje de alto nivel: El tiempo de formacin de los programadores es relativamente corto comparado

    con otros lenguajes. La escritura de programas se basa en reglas sintcticas similares a los lenguajes

    humanos. Las modificaciones y puestas a punto de los programas son ms fciles . Reduccin del costo de desarrollo de los programas . Transportabilidad.

    Desventajas de programar en lenguaje de alto nivel:

    Incremento del tiempo de puesta a punto, al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo .

    No se aprovechan los recursos internos de la computadora, que se explotan mucho mejor en lenguajes de mquina y lenguajes ensambladores .

    El tiempo de ejecucin de los programas es mucho mayor.

    SISTEMAS OPERATIVOS

    Una pieza muy importante del software del sistema es el sistema operativo. Un sistema operativo es el software que controla y gestiona los recursos de la computadora. Estos recursos incluyen memoria, dispositivos de entrada/salida (I/O por Input/Output) y la CPU. El sistema operativo proporciona servicios tales como la asignacin de memoria a los programas y el manejo de los controladores de dispositivos, tales como la pantalla, el teclado y los discos duros. Sistemas operativos populares para computadoras personales son Windows XP, Windows NT, OS/2 y UNIX. EVOLUCION DE LOS SISTEMAS OPERATIVOS

    Las primeras computadoras eran capaces de efectuar nicamente un trabajo o tarea

    a la vez. Esta forma de operacin de la computadora con frecuencia se llama procesamien-to por lotes monousuario. La computadora ejecuta un solo programa a la vez mientras pro-cesa los datos en grupos o lotes. En estos primeros sistemas, los usuarios normalmente re-mitan a un centro de cmputo sus tareas en pilas de tarjetas perforadas. Tenan que esperar horas o das antes de recibir la impresin de sus resultados.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-23

    Para simplificar el uso de las computadoras, se desarrollaron sistemas de software llamados sistemas operativos. Los primeros sistemas operativos administraban la transicin entre tareas, minimizando el tiempo que tomaba a los operadores hacer el cambio de tareas. Con esto aument el rendimiento (cantidad de trabajo), que podan efectuar las computa-doras.

    A medida que las computadoras se volvieron ms poderosas, result evidente que el

    procesamiento por lotes monousuario pocas veces aprovechaba eficientemente los recursos de la computadora. Se pens que se podran hacer que muchos trabajos o tareas compar-tiendo los recursos de la computadora, logrando un mejor empleo. A esto se le llam mul-tiprogramacin. Esta comprende la operacin consecutiva (dando la apariencia de simultaneidad) de muchas tareas en la computadora, la cual comparte sus recursos entre las tareas que compiten por su atencin. En los primeros sistemas operativos de multiprogramacin, los usuarios seguan enviando sus tareas en pilas de tarjetas perforadas y esperaban durante horas o das los resultados.

    Durante la dcada de los 60, grupos de la industria y las universidades fueron pione-

    ros de los sistemas operativos de tiempo compartido. El tiempo compartido es un caso es-pecial de la multiprogramacin en el que los usuarios tienen acceso a la computadora a travs de terminales (dispositivos con teclado y pantalla). En un sistema de cmputo de tiempo compartido tpico, puede haber docenas o cientos de usuarios compartiendo simul-tneamente la computadora. En realidad, sta no ejecuta todas las tareas de los usuarios simultneamente. En cambio, ejecuta una parte pequea de la tarea de un usuario y luego procede a darle servicio a cada uno de los usuarios varias veces por segundo. De ah que los programas de los usuarios parecen ejecutarse de manera simultnea. Una ventaja del tiem-po compartido es que el usuario recibe respuestas casi inmediatas a sus solicitudes, en lugar de tener que esperar mucho tiempo por sus resultados, como suceda en los modos previos de cmputo.

    SERVICIOS QUE PRESTA UN SISTEMA OPERATIVO

    Un sistema operativo presta los siguientes servicios:

    Sistema de archivos . Comandos o mandatos . Operaciones de entrada y salida . Gestin de programas en ejecucin Sistemas de traduccin..

    Un servicio importante que proporciona el sistema operativo es el sistema de ar-

    chivos. El sistema de archivos controla la organizacin de la informacin en un disco de forma que pueda encontrarse y recuperarse rpidamente. El disco tiene reas donde la in-formacin relacionada se puede almacenar junta. Estas reas son anlogas a los cajones de un archivero. Un cajn podra contener todos los archivos que pertenecen a los estudiantes del primer ao. En el caso de un sistema de archivos, tal rea es denominada directorio. A diferencia de un archivero, un directorio puede contener otros directorios. Esa organiza-cin se denomina sistema jerrquico de directorios.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-24

    La figura 2.6 contiene un diagrama de rbol con la organizacin de los archivos en un disco llamado C:\, la raz del rbol. Debajo de la raz hay archivos y directorios. Por ejemplo, compu1 es el directorio que contiene los archivos relacionados con un curso de-nominado compu1. El directorio compu1 contiene archivos y directorios. En la figura 2.6, compu1 contiene dos subdirectorios, tarea y labs, y un archivo leame.txt. Los nombres de directorio deberan hacer referencia al contenido del directorio. En este ejemplo, el nombre tarea indica que los archivos que contiene estn relacionados con el trabajo para casa del curso compu1. De igual forma, el nombre labs indica que el directorio contiene informa-cin de los trabajos de laboratorio relacionados con el curso. De forma similar, el nombre de un archivo debera indicar el tipo de informacin contenido en dicho archivo. Un nombre de archivo tiene dos partes. La parte situada antes del punto se denomina base, y la parte situada despus del punto se denomina extensin. La extensin indica el formato del archivo. Por ejemplo, en el directorio compu1, el archi-vo leame.txt tiene la extensin txt, que es muy frecuente. Esta extensin indica que el ar-chivo contiene texto que puede ser ledo mediante su impresin o mediante el uso de un editor de texto. Otra extensin frecuente es exe. Esta extensin se usa para archivos que contienen un programa ejecutable. Este tipo de archivo no puede ser procesado por un pro-cesador de textos o un editor. El nombre base dice qu informacin contiene el archivo. Por ejemplo, el nombre base leame indica que cualquiera que quiera comprender lo que contiene el directorio compu1 debera leer el contenido de ese archivo. Otro ejemplo a considerar puede ser el archivo notas.xls. La extensin xls indica que este archivo ha sido producido por Excel, una aplicacin de hoja de clculo. El nombre base notas indica que el archivo contiene hojas de clculo de notas. Si se organizan los archivos cuidadosamente en subdirectorios y se eligen nombres adecuados, un sistema de archivos jerrquico proporciona una forma efectiva de organizar la informacin para que pueda ser encontrada rpidamente.

    C:\ Windows compu1 correo carta.wp cal.exe notas.xls tarea labs leame.txt Ana Alba Pepito tip.cpp cambio.dat burbuja.cpp busqueda.cpp

    Figura 2.6. Sistema jerrquico de archivos.

    Otra parte importante del sistema operativo son los comandos o mandatos de ges-tin de archivos. Los nombres de los mandatos y cmo llamarlos cambia de un sistema operativo a otro, pero su funcionalidad es idntica. La mayora de sistemas tiene mandatos para borrar archivos, renombrar archivos, copiar archivos y crear directorios.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-25

    El sistema operativo tambin proporciona servicios bsicos para ejecutar operacio-nes de entrada y de salida sobre distintos tipos de dispositivos. Un programa necesita sa-ber exactamente cmo interactuar con un dispositivo de entrada/salida, los detalles de bajo nivel son manejados por el sistema operativo. Por ejemplo, si un programa quiere leer del disco un archivo en particular, en lugar de acceder directamente al disco, enva su peticin al sistema operativo. El sistema operativo encuentra el archivo en el disco, lee las porcio-nes adecuadas y devuelve la informacin deseada por el programa que hizo la peticin. Otro servicio del sistema operativo es la gestin de programas en ejecucin. La mayora de los sistemas operativos modernos permiten que mltiples programas compar-tan la CPU. Por ejemplo, con el sistema operativo Windows puede cargar un archivo en la computadora, ejecutar un programa en segundo plano y ejecutar un procesador de textos todo al mismo tiempo. El trabajo del sistema operativo es estar seguro de que cada pro-grama tiene suficiente memoria para trabajar y que se le permita ejecutarse en la CPU cuando lo necesita. Otra clase de software de sistema son los denominados sistemas de traduccin. Un sistema de traduccin es un conjunto de programas que se usa para desarrollar nuevo soft-ware. Un componente clave de estos sistemas es el traductor, un programa que lee un pro-grama escrito en un lenguaje de programacin y genera un programa de salida, posible-mente en un lenguaje de programacin distinto. La entrada al traductor se denomina pro-grama fuente, y la salida se denomina programa destino. El lenguaje usado para el pro-grama fuente se denomina lenguaje fuente, en correspondencia, el lenguaje usado para el programa destino se denomina lenguaje destino. En la figura 2.7 se ilustra el proceso de traduccin.

    Figura 2.7. El proceso de traduccin Los traductores se dividen tpicamente segn sus lenguajes fuente y destino. Antes se dijo que un ensamblador traduce un lenguaje de mquina simblico a un lenguaje de mquina binario. Un programa en lenguaje de mquina binario se denomina a menudo cdigo objeto o archivo objeto. Est consciente de que aun cuando programe en lenguaje de alto nivel, el sistema debe traducir sus instrucciones a cdigo de mquina para que pueda ser entendido por la CPU. Hay dos tipos de programas del sistema que pueden emplearse para este propsito: un compilador y un intrprete. Un compilador es un programa que acepta un programa en lenguaje de alto nivel y traduce todo el programa a cdigo de mquina al mismo tiempo, antes de que sea ejecutado por la CPU. Por otra parte, un intrprete traduce y ejecuta una instruccin de alto nivel a la vez. Una vez que se ejecuta una instruccin dada, el intrprete traduce y ejecuta la siguiente instruccin y as sucesivamente, hasta que el programa com-pleto ha sido ejecutado. Aunque los intrpretes tienen sus ventajas, especialmente durante la etapa de depuracin, C++ emplea un compilador. Por esta razn veremos con mayor detalle la operacin de un compilador. El proceso de usar un compilador para traducir un programa en lenguaje de alto nivel se denomina compilacin.

    Programa fuente Traductor Programa destino

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-26

    Otro tipo de traductor es el denominado enlazador o vinculador. Un enlazador o vinculador combina archivos objetos y bibliotecas de forma que puedan ser ejecutados como una sola unidad. Una biblioteca contiene archivos de cdigo objeto de rutinas que han sido desarrolladas para cumplir alguna tarea o funcin en particular. Las bibliotecas suelen ser proporcionadas por el fabricante del compilador o por una compaa especiali-zada en fabricar bibliotecas para un propsito especfico. Por ejemplo, es frecuente que exista una biblioteca que proporcione operaciones de entrada y salida. Otra biblioteca tpi-ca proporciona rutinas para desarrollar programas que usan interfaces grficas de usuario (GUI por Graphical User Interfaces). Tal biblioteca contendr rutinas para abrir y dibu-jar ventanas, crear mens y manejar entrada y salida desde el ratn.

    La salida del enlazador es un archivo que puede ser ejecutado por la computadora. Este archivo se denomina a menudo ejecutable. Usando una herramienta del sistema ope-rativo denominada cargador, el archivo ejecutable puede cargarse en la memoria de la computadora y ejecutarse. Cuando desarrollan software, los programadores realizan las operaciones de editar un programa, compilarlo, enlazarlo con otros mdulos ya compilados y con bibliotecas, y, por ltimo, cargarlo y ejecutarlo repetidamente. Despus de ver el comportamiento del programa, los programadores suelen hacer cambio al programa, posiblemente porque no se ejecut bien o porque funcion correctamente pero quiere seguir el desarrollo del progra-ma.

    Este proceso, conocido como ciclo de edicin/compilacin/ejecucin se muestra en la figura 2.8. La figura 2.8 muestra las funciones bsicas de un compilador. El compi-lador acta como una interfaz entre su programa y la mquina. Una vez que se ha ingresa-do un programa C++ en el sistema usando el editor C++, el compilador traducir el pro-grama a cdigo de mquina. Su programa C++ se conoce con el nombre de programa fuente y el programa en lenguaje de mquina que genera el compilador se llama programa objeto. Los programas fuente C++ generalmente tienen la extensin .cpp y el programa objeto correspondiente tiene la extensin .obj.

    Conforme el programa se traduce, el compilador verifica los errores. Despus de que el programa se compila, el compilador muestra una lista de mensajes de error y adver-tencia. Adems, cualquier compilador C++ colocar el cursor en el punto en donde se de-tect un error en el programa. Despus de que corrija todos los errores, deber ejecutar el compilador otra vez hasta que obtenga una compilacin con xito.

    Una vez compilado, el programa deber ser enlazado o vinculado. Como se men-cion, el paso de vinculacin integra su programa con cualquier rutina adicional que se requiera para su adecuada ejecucin. Estas rutinas pueden ser rutinas de otros programas de alto nivel, de programas en lenguaje ensamblador o del sistema operativo. El paso de vinculacin produce un archivo ejecutable con una extensin de nombre de archivo .exe. Los errores tambin pueden ocurrir durante el paso de vinculacin, especialmente si no estn disponibles o no se localizan las rutinas necesarias.

    Un programa fuente es aquel que se escribe en lenguaje C++. Por lo general tiene una extensin de archivo .cpp. Un programa objeto es aquel generado por el compilador, que siempre tiene una extensin de archivo .obj.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-27

    Por ltimo, cuando el programa entero ha sido compilado y vinculado con xito, puede ejecutar o correr su programa. Cuando corra su programa, la CPU ejecutar el pro-grama en el lenguaje de mquina generado por el compilador/vinculador.

    Debido a que este ciclo se repite muchas veces durante el desarrollo del software,

    los traductores han sido construidos para dar asistencia al usuario en este proceso. Estos sistemas se denominan a veces entorno de desarrollo integrado (IDE por Integrated Deve-lopmente Environment ). La idea es integrar juntos el editor, el compilador, el enlazador y el cargador y tener un nico conjunto de mandatos para manejarlos.

    Existen varios IDE que proporcionan soporte para desarrollar software con C++.

    Aunque difieren en su apariencia, todos ofrecen esencialmente las mismas caractersticas. Las distintas selecciones de los mens permiten al programador editar cdigo, compilarlo, enlazar los archivos objetos resultantes con otros objetos y con bibliotecas para crear un ejecutable y ejecutar el cdigo resultante. Un IDE puede ser un elemento de ahorro de tiempo importante, porque automatiza mucho las rutinas de desarrollo de software.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-28

    Falla

    Exito

    Figura 2.8. El compilador C++ y el vinculador o enlazador (linker) traducen el programa

    fuente a cdigo de mquina que puede ejecutarse en la CPU.

    Introduccin/Edicin del programa

    Archivo fuente (.cpp)

    Guardado

    Compilar Corregir errores

    Archivo objeto (.obj)

    Vincular/Cargar

    Archivo ejecutable (.exe )

    Archivos de encabezado

    (.h)

    Archivos de librera (.l ib)

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-29

    COMPUTACIN PERSONAL, DISTRIBUIDA Y CLIENTE/SERVIDOR En 1977, Apple Computer populariz el fenmeno de la computacin personal. En

    un principio, se trat del sueo de los aficionados. Las computadoras se volvieron lo bas-tante econmicas como para que la gente las comprara para su uso personal y para sus ne-gocios. En 1981, IBM, el principal proveedor de computadoras, present la Computadora Personal IBM. Literalmente de un da para otro, la computacin personal se volvi una realidad en los negocios, la industria y las organizaciones gubernamentales.

    Pero estas computadoras eran unidades independientes la gente efectuaba su traba-

    jo en su mquina y luego llevaba y traa discos para compartir la informacin. Aunque las primeras computadoras personales no eran lo bastante poderosas para manejar tiempo com-partido con varios usuarios, podan enlazarse entre ellas, formando redes, a veces mediante lneas telefnicas y otras a travs de LANS (redes de rea local) dentro de una organiza-cin. Esto condujo al fenmeno de la computacin distribuida, donde el cmputo, en lugar de efectuarse solamente en una instalacin central de cmputo, se distribuye a travs de redes hacia los sitios donde se realiza el trabajo real de la organizacin. Las computadoras personales eran lo bastante poderosas para manejar los requerimientos de cmputo de las personas y encargarse de las tareas bsicas de comunicacin, es decir, de la transferencia electrnica de informacin.

    Actualmente las computadoras personales ms poderosas tienen tanta capacidad

    como las mquinas de millones de dlares de hace apenas una dcada. Las mquinas de escritorio ms poderosas (llamadas estaciones de trabajo) les proporcionan enormes capa-cidades a los usuarios. La informacin se comparte con facilidad a travs de redes de com-putadoras en las que algunas de ellas, llamadas servidores de archivos, ofrecen un almacn comn de programas y datos que las computadoras clientes distribuidas a travs de la red pueden utilizar, de ah el trmino computacin cliente/servidor. C y C++ se han vuelto los lenguajes de programacin preferidos para escribir software de sistemas operativos, de re-des de computacin y de aplicaciones distribuidas cliente/servidor. En la actualidad, los sistemas operativos ms comunes como UNIX, los sistemas basados en Windows de Mi-crosoft y OS de IBM ofrecen los tipos de capacidades descritos en esta seccin. POR QU C++?

    Probablemente est de acuerdo en que hay algunos lenguajes de alto nivel popula-res, incluyendo COBOL, Pascal, FORTRAN, BASIC, LISP, Ada y C++, entre otros. Cada uno se desarroll para un tipo de aplicacin en particular. Por ejemplo, COBOL, que signi-fica COmmon Business-Oriented Language, fue desarrollado para la programacin de pro-blemas comerciales; FORTRAN que significa FORmula TRANslator, fue desarrollado para la programacin cientfica. LISP se desarroll para la programacin de inteligencia artificial y Pascal fue desarrollado principalmente para la enseanza de la programacin estructurada. C++ fue desarrollado para una implementacin eficiente de estructuras de alto nivel que se requieren en la solucin de problemas complejos.

    C++ fue una evolucin de C, el cual surgi de dos lenguajes de programacin pre-

    vios, BCPL y B. BCPL fue desarrollado en 1976 por Martn R ichards como lenguaje para

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-30

    escribir software de sistemas operativos y compiladores. Ken Thompson model muchas caractersticas en su lenguaje B segn sus equivalentes en BCPL y se vali de B para crear las primeras versiones del sistema operativo UNIX en los Laboratorios Bell durante 1970 en una computadora DEC-PDP-7. Tanto BCPL como B eran lenguajes sin tipos de datos cada elemento de informacin ocupaba una palabra en memoria y la tarea de tratar cada elemento de datos como un nmero entero o nmero real, por citar un ejemplo, recaa en el programador.

    El lenguaje C fue una evolucin del B llevada a cabo por Dennis R itchie en los La-

    boratorios Bell, originalmente se implement en una computadora DEC-PDP-11 en 1972. C se vale de muchos conceptos bsicos de BCPL y de B, aadiendo tipos de datos y otras caractersticas. Al principio C se volvi ampliamente conocido como el lenguaje de desa-rrollo del sistema operativo UNIX. Actualmente, la mayora de los sistemas operativos se escriben en C y/o C++. Durante las ltimas dos dcadas, C ha quedado disponible en casi todas las computadoras. C es independiente del hardware. Con un diseo cuidadoso, es posible escribir programas en C que pueden ser portables para utilizarse en la mayora de las computadoras.

    De hecho, muchas de las versiones de UNIX en la actualidad se escriben casi por

    completo en C. El lenguaje C fue originalmente definido en la obra clsica The C Pro-gramming Language, escrito por Brian Kernigham y Dennis R itchie (1977). El lenguaje C se convirti en un lenguaje comercial popular que el ANSI (American National Stan-dards Institute) liber en 1989 como un estndar para C. Un estndar de un lenguaje de programacin es un documento que describe los detalles del lenguaje para que los progra-mas se escriban con las especificaciones estndar y sean porttiles entre diversos sistemas.

    El lenguaje C++ es una extensin del lenguaje C. Bjarne Stroustrup de Bell Labs

    mejor el lenguaje C a principio de los aos ochenta adicionando la capacidad de la pro-gramacin orientada a objetos(POO). La programacin orientada a objetos le permite desarrollar programas complejos utilizando constructores ms simples, llamados objetos, que pueden comunicarse mediante intercambio de mensajes. Los objetos son, en esencia, componentes de software reutilizables que simulan elementos reales.

    El objetivo lgico del doctor Stroustrup fue mantener la eficiencia de C proporcio-

    nando la fuerza de la POO al lenguaje. El lenguaje resultante ahora se conoce como C++. Podr entender el origen del doble signo ++, cuando estudie el operador incremento de C++. Debido a que C++ es un mejoramiento de C, cualquier programa en C es tambin un programa C++, sin embargo, lo opuesto no es cierto.

    Como C, C++ tom por sorpresa a la industria de desarrollo de software debido a

    que ambos lenguajes ofrecen todas las ventajas de un lenguaje de alto nivel, pero tambin proporciona acceso de bajo nivel al hardware y al software del sistema, de la misma manera que el lenguaje ensamblador. Por esta razn, C y C++ suelen mencionarse como lenguajes de nivel medio. De hecho, la mayora del software comercial que se desarrolla en la actua-lidad se escribe usando C o C++. De hecho se ha liberado ya un estndar ANSI para C++.

    La portabilidad es la caracterstica de un lenguaje que permite que los programas escritos para un tipo de computadora puedan utilizarse en otro tipo con pocos o casi ningn cam-bio en el cdigo fuente del programa.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-31

    Se han desarrollado muchos otros lenguajes orientados a objetos, incluyendo princ i-palmente a Smalltalk, que fue desarrollado en el Centro de Investigacin de Palo Alto (PARC) de Xerox. Smalltalk es un lenguaje orientado a objetos puro literalmente todo es un objeto. C++ es un lenguaje hbrido es posible programar en C++ tanto en estilo C como en estilo orientado a objetos o en ambos.

    BIBLIOTECA ESTANDAR DE C++ Los programas en C++ constan de partes llamadas clases y funciones. Es posible programar cada parte que necesite para formar un programa C++. Pero la mayora de los programadores de C++ aprovechan las vastas clases y funciones que existen en la bibliote-ca estndar de C++. Por lo tanto, en realidad hay dos partes en el aprendizaje del mundo de C++. La primera es aprender el lenguaje C++ mismo, y la segunda es conocer cmo se emplean las clases y funciones de la biblioteca estndar de C++. A lo largo de estas leccio-nes estudiaremos muchas de estas clases y funciones. JAVA En mayo de 1995, Sun Microsystems, proveedor lder de estaciones de trabajo UNIX de alta potencia y compaa que siempre ha subrayado la importancia de las redes de cmputo, anunci su nuevo lenguaje de programacin: Java. Dicho lenguaje est basado en C y C++ e incorpora caractersticas de varios otros lenguajes orientados a objetos. Sun ofrece gratuitamente el software base de Java, la documentacin, los tutoriales y las de-mostraciones en el sitio Web www.java-soft.com. Java incluye extensas bibliotecas de cla-ses con componentes para multimedia, conectividad de red, subprocesos mltiples, grfi-cos, acceso a base de datos, computacin distribuida y ms. Uno de los atributos ms atractivos de Java es su portabilidad. Es posible escribir programas Java en una computadora y ejecutarlos en cualquier otra que soporte Java (la mayora de los sistemas de cmputo ms comunes lo hacen). Esto resulta especialmente atractivo para los desarrolladores de software que previamente han elaborado y dado man-tenimiento a versiones diferentes de su software para cada tipo de sistema de cmputo. Lo anterior es muy costoso y lleva tiempo, lo que ha desalentado a los proveedores indepen-dientes de software para que produzcan software para sistemas distintos a las platafo rmas ms comunes, como Microsoft Windows. En la actualidad, las aplicaciones de software en Java pueden ejecutarse en todas las versiones comunes de Windows, as como en muchas otras plataformas importantes, como las variedades ms populares de UNIX, Macintosh de apple y OS/2 de IBM.

    EXAMEN BREVE 2-3

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-32

    INGENIERIA DE SOFTWARE A medida que las computadoras se han vuelto ms rpidas, baratas y ms potentes, se han convertido en herramientas indispensables para cientficos e ingenieros. Quiz lo ms importante es que se han vuelto parte de nuestra vida. Sin embargo, tener computado-ras rpidas y baratas es slo la mitad de la ecuacin. Aunque ha habido tremendos avances en el campo del hardware, no han existido avances de la misma magnitud en el diseo de software. Parte del problema es que las expectativas para el software han crecido conside-rablemente. La figura 2.9 muestra lo que se conoce como paradoja de la complejidad: la complejidad del sistema crece a medida que se intenta hacer ms fcil su uso. Alta Complejidad total del software Complejidad Sencillez para el usuario Baja

    Figura 2.9. A medida que el software es ms fcil de usar, se incrementa su complejidad interna. Por ejemplo, los primeros sistemas grficos necesitaban que los usuarios especifica-ran detalles de cmo debera verse el grfico, dando informacin tan variada como los pun-tos finales del grfico, la escala, cmo y dnde habra que colocar las etiquetas. Esencial-mente, el usuario tena que hacer la mayora del trabajo. Actualmente las nuevas herramien-tas para hojas de clculo contienen sistemas expertos, que analizan los datos y producen un grfico de forma automtica. Tales sistemas de representacin automtica son mucho ms fciles de usar, pero esta facilidad tiene un precio, el incremento de la complejidad del software. Existen varios factores que contribuyen al aumento de la complejidad del software, entre ellos estan:

    Factores que contribuyen al aumento de la complejidad del software El tamao del software. La interaccin entre componentes .

    No es inusual que los programas de aplicacin, tales como las hojas de clculo,

    procesadores de texto y programas de dibujo, consten de cientos de miles de lneas de c-digo.

  • MIGUEL . TOLEDO MARTNEZ

    FUNDAMENTOS LECCIN 2 2-33

    Otro factor que incrementa la complejidad es la interaccin entre componentes. Por ejemplo, un procesador de texto puede contener un componente para correccin ortogrfi-ca y otro que proporcione servicios de diccionario de sinnimos.

    Consideremos el corrector ortogrfico. Cuando se detecta un posible error de ortografa, el corrector debe notificarlo al usuario. Por lo tanto, el corrector ortogrfico, debe relacionarse con el componente de la aplicacin que crea una ventana o caja de dilogo, de forma que el posible error pueda mostrarse en pantalla y que se pueda preguntar al usuario acerca de la accin a ejecutar, si se debe hacer algo. Si el usuario est de acuerdo en que hay un error ortogrfico, el corrector puede corregirlo. Para hacer la correccin, el corrector debe interaccionar con el componente del procesador de texto responsable de reemplazar texto en el documento. Obviamente, a medida que el nmero de componentes crece, el nmero de interacciones entre componentes crece rpidamente. La Ingeniera de Software es el rea de la computacin que tiene que ver con las tcnicas de construccin de software de gran tamao. El objetivo de un Ingeniero de Soft-ware es producir un software que sea:

    Fiable. Comprensible. Rentable. Adaptable. Reusable.

    Examinemos cada una de estas propiedades. Un software debera ser fiable, es decir, d