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