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
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)
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)
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
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
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!
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?
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
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
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
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
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
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} “ ’ ”
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
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;
…
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
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
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
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
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
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
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)
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
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
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
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
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
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
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))
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
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 ::= “+” | “-”
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
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
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”
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…
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’
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)
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
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
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
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
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
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
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;
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
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
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
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);
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
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
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
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
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
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