miércoles, 10 de noviembre de 2010

LENGUAJES IMPERATIVOS

AQUI LES PRESENTO LA SERIE DE FIBONACCI, QUE COMO VEN LA AMO PUES LA CONOSCO Y COMPRENDO MUY BIEN QUE ME ES MUY SENCILLO PASARLA EN AUN LENGUAJE DE PROGRAMACION

Cobol

IDENTIFICATION DIVISION.
  PROGRAM-ID. FIBONACCI.

ENVIRONMENT DIVISION.
DATA DIVISION.

  WORKING-STORAGE SECTION.
  77 N  PIC 9(18).
  77 N1 PIC Z(18).
  77 M  PIC 9(18) VALUE 1.
  77 O  PIC 9(18).
  77 I  PIC 9(4) VALUE 1.
  77 Q  PIC X.

PROCEDURE DIVISION.
  PARA-A.
    DISPLAY ( 1 , 1 ) ERASE.
    DISPLAY ( 2 , 1 ) "LA SERIE FIBONACCI DEL 1 AL 100:".
    MOVE 0 TO N.
    DISPLAY " ".
    DISPLAY 0.
    DISPLAY 1.
    MOVE 0 TO O.

  PARA-B.
    COMPUTE N = O + M.
    MOVE N TO N1.
    MOVE M TO O.
    MOVE N TO M.
    DISPLAY N1.
    ADD 1 TO I.
    IF I = 21
      DISPLAY "PRESIONA TAB KEY PARA VER LA SIGINETE PAGINA."
      ACCEPT Q.
    IF I = 41
      DISPLAY "PRESIONA TAB KEY PARA VER LA SIGINETE PAGINA."
      ACCEPT Q.
    IF I = 61
      DISPLAY "PRESIONA TAB KEY PARA VER LA SIGINETE PAGINA."
      ACCEPT Q.
    IF I = 81
      DISPLAY "PRESIONA TAB KEY PARA VER LA SIGINETE PAGINA."
      ACCEPT Q
    IF I = 99
      GO TO STOP-PARA
    ELSE
      GO TO PARA-B.
  STOP-PARA.
  DISPLAY " ".
  STOP RUN
 

Fortran

        I=35; K=I
      CALL F(I)
      PRINT *,K,'LA SERIE FIBONACCI ES',I
      STOP
      END PROGRAM
      SUBROUTINE F(I)
      DIMENSION A(I+1)
      A(1)=1; A(2)=1
      DO1J=3,I+1
      A(J)=A(J-1)+A(J-2)
1     CONTINUE
      I=A(I+1)
      RETURN
      END SUBROUTINE

FACTORIAL PARA N NUMEROS

Pascal

uses crt;
var
  numero,cota:longint;
  contador:integer;
begin
  clrscr;
  write(‘Escriba un numero: ‘);
  read(cota);
  contador:=1;
  numero:=1;
 repeat
    numero:=numero*contador;
    contador:=contador+1;
 until
    contador>cota;
    writeln(‘El factorial del numero es: ‘,numero);
    readkey;
end.


EL FACTORIAL DE 7 NUMEROS.

ALGOL 
PROC factorial = (INT n)LONG LONG INT:
  CASE n+1 IN
    1,1,2,6,24,120,720
  OUT
    n*factorial(n-1)
  ESAC
;
ESPERANDO COMENTARIOS GRACIAS

jueves, 28 de octubre de 2010

PRESENTACION DE INTEGRACION NUMERICA

HOY NOS TOCO HABLAR EN LA CLASE DE LA INTEGRACION NUMERICA

DECIDIMOS USAR EL METODO DE INTEGRACION DE SIMPSON

DICHA PRESENTACION ES LA SIGUIENTE






SI COMPRENDO QUE ES UN POCO COMPLICADO ESTE METODO PERO ES DIVERTIDO

GRACIAS QUE TENGAS UN EXELENTE DIA!!!!!

PROGRAMA LOGICO

HOLA!!! YO TOME EL PROBLE QUE SE LLAMA DONDE QUEDO EL PESCADO O FALTA EL PESCADO Y DICE:

2 PADRES MIRAN A SUS HIJOS PESCAR. CADA HOMBRE Y SU HIJO ATRAPARON UN PEZ, PERO CUANDO VOLVIERON AL CAMPAMENTO SÓLO HABIA TRES PESCES.

¿CÓMO PUEDE SER ESTO?
(NINGUNO DE LOS PECES SE COMIERON, PERDIERON O REGRESARON)

PUES SOLO FUERON TRES PERSONAS, EL ABUELO, EL PADRE Y EL HIJO.


pescado(X):-abuelo(X),padre(X),hijo(X).
abuelo(X):- pescado(x).
padre(X):- pescado(X).
hijo(X):- pescado(X).
lostres(pescado).
nadie(pescado).


?lostres(pescado)
true

GRACIAS QUE TENGAN UN GOOD DAY!!!!

LENGUAJES FUNCIONALES

EN LOS LENGUAJES FUNCIONALES DECIDI UTILIZAR HASKELL
ES UN POCO COMPLICADO LA VERDADA SU CODIFICACION
PERO LES PRESENTO LA SERIE GEOMETRICA UNA DE LAS PROGRECIONES MATEMATICAS
La Serie Geometrica está constituida por una secuencia de elementos en la que cada uno de ellos se obtiene multiplicando el anterior por una constante denominada razón o factor de la progresión. Se suele reservar el término progresión cuando la secuencia tiene una cantidad finita de términos mientras que se usa sucesión cuando hay una cantidad infinita de términos, si bien, esta distinción no es estricta.
Así,  es una progresión geométrica con razón igual a 3, porque:
15 = 5 × 3
45 = 15 × 3
135 = 45 × 3
405 = 135 × 3
y así sucesivamente.

El codigo en Haskell seria el siguiente:
module Geometric (geo, geo') where
import qualified Data.Ratio as R
data Geo = Geo Rational deriving (Eq, Ord, Show)
instance Num Geo where 
(+)    (Geo a) (Geo b)    = Geo (a + b) 
(*)    (Geo a) (Geo b)    = Geo (a * b) 
(-)    (Geo a) (Geo b)    = Geo (a - b) 
abs    (Geo a)            = Geo (abs a) 
signum (Geo a)            = Geo (signum a) 
fromInteger               = Geo . toRational
instance Real Geo where  toRational (Geo a)= toRational a
instance Fractional Geo where 
(/)    (Geo a) (Geo b)    = Geo (a / b) 
fromRational              = Geo
instance RealFrac Geo where 
properFraction (Geo a)    = case properFraction a of (i, f) -> (i, Geo f)
tmap2 :: (a -> b) -> (a, a) -> (b, b)
tmap2 f (x, y) = (f x, f y)
geo :: (Fractional n) => [Geo] -> [n]
geo = map (fromRational . toRational)
geo' :: (Integral n) => [Geo] -> [n]
geo' = map truncate . geo
def_factor = 2
instance Enum Geo where 
succ           (Geo n)  = Geo $ succ n 
pred           (Geo n)  = Geo $ pred n 
toEnum                  = Geo . toEnum 
fromEnum       (Geo n)  = fromEnum n 
enumFrom       n        = enumFromThen n (n * def_factor) 
enumFromThen   n n'     = let q = n' / n in iterate (* q) n 
enumFromTo     n end    = enumFromThenTo n (n * def_factor) end 
enumFromThenTo n n' end   
| n  > end             = []  
| n' > end             = [n]   
| otherwise            = takeWhile (<= end) $ enumFromThen n n'

La otra serie que tome fue la del Fcatorial en Perl
En este lenguaje es mas sencillo, almenos no se aplican tantas funciones
Su codigo es el siguiente
#factorial

$input=<>;
sub factorial
{
$s=1;
$r=1;
 while ($s <= $input)
 {
   $r *= $s;
   $s++;
 }
if($input == 0)
{
 $r=0;
}
return $r;
}
print "The result is".$r;
ESPERO LES HAYA GUSTADO!!! ESPERO COMENTARIOS

CORRIGIENDO EL LENGUAJE A LISP EL FACTORIAL SERIA:
(defun factorial (n)
    (if (= n 0)
    1
    (* n (factorial (- n 1)))
    )
)

miércoles, 8 de septiembre de 2010

TORRES DE HANOI

EN MI CLASE EXPONDRE LA TORRE DE HANOI

LAS INSTRUCCIONES DEL JUEGO SON LAS SIGUIENTES
Trata de trasladar la torre de la izquierda a la derecha de pieza en pieza, eso sí, no podrás colocar una pieza mayor sobre una menor.


SU SOLUCION:
La solución óptima se consigue en 2N - 1 movimientos. Deseamos conocer la lista de movimientos necesaria.


EL SEUDOCODIGO NOS MUESTRA EL TOTAL DE MOVIMIENTOS:
#include <stdio.h>

#include <conio.h>

void hanoi(int n,int com, int aux, int fin);

void main(void){

clrscr();
char com='A';
char aux='B';
char fin='C';
int n;
printf("\nNumero de discos: ");
scanf("%d",&n);
fflush(stdin);
printf("\n\nLos movimientos a realizar son: \n");
hanoi(n,com,aux,fin);

}
void hanoi(int n,int com, int aux, int fin){
if(n==1){
printf("%c->%c",com,fin);
}
else{
hanoi(n-1,com,fin,aux);
printf("\n%c->%c\n",com,fin);
hanoi(n-1,aux,com,fin);
}
}

ESTE PROGRAMA NOS MUESTRA LOS MOVIMIENTOS DE CADA DISCO
#include<conio.h>

#include<iostream.h>
#include<stdlib.h>
#include<dos.h>
#define hanoi 4

int main( )
{
int n[hanoi]={1,2,3,4},y;
char t,t2,t3;
clrscr();
for(int x=1; x<=hanoi; x++)
{
gotoxy(3,y++);
cout << n[x] << endl;
}

for(int y=0; y<15; y++)


{
for(int x=0; x<=4; x++)
{
for(int s=1; s<=3; s++)
{
cout << "Disco " << n[x] << " --> " << s << endl;
}
}
}
getch();
}

EN EL PRIMER PROGRAMA SE MUESTRA LA RECURSIVIDAD, DONDE SE CREA LA FUNCION Y DESPUES LA MISMA FUNCION SE HACE LLAMAR.