tsu en tecnologias

Páginas: 5 (1247 palabras) Publicado: 24 de marzo de 2013
Tutorial de Erlang (1) Básico

Este es el primero de una serie de guías esquemáticas que realizaré mientras me introduzco en el apasionante mundo de Erlang:




1. Funciones y módulos

Con este primer programa veremos como se desarrolla con erlang:

test1.erl:
---------------------------------------------
-module(test1).
-export([sumar/2, restar/2, factorial/1]).

% Funcionsumar
sumar(X, Y) ->
X + Y.

% Funcion restar
restar(X, Y) ->
X - Y.

% Funcion factorial
factorial(1) ->
1;
factorial(X) when X > 0 ->
X * factorial(X - 1).
---------------------------------------------


Situar el fichero test1.erl en el bin donde reside el programa erl (erl.exe en windows).

---------------------------------------------
C:\Program Files\erl5.7.5\bin>erl.exeEshell V5.7.5 (abort with ^G)
1> c(test1).
{ok,test1}
2> test1:sumar(3,5).
8
---------------------------------------------

Con c(test1). realizamos la compilación del módulo.


Elementos que hemos visto:

- module(test1)
Nombre del módulo. El fichero que lo contenga debe llamarse igual que el módulo con la extensión .erl. Para llamar a las funciones que exporte el módulo lasintaxis es modulo:funcion(param1, param2).

-export([sumar/2, restar/2]).
Exportación de funciones del módulo al exterior con el número de parámetros esperados

factorial
Define dos comportamientos en función del parámetro de enrada para limitar la recursividad, el ";" separa las múltiples definiciones de la misma función.

%
Comentario, acaban con el retorno de carro


2. Variables, Atomos,Tuplas y Listas


Variables
Empiezan por mayúscula, pueden asignarse, pero sólo una vez.

Atomos
Comienzan por minúscula y se reducen a un literal que podrá ser utilizado en el programa.

Tuplas:
Compone un tipo de dato mediante un número fijo de términos:
{Term1,...,TermN}
Cada término en la tupla se llama elemento. El número de elementos es el tamaño de la tupla.
Hay funcionespredefinidas para manejarlas (BIFs: built-in functions).

Examples:

1> P = {adam,24,{july,29}}.
{adam,24,{july,29}}
2> element(1,P).
adam
3> element(3,P).
{july,29}
4> P2 = setelement(2,P,25).
{adam,25,{july,29}}
5> tuple_size(P).
3
6> tuple_size({}).
0

Listas:
Compone un tipo de datos mediante un número variable de términos
[Term1,...,TermN]
Cada término de la lista se llamaelemento. El número de elementos es la longitud de la lista.

Examples:

37> L = [a, b, {1, 2}].
[a,b,{1,2}]
38> [H|T] = L.
[a,b,{1,2}]
39> H.
a
40> L.
[a,b,{1,2}]
41> T.
[b,{1,2}]
42> length(H).
** exception error: bad argument
in function length/1
called as length(a)
43> length(T).
2
44> length(L).
3
45> L2 = [a, b | T].
[a,b,b,{1,2}]
46> L2.
[a,b,b,{1,2}]
47> T.test2.erl:
---------------------------------------------
-module(test2).
-export([contar_lista/1, invertir_lista/1]).

% Funcion contar_lista
contar_lista([]) ->
0;
contar_lista([H|T]) ->
1 + contar_lista(T).

% Funcion invertir_lista interfaz
invertir_lista(L) ->
invertir_lista(L, []).

% Funcion invertir_lista implementacion con variable auxiliar de arrastre
invertir_lista([H|T],Lista_Invertida) ->
invertir_lista(T, [H | Lista_Invertida]);
invertir_lista([], Lista_Invertida) ->
Lista_Invertida.
---------------------------------------------


3. Salida por el terminal


1> io:format("salida").
salidaok
2> io:format("salida~n").
salida
ok
3> io:format("salida ~w~n", [hola]).
salida hola
ok
4> io:format("salida ~w ~w ~w~n", [hola, adios, 1]).
salida holaadios 1
ok


4. Control de flujo (if/case)

test3.erl:
---------------------------------------------
-module(test3).
-export([encontrar_elemento/2, encontrar_elemento_case/2]).

% Funcion encontrar_elemento
encontrar_elemento(A, []) ->
false;
encontrar_elemento(A, [H|T]) ->
if
A == H ->
true;
% El else aqui seria true ->
A =/= H ->
encontrar_elemento(A, T)
end....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Tsu Tecnologia Automotriz
  • Tsu Tecnologia Petrolera
  • Tsu. Tecnologías De La Informacion
  • TSU EN TECNOLOGIA PETROLERA
  • tsu tecnologia ambiental
  • Tsu En Tecnología De Alimentos
  • Tsu. Tecnologias De La Informacion Y Comunicacion
  • Tsu Tecnología De Alimentos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS