lunes, 8 de noviembre de 2010

REPORTE # 5 LENGUAJES DE PROGRAMACIÓN (CLASE)

Lenguaje PROLOG

Hola a todos aquí les dejo los problemas logicos resueltos.

?Que es PROLOG?

PROLOG es un lenguaje de programación simple pero poderoso desarrollado en la Universidad de Marsella como una herramienta práctica para programación lógica. Desde el punto de vista del usario, la ventaja principal es la facilidad para programar, ya que se pueden escribir rapidamente y con pocos errores, programas claramente leíbles.

PROBLEMA LOGICO RESUELTO:


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Espero y le hayan entendido al problema, ahora les muestro otro problema lógico pero en el lenguaje PROLOG:

De acuerdo a la base de datos consultar las siguientes preguntas para saber si es verdad o no.

¿La edad de carlos es 32?
¿La edad de javier es de 16?
¿La edad de jose es de 25?
¿Cual es la edad de jesus?
¿Cual es la edad de viri?
¿Gerardo y celia tienen 27 años?
¿Victor y daniel tienen la misma edad?

Se creo un archivo con el siguiente texto que se puede decir que es una base de datos pequeña:

edad(carlos,32).
edad(jesus,18).
edad(javier,29).
edad(gerardo,27).
edad(celia,24).
edad(ana,17).
edad(yessy,19).
edad(diana,23).
edad(daniel,25).
edad(edgar,18).
edad(victor,38).
edad(viri,22). 



Se guardo con la extension .pl

Despues para compilar se abre la consola de prolog en windows y le damos click en file y seleccionamos consult, ahi seleccionamos el archivo que creamos.

Despues que haya compilado haremos las consultas correspondientes como se muestra la imagen:



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

NOTA: Puedes consultar cualquier pregunta con respecto a la base de datos dada, en este caso se preguntaron las que se pidieron en el problema.


Eso es todo por mi parte, espero y les hayan entendido los problemas logicos que acabo de presentar. =)

ATTE: JESUS ALEJANDRO BELTRAN REYNA






domingo, 7 de noviembre de 2010

Lab de lenguajes de progra (Dr.Elisa)

Programas en Java

Hola a todos aqui les dejo unos programas sencillos en java hechos en eclipse.


PROGRAMA QUE TE SACA LA RAIZ CUBICA DE UN NUMERO CUALQUIERA

import javax.swing.JOptionPane;

public class raiz {
/**
* @param args
*/
public static void main(String[ ] args) {
// TODO Auto-generated method stub
double numero, resultado;
numero = Integer.parseInt(JOptionPane.showInputDialog("Numero a sacar raíz cubica"));
resultado = Math.cbrt(numero);
JOptionPane.showMessageDialog(null, "La raíz cubica es " + resultado);
System.exit(0);

}
}














//////////////////////////////////////////////////////////////////////////////////////////////////////////////
PROGRAMA QUE TE CONVIERTE DE PULGADAS A METROS

import java.util.Scanner;

public class medida {
/**
* @param args
*/
public static void main(String[ ] args) {
// TODO Auto-generated method stub
Scanner leer = new Scanner(System.in);
int Pi;
double RES;
{
System.out.println( "Convertir de Pies a Metros" );
System.out.println( "Ingrese la cantidad en Pies" );
Pi = leer.nextInt();
RES = Pi * 0.3048;
System.out.println( "El resultado es: "+RES+" Metros" );
}
}
}





/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PROGRAMA QUE TE DICE LA HORA Y LA FECHA DEL SISTEMA

import java.util.Date;

import java.io.*;
public class HoraSist
{
public static void main(String args[]) {
Date d=new Date();
System.out.println("Fecha: "+d.getDate()+"/"+(d.getMonth()+1)+"/"+(d.getYear()+1900));
System.out.println("Hora: "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds());
}
}





 Saludos a todos.

atte: JESUS ALEJANDRO BELTRAN REYNA




miércoles, 3 de noviembre de 2010

Lab de lenguajes de progra (Dr.Elisa)

Programas en c

Programa que te realiza una suma y te dice cuanto te tardas en ingresar los valores.

#include   < stdio.h >
#inlcude  < time.h >

int main(){
time_t start, end; //* declara variables de tipo tiempo
int x,y,sum;
double dif;

time(&start); //* toma el tiempo actual

printf("\n\n-Teclee el primer valor\n");
scanf("%d", &x);
printf("\n\n-Teclee el segundo valor\n");
scanf("%d", &y);


sum=x+y;


time(&end);
dif= difftime(end, start); //* saca la diferencia de ese rango de tiempo
printf("\n\n-Le ha tomado %.f segundos tecleear los valores\n\n", dif);
printf("\n\n-El resultado de la suma es: %d\n",sum);


getche();
return 0;
}



Programa que tira el dado 50 veces y te dice cuanto cayo el primer dado y el segundo y te da la suma de los dados en cada tiro y dice si quieres volver a tirar los dados otra vez.


#include < stdio.h >

#inlcude < time.h >
#include < math.h >

int main()
{
int DADO1[36000],DADO2[36000],SUMA[36000],INICIO,OPCION;
do
{
system("cls");
printf("%s%17s%17s%17s\n","TIRO","DADO 1","DADO 2","TOTAL");
do
{
for(INICIO=1;INICIO<=50;INICIO++)
{
DADO1[INICIO]=1+rand ()%6;
DADO2[INICIO]=1+rand ()%6;
SUMA[INICIO]=DADO1[INICIO]+DADO2[INICIO];
printf("%d%17d%17d%17d\n",INICIO,DADO1[INICIO],DADO2[INICIO],SUMA[INICIO]);
}

}
while(INICIO<=50);
printf("\n\nDESEA TIRAR DE NUEVO LOS DADOS= ");
printf("\nSI=1 ");
printf("\nNO=0 ");
scanf("%d",&OPCION);
}
while(OPCION==1);
getch();
return 0;
}




Programa que te muetra los cinco mayores valores de un arreglo de forma descendente.

#include < stdio.h >

#inlcude < math.h >

int main()
{
int n,i,j,A[50],TEMP;
//LLENA EL VECTOR
n=10;
for(i=1;i<=n;i++)
{
printf("Vector Numero %d ",i);
scanf("%d",&A[i]);
}
//REALIZA LA ORDENACION
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n-1;j++)
{
if(A[j]>A[j+1])
{
TEMP= A[j];
A[j] = A[j+1];
A[j+1] = TEMP;
}
}
}
//IMPRIME LOS DATOS ORDENADOS
j=0;
printf("\ndecendente: ");
for(i=n;i>=1;i--){
j++;
if(j<=5)
{
printf(",%d",A[i]);
}
}
getch();
}


SALUDOS A TODOS
ATTE: JESUS ALEJANDRO BELTRAN REYNA


Lab de lenguajes de progra (Dr.Elisa)

Programas en Perl

Hola a todos, aqui les dejo unos programas en perl.

Programa que te pide tu nombre y un numero del 1 al 100, en donde la computadora arroja uno aleatoriamente y te dice si le atinaste o no.

#!/usr/bin/perl



print" ¿Cual es tu nombre?\n\n";


$nombre =<>;
chomp $nombre;


print "Hola! $nombre\n\n";


for($i=0;$i<=10;$i++){


print "Atinale al numero...\n\n";


$x= rand(100);


print" Ingresa un numero del 1 al 100\n\n";
$numero =<>;
chomp $numero;
if($numero==$x){
print"Bien le atinaste al numero\n\n\n";
}
if($numero<$x){
print" El numero es bajo\n";
}
if($numero>$x){
print" El numero es alto\n\n";
}
print" El numero real era: $x vuelve a intentarlo $nombre\n\n";

}
exit;




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Programa que te realiza una suma, resta, multiplicacion y modulo.

#!/usr/bin/perl



print "De el valor de a = ";
$a = <>;
chomp $a;


print "De el valor de b = ";
$b = <>;
chomp $b;


$c = $a * $b;
$d = $a + $b;
$e = $a / $b;
$f = $a - $b;


print "$a * $b = $c\n";
print "$a + $b = $d\n";
print "$a % $b = $e\n";
print "$a - $b = $f\n";


exit;




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Programa de arreglo

 
#!/usr/bin/perl



@numeros=(1, 2, 6, 5, 10);


print" Hola los elemntos son: \n\n";


print "@numeros\n\n";
print "@numeros[0]\n";
print "@numeros[1]\n";
print "@numeros[2]\n";

print "@numeros[3]\n";
print "@numeros[4]\n";
exit;



Aqui otro programita de un arreglo simple

#!/usr/bin/perl



@frutas=("manzana","pera","naranja","fresa");


print "Los elementos son: \n\n";


foreach $fruta (@frutas)
{
print $fruta."\n\n";
}
exit;


SALUDOS A TODOS

ATTE: JESUS ALEJANDRO BELTRAN REYNA

martes, 2 de noviembre de 2010

Lab de lenguajes de progra (Dr.Elisa)

Lenguaje PERL



Perl por sus siglas en ingles (Practical Extraction and Report Language) es un lenguaje de programación desarrollado por Larry Wall a partir otras herramientas de UNIX como son: ed,grep,awk,c-shell, para la administración de tareas propias de sistemas UNIX.

Es un lenguaje de programación muy utilizado para construir aplicaciones CGI para el web.

Es un lenguaje libre de uso, eso quiere decir que es gratuito. Antes estaba muy asociado a la plataforma Uníx, pero en la actualidad está disponible en otros sistemas operativos como Windows.

No es ni un compilador ni un interprete, esta en un punto intermedio, cuando mandamos a ejecutar un programa en Perl, se compila el código fuente a un código intermedio en memoria que se optimiza como si fuésemos a elaborar un programa ejecutable pero es ejecutado por un motor, como si se tratase de un interprete.



Variables y datos

En PERL no hay que declarar los tipos de las variables.

Van precedidas por unos caracteres especiales como: $,@,%, que ya indican su tipo.

Se distingue entre minúscula y mayúsculas, por tanto, $A y $a son distintas

Comienzan con el signo $y contienen datos de tipo escalar. Por escalar entendemos valores numéricos y/o alfanuméricos. Para la asignación se usa el signo igual (=) como en la mayoría de los lenguajes. En el caso de ser un valor alfanumérico (texto) este se escribe entres comillas. Al final de la asignación se debe escribir ";".

Ejemplos:

# se asignan textos

$animal="Gato";

# se asigna un valor númerico entero

$crias= 3;

# se asigna un valor númerico con decimales

$edad= 1.5;

# números octales y hexadecimales

$Octal=033;

$Hex=0x19;

Las variables pueden actuar como númericas o alfanuméricas, según el caso. El cambio se realiza en función del signo más (+) o el signo punto (.).

- Texto a número ( + ):

$A="12"; $B=3; o $A="12"; $B="3";

$C=$A +$B sería igual a $C=15.



Variables de matriz: arreglos

Comienzan con el signo @ y contienen una lista de valores escalares (números y/o textos). Al ser una lista de valores para acceder a cada de uno estos se utiliza un número que indica su posición dentro de la lista. La numeración empieza en 0, y se coloca entre corchetes [ ].

@mascota= (“perro”, “gato”, “león”);

@mascota[0] aquí seria perro



Entrada/Salida

Hasta ahora sólo hemos estudiado el tipo de variables. En este capítulo vamos a estudiar el modo de
capturar/mostrar esos valores a través del teclado/pantalla.

La instrucción básica para mostrar el valor de las variables en pantalla es print.

Primer programa en PERL:

print "Hola Perl";


Hola Perl.

Existen muchos modificadores para la salida de los valores de las variables.

Como los siguientes:

"\n" Salta a una nueva línea.

"\t" Tabulacíon.

"\r" Retorno de carro.

"\f" Nueva hoja (formfeed).

"\b" Espacio atrás (backspace).

"\e" Secuencia de ESCape.

"\u" Pasa a mayúscula el primer caracter de texto siguiente".

"\U" Pasa a mayúscula todo el texto siguiente".

"\l" Pasa a minúscula el primer caracter de texto siguiente".

"\L" Pasa a minúscula todo el texto siguiente.

"\E" Fin del efecto de los modificadores \U,\L.

"\a" Emite un pitido.

"\cC" Combinación de Control+Letra. En este caso Control-C .



Los operadores aritméticos:

print 5 + 5; Imprime el resultado de la Suma de 5 y 5.

print 10 - 3; Imprime el resultado de la Resta de 10 y 3.

print 7 * 5; Imprime el resultado de la Multiplicación de 7 por 5.



Estructuras de control

La mayoría de las estructuras de control en PERL, han sido heredadas del lenguaje C/C++, por tanto, para aquellos que conozcan este lenguaje será fácil adaptarse.

En el caso del if en PERL existen 2 variantes en las expresiones que usan en las condiciones de comparación:

Comparación numérica:

== SIGNIFICA igual que

!= SIGNIFICA distinto de

< SIGNIFICA menor que

> SIGNIFICA mayor que

>= SIGNIFICA mayor o igual que

<= SIGNIFICA menor o igual que


$nombre=”jesus”;
if($nombre==jesus)
{
print “Tu nombre es : “ , $nombre;
}


Comparación alfanumérica, literal o de textos.

- eq SIGNIFICA igual que

- ne SIGNIFICA distinto de

- lt SIGNIFICA menor que

- gt SIGNIFICA mayor que

- ge SIGNIFICA mayor o igual que

- le SIGNIFICA menor o igual que


$nombre=”jesus”;
if($nombre eq jesus)
{
print “Tu nombre es : “ , $nombre; }



Estructuras Repetitivas :

Hasta este momento sólo hemos empleado estructuras que permiten decidir si se realiza una u otra acción o varias acciones en función de las distintas posibilidades que permite la condición. En el caso de que queramos repetir una acción o grupo de acciones dependiendo de una condicion, podemos usar for....,foreach...y while. A estas se les llama bucles.



FOR

La instrucción for es la estructura repetitiva más se usada para crear bucles. Se basa en la repetición N veces, definidas por el programador, de una serie de acciones o instrucciones. Cuando la condición propuesta alcanza el máximo de veces definido, concluye esta repetición y sale del bucle.

for ($i=1; $i<=10; $i++)
{
}

Incremento de 1 en 1

$x=$x+1;

$x++;

$x+=1;


FOREACH

Esta instrucción se usa para recorrer los valores de las matrices. La expresión dentro del paréntesis (matriz) es evaluada para producir una lista con sus valores, que actúan como contadores del bucle, ejecutandose el bucle una vez por cada uno de estos elementos.

@nombres= ("Jesus","alejandro","beltran");
foreach $persona (@nombres)
{
print "$persona\n";
}


WHILE

Como indica su nombre, un bucle se repetirá mientras que se cumpla o deje de cumplirse una condición. La nomenclatura de esta estructura repetitiva es:

while (condición)
{
intrucciones...
}


Busquedas

Teniendo una cadena como "Hola Mundo", queremos comprobar si dentro de ella se encuentra la palabra "Mundo".

$cadena="Hola Mundo";
if ($cadena =~ /Mundo/)
{
print "Si existe la palabra”;
}



$cadena="Hola Mundo";

if ($cadena =~ /Universo/)
{
print "No existe la palabra”;
}



Lectura de ficheros

Una vez que ya tenemos los datos grabados, será necesario en más de una ocasión su actualización, por lo que tendremos que leerlos.

# Podemos usar el signo "<" o ninguno delante del fichero, para lectura

open (DATOS,"datos.txt");
#Añadimos cada línea de éste en la matriz.
@registros=;
# Se muestra los datos en pantalla
foreach $datos (@registros)
{
print $datos;
}
# Se cierra el fichero abierto
close (DATOS);


Subrutinas
PERL permite al programador definir sus propias funciones llamadas subrutinas. Se pueden colocar en cualquier lugar dentro de un programa, pero es aconsejable colocarlas todas al principio o final. Para llamar a un subrutina usamos el signo &.

# Inicio de programa con subrutina.
# Se declara la subrutina.
sub hola
{
print "Hola Mundo\n";
}
# Se llama a la subrutina.
&hola;


Retorno de valores

# Inicio del programa
# Declaración de la subrutina.

sub Suma
{
$Total=$_[0] + $_[1];
#$_[0]=9 y $_[1]=5
}
 # Llamada a la subrutina con 2 parámetros.
print &Suma (9,5);
La salida del programa será también: 14

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Bueno eso es todo espero y le entiendan

SALUDOS A TODOS
ATTE: JESUS ALEJANDRO BELTRAN REYNA



lunes, 1 de noviembre de 2010

Lab de lenguajes de progra (Dr.Elisa)

Programas en HASKELL

Hola a todos,

Aqui les dejo unos programas en el lenguaje haskell

Programa que te saca el cuadrado del numero:

Primero se creo un archivo en el cual se puso el siguiente (codigo).

cuadrado : : Integer -> Integer
cuadrado x = x * x
menor : : (Integer, Integer) -> Integer
menor (x,y) = if x <= y then x else y

Se guardo con la extesion .hs

Despues nos vamos a la consola de hugs ahi vamos a cargar el archivo creado,  vamos a la barra lateral de herramientas y seleccionamos el icono que dice:  load modules from specified file.

Ahi le damos click y seleccionamos el archivo y lo abrimos y nos debede aparecer como sigue:


La linea:  Prelude> :l "C:\\Users\\user\\Desktop\\cuadrados.hs" 
nos dice que se cargo sin errores




y para ver si funciona correctamente ponemos

Main>  cuadrado (5+5)

100

Main> cuadrado 8

64

Vemos que funcina correctamente:





Otro programa el cual saca el factorial de un numero:

Al igual que el otro se crea un archivo con la extension .hs

Se pone el siguiente codigo:

fact : : Int->Int

fact 0=1
fact n=n*fact(n-1)
 
Se guarda.
 
y hacemos lo mismo, lo cargamos y lo ejecutamos.
 
y lo checamos
 
Main> fact 5
120
 
Main> fact 6
720
 
Vemos que funciona correctamente:
 
 
 
Aqui otro programa,  este programa cuenta  el numero de digitos que introduces :
 
Codigo:

cont : : Int->Int

cont 0=0
cont n= 1+ cont (div n 10)
 
 
Este programa te cuenta en un rango del 1 al 10 ya que si introduces el 0 no lo va a contar porque lo esta descartando en el codigo.

Lo checamos.

Main> cont 1478522

7

Main> cont 012

2
 
 



Aqui les dejo donde descargar hugs:   http://cvs.haskell.org/Hugs/pages/downloading-Nov2003.htm


Bueno eso es todo,  espero y les haya servido
Saludos

ATTE: JESUS ALEJANRO BELTRAN REYNA
 

Lab de lenguajes de progra (Dr.Elisa)

 LENGUAJE HASKELL





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 comprehensión.

Otras características interesantes como el tratamiento sistemático de la sobrecarga, la facilidad en la definición de tipos abstractos de datos, el sistema de entrada/salida puramente funcional y la posibilidad de utilización de módulos.

Se utiliza como referencia el entorno de programación Hugs y se supone que el lector tiene unos mínimos conocimientos del modelo de programación imperativo o tradicional.

Modelo Funcional

El modelo funcional, tiene como objetivo la utilización de funciones matemáticas puras sin efectos laterales y, por tanto, sin asignaciones destructivas.

El programador se encarga de definir un conjunto de funciones sin preocuparse de los métodos de evaluación que posteriormente utilice el sistema.

Conceptos básicos

El entorno HUGS funciona siguiendo el modelo de una calculadora en el que se establece una sesión interactiva entre el ordenador y el usuario. Una vez arrancado, el sistema muestra un prompt "?" y espera a que el usuario introduzca una expresión (denominada expresión inicial y presione la tecla .

Cuando la entrada se ha completado, el sistema evalúa la expresión e imprime su valor antes de volver a mostrar el prompt para esperar a que se introduzca la siguiente expresión.



Ejemplo:

? (2+3)*8

40

? sum [1..10]

55

En el primer ejemplo, el usuario introdujo la expresión "(2+3)*8" que fue evaluada por el sistema imprimiendo como resultado el valor "40".

En el segundo ejemplo, el usuario tecleó "sum [1..10]". La notación [1..10] representa la lista de enteros que van de 1 hasta 10, y sum es una función estándar que devuelve la suma de una lista de enteros.


El resultado obtenido por el sistema es:

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55


Identificadores y operadores

Existen dos formas de nombrar una función, mediante un identificador (por ejemplo, sum, product y fact) y mediante un símbolo de operador (por ejemplo, * y +)

El sistema distingue entre los dos tipos según la forma en que estén escritos:

Un identificador comienza con una letra del alfabeto seguida, opcionalmente, por una secuencia de caracteres, cada uno de los cuales es, una letra, un dígito, un apóstrofe (') o un subrayado (_).

Los identificadores que representan funciones o variables deben comenzar por letra minúscula (los identificadores que comienzan con letra mayúscula se emplearán como funciones constructoras).

Los siguientes son ejemplos de posibles identificadores:

sum f          f''           intSum             termino_10

Un símbolo de operador es escrito utilizando uno o más de los siguientes caracteres:

:    !    #   $   %   &   *   +   .   /   <   =   >   ?   @   \   ^   -

Los siguientes símbolos tienen usos especiales:

::    =  ..  @  \  <-  ->  ~   =>



Tipos.

Una parte importante del lenguaje Haskell lo forma el sistema de tipos que es utilizado para detectar errores en expresiones y definiciones de función.

El universo de valores es particionado en colecciones organizadas, denominadas tipos. Cada tipo tiene asociadas un conjunto de operaciones que no tienen significado para otros tipos, por ejemplo, se puede aplicar la función (+) entre enteros pero no entre caracteres o funciones.

Una propiedad importante del Haskell es que es posible asociar un único tipo a toda expresión bien formada. Esta propiedad hace que el Haskell sea un lenguaje fuertemente tipado. Como consecuencia, cualquier expresión a la que no se le pueda asociar un tipo es
rechazada como incorrecta antes de la evaluación.

Por ejemplo:

f x = 'A'

g x = x + f x


La expresión 'A' denota el caracter A. Para cualquier valor de x, el valor de f x es igual al caracter 'A', por tanto es de tipo Char. Puesto que el (+) es la operación suma entre números, la parte derecha de la definición de g no está bien formada, ya que no es posible aplicar (+) sobre un caracter.



Booleanos

Se representan por el tipo "Bool" y contienen dos valores: "True (verdadero)" y "False (falso)". El standar prelude incluye varias funciones para manipular valores booleanos:

(&&),(||) y not.

x && y es True si y sólo si x e y son True
x || y es True si y sólo si x ó y ó ambos son True

También se incluye una forma especial de expresión condicional que permite seleccionar entre dos alternativas dependiendo de un valor booleano:

if exp_b then x else y

Enteros

Representados por el tipo "Int", se incluyen los enteros positivos y negativos tales como el -273, el 0 ó el 383. Como en muchos sistemas, el rango de los enteros utilizables está restringido. También se puede utilizar el tipo Integer que denota enteros sin límites superior ni inferior.

En el standar prelude se incluye un amplio conjunto de operadores y funciones que manipulan enteros:

(+) suma.
(*) multiplicación.
(-) substracción.
(^) potenciación.

negate menos unario (la expresión "-x" se toma como "negate x")

div división entera " "rem resto de la división entera. Siguiendo la ley: (x `div` y)*y + (x `rem` y) == x

mod módulo, como rem sólo que el resultado tiene el mismo signo que el divisor.

odd devuelve True si el argumento es impar

even devuelve True si el argumento es par.

gcd máximo común divisor.

lcm mínimo común múltiplo.

abs valor absoluto

signum devuelve -1, 0 o 1 si el argumento es negativo, cero ó positivo, respectivamente.


Ejemplos:

8^2 == 64

7 `div` 3 == 2

Flotantes

Representados por el tipo "Float", los elementos de este tipo pueden ser utilizados para representar fraccionarios así como cantidades muy largas o muy pequeñas. Sin embargo, tales valores son sólo aproximaciones a un número fijo de dígitos y pueden aparecer errores de redondeo en algunos cálculos que empleen operaciones en punto flotante. Un valor numérico se toma como un flotante cuando incluye un punto en su representación o cuando es demasiado grande para ser representado por un entero.

También se puede utilizar notación científica; por ejemplo 1.0e3 equivale a 1000.0, mientras que 5.0e-2 equivale a 0.05.



El standar prelude incluye también múltiples funciones de manipulación de flotantes:

pi, exp, log, sqrt, sin, cos, tan, asin, acos, atan, etc.



Caracteres

Representados por el tipo "Char", los elementos de este tipo representan caracteres individuales como los que se pueden introducir por teclado. Los valores de tipo caracter se escriben encerrando el valor entre comillas simples, por ejemplo 'a',

'0', '.' y 'Z'.

Funciones

Si a y b son dos tipos, entonces a->b es el tipo de una función que toma como argumento un elemento de tipo a y devuelve un valor de tipo b.

Pueden ser argumentos o resultados de otras funciones o ser componentes de estructuras de datos.

La función suma tiene el tipo:

(+)::Int->(Int->Int)


Listas

Si a es un tipo cualquiera, entonces [a] representa el tipo de listas cuyos elementos son valores de tipo a.

Hay varias formas de escribir expresiones de listas:

- La forma más simple es la lista vacía, representada mediante [].

Se puede decir que estas notaciones son equivalentes:

[1,3,10] = 1:[3,10] = 1:(3:[10]) = 1:(3:(10:[]))


length xs devuelve el número de elementos de xs

xs ++ ys devuelve la lista resultante de concatenar xs e ys

concat xss devuelve la lista resultante de concatenar las listas de xss

map f xs devuelve la lista de valores obtenidos al aplicar la función f a
cada uno de los elementos de la lista xs.


Ejemplos:

? length [1,3,10]

3

? [1,3,10] ++ [2,6,5,7]

[1, 3, 10, 2, 6, 5, 7]


? concat [[1], [2,3], [], [4,5,6]]

[1, 2, 3, 4, 5, 6]



Cadenas

Una cadena es tratada como una lista de caracteres y el tipo "String" se toma como una abreviación de "[Char]". Las cadenas pueden ser escritas como secuencias de caracteres encerradas entre comillas dobles.

? "hola"

Hola


? length "Hola"

4                       //Aqui te dice cuantas letras tiene la palabra


Como pueden ver este lenguaje se puede decir que esta muy sencillo de aprender.

Espero y les haya servido
SALUDOS A TODOS

ATTE: JESUS ALEJANDRO BELTRAN REYNA