Académique Documents
Professionnel Documents
Culture Documents
1. Sistemas de Computacin.
1.1. Hardware.
Procesador (CPU)
Dispositivos Dispositivos
de entrada Memoria Principal de salida
Memoria Secundaria
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.
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.
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.
1.2. Software.
Programa Datos
Computadora
Salida
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
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.
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
conceptualizamos como la salida del programa en C++. Este proceso puede observarse en la
siguiente figura.
Compilador
Computadora
Programa en
lenguaje de mquina
Salida del
programa en C++
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.
Programa en C++
Compilador
Enlazador
Cdigo completo en
lenguaje de mquina
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.
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.
Definicin del
problema
Prueba de Prueba
escritorio
Programa
funcional
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.