Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Desarrollo de software
Modelo del computador desde el
punto de vista del programado
Sistema operativo
Máquina
(Hardware)
Algoritmos
Para la especificación del problema podemos usar formas de lenguaje natural
o lenguajes formales
7
PROGRAMAS
al Hardware
• Código máquina
• Ensamblador
9
CLASIFICACIÓN DE LOS LENGUAJES DE PROGRAMACIÓN
LENGUAJE de BAJO NIVEL o ENSAMBLADOR – Muy similar al código máquina. Sustituye las
cadenas de bits por mnemotécnicos, etiquetas, direccionamientos. Proporciona conversión
automática de datos (decimal>binario) haciendo que sean más fáciles de usar que el código
máquina.
− Programación menos costosa.
− Es factible revisar el código de un programa para ver que hace, aunque es sigue siendo muy
costoso
− El problema con el código máquina es que la mente humana está bien equipada para trabajar
con textos y palabras, pero no con patrones numéricos
− El lenguaje ensamblador reemplaza las instrucciones en binario, por códigos de texto mucho
más amigables para el programador
− Programación demasiado costosa para la mayor parte de las aplicaciones. Sólo se usa
excepcionalmente para programas cortos en los que se pretende explotar alguna característica
muy específica de esa máquina en concreto, o bien se necesita un código especialmente
optimizado
⚫ LD LOAD R1<-- 9
• Total 34 ciclos R1,@4500 M(4500)
⚫ LD LOAD R2<-- 9
R2,@6700 M(6700)
⚫ ST STORE R2-- 9
R3,@8000 >M(8000)
15
Proceso de ensamblado
Código fuente: Programa
codificado en ensamblador
TLINK: Linker
Un archivo .OBJ, si bien contiene ya todo el código de máquina, no puede ser ejecutado, pues no
contiene información necesaria, por otro lado, cuando hacemos un programa en varios módulos, no
solamente existe un código objeto sino varios, que debemos combinar o relacionar entre sí.
Estos procesos son llevados a cabo por el linker o enlazador TLINK; el cual toma como entrada uno o
varios archivos .OBJ y genera los archivos ya ejecutables por el sistema, con extensión .COM o .EXE.
16
CLASIFICACIÓN DE LOS LENGUAJES DE PROGRAMACIÓN
LENGUAJE de BAJO NIVEL
Ejemplo: Instrucción que suma el contenido de los registros 1 y 2 y
deposita el resultado en el registro 3
17
CLASIFICACIÓN DE LOS LENGUAJES DE PROGRAMACIÓN
18
CLASIFICACIÓN DE LOS LENGUAJES DE PROGRAMACIÓN
19
Programa que suma dos números
Algoritmo:
1. Leer dato1 por dispositivo de entrada y dejarlo en un registro del microprocesador
2. Leer dato2 por dispositivo de entrada y dejarlo en un registro del microprocesador
3. Sumar dato1 y dato2 en la ALU y depositar el resultado en otro registro
4. Mover el resultado a memoria principal para su posterior uso
5. Sacar el resultado por un dispositivo de salida
Código Máquina:
1. 1101011101001001000110
2. 1101111111001111000110 1111000 Código operación OUT
0011 operando registro 3
3. 0001011100000000000110 01001110110 dirección/es destino
4. 0111011100000001110110
5. 1111000 0011 01001110110
Ensamblador:
1. IN @puerto_teclado, reg1 Lenguaje de alto nivel:
int dato1,dato2,resultado;
2. IN @puerto_teclado, reg2
main(){
3. SUM reg1,reg2,reg3 dato1=getch();
4. MOV reg3, @dir_memoria_destino dato2=getch();
5. OUT reg3 @puerto_pantalla resultado=dato1+dato2;
printf("el resultado es %d \n",resultado);
}
Compiladores e Intérpretes
Encargados de traducir los programas escritos en lenguaje de alto nivel a
código máquina
Código ejecutable:
Código que puede
ejecutarse en la máquina,
resultado de linkar el
código objeto
Compiladores e Intérpretes
INTÉRPRETE
• Errores de ejecución
24
• Conjunto de programas necesarios para que el programador
desarrolle software. Generalmente todos estos programas se
ENTORNO DE integran en un único producto llamado
PROGRAMACIÓN • IDE (o EDI) Entorno Integrado de Desarrollo
• COMPILADORES: Traducen un fichero de texto
ENTORNO DE que contiene un programa en un LAN en código
objeto
PROGRAMACIÓN
ENTORNO DE
PROGRAMACIÓN
• EDITORES: Son
programas de
edición de texto que
permiten introducir
en un fichero el
código fuente del
programa en un
LAN. Los editores de
programas suelen
incluir ayudas como
colorear de distinto
modo los elementos
del programa
27
ENTORNO DE
PROGRAMACIÓN
28
ENTORNO DE
PROGRAMACIÓN
• ARCHIVOS DE BIBLIOTECA o
LIBRERÍAS: Similar al anterior,
salvo que en este caso el código
es código objeto, (o sea
previamente compilado), y por
tanto no portable a otras
máquinas
29
ENTORNO DE PROGRAMACIÓN
• Paradigmas:
Paradigmas • Programación imperativa
de • Programación estructurada
• Programación modular o procedural
programación • Programación orientada a objetos
• Programación reactiva
• Programación distribuida
• Programación declarativa
• Programación funcional
• Programación lógica
• El programador indica por medio de
programa cual es el procedimiento
correcto para resolver el problema.
• Para programar:
• declarar las variables necesarias
• Diseñar una secuencia (algoritmo)
adecuada de instrucciones que
transforme las entradas en las salidas
pretendidas
Programación imperativa
PROGRAM mayorDeDosNumeros;
VAR x,y, mayor;
BEGIN
Read (x,y);
if x > y then
mayor := x
else
mayor := y;
Write (mayor);
END.
Programación declarativa
Ejemplo: Parentescos No necesita definir algoritmos puesto
HECHOS que describe el problema en lugar
[parentesco].
padre(josé,ana).
de tratar de encontrar una solución
padre(antonio,luis). para el mismo.
padre(juan,rosa).
padre(pedro,antonio).
madre(ana,luis). Este paradigma utiliza el principio del
madre(eva,antonio).
razonamiento lógico para responder
REGLAS
abuelo(X,Z):-padre(X,Y),padre(Y,Z) a las preguntas o cuestiones
abuelo(X,Z):-padre(X,Y),madre(Y,Z) consultadas.
Consultas:
?- abuelo(josé,luis). Un motor de inferencia encuentra la
SI solución a las consultas a partir de
?- abuelo(josé,ana). los datos iniciales (hechos), y las
NO reglas
?- abuelo(X,luis).
X=josé, pedro
https://swish.swi-prolog.org/
37
• Programación imperativa
• Programación estructurada
Paradigmas • Programación modular o
procedural
de • Programación orientada a objetos
• Programación reactiva
programación • Programación distribuida
• Programación declarativa
• Programación funcional
• Programación lógica
Programación modular
La programación estructurada clásica funciona bien para programas cortos. Un
programa con más de 1000 líneas es imposible de leer ( y 1000 líneas no es
nada)
40
• Programación imperativa
• Programación estructurada
Paradigmas • Programación modular o
procedural
de • Programación orientada a objetos
• Programación reactiva
programación • Programación distribuida
• Programación declarativa
• Programación funcional
• Programación lógica
TEMA 1. INTRODUCCIÓN A LA PROGRAMACIÓN
Programación clasica vs
Programación OO
• Programación Clásica
• Se especifican por separado los tipos de datos y las funciones y procedimientos
del programa que los modifican. Los datos se guardan en variables
• Hay una estructura de control central (programa principal) en la que los valores
fluyen a través de varios procedimientos definidos en el programa.
Programación clasica vs
Programación OO
• Ventajas:
• Mejor adaptada al entorno que se pretende informatizar: El mundo real
es un mundo de objetos no de datos independientes
• Mejor reutilización del software, gracias a la herencia.
43
TEMA 1. INTRODUCCIÓN A LA PROGRAMACIÓN
• Programación imperativa
• Programación estructurada
• Programación modular o procedural
• Programación orientada a objetos
• Programación reactiva
• Programación distribuida
• Programación declarativa
• Programación funcional
• Programación lógica
45
Programación
reactiva
• También es programación reactiva la asociada a sistemas operativos con interface gráfica como
Windows.
• En estos casos no hay una estructura de control central. El programa se construye asociando
código a los diversos eventos, que el usuario puede provocar. Por ejemplo pasando el ratón o
haciendo clic sobre parte de la pantalla.
46
Programación reactiva
• La programación Orientada o
Objetos es por definición reactiva
49
Programación
distribuida
• En la programación distribuida se rompe la
presunción de que el software se va a
ejecutar en una sóla máquina. De esta
forma el sw distribuido puede estar
repartido en múltiples ordenadores, cada
uno ejecutando en paralelo porciones de
este.
50
Programación distribuida
51
Programación distribuida
FRONT-END Y BACK END
Estaríamos hablando
de Lenguajes del lado
del cliente como
Javascript y Java
53
Lenguajes del lado del servidor
Actualmente, cuando hablamos de programación distribuida, hablamos
mayormente de Desarrollo de Aplicaciones Web.
54
• Programación imperativa
• Programación estructurada
Paradigmas • Programación modular o
procedural
de • Programación orientada a objetos
• Programación reactiva
programación • Programación distribuida
• Programación declarativa
• Programación funcional
• Programación lógica
55
Programación
declarativa
• No necesita definir algoritmos
puesto que describe el problema
en lugar de encontrar una
solución al mismo. Este paradigma
utiliza el principio del
razonamiento lógico para
responder a las preguntas o
cuestiones consultadas.
56
Programación funcional
Para programar:
− Se construyen funciones sencillas
− Se construyen funciones más complejas a
partir de las sencillas
− Se evalúan las funciones sobre los datos de
entrada
El concepto es muy antiguo, (principios de los años 80), y es un paradigma de programación muy
nicho, usado por poca gente.
Sin embargo en los últimos años se ha vuelto a poner de moda, usando P.O.O. bajo las reglas del
paradigma funcional.
57
Programación
funcional
• max3(x,y,z) :=
max2(max2(x,y),z)
• NOTA: “:=“ en este caso significa “se
define como”
58
• Existen LAN como Haskell específicamente diseñados para el paradigma funcional, aunque…
• Otros LAN, especialmente los OO (orientados a Objetos) pueden ser usados funcionalmente.
• La programación funcional es un estilo de programación, no un tipo específico de LAN
59
• Programación imperativa
• Programación estructurada
Paradigmas • Programación modular o
procedural
de • Programación orientada a objetos
• Programación reactiva
programación • Programación distribuida
• Programación declarativa
• Programación funcional
• Programación lógica
• Tiene su base en cálculo de predicados de primer
orden.
Programación • Para programar:
lógica • A partir de los datos se definen hechos (o
predicados básicos)
• Se diseñan las reglas lógicas que definen el
problema
• Se diseña una consulta para obtener del
sistema la solución deseada
• Ventaja: El compilador dispone de un motor de
inferencia. Dados unos hechos, y unas reglas bien
formadas, es capaz por sí mismo de determinar la
solución a las consultas, sin que el programador
tenga que indicarle la secuencia de operaciones a
llevar a cabo.
Consultas:
?- abuelo(josé,luis).
SI
?- abuelo(josé,ana).
NO
?- abuelo(X,luis)
X=josé, pedro
https://www.youtube.com/watch?v=zjDoVTb7cyU
Prog. Prog. orientada
Concurrente a objetos
Prog. LISP
CLOS
Funcional Hope
Haskel
Paradigmas (P.Declarativa)
Prog.
y lenguajes Lógica Prolog Ciao-Prolog Prolog++
(P.Declarativa)
C Ada Smalltalk
Ada-95 Dephi
Prog. PASCAL Pascal FC C++
Imperativa Fortran Java Eiffel
COBOL