Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Computador
Clase 2
Introducción a la Programación
Antes de empezar a programar
• Veremos algunos conceptos muy básicos
sobre:
– Computadoras
– Sistemas Operativos
– Programas, lenguajes de programación y
algoritmos
Computadora, Sistema Operativo,
Programas
• Computadora:
– Formada por:
• Procesador
• Dispositivos de entrada y salida con sus
correspondientes chips dedicados para controlar el
flujo de información entre los dispositivos y el
procesador
• Memoria : donde residen los programas y los datos
cuando se están «ejecutando»
• Buses que interconectan estos componentes entre sí.
Arquitectura Von Neumann
Modelo Secuencial de Ejecución
• El procesador (su unidad de control) obtiene las
instrucciones de la memoria una a una y las
ejecuta (en la unidad de proceso) en el orden en
que están almacenadas.
• Tanto las instrucciones como los datos residen en
Memoria, y no hay ninguna distinción entre ellos:
son todos secuencias de ceros y unos, es decir,
todos son números.
• ¿Como sabe el procesador qué es una
instrucción y qué es un dato?
Instrucciones
• Cada familia de procesadores tiene su propio conjunto
de instrucciones, es decir, Intel, PowerPc, Alpha, Mips,
Sparc, en fin... Cada uno de ellos define qué
instrucciones tendrá su máquina.
• Por ejemplo: Intel tiene una instrucción de multiplicar:
– MUL BX;; DX:AXAX*BX
– Observen que la multiplicación devuelve un resultado en
DOBLE precisión: es decir el doble de largo (como máximo)
que los operandos.
• Yo podría diseñar una máquina SIN una instrucción de
multiplicar. Por lo tanto, si mi programa necesita
realizar una multiplicación, debería utilizar repetidas
sumas para obtener el resultado…
Instrucciones y Formatos
• Decíamos entonces que cada arquitectura
(ISA) define un repertorio propio de
instrucciones, estas instrucciones se codifican
siguiendo un formato también definido por el
ISA.
• Ejemplo: formato de una operación aritmética
en MIPS (32 bits)
Las programas residen en memoria
• Para poder ser ejecutado, un programa debe
residir en memoria (principal). (luego veremos
como llega allí….)
• O sea, cualquiera sea el lenguaje en que
escribamos nuestros programas, al final éste
estará en memoria organizado como una
secuencia de instrucciones del formato de la
arquitectura (ISA).
Memoria
• La memoria principal es un chip (circuito
integrado) que se localiza fuera del
procesador.
01000010111100000100001011110000
00001111000010101000011110000111
00011100011000010001000100010010
00010010101010101000010000100000
La memoria: leyendo instrucciones
01000010
dirección 00001111
Procesador 00011100
00010010
instrucción
00010010
Instrucción o dato
100 01101100
00010010
Sistema Binario y otros
• Todos los números, tanto los que representan
instrucciones, como datos, como direcciones (son tres
cosas!) están representados en el sistema binario.
• El sistema binario, cuando se implementa sobre la
lógica, se expresa en volts (0 y 5).
• Podemos subir el nivel de abstracción para la
representación numérica, tanto de datos como de
direcciones como de instrucciones, a otros sistemas de
numeración mas convenientes para el caso:
– Por ejemplo: el decimal para los números
– Hexadecimal para números y direcciones
Interface software-hardware
• Cuando hablemos de variables en los lenguajes
de programación estaremos hablando de
direcciones de datos. Una variable, es el nombre
simbólico de la dirección de un dato. En nuestro
ejemplo, a la dirección 100, que contiene el dato
01101100, la llamamos simbólicamente: VAR1.
• Las variables almacenan valores en memoria.
• Las variables son posiciones de memoria a las
que habrá que darles un valor, un contenido, de
lo contrario, tendrán… cualquier cosa…
Microarquitectura del Procesador
Entrada/Salida
• Discos, Memorias Flash, teclado, Monitor, mouse, enfin…
toda una cantidad importante de complementos que
comunican el procesador y su memoria con el mundo
exterior.
• Cada dispositivo físico (disco, por ej) tiene un hardware
asociado a él que sirve para programarlo, enviar y recibir
datos. Este hardware, o controlador del dispositivo,
también deberá comunicarse con el procesador.
CPU
E/S disco
Direcciones/datos
Entrada/Salida Memoria
Programa usuario
• Afortunadamente para los
programadores, toda la
programación para acceder Datos usuario
a los dispositivos está
hecha.
• Capas de software, que van
Programa SO
desde las librerías de los
lenguajes de programación
hasta el sistema operativo,
se encargan de facilitarnos Datos SO
la tarea.
Libre
Sistemas Operativos
• Se crearon para hacer que el programador
pudiera tener un acceso mas sencillo a los
recursos de la computadora. Es software.
Sistemas Operativos
Estimación del uso de SO´s en 2009
Algoritmos, Programas y Lenguajes de
Programación
• Sea el siguiente problema (Euler 1):
Hallar la suma de todos los números enteros
menores que 1000 que sean múltiplos de 3 y de 5.
• Un algoritmo:
• En C: • En Python:
#include <stdio.h>
C:\Users\Patricia\programas_c>dir
Directorio de C:\Users\Patricia\programas_c
C:\Users\Patricia\programas_c>
prompt de python
prompt de SO Interpretación
C:\Users\Patricia\programas_python>python Invocación al intérprete
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46)
[MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for
more information.
>>> def euler1():
... result = 0
... for i in range(1,1000):
... if i % 3 == 0 or i % 5 == 0 : Sentencias del programa de usuario
... result = result + i
... print result
...
>>> euler1() Invocación de la función
233168 dentro del interprete
>>> euler1()
233168
Comenzamos a Programar: en C
Windows Linux
• CodeBlocks , incluye el • Escribimos, compilamos
entorno para windows y ejecutamos hello.c
llamado MinGW que a • Escribimos: con algún
su vez incluye al editor
compilador gcc (de gnu) • Compilamos:
• Si lo tenemos instalado , – gcc –o hello hello.c
ejecutamos el primer
• Ejecutamos
programa… hello word!
– ./hello
• (que ademas ya viene
escrito) • (También hay
CodeBlocks bajo linux)
Comenzamos a Programar: en Python
Windows Linux
• Python 2.7 incluye: • Abrimos una consola e
– Command line invocamos a Python
– IDLE (entorno que • Desde el prompt de
permite editar y luego python escribimos :
ejecutar)
– Hello , world
#include <stdio.h>
int main()
{
printf("Hello world!\n");
}
Python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello world"
hello world
>>>
Fin