Bienvenidos

hola a todos bienvenidos al blog comenten!!^_^








jueves, 18 de noviembre de 2010

Lenguaje multiparadigma

hola aqui les dejo un programa mas sobre  multiparadigma

*go
*uz


OZ


Oz fue originalmente desarrollado en el laboratorio de Programación de Sistemas en la Universidad de Saarland por Gert Smolka y sus estudiantes a comienzos de 1990. En 1996 el desarrollo de Oz continuó en cooperación con el grupo de investigación de Seif Haridi en el Instituto Sueco de Ciencias de la Computación. Desde 1999, Oz ha sido continuamente desarrollado por un grupo internacional, el Consorcio Mozart, que estuvo compuesto originalmente por la Universidad de Saarland, el Instituto Sueco de Ciencias de la Computación, y la Universidad Católica de Louvain. En 2005, la responsabilidad de gestionar el desarrollo de Mozart fue transferida a un grupo base, el Tablero Mozart, con el propósito expreso de abrir el desarrollo de Mozart a una comunidad mayor.
Oz tiene una implementación de gran calidad, el Sistema de Programación Mozart, que fue liberado bajo una licencia de Código Abierto por el Consorcio Mozart. Mozart ha sido portado a diferentes plataformas como Unix, FreeBSD, Linux, Microsoft Windows, y Mac OS X.
El lenguaje de programación Oz es el interfaz de usuario del sistema de composición musical mediante restricciones Strasheela.

Características del lenguaje

Oz contiene una forma simple y bien hecha de la mayoría de los conceptos de los principales paradigmas de programación, incluyendo programación lógica, funcional, imperativa, orientada a objetos, con restricciones, distribuida, concurrente. Oz tiene una semántica formal simple y una implementación eficiente, el Sistema de Programación Mozart. Oz es un lenguaje orientado a la concurrencia, término introducido por Joe Armstrong, el principal diseñador del lenguaje Erlang. Un lenguaje orientado a la concurrencia hace a la concurrencia fácil de usar y eficiente.


 ventajas 
 radican en la programación con restricciones y la programación distribuida. Debido a su diseño, Oz implementa un modelo de programación distribuido que hace a la red transparente. Este modelo hace fácil programar aplicaciones abiertas y tolerantes a fallas en el lenguaje. Para Programación con restricciones, Oz introduce la idea de espacios de computación, los cuales permiten búsquedas definidas por el usuario y estrategias de distribución que son ortogonales al dominio de restricciones.




EJEMPLO



local Maximo A Be Ce in
% primer ejemplo de oz
proc {Maximo X Y Z}
if X>Y then Z=X else Z=Y end
end
A=4
Be=5
{Maximo A Be Ce}
{Browse Ce}
end







GO

Es open-source. Basado en una sintaxis reducida de C/C++(manteniendo declaración de Tipos sin hacer las cosas muy complicadas con arboles de Herencias para evitarnos hacer refactors) y en la simplicidad que encontramos los programadores en lenguajes como Python o Ruby hoy revelan un lenguaje abierto.

El lenguaje Go está destinado a mejorar la eficiencia, según ellos:

“porque hace muchos años no aparece un lenguaje de gran escala
y que con los avances informáticos actuales
“el desarrollo de software continúa siendo lento”.



func sum(a []int) int { // returns an int
s := 0
for i := 0; i < len(a); i++ {
s += a[i]
}
return s
}





REFERENCIAS


http://sistemas-unsa.blogspot.com/2009/11/go-google-lanzo-su-nuevo-lenguaje-de.html
http://materias.fi.uba.ar/7562/2004/Mozart-Oz.pdf
http://golang.org/doc/go_tutorial.html

miércoles, 17 de noviembre de 2010

LENGUAJES ORIENTADOS A OBJETOS

HOLA AQUI LES DEJO MI REPORTE SOBRE LENGUAJES ORIENTADOS A OBJETOS

 a programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.

LOS LENGUAJES QUE VAMOS A VER SON:

*C++
*JAVA

C++

C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

hola este programa es sobre la serie de fibonacci

#include<iostream>
#include<conio.h>

using namespace std;

unsigned long int fibonacci(int n)
{
if(n==0||n==1)
return n;
else
return fibonacci(n-1) + fibonacci(n-2);
}
main()
{
int i,numero;
system("color 8e");
cout<<"Introduzca la cantidad de elementos que desea observar en la serie\nde fibonacci : ";
cin>>numero;
cout<<"\n\nEsta es la serie de fibonacci con "<<numero<<" elemento";
if(numero!=1)
{
cout<<"s";
}
cout<<"\n\n";
for(i=0;i<numero;i++)
{
if(fibonacci(i)!=0)
cout<<" , ";
cout<<fibonacci(i);
}
getch();
}

aqui les pongo una imagen ya compilada en dev c++

aqui esta el programa ejecutado

aqui les dejo un ejemplo utilizando clases en c++
//Programación en C++
//Ejemplo de herencia sin constructores
#include<iostream.h>
class apartamentos //Clase Base
{
float admon;
bool habitado;
public:
establecer(float ad,bool hab);
ver();
};
apartamentos::establecer(float ad,bool hab)
{
admon=ad;
habitado=hab;
};
apartamentos::ver()
{
cout << "Administración: " << admon << "\n";
if (habitado)
cout << "El apartamento esta habitado \n";
else
cout << "El apartamento no esta habitado \n";
}
class penhouse :public apartamentos //Clase derivada
{
float recargo;
public:
establecer_recargo(float rec);
ver_recargo();
};
penhouse::establecer_recargo(float rec)
{
recargo=rec;
};
penhouse::ver_recargo()
{
cout << "Recargo por penhouse: " << recargo <<"\n";
}
main()
{
apartamentos ap101, ap102, ap103; //Crea 2 objetos tipo apartamentos
penhouse ap1001,ap1002; //Crea 2 objetos tipo penhouse
ap101.establecer(100000.25,1);
ap102.establecer(100000.25,0);
ap1001.establecer(100000,1);
ap1001.establecer_recargo(50000);
cout << "Apartamento 101\n";
ap101.ver();
cout << "Apartamento 102\n";
ap102.ver();
cout << "Apartamento 1001\n";
ap1001.ver();
ap1001.ver_recargo();
return 0;
}


A continuación de presenta la salida

Apartamento 101
Administracion: 100000
El apartamento esta habitado
Apartamento 102
Administracion: 100000
El apartamento no esta habitado
Apartamento 1001
Administracion: 100000
El apartamento esta habitado
Recargo por penhouse: 50000
Presione una tecla para continuar



aqui les dejo un programa en c++ utilizando diagramas UML

PERO ANTES , QUE  SON LOS DIAGRAMAS UML

Lenguaje Unificado de Modelado (LUM o UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables.

Herramientas UML

Pero volviendo a la definición de UML como "conjunto de herramientas", si nos imaginamos UML como una caja de herramientas con su martillo, destornillador, alicates, etc. Veamos qué contiene nuestra caja de herramientas:
UML Tools
  • Diagrama de casos de uso
  • Diagrama de clases
  • Diagrama de estados
  • Diagrama de secuencias
  • Diagrama de actividades
  • Diagrama de colaboraciones
  • Diagrama de componentes
  • Diagrama de distribución

SENTENCIA CONDICIONAL SIMPLE
Se trata de una sentencia que ,tras evaluar una expresión logica, ejecuta una serie de sentencias en caso de que la expresión logica sea verdadera.su sintaxis es






Si solo se va a ejecutar una sentencia , no hace falta usar las llaves:













 JAVA
 Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.

 Este programa realiza un boton

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
 
public class boton extends Applet implements ActionListener {
 
    TextField text1;
    Button button1;
 
    public void init()
    {
        text1 = new TextField(20);
        add(text1);
        button1 = new Button("Pulsa este boton");
        add(button1);
        button1.addActionListener(this);
    }
 
    public void actionPerformed(ActionEvent event)
    {

String texto = new String ("Muy bien!!!");
        if(event.getSource() == button1){
            text1.setText(texto);
        }
    }
}




EJEMPLO DE PATRONES DE DISEÑO EN JAVA, VEAMOS QUE SON LOS PATRONES DE DISEÑO

Patrones de diseño o más comúnmente conocidos como "Design Patterns". ¿Qué son los patrones de diseño? Son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos. Son soluciones basadas en la experiencia y que se ha demostrado que funcionan.
Es evidente que a lo largo de multitud de diseños de aplicaciones hay problemas que se repiten o que son análogos, es decir, que responden a un cierto patrón. Sería deseable tener una colección de dichos patrones con las soluciones más óptimas para cada caso. En este artículo presentamos una lista con los más comunes y conocidos.
Los patrones de diseño no son fáciles de entender, pero una vez entendido su funcionamiento, los diseños serán mucho más flexibles, modulares y reutilizables. Han revolucionado el diseño orientado a objetos y todo buen arquitecto de software debería conocerlos.
A continuación una lista con los patrones de diseño a objetos más habituales publicados en el libro "Design Patterns", escrito por los que comúnmente se conoce como GoF (gang of four, "pandilla de los cuatro").

Patrones de creación
  • Abstract Factory. Proporciona una interfaz para crear familias de objetos o que dependen entre sí, sin especificar sus clases concretas.
  • Builder. Separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción pueda crear diferentes representaciones.
  • Factory Method. Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. Permite que una clase delegue en sus subclases la creación de objetos.
  • Prototype. Especifica los tipos de objetos a crear por medio de una instancia prototípica, y crear nuevos objetos copiando este prototipo.
  • Singleton. Garantiza que una clase sólo tenga una instancia, y proporciona un punto de acceso global a ella.

Patrones estructurales
  • Adapter. Convierte la interfaz de una clase en otra distinta que es la que esperan los clientes. Permiten que cooperen clases que de otra manera no podrían por tener interfaces incompatibles.
  • Bridge. Desvincula una abstracción de su implementación, de manera que ambas puedan variar de forma independiente.
  • Composite. Combina objetos en estructuras de árbol para representar jerarquías de parte-todo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los compuestos.
  • Decorator. Añade dinámicamente nuevas responsabilidades a un objeto, proporcionando una alternativa flexible a la herencia para extender la funcionalidad.
  • Facade. Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema. Define una interfaz de alto nivel que hace que el subsistema se más fácil de usar.
  • Flyweight. Usa el compartimiento para permitir un gran número de objetos de grano fino de forma eficiente.
  • Proxy. Proporciona un sustituto o representante de otro objeto para controlar el acceso a éste.

Patrones de comportamiento
  • Chain of Responsibility. Evita acoplar el emisor de una petición a su receptor, al dar a más de un objeto la posibilidad de responder a la petición. Crea una cadena con los objetos receptores y pasa la petición a través de la cadena hasta que esta sea tratada por algún objeto.
  • Command. Encapsula una petición en un objeto, permitiendo así parametrizar a los clientes con distintas peticiones, encolar o llevar un registro de las peticiones y poder deshacer la operaciones.
  • Interpreter. Dado un lenguaje, define una representación de su gramática junto con un intérprete que usa dicha representación para interpretar las sentencias del lenguaje.
  • Iterator. Proporciona un modo de acceder secuencialmente a los elementos de un objeto agregado sin exponer su representación interna.
  • Mediator. Define un objeto que encapsula cómo interactúan un conjunto de objetos. Promueve un bajo acoplamiento al evitar que los objetos se refieran unos a otros explícitamente, y permite variar la interacción entre ellos de forma independiente.
  • Memento. Representa y externaliza el estado interno de un objeto sin violar la encapsulación, de forma que éste puede volver a dicho estado más tarde.
  • Observer. Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambia de estado se notifica y actualizan automáticamente todos los objetos.
  • State. Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecerá que cambia la clase del objeto.
  • Strategy. Define una familia de algoritmos, encapsula uno de ellos y los hace intercambiables. Permite que un algoritmo varíe independientemente de los clientes que lo usan.
  • Template Method. Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos del algoritmo sin cambiar su estructura.
  • Visitor. Representa una operación sobre los elementos de una estructura de objetos. Permite definir una nueva operación sin cambiar las clases de los elementos sobre los que opera.

AQUI ESTA EL EJEMPLO :


Factory

publicclassFactoriaCanales{publicstaticICanalcrearCanal(Stringnombre) { ICanalcanal;if(nombre.equals("TCP")) canal = newCanalTCP(); elseif(nombre.equals("SMS")) canal = newCanalSMS();elseif(nombre.equals("buzon")) canal = newCanalBuzon(); returncanal;}}



Mensaje mensaje;ICanalcanal;...mensaje = GUI.getMensaje();nombreCanal= GUI.getOpcionEnvio();canal = FactoriaCanales.crearCanal(nombreCanal);canal.enviar(mensaje)



SI QUIEREN VER MAS SOBRE PATRONES DE DISEÑO LES DEJO ESTA PRESENTACION




Patrones
View more presentations from Alhe’ Wero.
">

 REFERENCIAS

 http://es.wikipedia.org/wiki/Java_%28lenguaje_de_programaci%C3%B3n%29
http://es.wikipedia.org/wiki/C%2B%2B
www.lenguajes-de-programacion.com/programacion-orientada-a-objetos.shtml -

MANUALES

www.sisoft.ucm.es/Manuales/C++.pdf
www.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf  

jueves, 11 de noviembre de 2010

programa logico en prolog

PROLOG

hola como estan pss aqui les dejo el intento que hise de este programa logico hacerlo en prolog, pues me costo mucho trabajo como enlazar logicamente cada termino:S pero pues hise el intento, espero sus comentarios.

intente hacer este programa en prolog en base al siguiente razonamiento

Que las edades y los nombres de Alex, Brook, Cody, Dusty y Erin ser A, B, C, D y E.
C dice que A, que C = A 10. Si C eran menores de A, que estaría mintiendo, por lo que C debe ser mayor de A. (Pero aún acostado.)
Tenemos un C <
C dice que A, que B <D. Como C> A, C está mintiendo, por lo que B> D.
Tenemos un C <, D <B.
D dice a B, que D = E 9. Como D <B, D está diciendo la verdad, por lo que D> E.
Tenemos un C <E <D <B, D, E = 9.
E le dice a B, que E = A 7. Como E <B, E está diciendo la verdad, por lo que E> A.
Tenemos un C <, A <E <D <B, D, E = 9, E = A 7.
Puesto que D = E E = 9 y A-7, D = A = A 7 9 16.
Tenemos un C <, A <E <D <B, D, E = 9 = A 16, E = A 7.
B dice a C, que E <C. Si B> C entonces B estaría mintiendo, por lo que entonces E> C, entonces A y C <<E <D <B. Sin embargo, dice C a D, que C = D ± 6, ya que C <D, esto da C = D - 6. Sin embargo, tenemos que E = D - 9, lo que haría E <C, dando una contradicción. La suposición de que B> C es por lo tanto falso, por lo que B <C.
Tenemos un <E <D <B <C, D = E = 9 A 16, E = A 7.
A dice que B, que B = (17/10) A. Como A <B, A es diciendo la verdad.
Tenemos un <E <D <B <C, B = (17/10) A, D = E = 9 A 16, E = A 7.
B dice a C, que | C - D | = | D - E |? | C - D | = 9. Como B <C, B está diciendo la verdad, por lo que C = D 9. Como D = A 16, C = A 16 9? C = A 25.
Tenemos un <E <D <B <C, B = (17/10) A, C = A 25, D = A 16, E = A 7.
Con la tecla D <B <C, tenemos un 16 <(17/10) A <A 25? 16 <(7 / 10) <25? 160 / 7 <A <250 / 7? 22 7.6 <A <35 5.7. Puesto que B y A deben estar números enteros, y A = B (17/10)? B - A = (7 / 10), (7 / 10) debe ser un número entero. Por lo tanto, A debe ser divisible por 10. El único número entero montaje 22 7.6 <A <35 5 / 7 es A = 30.
Tenemos que A = 30, B = (17/10) A, C = A 25, D = A 16, E = A 7.
Por lo tanto A, B = 30 = 51, C = 55, D = 46, E = 37.



LENGUAJES IMPERATIVOS

 hola este es mi reporte sobre lenguajes imperativos
los lenguajes que hoy les voy a mostrar son:

*C
*pascal
*algol
*fortran

¿QUE SON LOS LENGUAJES IMPERATIVOS?
La programación imperativa, en contraposición a la programación declarativa es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea. Ejemplos de lenguajes imperativos: C,BASIC,ALGO,FORTRAN,COBOL,etc



C

EL lenguaje C es el resultado de un proceso de desarrollo que inició con un lenguaje denominado BCPL. Este influenció a otro llamado B (inventado por Ken Thompson). En los años 70; éste lenguaje llevó a la aparición del C.


Los elementos de un programa en C son los siguientes:
Comentarios
Inclusión de archivos
main()
{
variables locales
flujo de sentencias
}
Definición de funciones creadas por el programador utilizadas en main() 

acontinuacion les dejo un programa que hise para calcular el promedio lo hize y lo compile en el dev c++
 =)








asi es como se ve una vez ejecutado
 ALGOL


Se denomina ALGOL (o Algol) a un lenguaje de programación. La voz es un acrónimo de las palabras inglesas Algorithmic Language (lenguaje algorítmico).

En el año de 1958 un comite crea la especificación del lenguaje ALGOL, la tenia la particularidad de no definir la manera de manejar entrada y salida, dejando esta parte libre a cada implementación.
Es en 1960 cuando aparece el lenguaje ALGOL 6.0 el primer lenguaje estructurado en bloques. Este lenguaje fue muy popular en el segundo lustro de los 60's.
Su principal contribución es ser la raiz del arbol que ha producido lenguajes tales como pascal, C, C++, y Java.


Este programa hace la conversion de grados Celfarenheit a Celsius

fahrenheit
begin
real fahr;
print ("INTRODUZE EN  Fahrenheit PARA CONVERTIRLO ");
read (fahr);
print ("Celsius is ", (fahr-32.0) * 5.0/9.0);
end
fini
FORTRAN
El lenguaje fortran es uno de los lenguajes que forman el grupo de lenguajes de computador orientados a procedimientos, los cuales están fundamentados en la estructura del lenguaje usado originalmente para describir el problema, como también en el procedimiento empleado para resolverlo. Tiene por objeto descargar al programador de la tarea de reducir todos los cálculos  y toma de decisiones a las pasos elementales requeridos por el repertorio limitado de operaciones ofrecido a nivel de lenguaje  de maquina. 


Lee un numero real y el area del circulo

program circulo
 
      real r, area
 
      write (*,*) 'Escribe el radio r:'
      read  (*,*) r
      area = 3.14159*r*r
      write (*,*) 'Area = ', area
 
      stop
      end
 
 
PASCAL
 
Pascal se caracteriza por ser un lenguaje de programación
estructurado fuertemente tipificado. Esto implica que:
  1. El código está dividido en porciones fácilmente legibles
  2. llamadas funciones o procedimientos. De esta forma Pascal
  3. facilita la utilización de la programación estructurada en
  4. oposición al antiguo estilo de programación monolítica.
  5. El tipo de dato de todas las variables debe ser declarado
  6. previamente para que su uso quede habilitado.
El nombre de Pascal fue escogido en honor al matemático
Blaise Pascal.
 
aqui les dejo un ejemplo de este lenguaje

program Fibonacci;
uses
 crt;
var
 cantidad,cont:integer;function Fibonacci(valor:integer):integer;
 begin
  if valor = 1 then
   fibonacci:= 1;
  if valor=0 then   fibonacci:=0;
  if valor>=2 then
   Fibonacci:=(Fibonacci(valor-1) + Fibonacci(valor-2));
 end;
 begin
 ClrScr;
 write('cantidad de valores: ');readln(cantidad);
 for cont:=1 to cantidad do
 write(fibonacci(cont),', ');ReadKey;
end.


les pongo unos tutoriales para saber un poco mas de estos programas si asi lo desean

es.wikilingue.com/pt/ALGOL

miércoles, 27 de octubre de 2010

presentacion

hola que tal aqui les dejo la clase que daremos mañana,
presentacion

esta es la parte que yo investige, se las dejo aqui para que tambien comenten mi trabajo

Kruskal
View more presentations from istharstar.

esta es la presentacion animada que dimos en clase , por que la impresion de pantalla no se veia claramente
Kruskal
View more presentations from Alhe’ Wero.
">">