miércoles, 17 de noviembre de 2010

Reporte # 8 Lenguaje Multiparadigmas

Lenguajes Multiparadigmas

Un lenguaje de programación multiparadigma es el cual soporta más de un paradigma de programación. Según lo describe Bjarne Stroustrup, permiten crear “programas usando más de un estilo de programación”.
El objetivo en el diseño de estos lenguajes es permitir a los programadores utilizar el mejor paradigma para cada trabajo, admitiendo que ninguno resuelve todos los problemas de la forma más fácil y eficiente posible.
Por ejemplo, lenguajes de programación como C++, Genie, Delphi, Visual Basic o PHP, combinan el paradigma imperativo con la orientación a objetos. Incluso existen lenguajes multiparadigma que permiten la mezcla de forma natural, como en el caso de Oz, que tiene subconjuntos (particularidad de los lenguages lógicos), y otras características propias de lenguages de programación funcional y de orientación a objetos.

Lenguaje Oz

El Sistema de Programación Mozart es una plataforma de desarrollo avanzada para aplicaciones inteligentes, distribuidas. El sistema es el resultado de una década de investigación en el diseño de lenguajes de programación y aplicación, la inferencia basada en restricciones, la computación distribuida, y las interfaces humano-computadora. Como resultado, Mozart no tiene igual en potencia expresiva y funcionalidad. Mozart tiene un entorno interactivo de desarrollo incremental y una aplicación de calidad de producción para las plataformas Unix y Windows. Mozart es el fruto de una colaboración de investigación en curso por el Consorcio Mozart.Mozart se basa en el lenguaje de Oz, que apoya la programación declarativa, la programación orientada a objetos, programación con restricciones, y la concurrencia, como parte de un todo coherente. 

Ejemplos:
Lo que el codigo realiza es insertar Key,Value en el árbol binario TreeIn y poner la salida en TreeOut

proc {Insert Key Value TreeIn ?TreeOut}
   case TreeIn
   of nil then TreeOut = tree(Key Value nil nil)
   [] tree(K1 V1 T1 T2) then
      if Key == K1 then TreeOut = tree(Key Value T1 T2)
      elseif Key < K1 then T in
        TreeOut = tree(K1 V1 T T2)
        {Insert Key Value T1 T}
      else T in
        TreeOut = tree(K1 V1 T1 T)
        {Insert Key Value T2 T}
      end
   end
end



GO
GO es la nueva propuesta de Google para incursionar en otro campo más que le quiere arrebatar a Microsoft: Los lenguajes de programación. GO es el lenguaje de programación de Google y entre sus más destacadas características se encuentra el hecho de ser de código abierto, a diferencia del lenguaje de Microsoft.

Ejemplo:   

 package main

   import fmt "fmt"  // Package implementing formatted I/O.

    func main() {
    fmt.Printf("Hello (:")
    }





*En el codigo de GO no es necesario los punto y coma despues de cada declaracion.


Bibliografia de los ejemplos:
Pagina mOZart http://www.mozart-oz.org/
Ejemplo: http://manzanamecanica.org/?q=node/582/
Ejemplo y Tutorial GO http://golang.org/

**Agregue lo que realiza el codigo primero ;)**

Reporte # 7 Lenguajes Orientados a Objetos

Programación Orientada a Objetos
La 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.
 
Clases en POO
Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. 
 
Propiedades en clases
Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. con los objetos.
 
Métodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.
 
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee, pero será algo parecido a esto:
miCoche = new Coche() .
Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar el objeto de la clase coche.
 
Estados en objetos
Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto.
miCoche.color = rojo
El objeto es miCoche, luego colocamos el operador punto y por último el nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad del objeto a rojo con una simple asignación.
 
Mensajes en objetos
Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje “ponte en marcha”.
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos invocar.
miCoche.ponerseEnMarcha()
En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros.

JAVA
El primero que realice en Java-Eclipse  fue el HolaMundo para comprobar que funcionara adecuadamente (: 
C



C++
Aqui dos programas sencillos:
1.-Suma de dos enteros



2.- El volumen de un cubo


Saludos!


Tutorial/Referencias
Java-Eclipse - http://www.youtube.com/watch?v=JbcB3AUwVBY
Eclipse-downloads - http://www.eclipse.org/downloads/ 

jueves, 11 de noviembre de 2010

Reporte #6 Lenguajes Imperativos

Lenguajes Imperativos
En estos lenguajes las instrucciones se ejecutan unas tras otras, de manera secuencial, salvo cuando se encuentran estructuras de control condicionales o bucles. Hay declaración de variables, tipos y procedimientos, aunque esto varía notablemente en función del lenguaje utilizado, pues los hay que exigen las declaraciones mientras que otros permiten que esos elementos no sean declarados.
Los lenguajes mas destacados son: Pascal, Fortran, Cobol, Algol, C, Basic-

Ahora  los programas que realice:

PASCAL
Primero realice el famoso holamundo, pero ya todos conocen ese programa, que mas que nada es para saber como funciona el lenguaje y así comprenderlo mejor, portal motivo no crei necesario agregar las pantallas.
El programa que realice fue sencillo,  de una simple suma pero no hay que olvidar en el código:
la clausula de segunda linea uses crt; para utilizar clrscr; y así  limpiar la pantalla y la instrucción  readkey; para que la pantalla quede visible hasta que el usuario presione una tecla cualquiera.

FORTRAN
Este primer programa que realice fue el del tutorial que utilice para comprender mejor el Fortran y el link se los agrego al final por si lo quieren ver (:
Este programa obtiene el promedio de 3 nuemeros enteros. El codigo inicia con program seguido del nombre del programa, en este caso ejemplo, despues implicit none, y se declaran las variables en real:: . Aqui en lugar de utilizar parentesis, se utilizan *, y entre comillas  "..." lo que imprimira en pantalla aqui yo crei que eran asteriscos, por que en el tutorial ahi que verlo en pantalla completa y me salia error hasta que me di cuenta que no eran * si no "" (:.  haha Ademas de read para guardar el valor de la varible que ingrese el usuario y terminamos con end program ejemplo(que es el nombre del programa).



 Aqui otro programa que realice, igual de sencillo que el fortran ; es el area de un circulo ;)



 C
Aqui un programa del promedio de las calificaciones de un alumno (:


Aqui un programa mas de la relacion que existe entre dos numeros enteros:

COBOL
El lenguaje COBOL (COmmon Business -Oriented Language, Lenguaje Común Orientado a Negocios) fue creado en el año 1960 con el objetivo de crear un lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada informática de gestión.
.
.


Para Pascal y Fortran no tuve problemas para elaborar los programas solo cuando me aparecia el error en Fortran por confundir el * por " al momento en que lo vi en el tutorial xD, pero la verdad son los lenguajes que se me han hecho mas sencillos, talvez por su parecido a C.
En C pues no tuve problemas ya que este lenguaje la mayoria si no es que todos lo utilizamos el semestre pasado.
Mi unica dificultad fue bajar un buen compilador ya fuera para Cobol  o Algol, ya que unos al momento de compilar el programa me pedian una donacion de $$ y en otros simplemente no me permitia abrir el archivo descargable. Solo me faltara el programa de un  lenguaje imperativo diferente a los que ya realice.

Saludo!! (:

VideoTutoriales:
Pascal - http://www.youtube.com/watch?v=JoF5rfzzo_o
Fortran - http://www.youtube.com/watch?v=JGPj5cTGd58
Además de que este vídeo esta en ingles, solo hay que verlo en pantalla completa para observar mejor el código y no confundir los simbolos (:

miércoles, 27 de octubre de 2010

Reporte # 5 Problema Logico

Caballeros y bribones
Hay tres personas Alex, Brook y Cody; uno de los cuales es un caballero, un bribón , y un espía.El caballero siempre dice la verdad, el bribón siempre dice mentiras, y el espía puede mentir o decir la verdad.Alex dice: "Cody es un bribón."Brook ha dicho: "Alex es un caballero."Cody dice: "Yo soy el espía."¿Quién es el caballero, que el bribón, y que el espía?


Solución:


Alex dice que Cody es un bribon y Cody dice que el es el espía, por lo tanto uno de los dos miente. Además Brook afirma que Alex es el caballero y si afirma eso entonces Cody es el mentiroso y por lo tanto es el bribon. Brook seria el espía, ya que si fuera el caballero también lo seria Alex, pero eso no es posible.

Entonces la solución es que: 
Alex es el caballero, Brook es el espía y Cody es el bribón.





Aquí ya les agrego las pantalla del problema resuelto en Prolog y un ejemplo adicional.

Hay que ser muy claros en los enunciados que utilizamos para no tener errores ya que Prolog es un lenguaje casi puro.
 En algunos enunciados  me respondía que no por lo errores que cometía en la sintaxis del enunciado, ya que los escribí diferentes a como los había declarado en los predicados.


En este ejemplo adicional es uno que vi el semestre pasado en matemáticas discretas sobre automoviles y camionetas. Habla sobre la marca, el precio , el color y el kilómetraje del automovil o camioneta.Ademas de que le cambie el color de contorno y letra que es lo que tambien nos permite Prolog.


Aquí una pequeña información sobre Prolog:
Los programas en Prolog se componen de cláusulas de Horn que constituyen reglas del tipo "Si es verdad el antecedente, entonces es verdad el consecuente". No obstante, la forma de escribir las cláusulas de Horn es al contrario de lo habitual. Primero se escribe el consecuente y luego el antecedente. El antecedente puede ser una conjunción de condiciones que se denomina secuencia de objetivos. Cada objetivo se separa con una coma y puede considerarse similar a una instrucción o llamada a procedimiento de los lenguajes imperativos. En Prolog no existen instrucciones de control. Su ejecución se basa en dos conceptos: la unificación y el backtracking.
Gracias a la unificación, cada objetivo determina un subconjunto de cláusulas susceptibles de ser ejecutadas. Cada una de ellas se denomina punto de elección. Prolog selecciona el primer punto de elección y sigue ejecutando el programa hasta determinar si el objetivo es verdadero o falso.
En caso de ser falso entra en juego el backtracking, que consiste en deshacer todo lo ejecutado situando el programa en el mismo estado en el que estaba justo antes de llegar al punto de elección. Entonces se toma el siguiente punto de elección que estaba pendiente y se repite de nuevo el proceso. Todos los objetivos terminan su ejecución bien en éxito ("verdadero"), bien en fracaso ("falso").




http://es.wikipedia.org/wiki/Prolog


Saludos!

 


miércoles, 13 de octubre de 2010

Reporte # 4 Lenguajes Funcionales

La programación funcional es un paradigma de programación declarativa basado en la utilización de funciones aritméticas.
Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos lateraes.

Los lenguajes funcionales ofrecen al programador un buen número de recursos expresivos que permiten resolver problemas complejos mediante programas pequeños y robustos. Entre ellos cabe destacar: un sistema de tipos polimórficos que permite definir una amplia variedad de estructuras de datos de uso genérico, la posibilidad de definir funciones que aceptan otras funciones como argumentos y devuelven funciones como resultado, facilidades para definir y manipular estructuras de datos infinitas, un modelo computacional simple, claro y bien fundamentado, etc.

A continuacion les presento un ejemplo en  Scheme, realmente es demasiado sencillo ya que intente realizar  otros con un tanto mas  de dificultad pero no tuve exito para concluirlos, espero y les sirva de ejemplo el siguiente programa:

DrScheme


Lo que realiza el programa es encontrar el area de un circulo con diferentes radios que ingresa el usuario.


#lang scheme
(define (area radio)
  (* pi radio radio))



Welcome to DrScheme, version 4.1.3 [3m].
Language: Module; memory limit: 128 megabytes.
> (area 2)
12.566370614359172
> (area 5)
78.53981633974483
> (area 12)
452.3893421169302
> (area 54)
9160.884177867836
>

Agregue la codificacion y el resultado que muestra el programa ya que tuve problemas con mi tecla impr pant(:

Aqui ya les dejo otro lenguaje diferente que me faltaba

HASKELL

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 <RETURN>. 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.


Funcion factorial
1)
fac 0 = 1
fac n = n * fac (n-1)
 
main = print (fac 42)
 $ ghc -o fac fac.hs
    $ ./fac
    1405006117752879898543142606244511569936384000000000

 
fac 0 = 1
fac n = n * fac (n-1)  

main = print (fac 12)
$ ghc -o fac fac.hs    
$ ./fac    
479001600

2)
? sum [1..10]
55
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

Saludos!

miércoles, 1 de septiembre de 2010

REPORTE #3 Lenguajes Script

Aqui les presento mi reporte 3 sobre diferentes programas en distintos lenguajes script.


*Python                                               
  1. #!/usr/bin/env python3.2
  2. # declaracion de variables tipo caracter
  3. saludo="Buen dia!"
  4. nombre="Sofia"
  5. despedida="Suerte en tu clase!!"
  6. # comandos para imprimir variables
  7. print(saludo)
  8. Buen dia!
  9. print(nombre)
  10. Sofia
  11. print(despedida)
  12. Suerte en tu clase!!
La primera linea del codigo es indispensable para que se pueda ejecutar.
La segunda y sexta linea son comentarios.
La tercera, cuarta y quinta linea son las variables de tipo caracter.
La septima, novena y onceava linea son los comandos para mandar imprimir las variables, mientras que la octava, decima y doceava linea imprime la variable.

*Perl                                                 
  1. #!/usr/bin/perl
  2. print "Radio del circulo?\n";
  3. $r = <STDIN>;
  4. $area =3.1416*$r*$r;
  5. print "Area del circulo  = $area \n";
  6. exit(0);
Este codigo es para calcular el area de un circulo.
Como en el codigo anterior la primera linea es indispensable.
En la segunda linea le pedimos radio y lo guardamos como variable $r para despues crear la variable con la formula del area del circulo $area =3.1416*$r*$r; y finalmente nos de el resultado.





*Java Script                                     
<HTML>El código JAVA Script se incluye dentro del documento HTML mediante la etiqueta <Script> o <Script languaje= "Java Script">.

<HEAD>
<TITLE> Ejercico en Java Script </TITLE>
</HEAD>
<BODY>
<Script Languaje = "Java Script">
<!-- Ocultación a antiguos navegadores
document.write ( 'Buen dia Sofia!!' )
// Fin de la ocultación -->
</Script>
</BODY>
</HTML>






Para poder escribir la frase dentro de la pantalla se utiliz la función documment.write, cuya estructura es la siguiente: documment.write (' Texto deseado')
Este es un codigo sencillo que imprime un saludo.

Serie Fibonacci en Javascript

<html>
<head>
<title>fib3 </title>
</head>
<body>
<script language=javascript>
var var1;
var var2;
var var3;
var1=1;
var2=1;
document.write("<h4>");
var m=prompt(" Has ta qe numero desea que llegue la serie de fibonacci:", 0);
if(m==1)
{
document.write(var1 + "<br>");
}
if(m==2)
{
document.write(var1 + "<br>");
document.write(var2 + "<br>");
}
if(m>=3)
{
document.write(var1 + "<br>");
document.write(var2 + "<br>");
var3=var2+var1;
document.write(var3 + "<br>");
}
for(var i=3; i<=m-1; i++)
{
var1=var2;
var2=var3;
var3=var2+var1;
document.write(var3 + "<br>");
}
</script>
</body>
</html>






La verdad tuve un poco de dificultades ya que no se utilizar muy bien los lenguajes, pero los ejemplos que puse son los que se me hicieron mas sencillos.
*Realice una pequeñas modificaciones y agrege la serie fibonacci en javascript.


Saludos!