Está en la página 1de 15

Introduccin a la

Programacin
Clase 1: Arquitectura Von Neumann

Profesores:
Cristian Vallejos Vega
Jorge Elgueta Morales
Joel Torres Carrasco
Antecedentes
Lenguajes de Programacin

BAJO NIVEL ALTO NIVEL


Antecedentes
LENGUAJES DE PROGRAMACIN: Son lenguajes especiales que ayudan al usuario a
comunicarse con la computadora.
LENGUAJE DE MQUINA: Est orientado hacia la mquina que est constituida por varios
arreglos de "bits". Este lenguaje es fcil de entender por la computadora, pero difcil para el
usuario.
LENGUAJE DE BAJO NIVEL: Es un lenguaje de programacin bien cercano al lenguaje de
mquina.
LENGUAJE DE ALTO NIVEL: Es un lenguaje que se asemeja ms al lenguaje humano que a un
lenguaje de mquina o ensamblador. Es ms fcil escribir programas en este lenguaje, pero
luego deben ser traducidos por compiladores o intrpretes para que la computadora los
entienda.
COMPILADOR: Es un programa que traduce un lenguaje de alto nivel al lenguaje de mquina de
una computadora. El programa siempre permanece en su forma original (programa fuente) y
traduce cuando est en la fase de ejecucin instruccin por instruccin.
CDIGO FUENTE: Es un conjunto de instrucciones del programa que estn escritas en
un lenguaje de programacin.
Antecedentes

John von Neumann (1945)


Escribe su borrador sobre la arquitectura de los
computadores, el cual sirve de base al concepto
actual de computador.
Arquitectura Propuesta
CPU de Von Neumann
Por qu ver Von Neumann?

La arquitectura de Von Neumann, por medio de su CPU, nos permitir


realizar nuestros primeros programas.
Estos programas son de carcter aritmtico y se realizan en un lenguaje de
muy bajo nivel.
Sirve como base para entender el funcionamiento bsico de un programa y
para entender el funcionamiento de lenguajes de programacin que se
utilizarn a futuro.
Funcionamiento de la memoria
Nuestras Instrucciones
Instruccin de Cdigo de
Transferencia de Operacin
Datos
Carga (load) lda
Almacenamiento o str
escritura (store)

Instrucciones de lda #Num AC Num


Transferencia de lda Dir AC MD[Dir]
Datos lda [Dir] AC MD[[Dir]]
str Dir MD[Dir] AC
rda Dir MD[Dir] Teclado
wrt Monitor AC
Nuestras Instrucciones

Instrucciones add #Num AC AC + Num


Aritmticas y add Dir AC AC + MD[Dir]
Lgicas add [Dir] AC AC + MD[[Dir]]
sub #Num AC AC - Num
Todas las sub Dir AC AC - MD[Dir]
operaciones asumen sub [Dir] AC AC - MD[[Dir]]
que el primer mul #Num AC AC * Num
operando est mul Dir AC AC * MD[Dir]
almacenado en el mul [Dir] AC AC * MD[[Dir]]
Acumulador div #Num AC AC / Num
div Dir AC AC / MD[Dir]
div [Dir] AC AC / MD[[Dir]]
sqr AC raz(AC)
and Dir AC AC and Dir
or Dir AC AC or Dir
not AC negacin AC
Nuestras Instrucciones
Instrucciones de jmp Dir_p PC Dir_p
transferencia de
control jmz Dir_p Si (AC = 0) entonces
PC Dir_p

jml Dir_p Si (AC < 0) entonces


PC Dir_p
Ejemplos Cmo funciona?
Supongamos que tenemos la siguiente suma:

c = a + b; # a, b y c representan localizaciones o direcciones de


# memoria

Suponiendo que los operandos a y b ya se encuentran en la memoria, esta instruccin


de alto nivel (lenguaje C), equivale en lenguaje de mquina (assembly) al siguiente
conjunto de instrucciones:

lda 80 # extrae o lee el contenido de 80 desde memoria y lo deja


# en AC
add 81 # extrae o lee el contenido de 81 desde memoria y lo suma
# con el contenido del AC. El resultado queda en AC.
str 82 # el resultado de la suma se escribe en la memoria en la
# localizacin 82.
Ejemplos Cmo funciona?
Ejercicios

1. Calcular el permetro y rea de un cuadrado de lado a y de un rectngulo de lados


a y b.
2. Dado un valor entero x calcular el permetro y rea de un crculo, cuyo dimetro
es x .
3. Desarrolle un algoritmo que permita dados dos puntos del plano cartesiano,
determinar la pendiente de la recta que pasa por dichos puntos.
4. Desarrolle un algoritmo que permita calcular la funcin:
f(x) = (x + 1)2 + (2*x)2, para un valor de x .
Tarea

Desarrolle un algoritmo que permita calcular la distancia entre dos puntos


de plano cartesiano.

También podría gustarte