Vous êtes sur la page 1sur 7

Universidad Nacional de Trujillo Informtica

Ingeniera de Sistemas Sistemas de Computacin y Diseo de Programas

SISTEMAS DE COMPUTACIN Y DISEO DE PROGRAMAS

1. Sistemas de Computacin.

Al conjunto de instrucciones que debe seguir una computadora se le llama programa. A la


coleccin de programas que utiliza una computadora se le conoce como software. La parte fsica de
las mquinas, la cual constituye la instalacin de la computadora, se conoce como hardware.

1.1. Hardware.

Existen tres clases principales de computadoras: computadoras personales, estaciones de trabajo y


mainframes. Una PC (computadora personal) es una computadora relativamente pequea,
diseada para que slo una persona la use en un momento determinado. La mayora de las
computadoras caseras son PC, aunque stas tambin se utilizan mucho en los negocios, la
industria y la ciencia. Una estacin de trabajo es bsicamente una PC ms grande y ms
poderosa, al que se podra considerar como una PC industrial. Una mainframe es una
computadora an ms grande que normalmente requiere un equipo de soporte, y por lo general
la comparten varios usuarios.

El hardware de la mayora de los sistemas de computacin est organizado en cinco


componentes principales: los dispositivos de entrada, los dispositivos de salida, el procesador
(tambin conocido como CPU: unidad central de procesamiento), la memoria principal y la
memoria secundaria. La CPU, la memoria principal y algunas veces la memoria secundaria,
normalmente se alojan en un solo gabinete. La CPU y la memoria principal forman el corazn
de la computadora y pueden considerarse como una unidad integrada.

Procesador (CPU)

Dispositivos Dispositivos
de entrada Memoria Principal de salida

Memoria Secundaria

Figura N 1. Componentes principales de una computadora.

Un dispositivo de entrada es cualquier dispositivo que permite a una persona transmitir


informacin a la computadora. Es probable que sus principales dispositivos de entrada sean un
teclado y un Mouse.

Un dispositivo de salida es cualquiera que permita a la computadora transmitirnos


informacin. El dispositivo de salida ms comn es el monitor. Con frecuencia hay ms de un
dispositivo de salida, por ejemplo una impresora.

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -1-


Universidad Nacional de Trujillo Informtica
Ingeniera de Sistemas Sistemas de Computacin y Diseo de Programas

Con el fin de almacenar las entradas y contar con el equivalente a hojas de papel para
escribir cuando se realicen clculos, las computadoras cuentan con memoria. El programa en
ejecucin se mantiene en la memoria principal, y sta es, como su nombre lo indica, la memoria
ms importante. La memoria principal consiste en una larga lista de ubicaciones numeradas,
conocidas como ubicaciones de memoria; el nmero de stas vara de una computadora a otra, y
puede ir desde algunos miles hasta varios millones, y en ocasiones hasta miles de millones. Cada
ubicacin de memoria contiene una cadena de ceros y unos. El contenido de estas ubicaciones
puede cambiar, de modo que podemos considerar a cada ubicacin de memoria como un
diminuto pizarrn en el que la computadora puede escribir y borrar.

En la mayora de las computadoras, todas las ubicaciones de memoria contienen la misma


cantidad de dgitos cero/uno. Un dgito que puede asumir slo los valores cero o uno se conoce
como dgito binario o bit. En casi todas las computadoras, las ubicaciones de memoria
contienen ocho bits (o algn mltiplo de 8 bits). Una porcin de memoria de ocho bits se
conoce como byte, por lo que podemos llamar a estas ubicaciones numeradas de memoria
principal como bytes. El nmero que identifica a un byte se conoce como su direccin. Un
elemento de datos, por ejemplo un nmero o una letra, puede almacenarse en uno de esos bytes,
y la direccin del byte se utiliza para localizar el dato cuando es necesario.

Si la computadora necesita manejar un dato que es demasiado grande para ocupar un solo
byte (por ejemplo, un nmero grande), utilizar bytes adyacentes para almacenar dicho
elemento. En este caso, la porcin de memoria que almacena ese dato se conoce como
ubicacin de memoria. La direccin del primer byte de esta gran ubicacin de memoria se
utiliza como su direccin, por ello se considera a la memoria principal de una computadora
como una larga lista de ubicaciones de memoria de tamao variable. El tamao de cada una de
estas ubicaciones se expresa en bytes, y la direccin del primero se utiliza como direccin
(nombre) de esa ubicacin de memoria. Los tamaos de las ubicaciones de memoria no son
fijos, y pueden cambiar cuando un nuevo programa se ejecuta en la computadora.

Volviendo al hecho de que los datos que se encuentran en la memoria de la computadora


se representen mediante ceros y unos, implica que la computadora necesita interpretar estas
cadenas de ceros y unos como nmeros, letras, instrucciones u otro tipo de dato. La
computadora realiza automticamente estas interpretaciones, de acuerdo con ciertos esquemas
de codificacin. Para cada tipo de elemento almacenado en la memoria de la computadora, se
utiliza un cdigo diferente: uno para letras, otro para nmeros enteros, otro para fracciones, otro
ms para instrucciones y as sucesivamente. Por ejemplo, en un conjunto de cdigos
comnmente utilizado, 01000001 es el cdigo para la letra A y tambin para el nmero 65. Para
saber lo que significa la cadena 01000001 en una ubicacin en particular, la computadora debe
rastrear el cdigo que actualmente se est utilizando para esa ubicacin. Por fortuna, el
programador casi nunca necesitar preocuparse por dichos cdigos, y puede con certeza razonar
si las ubicaciones contienen letras, nmeros o cualquier otra cosa.

Sin la memoria principal, una computadora no puede hacer nada. Sin embargo, esta
memoria en realidad slo se utiliza mientras la computadora sigue las instrucciones de un
programa. La computadora tambin tiene otro tipo de memoria, conocida como memoria
secundaria o almacenamiento secundario.

La memoria secundaria es aquella que se utiliza para mantener un registro permanente de


informacin despus (y antes) de que la computadora se utilice. Algunos trminos alternos que
se utilizan con frecuencia para hacer referencia a la memoria secundaria son memoria auxiliar,
almacenamiento auxiliar, memoria externa y almacenamiento externo. La informacin que se encuentra
en almacenamiento secundario se mantiene en unidades llamadas archivos, los cuales pueden
ser tan grandes o tan pequeos como sea necesario. Es posible agregar diversos tipos diferentes
de memoria secundaria a una sola computadora. Las formas ms comunes de memoria
secundaria son discos duros, diskettes, CD, DVD y memorias extrables.

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -2-


Universidad Nacional de Trujillo Informtica
Ingeniera de Sistemas Sistemas de Computacin y Diseo de Programas

Con frecuencia, a la memoria principal se la llama memoria RAM o memoria de acceso


aleatorio. Se le llama de acceso aleatorio porque la computadora puede acceder de inmediato a la
informacin en cualquier ubicacin de memoria. La memoria secundaria a menudo requiere un
acceso secuencial, lo que significa que la computadora debe buscar en todas (o al menos en
muchas) ubicaciones de memoria, hasta que encuentre el dato que necesita.

El procesador (tambin conocido como Unidad Central de Procesamiento o CPU) es el


cerebro de la computadora. Cuando se publicita una computadora, la empresa de
computadoras le dice qu chip contiene. El chip es el procesador. El procesador sigue las
instrucciones de un programa y realiza los clculos especificados por l. El procesador puede
sumar, restar, multiplicar y dividir, y es capaz de transferir datos de una ubicacin de memoria a
otra. Puede interpretar cadenas de ceros y unos como letras y enviarlas hacia un dispositivo de
salida. El procesador tambin tiene cierta habilidad primitiva para reacomodar el orden de las
instrucciones. El procesador de una computadora moderna puede tener cientos de instrucciones
disponibles.

1.2. Software.

Por lo general, no hablamos directamente con la computadora, sino que la comunicacin se


establece a travs del sistema operativo. El sistema operativo distribuye los recursos de la
computadora para que sta cumpla las tareas que debe realizar. El sistema operativo en realidad
es un programa. l est a cargo de todos los dems programas, y les entrega todas las solicitudes
que usted realiza. Si desea ejecutar un programa, usted le indica al sistema operativo el nombre
del archivo que lo contiene, y ste ejecuta el programa. Si queremos editar un archivo, le
decimos al sistema operativo el nombre del archivo y l pone en marcha el editor para que
trabaje en ese archivo. Los nombres de algunos sistemas operativos son UNIX, DOS, Linux,
Windows, Mac OS y VMS.

Programa Datos

Computadora

Salida

Figura N 2. Vista simple de la ejecucin de un programa.

Un programa es un conjunto de instrucciones que debe seguir una computadora. La


Figura N 2 muestra que se puede considerar que la entrada a una computadora consta de dos
partes, un programa y algunos datos. La computadora sigue las instrucciones del programa, y de
esa forma realiza algunos procesos. Los datos son lo que nosotros conceptualizamos como la
entrada de un programa. Por ejemplo, si el programa suma dos nmeros, entonces los dos
nmeros son los datos. En otras palabras los datos son la entrada al programa, y ambos, tanto el
programa como los datos, se introducen a la computadora (normalmente a travs del sistema
operativo). Siempre que le proporcionemos a la computadora un programa a seguir y algunos
datos para el programa, se dice que estamos corriendo el programa con esos datos y se dice que la
computadora ejecuta el programa.

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -3-


Universidad Nacional de Trujillo Informtica
Ingeniera de Sistemas Sistemas de Computacin y Diseo de Programas

1.3. Lenguajes de alto nivel.

Existen muchos lenguajes para escribir programas y se definen como de alto nivel, de bajo
nivel, ensamblador y de mquina. Los lenguajes de alto nivel se asemejan en muchos sentidos
a los lenguajes empleados por la humanidad. Estn diseados para que a la gente se le facilite
escribir programas, y para que sea sencillo leerlos. Un lenguaje de alto nivel como C++ contiene
instrucciones mucho ms complicadas que las instrucciones sencillas que el procesador de una
computadora es capaz de seguir.

El tipo de lenguaje que una computadora puede entender se conoce como lenguaje de
bajo nivel. Los detalles exactos de los lenguajes de bajo nivel varan de una computadora a otra.
Una instruccin de bajo nivel tpica podra ser la siguiente:

ADD X Y Z

Esta instruccin podra significar suma el nmero de ubicacin de memoria llamada X


con el nmero de ubicacin de memoria llamada Y, y coloca el resultado en la ubicacin de
memoria llamada Z. La instruccin del ejemplo anterior est escrita en lo que se conoce como
lenguaje ensamblador. Aunque el lenguaje ensamblador es casi el mismo que el que entiende
la computadora, ste debe pasar por una traduccin sencilla antes de que la computadora pueda
entenderlo. Para lograr que una computadora siga una instruccin en lenguaje ensamblador, es
necesario traducir las palabras en cadenas de ceros y unos. Por ejemplo, la palabra ADD puede
traducirse como 0110, la X en 1001, la Y en 1010, y la Z en 1011. Entonces, la versin de la
instruccin anterior que la computadora finalmente sigue es:

0110 1001 1010 1011

Las instrucciones en lenguaje ensamblador y su traduccin a ceros y unos difieren de una


mquina a otra.

Se dice que los programas expresados en ceros y unos estn escritos en lenguaje de
mquina ya que sa es la versin del programa que la computadora en realidad lee y sigue. El
lenguaje ensamblador y el de mquina son casi lo mismo, sin embargo la diferencia importante
entre el lenguaje de mquina y los lenguajes de alto nivel como C++, es que cualquier programa
escrito en un lenguaje de alto nivel debe traducirse a lenguaje de mquina, para que la
computadora pueda entender y seguir el programa.

1.4. Compiladores.

Un compilador es un programa que traduce un programa escrito en lenguaje de alto nivel,


como C++, a un programa en lenguaje de mquina, que la computadora puede entender y
ejecutar de manera directa. El compilador recibe un programa de entrada, llamado normalmente
programa fuente o cdigo fuente, y produce otro programa, que es una versin traducida, llamado
programa objeto o cdigo objeto.

La palabra cdigo se utiliza con frecuencia para hacer referencia a un programa o a una
parte de l, y este uso es particularmente comn cuando se trata de programas objeto. Suponga
que se desea ejecutar un programa que ha sido escrito en C++. Para lograr que la computadora
sigo las instrucciones de C++, se debe hacer lo siguiente. Primero, se ejecuta el compilador
utilizando el programa en C++ como entrada. En este caso, el programa en C++ no se toma
como un conjunto de instrucciones.

Para el compilador, dicho programa es slo una larga cadena de caracteres. La salida ser
otra larga cadena de caracteres, que es el equivalente al lenguaje de mquina del programa en
C++. Despus, se ejecuta este programa en lenguaje de mquina, que es lo que normalmente se
considera como los datos del programa en C++. La salida ser lo que normalmente

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -4-


Universidad Nacional de Trujillo Informtica
Ingeniera de Sistemas Sistemas de Computacin y Diseo de Programas

conceptualizamos como la salida del programa en C++. Este proceso puede observarse en la
siguiente figura.

Programa en C++ Datos para el


programa en C++

Compilador

Computadora

Programa en
lenguaje de mquina

Salida del
programa en C++

Figura N 3. Compilacin y ejecucin de un programa en C++ (diseo bsico).

Cualquier programa en C++ que escribamos utilizar algunas operaciones (como rutinas de
entrada y salida) que alguien ms ha programado antes. Estos elementos previamente
programados (como rutinas de entrada y salida) se han compilado con anterioridad, y tienen sus
propios cdigos objeto en espera para combinarse con el cdigo objeto del programa en C++
para producir un programa completo en lenguaje de mquina que puede ejecutarse en la
computadora. Otro programa, llamado enlazador, combina el cdigo objeto de estas partes del
programa con el cdigo objeto que el compilador produjo a partir del programa en C++. En la
Figura 4 se muestra la interaccin del compilador y el enlazador. En casos muy rutinarios,
muchos sistemas realizarn automticamente el enlazamiento. Por lo tanto, no es necesario
preocuparse por este proceso.

2. Diseo de programas.

Disear un programa con frecuencia resulta una tarea difcil. No existe un conjunto completo de
reglas o un algoritmo que le diga cmo escribir programas. El diseo de programas es un proceso
creativo; sin embargo, contamos con un bosquejo del plan a seguir. En la Figura 5 se presenta en
forma esquemtica dicho bosquejo. Como se indica ah, todo el proceso de diseo de programas
puede dividirse en dos fases: la fase de resolucin de problemas y la fase de implementacin. El resultado de la
fase de resolucin de problemas es un algoritmo expresado como pseudocdigo, diagrama de
flujo o diagrama N-S, para solucionar el problema. Para producir un programa en un lenguaje de
programacin como C++, el algoritmo se traduce al lenguaje de programacin. La produccin del
programa final, a partir del algoritmo, es la fase de implementacin.

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -5-


Universidad Nacional de Trujillo Informtica
Ingeniera de Sistemas Sistemas de Computacin y Diseo de Programas

Programa en C++

Compilador

Cdigo objeto del Cdigo objeto de


programa en C++ otras rutinas

Enlazador

Cdigo completo en
lenguaje de mquina

Figura N 4. Preparacin de la ejecucin de un programa en C++.

El primer paso es asegurarse de que la tarea, es decir, lo que queremos que el programa realice,
est especificada de forma completa y precisa. No debe tomarse este paso a la ligera. Si no sabe
exactamente lo que quiere que arroje su programa, podra sorprenderse con lo que el programa
produzca. Debemos asegurarnos de que sabemos qu entradas tendr el programa exactamente, y
qu informacin se supone que debe estar en la salida, as como la forma que debe tener esa
informacin. Por ejemplo, si el programa es de contabilidad bancaria, debemos conocer no slo la
tasa de inters, sino tambin los intereses se componen anual, mensual, diariamente o de alguna otra
forma. Si el programa es para escribir poesas, debemos determinar si los poemas estn en versos
libres o si deben estar escritos en pentmetro ymbico o en alguna otra mtrica.

Muchos programadores principiantes no comprenden la necesidad de escribir un algoritmo


antes de escribir un programa en un lenguaje de programacin como C++, por lo que intentan
reducir el proceso omitiendo por completo la fase de resolucin del problema, o reducindolo slo a
la parte de definicin del problema. Esto parece razonable; Por qu no ir directo al grano y
ahorrar tiempo? La respuesta es que esto no ahorra tiempo! La experiencia ha demostrado que el
proceso de dos fases producir un programa que funcione rpida y correctamente. El proceso de dos
fases simplifica la fase de diseo del algoritmo, aislndolo de las detalladas reglas de un lenguaje de
programacin como C++. El resultado es que el proceso de diseo de algoritmos se vuelve mucho
menos intrincado y mucho menos propenso a errores. Incluso para un programa no muy grande,
puede representar una diferencia de medio da de cuidadoso trabajo y de muchos y frustrantes das en
la bsqueda de errores en un programa poco entendible.

La fase de implementacin no es un paso trivial; habr detalles que podrn ser de cuidado, y en
ocasiones algunos no sern de importancia, pero esta fase es mucho ms sencilla de lo que puede
parecer en un principio. Una vez que se familiarice con C++ o con cualquier otro lenguaje de
programacin, la traduccin de un algoritmo hacia un lenguaje de programacin ser una tarea de
rutina.

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -6-


Universidad Nacional de Trujillo Informtica
Ingeniera de Sistemas Sistemas de Computacin y Diseo de Programas

Fase de solucin del problema


Fase de implementacin
Inicio

Definicin del
problema

Diseo del Traduccin a


algoritmo C++

Prueba de Prueba
escritorio

Programa
funcional

Figura N 5. Proceso de diseo de programas.

Como muestra la Figura 5, las pruebas se llevan a cabo en ambas fases. Antes de escribir el
programa se prueba el algoritmo, y si se descubre que ste es deficiente, entonces se redisea. Esa
prueba de escritorio se realiza ejecutando en papel el algoritmo y siguiendo los pasos nosotros
mismos. El programa en C++ se prueba compilndolo y ejecutndolo con algunos datos de muestra.
El compilador genera mensajes de error cuando detecta ciertos tipos de errores. Para detectar otros
tipos de errores, es preciso verificar que las salidas sean correctas.

El proceso que se muestra en la Figura 5 es una representacin idealizada del proceso de diseo
de programas. Es la imagen bsica lo que se debe tener en mente, pero en ocasiones la realidad es
ms compleja. En realidad, los errores y deficiencias se descubren en momentos inesperados, y se
tendr que regresar y rehacer algn paso anterior. Por ejemplo, las pruebas del algoritmo podran
revelar que la definicin del problema estaba incompleta. En tal caso, hay que retroceder y reformular
la definicin. En ocasiones, las deficiencias en la definicin o en el algoritmo pueden no notarse hasta
que se prueba el programa. En ese caso, debe regresar y modificar la definicin del problema o el
algoritmo y todo lo dems del proceso de diseo.

Ing. Zoraida Yanet Vidal Melgarejo, Mg. -7-