Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguajes de Programacion
Lenguajes de Programacion
Tema 1:
Conceptos bsicos de programacin
Profesor
Federico Peinado
Elaboracin del material
Mercedes Gmez
Pablo Moreno
Manuel Ortega
Federico Peinado
Ingeniera Tcnica en Informtica de Gestin
Departamento de Ingeniera del Software e Inteligencia Artificial
Curso 2009-2010
Qu es la Informtica
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Un poco de historia...
baco 2000 a.c.
El sumador de Pascal mediados s. XVII
La calculadora de G.W. von Leibniz finales s. XVII
La mquina de diferencias de Babbage s. XIX
Concepto de programa externo
1945: Comienzo de la era de la Informtica
Modelo J. von Neumann: estructura de la
computadora tal y como la conocemos hoy;
concepto de programa interno
Coincide con el desarrollo de la electrnica
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.2
Qu es la Informtica
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Ms sobre la Historia de la
Informtica en el MIGS
http://www.fdi.ucm.es/migs
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.3
Qu es una computadora
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Fundamentos de computadores
Introduccin a la
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.4
Un poco de hardware
Tema 1
Dispositivo de salida
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Monitor
Descripcin de
lenguajes de
programacin
Unidad
de CD-ROM
Unidad Central
de Procesamiento
Unidad
de disquetes
Memoria principal
(ambos dentro)
y Unidad de Disco
Duro
Memoria
Teclado
Ratn
Dispositivos de
entrada
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Memoria
secundaria
1.5
Unidad AritmticoLgica
Ingeniera del
Software
Unidad de Memoria
Descripcin de
lenguajes de
programacin
Ideas importantes:
Un programa es una cadena secuencial de instrucciones
Las instrucciones ordenan al ordenador realizar una
operacin sobre unos datos
Las instrucciones se ejecutan una tras otra, aunque puede
haber bifurcaciones condicionales (usar un dato para
decidir entre dos instrucciones diferentes por donde
continuar)
El computador procesa tanto instrucciones como sus datos
Las instrucciones y los datos se almacenan juntos en memoria
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.6
Introduccin:
El Hardware
Selector
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Registro de Intercambio
de Datos (RID)
UM
...
Celdas
1.7
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Banco de Registros
Temporales (BRT)
Operador
Acumulador
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
UAL
1.8
Lenguajes y
Programas
Ingeniera del
Software
Secuenciador
Descripcin de
lenguajes de
programacin
Decodificador
Registro de Instruccin
(RI)
Operacin
Direcciones de 3
operandos
UC
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.9
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
LEER
INSTRUCCIN
Descripcin de
lenguajes de
programacin
DECODIFICAR
INSTRUCCIN
CAPTURAR
DATOS
REALIZAR
OPERACIN
CALCULAR
INSTRUCCIN
SIGUIENTE
ALMACENAR
RESULTADOS
La direccin de celda de la
siguiente instruccin se copia al CP
El resultado del Acumulador se copia en la direccin de la celda
del resultado, generalmente indicada en el ltimo operando de la instruccin
(Esto se repite para todos los resultados)
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Operando 1: X
Operando 2: Y
Operando 3: Z
1.11
Qu entiende la computadora?
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
1.12
Lenguaje mquina
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Pasos
a = (b + c)/(d + e)
y
x
Direcc. Temporal X
1.13
Inconvenientes
Grandes posibilidades de error
Portabilidad: mquina-dependiente
No se puede llevar el programa a otra mquina
porque, entre otras cosas, el repertorio de
instrucciones es distinto
Tedioso
Nula capacidad de abstraccin
Es muy complicado formular una solucin a
problemas del mundo real con ese lenguaje tan
especfico
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.14
Lenguaje ensamblador
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
SUM = La suma
DIV = La divisin
a = (b + c)/(d + e)
SUM B, C, X
SUM D, E, Y
DIV
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
X, Y, A
1.15
Cuestiones
Cmo entiende la mquina el lenguaje ensamblador?
Si las direcciones de memoria son simblicas en qu
direcciones de memoria se colocan los datos?
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Cdigo fuente
(lenguaje
ensamblador)
Programa
ensamblador
Cdigo objeto
(lenguaje
mquina)
Programa ensamblador
Traduccin a cdigo binario de cdigos simblicos de
operacin
Traduccin de las direcciones simblicas a direcciones
reales de memoria
1.16
Capacidad de abstraccin
Abstraccin procedimental (poder representar operaciones
ms complejas como calcular las races de un polinomio)
Abstraccin de datos (poder representar informacin ms
compleja como el estado de una cuenta bancaria)
Compilador
Analiza el programa fuente y lo traduce a lenguaje mquina
Ej. Turbo Pascal es un compilador de Pascal
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.17
El sistema operativo
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
1.18
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.19
Procesadores de texto
Hojas de clculo
Sistemas de gestin de bases de datos
Herramientas de diseo e ingeniera
Juegos
...
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.20
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.21
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.22
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.23
Descripcin de
lenguajes de
programacin
Anlisis
Diseo
Implementacin
Pruebas
Mantenimiento
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.24
Casa
Quiero 3 habitaciones,
2 baos, garaje...
Planos, diseo circuito
elctrico y de agua...
Se construye la casa
Se comprueba la solidez de la
estructura, el funcionamiento de
las instalaciones, el acabado...
Algunas reparaciones, se cierra
la terraza, se instala aire
acondicionado...
Software
Anlisis
Diseo
Implementacin
Se construye el software
Pruebas
Mantenimiento
Pequeas modificaciones o
correcciones (parches),
actualizaciones, etc...
1.25
Anlisis
Actividad en la que se analizan y clarifican los diferentes
aspectos del problema que debe ser resuelto por la
aplicacin, con el fin de establecer claramente qu debe
ser construido
El resultado es, normalmente, un documento de
requisitos software que especifica claramente las
funcionalidades de la aplicacin
Funcionalidad = lo que tiene que hacerse (sin
saber todava cmo)
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.26
Diseo
Actividad en la que se decide la organizacin y la
estructura de una aplicacin que satisfaga los diferentes
requisitos establecidos en la fase de anlisis
El resultado es uno (o varios) documentos de diseo que
especifican claramente cmo construir la aplicacin
Mientras que el anlisis se ocupa de qu hay que hacer,
el diseo se ocupa de cmo hacerlo
Hay varias tcnicas de diseo, nosotros estudiaremos
una de las ms bsicas: el diseo funcional
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.27
Implementacin
Actividad en la que se construye (codifica) la aplicacin
utilizando un lenguaje de programacin concreto, y
siguiendo, las directrices marcadas por los documentos
de diseo
Si las actividades anteriores han sido realizadas
correctamente, la fase de implementacin debera ser
bastante trivial
La implementacin se encarga de concretar el diseo
teniendo en cuenta un lenguaje y herramienta de
desarrollo concreta
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.28
Pruebas
Actividad en la que se asegura que la aplicacin
construida satisface los requisitos del usuario
Se debe invertir mucho tiempo en hacer pruebas
(mucho ms que en su implementacin!)
Dos pasos diferenciados
Verificacin: Se ajusta la aplicacin construida a los
requisitos establecidos?
Validacin: Resuelve la aplicacin el problema que
realmente tena el usuario?
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.29
Mantenimiento
Actividad en la que la aplicacin se modifica para
satisfacer cambios o ampliaciones en los requisitos del
usuario, corregir errores, etc.
Es la actividad ms costosa en el desarrollo de
software!
(Tened en cuenta que hay programas que estn muchos
aos en funcionamiento y lo usan miles de personas)
Estos costes pueden aliviarse si se hacen bien todo lo
anterior
*Otras actividades
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.30
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.31
Lenguajes de programacin
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.32
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Formalismos utilizados:
Notacin BNF (Backus-Naur Form)
Notacin EBNF (Extended Backus-Naur Form)
Diagramas sintcticos
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.33
Notacin BNF
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
TERMINAL
Smbolo (ej. una palabra) del lenguaje a definir
(se escribe en letras maysculas)
<no terminal>
Smbolo que se define en trminos de otros
smbolos (tanto terminales como no terminales)
(se escribe en letras minsculas y entre <>)
Regla de produccin Descripcin de un smbolo no terminal
como
equivalente a 1) una combinacin de terminales
y no
terminales, o 2) al vaco ()
1.34
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.35
Notacin EBNF
Tema 1
Introduccin:
El Hardware
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
EBNF
TERMINAL
terminal
<no terminal>
No-terminal
Metasmbolo
::= Equivalencia
|
Alternativa
Metasmbolo
::=
Equivalencia
|
Alternativa
(...)
Agrupacin
[...]
Aparicin opcional
{...}
Aparicin 0, 1 o ms
veces
Recursividad permitida
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Lenguajes y
Programas
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.37
Diagramas sintcticos
Tema 1
Introduccin:
El Hardware
TERMINAL
Lenguajes y
Programas
No Terminal
*En las reglas de produccin el no terminal
de la izquierda se deja sin recuadro
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Alternativa
Aparicin 0, 1 o ms veces
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
Aparicin opcional
1.38
N entero positivo
Dgito
Ingeniera del
Software
Descripcin de
lenguajes de
programacin
Dgito
Dgito
1
Sintaxis de los nmeros
reales en notacin de diagramas
sintcticos?
Introduccin a la Programacin
Ingeniera Tcnica en Informtica de Gestin
1.39
Federico Peinado
www.federicopeinado.es
1.40