Tema 3. – Elementos básicos de un lenguaje de programación. Turbo Pascal 1. Introducción 1. Introducción ¾Sintaxis y semántica de los lenguajes: 2. Tipos de datos básicos ¾Sintaxis: conjunto de normas para la escritura de 3. Otros tipos 4. Constantes y variables sentencias. 5. Expresiones: tipos y operadores ¾Mediante diagramas sintácticos 6. Instrucción de asignación ¾Mediante reglas BNF 7. Funciones predefinidas 8. Funciones de E/S ¾Semántica: significado de las sentencias 9. Estructura de un programa en Pascal 1 Reglas Sintácticas Diagramas Sintácticos Reglas BNF ¾ Cada diagrama sintáctico define la sintaxis de una sentencia sent_mientras ::= while <condición> do <sentencia> ; sentencia 2 ::= <sentencia_simple> | <sentencia_compuesta> ¾ Se interpreta seleccionando cualquier camino (siguiendo el sentido de las flechas) desde la entrada a la salida del diagrama y teniendo en cuenta todo lo que forma parte del camino Diagramas sintácticos while do condición sentencia ¾ Existen diagramas sintácticos para todo el lenguaje Turbo Pascal ; 3 Diagramas Sintácticos Sintaxis de Turbo Pascal ¾ Ejemplo: ¾ Las palabras y secuencias de palabras que se pueden utilizar en un programa Turbo Pascal se clasifican en: letra a ... z A ... 4 Z ¾ Literales digito ¾ Identificadores 0 1 ... 8 9 ¾ Palabras reservadas ¾ Comentarios hexadecimal a ... f A ... F digito 5 6 Literales Identificadores ¾ Los literales se utilizan para expresar valores ¾ Los identificadores son nombres que se utilizan para expresar constantes, variables, tipos de datos, nombres constantes: ¾ Literales enteros: 0 1 60 ¾ Literales reales: 2.9E-39 1.0 ¾ Caracteres: ‘H’ ‘‘ ‘:’ ¾ Cadenas (strings): ‘Hora: ‘ ‘#!?’ de procedimientos y funciones, etc. -32767 ¾ Tipos: 3.1416 ‘‘’’ ¾ estándares: integer, real, byte, ord, chr, round,... ‘3’ ¾ definidos por el usuario: ¾ 127 caracteres como máximo ¾ no pueden ser palabras reservadas ¾ no se diferencian mayúsculas y minúsculas ‘321’ identificador letra - letra digito - 7 8 Palabras reservadas Comentarios ¾ Las palabras reservadas son palabras que tienen ¾ Los comentarios son texto que se inserta dentro del un significado especial para el compilador. No se código fuente, por ejemplo, para explicar partes de pueden cambiar. código. No generan código ejecutable. ¾ Ejemplo: ¾ (* Esto es un comentario *) and, array, asm, begin, case, const, constructor div, do, downto, else, end, file, for, function, goto if , implementation, in, inline, interface, label, mod nil, not, object, of, or, packed, procedure, program record, repeat, set, shl, shr, string, then, to, type unit, until, uses, var, while, with, xor ¾ {Esto es otro comentario} 9 10 2. Tipos de Datos Básicos Estilo de programación ¾ La mayoría de los programas son leídos por otros programadores, distintos del propio autor. ¾ Todos los lectores deben poder identificar fácilmente el funcionamiento del programa, localizar y corregir posibles errores y/o modificar el código original. ¾ La lectura de un programa escrito con un estilo inapropiado resulta desagradable incluso para su autor. ¾ Se recomienda la utilización de comentarios para explicar el funcionamiento de cada porción de código. ¾ Deben seleccionarse identificadores lo más descriptivos posibles y atenerse siempre a los mismos criterios (uso de mayúsculas o minúsculas, ‘_’, etc.). 11 ¾ Lenguajes tipados : datos son de un tipo concreto ¾ Lenguajes soportan múltiples tipos ¾ Distintos lenguajes, distintos tipos ¾ La mayoría soportan los tipos básicos: ¾ Naturales ¾ Enteros ¾ Reales ¾ Caracteres ¾ Booleanos (tipos lógicos) 12 Clasificación de Tipos Tipo Entero ¾ Ordinales: aquellos en los que tiene sentido el concepto ‘siguiente’: ¾ Se usa para representar datos naturales y enteros ¾ Tipos: ¾ Enteros ¾ Caracteres ¾ Booleanos ¾ Byte Æ naturales < 256 ¾ Shortint Æ enteros entre –128 y 127 ¾ Reales: aquellos en los que no tiene sentido el concepto ‘siguiente’: ¾ Integer Æ enteros entre –32768 y 32767 ¾ Word Æ naturales menores de 65536 ¾ Reales ¾ Longint Æ enteros entre –2147483648 y 2147483647 13 14 Tipo Caracter y Tipo Booleano Tipo Real ¾ Tipo caracter: ¾ Se utiliza para representar datos numéricos reales ¾ Se usa para representar letras del abecedario (1 letra) ¾ Interesa conocer rango de valores y precisión ¾ Char ¾ Tipos: ¾ Tipo booleano: ¾ Real. 11-12 dígitos significativos Æ 2.9x10-3 – 1.7x1038 ¾ Se usa para representar los valores ‘verdadero’ y ‘falso’ ¾ Single. 7-8 dígitos significativos Æ 1.5x10-45 – 3.4x1038 ¾ Boolean ¾ Double . 15-16 dígitos significativos Æ 5x10-324 – 1.7x10308 ¾ Extended. 19-20 dígitos significativos Æ 3.4x10-4932 – 1.1x104932 ¾ Comp. 19-20 dígitos significativos Æ -9.2x10-18 – 9.2x1018 15 16 3. Otros Tipos Otros Tipos ¾ Tipo Enumerado ¾ Tipo Subrango ¾ Definido por el usuario ¾ Definido por el usuario ¾ Contiene una enumeración ¾ Contiene una parte de los elementos de una lista ¾ Es un tipo ordinal ( ¾ Es un tipo ordinal identificador ) constante .. constante , ¾ Ejemplo: ¾ Ejemplo: ¾ (Lunes, Martes, Miércoles, Jueves, Viernes, Sábado, Domingo) ¾ Lunes .. Viernes 17 18 4. Constantes y Variables Constantes ¾ Constante entera: Constante Variable Nombre Fijo Fijo ¾ 21, -21, +21 Tipo Fijo Fijo ¾ Constante real: Variable ¾ Ejemplos: Valor Fijo digito ¾ Ejemplos: + - ¾ +34.45, -23.12e34, 12E-23 • Constante: dato que no se puede modificar en toda la ejecución del programa digito . digito E + • Variable: dato cuyo valor va cambiando a medida que se ejecuta el programa e - - 19 Constantes ¾ Constante tipo caracter: ¾ ‘Hola?’ 20 Constantes ‘ ¾ Ejemplos: digito + ‘ ¾ Declaración: informar al compilador de que se va a usar un ‘ carácter determinado nombre para referirse a una constante ‘ ¾ Diagrama: ¾ ‘456’ ¾ ‘ ’’ ’ CONST ¾ Constante booleana: identificador = constante ; ¾ Ejemplo: ¾ Ejemplos: CONST ¾ TRUE pi = 3.141596; ¾ FALSE nombre = ‘Pepe’; 21 22 Variables 5. Expresiones: Tipos y operadores ¾ Declaración: informar al compilador para que sepa cuál es el ¾ Expresión: cálculo que se realiza sobre un conjunto tamaño que le corresponde a cada variable (en memoria) de variables y constantes ¾ Diagrama: VAR ¾ Operadores: indican el tipo de cálculo que se realiza identificador ¾ Ejemplo: : tipo ¾ Tipos de Operadores: ; ¾ Unarios: se aplican sobre una única variable/constante , ¾ Binarios: se aplican sobre parejas de variables/constantes VAR a, b : integer; dia: (Lunes, Martes, Miércoles, Jueves, Viernes, Sábado, Domingo); finde: Sabado..Domingo; 23 24 Operadores en Pascal Operadores en Pascal ¾+ ¾* ¾ Op. binario suma ¾ Op. binario producto ¾ Enteros, reales, etc. ¾ Enteros, reales, etc. ¾ Admite operandos de tipos distintos ¾ Admite operandos de tipos distintos ¾- ¾ DIV ¾ Op. binario resta ¾ Op. binario división entera ¾ Enteros, reales, etc. ¾ Se aplica sobre enteros ¾ Admite operandos de tipos diferentes ¾ Da como resultado enteros 25 26 Operadores en Pascal Operadores en Pascal NOT ¾ NOT ¾ MOD ¾ Operador unario negación ¾ Op. binario resto T F F T ¾ Devuelve ‘verdadero’ si se aplica sobre falso y viceversa ¾ Se aplica sobre enteros ¾ AND ¾ Da como resultado enteros ¾ Operador binario ‘y’ ¾/ AND T F T T F F F F ¾ Devuelve ‘verdadero’ si los dos operandos son verdaderos y falso en caso contrario ¾ Op. binario división real ¾ OR ¾ Admite operandos de cualquier tipo ¾ Operador binario ‘o’ ¾ Da como resultado un real o un extended OR T F T T T F T F ¾ Devuelve ‘verdadero’ si uno de los dos operandos es verdadero y ¾ Si alguno de los operandos es 0 da error falso en caso contrario 27 28 Operadores en Pascal Prioridades de los Operadores ¾ Prioridades de ejecución entre los operadores ¾ Operadores relacionales ¾ Operan con operandos compatibles ( de igual tipo / entero vs. real) Prioridad Operador ¾ Devuelven siempre un booleano + ¾ = (igual que) 1 (expresión) NOT 2 *, /, DIV, MOD 3 +, - (unarios y binarios), OR, AND 4 =, <>, <, <=, >, >= ¾ > (mayor que) ¾ < (menor que) ¾ >= (mayor o igual que) ¾ <= (menor o igual que) - ¾ <> (distinto que) 29 30 6. Instrucción Asignación 7. Funciones Predefinidas ¾ Sirve para asignar un valor a una variable ¾ Tienen un nombre ¾ En Pascal se utiliza el símbolo ‘:=‘ ¾ Hay que indicar sobre qué valor se van a calcular ¾ Variable := expresión ¾ Pueden aparecer como parte de una expresión ¾ La expresión debe poder calcularse ¾ Tienen prioridad de cálculo dentro de la expresión ¾ La variable debe estar declarada ¾ Trabajan con valores de un tipo concreto y ¾ El tipo que devuelve la expresión debe ser compatible devuelven un valor de un tipo determinado con el tipo de la variable ¾ La expresión se calcula antes de realizar la asignación 31 Funciones Predefinidas 32 Funciones Predefinidas ¾ Tipos Reales: ¾ Tipos Ordinales: ¾ ord(x): devuelve el número de orden de x dentro del tipo. Ej. Semana: (lu,ma,mi,ju,vi,sa,do) ¾ abs (x): devuelve el valor absoluto de x ¾ arctan (x): devuelve el arcotangente de x ¾ cos (x): devuelve el coseno de x ord(ju) Æ 3 ¾ exp (x): devuleve el valor de ex ¾ succ(x): devuelve el sgte. elemento a x en el tipo ¾ frac (x): devuelve la parte decimal de x Ej. letra: char; letra:=‘m’; ¾ int (x): devuelve la parte entera de x succ(letra) Æ ‘n’ ¾ ln (x): devuelve el logaritmo neperiano (o natural) de x ¾ pred(x): devuelve el anterior elemento a x en el tipo ¾ round (x): devuelve el entero más próximo a x (longint) Ej. num: integer; num:=-4; ¾ sqr (x): devuelve el cuadrado de x pred(num) Æ -5 ¾ sqrt (x): devuelve la raíz cuadrada de x 33 Funciones Predefinidas ¾ trunc (x): devuelve la parte entera de x (longint) 34 8. Funciones de E/S ¾ Tipos caracter: ¾ Los periféricos por defecto en TP son el teclado ¾ chr (x): devuelve un tipo char que es el que le corresponde a x en la tabla ASCII. x es de tipo byte (entrada/input) y la pantalla (salida/output) ¾ Sentencias de entrada: ¾ upcase (x): si x está en el rango ‘a’..’z’, devuelve la mayúscula correspondiente, si no, devuelve x. x es de tipo char ¾ read (nombre_var1, nombre_var2,...); ¾ readln (nombre_var1, nombre_var2,...); ¾ Sentencias de salida: ¾ write (nombre_var1, nombre_var2,...); ¾ writeln (nombre_var1, nombre_var2,...); ¾ -ln significa salto de línea 35 36 Funciones de E/S 9. Estructura de un programa Pascal ¾Ejemplo: ¾ Cabecera del programa Xuban Arrieta Goia 18 ↵ 23 ↵ readln(Nombre, Apellido); readln(Edad); writeln(Apellido, ’, ’ ,Edad); program nombre_programa (parámetros); ¾ Sección de declaraciones ≡ const ... var ... type ... write(Apellido, ‘, ’); writeln(Edad); ¾ Cuerpo del programa writeln(Nombre); begin Arrieta, 23 Xuban end. instrucciones; 37 Ejemplo Program potencia_de_2; var a,b : integer; begin writeln (‘Dame un número’); readln (a); b := sqr (a); writeln (‘El cuadrado de ‘, a, ‘es ’,b); end. CABECERA DECLARACIONES CUERPO 39 38