Introduccin a la Programacin Tema 2 Instrucciones y

  • Slides: 54
Download presentation
Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Profesor Federico

Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Profesor Federico Peinado Elaboración del material Mercedes Gómez Pablo Moreno Manuel Ortega Federico Peinado Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del Software e Inteligencia Artificial Curso 2009 -2010

Pascal, un lenguaje de programación Tema 2 Estructura de un programa Datos de un

Pascal, un lenguaje de programación Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación q En este tema estudiamos aspectos comunes a muchos lenguajes de programación q Prácticamente todos lenguajes que siguen el paradigma imperativo (= dar órdenes al ordenador) q Por estudiar un lenguaje concreto usaremos Pascal que, como dijimos, es un lenguaje apropiado para aprender q ¿Cómo podemos explicar Pascal? E/S por consola q De manera informal (lo habitual al principio) q De manera formal (usando BNF, EBNF o diagramas sintácticos para describir la sintaxis del lenguaje, por ejemplo) Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 1

Forma básica de un programa en Pascal Tema 2 Estructura de un programa Datos

Forma básica de un programa en Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal Datos de entrada La asignación E/S por consola Algoritmo Datos de salida Introducción a la Programación Ingeniería Técnica en Informática de Gestión Sección de declaración de datos Sección de código (programa principal) program nombre-programa; const id. Cte 1 = valor 1; . . . id. Cte. N = valor. N; var lista-variables 1 : tipo 1; . . . lista-variables. M : tipo. M; begin sentencia 1; . . . sentencia. K-1; sentencia. K end. 2. 2

Forma básica de un programa en Pascal q Ej: Programa que convierte un valor

Forma básica de un programa en Pascal q Ej: Programa que convierte un valor expresado en pulgadas, proporcionado por el usuario a través de teclado, en el equivalente expresado en centímetros y lo muestra por pantalla Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal n n La asignación n E/S por consola n Datos de entrada n Pulgadas Datos de salida n Centímetros Algoritmo n Obtención del valor expresado en pulgadas n Conversión al valor equivalente n Visualización del valor equivalente Introducción a la Programación Ingeniería Técnica en Informática de Gestión Implementación del algoritmo en Pascal program conversion; const cent. Por. Pulg = 2. 54; var pulgadas, cent: real; begin writeln('¿Longitud? '); readln(pulgadas); cent: = pulgadas * cent. Por. Pulg; writeln('En cms: ', cent) end. 2. 3

Forma básica de un programa en Pascal Palabras reservadas Identificadores predefinidos program conversion; Identificadores

Forma básica de un programa en Pascal Palabras reservadas Identificadores predefinidos program conversion; Identificadores normales const cent. Por. Pulg = 2. 54 ; var Identificadores pulgadas , cent : real ; predefinidos begin Literales writeln ( '¿Longitud? ' ); readln ( pulgadas ); cent: = pulgadas * cent. Por. Pulg; writeln ( 'En cms: ' , cent ) end. 2. 4

Uso del espacio “en blanco” y de los comentarios Tema 2 Estructura de un

Uso del espacio “en blanco” y de los comentarios Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Los elementos léxicos (que marcábamos con colores antes) pueden separarse por un número cualquiera de espacios en blanco, saltos de línea y tabuladores q El espacio dejado a la izquierda de cada línea (indentación) no tiene significado para la máquina q El objetivo de estos “arreglos en el formato” es simplemente hacer más legibles los programas para otros programadores q En cualquier parte del programador puede escribir comentarios para explicar su código q Si son de una sola línea basta con comenzarlos por // q Si son varias líneas deben ir entre (* y *) necesariamente // Conversor Pulg. Cent, por Federico Peinado. (* Este programa convierte un número de pulgadas a su equivalente en centímetros. Ha sido escrito por Federico Peinado. *) q ¡Los comentarios ayudan a documentar bien nuestro trabajo! Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 5

Uso del espacio “en blanco” y de los comentarios (***************** Este programa convierte pulgadas

Uso del espacio “en blanco” y de los comentarios (***************** Este programa convierte pulgadas a centímetros. Por Federico Peinado *****************) program conversion; const cent. Por. Pulg = 2. 54; var pulgadas, cent: real; begin writeln('¿Longitud? '); readln(pulgadas); cent: = pulgadas * cent. Por. Pulg; writeln('En cms: ', cent) end. program conversion; const cent. Por. Pulg = 2. 54; var pulgadas, cent: real; begin writeln('¿Longitud? ') ; readln(pulgadas); cent: = pulgadas * cent. Por. Pulg; writeln('En cms: ', cent) end. Mismo programa, pero. . . ¿qué formato es más cómodo de leer? 2. 6

Datos de un programa Tema 2 Estructura de un programa Datos de un programa

Datos de un programa Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Todos los datos tienen: q Identificador q Nombre simbólico que se usa para representar el dato q Identifica de forma legible las celdas de memoria donde está guardado el dato q Tipo q El tipo de los valores que puede tener el dato q Ej: Números enteros, números reales, cadenas de texto… q Clasificación como Constante o Variable q Constante, si el valor del dato no cambia nunca en ningún momento de la ejecución del programa q Variable, si el valor del dato cambia o puede cambiar en algún momento de la ejecución del programa Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 7

Identificadores en Pascal Tema 2 Estructura de un programa Datos de un programa Tipos

Identificadores en Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Un identificador es un nombre para un dato concreto q Si el valor de ese dato no cambia nunca, el identificador es una constante q Si el valor de ese dato puede cambiar durante la ejecución del programa, el identificador será una variable q Los identificadores deben ser autoexplicativos La asignación E/S por consola q Ej: numero_alumnos está bastante claro q Ej: nx 6 no hay quien lo entienda q Sintaxis en EBNF: Identificador : : = Letra {[Subrayado] Letra | Dígito} Letra : : = “a” | “b”|. . . | “z” | “A” | “B”|. . . | “Z” Dígito : : = “ 0” | “ 1” |. . . | “ 9” Subrayado : : = “_” Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 8

Identificadores en Pascal Tema 2 Estructura de un programa Datos de un programa Tipos

Identificadores en Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Resumen informal de la sintaxis de un identificador de Pascal: q No puede ser un número solo q Ha de empezar necesariamente por una letra q La ñ no es una letra válida, ni las vocales con tildes o con diéresis (se usa solamente el alfabeto inglés) q No puede acabar en subrayado (_), ni puede haber dos subrayados seguidos (__) q Y por supuesto… ¡no puede ser una palabra reservada! q Identificadores predefinidos en Pascal, por ejemplo program q La longitud de los identificadores en teoría no tiene límite q Pascal no distingue entre letras mayúsculas y minúsculas NUMEntero, num. ENTERO. . . ¡todos hacen referencia exactamente al mismo dato! q No puede haber identificadores con nombres repetidos dentro de un mismo bloque de programa, para evitar confusiones Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 9

Identificadores en Pascal Tema 2 q ¿Los siguientes son identificadores válidos en Pascal? Estructura

Identificadores en Pascal Tema 2 q ¿Los siguientes son identificadores válidos en Pascal? Estructura de un programa Datos de un programa Tipos de datos en Pascal pulgadas cent valido 2 veces salu 2 duda? x x_ x_a La asignación E/S por consola Exp l PI icación en ZA RR A Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 10

Constantes Tema 2 Estructura de un programa q Datos cuyo valor no cambia a

Constantes Tema 2 Estructura de un programa q Datos cuyo valor no cambia a lo largo de la ejecución del programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Tipos de constantes en Pascal q Literales: se usan “a pelo” en el programa, sin identificador ‘Longitud’ 2. 54 ‘a’ true q Constantes con nombre: llevan un identificador pi = 3. 1416 q La sentencia const de Pascal anuncia que se van a declarar e inicializar las constantes con nombre del programa program conversion; const cent. Por. Pulg = 2. 54; . . . Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 11

Sintaxis de la sección de declaración de constantes en Pascal Seccion. Constantes : :

Sintaxis de la sección de declaración de constantes en Pascal Seccion. Constantes : : = [ “const” Def. Cte “; ” { Def. Cte “; ” }] Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal Def. Cte : : = Identificador “=” Valor Identificador : : = No terminal que ya hemos descrito antes… Valor : : = Ventero | Vreal | Vcaracter | Vbooleano | Cadena | [Signo] Identificador Ventero : : = [Signo] Digito {Digito} Signo : : = “+” | “-” La asignación E/S por consola Vreal : : = Fnormal | Fcientifico Fnormal : : = [Signo] Pentera “. ” Pdecimal Pentera : : = Digito {Digito} Pdecimal : : = {Digito} Fcientifico : : = Fnormal “E” Signo Pentera Vbooleano : : = “true” | “false” Vcaracter : : = “ ’ ” Car : : = “a” | “b”|. . . | “z” | “A” | “B”|. . . | “Z” | “? ” |. . . Cadena : : = “ ’ ” {Car} “ ’ ” Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 12

Constantes Tema 2 Estructura de un programa Datos de un programa Tipos de datos

Constantes Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación q ¿Este es un ejemplo válido de declaración de constantes? const pi = 3. 1416; cent. Por. Pulg = 2. 54; iva = 0. 16; dolar = ‘$’; E/S por consola cinco = 5; max = 100; min = -max; mensaje = ‘Error’; Exp lica PI ción en ZA RR A q El tipo de una constante se decide de manera automática al inicializarse, según el tipo del dato que reciba q Por ejemplo cinco será de tipo entero e iva será de tipo real Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 13

Variables Tema 2 Estructura de un programa q Datos cuyo valor cambia o puede

Variables Tema 2 Estructura de un programa q Datos cuyo valor cambia o puede cambiar a lo largo de la ejecución del programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q La sentencia var de Pascal anuncia que se van a declarar las variables del programa program conversion; const cent. Por. Pulg = 2. 54; var pulgadas, cent: real; … Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 14

Sintaxis de la sección de declaración de variables en Pascal Tema 2 Seccion. Variables

Sintaxis de la sección de declaración de variables en Pascal Tema 2 Seccion. Variables : : = [ “var” Def. Var “; ” {Def. Var “; ”}] Estructura de un programa Def. Var : : = Identificador { “, ” Identificador} “: ” Tipo Datos de un programa Identificador : : = No terminal que ya hemos descrito antes… Tipos de datos en Pascal Tipo : : = “integer” | “real” | “char” | “boolean” | Definido. Por. Usuario La asignación E/S por consola Introducción a la Programación Ingeniería Técnica en Informática de Gestión Lo explicaremos en el Tema 5 var pulgadas, cent: real; letra: char; valido: boolean; base: integer; altura: integer; 2. 15

Situación de constantes y variables en memoria Tema 2 Estructura de un programa Datos

Situación de constantes y variables en memoria Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola program conversion; const cent. Por. Pulg = 2. 54; var pulgadas, cent: real; begin. . . end. Introducción a la Programación Ingeniería Técnica en Informática de Gestión Exp lica PI ción en ZA RR A 2. 16

Representación interna de los datos en memoria Tema 2 Estructura de un programa Datos

Representación interna de los datos en memoria Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q La cadena 01110010 puede ser. . . q q . . . un número entero (¿el primer bit representa el signo? ). . . un número real (¿dónde estaría la coma y la parte decimal? ). . . un carácter textual (¿en que tipo de codificación? ). . . un valor booleano (¿sólo es significativo el último bit? ) q ¡Para programar hay que saber qué significan esos 0’s y 1’s! La asignación E/S por consola q Asignar un tipo a un dato es una manera de indicar: q Cuál es la interpretación correcta de las cadenas de 0’s y 1’s q Qué rango de posibles valores puede tomar el dato q Cuáles son las operaciones posibles sobre dicho dato q Los lenguajes de alto nivel, como Pascal, tienen una fuerte comprobación de tipos para evitar que el programador use los datos de manera incorrecta, sin tener en cuenta sus tipos q Ej: No te deja multiplicar un número entero por un carácter textual Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 17

Ejemplo: La codificación ASCII para caracteres textuales Tema 2 Estructura de un programa Datos

Ejemplo: La codificación ASCII para caracteres textuales Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 18

Tipo de Datos Tema 2 Estructura de un programa Datos de un programa Tipos

Tipo de Datos Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación q Conjunto de valores posibles que pueden tomar unos datos junto con las operaciones que se pueden realizar sobre ellos q Tipos básicos (o predefinidos) en Pascal q q Integer Real Char Boolean E/S por consola Integer y Real son tipos numéricos Todos son tipos simples Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 19

Tipos de datos en Pascal Tema 2 Estructura de un programa Datos de un

Tipos de datos en Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Integer (números enteros): q El rango de valores representable depende del entorno de desarrollo y la máquina que usemos q Ej: En Turbo Pascal, se reservan 2 bytes para almacenar cada entero en complemento a 2, con lo que el rango va: desde -215 = -32768 hasta (215 -1) = 32767 q Otros tipos enteros en Turbo Pascal: q Short. Int -128. . 127 q Long. Int (4 bytes) – 2147483648. . 2147483647 q Byte 0. . 255 q Word 0. . 65535 q De momento utilizaremos solo el tipo Integer Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 20

Tipos de datos en Pascal Tema 2 Estructura de un programa Datos de un

Tipos de datos en Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Real (números reales): q Rango de valores representable: usando 6 Bytes para almacenar los datos de tipo real, el rango va desde 2. 9 x 10 -38 hasta 1. 7 x 1038. También tiene otra serie de tipos adicionales relacionados La asignación E/S por consola q Char (Caracteres): q Cualquier carácter de los 256 que forman la tabla ASCII q Boolean (Valores booleanos o lógicos): q Sólo pueden ser : Verdadero (TRUE) o Falso (FALSE) Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 21

El tipo Integer de Pascal Tema 2 Estructura de un programa q Tipo ordinal

El tipo Integer de Pascal Tema 2 Estructura de un programa q Tipo ordinal (sus elementos pueden organizarse de menor a mayor y hay una manera obvia de pasar al siguiente) Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Sintaxis de los números enteros en EBNF: V-entera : : = [“+” | “-”] Digito {Digito} Digito : : = “ 0” | “ 1” |. . . | “ 9” q Constantes predefinidas en Pascal q maxint: Valor máximo para números enteros q minint: Valor mínimo para números enteros q Ej: En Turbo Pascal son 32767 y -32768, respectivamente Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 22

Operadores para datos enteros Aridad Tema 2 Tipos de datos en Pascal Operandos Resultado

Operadores para datos enteros Aridad Tema 2 Tipos de datos en Pascal Operandos Resultado Operación (num. Operandos) Estructura de un programa Datos de un programa Posición - 1 prefijo entero cambio de signo entero suma (operador por delante) + 2 infijo (operador entre medias) La asignación E/S por consola - 2 infijo enteros entero resta * 2 infijo enteros entero multiplicación div 2 infijo enteros entero cociente de la división entera mod 2 infijo enteros entero resto de la división entera Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 23

Expresiones aritméticas enteras Tema 2 Estructura de un programa Datos de un programa Tipos

Expresiones aritméticas enteras Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Ejemplos var x: integer; . . . 4 + 5 5 + 2 * 7 -17 * x 5 - 6 - 7 La asignación E/S por consola q ¿Cómo interpretar una expresión como 5 + 2 * 7? ¿Y 5 - 6 - 7? q La resolución de ambigüedades producidas por el uso de operadores infijos se lleva a cabo asociando a cada operador q Una prioridad o precedencia q Una asociatividad q Los paréntesis sirve normalmente para “llevar la contraria” a dichas prioridades y asociatividades, ya que las expresiones entre paréntesis siempre se evalúan primero Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 24

Evaluación de expresiones Tema 2 Estructura de un programa Datos de un programa Tipos

Evaluación de expresiones Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Prioridad q Un operador tiene prioridad sobre otro operador si, ante dos interpretaciones posibles de una expresión, se elige siempre aquélla que supone aplicar primero q Prioridad de los operadores aritméticos en Pascal - (cambio de signo) Orden de Exp * div mod aplicación lica P + - (resta) IZA ción en RR A q ¿Cómo se interpreta 5 + 2 * 7? q ¿Qué podemos usar si se desea otra interpretación? Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 25

Evaluación de expresiones Tema 2 Estructura de un programa q Asociatividad q La expresión

Evaluación de expresiones Tema 2 Estructura de un programa q Asociatividad q La expresión 5 - 6 - 7 sigue siendo ambigua porque estamos usando el mismo operador Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Las reglas de asociatividad solucionan estas ambigüedades q Si un operador cualquiera (llamémosle ) asocia a izquierdas, entonces a b c se interpreta como (a b) c q Si un operador cualquiera (llamémosle ) asocia a derechas, entonces a b c se interpreta como a (b c) q En Pascal todos los operadores aritméticos infijos binarios asocian a izquierdas Exp l PI icación q ¿Cómo se interpreta 5 - 6 - 7? en ZA RR A q ¿Qué podemos usar si se desea otra interpretación? Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 26

Evaluación de expresiones Tema 2 Estructura de un programa Datos de un programa Tipos

Evaluación de expresiones Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Reglas para evaluar expresiones (en este orden): 1. Las subexpresiones entre paréntesis se evalúan primero. Si hay subexpresiones parentizadas anidadas (paréntesis dentro de paréntesis, etc. ) se evalúan de dentro hacia fuera 2. Dentro de una expresión, los operadores se evalúan según su prioridad 3. Los operadores con igual prioridad que estén en una misma subexpresión se evalúan según la asociatividad de Pascal (siempre de izquierda a derecha) q Ejemplos (4 + 6) * 3 div 5 vs 4 + 6 * 3 div 5 (4 + 6) * (10 - 5) mod 2 vs 4 + 6 * (10 - 5) mod 2 10 mod ((4 + 2) - (3 * 2)) vs 10 mod (4 + 2) - (3 * 2) Exp l PI icación Introducción a la Programación Ingeniería Técnica en Informática de Gestión en ZA RR A 2. 27

Funciones sobre datos enteros Tema 2 Estructura de un programa Datos de un programa

Funciones sobre datos enteros Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Funciones aritméticas predefinidas en Pascal q q q q abs (x) cos (x) sin (x) exp (x) ln (x) sqrt (x) Valor absoluto. Resultado entero Coseno de x (en radianes). Resultado real Seno de x (en radianes). Resultado real ex. Resultado real Logaritmo neperiano de x. Resultado real x 2. Resultado entero x. Resultado real donde x es constante, variable o expresión entera q Ejemplos var num: integer; . . . sqrt (4 * num) exp (num * 4 + 3) cos (5 * abs (-2)) ln (num * (4 + 3)) Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 28

Otras operaciones con enteros Tema 2 Estructura de un programa Datos de un programa

Otras operaciones con enteros Tema 2 Estructura de un programa Datos de un programa q Operadores relacionales (binarios) q > < >= <= = <> q Los operandos son constantes, variables o expresiones enteras q El resultado es un valor booleano (verdadero o falso) Tipos de datos en Pascal La asignación E/S por consola q Función Impar q odd (x) donde x es constante, variable o expresión entera; el resultado es un valor booleano (verdadero si x es impar) q Predecesor y sucesor q pred (x) q succ (x) donde x es constante, variable o expresión entera; el resultado es el número entero anterior y el siguiente, respectivamente Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 29

El tipo Real de Pascal Tema 2 Estructura de un programa Datos de un

El tipo Real de Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Tipo ordenado (sus elementos pueden organizarse de menor a mayor) q Sintaxis de los números reales en EBNF: Vreal : : = Fnormal | Fcientifico La asignación E/S por consola Fnormal : : = [Signo] Pentera “. ” Pdecimal Pentera : : = Digito {Digito} Pdecimal : : = {Digito} Fcientifico : : = Fnormal “E” Signo Pentera Digito : : = “ 0” | “ 1” |. . . | “ 9” Signo : : = “+” | “-” Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 30

Operadores para datos reales Tema 2 Aridad Posición Operandos Resultado Operación Estructura de un

Operadores para datos reales Tema 2 Aridad Posición Operandos Resultado Operación Estructura de un programa - 1 prefijo real cambio de signo Datos de un programa + 2 infijo reales real suma Tipos de datos en Pascal - 2 infijo reales real resta La asignación * 2 infijo reales real multiplicación E/S por consola / 2 infijo reales real cociente de la división real Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 31

Funciones sobre datos reales Tema 2 q Funciones aritméticas predefinidas Estructura de un programa

Funciones sobre datos reales Tema 2 q Funciones aritméticas predefinidas Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q q q q abs (x) cos (x) sin (x) exp (x) ln (x) sqrt (x) Valor absoluto. Resultado real Coseno de x (en radianes). Resultado real Seno de x (en radianes). Resultado real ex. Resultado real Logaritmo neperiano de x. Resultado real x 2. Resultado real x. Resultado real donde x es constante, variable o expresión real Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 32

Otras operaciones con datos reales Tema 2 Estructura de un programa Datos de un

Otras operaciones con datos reales Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Operadores relacionales (binarios) q > < >= <= = <> q Los operandos son constantes, variables o expresiones reales q El resultado es un valor booleano q Conversión explícita de tipo (de real a entero) q round (x) q trunc (x) redondea al número entero más próximo directamente elimina la parte decimal donde x es constante, variable o expresión real q Ejemplos: round (8. 8) round (-8. 7) trunc (8 + 0. 8) trunc (-2. 4) round (9 - 0. 5) Introducción a la Programación Ingeniería Técnica en Informática de Gestión Exp l PI icación en ZA RR A Por defecto en Pascal se redondea “al alza” 2. 33

El tipo Char de Pascal Tema 2 Estructura de un programa Datos de un

El tipo Char de Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Tipo ordinal q El juego de caracteres varía de un estándar a otro q Dos estándares de uso común son ASCII y EBCDIC q Los juegos de caracteres incluyen dos clases de caracteres q Visibles: pueden editarse e imprimirse Por ejemplo: los dígitos, las letras, los símbolos de puntuación… q Invisibles (también llamados caracteres de control) Por ejemplo: el salto de línea, el fin de línea, el tabulador… Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 34

El tipo Char de Pascal Tema 2 Estructura de un programa Datos de un

El tipo Char de Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Internamente cada carácter del juego de caracteres está representado por un código numérico q ord (x) --> Obtención del código numérico asociado al carácter x q chr (x) --> Convierte el código numérico x en el carácter correspondiente según el juego de caracters La asignación E/S por consola Por ejemplo, en el juego de caracteres ASCII, el código numérico del carácter ‘A’ es 65. Es decir, el 65 es el código ASCII del carácter ‘A’ Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 35

El tipo Char de Pascal Tema 2 Estructura de un programa Datos de un

El tipo Char de Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Predecesor y sucesor q pred (x) q succ (x) donde x es una constante o una variable de tipo carácter La asignación q Operadores relacionales (binarios) E/S por consola q q > < >= <= = <> Los operandos son constantes o variables de tipo carácter El resultado es un valor booleano ¡Ojo! Lo que realmente se compara son los códigos numéricos de los caracteres comparados (gracias a esto es Char es un tipo ordenado) Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 36

El tipo Boolean de Pascal Tema 2 q Tipo ordinal Estructura de un programa

El tipo Boolean de Pascal Tema 2 q Tipo ordinal Estructura de un programa Datos de un programa Tipos de datos en Pascal q Dos únicos valores: true y false q ord (false) es 0; ord(true) es 1 La asignación q Expresiones booleanas simples E/S por consola q Operador relacional cuyos operandos son dos constantes, variables o expresiones del mismo tipo (o compatibles a nivel de comparación, es decir, que se pueden comparar) x <= 0 x + y >= y - z cos (r) * 5 <> valor * x Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 37

El tipo Boolean de Pascal Tema 2 Estructura de un programa Datos de un

El tipo Boolean de Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación q Expresiones booleanas compuestas q Operadores lógicos binarios: and (y-lógica) y or (o-lógica) q Operador lógico unario: not (negación lógica) q Prioridad de los operadores en Pascal (añadiendo los operadores lógicos y relacionales) E/S por consola Orden de aplicación Introducción a la Programación Ingeniería Técnica en Informática de Gestión - (unario) * div mod / + - (binario) not and or < <= > >= = <> 2. 38

El tipo Boolean de Pascal Tema 2 Estructura de un programa Datos de un

El tipo Boolean de Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Ejemplo Escribe expresiones booleanas para representar las siguientes condiciones q Alguno de estos tres valores enteros i, j o k es par q Un valor entero j está en el intervalo [0, 100] La asignación E/S por consola Exp l PI icación en ZA RR A Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 39

El tipo Boolean de Pascal Tema 2 Estructura de un programa Datos de un

El tipo Boolean de Pascal Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Ejemplo: Supón tres variables enteras A, B y C que tienen los valores 10, 15 y 20, respectivamente. Evalúa, si es posible, las siguientes expresiones booleanas A > A + (C= not 5 B = C 20) or (A > 5) and (B > C) 20) and (A > 5) or (B > C) (A > 5) or ((C = 20) or (A > 5)) and (B > C) Exp l PI icación en ZA RR A Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 40

La asignación Tema 2 Estructura de un programa Datos de un programa Tipos de

La asignación Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Instrucción básica de la programación imperativa para cambiar el estado en un programa q Sirve para cambiar el valor de una variable q El valor asignado debe ser compatible con el tipo de la variable q No se debe acceder a una variable antes de que se le haya asignado un valor ¡Prohibido usar variables con “basura”! La asignación E/S por consola q Sintaxis en diagrama sintáctico: Constante Asignación Variable : = Variable Expresión Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 41

Ejemplos de asignaciones Tema 2 Estructura de un programa Datos de un programa Tipos

Ejemplos de asignaciones Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal q Ejemplo var x: integer; begin La asignación . . . E/S por consola x: = 1; x: = x + 3; . . . end. Exp lica PI ción en ZA RR A q Explicación de lo que ocurre en memoria… Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 42

Ejemplos de asignaciones Tema 2 Estructura de un programa q Si x=5, y=10, z=20

Ejemplos de asignaciones Tema 2 Estructura de un programa q Si x=5, y=10, z=20 ¿Cuál es valor de x después de recibir las siguientes asignaciones? Datos de un programa x : = y; Tipos de datos en Pascal La asignación E/S por consola x : = 5*y; x : = 5; x : = x*x; x : = x div x; Exp lica PI ción en ZA RR A x : = succ(y) + succ(z) - z; Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 43

Ejemplos de asignaciones Tema 2 Estructura de un programa Datos de un programa Tipos

Ejemplos de asignaciones Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Dadas las siguientes declaraciones const blanco = ‘ ’; var p, q: integer; c 1: char; x, y: real; a, b: boolean; indica si las siguientes sentencias son válidas p: = trunc (y) + x; a: = p + q; a: = b and (ord (c 1) <> ‘A’); x: = x – trunc (x); x: = y div p; a: = odd (p-1); p: = round (q / (10 div p)); p: = 100 div (4 div 5); z: = succ (c 1); Introducción a la Programación Ingeniería Técnica en Informática de Gestión Exp l PI icación en ZA RR A 2. 44

Salida por consola Tema 2 Estructura de un programa Datos de un programa q

Salida por consola Tema 2 Estructura de un programa Datos de un programa q La sentencia write de Pascal q Visualización/Impresión de información en la pantalla de la consola/ventana del usuario, durante la ejecución del programa q write (lista-de-salidas) Tipos de datos en Pascal Elementos a visualizar separados por comas (Se visualizan todos en la misma línea en pantalla) La asignación E/S por consola q Ejemplo: var cent: real; begin. . . write(‘En cms: ’, cent) end. Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 45

Salida por consola Tema 2 Estructura de un programa Datos de un programa Tipos

Salida por consola Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación q La sentencia writeln de Pascal q Visualización/Impresión de información en la pantalla de la consola/ventana del usuario, durante la ejecución del programa q writeln (lista-de-salidas) ó writeln Elementos a visualizar separados por comas (Se visualizan todos en la misma línea en pantalla y luego se salta de línea; o sólo se salta de línea, con writeln a secas) E/S por consola q Ejemplo: var cent: real; begin writeln(‘¿Longitud? ’); . . . writeln(‘En cms: ’, cent) end. Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 46

Salida por consola Tema 2 Estructura de un programa q Enteros y caracteres q

Salida por consola Tema 2 Estructura de un programa q Enteros y caracteres q Por defecto, se usan tantas posiciones como dígitos tenga el número o una sóla posición si es un carácter Datos de un programa Tipos de datos en Pascal Elemento : numero. Posiciones (Significa que se usan tantas posiciones como indica numero. Posiciones) La asignación q Ejemplo: E/S por consola var x, y: integer; writeln (‘Resultado: ’ , x * y: 5); Exp l PI icación en ZA RR A Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 47

Salida por consola Tema 2 q Reales Estructura de un programa Datos de un

Salida por consola Tema 2 q Reales Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola Elemento : longitud. Total : numero. Decimales (Significa que se usa la notación habitual con longitud. Total indicando las posiciones que se usan -incluyendo punto decimal y signo si lo hay- de las cuales numero. Decimales se reservan para los decimales -redondeando si es necesario-) Elemento : longitud. Total (Significa que se usa la notación científica con longitud. Total indicando las posiciones totales que se usan) q Notación científica por defecto: e. ddddd. E xx ó -e. ddddd. E xx Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 48

Entrada por consola Tema 2 q La entrada por consola funciona de una manera

Entrada por consola Tema 2 q La entrada por consola funciona de una manera peculiar: Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q Hay un almacén de caracteres para ir guardando todos los caracteres (visibles o invisibles) que escriba el usuario q Ej. Al pulsar la tecla F introducimos el carácter ‘F’ pero si luego pulsamos la tecla Enter introducimos además dos caracteres invisibles: un salto de línea y un fin de línea q A continuación veremos sentencias que “leen” caracteres de ese almacén y, generalmente, borran todos los que han leído q Ej: read, readln y eoln q Si una de estas instrucciones se encuentra el almacén vacío, la ejecución del programa se detendrá y aparecerá un cursor en la ventana/consola del usuario que permite escribir más Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 49

Entrada por consola Tema 2 Estructura de un programa Datos de un programa Tipos

Entrada por consola Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q La sentencia read de Pascal q Lectura de información desde el almacén de caracteres q read (lista-de-variables) variables destino separadas por comas q Lee los caracteres necesarios para formar cada dato (un sólo carácter si debe leer un dato de tipo char, varios si debe leer un dato de tipo integer formado con varios dígitos…) y borra sólo esos caracteres leídos q Ejemplo: var letra: char; begin writeln(‘¿Letra favorita? ’); read(letra); . . . end. Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 50

Entrada por consola Tema 2 Estructura de un programa Datos de un programa Tipos

Entrada por consola Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola q La sentencia readln de Pascal q Lectura de información desde el almacén de caracteres q readln (lista-de-variables) o readln variables destino separadas por comas q Lee los caracteres necesarios para formar cada dato (un sólo carácter si debe leer un dato de tipo char, varios si debe leer un dato de tipo integer formado con varios dígitos…) y borra todos los del almacén (fin de línea incluido) q Ejemplo: var pulgadas: real; begin writeln(‘¿Longitud? ’); readln(pulgadas); . . . end. Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 51

Entrada por consola Tema 2 Estructura de un programa Datos de un programa Tipos

Entrada por consola Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación q La sentencia eoln de Pascal q Comprobación de fin de línea inminente en el almacén de caracteres q eoln q Si el primer carácter del almacén (el siguiente a leer) es un fin de línea devuelve cierto, devolviendo falso en caso contrario; pero ¡no borra ningún carácter del almacén! E/S por consola q Ejemplo: var final: boolean; begin final: = eoln; writeln(final); . . . end. Introducción a la Programación Ingeniería Técnica en Informática de Gestión 2. 52

Críticas, dudas, sugerencias… Tema 2 Estructura de un programa Datos de un programa Tipos

Críticas, dudas, sugerencias… Tema 2 Estructura de un programa Datos de un programa Tipos de datos en Pascal La asignación E/S por consola Federico Peinado www. federicopeinado. es Introducción a la Programación Ingeniería Técnica en Informática de Gestión