Вы находитесь на странице: 1из 19

1

CAPITULO I INTRODUCCION
1.1. Arquitectura de computadoras
La arquitectura de computadoras tiene dos enfoques
(A) La arquitectura de Software. Es el diseo conceptual y la estructura operacional
fundamental de un sistema de computadora cuando ejecuta un programa. Es decir, es un
modelo y una descripcin funcional de los requerimientos y las implementaciones de diseo para
varias partes de una computadora, con especial inters en la forma en que la unidad central de
proceso (CPU) trabaja internamente y accede a las direcciones dememoria.
MICROPROCESADORES Y
CONTROL DE PERIFRICOS
(B) La arquitectura de Hardware En este caso suele definirse como la forma de
seleccionar e interconectar componentes de hardware para crear computadoras segn los
requerimientos de funcionalidad, rendimiento y costo.
2
1.2. LA COMPUTADORA ES UNA MAQUINA DE PROGRAMA ALMACENADO
PREMISA:
Todas las computadoras sean grandes o pequeas, solamente funcionan con
programas y el hombre es quien hace estos programas. La computadora
sin programas no es nada, sera un montn de fierros
intiles.
Por tanto, surge la pregunta: Qu es un programa de computadora digital?. A
continuacin damos resesta a esta pregunta.
Qu es una computadora digital y qu es un programa de computadora
digital?
EL HOMBRE Y LA COMPUTADORA SON MAQUINAS DE PROCESO DE DATOS
Cada proceso de la informacin tiene como meta la transformacin de datos; esto es vlido
independientemente de que el proceso de la informacin sea manual a travs de una persona
competente o automtico cuando se utiliza una mquina.
Estos datos
Datos deben tener un
Datos valor especfico
de entrada de salida para el usuario
Una computadora digital es una mquina que explora secuencialmente una informacin
almacenada en su memoria, llamada programa, y lo ejecuta siguiendo el principio de Von
Neumann. Las computadoras digitales para ejecutar un programa tienen que cargarlo
ntegramente en la memoria antes de correrlo. Aclaremos este concepto: las computadoras o
sistemas de proceso de datos se caracterizan por el proceso digital de la informacin, as como
por la diferenciacin en instrucciones (programas) y datos de la informacin ambos
representados digitalmente en la memoria principal.
El principio de Von Neumann
El cientifico hngaro-estadounidense John Von Neumann concibi la computadora digital, como
una mquina que cargaba en memoria un programa y lo ejecutaba instruccin por instruccin.
Segn el principio de Von Neumann, la ejecucin de cada instruccin comprenda dos tiempos:
Leer la instruccin de memoria
que apunta el registro IP
Tiempo de instruccin
Decodificarla, esto es interpretar
qu significa cada instruccin
Instruccin
Ejecutar la instruccin
Tiempo de ejecucin
Guardar los resultados en memoria
En consideracin a este principio a las computadoras digitales tambin se les llama
Mquinas de Programa Almacenado.
Hombre o
mquina
3
Qu es un programa de computadora digital?
LOS ALGORITMOS SON LA ESENCIA DE LOS PROGRAMAS
Todo programa tiene dos componentes o partes:
El primer componente es el algoritmo y
El segundo componente sonlos datos.
El profesor Niklaus Wirth--inventor del Pascal y Modula 2titula uno de sus ms famosos libros:
"Algoritmos + Estructuras de datos = Programas"
Segn esta ecuacin primero diseamos el algoritmo que resuelva el problema, y despus
pasamos a definir la estructura de datos utilizando un lenguaje de programacin.
Estos dos componentes juntos el lgico: el algoritmo ms el fsico: la estructura de datos, se
convierten en un programa de computadora.
Los algoritmos tienen estas otras propiedades:
Sin el algoritmo no puede existir el programa
Los algoritmos son independientes tanto del lenguaje de programacin como de la
computadora que los ejecuta
En esencia la solucin de todo problema se puede describir por medio de un
algoritmo
PROGRAMACIN PROCEDURAL La primera parte de un curso de programacin debe estar
dirigida a: "el aprendizaje y diseo de algoritmos".
Pero... Ques un algoritmo?
ALGORITMO:
"Un algoritmo es un mtodo para resolver un problema en un nmero finito de
pasos"
SENTENCIA O INSTRUCCION
Cada paso de un algoritmo se llama sentencia o instruccin.
Cada instruccin comienza con un verbo.
Los matemticos son los ms grandes constructores de algoritmos, y no solo eso,
siempre tratan de conseguir el camino ms fcil para resolver un problema y estn
permanentemente buscando la verdad de las proposiciones a travs de demostraciones
(teoremas) y nunca se cansan de construir nuevos y mejores mtodos para resolver
problemas.
La palabra algoritmo tiene relacin con el estudio de la matemtica, por eso proviene
de MAHAMMED AL-KHOWARIZMI, nombre de un matemtico persa, que vivi durante el
siglo X y alcanz renombre por ser el primer matemtico que enunci las reglas paso a paso
para sumar, restar, multiplicar y dividir nmeros decimales; la traduccin al latn del
apellido "AL-KHOWARIZMI" es decir algorismus, devino posteriormente en algoritmo, palabra
que se ha hecho de uso tan popular en la informtica.
Euclides el gran matemtico griego (siglo IV antes de Cristo) creador de la geometra
Euclidiana, tambin invent un mtodo para encontrar el mximo comn divisor de dos
nmeros, por eso podemos considerarlo como otro gran padre de la ciencia de los
algoritmos o algoritmia.
4
Todo algoritmo debe describir tres partes:
- Entrada
- Proceso
- Salida
CARACTERISTICAS DE UN ALGORITMO
1.) Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso
2.) Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces se debe obtener el
mismo resultado
3.) El algoritmo debe terminar en algn momento o sea debe tener un nmero finito de pasos.
CMO SE EJECUTA UN PROGRAMA DE COMPUTADORA DIGITAL?
Como hemos mencionado anteriorment a las computadoras digitales tambin se les llama
computadoras de programa almacenado porque para ejecutar un programa tienen que
cargarlo ntegramente en la memoria antes de correrlo. Un programa es una secuencia de
instrucciones dadas por una persona (programador) a una maquina (computadora),
indicandole a esta ultima con detalle y precision cmo tiene que actuar para obtener la
solucion de un problema, cuyos datos van incluidos en el programa. Es decir se le indica a la
maquina, exacta y totalmente que es lo que tiene que hacer, mediante una secuencia
de instrucciones, que se supone, la maquina obedece ciegamente. Empieza con la primera
instruccin y termina cuando encuentra unainstruccin que le indica terminar.
MEMORIA secuencias de 1s y 0s
Se carga en
memoria
Programa almacenado
en disco
Para ejecutarse, el programa almacenado en disco, se carga en memoria
COMPUTADORAS Y PROGRAMAS: LA COMPUTADORA UNA MAQUINA MARAVILLOSA?
El hombre moderno tiene la idea de que las mquinas le disminuyen una parte de su
trabajo. Esto es realmente cierto porque la generalidad de las mquinas tienen como
finalidad inmediata mover o transformar objetos fsicos. La utilizacin de las mquinas en
forma intensiva ha ocasionado un avance insospechado de nuestra civilizacin, por eso se
habla de la Era Industrial que corresponde a la etapa en que el hombre intensific el uso
de las mquinas.
A partir del siglo XVIII, la revolucin industrial gener un cambio en los sistemas de
produccin, e introdujo un nuevo sistema de fabricacin mediante mquinas impulsadas por
una nueva fuerza: el vapor. Hasta entonces los artculos se haban fabricado a mano por
los artesanos en los talleres. De aquella revolucin surge el mundo industrial moderno y nace
una nueva clase: el obrero industrial, que trabaja en las fbricas bajo nuevas y difciles
condiciones. Se inventaron mquinas de procedimientos mecnicos, surgieron nuevos
mtodos de produccin logrando as fabricar mayor cantidad de artculos a menor precio y
Programa
Datos
5
con mayor rapidez. Hoy da se hace esto automticamente casi sin la intervencin humana y lo
que se busca antes que nada es la calidad de lo que se produce.
En la dcada de los 50 el hombre inventa otro tipo de mquinas, que no realizan trabajo
fsico pero tienen la capacidad de procesar informacin; estas mquinas han resultado
tan importantes que a la presente era se le llama Era de la Informacin y
recientemente Era del Conocimiento. Estas mquinas se llaman computadoras u
ordenadores.
Lo nico que hacen es recibir datos, llamados datos de entrada y producen datos de salida que
tienen mayor valor que los datos de entrada. A partir de estos datos de salida el hombre
moderno toma decisiones que de alguna manera pueden contribuir al movimiento o a la
modificacin de objetos fsicos.
La computadora, como hemos puntualizado anteriormente, es una mquina que no realiza
ningn trabajo fsico, pero sin embargo ha contribuido a crear nuevos paradigmas en todo el
quehacer humano, desplazando el punto central de los recursos del capital hacia los recursos
humanos y de informacin.
Las computadoras han logrado conformar un nuevo paradigma en la situacin geopoltica del
mundo que a su vez ha generado un nuevo paradigma en el ambiente internacional de
negocios.
Las computadoras y las redes de computadoras han logrado el ascenso de la nueva
empresa abierta e interconectada que constituyeun nuevo paradigma organizacional.
CMO SE CONSTRUYEN LOS PROGRAMAS DE
COMPUTADORA DIGITAL?
Los programas de computadora digital se construyen utilizando lenguajes de programacin. Un
lenguaje de programacin es un conjunto de smbolos y reglas sintcticas y semnticas que
definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar
el comportamiento fsico y lgico de una mquina.
Un lenguaje de programacin permite a uno o ms programadores especificar de manera
precisa sobre qu datos debe operar una computadora, y cmo estos datos deben ser
almacenados o transmitidos y qu acciones debe tomar bajo una variada gama de
circunstancias. Todo esto, a travs de un lenguaje que intenta estar relativamente prximo al
lenguaje humano o natural, tal como sucede con el lenguaje Lxico. Los procesadores usados
en las computadoras son capaces de entender y actuar segn lo indican programas escritos en
un lenguaje fijo llamado lenguaje de mquina. Por eso es imperativo que todo programa escrito
en cualquier lenguaje de programacin sea traducido a otro escrito en lenguaje de mquina. A
ese proceso se lo llamacompilar y al programa traductor se le denominacompilador.
Para crear un programa en cualquier lenguaje de programacin deben seguirse los siguientes
pasos:
1. Edicin
2. Compilacin
3. Enlace o Linkeo
4. Ejecucin
Todo esto se aprecia en el siguiente diagrama conjunto:
6
Diagrama conjunto de los pasos para editar, ensamblar , enlazar y crear el
ejecutable de un programa en el sistema operativo Windows
pantalla
teclado
editor.exe en memoria el editor
Nombre.ext ext = extensin ( asm, c, cpp, cob, etc )
Compilador.exe en memoria el Compilador del lenguaje
Librera Nombre.obj programa.objeto
de Objetos
LINK.EXE en memoria el enlazador
Nombre.exe programa ejecutable (codigo nativo o .exe)
Ejecucin del programa
Disco disquete pantalla/teclado
ENTRADAS
Datos de entrada
Nombre.exe programa ejecutable en codigo nativo (.exe)
SALID
Datos de salida pantalla Disco disquete impresora
7
GENERACIONES DE COMPUTADORAS Y LENGUAJES DE
PROGRAMACION
GENERACION COMPUTAD HARDARE
COMPUTAD (Computadoras)
SOFTWARE
(Lenguajes de Programacion)
1ra.
Tubos al vacio
Computadora
ENIAC 1949
Lenguaj e de Mqui na
Cadenas de 1s y 0s
2da. Transistores
Lenguaje Asembler
Escritos en mnemnicos
3ra.
LSI
(Lar ge
Sc al e
I nt egr at ed)
Lenguaj es de Al t o Ni vel
Func i onal es o al gor t mi c os
FORTRAN, COBOL, PL/1
Conver sac i onal es o di al gi c os
Pasc al , Basi c , C, C++, et c
4ta.
VLSI
(Ver y Lar ge
Sc al e
I nt egr at ed)
Lenguaj es de Cuar t a Gener ac i n
(4GLs)
Vi sual es
Tr abaj an c on Bases de Dat os
Rel ac i onal es
Vi sual Basi c , Vi sual C++, Del phi ,
Pow er Bui l der , et c .
5ta.
ULSI
(Ul t r ami c r osc opi c
Lar ge
Sc al e
I nt egr at ed)
(1) Lenguaj es de Qui nt a
Gener ac i n (5GLs)
Pr ogr amac i n Or i ent ada a
Obj et os
Pr ogr amac i n Web
J ava, Vi sual Basi c .NET Vi sual
C++. NET, C#
(2) Lenguaj es de Mar c ado
GML --> SGML --> HTML --> XML
--> Di al ec t os XML
(3) Lenguaj es de Sc r i pt i ng
ASP, J avaSc r pt , Per l , PHP,
VBSc r i pt , Ser vl et s, J SP, ASPX
8
LA PRIMERA GENERACIN (1945-1957)
El ENIAC (Electronic Numerical Integrator and Computer) diseado por John Mauchly y John
Eckert en la Universidad de Pennsylvania, fue el primer computador electrnico. Esta mquina
era de gran tamao, pesaba 30 toneladas, ocupaba 15000 pies cuadrados, contena ms de
18000 tubos de vaco, consuma 140 kilowatios, efectuaba 5000 sumas por segundo. Era una
mquina decimal.
QUINTA GENERACIN (1978-????)
A fines de los 70 se incrementa la densidad de transistores arriba de los 100,000 (VLSI)
llegando a pasar del milln de transistores a fines de siglo.
En esta generacin se desarrollan los microprocesadores de gran poder y a partir de la
dcada de los 80, las computadoras personales o PCs invaden el mercado sustituyendo
significativos aparatos domsticos y de oficina en un lapso de 20 aos: la mquina de
escribir, la calculadora de mesa, el fax, los receptores y reproductores de video y de audio, el
servicio de correo tradicional, etc.
Las computadoras son dotadas de medios de comunicacin, trabajo en red e inteligencia
artificial.
Nanotecnologa
Uno de los avances ms espectaculares llevados a cabo en la fsica y laingeniera es sin duda la
Nanotecnologia. Se le conoce como la habilidad de disear, controlar y modificar materiales a
escala microscopica con el fin de producir dispositivos inteligentes para todo tipo de
aplicaciones.
Uno de los campos ms desarrollados en esta materia ha sido el de la tecnologa de la
informacin. Hoy da el ser humano es capaz de crear dispositivos electrnicos tan diminutos
como la clula humana.
Intel Corporation, el mayor fabricante de chips y procesadores en el mundo, produce transistores
cuyas dimensiones son 50 veces menores que cualquier elemento vivo existente en la
naturaleza. Tan es as, que muchos de los dispositivos que utilizan las modernas Pentium IV
tienen la mitad del tamao de la Influenza A o B, del virus que produce la gripe
EL ENIAC
9
GENERACION COMPUTADORAS HARDWARE SOFTWARE PERFORMANC
E
1 ENIAC, UNIVAC I,
IBM 700
Tubos, tambores
magnetico
Codigo de maquina,
programa en
memoria
2 Kb de memoria,
10 KIPS
2 IBM 7094 Transistores,
memoria de ferrita
Lenguajes de alto
nivel
32 Kb de memoria,
200 KIPS
3 IBM 360 Y 370,
PDP11
CIs, memoria de
semiconductores,
microprocesadores
Graficos, programas
estructurados
2Mb de memoria,
5 MIPS
4 IBM 3090, Cray
XMP IBM PC
VLSI, redes,
discos opticos
Lenguajes orientado
a objetos, sistemas
expertos
8 Mb de memoria,
30 MIPS
5 SUN SPARC,
INTEL Paragon
ULSI, sistemas
paralelos
Lenguajes paralelos,
procesamiento
simbolico
64 Mb de memoria
10 GFLOPS
10
1.3. DESDE EL PUNTO DE VISTA DE UN PROGRAMADOR QUE TIENE QUE DISEAR UN
ALGORITMO PARA DESPUES CONSTRUIR EL PROGRAMA QUE PUEDE HACER
UNA COMPUTADORA DIGITAL ?
A las computadoras se les asignan muchas propiedades poderosas y asombrosas. Sin
embargo, todas las computadoras, sean ellas las ms grandes o las ms pequeas,
internamente son simples colecciones de componentes electrnicos que tienen cuatro
capacidades bsicas y en cualquier lenguaje de programacinse traduce a un cdigo
que combina, de la forma ms optima posible, la utilizacin de los siguientes cuatro recursos:
(1) Memoria
(2) Registros
(3) Interrupciones
(4) Instrucciones de Mquina.
1.3.1. PRIMERA CAPACIDAD BASICA
Cada computadora tiene circuitos electrnicos que permiten almacenar y recuperar datos en su
memoria en forma directa, utilizando expresiones que se llaman instrucciones de asignacin.
Qu tipos de datos puede almacenar y recuperar?. Solamente datos numricos binarios,
compuestos de dgitos 1s y 0s. De ah el nombre de computadoras digitales
Si un programador quiere guardar la letra A en la memoria de la computadora, utiliza el nmero
binario 010000012 o su equivalente hexadecimal 4116, o tambin 41h la h significa que est
representado en el sistema hexadecimal y el nombre de una variable, que es un nombre que
comienza con una letra, por ejemplo X:
Si recurre al lenguaje Cobol tiene que escribir: move A to X,
En lenguaje C, C++, Java: X = A.
En Object Pascal: X := A
y en Assembler: mov X, 41h
que debemos leer almacena 41h en la direccin de la memoria a la que apunta X, o en forma
ms simple para no mencionar la memoria, almacena 41h en X, o mejor todava asigna 41h a
X o esta otramueve 41h a X.
En que parte de la memoria, se almacena el valor 41h que contiene X?. Para el programador de
un lenguaje de alto nivel como el COBOL o el C, eso no importa, el sistema operativo se encarga
de verificar en que parte de la memoria almacena el resultado.
A expresiones del tipo mov X,41h, en las que a la izquierda de la coma aparece una variable,
que es un nombre que comienza con una letra, y a la derecha de la coma aparece un nmero,
de ahora en adelante las llamaremos instrucciones de asignacin.
11
SEGUNDA CAPACIDAD BASICA
Cada computadora tiene circuitos electrnicos que son diferentes a la memoria y que se
encuentran en la CPU, que se llaman registros y que sirven para hacer aritmtica. Qu clase de
aritmtica pueden hacer?. Solamente aritmtica simple: las cuatro clases de operaciones
aritmticas: +, -, *, /. Esto es suma, resta, multiplicacin y divisin. Las cuatro operaciones las
realiza en el sistema binario, y para ejecutar estas cuatro operaciones tiene que utilizar los
llamados registros (AX, BX, CX, DX, SI, etc.) que son componentes electrnicos imprescindibles
en toda computadora y las instrucciones de mquina requeridas que estudiaremos ms adelante.
TERCERA CAPACIDAD BASICA
Esta capacidad se llama capacidad de interface de entrada/salida y se ejecuta mediante
instrucciones de entrada/salida. Cada computadora tiene un medio de comunicarse con Ud. o
con la persona que la utiliza. De todas maneras, si nosotros no pudiramos introducir nmeros y
obtener resultados, estas mquinas no tendran mucho uso no es cierto?.
Pero es muy importante aclarar que la computadora digital solamente puede leer y escribir un
caracter ASCII o cadenas de caracteres ASCII. Este concepto es muy importante cuando
estudiemos la int 21h.
La forma ms comn de suministrar informacin a la computadora es por medio del teclado y los
datos de respuesta los visualizamos en la pantalla. El teclado sirve para leer un dato ASCII o
cadenas de caracteres ASCII y poder guardarlos en la memoria de la computadora en el sistema
binario. En forma opuesta la pantalla sirve solamente para mostrar en pantalla un carcter ASCII
o cadenas de caracteres ASCII. Aunque no sea del todo claro, por ahora, si la computadora
tienealmacenado en memoriaun nmeroenel sistema binario, para poder escribirlo en pantalla
tiene que convertirlo a su valor ASCII correspondiente. Tanto el teclado como la pantalla estn
conectados a la computadora y se les denomina perifricos de entrada y salida.
Todos los lenguajes de programacin tienen instrucciones propias para leer datos ASCII de
teclado y escribir datos ASCII en la pantalla.
Los lenguajes de Mquina y Assembler realizan las operaciones de entrada y salida utilizando
llamadas a interrupciones del sistema operativo. La ms conocida de estas es la interrupcin de
nombreint 21h, que utilizaremos profusamente en nuestros programas.
CUARTA CAPACIDAD BASICA
Las computadoras tienen circuitos electrnicos que pueden tomar decisiones simples. La clase
de decisiones que pueden hacer los circuitos no es del tipo: "Quin ganar el partido de ftbol
que se juega esta noche?" o "Cul es la ciudad ms grande del Per?". Desafortunadamente
las computadoras slo pueden decidir la verdad o falsedad de la comparacin de dos nmeros.
Los dos nmeros que se comparan pueden estar almacenados en dos registros o tambien un
numero en un registro y el otro en memoria, pero no pueden compararse dos nmeros que
ambos esten almacenados en memoria. Despus de comparar los dos nmeros la computadora
tiene instrucciones de mquina para bifurcar a lalinea de cdigodel programa que se le indique.
Y para que nos sirve realizar comparaciones de dos nmeros?. La respuesta es simple: para
controlar la ejecucin del programa; por ejemplo para lograr que un grupo de instrucciones
se repita un numero determinado de veces. Esto se estudiar ms adelante con todo detalle.
Ya hemos indicado que una vez que todas las instrucciones de programa han sido cargados en
memoria, la computadora empieza a ejecutar una instruccin cada vez, desde la primera hasta
12
la ultima, que en lenguaje de mquina debe ser una instruccin int 20h, y en lenguaje
Assembler el conjunto de instrucciones: mov ah,4ch e int 21h. Para hacerlo la computadora
tiene un dispositivo de almacenamiento magntico, llamado registro IP, que est en la CPU,
fuera de la memoria, cuyo contenido indica la direccin de memoria donde est almacenada la
instruccin que proximamente se va a ejecutar. Cada vez que se ejecuta una instruccin, el
valor de IP se incrementa automticamente para apuntar a la siguiente instruccin a ejecutar.
1.4. Porqu usamos las computadoras?. El Principio computacional.
Desde que todas las computadoras solamente tienen estas cuatro capacidades bsicas, tan
elementales: (1) capacidad de guardar datos en memoria, (2) hacer aritmtica simple, (3) ejecutar
entrada/salida de datos, y (4) tomar decisiones triviales, entonces, si pensamos un poco, nos
damos cuenta que tambin el hombre tiene estas capacidades bsicas, pero tambinresulta
natural preguntarse lo siguiente:
Porqu usamos las computadoras?.
El Pensamiento Computacional
El uso de la computadora recurriendo a sus cuatrocapacidades bsicas nos permiten disear mtodos y
modelos computacionales para resolver problemas y disear sistemas que ninguno de nosotros podra
enfrentar solo. Este pensamiento no es otra cosa que aquello que representa una actitud universalmente
aplicable y un conjunto de habilidades que toda persona, no solamente informticos o cientficos de
computacin, deben estar dispuesta a aprender y usar. El pensamiento computacional se construye
sobre la capacidad y lmites de los procesos computacionales, sean ejecutados por humanos o
mquinas, y puede aplicarse para resolver problemas de la vida real en cualquiera de las reas del
conocimiento y de la ciencias.
El pensamiento computacional nos enfrenta al acertijo de la inteligencia mecnica:
qu cosas pueden hacer los humanos mejor que las computadoras? y
qu cosas pueden hacer las computadoras mejor que los humanos?
Ms fundamentalmente se trata la pregunta: qu es computable?.
El pensamiento computacional es una habilidad fundamental para toda persona, no solamente
para cientficos de computacin. A la lectura, escritura y aritmtica que se ensea en la escuela,
debiramos aadir el pensamiento computacional como habilidad analtica de todo nio.
El pensamiento computacional involucra resolver problemas, disear sistemas y entender el
comportamiento humano basndose en los conceptos fundamentales de las ciencias de la
computacin.
El pensamiento computacional incluye un rango de herramientas mentales que reflejan la
amplitud de las ciencias de la computacin. Teniendo que resolver un problema particular, nos
podemos preguntar: cun difcil es resolverlo? y cul es la mejor forma de resolverlo? Las
ciencias de la computacin se basan en fundamentos tericos slidos para responder a esas
preguntas con precisin.
El pensamiento computacional es reformular un problema aparentemente difcil en uno que
sabemos resolver, tal vez por reduccin, transformacin o simulacin. Es usar el razonamiento
heurstico para descubrir una solucin. Es planificar, aprender, actuar en la presencia de
incertidumbre. Es buscar, buscar y seguir buscando, hasta obtener la solucin. El pensamiento
computacional habr calado en la vida de todos cuando palabras como algoritmos o
precondiciones sean parte del vocabulario de cualquier persona.
13
Aplicando el pensamiento computacional se han logrado avances sorprendentes en diversos campos del
conocimiento humano; por ejemplo:
El inters reciente de los cientficos de computacin en la biologa, para representar
algortmicamente las estructuras proteicas en formas que aclaren su funcin.
Lananocomputacin y la computacin cuntica estn cambiando la forma de pensar de los
qumicos y fsicos.
La Nanotecnologa, que trata de la fabricacin molecular hecha por el hombre. Las Redes
neuronales artificiales que es un procesamiento automtico inspirado en la forma en que
funciona el sistema nervioso y el cerebro humano.
La Robtica es una ciencia o rama de la tecnologa, que estudia el diseo y
construccin de mquinas semejantes a nosotros, que nos reemplacen eficientemente
en tareas que podramos calificar como inhumanas. Un peridico de Pittsburg USA,
publica (Universidad de Carnegie Mellon USA, 20/11/2006) lo siguiente: Un vehculo
sin chofer humano, en el trfico urbano de una ciudad, manejado por un conjunto de
computadoras usando un software de ltima generacin, dispositivos de radar,
sensores, lasers, cmaras y sistemas de posicionamiento global y otras cosas ms, ha
logrado un viaje de 50 millas a ciegas de un total de 100 millas del trayecto. Se trata de
evitar accidentes de transito en las calles de las ciudades de EEUU, donde 42,000
personas murieron el ao 2005 por esta causa.
Tambin es el caso que los sistemas de software intensivo han posibilitado y acelerado
la investigacin cientfica. Por ejemplo el genoma humano est compuesto por 24
secuencias cromosmicas distintas (22autosomas + 2 cromosomas sexuales: X, Y) con
un tamao total aproximado de 3200 millones de pares de bases deADN y todo esto ha
sido llevado a cabo con software de computadora. Por cierto, hay otro tema tico en
este campo que se refiere a la identificacin de secuencias genticas, que ahora
sabemos que se pueden hacer mediante software.
Para hacer una tomografa computarizada, es bueno recordar que en la mayora de los
casos una tomografa se basa en un procedimiento matemtico realizado mediante un
algoritmo de computadora llamadoalgoritmo de reconstruccin tomogrfica.
Un peridico de Pittsburg USA, publica (Universidad de Carnegie Mellon USA, 20/11/06)
lo siguiente: Un vehculo sin chofer humano, en el trfico urbano de una ciudad,
manejado por un conjunto de computadoras usando un software de ltima generacin,
dispositivos de radar, sensores, lasers, cmaras y sistemas de posicionamiento global y
otras cosas ms, ha logrado un viaje de 50 millas a ciegas de un total de 100 millas
del trayecto. Se trata de evitar accidentes de transito en las calles de las ciudades de
EEUU, donde 42,000 personas murieron el ao 2005 por esta causa. Se debera
permitir patentar este tipo de cosas, porque el mrito de los Ingenieros de Software de
desarrollar los algoritmos con el que se llega a estas investigaciones queda siempre en
el anonimato.
La importancia de los Sistemas de Informacin: El software de computadora, es el
producto que construyen los ingenieros de sistemas, y que se ha convertido en el alma
mater, de casi toda actividad humana, porque los sistemas de informacin conducen
a la toma de decisiones comerciales. Es el factor clave que diferencia los productos y
servicios modernos. Est inmerso en sistemas de todo tipo: de transportes, mdicos, de
telecomunicaciones, militares, procesos industriales, entretenimientos, productos de
oficina, etc., y podemos decir que la lista es interminable. El software es casi ineludible
en un mundo moderno. A medida que nos adentremos en el siglo XXI, el software ser
el que nos conduzca a nuevos avances en todo. Podemos afirmar sin equivocarnos que
14
el patrimonio ms valioso de una empresa moderna son sus Archivos o Bases de Datos.
Sin ellos, por ejemplo, no podran existir los bancos comerciales.
En computacin en las dcadas de los 60s y 70s ramos parte de la Sociedad de los
Datos. Ahora ya estamos inmersos en la Sociedad de la Informacin y estamos
ingresando a la Sociedad del Conocimiento. Podramos seguir dando innumerables y
sorprendentes ejemplos de los xitos logrados con las computadoras digitales
.Procedemos ahora a dar respuesta a la preguntaformuladaanteriormente:
porqu usamos las computadoras? :
Existen quizs tres buenas razones para usar estas mquinas a pesar de sus limitadas
capacidades:
1.-) LAS USAMOS POR SU VELOCIDAD
Las computadoras son capaces de hacer estas cuatro capacidades
bsicas (almacenar datos en memoria, aritmtica simple, tomar decisiones
simples, operaciones de entrada/salida, a tremendas velocidades. Para
apreciar esto digamos que el nmero de sumas que ejecuta la
computadora en un segundo, probablemente requerira a una persona
trabajando 40 horas semanales durante unos veinte aos. Velocidades
para hacer otros tipos de operaciones aritmticas y tomar decisiones
simples son comparables a la indicada para las sumas. Sin embargo las
operaciones de entrada/salida que envuelven movimientos de
componentes mecnicos de mquinas como las impresoras o los discos
duros resultan mucho ms lentas. En un sistema de computacin tpico con
una impresora de alta velocidad se pueden imprimir miles de lneas por
minuto y en una impresora conectada a una PC unos 300 caracteres por
segundo.
2.-) LAS USAMOS POR SU EXACTITUD Y CONFIABILIDAD
Las computadoras son exactas y confiables. Todo lo que hacen lo hacen a
gran velocidad y sin equivocarse. Como son mquinas fabricadas por los
hombres ocasionalmente pueden malograrse y tienen que ser reparadas.
Cuando en un proceso con la computadora se comete un error este
siempre se debe al hombre.
3.-) LAS USAMOS POR LA CAPACIDAD DEL HOMBRE DE
DESCOMPONER UN PROBLEMA GRANDE EN UN CONJUNTO DE
PEQUEOS PROBLEMAS
La razn ms importante de usar las computadoras est dada por el hecho
de que el hombre puede resolver muchos problemas utilizando programas
de computadora debido a su capacidad de enfrentar la complejidad no
resolviendo directamente los problemas difciles, sino por el contrario
solucionando equivalentemente un conjunto de pequeos problemas -
uno despus de otro-; con la aclaracin de que las soluciones a estos
pequeos problemas pueden ser obtenidos usando las limitadas
capacidades que poseen todas las computadoras.
I
N
H
E
R
E
N
T
E
S
A
L
A
M
A
Q
U
I
N
A
A
L
H
O
M
B
R
E
15
Desde que las computadoras pueden hacer todas estas cosas con exactitud y a altas
velocidades, la razn para utilizarlas es obvia.
Podemos resumir entonces que:
LA COMPUTADORA ES: EL HOMBRE ES:
Extremadamente rpida. Increblemente lento para manejar informacin.
Precisa, nunca se equivoca. Impreciso, es propenso a cometer errores.
Estpida, es una esclava repetidora. Brillante, porque tiene la facultad de crear, por
esoes el amo.
ADEMAS:
La computadora trabaja con datos. El hombre trabaja con informacin.
Cuando la computadora lee transfiere Cuando el hombre lee, adquiere informacin
datos de un medio electromagntico (disco, interpretando un conjunto de datos. La lectura
pantalla,etc.)a otro medio electromagntico es un fenmeno extraordinariamente complejo.
llamado memoria
Cuando la computadora escribe transfiere Unicamente el hombre escribe plasmando un
datos de la memoria a otro medio pensamiento en un lenguaje.
electromagntico (disco, pantalla, etc.)
Ambos constituyen un binomio de una riqueza incalculable
El conocimiento es poder y la computadora es una mquina amplificadora de ese poder,
es una innovadora vital y fructfera. La computadora crea valor mediante la
transformacin del poder cerebral de los trabajadores del conocimiento, con poco consumo
de energa y materiales nuevos.
1.5 UN EJEMPLO ILUSTRATIVO
PROBLEMA.
( A ) Escribir un algoritmo que calcule la siguiente expresin en nmeros hexadecimales:
DX = 1 + 2 + 3 + . . . + 6416 ( 6416 = 10010)
NOTA: Calculando manualmente esta suma se obtiene 13BA16que es igual a 505010
( B ) Codificar el algoritmo en leguaje C++ y en lenguaje de mquina
SOLUCION
(A) Diseo del algoritmo
(A1) Versin 1.0 (Algoritmo prosa)
* CALCULA DX = 1 + 2 + 3 + . . . +6416
Paso01: Mueve 0 a DX
Paso02: Mueve 1 a AX
Paso03: Calcula el valor de la expresin DX + AX, y mueve el resultado a DX
paso03: Suma 1 a AX y mueve el resultado a AX
Paso04: Es verdad que AX <= 6416?
Si es verdad bifurcar a Paso03 y si es falso continuar con Paso05
Paso05: Escribe en pantalla el valor contenido en DX
Paso06: Termina
16
(A2) VERSIN 2.0 (ALGORITMO SEUDOCODIGO)
CALCULA DX = 1 + 2 + 3 + . . . +6416
Paso01: DX = 0 (Lase: mueve 0 a DX)
Paso02: AX = 1 (Lase: mueve 1 a AX)
Paso03: DX = DX + AX (Lase: calcula el valor de la expresin DX + AX,
y mueve el resultado a DX)
paso03: AX = AX + 1 (Lase: calcula el valor de la expresin AX + 1,
y mueve el resultado a AX)
Paso04: if (AX <= 6416) goto Paso03
Paso05: Escribe(pantalla), DX
Paso06: Termina
(B) Programa
(B1) Solucin en lenguaje C++
Con el editor del lenguaje Turbo C++ se crea el siguiente programa fuente SUMAC.CPP
y si lo corremos obtenemos el valor de la suma pedida igual al nmero hexadecimal 13BA, cuyo
valor en base decimal es el siguiente: 13BA= 1 * 16
3
+ 3 * 16
2
+ 11 * 16
1
+ 10 * 16
0
= 5050
17
(B2) Solucin en lenguaje de Mquina
Se ejecutan los siguientes comandos:
(1) Inicio Ejecutar en la casilla abrir se digita cmd Pulsar la tecla<<Aceptar>>
y se ingresa al modo consola (modoDOS o de comandos)
(2) En la consola se digita: debug y se pulsa la tecla <enter> y se ingresa al lenguaje de mquina
(3) En la pantalla aparece un guin (el signo )
(4) A la derecha del guin se digita la letra A o a y se pulsa la tecla <<entrada>>
(5) Se digita el siguiente cdigo: (los smbolos ; significan comentario en lenguaje de mquina
Los nmeros hexadecimales100, 103, etc se generan automticamente y no es necesario digitarlos.
100 MOV DX,0 ; DX=0
103 MOV AX,1 ; AX=1
106 ADD DX,AX ; DX=DX+AX
108 ADD AX,1 ; AX = AX + 1
10B CMP AX,64 ; Compara AX con 64 (numero hexadecimal igual a 100)
10E JLE 106 ; Significa jump to 109 106 if les sor equal
110 INT 20H ; La int 20h termina el programa
Para terminar el ingreso del programa pulsar dos veces la tecla <<entrada>>
(6) Para correr el programa a la derecha del signo menos digitar G 110
El resultado se puede ver que en el registro DX se encuentra el valor hexadecimal 13BA que
como hemoscalculadoanteriormente equivale al nmero decimal 5050.
:
(7) Para salir del programa debug,exe, se digita la letra Q(que significa Quit) y se pulsa la tecla
<<entrada>>
18
1.6 Por qu programar en lenguaje de Mquina o en lenguaje Assembler?
En la programacin de computadoras existe un axioma:
Primero consigue que un programa trabaje bien y.... despus haz que trabaje ms rpido
y qu pasa si no puedo hacer que mi programa sea ms rpido?. Entonces slo queda una sola
solucin: codificarlo en lenguaje Assembler. Un programa escrito en lenguaje Assembler requiere
considerablemente menos memoria y tiempo de ejecucin que un programa escrito en un
lenguaje de alto nivel.
Sin embargo el lenguaje Assembler tiene una gran desventaja: es difcil de aprender por que como
el lenguaje C++ utiliza punteros o sea direcciones a memoria y adems requiere mucho cdigo,
que se traduce en realizar ms trabajo que el habitual en comparacin con los lenguajes de alto
nivel, y por tanto consume mayor tiempo de programacin.
Para los informticos la productividad siempre ha sido algo muy importante, los sistemas de
informacin tienen que desarrollarse en el menor tiempo posible, y esto ha ocasionado que los
lenguajes hayan evolucionado desde los lenguajes de mquina, pasando por el lenguaje
Assembler, seguir con los lenguajes de alto nivel, hasta llegar a los lenguajes visuales de quinta
generacin actuales.
En los inicios de la computacin en las dcadas de los 50s y 60s, se empez programando en
lenguaje de mquina, es decir con 1s y 0s; se continu programando en lenguaje Assembler que
sustituy los nmeros binarios por mnemnicos queson las instrucciones del Assembler, y en esta
bsqueda incensante de aumentar la productividad de los programadores, aparecen los lenguajes
de alto nivel y entre ellos el lenguaje C, que evolucion hasta llegar al C++, que en la actualidad se
ha constituido en el lenguaje acadmico en las universidades; es el lenguaje que ms rpido
cambia, por eso lo han dotado de capacidades para trabajar en el nivel ms alto y ms bajo
posible, y sus diseadores han conseguido que su cdigo sea muy rpido y eficiente;
prcticamente ha desplazado en mucho al lenguaje Assembler.
Hace poco muchos productos para mostrar su calidad se jactaban de decir hecho ntegramente en
lenguaje Assembler. Con la aparicin del lenguaje C++, podemos afirmar que casi todos los
sistemas operativos, protocolos de redes, utilitarios de los sistemas, compiladores de lenguajes,
etc., estn construidos utilizando el lenguaje C++.
Sin embargo, siempre existen mdulos que a pesar de estar hechos con C++, siguen siendo
lentos. Ah entra a tallar el lenguaje Assembler. Por eso, el binomio: C++ & Assembler resulta
insustituible, es la herramienta ms poderosa que existe para programar la computadora.
Debido a su cdigo eficiente, la mayora de libros de Assembler afirman que el lenguaje
Ensamblador se aprende por las siguientes razones:
1. Conocer en mayor profundidad el funcionamiento bsico de la mquina.
2. Ganar rapidez en la ejecucin de los programas.
3. Tener acceso a posibilidades de la mquina que son inaccesibles desde otros lenguajes.
4. Entender mejor cmo funciona un lenguaje de alto nivel.
5. Utilizar las posibilidades de la mquina desde los propios lenguajes de alto nivel con
interface de estos lenguajes con el Assembler.
Sin embargo, existe otra razn muy poderosa para aprender a programar en lenguaje Assembler:
este lenguaje es formativo. Ningn lenguaje de programacin, con excepcin del Assembler,
19
muestra al programador, cmo trabaja internamente la computadora; sta es una mquina
esttica, que se convierte en una caja negra a la que se le ingresan datos para obtener resultados.
Cmo lo hace?. Como es una mquina que no se mueve, aparentemente su funcionamiento es
un misterio.
El Assembler es el nico lenguaje de programacin que no tiene libreras, y si no las tiene, no
queda otra salida: hay que construirlas; por que sin libreras, programar en Assembler es muy
tedioso, se requiere escribir mucho cdigo, y esto desanima a cualquiera en seguir programando
en este lenguaje. El esfuerzo de construir estas libreras es muy grande, y lo lograrn solamente
quienes lleguen a niveles avanzados de programacin en Assembler, cuya curva de aprendizaje
tiene una pendiente muy elevada.
La actividad de programar, cualquiera que sea el lenguaje elegido, en general es un arte. Sin
embargo, cuando se trata del ensamblador se convierte en un arte de maestros. Cuando se
llega a entender la filosofa de cmo trabaja el procesador internamente, este lenguaje de lo
complicado y difcil que parece a un comienzo se va transformando en sencillo, claro, puro y va
directo al grano. Escmo encontrar las respuestas a las siguientes preguntas en forma consciente:
1. Cul es el objetivo?
2. Cmo logro el objetivo?
3. Cmo optimizo lo logrado?
Ponderemos un poco lo anterior siguiendo una lgica secuencial, en la que cada paso dependa del
anterior. Finalmente, de los tres pasos el ms difcil es el tercero, y ah es donde entra en escena el
lenguaje ensamblador.
Una forma de probar cmo funciona el tiempo de instruccin del principio de Von Neumann,
es ejecutar el programa debug.exe y digitar el comando U 100 y dar entrada y obtendr lo
siguiente:
Observe cmo el procesador utilizando el tiempo de instruccin de Von Neumann, decodifica
todos los 1s y 0s contenidos en la memoria y los interpretacomo instrucciones de mquina. En
la figura anterior esta decodificacin abarca, desde el desplazamiento 0100 hasta el 011C. Las
instrucciones de mquina que usted ve en pantalla, seran las instrucciones que se ejecutaran
si se corre el programa con el comandoG (que significa en ingles Go). Por eso un programa en
lenguaje de mquina, obligatoriamente tiene que tener una instruccin int 20, para terminar el
programa, caso contrario seguira decodificandoejecutantando todos los 1s y 0s de la
memoria RAM.