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