viernes, 19 de noviembre de 2010

Reporte # 3 (pendiente) - Lenguajes Script

Aqui subo un reporte que me faltaba...

Bueno a continuacion les dejo mis programas en Perl y en Python

Perl

Perl es un lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del lenguaje C, del lenguaje interpretado shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.

La estructura completa de Perl deriva ampliamente del lenguaje C. Perl es un lenguaje imperativo, con variables, expresiones, asignaciones, bloques de código delimitados por llaves, estructuras de control y subrutinas

Codigo

.Ejecucion














Python

Python es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y es multiplataforma.

Python es un lenguaje de programación multiparadigma. Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetos, programación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones.Una característica importante de Python es la resolución dinámica de nombres; es decir, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado ligadura dinámica de métodos).
Codigo

jueves, 18 de noviembre de 2010

Reporte # 8 - Lenguaje Multiparadigma

Bueno aqui les dejo un pequeño programa en Oz...

Oz

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.

Como complemento a la programación multiparadigma, las principales ventajas de Oz 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.

Y aqui esta mi codigoo.. que es la tan conocida serie de Fibonacci =)

functor
import System Application
define
fun {Fib N}
case N
of 0 then 1
[] 1 then 1
else {Fib N-2} + {Fib N-1} end
end
in
local A in
[A] = {Application.getArgs plain}
{System.printInfo {Fib {String.toInt A}}}
end
{Application.exit 0}
end

Reporte # 7 - Lenguajes Orientados a Objetos

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

Caracteristicas de la POO

Abstraccion
Encapsulamiento
Modularidad
Principio de ocultación
Polimorfismo
Herencia
Recolección de Basura

Y a continuación les dejo unos programas que hize en C++ y en JAVA

C++

Bueno este programa en c++, es una tipo calculadora que ingresas dos numeros y eliges la operacion que quieres hacer :)

#include<iostream>
using namespace std;

int main()
{    float a, b;
    char oper;

    cout << "Ingresa dos numeros: ";
    cin >> a >> b;
   
    do
    {    cout << "Operacion ( +, -, *, / ): ";
        cin >> oper;
        if(oper!='+' && oper!='-' && oper!='*' && oper !='/')
            cout << "Operacion Incorrecta\n";
    }while(oper!='+' && oper!='-' && oper!='*' && oper !='/');
   
    if( oper == '/' )
        for( ; !b; )
        {    cout << "No es posible la division entre 0\n";
            cout << "Otro nunero: ";
            cin >> b;
        }

    cout << a << " " << oper << " " << b << " = ";
    switch( oper )
    {    case '+': cout << a + b << "\n";
                  break;
        case '-': cout << a - b << "\n";
                  break;
        case '*': cout << a * b << "\n";
                  break;
        case '/': cout << a / b << "\n";
    }
   
    cin.ignore();
    cin.get();
    return 0;
}
 

Ejecución



JAVA

Este programa en Java te da el volumen de una esfera, aqui les dejo el codigo y la ejecucion



class Esfera
{
    double radio;
    public Esfera (double radio)
    {
        this.radio=radio;
    }
    public Esfera ()
    {
        this(1.0);
    }
    public double volumen ()
    {
        return (4.0/3.0)*Math.pow(radio,3.0);
    }
    public double superficie ()
    {
        return 4.0*Math.PI*Math.pow(radio,2.0);//libreria mate (potencia,pi)
    }
    public void imprimir ()
    {
        System.out.println ("radio : " + radio);
        System.out.println ("volumen : " + volumen ());
        System.out.println ("superficie : " + superficie());
    }
    public static void main (String[] args)
    {
        Esfera e=new Esfera ();
        e.imprimir();
        System.out.println ("\n");
        e=new Esfera (Math.PI);
        e.imprimir ();
    }
}

Ejecución

jueves, 11 de noviembre de 2010

REPORTE # 6 - LENGUAJES IMPERATIVOS

Bueno compañeros; aqui les dejo mis programas que hice en lenguajes imperativos y una pequeña informacion de cada programa, espero que les sirva:

C














CARACTERISTICAS

  • Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.
  • Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).
  • Un sistema de tipos que impide operaciones sin sentido.
  • Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente.
  • Acceso a memoria de bajo nivel mediante el uso de punteros.
  • Interrupciones al procesador con uniones.
  • Un conjunto reducido de palabras clave.
  • Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros.
  • Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.
  • Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable "empleado").
Y aqui les dejo mi programa, que consiste en un switch, que te permite elegir que operacion quieres que haga con los numeros que ingresas:
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
      int n;
      float a,b,c,d;
      printf("1.-LA POTENCIA DE UN NUMERO ENTERO \n2.-EL AREA DE UN TRAPECIO \n3.-EL AREA DE UN TRIANGULO \n4.-LA SUMA DE 2 NUMEROS \n5.-EL PRODUCTO DE 2 NUMEROS");
      scanf("%d",&n);
     
      switch(n)
      {
               case 1: printf("Ingrese el numero: ");
               scanf("%f",&a);
               printf("Ingrese el numero al que lo quiere elevar: ");
               scanf("%f",&b);
               c=pow(a,b);
               printf("%f",c);
              
               break;
              
               case 2: printf("Cuanto mide la base mayor: ");
               scanf("%f",&a);
               printf("Cuanto mide la base menor: ");
               scanf("%f",&b);
               printf("Cuanto mide la altura: ");
               scanf("%f",&c);
               d=((a+b)*c)/2;
               printf("%f",d);
              
               break;
              
               case 3: printf("Cuanto mide la base: ");
               scanf("%f",&a);
               printf("Cuanto mide la altura: ");
               scanf("%f",&b);
               c=(a*b)/2;
               printf("%f",c);
              
               break;
              
               case 4: printf("Ingrese el primer numero: ");
               scanf("%f",&a);
               printf("Ingrese el segundo numero: ");
               scanf("%f",&b);
               c=a+b;
               printf("%f",c);
              
               break;
              
               case 5: printf("Ingrese el primer numero: ");
               scanf("%f",&a);
               printf("Ingrese el segundo numero: ");
               scanf("%f",&b);
               c=a*b;
               printf("%f",c);
              
               break;
               }
               getche();
               return 0;
               }









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 llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
  2. El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.
El nombre de Pascal fue escogido en honor al matemático Blaise Pascal.

A continuacion les dejo mi programa, que basicamente es una calculadora, con un switch eliges la operacion que deseas hacer con los numeros



FORTRAN

Principales características

El lenguaje fue diseñado teniendo en cuenta que los programas serían escritos en tarjetas perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única alteración posible en el orden de ejecución era producida con la instrucción goto. Estas características han evolucionado de versión en versión. Las actuales contienen subprogramas, recursión y una variada gama de estructuras de control

Y aqui les dejo mi codigo, esta muy sencillo, espero que le entiendan, solo calcula el area de un rectangulo =)

PROGRAM AREAS

IMPLICIT NONE
REAL  a , b , area
PRINT *, 'DAME EL LADO a'
READ *, a
PRINT *, 'DAME EL LADO b'
READ *, b
area = a * b
PRINT *; 'AREA = ' , area
END.

miércoles, 10 de noviembre de 2010

REOPRTE # 5 - Problema Logico

Bueno, aqui les dejo mi problema logico y una explicacion de como lo pude resolver:


Cuatro personas están viajando a diversos lugares en diversos tipos de transporte.


Sus nombres son: Raquel, Juan, Mr.Jones y Cindy.

Ellos viajaron en el tren, el coche, el avión o la barco. 


Mr.Jones odia volar 

Cindy tiene que alquilar su vehículo 
Juan se marea

¿En que viajo cada persona?


PROCEDIMIENTO:


1.- Mr. Jones odia volar, asi que se descarta el avion para el.

Raquel                                             tren      carro      avion      barco
Juan                                                tren      carro      avion      barco
Mr. Jones                                         tren      carro      avion      barco
Cindy                                               tren      carro      avion      barco

2.- Cindy tiene que alquilar su vehiculo, y lo unico que se puede rentar es un carro, asi que Cindy viajara en carro

Raquel                                             tren      carro      avion      barco
Juan                                                tren      carro      avion      barco
Mr. Jones                                         tren      carro      avion      barco
Cindy                                               tren      carro      avion      barco

3.- Juan se marea, asi que no puede viajar ni en avion ni en barco, entonces Juan viajara en tren

Raquel                                             tren      carro      avion      barco
Juan                                                tren      carro      avion      barco
Mr. Jones                                         tren      carro      avion      barco
Cindy                                               tren      carro      avion      barco

4.- Y ya por logica te queda que, Mr. Jones viajara en barco y Raquel viajara en avion 

Raquel                                             tren      carro      avion      barco
Juan                                                tren      carro      avion      barco
Mr. Jones                                         tren      carro      avion      barco
Cindy                                               tren      carro      avion      barco




SOLUCION:


Raquel viajo en avion
Juan viajo en tren
Mr . Jones viajo en barco
Cindy viajo en carro

Espero que si le puedan entender al procedimiento, y que les sirva de algo =)
Saludos 



sábado, 6 de noviembre de 2010

REPORTE # 4 - LENGUAJES FUNCIONALES

Bueno compañeros, aqui les dejo unos programas que hize con algunos lenguajes funcionales.

Empeze con el lenguje R, y aqui mas o menos les explico en que consiste mi porgrama:


Mi programa trata de tener una matriz, y cambiarle su diagonal principal por ceros, a continuacion se los explico:

Primero declare una matriz del 1 al 16 con dimensiones de 4x4 con la funcion array










Ya que tenemos esta matriz, declaras otra matriz de indices, esta nos servira para sacar las coordendas de la diagonal que vamos a cambiar por ceros.









Aqui se extraen los numeros que seran cambiados en la matriz de 4x4




Y por ultimos sustituimos estos elementos por ceros










Mi segundo programa lo hize en Haskell y a continuacion les dejo unas caracteristicas de este lenguaje funcional y mi programa:



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

Incorpora, además, 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.



  • Hugs : es un intérprete. Ofrece una compilación rápida de los programas y un tiempo razonable de ejecución. También viene con una librería gráfica muy simple, lo que lo hace adecuado para quienes lo están aprendiendo. Sin embargo no es una implementación a despreciar, es una de las más livianas y compatibles.


  • GHC : "Glasgow Haskell Compiler" compila a código nativo en una variedad de arquitecturas y puede también compilar a C. Es, probablemente, uno de los compiladores más populares e incluso tiene unas cuantas librerías (por ejemplo OpenGL) que, aunque muy útiles, sólo funcionan bajo GHC.


  • nhc98 : es otro compilador con un mejor tiempo de ejecución que Hugs. Esta implementación se enfocó a minimizar la utilización de la memoria convirtiéndola en una buena opción para arquitecturas lentas o antiguas.


  • HBC : es otro compilador a código nativo de Haskell. Si bien no ha sido actualizado en el último tiempo sigue siendo bastante útil.


  • Helium : es un nuevo dialecto de Haskell. Se centró en ser muy fácil de aprender; por ello, no incluye soporte para todo el estándar de Haskell, haciendo que no sea totalmente compatible



  • Y aqui esta mi programa

    triangulo::Int->Int->Int->String
    triangulo a b c | a+b     | a==b&&b==c&&c==b="triangulo equilatero"
         | a==b||a==c||b==c="triangulo isoceles"
         | (a^2 + b^2)==c^2||a^2 + c^2==b^2||c^2 + b^2==a^2="triangulo rectangulo"
         |otherwise="triangulo escaleno"


     Bueno lo que hace este programa es recibir tres números enteros y verifica si forman o no un triángulo, y si forman un triángulo, muestra que tipo de triángulo es, ya sea equilátero, isóceles, escaleno o de pitágoras

    Y por ultimo aqui les dejo unos tutoriales de Haskell, espero que les sirva

    http://www2.ucsp.edu.pe/~apaz/apuntes/node23.html
    http://www.lcc.uma.es/~blas/pfHaskell/gentle/intro.html
    http://horru.lsi.uniovi.es/~labra/FTP/IntHaskell98.pdf