Sunteți pe pagina 1din 49

MIGUEL .

TOLEDO MARTNEZ

CONTENIDO DE LA LECCIN 2
TERMINOLOGA BASICA EN COMPUTACIN, SOFTWARE, INGENIERIA DE SOFTWARE

1. Introduccin 2. Terminologa bsica en computacin


2.1. Unidades de medida en computacin. 2.2. Sistemas numricos
2.2.1. Operaciones aritmticas 2.2.2. Examen breve 2-1

2 4
4 5
6 8

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

8 13

3. Software
3.1. Software de aplicacin 3.2. El software de sistema
3.2.1. 3.2.2. 3.2.3. 3.2.4. 3.2.5. 3.2.6. Lenguaje de mquina Lenguaje ensamblador Lenguaje de alto nivel Sistema operativos Evolucin de los sistemas operativos Servicios que presta un sistema operativo

13
13 14
16 20 21 22 22 23

4. 5. 6. 7. 8. 9.

Computacin personal, distribuida y cliente / servidor Por qu C++? Biblioteca estndar de C++ Java Examen breve 2-3 Ingeniera de Software
9.1. Principios de Ingeniera de Software

29 29 31 31 31 32
34

10. Diseo orientado a objetos 11. Lo que necesita saber 12. Preguntas y problemas
12.1. Preguntas

37 40 43
43

FUNDAMENTOS LECCIN 2

2-1

MIGUEL . TOLEDO MARTNEZ

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 telefnico, 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 computacional 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 tcnica de diseo y programacin orientada a objetos, que ha mostrado su utilidad para manejar y hacer frente a la complejidad de las aplicaciones. Uno de los puntos cruciales asociados con el diseo de un sistema involucra el manejo de la complejidad del proceso de diseo. De forma habitual, los buenos diseadores emplean alguna forma de abstraccin como herramienta para tratar esta complejidad. El trmino abstraccin aqu se refiere a la capacidad intelectual de considerar una entidad ai slndola de cualquier ejemplar especfico de esa entidad. Por ejemplo, los diseadores de hardware que pretenden disear una computadora, habitualmente se preocupan de la funcionalidad de los circuitos integrados que piensan usar no del funcionamiento de los transistores que se encuentran en esos circuitos integrados. El desarrollo de un sistema informtico se simplifica utilizando el concepto de abstraccin en el proceso de diseo. En el diseo de software, supone especificar la funcionalidad 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 informtico en trminos que son directamente implementables usando un lenguaje de programacin. 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 ejecucin 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.
FUNDAMENTOS LECCIN 2

2-2

MIGUEL . TOLEDO MARTNEZ

Por otro lado, la programacin orientada a objetos se construye utilizando los conceptos de clases y objetos, los cuales modelan entidades del mundo real en forma ms natural. Por natural debe entenderse que la programacin orientada a objetos permite construir programas en la misma forma en que tendemos a pensar las cosas. Por ejemplo, tendemos 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, tenemos una impresin abstracta general de un vehculo por medio de sus atributos y su desempeo ms que en cuanto a sus tuercas y tornillos, aunque sin stos, el vehculo en realidad 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 programacin 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 programacin 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 hexadecimal. 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.

FUNDAMENTOS LECCIN 2

2-3

MIGUEL . TOLEDO MARTNEZ

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 comparar 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 velocidad, 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 segundo. La tabla 2.1 muestra las medidas usadas ms frecuentemente. Las computadoras actua les 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
Picosegundos Nanosegundos Microsegundos Milisegundos

Smbolo
ps ns s ms

Fraccin de segundo
10 -12 10 -9 10 -6 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 computadora 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 debera escribir 2.2 Ghz (2.2 Gigahertzios). Cuanto ms rpido sea el reloj, ms rpida ser la comp utadora. Tabla 2.2. Potencias de 10 usadas frecuentemente y sus abreviaturas Prefijo
Kilo Mega Giga Tera

Smbolo
K M G T

Significado
10 +3 10 +6 10 +9 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-

FUNDAMENTOS LECCIN 2

2-4

MIGUEL . TOLEDO MARTNEZ

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
Kilo Mega Giga Tera SISTEMAS NUMRICOS

Smbolo
K M G T

Significado
2 +10 = 1,024 2 +20 = 1,048,576 2 +30 = 1,073,741,824 2 +40 = 1.099.511,627,776

Los mismos principios del sistema decimal son vlidos en el sistema binario. Ambos 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 lugar 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 exponente de uno en uno. As, el valor de 7,537 puede expresarse como: 7 * 10 3 + 5 * 10 2 + 3 * 10 1 +
7 * 10 0 ,

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 * 2 3 + 0 * 22 + 1 * 2 1 + 0 * 2 0 , decimal 10 (8 + 0 + 2 + 0). Para indicar que un nmero est en una base distinta a la decimal, 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 n meros 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:
10 2 = 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 nmero arbitrario en octal, digamos: s ... wxyz, que denota:
s * 8 n 1 + ... w * 8 3 + x * 8 2 + y * 8 1 + z * 8 0 o s * 8 n 1 + ... w * 512 + x * 64 + y * 8 + z * 1

FUNDAMENTOS LECCIN 2

2-5

MIGUEL . TOLEDO MARTNEZ

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 decimal 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 3 6 4 001 011 110 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 frecuentemente la base 16. El sistema numrico con base 16 se deno mina 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 binario a decimal, excepto, por supuesto, que la base es 16. El nmero 6216 es: 6 161 + 2 16 0 = 96 + 2 = 98, valor correcto. Puesto que un dgito hexadecimal puede tener hasta 16 valores, se necesitan smbolos 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 = 15 = F 4 = 00102 1111 2 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.
FUNDAMENTOS LECCIN 2

2-6

MIGUEL . TOLEDO MARTNEZ

Cuando la suma de dos dgitos es mayor que 1, se propaga un acarreo a la columna siguiente. Para la multiplicacin, el multiplicando se multiplica por los dgitos del multiplicador empezando por la derecha. En el sistema binario, la multiplicacin es particularmente sencilla, porque se multiplica por cero o por uno. El ltimo paso es sumar todos los productos parciales para obtener el producto final. Suma binaria 00011 +01101 10000 Multiplicacin binaria 0110 0111 0110 0110 0110 0000 0101010 Suma decimal equivalente 3 +13 16 Multiplicacin decimal equivalente 6 7 42

Figura 2.1. Suma y multiplicacin binarias

Veremos a continuacin como representar los nmeros negativos. Todas las comp utadoras usan un nmero fijo de dgitos binarios para representar un valor. Esta unidad bsica de almacenamiento se denomina habitualmente palabra. Para mantener las cosas senc illas, 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 sacrificar 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 lo ngitud 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 complemento a dos de -5 es 11111011.
FUNDAMENTOS LECCIN 2

2-7

MIGUEL . TOLEDO MARTNEZ

Una forma sencilla de obtener la representacin en complemento a dos de un nmero 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 -132 10 Paso 1. 10000100 Paso 2. 01111011 Paso 3. 01111100 (132 en ocho dgitos binarios). (su complemento a 1). (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 forma 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. EXAMEN BREVE 2-1
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.

FUNDAMENTOS LECCIN 2

2-8

MIGUEL . TOLEDO MARTNEZ

Las computadoras procesan datos que son controlados por conjuntos de instrucciones 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 ( omo teclado, pantalla, ratn, discos, memoria, CDc 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 software. 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 reducir los costos de desarrollo del software: programacin estructurada, refinamiento descendente 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 informacin (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 pantalla 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 aplicacin) 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 botones 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 informacin que ha procesado la computadora y la pone en varios dispositivos de salida, dejndola 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 dispositivo 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

FUNDAMENTOS LECCIN 2

2-9

MIGUEL . TOLEDO MARTNEZ

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 contrario, se desvanece. Una tasa de refresco baja, como 60 Khz., puede causar fatiga visual debido a fluctuaciones imperceptibles de la imagen. Se puede detectar estas fluctuaciones 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 picture element. Una resolucin estndar soportada por tarjetas grficas que son compatibles (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 m emoria. 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, 2 8 ) 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 nmero de colores que pueden representarse y la resolucin est relacionados con la cantidad 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 relativamente 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 retiene la informacin procesada hasta que la unidad de salida la pueda colocar en los dispositivos de salida. La unidad de memoria se c onoce comnmente como memoria, memoria primaria, memoria central o memoria principal. En la mayora de las computadoras 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 posicin, o byte, en un tiempo mximo. Por esta razn, la memoria principal se conoce tambin co mo memoria de acceso directo o aleatorio, o RAM (por Random Access Memory). Esta propiedad contrasta con el acceso a una cinta magntica, donde para acceder a la informacin en medio de la cinta hay que avanzar la cinta hasta el lugar adecuado. 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 contiene. 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 tpicas de una computadora personal varan entre 60 y 120 nanosegundos.

FUNDAMENTOS LECCIN 2

2-10

MIGUEL . TOLEDO MARTNEZ

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. Consecuentemente, 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 utadora. Los contenidos de la memoria ROM se configuran cuando se fabrica la comp utadora. Despus del montaje, la ROM no puede ser escrita, slo leda. De ah el nombre de memoria de slo lectura. Esta memoria, a veces denominada ROM BIOS (por Basic Input/Ouput Subroutines), contiene informacin que identifica el tipo de computadora y las instrucciones que arrancan la computadora cuando se acciona el interruptor de corriente elctrica. El proceso de encendido de la computadora y de ejecucin 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 computadora. 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. 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 dejarla en la unidad de memoria; a la ALU cundo debe emplearse informacin de la unidad de memoria para efectuar clculos; y a la unidad de salida cundo enviar informacin 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 microprocesador. 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. 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 almacenamiento 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 secundario 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.

5.

6.

Algunos dispositivos pueden manejar entrada y salida de datos y se denominan habitualmente dispositivos de entrada/salida. La mayor parte de los dispositivos de entrada/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 unidades de disquetes actuales contienen 1.44 megabytes de datos. Muchas mquinas tienen actualmente unidades de discos Zip. Estos discos extrables pueden almacenar hasta 256 megabytes 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 almacenar 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 polvo y otras partculas extraas interfieran con la lectura y la escritura de informacin.

FUNDAMENTOS LECCIN 2

2-11

MIGUEL . TOLEDO MARTNEZ

Un disco debe formatearse antes de usarlo. La operacin de formateo escribe informacin en el disco para que los datos puedan ser escritos y ledos de forma eficie nte. El proceso de formatear un disco es anlogo al proceso de dibujar lneas en un estacionamiento 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 estacionamiento). Dos caractersticas importantes de la CPU son el tamao de los nmeros que maneja 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 manip ular. Hace unos pocos aos, el entero ms grande que poda manejar una mquina tpica era de 32 bits. Actualmente, hay CPU capaces de manejar enteros de 64 bits. Un entero de n bits puede representar los valores decimales comprendidos entre 0 y 2n 1. Por ejemplo, en una mquina 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 especifica 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 instrucciones 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 contador 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 comput adora 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 comp utacin.

FUNDAMENTOS LECCIN 2

2-12

MIGUEL . TOLEDO MARTNEZ

Leer la instruccin a la que apunta el contador del programa

Actualizar el contador del programa para apuntar a la siguiente instruccin

Contador del programa

Ejecutar la instruccin actual Figura 2.2. Ciclo de lectura/ejecucin de una computadora

EXAMEN BREVE 2-2 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 software 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 ha n 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-

FUNDAMENTOS LECCIN 2

2-13

MIGUEL . TOLEDO MARTNEZ

pensable para la mayora de la gente. El software de aplicacin puede clasificarse de acuerdo 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 procesadores 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 documentos.

2. Muy cercano a los procesadores de texto estn los programas de autoedicin (DTP por
Desktop Publishing Programas). Estos programas incluyen facilidades para disear documentos. Por ejemplo, tienen herramientas para crear formatos para boletines e informes de una compaa. Estos programas de aplicacin permiten importar textos y fotografas 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 revolucin 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 negocios 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 leyendas 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 Manager) permiten manejar informacin financiera personal. Los paquetes tpicos incluyen 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 potencia de las computadoras, se espera que aparezcan nuevos tipos de aplicaciones y mejoras 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 softFUNDAMENTOS LECCIN 2

2-14

MIGUEL . TOLEDO MARTNEZ

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 comp utacin se ilustra en la figura 2.3.
Usuario 1 Usuario 2

Nivel de programa de aplicacin Excel Word Nivel del software de sistema Nivel del hardware WordPerfect Access Usuario 6 Usuario 4 Usuario 5 Figura 2.3. Visin de la organizacin de un sistema de computacin Borland Usuario 3

Los diferentes pasos (acciones) de un algoritmo se expresan en los programas como 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 instrucciones, cada una de las cuales especifica ciertas operaciones que debe ejecutar la computadora. 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 lenguaje. 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 memoria principal.

FUNDAMENTOS LECCIN 2

2-15

MIGUEL . TOLEDO MARTNEZ

Instrucciones aritmticas y lgicas. Son instrucciones que ejecutan operaciones aritmticas (suma, resta, multiplicacin, divisin, potenciacin), lgicas (operaciones and, or, not, etc.). Instrucciones selectivas. Son instrucciones que permiten la seleccin de tareas alternativas 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), incluyendo 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 m quina est formado por instrucciones que representan las operaciones fundamentales de la computadora. 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 11101001 10101010 10001110 00001111 (a) mov bx, valor copiado mov ax, [bx] add ax, 5 add bx, 2 add ax, [bx] (b) x = 2; if(x <= y) x = x + 1; else x = x 1; (c)

Figura 2.4. (a) Lenguaje de mquina, (b) Lenguaje ensamblador y (c) Lenguaje de alto nivel.

FUNDAMENTOS LECCIN 2

2-16

MIGUEL . TOLEDO MARTNEZ

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 mquina, desarrollaremos a continuacin un programa para una computadora hipottica que contiene tan solo 8 instrucciones (ver tabla 2.4). Esta computadora hipottica ha sido diseada para su uso en mquinas despachadoras 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
Reiniciar la mquina Esperar por una moneda Saltar la siguiente instruccin si la moneda no es falsa Aadir moneda al total Saltar la siguiente instruccin si total es menor que el costo de una lata de refresco Tomar foto y llamar a la polica Saltar a la posicin especificada Dar una lata de refresco y devolver el cambio si hay

Codificacin binaria
000 001 010 011 100 0000 0000 0000 0000 0000

101 0000 110 dddd 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 interpretar 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.

FUNDAMENTOS LECCIN 2

2-17

MIGUEL . TOLEDO MARTNEZ

Cuando la computadora hipottica ejecuta una instruccin de salto, los 4 bits que especifican la direccin se mueven al contador de programa (vase la figura 2.2). Como consecuencia, se lee la siguiente instruccin de esa posicin de memoria.
Dada la informacin anterior, se desea escribir un programa en lenguaje de mquina 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 ordenar a la computadora hipottica tomar una foto del delincuente y llamar a la polica. Entonces debera reiniciarse a s misma.

DIAGRAMA DE FLUJO
Inicio C Reiniciar la mquina D Esperar por una moneda

no Moneda falsa?

si A

total = total + depsito

no D Suficiente dinero?

si B

Tomar foto y llamar polica

Dar refresco y cambio

Figura 2.5. Diagrama de flujo del despachador de refrescos

FUNDAMENTOS LECCIN 2

2-18

MIGUEL . TOLEDO MARTNEZ

A continuacin (tabla 2.5), se muestra el programa en lenguaje de mquina que ejecuta las acciones especificadas. Las instrucciones se almacenan secuencialmente en memoria 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 computadora 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
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011

Instruccin
000 001 010 110 011 100 110 110 101 110 111 110 0000 0000 0000 1000 0000 0000 1010 0001 0000 0000 0000 0000

Comentarios
Reiniciar la mquina Esperar por una moneda Saltar si la moneda no es falsa Saltar a la posicin 1000 Aadir la moneda al total Saltar si no hay bastante dinero Saltar a la posicin 1010 Saltar a la posicin 001 Tomar foto y llamar a la polica Saltar a la posicin 0000 Dar el refresco y devolver cambio 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 como la computadora: lee y ejecuta las instrucciones del programa para determinar si el programa 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
1 2 3 4 5 6 7 8 9 10 11 12 13

Contador de programa
0000 0001 0010 0100 0101 0111 0001 0010 0100 0101 0111 0001 0010

Accin
Reiniciar la mquina Esperar por una moneda. Recibe 2.50 Saltar si la moneda no es falsa Aadir la moneda al total Saltar si no hay bastante dinero Saltar a la posicin 0001 Esperar por una moneda. Recibe 2.50 Saltar si la moneda no es falsa Aadir la moneda al total Saltar si no hay bastante dinero Saltar a la posicin 0001 Esperar por una moneda. Recibe 1.00 Saltar si la moneda no es falsa

Valor del total


0.00 0.00 0.00 2.50 2.50 2.50 2.50 2.50 5.00 5.00 5.00 5.00 5.00

FUNDAMENTOS LECCIN 2

2-19

MIGUEL . TOLEDO MARTNEZ

14 15 16 17 18 19

0100 0101 0110 1010 1011 0000

Aadir la moneda al total Saltar si no hay bastante dinero Saltar a la posicin 1010 Dar el refresco. Devolver cambio: 50 centavos Saltar a la posicin 0000 Reiniciar la mquina

6.00 6.00 6.00 6.00 6.00 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 instruccin y se ejecuta la de la posicin 0111. Esta instruccin salta hacia atrs hasta la posicin 0001, que espera a que se deposite otra moneda. El programa contina, siendo depositados 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 haciendo 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 superior 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 ensamblador traduce las instrucciones del lenguaje ensamblador a cdigo binario. Un programa en lenguaje ensamblador convencional se lista en la figura 2.4(b)

FUNDAMENTOS LECCIN 2

2-20

MIGUEL . TOLEDO MARTNEZ

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 mquina. Este es el trabajo de otro programa llamado ensamblador, el cual traduce los programas 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 mquina, no es el medio de programacin ms eficiente. La programacin en lenguaje ensamblador 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 eficientes 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 programas. 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 computador a.

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 procesos 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 programacin 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 matemtica. Por supuesto, el nombre FORTRAN deriva de la frase Formula Translation (traduc-

FUNDAMENTOS LECCIN 2

2-21

MIGUEL . TOLEDO MARTNEZ

cin de frmulas). Debido a este acoplamiento entre el lenguaje y el dominio de los problemas, 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 poderosas. 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 concentrarse 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 procesamiento por lotes monousuario. La computadora ejecuta un solo programa a la vez mientras procesa los datos en grupos o lotes. En estos primeros sistemas, los usuarios normalmente remitan 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.

FUNDAMENTOS LECCIN 2

2-22

MIGUEL . TOLEDO MARTNEZ

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 computadoras. 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 compartiendo los recursos de la computadora, logrando un mejor empleo. A esto se le llam multiprogramacin. 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 pioneros de los sistemas operativos de tiempo compartido. El tiempo compartido es un caso especial 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 simultneamente 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 tiempo 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 archivos. 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 informacin 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 organizacin se denomina sistema jerrquico de directorios.

FUNDAMENTOS LECCIN 2

2-23

MIGUEL . TOLEDO MARTNEZ

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 denominado 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 informacin 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 archivo leame.txt tiene la extensin txt, que es muy frecuente. Esta extensin indica que el archivo 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 procesador 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 gestin 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.

FUNDAMENTOS LECCIN 2

2-24

MIGUEL . TOLEDO MARTNEZ

El sistema operativo tambin proporciona servicios bsicos para ejecutar operaciones de entrada y de salida sobre distintos tipos de dispositivos. Un programa necesita saber 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 porciones 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 compartan 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 programa 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 software. Un componente clave de estos sistemas es el traductor, un programa que lee un programa escrito en un lenguaje de programacin y genera un programa de salida, posiblemente en un lenguaje de programacin distinto. La entrada al traductor se denomina programa fuente, y la salida se denomina programa destino. El lenguaje usado para el programa 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.
Programa fuente Traductor Programa destino

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 completo 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.

FUNDAMENTOS LECCIN 2

2-25

MIGUEL . TOLEDO MARTNEZ

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 especializada en fabricar bibliotecas para un propsito especfico. Por ejemplo, es frecuente que exista una biblioteca que proporcione operaciones de entrada y salida. Otra biblioteca tpica proporciona rutinas para desarrollar programas que usan interfaces grficas de usuario (GUI por Graphical User Interfaces). Tal biblioteca contendr rutinas para abrir y dibujar 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 operativo 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 programa. 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 compilador acta como una interfaz entre su programa y la mquina. Una vez que se ha ingresado un programa C++ en el sistema usando el editor C++, el compilador traducir el programa 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.
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.

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 advertencia. Adems, cualquier compilador C++ colocar el cursor en el punto en donde se detect 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 me ncion, 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.

FUNDAMENTOS LECCIN 2

2-26

MIGUEL . TOLEDO MARTNEZ

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 programa 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 Developmente 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.

FUNDAMENTOS LECCIN 2

2-27

MIGUEL . TOLEDO MARTNEZ

Introduccin/ Edicin del programa

Guardado

Archivo fuente (.cpp)

Archivos de encabezado (.h)

Compilar

Falla

Corregir errores

Exito

Archivo objeto (.obj)

Archivos de librera (.lib)

Vincular/Cargar

Archivo ejecutable (.exe ) 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.

FUNDAMENTOS LECCIN 2

2-28

MIGUEL . TOLEDO MARTNEZ

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 bastante econmicas como para que la gente las comprara para su uso personal y para sus negocios. 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 trabajo 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 compartido 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 organizacin. 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 capacidades a los usuarios. La informacin se comparte con facilidad a travs de redes de computadoras 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 redes de computacin y de aplicaciones distribuidas cliente/servidor. En la actualidad, los sistemas operativos ms comunes como UNIX, los sistemas basados en Windows de Microsoft 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 populares, 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 significa COmmon Business-Oriented Language, fue desarrollado para la programacin de problemas 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 previos, BCPL y B. BCPL fue desarrollado en 1976 por Martn Richards como lenguaje para

FUNDAMENTOS LECCIN 2

2-29

MIGUEL . TOLEDO MARTNEZ

escribir software de sistemas operativos y compiladores. Ken Thompson model muchas caractersticas en su le nguaje 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 Ritchie en los Laboratorios 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 desarrollo 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 Programming Language, escrito por Brian Kernigham y Dennis Ritchie (1977). El lenguaje C se convirti en un lenguaje comercial popular que el ANSI (American National Standards 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 programas se escriban con las especificaciones estndar y sean porttiles entre diversos sistemas.
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 cambio en el cdigo fuente del programa.

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 programacin 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 proporcionando 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 ensamb lador. 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 actualidad se escribe usando C o C++. De hecho se ha liberado ya un estndar ANSI para C++.

FUNDAMENTOS LECCIN 2

2-30

MIGUEL . TOLEDO MARTNEZ

Se han desarrollado muchos otros lenguajes orientados a objetos, incluyendo princ ipalmente 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 bibliot eca 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 lecciones 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 demostraciones en el sitio Web www.java-soft.com. Java incluye extensas bibliotecas de clases con componentes para multimedia, conectividad de red, subprocesos mltiples, grficos, 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 mantenimiento 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 independientes 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

FUNDAMENTOS LECCIN 2

2-31

MIGUEL . TOLEDO MARTNEZ

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 computadoras 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 considerablemente. 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 especificaran detalles de cmo debera verse el grfico, dando informacin tan variada como los puntos finales del grfico, la escala, cmo y dnde habra que colocar las etiquetas. Esencialmente, el usuario tena que hacer la mayora del trabajo. Actualmente las nuevas herramientas 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 cdigo.

FUNDAMENTOS LECCIN 2

2-32

MIGUEL . TOLEDO MARTNEZ

Otro factor que incrementa la complejidad es la interaccin entre componentes. Por ejemplo, un procesador de texto puede contener un componente para correccin ortogrfica 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 Software es producir un software que sea:
Fiable. Comprensible. Rentable. Adaptable. Reusable.

Examinemos cada una de estas propiedades. Un software debera ser fiable, es decir, debera funcionar correctamente y sin fallas. Imagine que ha pasado varias horas escribiendo un texto para un curso en un procesador de textos y, cuando lo tiene casi terminado, el procesador de textos falla de forma inesperada. Se pierde todo su trabajo. Sin duda, estara muy enfadado y tendra todo el derecho a estarlo. Aunque la falla de un procesador de textos es molesta, la prdida es insignificante comparada con la prdida potencial cuando falla un sistema crtico: las vidas humanas. Un sistema de seguridad crtico es aquel en el que una falla podra significar la prdida de una vida humana. Ejemplos de este tipo de sistemas son los aviones militares y civiles, las mquinas de terapia radioactiva y los marcapasos. Una falla del software en cualquiera de estos sistemas podra tener consecuencias desastrosas. Una forma de conseguir que el software sea ms fiable es hacerlo ms fcil de comprender o comprensible. Es decir, lograr que la operacin y el diseo del sistema sean fcilmente entendibles por otros profesionales del software. La comprensibilidad es muy importante porque los software de gran tamao son construidos por muchas personas agrupadas en equipos de trabajo. La construccin del software ir mejor y con menos errores si todo el mundo que trabaja con la aplicacin entie nde la operatividad global del sistema y sus componentes.

FUNDAMENTOS LECCIN 2

2-33

MIGUEL . TOLEDO MARTNEZ

La comprensibilidad es tambin muy importante debido a la larga vida del software. Un producto de software suele evolucionar con el tiempo, y a menudo Ingenieros del Software, que no tienen nada que ver con el producto original, son los que se encargan de introducir mejoras y arreglar los errores del producto. Este proceso se llama mantenimiento del software. Si la prxima generacin de Ingenieros del Software comprende cmo funciona, las modificaciones de los sistemas complejos, aunque difciles, se podrn llevar a cabo. Por el contrario, es extremadamente difcil hacer modificaciones o correcciones para un sistema pobremente diseado. A menudo, es ms econmico reconstruir el sistema desde el principio. Como medida de la dificultad del mantenimiento del software, los expertos estiman que el 67% del costo de desarrollo del software se dedica al mantenimiento. Este costo puede reducirse cuando el diseo y el funciona miento del sistema son comprensibles. Por la discusin previa, se puede ver que un software debera ser rentable. Es decir, el costo de desarrollo y mantenimiento del software no debera exceder el beneficio esperado por la venta del producto. Muchas compaas de software han ido a la bancarrota por haber subestimado los costos de desarrollo de un sistema. Un componente muy relacionado con el costo es el tiempo que se necesita para disear y construir el software. Ser el primero en introducir un producto en el mercado da a una compaa una decidida ventaja sobre sus competidores. Reducir el tiempo para desarrollar un producto puede reducir costos y por lo tanto, incrementar los beneficios. Debido a la larga vida del software, el software debera ser adaptable. A menudo, es difcil predecir qu caractersticas y capacidades pueden querer los clientes del software. El mantenimiento adaptativo involucra cambios y aadiduras al software que mejoran la efectividad o competitividad del producto. Diseando software al que puedan aadir fcilmente en el futuro nuevas caractersticas y capacidades, el Ingeniero del Software puede reducir los costos de mantenimiento global. Por el alto costo de desarrollo, el software debera ser reutilizable. Si se ha de gastar muchos millones de dlares en un software, tiene sentido hacer sus componentes flexibles de forma que puedan ser reutilizados cuando se desarrolle un nuevo sistema. Esta estrategia es ciertamente una prctica frecuente en otros negocios. La reutilizacin puede mejorar la fiabilidad, reducir los costos de desarrollo y mejorar el mantenimiento.
PRINCIPIOS DE INGENIERIA DE SOFTWARE

Los Ingenieros del Software han desarrollado un cierto nmero de principios de diseo que ayudan a llevar a cabo los objetivos marcados en la seccin anterior gestionando la inevitable complejidad del software de sistemas grandes, estos principios son:
Principios de diseo en Ingeniera de Software Abstraccin. Encapsulacin o ocultamiento de la informacin. Modularidad.

La abstraccin es el proceso de extraer las propiedades relevantes de un objeto al tiempo que se ignoran los detalles no esenciales. Las propiedades extradas definen una
FUNDAMENTOS LECCIN 2

2-34

MIGUEL . TOLEDO MARTNEZ

vista del objeto. Un vendedor de coches podra ver un coche desde el punto de vista de sus caractersticas de venta. Propiedades relevantes seran el precio, el color, el equipo opcional y la duracin de la garanta. Por otro lado, un mecnico vera el coche desde el punto de vista de los sistemas que necesitan mantenimiento. Para l, propiedades relevantes seran el motor, sistema electrnico de encendido, tipo de aceite, el tamao del filtro de aceite y el nmero y tipo de bujas. Las propiedades relevantes de un objeto vienen definidas por la forma en que se usa o manipula el objeto. Claramente las propiedades de un coche, importantes para un vendedor, son distintas de las de un mecnico. Enfocndose sobre las propiedades relevantes e ignorando los detalles irrelevantes, se puede reducir la complejidad de manejo de un objeto. La abstraccin es fundamental para gestionar la complejidad del diseo y escritura del software. Por ejemplo, consideremos la tarea de encontrar un archivo en un disco y leer su contenido. Si tuvisemos que manejar todos los detalles de bajo nivel para saber cmo encontrar un archivo concreto en el disco y cmo leer sus contenidos, sera una tarea bastante difcil. Deberamos comprender cmo se almacenan los datos en los discos y todos los mandatos de bajo nivel que controlan las operaciones del manejador de disco. Afortunadamente, existe un sistema de archivos que proporciona una visin abstracta de la informacin en un disco, de forma que se pueden ignorar los detalles de bajo nivel. Se puede acceder al archivo sin ms que proporcionar su nombre. El sistema de archivos maneja los detalles de bajo nivel para leer los datos en el disco y devolverlos al programa. La encapsulacin u ocultamiento de la informacin, es el proceso de separar los aspectos de un objeto en externos e internos. Los aspectos externos de un objeto deben ser visibles o conocidos, para otros objetos del sistema. Los aspectos internos son detalles que no deberan afectar a otras partes del sistema. Ocultar ciertos aspectos de un objeto permite modificarlos sin afectar a otras partes del sistema. Por ejemplo, los aspectos externos del radio de un coche son los controles y los tipos de conexiones necesarios para conectar el radio al sistema elctrico, los altavoces y la antena. Los aspectos internos son los detalles del funcionamiento del radio. Para instalar y usar el radio en un coche, no se necesita conocer nada de ingeniera elctrica. Esencialmente, el radio puede verse como una caja negra con botones y cables. Un gran beneficio del ocultamiento de informacin es que ayuda a hacer cambios en sistemas complejos. Se puede reemplazar la radio de un coche por un reproductor de CD sin afectar a otros componentes del vehculo. Debido a que el manejo de la radio ha sido encapsulado y su vista externa est definida mediante controles y conectores, se puede quitar el radio viejo, insertar el nuevo y conectarlo. Cuando se aplica al diseo de sistemas de software, la encapsulacin permite que se pueda cambiar el comportamiento interno de un componente software sin afectar a otros aspectos del sistema. Por ejemplo, si el principio de encapsulacin ha sido aplicado correctamente a un sistema automtico de correo de voz, debera ser capaz de cambiar el componente que se encarga de almacenar los mensajes sin afectar a otras partes del sistema. Se podra incrementar el nmero de mensajes que un usuario puede almacenar. Si el sistema

FUNDAMENTOS LECCIN 2

2-35

MIGUEL . TOLEDO MARTNEZ

de almacenamiento de mensajes ha sido debidamente ocultado y aislado, este cambio no debera afectar a la forma en que los usuarios acceden al sistema y dictan o leen mensajes. La modularidad se refiere al proceso de dividir un objeto en piezas ms pequeas, o mdulos, para que algn objetivo sea ms fcil de conseguir. Por ejemplo, se podra dividir un sistema complejo en componentes, de forma que cada componente pueda ser probado de forma individual. Cuando se monta un automvil, sus distintos componentes, tales como el motor, la transmisin y el radio, han sido ya probados individualmente. La modularidad reduce el tiempo para probar el coche y la probabilidad de que un coche sea montado con un defecto. De forma similar, se podra estructurar un objeto para que sea fcil reutilizar sus componentes. La mayora de los sistemas complejos son modulares. Estn construidos combinando componentes o paquetes, de funcionamiento ms sencillo. Una adecuada modularizacin de un sistema complejo tambin ayuda a manejar su complejidad. Dividir las cosas en piezas ms pequeas y ms sencillas de entender hace que un sistema grande sea ms sencillo de comprender. Por ejemplo, se puede dividir un automvil en subsistemas. Los subsistemas de un automvil incluyen el sistema de refrigeracin (radiador, bomba de agua, termostato, etc.); el sistema de arranque (batera, arranque, bujas, etc.) y el sistema de expulsin de gases (catalizador, silenciador, etc.). Pensar en un automvil en trminos de grupos de abstracciones relacionadas permite comprender ms rpidamente la estructura global del coche y su funcionamiento. Una clasificacin de objetos basada en alguna relacin entre ellos es una jerarqua. Las jerarquas tambin ayudan a comprender sistemas y organizaciones complejas. La figura 2.10 incluye un diagrama de organizacin de una compaa tpica. El diagrama muestra la jerarqua de empleados basndose en la relacin de quin informa a quin. La jerarqua de la compaa ayuda a los empleados a comprender la estructura de su compaa y su relacin dentro de ella.

FUNDAMENTOS LECCIN 2

2-36

MIGUEL . TOLEDO MARTNEZ

Director General

Director de ventas

Tesorero

Director de investigacin

Director de ope raciones

Gerente de ventas zona Norte

Jefe cientfico

Gerente de patentes

Gerente de ventas zona Sur

Desarrollo de lenguajes de programacin Desarrollo del sistema operativo Desarrollo de aplicaciones Investigacin de patentes

Gerente de ventas zona Este Gerente de ventas zona Oeste

Aplicacin de patentes

Figura 2.10. Diagrama de la organizacin de una compaa

Una forma de ordenar abstracciones similares, en sistemas complejos compuestos de abstracciones, es ir del concepto ms general al menos general. Los cient ficos han usado esta tcnica desde hace mucho tiempo para identificar y clasificar especies del reino animal y vegetal. Un orden jerrquico basado en las relaciones de la naturaleza se denomina taxonoma. Tal jerarqua hace que las abstracciones sean ms fciles de entender porque expone la relacin entre caractersticas y comportamientos comunes. DISEO ORIENTADO A OBJETOS Para sustentar los principios descritos anteriormente, se han desarrollado distintas metodologas de diseo y programacin. Recientemente, un enfoque : el diseo y la programacin orientada a objetos, se ha mostrado particularmente prometedor para ayudar a los desarrolladores de software a lograr los objetivos de fiabilidad, rendimiento, adaptabilidad, comprensibilidad y reutilidad. El diseo de software orientado a objetos elabora el software como un modelo muy prximo a la forma en que pensamos e interactuamos en el mundo real. A temprana edad, aprendemos acerca de los objetos y de cmo se manipulan. Los bebs, por ejemplo, aprenden que si mueven un sonajero har ruido. A medida que desarrollan sus capacidades cognoscitivas, son conscientes de que los objetos tienen propiedades y empiezan a pensar en

FUNDAMENTOS LECCIN 2

2-37

MIGUEL . TOLEDO MARTNEZ

ellos de forma abstracta. El beb pronto se dar cuenta de que hacer ruido es una capacidad de todos los sonajeros. Para ilustrar como la visin del mundo, como un conjunto de objetos, facilita el manejo de su complejidad, consideremos una actividad que muchos de nosotros hacemos: ver la televisin. Mirando la televis in recuerda que su programa favorito empezar pronto en un canal distinto. Toma el control, oprime el botn y cambia al canal deseado. Analicemos esta actividad. Primero, tom el control, que es un objeto fsico. Dicho objeto tiene propiedades, tales como peso y tamao, y adems puede hacer algo: enviar mensajes a la televisin. No est claro de cmo lo hace o cmo estn codificados los mensajes, pero no es necesario saberlo. Slo necesita saber cmo se oprimen los botones adecuados. Los botones son la interfaz del control. Si se conoce la interfaz de un objeto, se puede usar dicho objeto para hacer algo, aunque no se sepa cmo funciona. Cuando oprimi los botones adecuados hizo que el control enviase algunos mensajes al televisor. El televisor es tambin un objeto fsico con varias propiedades. Al recibir el mensaje del control, el televisor cambi al canal deseado. Estas interacciones son tan rutinarias que es fcil no darse cuenta de lo sorprendente de esta actividad. Ha sido capaz de hacer que dos objetos interaccionen y ejecuten una actividad compleja sin comprender el funcionamiento interno de ninguno de ellos. Fue capaz de hacerlo as porque dispona de las abstracciones apropiadas para ambos objetos. Adems, su abstraccin mental del control implica que puede ir a casa de un amigo y ser capaz de usar su control y su televisor, incluso aunque tengan una marca de televisor distinta. Objetos similares muestran un comportamiento similar. Esta forma de afrontar nuestro mundo puede ser aplicada al diseo y a la programacin de software. Un paso clave en el desarrollo de un sistema complejo usando diseo orientado a objetos es determinar los objetos que constituyen el sistema. Creando cuidadosamente abstracciones de estos objetos y separando su implementacin interna de su comportamiento externo, se puede manejar la complejidad de un sistema de software de gran tamao. Por lo tanto, a qu nos referimos exactamente cuando decimos objeto? Ciertamente, las cosas fsicas son objetos. Un baln, un archivero, una agenda, un rbol y una computadora son todos objetos. Qu pasa con cosas como un nmero, una palabra, una cuenta bancaria o una nota musical? No son objetos fsicos, pero son objetos porque tienen propiedades, o atributos, y podemos llevar a cabo acciones sobre ellos. Un nmero tiene un valor, y se pueden sumar dos nmeros. Una palabra tiene longitud y, si estamos hablando de un procesador de textos, se puede borrar o insertar en un documento. Una nota musical tiene tono, duracin y volumen. Casi siempre, algo es un objeto si tiene:
Un nombre. Propiedades asociadas al mismo. Mensajes que puede entender.

FUNDAMENTOS LECCIN 2

2-38

MIGUEL . TOLEDO MARTNEZ

Cuando un objeto recibe un mensaje, se produce la ejecucin de una accin o cambia una propiedad del objeto como consecuencia de dicho mensaje, En el ejemplo del control, cuando el televisor recibe el mensaje cambio de canal desde el control, cambia de canal. Si vamos a adoptar un enfoque orientado a objetos para desarrollar software, tiene sentido usar un lenguaje de programacin que sustente esta forma de pensar y permita implementar soluciones en trminos de objetos. Un lenguaje que tiene esas caractersticas es un lenguaje de programacin orientada a objetos. Observe que se ha tenido cuidado de incluir la frase implementar un diseo orientado a objetos. Ya que se puede usar un lenguaje orientado a objetos, pero no pensar en trminos de objetos. Algunos lenguajes orientados a objetos populares actualmente son Smalltalk y C++. Las caractersticas que incluyen para manejar objetos son, en su mayor parte, idnticas. Difieren principalmente en la terminologa usada para referirse a los objetos y en la sintaxis del lenguaje.

FUNDAMENTOS LECCIN 2

2-39

MIGUEL . TOLEDO MARTNEZ

LO QUE NECESITA SABER Antes de continuar con la siguiente leccin, asegrese de haber comprendido los siguientes conceptos :
q q q q q q q q q q q q q q q q q q q q q q q q q

Las computadoras son dispositivos capaces de efectuar clculos y tomar decisiones lgicas a velocidades millones y hasta miles de millones de veces ms rpidas de lo que pueden hacerlo los seres humanos. La velocidad de una computadora se define habitualmente en ciclos por segundo. Las computadoras ms frecuentes operan entre 700 Mhz a 2.2 Ghz. Las computadoras usan el sistema numrico binario. A un dgito binario se le denomina bit. La unidad bsica de almacenamiento en una computadora es un byte u 8 bits. Los nmeros negativos se representan habitualmente en complemento a dos. Con esta representacin, un nmero de n bits puede representar valores desde 2 n 1 hasta 2 n 1 - 1. Las computadoras procesan datos controlados por programas de cmputo. Los distintos dispositivos (como el teclado, la pantalla, los discos, la memoria y las unidades de procesamiento) de que est compuesto un sistema de cmputo se conocen como hardware. Los programas que se ejecutan en una computadora se conocen como software. La unidad de entrada es la seccin receptora de la computadora. Actualmente, la mayor parte de la informacin se introduce a la computadora a travs de teclados como los de las mquinas de escribir. La unidad de salida es la seccin de embarques de la computadora. La mayor parte de la salida de informacin de las computadoras actuales se presenta en pantalla o se imprime en papel. La unidad de memoria es la seccin de almacn de la computadora y con frecuencia se llama m emoria primaria o, simplemente, memoria. El tamao de la memoria de acceso aleatorio de una computadora, RAM, se mide en megabytes (MB). El rango de memoria de las PC actuales vara de 128 a 640 MB. La unidad central de proceso, o CPU, es el cerebro de la computadora. Es ah donde se ejecutan las operaciones aritmticas y lgicas. La ALU (unidad aritmtica y lgica) efecta clculos y toma decisiones. Los programas y datos que no estn utilizando se colocan en dispositivos de almacenamiento secundario (como discos) hasta que vuelven a ser necesarios. La capacidad de los discos duros en las computadoras personales actuales vara desde 4 hasta 120 gigabytes. En el procesamiento por lotes monousuario, la computadora ejecuta un solo programa todo el tiempo, mientras procesa la informacin en grupos o lotes. Los sistemas operativos son software que simplifican el uso de las computadoras y ayudan a obtener su mejor desempeo. Un sistema operativo es el software de sis tema que controla y gestiona los recursos de la comp utadora, tales como la memoria, los dispositivos de entrada y salida y la CPU. Los sistemas operativos de multiprogramacin permiten la operacin simultnea de muchas tareas en la computadora. La computadora comparte sus recursos entre dichas tareas. El tiempo compartido es un caso especial de multiprogramacin en el que los usuarios accesan la comp utadora a travs de terminales. Los programas de los usuarios parecen estar ejecutndose simultneamente. Con la computacin distribuida, el cmputo de una organizacin se reparte a travs de redes a los sitios donde se efecta el trabajo real de la organizacin. Los servidores almacenan programas y datos que pueden compartirse con computadoras cliente distribuidas a travs de una red. De ah el trmino cliente/servidor. Un lenguaje de programacin es un lenguaje que da instrucciones u rdenes a una computadora. Las computadoras slo pueden entender directamente su propio lenguaje de mquina particular.

FUNDAMENTOS LECCIN 2

2-40

MIGUEL . TOLEDO MARTNEZ

Los lenguajes de mquina consisten de cadenas de nmeros (unos y ceros) que ordenan a la computadora realizar sus operaciones ms elementales, una a la vez. Los lenguajes de mquina son dependientes del equipo. Abreviaturas en el idioma ingls son la base de los lenguajes ensambladores. Los ensambladores traducen los programas que estn en lenguaje ensamblador a lenguaje de mquina. Un compilador traduce un lenguaje de programacin a lenguaje de mquina. Un lenguaje de m quina esta formado por operaciones primitivas que un computador puede ejecutar directamente. Los compiladores traducen programas escritos en lenguaje de alto nivel a lenguaje de mquina. Los lenguajes de alto nivel contienen palabras en ingls y notaciones matemticas convencionales. Los programas intrpretes ejecutan directamente programas en lenguaje de alto nivel, sin la necesidad de compilarlos en lenguaje de mquina. Aunque los programas compilados se ejecutan ms rpido que los programas interpretados, los intrpretes son populares en los entornos de desarrollo de programas, donde con frecuencia se recompilan los programas, a medida que se aaden caractersticas nuevas y se corrigen errores. Una vez desarrollado un programa, puede producirse una versin compilada que se ejecutar con mayor eficiencia. Es posible escribir programas en C y C++ que sean portables a la mayora de las computadoras. FORTRAN (Traductor de Frmulas) sirve para aplicaciones matemticas. COBOL (Lenguaje Comn Orientado a Negocios) se emplea principalmente para aplicaciones comerciales que requieren manipular grandes cantidades de datos de manera precisa y eficiente. La programacin estructurada es un enfoque disciplinado para escribir programas ms claros que los programas no estructurados, as como ms fciles de probar, depurar y modificar. Pascal se dise para ensear programacin estructurada en entornos acadmicos. Ada se desarroll bajo el patrocinio del Departamento de Defensa de los Estados Unidos, tomando como base Pascal. El entorno multitareas permite que el programador especifique actividades paralelas. Todos los sistemas C++ consisten de tres partes: el entorno, el lenguaje y las bibliotecas estndar. Las funciones de biblioteca no son parte del lenguaje C++ mismo; estas funciones efectan operaciones como los clculos matemticos ms comunes. Los programas en C++ por lo general pasan por seis fases para poder ser ejecutados: edicin, preprocesamiento, compilacin, enlace, carga y ejecucin. El programador escribe los programas en un editor y hace las correcciones necesarias. Los nombres de archivos de C++ en los sistemas Borland terminan con la extensin .CPP. El compilador traduce un programa C++ a cdigo de lenguaje de mquina (o cdigo objeto). El preprocesador obedece directivas que, generalmente, indican archivos que se incluirn en el archivo a compilar y smbolos especiales que deben ser remplazados con cdigo de programa. El enlazador vincula el cdigo objeto con el cdigo de las funciones faltantes, produciendo una imagen ejecutable (sin partes faltantes). Si el programa se compila y enlaza correctamente, se genera un archivo que es la imagen ejecutable del programa. El cargador toma la imagen ejecutable del disco y la transfiere a la memoria. La computadora, controlada por su CPU, ejecuta el programa una instruccin a la vez. Los errores como la divisin entre cero suceden durante la ejecucin del programa, por lo que se llaman errores en tiempo de ejecucin. La divisin entre cero generalmente es un error fatal, es decir, un error que provoca la terminacin inmediata del programa, sin haber realizado correctamente su tarea. Los errores no fatales permiten que los programas se ejecuten hasta su terminacin, produciendo con frecuencia resultados incorrectos. Hay muchas variaciones entre las distintas implementaciones de C++ y las distintas computadoras que hacen que la portabilidad sea una meta difcil de lograr. El software de aplicacin es software que resuelve un problema particular o proporciona un servicio en particular.

q q q q q

q q q q q q q q

q q q q q

q q q q

q q

FUNDAMENTOS LECCIN 2

2-41

MIGUEL . TOLEDO MARTNEZ

q q q q q q

El software de sistemas es software que sustenta el desarrollo y ejecucin de otros programas. La informacin se almacena en los discos usando una jerarqua de archivos para poder ser encontrada y recuperada rpidamente. Un algoritmo es una descripcin detallada, paso a paso, de cmo realizar alguna tarea. El objetivo de un ingeniero del software es producir software que sea fiable, comprensible, rentable, adaptable y reutilizable. La abstraccin es el proceso de aislar los aspectos esenciales inherentes a un objeto al tiempo que se ignoran los detalles irrelevantes o no esenciales. La encapsulacin u ocultamiento de la informacin es el proceso de separar los aspectos externos de un objeto, que pueden ser vistos o accedidos por otros objetos, de los detalles de implementacin interna, que deberan estar ocultos para otros objetos. La modularizacin es el proceso de dividir un objeto en piezas ms pequeas de forma tal que cada objeto ms pequeo se pueda tratar de forma individual. Una herencia de jerarqua es una forma de organizar un conjunto de abstracciones desde lo ms general a lo particular. El diseo y programacin orientado a objetos es un paradigma de la programacin segn el cual un sistema software se modela como un conjunto de objetos que interaccionan entre s. En C++, una abstraccin se construye creando una clase. Una clase encapsula las propiedades y comportamiento de un objeto. Los miembros de datos de una clase son las propiedades o atributos de la clase. Los miembros de tipo funcin de una clase son el comportamiento de la clase. Una clase base, o superclase, es aquella de la que se pueden derivar otras clases ms especializadas. Una clase derivada o subclase, hereda propiedades de una clase base. El polimorfismo es la capacidad de asumir diferentes formas. En un lenguaje orientado a objetos, se proporciona el polimorfismo permitiendo que un mensaje, o miembro de tipo funcin, signifique cosas distintas dependiendo del tipo de objeto que recibe el mensaje. La instanciacin es el proceso de crear un objeto concreto a partir de la abstraccin clase.

q q q q q q q q q

FUNDAMENTOS LECCIN 2

2-42

MIGUEL . TOLEDO MARTNEZ

PREGUNTAS Y PROBLEMAS
PREGUNTAS 1. 2. 3. 4. 5. 6. Suponga un microprocesador con una frecuencia de reloj de 120 Mhz. Si una suma se puede hacer en un ciclo de reloj, Cuntos nanosegundos son necesarios para hacer una suma? Explique la diferencia entre RAM y ROM. Suponga que un computador tiene una capacidad de memoria de 16 Megabytes. cuntos bits se necesitan para representar una direccin? Una computadora tiene 640 Kbytes de memoria. Cuntos bytes de memoria tiene exactamente? Cuntos bytes de informacin contiene un CD-ROM tpico? Averige todo lo que pueda de las computadoras que hay en el laboratorio de su escuela. Como mnimo debera obtener la siguiente informacin:
a) b) c) d) e) f) Nombre de la compaa que manufactur los microprocesadores de la mquina. La velocidad del reloj del procesador. La cantidad de RAM en la mquina. El tamao del disco duro. La resolucin del monitor grfico. El nombre y la versin del sistema operativo.

7.

D el valor decimal de los siguientes nmeros:


a) b) c) d) e) f) g) h) i) j) k) l) m) 010012 0374 8 0110100 2 4033 5 A32E16 2345 8 1211 4 0111111 2 02F3D16 010100100112 1776 8 ABBA16 4ACDC16

8.

Convierta los nmeros siguientes a la base especificada:


a) b) c) d) e) f) g) h) 7778 a hexadecimal. AD11 16 a binario. 010010112 a octal. 1111 16 a octal. 010011112 a hexadecimal. 010011112 a octal. 3771 8 a binario . 4356 16 a octal.

9.

D el valor decimal de los nmeros de 8 bits en complemento a dos siguientes:


a) b) c) d) e) f) 101011002 100000012 110000002 101001012 111111112 100000002

10. Calcule las siguientes sumas y productos. Las respuestas deberan darse en binario.
a) b) c) d) e) 01000110 + 0001010 00111011 + 0101100 00000111 + 0000001 00100111 + 0001111 00010101 x 0001000

FUNDAMENTOS LECCIN 2

2-43

MIGUEL . TOLEDO MARTNEZ

f) g) h)

00001000 x 0000011 00001001 x 0000101 00001011 x 0000100

11. Llene los siguientes espacios en blanco:


a. b. c. d. e. f. g. h. i. La compaa que populariz la computacin personal fue ___________________. La computadora que hizo que la computacin personal entrara en los negocios y la industria fue la ________________. Las computadoras procesan informacin bajo el control de conjunto de instrucciones llamadas ______________ de cmputo. Las seis unidades clave de la computadora son ___________, _______________, ______________, ______________, _______________, _________________. Las tres clases de lenguajes estudiados en esta leccin son: _____________, _______________, _______________. Los programas que traducen programas de lenguaje de alto nivel a lenguaje de mquina se llaman ________________. C es ampliamente conocido por ser el lenguaje de desarrollo del sistema operativo ______________. Wirth desarroll el lenguaje __________ para ensear programacin estructurada en las universidades. El Departamento de Defensa de Estados Unidos desarroll el lenguaje Ada con una capacidad llamada ___________, la cual permite que los programadores especifiquen que varias actividades suceden en paralelo.

12. Llene los espacios en blanco de las siguientes oraciones. a. b. c. d. e. f. g. h. i. j. Qu unidad lgica recibe la informacin de fuera de la computadora para emplearla dentro de sta? __________. El proceso de indicarle a la computadora que resuelva problemas especficos se llama ____________. Qu tipo de lenguaje de cmputo se vale de abreviaturas tipo ingls para indicar instrucciones de lenguaje de mquina? _______________. Qu unidad lgica enva a distintos dispositivos la informacin que ya ha sido procesada por la computadora, de modo que puede utilizarse fuera de la mquina? __________________. Qu unidad lgica de la computadora retiene informacin? ________________. Qu unidad lgica de la computadora realiza clculos? Qu unidad lgica de la computadora toma decisiones lgicas? __________________. El nivel de lenguaje de cmputo ms adecuado para que el programador escriba programas rpida y fcilmente es ________________. El nico lenguaje que puede entender de manera directa la computadora se llama ____________ de la computadora. Qu unidad lgica de la computadora coordina las actividades de las dems unidades lgicas?

13. Clasifique como hardware o software los siguientes elementos:


a. b. c. d. e. f. CPU Compilador de C++ ALU Preprocesador de C++ Unidad de entrada Programa editor

14. Mencione los tres niveles de software y describa las caractersticas generales de cada uno. 15. Por qu necesitara escribir un programa en un lenguaje independiente de la mquina, en vez de en uno dependiente de la mquina? Por qu sera ms adecuado un lenguaje dependiente de la mquina para escribir ciertos tipos de programas? 16. Explique la diferencia operacional entre un compilador y un intrprete. 17. Un compilador traduce un programa fuente a un programa _______________________. 18. Cierto o falso: un programa C tambin es un programa C++. 19. Llene los espacios en blanco de las siguientes oraciones referentes al entorno de C++.
a. b. c. d. Los programas C++ normalmente se introducen en la computador por medio de un programa ______________. En los sistemas C++, un programa ___________ se ejecuta antes de iniciar la fase de traduccin del compilador. El programa ___________ combina la salida del compilador con varias funciones de biblioteca produciendo una imagen ejecutable. El programa __________ transfiere la imagen ejecutable de un programa C++ desde el disco a la memoria.

20. Explique qu pasa y la accin que se realizar cuando su compilador C++ encuentre un error en su programa

FUNDAMENTOS LECCIN 2

2-44

MIGUEL . TOLEDO MARTNEZ

21. Cul es el propsito de un vinculador? 22. Explique por qu C y C++ se conocen como lenguajes de nivel medio. 23. Cul es la diferencia principal entre los lenguajes C y C++? 24. El archivo generado por su compilador C++ tiene una extensin de _______________. 25. El archivo que genera su vinculador C++ tiene una extensin de __________________. 27. Considere un cajero automtico en un banco. Cules son algunas de las propiedades relevantes del cajero para las siguientes persona?
a) b) c) d) Un usuario. Una persona de mantenimiento. Un empleado del banco. El presidente del banco.

28. D un ejemplo de encapsulacin en el funcionamiento de un contestador automtico telefnico. 29. La mayor parte de los sistemas son modulares. Nombre algunos de los componentes/mdulos de los siguientes sistemas:
a) b) c) d) e) Equipo de msica. Televisor. Lavadora . Video. Bicicleta.

30. La mayora de las organizaciones tienen una estructura jerrquica. Elija una organizacin a la que pertenezca y dibuje un diagrama que ilustre su jerarqua. 31. Son los siguientes elementos objetos? Justifique su respuesta.
a) b) c) d) e) Belleza. Tiempo. Celos. Arbol. Bosque.

32. Casi todos los dispositivos electrnicos han sido diseados siguiendo el principio de modularidad, que hace que los dispositivos sean ms fciles e fabricar y reparar. Nombre los principales componentes de los siguientes dispositivos:
a) b) c) d) e) f) Televisor. Video. Horno de microondas. Equipo de msica. Radio. Telfono .

33. Por qu se presta tanta atencin hoy da a la programacin orientada a objetos en general y a C++ en particular? 34. Indique los trminos correctos de lenguaje de objetos en los espacios en blanco de las siguientes oraciones:
a. b. c. d. e. Los seres humanos pueden ver la pantalla de televisin y observar puntos de color o pueden retroceder y ver a tres personas sentadas en una mesa de conferencias. Este es un ejemplo de cierta capacidad llamada______________________. Si vemos un automvil como objeto, el hecho de que sea un convertible es un atributo/comportamiento (seleccione uno) ___________ del automvil. El hecho de que un automvil pueda acelerar y desacelerar, girar a la izquierda y a la derecha y avanzar y retroceder indica que se trata de un ejemplo de ___________ de un objeto automvil. Cuando un tipo de clase nuevo hereda caractersticas de otros tipos de clases existentes, se llama herencia _________________. Los objetos se comunican enviando _____________entre ellos.

FUNDAMENTOS LECCIN 2

2-45

MIGUEL . TOLEDO MARTNEZ

f. g. h. i. j.

Los objetos se comunican entre ellos a travs de ___________ bien definidas. Generalmente a los objetos no se les permite saber cmo estn implementados otros objetos; esta propiedad se llama _________________. Los ______________ de la especificacin de un sistema ayudan al programador de C++ a determinar las clases que se necesitarn para implementar el sistema. Los componentes de datos de una clase se llaman __________ y los componentes de funcin de una clase se llaman ____________. A un caso de un tipo definido por el usuario se le llama __________________.

35. D una respuesta breve para cada una de las siguientes preguntas de pensando en objetos:
a. b. c. d. e. Por qu decimos que primero debemos abarcar la programacin estructurada a detalle antes de proceder con el estudio profundo de la programacin orientada a objetos? Cules son los pasos tpicos (mencionados en el texto) del proceso de diseo orientado a objetos? Cmo presentan los seres humanos la herencia mltiple? Qu clases de mensajes se enva la gente? Los objetos se envan mensajes a travs de interfaces bien definidas. Qu interfaces presenta un radio de automvil (objeto) a su usuario (un objeto personal)?

36. Posiblemente est utilizando en su mueca uno de los tipos ms comunes de objetos que hay en el mu ndo: un reloj. Explique cmo se aplican los siguientes trminos y conceptos a la nocin de reloj: objeto, atributos, comportamientos, clase, herencia (considere, por ejemplo, un reloj con alarma), abstraccin, simulacin, mensajes, encapsulamiento, interfaz, ocultamiento de informacin, datos miembro y funciones miembro.

FUNDAMENTOS LECCIN 2

2-46

MIGUEL . TOLEDO MARTNEZ

EXAMEN BREVE 2-1


1.

D el decimal de los siguientes nmeros:


a. b. c. d. 01001 2 03748 40335 A32E16

2.

Convierta los siguientes nmeros a la base especificada


a. b. c. 7778 a hexadecimal AD1116 a binario 01001011 2 a octal

3.

D el valor decimal de los nmeros de 8 bits en complemento a dos siguientes:


a. 10101100 2

4.

Calcule las siguientes sumas y productos . Las respuestas debern darse en binario.
a. b. 01000110 2 + 00010102 00010101 2 x 00010002

EXAMEN BREVE 2-2


1.

Suponga un microprocesador con una frecuencia de reloj de 120 Mhz. Si una suma se puede hacer en un ciclo de reloj Cuntos nanosegundos son necesarios para hacer una suma? Explique que es el hardware y que es el software. Suponga que una computadora tiene una capacidad de memoria de 16 megabytes Cuntos bits se necesitan para representar una direccin? Una computadora tiene 640 Kbytes de memoria Cuntos bytes de memoria tiene exactamente?.

2. 3.

4.

EXAMEN BREVE 2-3


1. 2. 3. 4. 5. 6.

Por qu se dice que C++ es un lenguaje de nivel medio? Mencione los pasos que deben realizarse para traducir un programa de cdigo fuente C++ a un programa ejecutable. Qu tipo de archivo produce el paso de compilacin? Qu tipo de archivo produce el paso de vinculacin? Cul es el propsito del paso de vinculacin? Cul es la diferencia principal entre el lenguaje C y el lenguaje C++?

FUNDAMENTOS LECCIN 2

2-47

MIGUEL . TOLEDO MARTNEZ

RESPUESTAS EXAMEN BREVE 2-1


1.

120 Mhz = 120 x 10 6 hz 1 ciclo del reloj = 1/120 x 10 -6 segundos = 8.33 x 10-3 x 10 -6 segundos = 8.33 nanosegundos Por lo tanto el tiempo para hacer una operacin de suma es = 8.33 nanosegundos. Los dispositivos (consola, teclado, pantalla, ratn, discos , memoria y unidades de procesamiento) que forman un sistema de cmputo se conocen con el nombre de hardware. Los programas que se ejecutan en la computadora se llaman software. 16 Mbytes = 16 x 2 20 = 24 x 2 20 = 2 24 bytes, por lo tanto, se requieren 24 bits. 640 Kbytes = 640 x 1024 bytes = 655360 bytes.

2.

3. 4.

RESPUESTAS EXAMEN BREVE 2-2


010012 = 1 x 2 3 x 1 x 2 0 = 9 0374 8 = 3x 8 2+ 7 x 8 1+ 4 x 8 0 = 192 + 56 + 4 = 252 4033 5 = 4 x 5 3 + 3 x 51 + 3 x 5 0 = 500 + 15 + 3 = 518 A32E16 = A x 16 3 + 3 x 16 2 + 2 x 161 + E x 16 0 = 40960 + 768 + 32 + 14 = 41774 2. 777 8 = 111 111 1112 = (1) (1111) (1111) 2 = 1FF 16 AD11 16 = 1010 1101 0001 0001 2 010010112 =(1) (001) (011) = 113 8 3. 101011002 = 01010011 en complementos a 1 = 01010011 + 1 = 01010100 complemento a dos = -84
1. 4.

Calcule las siguientes sumas y productos. Las respuestas debern darse en binario.
a. b. 01000110 2 + 00010102 = 10100002 00010101 2 x 00010002 = 101010002

RESPUESTAS EXAMEN BREVE 2-3


C++ es conocido como un lenguaje de nivel medio porque proporciona un acceso de nivel inferior al hardware y software del sistema, mientras que cuenta con las ventajas de un le nguaje de alto nivel. 2. Los pasos que se deben seguir para traducir un programa de cdigo fuente en C++ a un programa ejecutable son los siguientes:
1. 3. Escribir el cdigo fuente. Compilar el cdigo fuente y los archivos de encabezado para obtener el cdigo objeto. Vincular o ligar el cdigo objeto a otras rutinas necesarias para formar un programa ejecutable.

Mediante el paso de compilacin se produce un archivo o programa objeto (.obj) 4. Mediante el paso de vinculacin se produce un archivo o programa ejecutable (.exe)

FUNDAMENTOS LECCIN 2

2-48

MIGUEL . TOLEDO MARTNEZ

El propsito del paso de vinculacin es integrar al programa con alguna rutina a dicional necesaria para la correcta ejecucin del programa. 6. La primera diferencia entre el lenguaje C y el lenguaje C++ es que este ltimo permite una programacin orientada a objetos mientras que en C no es posible.
5.

FUNDAMENTOS LECCIN 2

2-49

S-ar putea să vă placă și