programación 1 tema i. conceptos y elementos básicos de...
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/6.jpg)
#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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/7.jpg)
. . .
/** 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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/9.jpg)
#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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/10.jpg)
. . .
/** 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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/12.jpg)
#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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/13.jpg)
. . .
/** 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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022050718/5e16cfda410258046a3e06b2/html5/thumbnails/26.jpg)
26