Download Lenguajes de programación

Document related concepts
no text concepts found
Transcript
Programación 1
Tema I. Conceptos y elementos básicos de Programación Lección 2. Lenguaje de programación y ejecución de un programa
1
Léxico, sintaxis y semántica de un lenguaje
#include <iostream>
#include <iomanip>
using namespace std;
/*
* Pre: r >= 0.0
* Post: Escribe por pantalla, en una misma línea, el valor del radio [r]
* y de la longitud de una circunferencia de radio [r]
*/
void circunferencia (double r) {
const double PI = 3.1416;
cout << fixed << setprecision(2) << setw(7) << r << setprecision(3) << setw(16) << 2.0*PI*r << endl;
}
. . .
2
Léxico, sintaxis y semántica de un lenguaje
#include <iostream>
#include <iomanip>
using namespace std;
. . .
/*
* Pre: ‐‐‐
* Post: Escribe por pantalla el radio y la longitud de tres * circunferencias
*/
int main() {
/*
* Escribe por pantalla el radio y la longitud de tres circunferencias
*/
cout << setw(7) << "Radio" << setw(20) << "Circunferencia" << endl;
cout << setw(7) << "=====" << setw(20) << "==============" << endl;
circunferencia(1.234); circunferencia(5.0112);
circunferencia(11.5178);
// El programa termina normalmente devolviendo un valor 0
return 0;
}
3
Léxico, sintaxis y semántica de un lenguaje natural o de un lenguaje de programación
• Léxico: – ¿Y eso qué es?
• Sintaxis:
– ¿Y eso qué es?
• Semántica:
– ¿Y eso qué es?
4
Léxico, sintaxis y semántica de un lenguaje
• Léxico: – Vocabulario o conjunto de palabras
válidos de un idioma o lenguaje.
y
símbolos
• Sintaxis:
– ¿Y eso qué es?
• Semántica:
– ¿Y eso qué es?
5
Léxico, sintaxis y semántica de un lenguaje
• Léxico: – Vocabulario o conjunto de palabras
válidos de un idioma o lenguaje.
y
símbolos
• Sintaxis:
– Parte de la gramática que enseña a coordinar y
unir las palabras o símbolos para formar oraciones
y expresar conceptos. Conjunto de reglas que
definen las secuencias correctas de los elementos
léxicos de un lenguaje de programación.
• Semántica:
– ¿Y eso qué es?
6
Léxico, sintaxis y semántica de un lenguaje
• Léxico: – Vocabulario o conjunto de palabras
válidos de un idioma o lenguaje.
y
símbolos
• Sintaxis:
– Parte de la gramática que enseña a coordinar y
unir las palabras o símbolos para formar oraciones
y expresar conceptos. Conjunto de reglas que
definen las secuencias correctas de los elementos
léxicos de un lenguaje de programación.
• Semántica:
– Perteneciente o relativo al significado de las
palabras y oraciones.
7
Lenguajes de programación: símbolos
• Palabras clave o palabras reservadas del lenguaje:
asm
cath
continue
auto bool
char
class
default delete
break case
const
const_cast
do ...
• Identificadores:
• Operadores:
• Separadores y finalizadores:
• Constantes o literales: 8
Lenguajes de programación: símbolos
• Palabras clave o palabras reservadas del lenguaje:
asm
cath
continue
auto bool
char
class
default delete
break case
const
const_cast
do ...
• Identificadores:
std
main
cout
r PI ...
circunferencia
• Operadores:
• Separadores y finalizadores:
• Constantes o literales: 9
Lenguajes de programación: símbolos
• Palabras clave o palabras reservadas del lenguaje:
asm
cath
continue
auto bool
char
class
default delete
break case
const
const_cast
do ...
• Identificadores:
std
main
cout
r PI ...
circunferencia
• Operadores:
+ ‐
* / > >= == != = ++ ‐‐
% && || ...
• Separadores y finalizadores:
• Constantes o literales: 10
Lenguajes de programación: símbolos
• Palabras clave o palabras reservadas del lenguaje:
asm
cath
continue
auto bool
char
class
default delete
break case
const
const_cast
do ...
• Identificadores:
std
main
cout
r PI ...
circunferencia
• Operadores:
+ ‐
* / > >= == != = ++ ‐‐
% && || ...
• Separadores y finalizadores:
, ; . { } ( ) [ ] ...
• Constantes o literales: 11
Lenguajes de programación: símbolos
• Palabras clave o palabras reservadas del lenguaje:
asm
cath
continue
auto bool
char
class
default delete
break case
const
const_cast
do ...
• Identificadores:
std
main
cout
r PI ...
circunferencia
• Operadores:
+ ‐
* / > >= == != = ++ ‐‐
% && || ...
• Separadores y finalizadores:
, ; . { } ( ) [ ] ...
• Constantes o literales: 1670 0.4731 14.5e10 true false ‘H’ ‘+’ “” “H” “+” “Error en la linea 54” ...
12
en rojo: operadores
Notación BNF o notación de Backus‐Naur 

en rojo: operadores
Metasímbolos utilizados:
 <nombre_regla> ::= expresión (definición de una regla)
 “Pepi54to”
(expresión literal)
 exp1 | exp2 (expresión alternativa)
 <nombre_regla>
(sustituir por la expresión asociada)
 ( expresión )
(una sola vez)
 { expresión }
(cero o más veces)
 [ expresión ]
(cero o una vez)
Podemos definir la sintaxis de bit, vocal, secuencia_binaria y código:
<bit> ::= “0” | “1”
<vocal> ::= “A” | “E” | “I” | “O” | “U”
<secuencia_binaria> ::= <bit> { <bit> }
<código> ::= <vocal> { <vocal> | <bit> } <vocal> { <secuencia_binaria> }
13
Notación BNF o notación de Backus‐Naur

Vamos a definir la sintaxis de un identificador en C++:
 <mayúsc> ::= “A” | “B” | “C” | ... | “X” | “Y” | “Z” |
 <minúsc> ::= “a” | “b” | “c” | ... | “x” | “y” | “z” |
 <dígito> ::= “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”
 <identificador> ::= ( <mayúsc> | < minúsc > | “_” )
{ <mayúsc> | < minúsc > | <dígito> | “_” }

Ejercicio. Escribir una lista “variada” de identificadores C++ correctos y una lista
“variada” de secuencias de caracteres que no puedan serlo, indicando las causas
en cada caso.

Por cierto: ¿Quiénes son Peter Naur y John Backus? Debierais consultadlo ya que
son personalidades destacadas en el mundo de la Informática
14
Sintaxis de algunas instrucciones  Sintaxis de un bloque de instrucciones en C++:
 <bloque> ::= "{" { <declaración> } { <instrucción> } "}"
 Ejemplo de un bloque:
{
int aux = uno;
uno = otro; otro = aux;
}
15
Sintaxis de algunas instrucciones  Sintaxis de una instrucción condicional en C++:
– <instruccionIf> ::=
"if" "(" <condicion> ")" ( <instruccion> | <bloque> )
{ "else if" "(" <condicion> ")" ( <instruccion> | <bloque> ) }
[ "else" ( <instruccion> | <bloque> ) ]  Ejemplo de una instrucción condicional:
if (x > 0) {
y = x * y;
}
else {
y = x + y;
}
16
Algunas ideas importantes
 Cómo ejecutar un programa
 Compilación (traducción) del código fuente (un texto) a código binario (código
máquina), construcción de una aplicación (código máquina) y ejecución de
ésta. Es el caso de los programas escritos en C++.
 Interpretación del código fuente (análisis + ejecución de cada instrucción del
código fuente).
 Esquemas mixtos: compilación a un código intermedio (ejemplo: a código de la
Máquina Virtual Java o JVM) e interpretación de éste.
 Computador
 Máquina programable de tratamiento de información
 Consta de:
 Procesador(es) con su unidad central de proceso (CPU) y sus unidades aritmético‐
lógicas (ALU)
 Memoria para el almacenamiento de datos y programas
 Dispositivos periféricos: pantalla, teclado, impresora, plotter, dispositivos de almacenamiento, altavoces, micrófonos, joysticks, etc.
17
Algunas ideas importantes (cont.)
 Sistema operativo
 Conjunto de programas que facilitan la utilización del computador:





Acceso de usuarios
Seguridad y protección
Almacenamiento y gestión de ficheros o archivos
Edición, puesta a punto y ejecución de programas
Etc., etc.
 Y controlan el funcionamiento interno del computador optimizando su rendimiento:
 Gestiona los programas en ejecución (asignación de recursos y ordenación de tareas)
 Gestiona el uso de la memoria por los diferentes programas en ejecución
 Gestiona el acceso a ficheros por los diferentes programas en ejecución
 Controla el uso de dispositivos periféricos por los diferentes programas en ejecución
 Etc., etc.
18
Algunas ideas importantes (cont.)
 Entorno de programación (IDE)
 Programa o conjunto de programas que facilitan el trabajo de los
programadores
 Permite el desarrollo y la puesta a punto de programas:
 Edición del texto de un programa (programa fuente)
 Compilación o interpretación de programas
 Construcción de programas ejecutables y de bibliotecas
 Depuración y ejecución de un programa  En las prácticas de esta asignatura utilizaremos el entorno de programación CodeLite
19
20