¿Qué es un Lenguaje de Programación?
Tema 3
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Módulo I: Conceptos Básicos Módulo I: Conceptos Básicos
• Tema 1. ¿Qué es un ordenador?
• Tema 2. ¿Cómo se representan los datos en un ordenador?
• Tema 3. ¿ Tema 3. ¿Qu Qué é es un lenguaje de programaci es un lenguaje de programació ón? n?
• Tema 4. ¿Cómo se hace un programa informático?
• Tema 5. Tipos de datos y operadores básicos
• Tema 6. Sentencias de Control
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Tener una perspectiva de la evolución de los lenguajes de Tener una perspectiva de la evolución de los lenguajes de programación
programación
Distinguir entre lenguajes máquina, ensamblador y de alto nivel.
Distinguir entre lenguajes máquina, ensamblador y de alto nivel.
Comprender el proceso de creación de un programa Comprender el proceso de creación de un programa
Conocimientos y Habilidades Conocimientos y Habilidades
Distinguir las diferentes categorías de los lenguajes:
Distinguir las diferentes categorías de los lenguajes:
procedurales,
procedurales, orientado- orientado -a a- -objetos, objetos, funcionales, funcionales, declarativos y declarativos y especiales
especiales
Después de este tema, el alumno debería ser capaz de:
Después de este tema, el alumno debería ser capaz de:
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Cuestiones a resolver Cuestiones a resolver
• ¿Qué es un programa informático?
• Evolución de los lenguajes de programación
• Categorías de los lenguajes
• Metodologías de programación
¿Qué es un programa (informático)?
¿Qué es un programa
¿Qué es un programa (informático)?
(informático)?
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa
Programa: Es una colección de : Es una colección de instrucciones que indican
instrucciones que indican al ordenador al ordenador lo lo que debe hacer. que debe hacer.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Algoritmo: conjunto
Algoritmo: conjunto de pasos para de pasos para resolver un
resolver un problema problema
Muhammad ibn Musa al-Khwarizmi 800 - 847, Baghdad
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
En
En los programas, los diferentes pasos los programas, los diferentes pasos de un
de un algoritmo algoritmo se expresan como se expresan como instrucciones
instrucciones, , sentencias sentencias o o proposiciones
proposiciones. . Ö Ö un programa consta un programa consta de una secuencia de instrucciones.
de una secuencia de instrucciones.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programación
Programación: : conjunto de conjunto de operaciones que conducen a expresar operaciones que conducen a expresar
un algoritmo en forma de
un algoritmo en forma de programa programa
Lenguaje
Lenguaje de Programación de Programación: "idioma" : "idioma"
utilizado para describir programas o utilizado para describir programas o
secuencias de instrucciones secuencias de instrucciones
Instrucciones Básicas Instrucciones Básicas
Entrada/Salida
Entrada/Salida: transferencia de información entre los : transferencia de información entre los periféricos y la memoria central
periféricos y la memoria central Aritmético
Aritmético- -lógicas lógicas: ejecutan operaciones aritméticas y lógicas : ejecutan operaciones aritméticas y lógicas
Repetitivas
Repetitivas: permiten la repetición de secuencias de : permiten la repetición de secuencias de instrucciones
instrucciones Selectivas
Selectivas: permiten la selección de tareas alternativas en : permiten la selección de tareas alternativas en función de determinados resultados
función de determinados resultados
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Cuestiones a resolver Cuestiones a resolver
• ¿Qué es un programa informático?
• Evolución de los lenguajes de programación
• Categorías de los lenguajes
• Metodologías de programación
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Evolución de los lenguajes de Evolución de los lenguajes de
programación programación
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa 'hardware' Programa 'hardware'
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programas en Tarjetas Perforadas Programas en Tarjetas Perforadas
Perforadora Eléctrica de Tarjetas Perforadora Eléctrica de Tarjetas
Perforadas Perforadas
Programadores de Tarjetas Perforadas
Programadores de Tarjetas Perforadas
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programas de Tarjetas Perforadas Programas de Tarjetas Perforadas
Modelo A1: Calculadora Electrónica Programada con Tarjetas de IBM (1954)
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programas almacenados en memoria Programas almacenados en memoria
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
El único lenguaje que entiende un El único lenguaje que entiende un ordenador es el
ordenador es el lenguaje máquina lenguaje máquina . .
00101000 10001011 00010001
Recuerda:
Recuerda:
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa almacenado en memoria Programa almacenado en memoria
Lenguaje Máquina Lenguaje Máquina
• Está escrito en lenguaje directamente inteligible por la máquina
• Utiliza el alfabeto binario (0 y 1), lo que permite programar con secuencias de unos y ceros (código máquina)
• El conjunto de instrucciones depende de la máquina
• Ventajas: posibilidad de transferir un programa a la memoria sin necesidad de traducción posterior Ö mayor velocidad
• Inconvenientes: dificultad en la codificación y depuración de los
programas; dependencia de la máquina lenguaje máquina lenguaje máquina lenguaje máquina lenguaje máquina
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
00000000 00000100 0000000000000000
01011110 00001100 11000010 0000000000000010
11101111 00010110 0000000000000101 11101111 10011110 0000000000001011
11111000 10101101 11011111 0000000000010010
01100010 11011111 0000000000010101
11101111 00000010 11111011 0000000000010111
11110100 10101101 11011111 0000000000011110
00000011 10100010 11011111 0000000000100001
11101111 00000010 11111011 0000000000100100
01111110 11110100 10101101
11111000 10101110 11000101 0000000000101011
00000110 10100010 11111011 0000000000110001
11101111 00000010 11111011 0000000000110100
00000100 0000000000111101 00000100 0000000000111101
Programa 1
Programa 1 Programa Programa en en lenguaje máquina lenguaje máquina
1 1 2 2 3 3 4 4 55 6 6 7 7 8 8 9 9 10 10 11 11 1212 13 13 14 14 15 15 16 16
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes Simbólicos: ensamblador Lenguajes Simbólicos: ensamblador
• Cada instrucción equivale a una instrucción en lenguaje de máquina
• Utiliza palabras mnemotécnicas en lugar de cadenas o secuencias de bits. Ejemplo:
– ADD B,1 instrucción sumar
– MOV A,B instrucción asignar (mover)
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
lenguaje máquina lenguaje máquina
lenguaje lenguaje ensamblador ensamblador ensamblador
ensamblador
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes Simbólicos: ensamblador Lenguajes Simbólicos: ensamblador
• Necesita traducción
• Ventajas: mayo facilidad de codificación
• Inconvenientes: dependencia de la máquina, conocimiento del juego de instrucciones
Programa Fuente:
ensamblador
Programa ENSAMBLADOR
Programa Objeto:
código máquina
Programa almacenado en memoria Programa almacenado en memoria
Entry main, ^m<r2>
subl2 #12,sp jsb C$MAIN_ARGS movab $CHAR_STRING_CON
pushal -8(fp) pushal (r2) calls #2,read pushal -12(fp) pushal 3(r2) calls #2,read mull3 -8(fp),-12(fp),- pushal 6(r2) calls #2,print
clrl r0
ret
Programa
Programa 2 2 Programa Programa en en lenguaje simbólico lenguaje simbólico
1 1 22 33 4 4 5 5 6 6 7 7 8 8 99 1010 11 11 12 12 13 13 14 14 15 15 1616
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes de Alto Nivel Lenguajes de Alto Nivel
• Más sencillos de aprender y programar.
• Se aproximan al lenguaje natural.
• Son independientes de la máquina.
• Incluyen rutinas de uso frecuente como son las de entrada/salida, funciones matemáticas, de manera de que se puedan usar siempre sin necesidad de programarlas cada vez.
• Ejemplos de lenguajes de programación de alto nivel: C/
C++, Fortran, Basic, Pascal, Ada, Prolog, Simula, Modula, Cobol, JAVA, etc.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes de Alto Nivel Lenguajes de Alto Nivel
• Inconvenientes
– Incremento de tiempo de puesta a punto
– No se aprovechan al máximo los recursos internos de la máquina
– Aumento de la ocupación de la memoria – Mayor tiempo de ejecución de los programas
• Los programas escritos en lenguajes de alto nivel necesitan ser "traducidos" a lenguaje de máquina.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Traductores Traductores
• Traductor: programa que traduce el código fuente de un programa a lenguaje de máquina
• Intérprete: traductor que toma un programa fuente lo traduce y ejecuta línea a línea. Ejemplo: Smaltalk, Prolog.
• Compilador: programa que traduce los programas fuentes escritos en lenguajes de alto nivel a lenguaje de máquina, produciendo un programa objeto.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
lenguaje máquina lenguaje máquina
lenguaje de alto lenguaje de alto
nivel nivel intérprete
intérprete
BASIC BASIC JAVA JAVA
Intérpretes Intérpretes
• Método de operación: cada sentencia encontrada en el texto del programa es traducida a código máquina y ejecuta inmediatamente.
x = 5 y = 3 y = x + 2*y
x y
======
5 3 11
lenguaje máquina lenguaje máquina
lenguaje de alto lenguaje de alto
nivel nivel compilador
compilador
C, C++
C, C++
JAVA JAVA
Pastel de Carne
3HLz KL
&HL
"libro de recetas"
"libro de recetas"
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Compiladores Compiladores
• Método de operación: el programa completo Ap (lenguaje de alto nivel) se traduce a un lenguaje intermedio (similar al ensamblador) As, y después se traduce a código máquina, Am
#include <stdio.h>
int main() { if (c>0) cnt++;
} ….
01110000 11010000 load ax, bx
Store ax, bx
….
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Construcción de un
Construcción de un programa programa
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Ejecución de un Programa Ejecución de un Programa
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Cuestiones a resolver Cuestiones a resolver
• ¿Qué es un programa informático?
• Evolución de los lenguajes de programación
• Categorías de los lenguajes
• Metodologías de programación
Categorías de lenguajes
Categorías de lenguajes Lenguajes procedurales o imperativos Lenguajes procedurales o imperativos
• Lenguajes máquina, FORTRAN, COBOL
• ALGOL, BASIC, C, C, PASCAL, ADA
• Los lenguajes imperativos usan secuencias,
elección e iteración para escribir programas que le
dicen a la máquina cómo realizar una tarea
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes
Lenguajes procedurales o imperativos(II) procedurales o imperativos(II)
• Las instrucciones se ejecutan normalmente en orden secuencial, en el mismo orden en que están escritas, que sólo varía cuando se alcanza una instrucción de control (un bucle, una instrucción condicional o una transferencia).
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguaje Lenguaje C C
• C es un lenguaje de programación creado en 1969 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell basándose en los lenguajes BCPL y B.
• Al igual que sus dos predecesores, es un lenguaje orientado a la implementación de Sistemas Operativos (los sistemas operativos Linux y UNIX están escritos
mayormente en C), pero se ha convertido en un lenguaje de propósito general de los más usados.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguaje Lenguaje C C
• Se trata de un lenguaje no fuertemente tipado de medio nivel pero con muchas características de bajo nivel.
• Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Un ejemplo es la posibilidad de mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguaje Lenguaje C C
• Destaca su gran riqueza de operadores y expresiones.
• Existe un estándar ISO de 1986 denominado ANSI C. En teoría, un lenguaje 100% ANSI C sería portable entre plataformas y/o arquitecturas pero en la práctica esto no es siempre cierto.
#include <stdio.h>
/* Entrada / salida estándar */
int main(void) {
puts("¡Hola, Mundo!");
return 0;
}
Programa Programa en en C C
1 1 22 3 3 4 4 5 5 6 6 7 7 8 8 99 10 10 11 11 12 12 13 13 14 14 15 15 1616 17 17 18 18
Lenguajes
Lenguajes Orientados Orientados a Objeto a Objeto
• SIMULA Smalltalk C++ Java
• Los lenguajes orientados a objeto obligan al programador a concentrar la información en tipos de datos abstractos.
• Esto se hace asociando código imperativo con
variables (llamadas objetos objetos) y teniendo una
jerarquía de tipos de variables (llamadas clases clases).
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguaje Lenguaje C++ C++
• C++ (pronunciado /ce.mas.más/, o /si.plas.plás/) es un lenguaje de programación, diseñado a mediados de los ochenta, por Bjarne Stroustrup, como extensión del lenguaje de programación C.
• Es un lenguaje híbrido, que se puede compilar y resulta más sencillo de aprender para los programadores que ya conocen C.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguaje Lenguaje C++ C++
• Las principales características del C++ son:
– abstracción (encapsulación)
– el soporte para programación orientada a objetos (polimorfismo) – el soporte de plantillas o programación genérica (Templates)
• C++ es un lenguaje que abarca tres paradigmas de la programación:
– La programación estructurada, – la programación genérica y – la programación orientada a objetos.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
/* Este programa lee dos enteros del teclado e imprime su producto.
*/
#include <iostream.h>
int main (void) {
// Declaraciones locales int numero1;
int numero2;
int result;
// Sentencias cin >> numero1;
cin >> numero2;
result = numero1 * numero2;
cout << result;
return 0;
} // main
Programa
Programa en en lenguaje C++ lenguaje C++
1 1 2 2 33 44 5 5 6 6 7 7 8 8 9 9 1010 1111 12 12 13 13 14 14 15 15 16 16 1717 1818
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
import javax.swing.JFrame;
import javax.swing.JLabel;
public class HolaMundo extends JFrame { public static void main(String[] args) {
System.out.println("Vamos a crear una ventana que salude al mundo.");
new HolaMundo();
}
public HolaMundo() { super("Prueba de Java");
// creo la etiqueta
JLabel etiqueta = new JLabel("¡Hola, Mundo!");
etiqueta.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
getContentPane().add(etiqueta);
setSize(400,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
} }
Programa
Programa en en JAVA JAVA
1 1 2 2 33 44 5 5 6 6 7 7 8 8 9 9 1010 1111 12 12 13 13 14 14 15 15 16 16 1717 1818
Lenguajes
Lenguajes Funcionales Funcionales
• LISP
• Los lenguajes funcionales no tienen variables y usan recursión para realizar cálculos
• El elemento fundamental en Lisp es la lista, en el sentido más amplio del término, pues tanto los datos como los programas son listas.
• De ahí viene su nombre, pues Lisp es un acrónimo de "LIStProcessing".
Lenguajes Declarativos Lenguajes Declarativos
• PROLOG
• Un lenguaje de programación declarativa está basado en un subconjunto de lógica matemática
• El ordenador es programado para inferir reglas ntre valores en lugar de para calcular valores de salida a partir de datos de entrada.
• Los programas componen de cláusulas que
constituyen reglas del tipo "Si es verdad el
antecendente, entonces es verdad el consecuente".
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
%%
%% declaraciones
%%
padrede('juan', 'maria'). % juan es padre de maria padrede('pablo', 'juan'). % pablo es padre de juan padrede('pablo', 'marcela'). padrede('carlos', 'debora').
% A es hijo de B si B es padre de A hijode(A,B) :- padrede(B,A).
% A es abuelo de B si A es padre de C y C es padre B abuelode(A,B) :-
padrede(A,C), padrede(C, B).
% A y B son hermanos si el padre de A es también el padre de B y si A y B no son lo mismo
hermanode(A,B) :- padrede(C,A) , padrede(C,B), A \== B.
Programa
Programa 4 4 Programa Programa en en PROLOG PROLOG
1 1 2 2 3 3 44 55 6 6 7 7 8 8 9 9 10 10 1111 1212 13 13 14 14 15 15 16 16 17 17 1818
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Otros lenguajes Otros lenguajes
• HTML
• PHP
• Javascript
• JSP (Java Server Pages)
• ....
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes Declarativos Lenguajes Declarativos
• El HTML, acrónimo inglés de Hypertext Markup Language (lenguaje de marcación de hipertexto), es un lenguaje de marcas diseñado para estructurar textos y presentarlos en forma de hipertexto, que es el formato estándar de las páginas web.
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
¡Hola Mundo!
</body>
</html>
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<?php
if (isset($_POST['muestra'])) { echo 'Hola, '.htmlentities($_POST['nombre']) .', tu comida favorita es:'. htmlentities($_POST['comida']);
} else {
?>
<form method="POST" action="?">
¿Cuál es tu nombre?
<input type="text" name="nombre"/>
¿Cuál es tu comida favorita?
<select name="comida">
<option>Spaghetti</option>
<option>Asado</option>
<option>Pizza</option>
</select>
<input type="submit" name="muestra" value="Seguir">
</form>
<?php }
Programa
Programa en en PHP PHP
1 1 22 3 3 4 4 5 5 6 6 7 7 8 8 99 10 10 11 11 12 12 13 13 14 14 15 15 1616 17 17 18 18
Cuestiones a resolver Cuestiones a resolver
• ¿Qué es un programa informático?
• Evolución de los lenguajes de programación
• Categorías de los lenguajes
• Metodologías de programación
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.018
GENERACIONES DE METODOLOGÍA GENERACIONES DE METODOLOGÍA
Desarrollo Convencional (Sin Metodología) . Desarrollo Estructurado.
Desarrollo Orientado a Objetos .
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.020
DESARROLLO CONVENCIONAL DESARROLLO CONVENCIONAL
/ Los resultados finales son impredecibles
/ No hay forma de controlar lo que está sucediendo en el Proyecto
/ Los cambios organizativos afectan negativamente al proceso de desarrollo
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
DESARROLLO ESTRUCTURADO DESARROLLO ESTRUCTURADO
; Programación estructurada
; Diseño estructurado
; Análisis estructurado
; Especificaciones funcionales:
: Gráficas : Particionadas
: Mínimamente redundantes
4.030
METODOLOGIAS DE DESARROLLO DE SOFTWARE
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
DESARROLLO ORIENTADO AL OBJETO DESARROLLO ORIENTADO AL OBJETO
4.050
METODOLOGIAS DE DESARROLLO DE SOFTWARE
La esencia del desarrollo orientado a objetos es la identificación y organización de conceptos del
dominio de la aplicación y no tanto de su representación final en un lenguaje de
programación.
CLASIFICACION DE LAS METODOLOGIAS CLASIFICACION DE LAS METODOLOGIAS METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.080
O Estructuradas
D Orientadas a Procesos D Orientadas a datos Jerárquicas
No Jerárquicas D Mixtas
O Orientadas a Objetos O Para Sistemas de Tiempo Real
CLASIFICACION DE LAS METODOLOGIAS CLASIFICACION DE LAS METODOLOGIAS METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.080
O Estructuradas
D Orientadas a Procesos D Orientadas a datos Jerárquicas
No Jerárquicas D Mixtas
O Orientadas a Objetos
O Para Sistemas de Tiempo Real
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
METODOLOGIAS ESTRUCTURADAS METODOLOGIAS ESTRUCTURADAS
4.090
METODOLOGIAS DE DESARROLLO DE SOFTWARE
METODOLOGIAS ORIENTADAS A PROCESOS
• Especificación estructurada:
3Diagramas de Flujo de Datos 3Diccionario de Datos 3Especificaciones de procesos
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
METODOLOGIAS ESTRUCTURADAS METODOLOGIAS ESTRUCTURADAS
4.120
METODOLOGIAS DE DESARROLLO DE SOFTWARE
METODOLOGIAS ORIENTADAS A DATOS JERARQUICOS
• La estructura de control del programa debe ser jerárquica y se debe derivar de la estructura de datos del programa
• El proceso de diseño consiste en definir primero las estructuras de los datos de entrada y salida, mezclarlas todas en una estructura jerárquica de programa y después ordenar detalladamente la lógica procedimental para que se ajuste a esta estructura
• El diseño lógico debe preceder y estar separado del diseño físico
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
METODOLOGIAS PARA SISTEMAS DE TIEMPO REAL METODOLOGIAS PARA SISTEMAS DE TIEMPO REAL
4.150
METODOLOGIAS DE DESARROLLO DE SOFTWARE
Manejo de interrupciones
Comunicación y sincronización entre tareas Gestión de procesos concurrentes
Respuesta oportuna ante eventos externos Datos continuos o discretos
Se está produciendo una evolución de las metodologías orientadas a objetos para desarrollos de sistemas de tiempo real
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática