Académique Documents
Professionnel Documents
Culture Documents
Clase 1:
Conceptos Bsicos
www.unaj.edu.ar
Fundamentos
Clase 1 - Temario
Conceptos Bsicos
Lenguaje de mquina. Lenguaje de ensamblador
y programa ensamblador
Lenguaje de programacin de medio y alto nivel
Intrpretes o compiladores
Paradigmas de programacin
Definiciones y ejemplos
El lenguaje Python
Caractersticas y entornos de ejecucin
www.unaj.edu.ar
Fundamentos
Conceptos Bsicos
www.unaj.edu.ar
Fundamentos
Programa
Las computadoras realizan las tareas porque tienen
cargados programas que le indican cmo hacerlas
Pero....
Qu es un programa?
Un programa es un conjunto de
instrucciones u rdenes que le indican a
la computadora cmo se realiza una
tarea
www.unaj.edu.ar
Fundamentos
Lenguaje de programacin
Ahora bien.. si hago uso del lenguaje natural para
escribir un conjunto de instrucciones... lo puedo
cargar en la computadora y ejecutar? Ejemplo:
NO.....
Debo hacer uso de lenguajes de programacin
numero=input('Ingresa un numero')
numero= numero+3 Ej.Python
www.unaj.edu.ar
Fundamentos
Lenguaje de programacin
Entonces..
Si escribimos un programa con un lenguaje de
programacin, lo puedo cargar y ejecutar
directamente?
NO......
La mquina SOLO entiende e interpreta
Lenguaje de Mquina.
Podra ser el cdigo de una
sentencia que asigna un
valor a una variable y luego
le suma 1
www.unaj.edu.ar
Fundamentos
Lenguaje de programacin
Entonces....
Debemos aprender a escribir los programas con
esas sentencias?
NO.....
Se puede hacer uso de:
Lenguajes de programacin de medio y alto
nivel
Para entenderlo mejor repasemos un poco la
historia
www.unaj.edu.ar
Fundamentos
Lenguaje de programacin
En los comienzos de la informtica, se
programaba directamente introduciendo cdigo
de mquina.
Se programaba a nivel fsico, conectando y
desconectando conectores frente a un panel de
conectores.
Conectar = 1
No conectar = 0
www.unaj.edu.ar
Fundamentos
Lenguaje de mquina
www.unaj.edu.ar
Fundamentos
Lenguaje de mquina
www.unaj.edu.ar
Fundamentos
Lenguaje Ensamblador
Para hacer ms fcil la programacin:
Se crea una serie de cdigos que representan a
cada una de las instrucciones:
Cdigo mnemotcnico.
Nacen:
El Lenguaje Ensamblador y
El Programa Ensamblador.
www.unaj.edu.ar
Fundamentos
Lenguaje y Programa
Ensamblador
Lenguaje Ensamblador:
Conjunto de todos los cdigos que representan
sentencias de lenguaje de mquina
Programa Ensamblador:
Programa que traduce los cdigos
mnemotcnicos a cdigo de mquina (ceros y
unos)
www.unaj.edu.ar
Fundamentos
Lenguaje ensamblador
www.unaj.edu.ar
Fundamentos
Lenguaje ensamblador
Programa
Hola
Mundo en
dos
procesadores
distintos
www.unaj.edu.ar
Fundamentos
Lenguaje ensamblador
Cul es el problema?
www.unaj.edu.ar
Fundamentos
Lenguaje ensamblador
universal
Solucin:
Definicin de un lenguaje ensamblador
universal, cuyos cdigos mnemotcnicos:
No se correspondan con el cdigo de una
mquina en particular y
Pueda ser traducido a lenguaje de mquina
www.unaj.edu.ar
Fundamentos
Lenguaje ensamblador
universal
Pero... seguimos con problemas:
No serviran para nuevas generaciones de
mquinas.
Seguira siendo complejo programar a ese nivel
www.unaj.edu.ar
Fundamentos
www.unaj.edu.ar
Fundamentos
Intrpretes y Compiladores
Intrprete:
Programa que lee un programa escrito en un
lenguaje de alto nivel instruccin a instruccin y,
para cada una de ellas, efecta una traduccin a
cdigo de mquina equivalente y las ejecuta
inmediatamente.
Compilador:
Programa que lee completamente un programa en
un lenguaje de alto nivel y lo traduce en su
integridad a un programa de cdigo de mquina
equivalente.
www.unaj.edu.ar
Fundamentos
Intrpretes y Compiladores
Diferencias:
Intrprete:
Cada vez que se ejecuta el programa, el proceso de
traduccin y ejecucin, se repite.
Compilador:
El programa de cdigo de mquina resultante se
puede ejecutar cuantas veces se desee, sin
necesidad de volver a traducir el programa original.
www.unaj.edu.ar
Fundamentos
Intrpretes
Entrada: Cdigo Fuente (programa escrito en
lenguaje de programacin)
Salida: Resultados
Por cada sentencia del programa:
La lee
La analiza
La decodifica y
La ejecuta
E INTRPRETE
S
Programa Resultados
www.unaj.edu.ar
Fundamentos
Compiladores
Entrada: Cdigo Fuente (programa escrito en
lenguaje de programacin)
Salida: Cdigo Objeto o Ejecutable (programa listo
para ser ejecutado)
Una vez compilado el programa, puede ser ejecutado
repetidamente sin volver a traducirlo.
Si al probarlo vemos que da un resultado no deseado,
hay que modificarlo y volverlo a compilar
Cdigo Cdigo
fuente objeto
TRADUCCIN
www.unaj.edu.ar
Fundamentos
En la forma de ejecucin:
Intrprete:
Ejecuta el programa de entrada directamente
Compilador:
Produce un programa equivalente en lenguaje
objeto
www.unaj.edu.ar
Fundamentos
Compilador:
Sigue el orden fsico (lnea a lnea de TODO el
programa)
www.unaj.edu.ar
Fundamentos
En el tiempo de ejecucin:
Intrprete:
Por cada sentencia, realiza el proceso de
decodificacin para determinar las operaciones a
ejecutar y sus operandos.
Si la sentencia est en un proceso iterativo, se
realizar la tarea tantas veces como sea requerido
La velocidad de proceso se puede ver afectada
Compilador:
No repite lazos, se decodifica una sola vez
www.unaj.edu.ar
Fundamentos
En eficiencia:
Intrprete:
Ms lento en ejecucin
Compilador:
Ms rpido en ejecucin
Por qu creen
esto?
www.unaj.edu.ar
Fundamentos
En el espacio ocupado:
Intrprete:
Ocupa menos espacio, cada sentencia se deja en
su forma original
Compilador:
Ocupa ms espacio. Una sentencia puede
corresponder a muchas sentencias de mquina
Hay otra diferencia
Cul?
www.unaj.edu.ar
Fundamentos
En deteccin de errores:
Intrprete:
Mejor. El cdigo fuente est directamente
relacionado con lo que se est ejecutando
Compilador:
La referencia al cdigo fuente se pierde en el
cdigo objeto
www.unaj.edu.ar
Fundamentos
www.unaj.edu.ar
Fundamentos
Formas de combinacin:
www.unaj.edu.ar
Fundamentos
Interpretando y Compilando
Algunos ambientes de programacin
utilizan:
Para el diagnstico de errores en la
etapa de desarrollo, se usa el Intrprete.
A diferencia del Compilador el Intrprete NO
traduce todo el programa de una vez, sino
que va traduciendo por sentencia.
Si se detecta el error en una sentencia, se
cambia y se prueba.
Una vez validado el programa, se Compila
para generar cdigo ms eficiente
www.unaj.edu.ar
Fundamentos
Compilando e Interpretando
El cdigo fuente se compila y genera una
especie de ejecutable, con cdigo de mquina
para una Maquina Virtual
A ese cdigo de mquina se lo llama
cdigo intermedio o p-code o byte-
code, etc.
El cdigo generado debe ser traducido al
lenguaje de mquina de la computadora
dnde se va a ejecutar. Un Intrprete, ser
quien traduzca las sentencias del lenguaje de
mquina de la CPU imaginaria al de la real.
www.unaj.edu.ar
Fundamentos
Compilando e Interpretando
A ese Intrprete se lo denomina:
Mquina virtual
RESULTADOS
www.unaj.edu.ar
Fundamentos
Paradigmas de
programacin
www.unaj.edu.ar
Fundamentos
Paradigmas de programacin
Qu es un paradigma?
Paradigma: (Del lat. paradigma, y este del gr. ).
1. m. Ejemplo o ejemplar.
Segn rae.es
www.unaj.edu.ar
Fundamentos
Paradigmas de programacin
Qu es un paradigma de programacin?
Diferentes formas de pensar y ver un programa
antes de escribirlo
Paradigmas de
Programacin
Programacin Programacin
Imperativa Declarativa
www.unaj.edu.ar
Fundamentos
Paradigmas de programacin
Programacin Imperativa
El programa detalla los pasos necesarios
para realizar una tarea. Es una secuencia
de rdenes o instrucciones
Programacin Declarativa
El programa describe el resultado a obtener y
los mecanismos disponibles pero NO detalla
los pasos necesarios para obtenerlo.
Especica qu hacer y no cmo hacerlo.
www.unaj.edu.ar
Fundamentos
Programacin Imperativa
Forma tradicional de programar
Detalla la secuencia de pasos que debe seguir
la computadora para realizar una tarea
Un programa es un conjunto de rdenes que
deben ser ejecutadas una a una por la
computadora.
Programacin
Imperativa
Programacin Programacin
Estructurada Orientada a
Objetos
www.unaj.edu.ar
Fundamentos
Programacin Estructurada
www.unaj.edu.ar
Fundamentos
Programacin Orientada a
Objetos
Un programa es un conjunto de objetos autnomos que
interactan entre s envindose mensajes, a travs de
los cuales un objeto le pide al otro que realice una tarea
determinada o ciertos datos determinados.
Se acerca ms a la forma de pensar los problemas. Es
ms real
A un objeto no le interesa cmo el otro realiza la tarea o le
da informacin, slo le alcanza con que lo haga. Concepto
de Encapsulamiento
Permite la modificacin y mantenimiento de los programas.
Cualquier modificacin interna a un objeto NO afecta a los
otros
www.unaj.edu.ar
Fundamentos
Programacin Declarativa
No detalla la secuencia de pasos que debe seguir la
computadora para realizar una tarea
Enuncia los resultados que se desean obtener y deja
que la computadora elija la foma ms conveniente de
obtenerlo
No es tan comn como el de la programacin
imperativa
Programacin
Declarativa
Programacin Programacin
Funcional Lgica
www.unaj.edu.ar
Fundamentos
Programacin Lgica
www.unaj.edu.ar
Fundamentos
Programacin Funcional
function fac(x):integer
fac(x) 1, if x=0
n=x
a=1
x*fac(x-1), if x>0
while n>0 do
a=a*n
n=n-1
end while Diferentes maneras de escribir
return a un programa que calcula el
factorial de un nmero
end
www.unaj.edu.ar
Fundamentos
El Lenguaje
Python
www.unaj.edu.ar
Fundamentos
Lenguaje Python
Lenguaje
Origen Python
del lenguaje:
El lenguaje fu desarrollado por Guido Van Rossum a
finales de los aos 80 en el centro de investigacin en
Matematicas CWI en Holanda.
El nombre proviene del grupo de cmicos ingleses
Monty Python.
Fu creado para suceder al lenguaje de programacin
ABC.
En la primera versin ya estaban presentes elementos
que permiten programacin compleja como ser: clases
con herencia, manejo de excepciones, funciones, y los
tipos medulares: list, dict, str.
Es Software libre
www.unaj.edu.ar
Fundamentos
Software Libre
Lenguaje Python
Se lo define en base a:
Libertad 0: Libertad de usar el programa, con cualquier
propsito
Libertad 1: Libertad de estudiar cmo funciona el
programa, y adaptarlo a necesidades propias.
Libertad 2: Libertad de distribuir copias
Libertad 3: Libertad de mejorar el programa y hacer
pblicas las mejoras a los dems, de modo que toda la
comunidad se beneficie.
Se distribuye con el cdigo fuente.
www.unaj.edu.ar
Fundamentos
Lenguaje Python
Usos del Lenguaje:
Se ha utilizado y se lo utiliza ampliamente para:
Programar tareas de administracin de sistemas. Ej. En
distribuciones Linux.
Produccin de efectos especiales de pelculas. Ej. Empresa:
Industrial Light & Magic.
En sistemas informticos de la NASA.
Gestin de grupos de discusin (ej. Yahoo).
Parte de componentes de rastreadores Web y motores de
bsqueda (ej. Google).
Realizacin de juegos de computadora.
En la bioinformtica.
Enseanza de la programacin, etc.
www.unaj.edu.ar
Fundamentos
Lenguaje Python
Algunas Caractersticas:
Lenguaje de alto nivel, fcil de aprender.
Expresivo y legible.
Sintxis elegante y tipado dinmico y fuerte.
Es multiparadigma, puede usarse como lenguaje
imperativo procedimental o como lenguaje.
orientado a objetos. Adems tiene caractersticas
de los lenguajes funcionales.
Es Interpretado.
Es Multiplataforma.
www.unaj.edu.ar
Fundamentos
El entorno Python
www.unaj.edu.ar
Fundamentos
Proceso de ejecucin
Existen dos formas de ejecutar cdigo
Python:
Modo interactivo:
Obteniendo una respuesta por cada lnea.
Sesin interactiva
Usando un archivo:
Escribir el cdigo del programa en un archivo de
texto y
Luego ejecutarlo
www.unaj.edu.ar
Fundamentos
Proceso de ejecucin
Modo interactivo:
Existen otros programas, tales como IDLE e IPython,
que aaden funcionalidades extra al modo interactivo,
como el auto-completar cdigo y el coloreado de la
sintaxis del lenguaje.
Al ejecutar Python se abrir una ventana y aparecer
un prompt similar a:
Indica el nmero de versin y da
informacin de derechos de copia,
antes de mostrar el primer indicador
www.unaj.edu.ar
Fundamentos
Sesin interactiva
Utilizando un archivo
Se guarda el archivo y se
ejecuta. Con extensin
.py, por ej.
Se comienza a
ejecutar cada una
de las sentencias
del mdulo