Programación 1 Tema I. Conceptos y elementos básicos de...

Preview:

Citation preview

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) {// Define el valor de la constante trigonométrica PI

const double PI = 3.1416;// Presenta los valores del radio y la longitud de la circunferenciacout << 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 el encabezamiento del listado de resultadoscout << setw(7) << "Radio" << setw(20) << "Circunferencia" << endl;cout << setw(7) << "=====" << setw(20) << "==============" << endl;// Escribe el radio y la longitud de tres circunferenciascircunferencia(1.234);    circunferencia(5.0112);circunferencia(11.5178);// El programa termina normalmente devolviendo un valor 0return 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 y símbolos válidos de un idioma

o lenguaje.

• Sintaxis:– ¿Y eso qué es?

• Semántica:– ¿Y eso qué es?

5

#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) {// Define el valor de la constante trigonométrica PIconst double PI = 3.1416;// Presenta los valores del radio y la longitud de la circunferenciacout << fixed << setprecision(2) << setw(7) << r << setprecision(3) 

<< setw(16) << 2.0 * PI * r << endl;}

.  .  .

6

Léxico:• Comentarios• Espacios en blanco• Palabras reservadas• Identificadores• Delimitadores• Separadores• Operadores

.  .  .

/**  Pre: ‐‐‐*  Post: Escribe por pantalla el radio y la longitud de tres *        circunferencias*/

int main() {// Escribe el encabezamiento del listado de resultadoscout << setw(7) << "Radio" << setw(20) << "Circunferencia" << endl;cout << setw(7) << "=====" << setw(20) << "==============" << endl;// Escribe el radio y la longitud de tres circunferenciascircunferencia(1.234);    circunferencia(5.0112);circunferencia(11.5178);// El programa termina normalmente devolviendo un valor 0return 0;

}

7

Léxico, sintaxis y semántica de un lenguaje

• Léxico: – Vocabulario o conjunto de palabras y símbolos válidos de un idioma

o lenguaje.

• 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?

8

#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) {// Define el valor de la constante trigonométrica PIconst double PI = 3.1416;// Presenta los valores del radio y la longitud de la circunferenciacout << fixed << setprecision(2) << setw(7) << r << setprecision(3) 

<< setw(16) << 2.0 * PI * r << endl;}

.  .  .

9

Sintaxis: • Estructura del texto (de las secuencias de

símbolos que lo componen)

.  .  .

/**  Pre: ‐‐‐*  Post: Escribe por pantalla el radio y la longitud de tres *        circunferencias*/

int main() {// Escribe el encabezamiento del listado de resultadoscout << setw(7) << "Radio" << setw(20) << "Circunferencia" << endl;cout << setw(7) << "=====" << setw(20) << "==============" << endl;// Escribe el radio y la longitud de tres circunferenciascircunferencia(1.234);    circunferencia(5.0112);circunferencia(11.5178);// El programa termina normalmente devolviendo un valor 0return 0;

}

10

Léxico, sintaxis y semántica de un lenguaje

• Léxico: – Vocabulario o conjunto de palabras y símbolos válidos de un idioma

o lenguaje.

• 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.

11

#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) {// Define el valor de la constante trigonométrica PI

const double PI = 3.1416;// Presenta los valores del radio y la longitud de la circunferenciacout << fixed << setprecision(2) << setw(7) << r << setprecision(3) 

<< setw(16) << 2.0 * PI * r << endl;}

.  .  .

12

Semántica: • Significado del texto y de las frases (secuencias

de símbolos) que lo componen

.  .  .

/**  Pre: ‐‐‐*  Post: Escribe por pantalla el radio y la longitud de tres *        circunferencias*/

int main() {// Escribe el encabezamiento del listado de resultadoscout << setw(7) << "Radio" << setw(20) << "Circunferencia" << endl;cout << setw(7) << "=====" << setw(20) << "==============" << endl;// Escribe el radio y la longitud de tres circunferenciascircunferencia(1.234);    circunferencia(5.0112);circunferencia(11.5178);// El programa termina normalmente devolviendo un valor 0return 0;

}

13

Léxico de un lenguaje de programación: símbolos

• Palabras clave o palabras reservadas del lenguaje:asm auto      bool break      casecath char class const const_castcontinue default   delete do           ...

• Identificadores:

• Operadores:

• Delimitadores, separadores y finalizadores:

• Constantes o literales: 

14

Léxico de un lenguaje de programación: símbolos

• Palabras clave o palabras reservadas del lenguaje:asm       auto      bool       break      casecath      char      class      const      const_castcontinue  default   delete     do           ...

• Identificadores:std       main      cout      circunferenciar         PI        ...

• Operadores:

• Delimitadores, separadores y finalizadores:

• Constantes o literales: 

15

Léxico de un lenguaje de programación: símbolos

• Palabras clave o palabras reservadas del lenguaje:asm       auto      bool       break      casecath      char      class      const      const_castcontinue  default   delete     do           ...

• Identificadores:std       main      cout      circunferenciar         PI        ...

• Operadores:+  ‐ *  /  >  >=  ==  !=  =  ++  ‐‐ %  &&   ||  ...

• Delimitadores, separadores y finalizadores:

• Constantes o literales: 

16

Léxico de un lenguaje de programación: símbolos

• Palabras clave o palabras reservadas del lenguaje:asm       auto      bool       break      casecath      char      class      const      const_castcontinue  default   delete     do           ...

• Identificadores:std       main      cout      circunferenciar         PI        ...

• Operadores:+  ‐ *  /  >  >=  ==  !=  =  ++  ‐‐ %  &&   ||  ...

• Delimitadores, separadores y finalizadores:,  ;  .  {  }  (  )  [  ]  ...

• Constantes o literales: 

17

Léxico de un lenguaje de programación : símbolos

• Palabras clave o palabras reservadas del lenguaje:asm       auto      bool       break      casecath      char      class      const      const_castcontinue  default   delete     do           ...

• Identificadores:std       main      cout      circunferenciar         PI        ...

• Operadores:+  ‐ *  /  >  >=  ==  !=  =  ++  ‐‐ %  &&   ||  ...

• Delimitadores, separadores y finalizadores:,  ;  .  {  }  (  )  [  ]  ...

• Constantes o literales: 1670    0.4731    14.5e10    true    false   ‘H’   ‘+’ “”   “H”   “+”   “Error en la linea 54”   ...

18

Sintaxis: notación BNF o notación de Backus‐Naur  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> }

19

en rojo: operadoresen

rojo

: ope

rado

res

Sintaxis: 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 causasen cada caso.

Por cierto: ¿Quiénes son Peter Naur y John Backus? Debieras consultadlo ya queson personalidades destacadas en el mundo de la Informática

20

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;

}

21

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;}

22

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 éstaen la maquina (computador). Es el caso de los programas escritos en C++.

Interpretación del código fuente (análisis + ejecución de cada instrucción delcódigo fuente).

Esquemas mixtos: compilación a un código intermedio (ejemplo: a código de laMáquina Virtual Java o JVM) e interpretación de éste.

Computador Máquina programable de tratamiento de información Consta de:

Procesador(es) o unidad(es) central(es) de proceso (CPU) y unidad(es) 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.

Conectividad a redes23

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.

24

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

25

26

Recommended