viernes, 17 de mayo de 2013

Lenguaje de Programación HOPE


HOPE puede considerarse como una notación para escribir programas en forma de expresiones funcionales. Una expresión puede estar constituida por un conjunto de símbolos básicos como; "-,+, >, (, 2", etc.
Los símbolos pueden ser:
*Operadores "{+, -, >,...}"
Operandos "{x, 1, 2,...}"
*Nombres de funciones (con sus argumentos)
*Separadores "{;}"
• Ejemplo:
(11 + 10) – (20 + 5)+ Maximo (pi, 20);

Prioridades.
2 + 3 * 5 ;
• Si hay varios operadores…
• ¿Cómo se calcula el valor?
• Asignar prioridades a operadores.
• La operaciones con operador de más prioridad se hacen antes.
Tabla de Prioridades:

1.- *, div : Prioridad 6
2.- +,- : Prioridad 5
• Si hay varios operadores con igual precedencia "2 + 3 - 5;"
• Se da prioridad al operador que se encuentra más a la izquierda.
• HOPE tiene asociatividad por la izquierda.

Asociatividad.
Shop winter
• Ejemplos:
Expresión(E): 2 + 3 * 4;
Resultado(R): 14
(E): (2 + 3) * 4;
(R): 20
(E): (113 + 20) – (20 + 34);
(R): 69 : num

Tipos.
• Un tipo de datos es una forma clasificar un valor de acuerdo a sus propiedades.
• Un tipo representa una clase de dominio de los datos
• Todo componente de un programa Hope tiene un tipo de datos. En particular, las operaciones y los operandos de las expresiones tienen tipos.
• Hope comprueba los tipos de una expresión
antes de evaluarla.
• Se asegura que los tipos de las operaciones y los operandos son los esperados al evaluar una expresión funcional.
• En Hope existen tres tipos de datos básicos:
*Num: Números enteros (representados en expresiones como secuencia de dígitos).
*Truval: Valores booleanos (solamente puede tomar el valor true o false).
*Char: Caracteres imprimibles (tienen que estar encerrados entre comillas simples)
En Hope+ se añade el tipo real (números reales)

Funciones.
• Una función en Hope (regla de transformación) establece una correspondencia entre dos dominios (colecciones de datos).
• Esta regla hace corresponder a todo elemento del (de los) dominio(s) origen un elemento del dominio destino.
• Ejemplo: El tipo de transformación
num → truval
indica que la función transforma un valor de tipo num (entero) en otro de tipo truval (booleano).
• En Hope todas las funciones tienen dos partes; su declaración y su definición. Ejemplo:
Función que transforme una temperatura en grados Celsius a Fahrenheit:
Beck Fahrenheit : num. -> num.; (declaración).

Fahrenheit f <= (f - 32)*5 Dib. 9; (definición)

• Una vez definida, la función se incorpora a la máquina HOPE, usándose con distintos argumentos:
*(E): Fahrenheit 40;
*(R) 4: num.

2 comentarios: