Vous êtes sur la page 1sur 54

Fundamentos

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:

Leer del teclado el nmero ingresado


Sumarle 3

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

Las instrucciones se expresan a travs de


sucesiones de unos y ceros

Es muy engorroso y difcil programar ya que


se debera aprender y recordar cada una de
las combinaciones de unos y ceros que
representan cada una de las instrucciones.

www.unaj.edu.ar
Fundamentos

Lenguaje de mquina

Propenso a cometer errores.


Mnimo error programa incorrecto.
Adems NO todas las familias de
computadoras utilizan la misma
combinacin de ceros y unos para una
misma instruccin. Cada una tiene su
propio repertorio de instrucciones, es decir
su propio cdigo 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.

SUM ms fcil de recordar que 00000011

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)

A estos lenguajes y a los de mquina


se los llama de Bajo Nivel

www.unaj.edu.ar
Fundamentos

Lenguaje ensamblador

Si usamos un lenguaje Ensamblador ...


La programacin es mucho ms fcil
Pero
miremos el siguiente ejemplo ...

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?

Diferentes familias de computadoras


diferentes cdigos de mquina diferentes
cdigos mnemotcnico

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

Nacimiento de los lenguajes de ALTO Nivel

www.unaj.edu.ar
Fundamentos

Lenguaje de alto nivel


Ms Fciles de escribir
Portables: pueden ejecutarse en diferentes tipos
de computadoras sin o con mnima modificacin.
Necesitan de un programa que traduzca las
instrucciones a lenguaje de mquina
Dos tipos de programas que traducen:
Intrprete
o
Compilador

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

Comparamos las dos formas?

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

Comparamos las dos formas?


En el orden en que ejecuta las sentencias:
Intrprete:
Sigue el orden lgico (de acuerdo a cmo se va
ejecutando la secuencia del programa)

Compilador:
Sigue el orden fsico (lnea a lnea de TODO el
programa)

www.unaj.edu.ar
Fundamentos

Comparamos las dos formas?

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

Comparamos las dos formas?

En eficiencia:
Intrprete:
Ms lento en ejecucin

Compilador:
Ms rpido en ejecucin

Por qu creen
esto?

www.unaj.edu.ar
Fundamentos

Comparamos las dos formas?

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

Comparamos las dos formas?

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

Comparamos las dos formas?

Y si se combina lo mejor de cada


tcnica?

www.unaj.edu.ar
Fundamentos

Combinacin ambas tcnicas

Formas de combinacin:

Interpretando y luego Compilando


Tiene que ver con la deteccin de
errores

Compilando y luego Interpretando


Tiene que ver con la portabilidad

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

Segn Thomas Kuhn, el trmino se reere a la forma en


que un cientco percibe al mundo y a la estructura de
teoras y suposiciones que modican esta percepcin

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

Hace uso de mdulos independientes


Funciones y Procedimientos que permiten
separar claramente tareas que realiza un
programa.
Hace uso de estructuras que permiten manejar
el flujo de ejecucin.

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

Un programa es un conjunto de hechos y


reglas

Los resultados se obtienen a partir de las


verdades expresadas por los hechos y
mediante la aplicacin de las reglas de
inferencia.

www.unaj.edu.ar
Fundamentos

Programacin Funcional

Un programa esta constitudo por definicin


de funciones.
La idea de Funcin en este paradigma es
meramente matemtica.
Una funcin f asigna a cada miembro de un conjunto X
(dominio), exactamente un miembro de un conjunto Y
(co-dominio).

Los resultados se obtienen a travs de la


aplicacin de dichas funciones.
www.unaj.edu.ar
Fundamentos

Ejemplo: Funcional vs. Imperativo

Lenguaje Imperativo Lenguaje 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

IDLE (Python GUI) www.unaj.edu.ar


Fundamentos

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

IDLE (Python GUI) www.unaj.edu.ar

Vous aimerez peut-être aussi