introducción a la programación tema 2: instrucciones y tipos de datos simples ingeniería técnica...

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

Upload: cecilio-palacio

Post on 28-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Introducción a la Programación

Tema 2: Instrucciones y tipos de datos

simples

Ingeniería Técnica en Informática de GestiónDepartamento de Ingeniería del Software e Inteligencia Artificial

Curso 2009-2010

ProfesorFederico Peinado

Elaboración del materialMercedes GómezPablo MorenoManuel OrtegaFederico Peinado

Page 2: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.2

Pascal, un lenguaje de programación

En este tema estudiamos aspectos comunes a muchos lenguajes de programación Prácticamente todos los lenguajes que siguen el paradigma

imperativo (= dar órdenes al ordenador)

Por estudiar un lenguaje concreto usaremos Pascal que, como dijimos, es un lenguaje apropiado para aprender

¿Cómo podemos explicar Pascal? De manera informal (lo habitual al principio) De manera formal (usando BNF, EBNF o diagramas

sintácticos para describir la sintaxis del lenguaje, por ejemplo)

Page 3: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.3

Forma básica de un programa en Pascal

Datos deentrada

Datos desalida

Algoritmo

program nombre-programa;

const

idCte1 = valor1;

...

idCteN = valorN;

var

lista-variables1 : tipo1;

...

lista-variablesM : tipoM;

begin

sentencia1;

...

sentenciaK-1;

sentenciaK

end.

Sección de declaración

de datos

Sección de código

(programa principal)

Page 4: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.4

Forma básica de un programa en Pascal

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

Implementación del algoritmo en Pascalprogram conversion;

const

centPorPulg = 2.54;

var

pulgadas, cent: real;

begin

writeln('¿Longitud?');

readln(pulgadas);

cent:= pulgadas * centPorPulg;

writeln('En cms:', cent)

end.

Datos de entrada Pulgadas

Datos de salida Centímetros

Algoritmo Obtención del valor

expresado en pulgadas

Conversión al valor equivalente

Visualización del valor equivalente

Page 5: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

2.5

program conversion;

const

centPorPulg = 2.54 ;

var

pulgadas , cent : real ;

begin

writeln ( '¿Longitud?' );

readln ( pulgadas );

cent:= pulgadas * centPorPulg;

writeln ( 'En cms:' , cent )

end.

Forma básica de un programa en Pascal

Palabrasreservadas

Identificadoresnormales

Identificadorespredefinidos

Identificadorespredefinidos

Literales

Page 6: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.6

Uso del espacio “en blanco” y de los comentarios

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

El espacio dejado a la izquierda de cada línea (indentación) no tiene significado para la máquina El objetivo de estos “arreglos en el formato” es simplemente hacer más

legibles los programas para otros programadores

En cualquier parte del programa el programador puede escribir comentarios para explicar su código Si son de una sola línea basta con comenzarlos por // Si son varias líneas deben ir entre (* y *) necesariamente

// Conversor PulgCent, por Federico Peinado.

(* Este programa convierte un número de pulgadas a su equivalente en centímetros. Ha sido escrito por Federico Peinado. *)

¡Los comentarios ayudan a documentar bien nuestro trabajo!

Page 7: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

2.7

Uso del espacio “en blanco” y de los comentarios

(********************************** Este programa convierte pulgadas a centímetros. Por Federico Peinado **********************************)program conversion;

const

centPorPulg = 2.54;

var

pulgadas, cent: real;

begin

writeln('¿Longitud?');

readln(pulgadas);

cent:= pulgadas * centPorPulg;

writeln('En cms:', cent)

end.

program conversion;

const centPorPulg = 2.54; var

pulgadas,cent:real; begin

writeln('¿Longitud?');readln(pulgadas);

cent:= pulgadas * centPorPulg;

writeln('En cms:', cent) end.

Mismo programa, pero... ¿qué formato es más cómodo de leer?

Page 8: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.8

Datos de un programa

Todos los datos tienen: Identificador

Nombre simbólico que se usa para representar el dato Identifica de forma legible las celdas de memoria donde está

guardado el dato Tipo

El tipo de los valores que puede tener el datoEj: Números enteros, números reales, cadenas de texto…

Clasificación como Constante o VariableConstante, si el valor del dato no cambia nunca en ningún

momento de la ejecución del programaVariable, si el valor del dato cambia o puede cambiar en

algún momento de la ejecución del programa

Page 9: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.9

Un identificador es un nombre para un dato concreto Si el valor de ese dato no cambia nunca,

el identificador es una constante Si el valor de ese dato puede cambiar durante la ejecución del

programa, el identificador será una variable

Los identificadores deben ser autoexplicativos Ej: numero_alumnos está bastante claro Ej: nx6 no hay quien lo entienda

Sintaxis en EBNF:

Identificador ::= Letra {[Subrayado] Letra | Dígito}

Letra ::= “a” | “b”| ... | “z” | “A” | “B”| ... | “Z”

Dígito ::= “0” | “1” | ... | “9”

Subrayado ::= “_”

Identificadores en Pascal

Page 10: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.10

Identificadores en Pascal

Resumen informal de la sintaxis de un identificador de Pascal: No puede ser un número solo Ha de empezar necesariamente por una letra La ñ no es una letra válida, ni las vocales con tildes o con diéresis

(se usa solamente el alfabeto inglés) No puede acabar en subrayado (_), ni puede haber dos subrayados

seguidos (__) Y por supuesto… ¡no puede ser una palabra reservada!

Identificadores predefinidos en Pascal, por ejemplo program

La longitud de los identificadores en teoría no tiene límite

Pascal no distingue entre letras mayúsculas y minúsculas

NUMEntero, numEntero, numENTERO... ¡todos hacen referencia exactamente al mismo dato!

No puede haber identificadores con nombres repetidos dentro de un mismo bloque de programa, para evitar confusiones

Page 11: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.11

Identificadores en Pascal

¿Los siguientes son identificadores válidos en Pascal?

pulgadas cent valido

2veces salu2 duda?

x x_ x_a

Page 12: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.12

Datos cuyo valor no cambia a lo largo de la ejecución del programa

Tipos de constantes en Pascal Literales: se usan “a pelo” en el programa, sin identificador

‘Longitud’ 2.54 ‘a’ true Constantes con nombre: llevan un identificador

pi = 3.1416

La sentencia const de Pascal anuncia que se van a declarar e inicializar las constantes con nombre del programa

program conversion;

const

centPorPulg = 2.54;

...

Constantes

Page 13: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.13

Sintaxis de la sección de declaración de constantes en Pascal

SeccionConstantes ::= [ “const” DefCte “;” { DefCte “;” }]

DefCte ::= Identificador “=” Valor

Identificador ::= No terminal que ya hemos descrito antes…

Valor ::= Ventero | Vreal | Vcaracter | Vbooleano | Cadena | [Signo] Identificador

Ventero ::= [Signo] Digito {Digito}

Signo ::= “+” | “-”

Vreal ::= Fnormal | Fcientifico

Fnormal ::= [Signo] Pentera “.” Pdecimal

Pentera ::= Digito {Digito}

Pdecimal ::= {Digito}

Fcientifico ::= Fnormal “E” Signo Pentera

Vbooleano ::= “true” | “false”

Vcaracter ::= “ ’ ” Car “ ’ ”

Car ::= “a” | “b”| ... | “z” | “A” | “B”| ... | “Z” | “ ” | “?” | ...

Cadena ::= “ ’ ” {Car} “ ’ ”

Page 14: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.14

¿Este es un ejemplo válido de declaración de constantes?

const

pi = 3.1416;

centPorPulg = 2.54;

iva = 0.16;

dolar = ‘$’;

cinco = 5;

max = 100;

min = -max;

mensaje = ‘Error’;

El tipo de una constante se decide de manera automática al inicializarse, según el tipo del dato que reciba Por ejemplo cinco será de tipo entero e iva será de tipo real

Constantes

Page 15: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.15

Variables

Datos cuyo valor cambia o puede cambiar a lo largo de la ejecución del programa

La sentencia var de Pascal anuncia que se van a declarar las variables del programa

program conversion;

const

centPorPulg = 2.54;

var

pulgadas, cent: real;

Page 16: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.16

SeccionVariables ::= [ “var” DefVar “;” {DefVar “;”}]

DefVar ::= Identificador { “,” Identificador} “:” Tipo

Identificador ::= No terminal que ya hemos descrito antes…

Tipo ::= “integer” | “real” | “char” | “boolean” | DefinidoPorUsuario

Sintaxis de la sección de declaración de variables en Pascal

var pulgadas, cent: real; letra: char; valido: boolean; base: integer; altura: integer;

Lo explicaremos en el Tema 5

Page 17: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

program conversion;

const

centPorPulg = 2.54;

var

pulgadas, cent: real;

begin

...

end.

2.17

Situación de constantes y variables en memoria

Page 18: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.18

La cadena 01110010 puede ser... ... 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?)

¡Para programar hay que saber qué significan esos 0’s y 1’s!

Asignar un tipo a un dato es una manera de indicar: Cuál es la interpretación correcta de las cadenas de 0’s y 1’s Qué rango de posibles valores puede tomar el dato Cuáles son las operaciones posibles sobre dicho dato

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 Ej: No te deja multiplicar un número entero por un carácter textual

Representación interna de los datos en memoria

Page 19: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.19

Ejemplo: La codificación ASCII para caracteres textuales

Page 20: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.20

Conjunto de valores posibles que pueden tomar unos datos junto con las operaciones que se pueden realizar sobre ellos

Tipos básicos (o predefinidos) en Pascal Integer Real Char Boolean

Tipo de Datos

Todos son tipos simples

Integer y Real son tipos numéricos

Page 21: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.21

Tipos de datos en Pascal

Integer (números enteros): El rango de valores representable depende del entorno de

desarrollo y la máquina que usemos 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

Otros tipos enteros en Turbo Pascal: ShortInt -128..127 LongInt (4 bytes) –2147483648..2147483647 Byte 0..255 Word 0..65535

De momento utilizaremos solo el tipo Integer

Page 22: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.22

Tipos de datos en Pascal

Real (números reales): 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

Char (Caracteres): Cualquier carácter de los 256 que forman la tabla ASCII

Boolean (Valores booleanos o lógicos): Sólo pueden ser :Verdadero (TRUE) o Falso (FALSE)

Page 23: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.23

El tipo Integer de Pascal

Tipo ordinal(sus elementos pueden organizarse de menor a mayor y hay una manera obvia de pasar al siguiente)

Sintaxis de los números enteros en EBNF:

V-entera ::= [“+” | “-”] Digito {Digito}

Digito ::= “0” | “1” | ... | “9”

Constantes predefinidas en Pascal maxint: Valor máximo para números enteros minint: Valor mínimo para números enteros Ej: En Turbo Pascal son 32767 y -32768, respectivamente

Page 24: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.24

Operadores para datos enteros

Aridad Posición Operandos Resultado Operación (num. Operandos)

- 1 prefijo entero entero cambio de signo

(operador por delante)

+ 2 infijo entero entero suma (operador entre medias)

- 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

Page 25: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.25

Expresiones aritméticas enteras

Ejemplos

var x: integer;...

4 + 5 -17 * x5 + 2 * 7 5 - 6 - 7

¿Cómo interpretar una expresión como 5 + 2 * 7? ¿Y 5 - 6 - 7? La resolución de ambigüedades producidas por el uso de

operadores infijos se lleva a cabo asociando a cada operadorUna prioridad o precedencia Una asociatividad

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

Page 26: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.26

Prioridad 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

Prioridad de los operadores aritméticos en Pascal

- (cambio de signo)

* div mod

+ - (resta)

¿Cómo se interpreta 5 + 2 * 7? ¿Qué podemos usar si se desea otra interpretación?

Evaluación de expresiones

Orden de aplicación

Page 27: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.27

Asociatividad La expresión 5 - 6 - 7 sigue siendo ambigua porque

estamos usando el mismo operador

Las reglas de asociatividad solucionan estas ambigüedades Si un operador cualquiera (llamémosle ) asocia a izquierdas,

entonces a b c se interpreta como (a b) c Si un operador cualquiera (llamémosle ) asocia a derechas,

entonces a b c se interpreta como a (b c)

En Pascal todos los operadores aritméticos infijos binarios asocian a izquierdas

¿Cómo se interpreta 5 - 6 - 7? ¿Qué podemos usar si se desea otra interpretación?

Evaluación de expresiones

Page 28: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.28

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)

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)

Evaluación de expresiones

Page 29: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.29

Funciones sobre datos enteros

Funciones aritméticas predefinidas en Pascal abs (x) Valor absoluto. Resultado entero cos (x) Coseno de x (en radianes). Resultado real sin (x) Seno de x (en radianes). Resultado real exp (x) ex. Resultado real ln (x) Logaritmo neperiano de x. Resultado real sqr (x) x2. Resultado entero sqrt (x) x. Resultado real

donde x es constante, variable o expresión entera

Ejemplos

var num: integer;

...

sqrt (4 * num) exp (num * 4 + 3)

cos (5 * abs (-2)) ln (num * (4 + 3))

Page 30: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.30

Otras operaciones con enteros

Operadores relacionales (binarios) > < >= <= = <> Los operandos son constantes, variables o expresiones enteras El resultado es un valor booleano (verdadero o falso)

Función Impar odd (x)

donde x es constante, variable o expresión entera; el resultado es un valor booleano (verdadero si x es impar)

Predecesor y sucesor pred (x) succ (x)

donde x es constante, variable o expresión entera; el resultado es el número entero anterior y el siguiente, respectivamente

Page 31: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.31

El tipo Real de Pascal

Tipo ordenado (sus elementos pueden organizarse de menor a mayor)

Sintaxis de los números reales en EBNF:

Vreal ::= Fnormal | Fcientifico

Fnormal ::= [Signo] Pentera “.” Pdecimal

Pentera ::= Digito {Digito}

Pdecimal ::= {Digito}

Fcientifico ::= Fnormal “E” Signo Pentera

Digito ::= “0” | “1” | ... | “9”

Signo ::= “+” | “-”

Page 32: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.32

Operadores para datos reales

Aridad Posición Operandos Resultado Operación

- 1 prefijo real real cambio de signo

+ 2 infijo reales real suma

- 2 infijo reales real resta

* 2 infijo reales real multiplicación

/ 2 infijo reales real cociente de la división real

Page 33: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.33

Funciones sobre datos reales

Funciones aritméticas predefinidas

abs (x) Valor absoluto. Resultado real cos (x) Coseno de x (en radianes). Resultado real sin (x) Seno de x (en radianes). Resultado real exp (x) ex. Resultado real ln (x) Logaritmo neperiano de x. Resultado real sqr (x) x2. Resultado real sqrt (x) x. Resultado real

donde x es constante, variable o expresión real

Page 34: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.34

Operadores relacionales (binarios) > < >= <= = <> Los operandos son constantes, variables o expresiones reales El resultado es un valor booleano

Conversión explícita de tipo (de real a entero) round (x) redondea al número entero más próximo trunc (x) directamente elimina la parte decimal

donde x es constante, variable o expresión real

Ejemplos:

round (8.8)

round (-8.7)

trunc (8 + 0.8)

trunc (-2.4)

round (9 - 0.5)

Otras operaciones con datos reales

Por defecto en Pascal se redondea “al alza”

Page 35: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.35

El tipo Char de Pascal

Tipo ordinal

El juego de caracteres varía de un estándar a otro Dos estándares de uso común son ASCII y EBCDIC

Los juegos de caracteres incluyen dos clases de caracteres Visibles: pueden editarse e imprimirse

Por ejemplo: los dígitos, las letras, los símbolos de puntuación… Invisibles (también llamados caracteres de control)

Por ejemplo: el salto de línea, el fin de línea, el tabulador…

Page 36: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.36

El tipo Char de Pascal

Internamente cada carácter del juego de caracteres está representado por un código numérico ord (x) --> Obtención del código numérico asociado al carácter x chr (x) --> Convierte el código numérico x en el carácter

correspondiente según el juego de caracters

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’

Page 37: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.37

El tipo Char de Pascal

Predecesor y sucesor pred (x) succ (x)

donde x es una constante o una variable de tipo carácter

Operadores relacionales (binarios) > < >= <= = <> 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)

Page 38: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.38

El tipo Boolean de Pascal

Tipo ordinal

Dos únicos valores: true y false ord (false) es 0; ord(true) es 1

Expresiones booleanas simples 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

Page 39: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.39

Expresiones booleanas compuestas Operadores lógicos binarios: and (y-lógica) y or (o-lógica) Operador lógico unario: not (negación lógica)

Prioridad de los operadores en Pascal (añadiendo los operadores lógicos y relacionales)

- (unario) not

* div mod / and

+ - (binario) or

< <= > >= = <>

El tipo Boolean de Pascal

Orden de aplicación

Page 40: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

Ejemplo

Escribe expresiones booleanas para representar las siguientes condiciones Alguno de estos tres valores enteros i, j o k es par Un valor entero j está en el intervalo [0, 100]

2.40

El tipo Boolean de Pascal

Page 41: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.41

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 > 5

A + B = C

(C= 20) or (A > 5) and (B > C)

(C= 20) and (A > 5) or (B > C)

not (A > 5) or ((C = 20) or (A > 5)) and (B > C)

El tipo Boolean de Pascal

Page 42: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.42

Instrucción básica de la programación imperativa para cambiar el estado en un programa

Sirve para cambiar el valor de una variable El valor asignado debe ser compatible con el tipo de la variable No se debe acceder a una variable antes de que se le haya

asignado un valor ¡Prohibido usar variables con “basura”!

Sintaxis en diagrama sintáctico:

La asignación

Asignación

:=Variable Variable

Constante

Expresión

Page 43: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

Ejemplo

var

x: integer;

begin

...

x:= 1;

x:= x + 3;

...

end.

Explicación de lo que ocurre en memoria…

2.43

Ejemplos de asignaciones

Page 44: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.44

Ejemplos de asignaciones

Si x=5, y=10, z=20 ¿Cuál es valor de x después de recibir las siguientes asignaciones?

x := y;

x := 5*y;

x := 5;

x := x*x;

x := x div x;

x := succ(y) + succ(z) - z;

Page 45: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.45

Dadas las siguientes declaraciones

const blanco = ‘ ’;

var p, q: integer; x, y: real; a, b: boolean; c1: char;

indica si las siguientes sentencias son válidas

p:= trunc (y) + x;

a:= p + q;

a:= b and (ord (c1) <> ‘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 (c1);

Ejemplos de asignaciones

Page 46: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.46

La sentencia write de Pascal Visualización/Impresión de información en la pantalla de la

consola/ventana del usuario, durante la ejecución del programa write (lista-de-salidas)

Elementos a visualizar separados por comas

(Se visualizan todos en la misma línea en pantalla)

Ejemplo:

var

cent: real;

begin

...

write(‘En cms:’, cent)

end.

Salida por consola

Page 47: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.47

La sentencia writeln de Pascal Visualización/Impresión de información en la pantalla de la

consola/ventana del usuario, durante la ejecución del programa 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)

Ejemplo:var

cent: real;begin

writeln(‘¿Longitud?’);...writeln(‘En cms:’, cent)

end.

Salida por consola

Page 48: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.48

Salida por consola

Enteros y caracteres Por defecto, se usan tantas posiciones como dígitos tenga el

número o una sóla posición si es un carácter

Elemento : numeroPosiciones (Significa que se usan tantas posiciones como indica numeroPosiciones)

Ejemplo:

var x, y: integer;

writeln (‘Resultado:’ , x * y: 5);

Page 49: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.49

Salida por consola

Reales

Elemento : longitudTotal : numeroDecimales (Significa que se usa la notación habitual con longitudTotal indicando las posiciones que se usan -incluyendo punto decimal y signo si lo hay- de las cuales numeroDecimales se reservan para los decimales -redondeando si es necesario-)

Elemento : longitudTotal(Significa que se usa la notación científica con longitudTotal indicando las posiciones totales que se usan)

Notación científica por defecto: e.ddddddddddExx ó -e.ddddddddddExx

Page 50: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

La entrada por consola funciona de una manera peculiar:

Hay un almacén de caracteres para ir guardando todos los caracteres (visibles o invisibles) que escriba el usuario

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

A continuación veremos sentencias que “leen” caracteres de ese almacén y, generalmente, borran todos los que han leído

Ej: read, readln y eoln

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

2.50

Entrada por consola

Page 51: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.51

La sentencia read de Pascal Lectura de información desde el almacén de caracteres read (lista-de-variables)

variables destino separadas por comas

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

Ejemplo:var letra: char;

begin

writeln(‘¿Letra favorita?’);

read(letra);

...

end.

Entrada por consola

Page 52: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.52

La sentencia readln de Pascal Lectura de información desde el almacén de caracteres readln (lista-de-variables) o readln

variables destino separadas por comas

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)

Ejemplo:var pulgadas: real;

begin

writeln(‘¿Longitud?’);

readln(pulgadas);

...

end.

Entrada por consola

Page 53: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

2.53

La sentencia eoln de Pascal Comprobación de fin de línea inminente en el almacén de

caracteres eoln

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!

Ejemplo:var final: boolean;

begin

final:= eoln;

writeln(final);

...

end.

Entrada por consola

Page 54: Introducción a la Programación Tema 2: Instrucciones y tipos de datos simples Ingeniería Técnica en Informática de Gestión Departamento de Ingeniería del

Tema 2

Estructura deun programa

Datos de unprograma

Tipos de datosen Pascal

La asignación

Introducción a la ProgramaciónIngeniería Técnica en Informática de Gestión

E/S por consola

Críticas, dudas, sugerencias…

Federico Peinadowww.federicopeinado.es