¿Qué es un Lenguaje de Programación?

Anuncio
Tema 3
Módulo I: Conceptos Básicos
¿Qué es un
Lenguaje de
Programación?
• Tema 1. ¿Qué es un ordenador?
• Tema 2. ¿Cómo se representan los datos en un
ordenador?
• Tema 3. ¿Qué
Qué es un lenguaje de programació
programació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
Conocimientos y Habilidades
Después de este tema, el alumno debería ser capaz de:
Tener una perspectiva de la evolución de los lenguajes de
programación
Cuestiones a resolver
• ¿Qué es un programa informático?
• Evolución de los lenguajes de programación
Distinguir entre lenguajes máquina, ensamblador y de alto nivel.
Comprender el proceso de creación de un programa
Distinguir las diferentes categorías de los lenguajes:
procedurales, orientadoorientado-a-objetos, funcionales, declarativos y
especiales
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
• 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
¿Qué es un programa
(informático)?
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
1
Algoritmo: conjunto de pasos para
resolver un problema
Programa:
Programa: Es una colección de
instrucciones que indican al ordenador
lo que debe hacer.
Muhammad ibn Musa al-Khwarizmi
800 - 847, Baghdad
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
En los programas, los diferentes pasos
de un algoritmo se expresan como
instrucciones,
instrucciones, sentencias o
proposiciones.
proposiciones. Ö un programa consta
de una secuencia de instrucciones.
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
Programación:
Programación: conjunto de
operaciones que conducen a expresar
un algoritmo en forma de programa
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Instrucciones Básicas
Lenguaje de Programación:
Programación: "idioma"
utilizado para describir programas o
secuencias de instrucciones
Entrada/Salida:
Entrada/Salida: transferencia de información entre los
periféricos y la memoria central
AritméticoAritmético-lógicas:
lógicas: ejecutan operaciones aritméticas y lógicas
Selectivas:
Selectivas: permiten la selección de tareas alternativas en
función de determinados resultados
Repetitivas:
Repetitivas: permiten la repetición de secuencias de
instrucciones
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
2
Cuestiones a resolver
Evolución de los lenguajes de
programación
• ¿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
Programa 'hardware'
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Perforadora Eléctrica de Tarjetas
Perforadas
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
Programas en Tarjetas Perforadas
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programadores de Tarjetas Perforadas
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
3
Programas de Tarjetas Perforadas
Programas almacenados en memoria
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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa almacenado en memoria
Recuerda:
El único lenguaje que entiende un
ordenador es el lenguaje máquina.
máquina.
00101000
10001011
00010001
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
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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
lenguaje máquina
lenguaje máquina
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
4
Programa 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
00000000
01011110
00000100
00001100
11101111
11101111
10101101
01100010
00000010
10101101
10100010
00000010
11110100
10101110
10100010
00000010
11111000
11101111
11110100
00000011
11101111
01111110
11111000
00000110
11101111
Lenguajes Simbólicos: ensamblador
Programa en lenguaje máquina
0000000000000000
11000010
0000000000000010
00010110
0000000000000101
10011110
0000000000001011
11011111
0000000000010010
11011111
0000000000010101
11111011
0000000000010111
11011111
0000000000011110
11011111
0000000000100001
11111011
0000000000100100
10101101
11000101
0000000000101011
11111011
0000000000110001
11111011
0000000000110100
00000100
0000000000111101
00000100
0000000000111101
• 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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes Simbólicos: ensamblador
ensamblador
lenguaje
ensamblador
• Necesita traducción
• Ventajas: mayo facilidad de codificación
• Inconvenientes: dependencia de la máquina,
conocimiento del juego de instrucciones
Programa Fuente:
ensamblador
lenguaje máquina
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa almacenado en memoria
Programa Objeto:
código máquina
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa
ENSAMBLADOR
Programa en lenguaje simbólico
Entry
subl2
jsb
movab
main, ^m<r2>
#12,sp
C$MAIN_ARGS
$CHAR_STRING_CON
pushal
pushal
calls
pushal
pushal
calls
mull3
pushal
calls
clrl
ret
-8(fp)
(r2)
#2,read
-12(fp)
3(r2)
#2,read
-8(fp),-12(fp),6(r2)
#2,print
r0
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
5
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.
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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
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.
intérprete
lenguaje de alto
nivel
BASIC
JAVA
lenguaje máquina
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
Intérpretes
Pastel de
Carne
"libro de recetas"
• 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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
compilador
3HŒLz
KL
&Hˆ„L
lenguaje de alto
nivel
C, C++
JAVA
lenguaje máquina
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
6
Construcción de un programa
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++;
….
}
load ax, bx
Store ax, bx
….
01110000
11010000
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Ejecución de un Programa
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
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
Categorías de lenguajes
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes procedurales o imperativos
• Lenguajes máquina, FORTRAN, COBOL
• ALGOL,
BASIC, 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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
7
Lenguajes 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 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
Programa en C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
/* Entrada / salida estándar */
int main(void)
{
puts("¡Hola, Mundo!");
return 0;
}
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguaje 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 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.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes Orientados 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
8
Lenguaje 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.
Lenguaje 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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa en lenguaje C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Lenguajes 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".
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa en JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);
}
}
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
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
9
Programa 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Programa en PROLOG
%%
%% 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.
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Otros lenguajes
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
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
• PHP
• Javascript
• JSP (Java Server Pages)
• ....
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Programa en PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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
}
?>
</body>
</html>
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
¡Hola Mundo!
</body>
</html>
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
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
10
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.018
4.020
METODOLOGIAS DE DESARROLLO DE SOFTWARE
DESARROLLO CONVENCIONAL
GENERACIONES DE METODOLOGÍA
/ Los resultados finales son impredecibles
Desarrollo Convencional (Sin Metodología) .
Desarrollo Estructurado.
Desarrollo Orientado a Objetos.
/ 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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.030
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.050
DESARROLLO ESTRUCTURADO
DESARROLLO ORIENTADO AL OBJETO
; Programación estructurada
; Diseño estructurado
; Análisis estructurado
; Especificaciones funcionales:
: Gráficas
: Particionadas
: Mínimamente redundantes
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.
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
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.080
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.080
CLASIFICACION DE LAS METODOLOGIAS
O Estructuradas
CLASIFICACION DE LAS METODOLOGIAS
O Estructuradas
D Orientadas a Procesos
D Orientadas a Procesos
D Orientadas a datos
D Orientadas a datos
’ Jerárquicas
’ No Jerárquicas
D Mixtas
’ Jerárquicas
’ No Jerárquicas
D Mixtas
O Orientadas a Objetos
O Orientadas a Objetos
O Para Sistemas de Tiempo Real
O Para Sistemas de Tiempo Real
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
11
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.090
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.120
METODOLOGIAS ESTRUCTURADAS
METODOLOGIAS ORIENTADAS A PROCESOS
• Especificación estructurada:
3Diagramas de Flujo de Datos
3Diccionario de Datos
3Especificaciones de procesos
METODOLOGIAS ESTRUCTURADAS
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
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
METODOLOGIAS DE DESARROLLO DE SOFTWARE
4.150
METODOLOGIAS PARA SISTEMAS DE TIEMPO REAL
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
Resumen
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
Proximamente…
Proximamente…
• ¿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
¿Cómo se hace un
Programa
Informático?
Departamento de Teoría de la Señal y Comunicaciones e Ingeniería Telemática
12
Descargar