Sei sulla pagina 1di 14

IN S T IT U T O T ECN OLÓGICO S U P ERIOR DE

ALVARADO

INGENIERÍA EN SISTEMAS COMPUTACIONALES


Materia:
PROGRAMACIÓN
LOGICA Y
FUNCIONAL
Semestre-Grupo:
SEPTIMO, YE.

Producto Académico:
INVESTIGACIÓN

Tema:
INTERVALOS, OPERADORES DE PRECEDENCIA, ARBOLES Y TIPOS DE DATOS
BÁSICOS UTILIZADOS EN HASKELL
Presenta:
ALINE PEÑA COLUNGA 166Z0806.

Docente:
ING. FELIX EFRAÍN CORRO ISLA

LERDO DE TEJADA, VER. AGOSTO-DICIEMBRE 2019

P á g i n a 1 | 14
ÍNDICE

Introducción .................................................................................................................................. 3

Objetivo......................................................................................................................................... 4

Intervalos ...................................................................................................................................... 5

Operadores de precedencia ......................................................................................................... 6

Arboles.......................................................................................................................................... 9

Tipos de datos en haskell ........................................................................................................... 11

Conclusión .................................................................................................................................. 12

Bibliografía .................................................................................................................................. 13
INTRODUCCIÓN

En Haskell, "una función es un ciudadano de primera clase" del lenguaje de programación. Como
lenguaje de programación funcional, el constructor de controles primario es la función. El lenguaje
tiene sus orígenes en las observaciones de Haskell Curry y sus descendientes intelectuales. En
el siguiente reporte de investigación conoceremos algunos ejemplos de Intervalos y su definición,
así como una representación gráfica, los operadores de precedencia y su descripción, los árboles,
sus tipos y su representación por nodos.

1
OBJETIVO

Que el usuario aprenda a utilizar el programa de haskell para que en un futuro aprenda a resolver
diferentes tipos de problemas.

2
CONTENIDO

Intervalos:
Un intervalo de números reales es el conjunto de números que se encuentran entre dos de dados;
estos dos números pueden estar o no en dicho conjunto. Debe tenerse en cuenta que se trata de
números reales y, por lo tanto, por ejemplo, el intervalo cerrado [-5,5] contiene todos los números
reales entre el -5 y el 5, ambos incluidos. Así, estos números pertenecen a dicho intervalo:

Los intervalos pueden ser cerrados o abiertos, según si incluyen (cerrados) o no (abiertos) sus
extremos.

 un intervalo abierto no incluye sus extremos; por ejemplo, (−2,3)-2,3 es un intervalo


abierto, ya que -2 y 3 no pertenecen a este intervalo.
 un intervalo cerrado incluye sus extremos; por ejemplo, [−2,3]-2,3 es un intervalo cerrado,
y -2 y 3 pertenecen a este intervalo.
 un intervalo abierto por un extremo no lo incluye, mientras que un intervalo cerrado por un
extremo lo incluye. Por ejemplo, [−2,3) [-2,3) es un intervalo abierto por la derecha, y
cerrado por la izquierda, ya que 3 no pertenece al intervalo, mientras que -2 sí que
pertenece.

Gráficamente, se pueden representar así estos intervalos (básicamente, poniendo un punto en


el/los extremo/s en los que el intervalo sea cerrado):

3
Operadores de precedencia:

La precedencia de un operador indica qué tan "estrechamente" se unen dos expresiones juntas.
Por ejemplo, en la expresión 1 + 5 * 3, la respuesta es 16 y no 18 porque el operador de
multiplicación ("*") tiene una precedencia mayor que el operador de adición ("+"). Los paréntesis
pueden ser usados para forzar la precedencia, si es necesario. Por ejemplo: (1 + 5) * 3 se evalúa
como 18.

Cuando los operadores tienen igual precedencia su asociatividad decide cómo se agrupan. Por
ejemplo "-" tiene asociatividad a izquierda, así 1 - 2 - 3 se agrupa como (1 - 2) - 3 y se evalúa a -
4. "=", por otra parte, tiene asociatividad a derecha, así $a = $b = $c se agrupa como $a = ($b =
$c).

Los operadores de igual precedencia que no son asociativos no pueden usarse unos junto a otros,
por ejemplo, 1 < 2 > 1 es ilegal en PHP. La expresión 1 <= 1 == 1, por otro lado, es legal, ya que
el operador == tiene menos precedencia que el operador <=.

El uso de paréntesis, incluso cuando no es estrictamente necesario, a menudo puede aumentar


la legibilidad del código haciendo grupos explícitamente en lugar de confiar en la precedencia y
asociatividad implícitas del operador.

La siguiente tabla enumera los operadores en orden de precedencia, con los de más alta
precedencia al inicio. Los operadores en la misma línea tienen igual precedencia, en cuyo caso
la asociatividad decide el agrupamiento.

4
Asociatividad Operadores Información adicional

no asociativo clone new clone and new

izquierda [ array()

derecha ** aritmética

derecha ++ -- ~ (int) (float) (String) (array) (object) (bool) @ tipos e incremento/decremento

no asociativo instanceof tipos

derecha ! lógico

izquierda */% aritmética

izquierda +-. aritmética y String

izquierda << >> bit a bit

no asociativo < <= > >= comparación

no asociativo == != === !== <> <=> comparación

izquierda & bit a bit y referencias

izquierda ^ bit a bit

izquierda | bit a bit

izquierda && lógico

izquierda || lógico

derecha ?? comparación

izquierda ?: ternario

derecha = += -= *= **= /= .= %= &= |= ^= <<= >>= asignación

izquierda and lógico

izquierda xor lógico

izquierda or logic

5
6
Arboles:
Los Árboles son las estructuras de datos más utilizadas, pero también una de las más complejas,
Los Árboles se caracterizan por almacenar sus nodos en forma jerárquica y no en forma lineal
como las Listas Ligadas, Colas,Pilas,etc.

7
Datos importantes de los Árboles

Para comprender mejor que es un árbol comenzaremos explicando cómo está estructurado.

Nodos: Se le llama Nodo a cada elemento que contiene un Árbol.

Nodo Raíz: Se refiere al primer nodo de un Árbol, Solo un nodo del Árbol puede ser la Raíz.

Nodo Padre: Se utiliza este término para llamar a todos aquellos nodos que tiene al menos un
hijo.

Nodo Hijo: Los hijos son todos aquellos nodos que tiene un padre.

Nodo Hermano: Los nodos hermanos son aquellos nodos que comparte a un mismo padre en
común dentro de la estructura.

Nodo Hoja: Son todos aquellos nodos que no tienen hijos, los cuales siempre se encuentran en
los extremos de la estructura.

Nodo Rama: Estos son todos aquellos nodos que no son la raíz y que además tiene al menos
un hijo.

8
Tipos de datos básicos en Haskell:

Bool (booleano)

El tipo de dato “bool”, es el tipo de dato lógico, es decir, solo almacena dos posibles valores,
cierto y falso

Char (carácter)

Este tipo de dato almacena un solo carácter alfanumérico, es decir del 0 al 9 y de la A la Z, al


igual que en la mayoría de los lenguajes los valores de tipo carácter deben encerrase entre
comillas sencillas, por ejemplo: ‘a’ ‘9’

String (cadena de caracteres)

Este tipo de dato almacena una secuencia de caracteres, al igual que en otros lenguajes, los
valores para este tipo de dato se deben encerrar entre comillas dobles, por ejemplo: “pedro”
“GATO”

Int (enteros de precisión fija)

Se usa para manejar números enteros con un valor de 2 elevado a la 32.

Integer (enteros de precisión arbitraria)

Se usa para almacenar números mayores al tipo Int, pero desgraciadamente no todas las
arquitecturas de hardware son capaces de manejarlo.

Float (reales de simple precisión)

Se emplea para manejar valores con decimales, como: 2.5 o 0.0003.

Ahora bien, veamos como incorporar esto a nuestros ejemplos, la definición de variables en
haskell es un mapeo de tipos entre el tipo de dato entrante y el tipo de dato del resultado de la
función, para esto debemos escribir el nombre de la función seguida de un doble dos puntos.

9
calculo:

después colocaremos el tipo de los parámetros de la función seguida del signo -> y después el
tipo de dato del resultado de la función.

calculo: Int->Int

10
CONCLUSIÓN

Haskell es un lenguaje funcional puro, de propósito general, que incluye muchas de las últimas
innovaciones en el desarrollo de los lenguajes de programación funcional, como son las funciones
de orden superior, evaluación perezosa, tipos polimórficos estáticos, tipos definidos por el
usuario, encaje por patrones, y definiciones de listas por comprensión.

11
BIBLIOGRAFÍA

Estructura de datos - Árboles - Oscar Blancarte - Software Architecture. (2014, 22 agosto).


Recuperado 27 septiembre, 2019, de
https://www.oscarblancarteblog.com/2014/08/22/estructura-de-datos-arboles/

Tipos de datos en haskell. (2015, 4 enero). Recuperado 27 septiembre, 2019, de


https://sistemasumma.com/2011/09/04/tipos-de-datos-en-haskell/

12