programación 1 tema i. conceptos y elementos básicos de...

26
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

Upload: others

Post on 19-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 2: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 3: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 4: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 5: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 6: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

#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

Page 7: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

.  .  .

/**  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

Page 8: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 9: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

#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)

Page 10: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

.  .  .

/**  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

Page 11: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 12: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

#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

Page 13: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

.  .  .

/**  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

Page 14: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 15: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 16: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 17: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 18: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 19: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 20: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 21: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 22: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 23: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 24: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 25: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

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

Page 26: Programación 1 Tema I. Conceptos y elementos básicos de ...webdiis.unizar.es/asignaturas/PROG1/doc/grupo_411/transparencias/... · Almacenamiento y gestión de ficheros o archivos

26