sábado, 20 de noviembre de 2010

Tipos de Datos [Lenguajes de Programación FIME]




Código:

int main()
{
int v, i;
int C[5]={0};
printf("\t\t\t***ELECCION DE UN CANDIDATO POR VOTOS***");
printf("\n\nTenemos 5 candidatos disponibles por los que votar.\nIngresa tu voto por el candiadato de tu eleccion (Teclea del 1 al 5) ");
printf("\n\nIngresa el primer voto: ");
scanf("%d", &v);
while(v)
{
if(v>0 && v<6)
C[v-1]++;
else
printf("\n\aESE CANDIDATO NO EXISTE!!!");
printf("\nIngresa el siguiente voto: ");
scanf("%d", &v);
}
printf("\n\nResultados de la Eleccion");
for(i=0;i<=4;i++)
{
printf("\nEl Candidato %d: Obtuvo %d votos", i+1, C[i]);
}
{
if(C[0]>C[1]&&C[0]>C[2]&&C[0]>C[3]&&C[0]>C[4])
printf("\n\nEl candidato 1 es el Ganador!!!!");
else if(C[1]>C[0]&&C[1]>C[2]&&C[1]>C[3]&&C[1]>C[4])
printf("\n\nEl candidato 2 es el Ganador!!!!");
else if(C[2]>C[0]&&C[2]>C[1]&&C[2]>C[3]&&C[2]>C[4])
printf("\n\nEl candidato 3 es el Ganador!!!!");
else if(C[3]>C[0]&&C[3]>C[1]&&C[3]>C[2]&&C[3]>C[4])
printf("\n\nEl candidato 4 es el Ganador!!!!");
else if(C[4]>C[0]&&C[4]>C[1]&&C[4]>C[2]&&C[4]>C[3])
printf("\n\nEl candidato 5 es el Ganador!!!!");
else if(C[0]==C[1])
printf("\n\nHay empate entre el candidato 1 y 2");
else if(C[0]==C[2])
printf("\n\nHay empate entre el candidato 1 y 3");
else if(C[0]==C[3])
printf("\n\nHay empate entre el candidato 1 y 4");
else if(C[0]==C[4])
printf("\n\nHay empate entre el candidato 1 y 5");
else if(C[1]==C[2])
printf("\n\nHay empate entre el candidato 2 y 3");
else if(C[1]==C[3])
printf("\n\nHay empate entre el candidato 2 y 4");
else if(C[1]==C[4])
printf("\n\nHay empate entre el candidato 2 y 5");
else if(C[2]==C[3])
printf("\n\nHay empate entre el candidato 3 y 4");
else if(C[2]==C[4])
printf("\n\nHay empate entre el candidato 3 y 5");
else if(C[3]==C[4])
printf("\n\nHay empate entre el candidato 4 y 5");
}

lunes, 15 de noviembre de 2010

Reporte #8

Lenguajes Multiparadigma

Un lenguaje de programación multiparadigma es el cual soporta más de un paradigma de programación, ya que 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, siendo que ninguno resuelve todos los problemas de la forma más fácil y eficiente posible.


Oz

Oz es un ejemplo de un lenguaje multiparadigma, fue desarrollado originalmente por Gert Smolka y sus estudiantes en una universidad de Alemania a comienzos de los 90's. Este lenguaje tambien es multiplataforma, ya que implementaciones en Unix, Microsoft Windows, Mac, OS X, Linux y FreeBSD.


Paradigmas: Incluye los siguientes paradigmas en su programación.

  • Lógica.
  • Funcional.
  • Imperativa.
  • Orientada a Objetos.
  • Con Restricciones.
  • Distribuida.
  • Concurrente.

Características:
  • Lenguaje Multiplataforma.
  • Fácil para programar aplicaciones abiertas y tolerantes a fallas en el lenguaje, lo que permite mucho ahorro de tiempo.
  • Permite hacer búsquedas definidas por el usuario.
  • Permite captar los diferentes paradigmas de manera natural, lo que permite al programador usar la técnica mas eficiente para crear códigos.

Programa:

  1. proc {Merge Xs Ys Zs}
  2. cond
  3. Xs = nil then Zs = Ys
  4. [] Ys = nil then Zs = Xr
  5. [] X Xr in Xs = X|Xr then Zr in
  6. Zs = X|Zr {Merge Xr Ys Zr}
  7. [] Y Yr in Ys = Y|Yr then Zr in
  8. Zs = Y|Zr {Merge Xs Yr Zr}
  9. end
  10. end

Multiparadigma:
Este lenguaje lo podemos considerar imperativo ya que por medio de un conjunto de instrucciones se le indica al lenguaje o al computador, que hacer. Decimos que es con restricciones ya que los valores de algunas variables pueden ser obtenidas por medio de cualquier ecuación que sea programada, ya sea sencilla o compleja. Este lenguaje también se caracteriza por desarrollar sistemas abiertos y transparentes, que sean tolerantes a fallas, po rlo que lo hace una programación de tipo distribuida. También permite un programación concurrente, lo que permite ejecutar múltiples tareas o hilos de ejecución creados por un único programa. Sin duda es también un lenguaje OO ya que le es posible crear objetos en un entorno y una interacción entre ellos. Y por ultimo se dice que es lógico-funcional ya que a la entrada de datos y el proceso de los mismos por funciones, se puede obtener una salida o un resultado.

Referencias:


viernes, 12 de noviembre de 2010

Reporte #7


Lenguajes Orientados a Objetos

La programación Orientada a Objetos (OO) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas. El uso de este tipo de programación comenzó en la década de los 90's; amplio varios conceptos ya conocidos de programación, e implemento características esenciales para este tipo de programación.

Origen:
Los conceptos de la programación OO tienen su origen en Simula 67, un lenguaje, que como su nombre lo dice, diseñado para hacer simulaciones de naves y fue creado por los noruegos Ole-Johan Dahl y Kristen Nygaard. La idea era agrupar diferentes tipos de naves en varias clases de objetos, para que cada clase fuera responsable de definir sus propios datos y comportamientos, todo esto fue mejorado tiempo después en Smalltalk un lenguaje diseñado para in sistema totalmente dinámico en el cual los objetos se pudieran crear y modificar en marcha del programa, es decir, en tiempo de ejecución.

Conceptos:
  • Clase: Son las propiedades y comportamientos de un tipo de objeto, y y a partir de estas la creación de un nuevo objeto.
  • Herencia: Son los atributos y operaciones, heredadas o transferidas de una clase hacia otra, por lo que la clase a la que se le heredo puede usar los mismos métodos y variables publicas. Mientras que los componentes privados también son heredados, pero se mantienen escondidos al programador.
  • Objeto: Es una instancia de una clase, y se define como un conjunto de propiedades o atributos (datos) y de comportamientos o funcionalidades (métodos) los mismos que consecuentemente reaccionan a eventos.
  • Método: Es un algoritmo asociado a un objeto y se ejecuta al recibir el mensaje del algoritmo, es decir, para que sirve, que puede eventos hacer, y que cambiara de un objeto.
  • Evento: Es un suceso en el sistema ocasionado por la interacción del usuario con la maquina y se define como la reacción que puede desencadenar un objeto.
  • Mensaje: Es aquel que va dirigido a un objeto, mediante un evento generado el cual le dice que método ejecutar.
  • Propiedad o Atributo: Es un contenedor de tipo de datos asociados a un objeto, y se definen como las características predeterminadas de un objeto, cuyo valor puede ser modificado por la ejecución de un método.
  • Estado Interno: Es una variable que se declara como privada, se utiliza para indicar distintas situaciones posibles para el objeto y solo pueden ser alteradas o accedidas a ellas por algún método.
  • ID de un objeto: Un objeto es representado por medio de tablas o entidades las cuales se componen de sus atributos y funciones correspondientes a este.
Características:
  • Abstracción: Extrae las características esenciales de un objeto y mediante la abstracción se pueden armar nuevos conjuntos de clases.
  • Encapsulamiento: Reúne todos los elementos pertenecientes a un mismo objeto, también se puede decir que encapsular, es ocultar detalles del código los cuales no sean de tanta importancia conocer.
  • Modularidad: Es la propiedad que permite subdividir una aplicación en partes más pequeñas llamadas módulos, y cada uno de estos módulos deben ser lo más independiente posible de otros módulos, pero tienen conexiones con otros módulos que les permite estar interrelacionados con el programa en si.
  • Ocultamiento: Es una manera de aislar los objetos del exterior, es decir, del usuario o de otros objetos, para proteger las propiedades de un objeto de quien no tenga derecho de acceder a ellas.
  • Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando.
  • Recolección de basura: Es una técnica que se encarga de destruir automáticamente, y por lo tanto, desvincular o liberar la memoria asociada a objetos sin trascendencia.


Smalltalk


Smalltalk es un lenguaje de programación que permite realizar tareas, de computación mediante la interacción con un entorno de objetos virtuales, se puede decir, que Smalltalk es un mundo virtual donde viven objetos que se comunican mediante el envió de mensajes entre ellos.
Este lenguaje consiste únicamente de objetos que puede ser desde un simple numero, como el 7, hasta un servidor web.

Características:
  • Orientación a objetos Pura.
  • Tipado Dinámico, se dice así cuando una misma variable puede tomar valores de distinto tipo en distintos momentos, estas son más propias de lenguajes interpretados.
  • Interacción entre objetos mediante envío de mensajes.
  • Herencia simple y raíz común.
  • Recolección de basura.
  • Compilación o Interpretación en tiempo de ejecución.
  • Múltiples Implementaciones.

C++

C++ es un lenguaje de programación diseñado a mediados de los 80's por Bjarne Stroustrup. La intención era extender el lenguaje "C" hacia la Orientación de Objetos. También se considera a este lenguaje como multiparadigma, ya que como es inicialmente imperativo, y como extensión de "C" es orientado a objetos, también permite una programación estructurada y la programación genérica.

Programa:
  1. #include (stdio.h)
  2. #include (conio.h)
  3. int main()
  4. {
  5. int dpto;
  6. float pag, tot;
  7. printf("DEPARTAMENTOS: \n1.Ropa \n2.Comestibles \n3.Perfumeria");
  8. printf("\n\nDe que departamento es la compra?: ");
  9. scanf("%d", &dpto);
  10. printf("\n\nCuanto fue el total a pagar por el cliente?: $");
  11. scanf("%f", &pag);
  12. switch(dpto)
  13. {
  14. case 1: if(pag>=100)
  15. tot=pag-(pag*0.05);
  16. break;
  17. case 2: if(pag>=100)
  18. tot=pag-(pag*0.035);
  19. break;
  20. case 3: if(pag>=100)
  21. tot=pag-(pag*0.08);
  22. break;
  23. default: printf("\aNO EXISTE ESE DEPARTAMENTO");break;
  24. }
  25. printf("\nEl total a pagar es de: $ %.2f", tot);
  26. getche();
  27. }

Explicación:
Este programa lo que hace es otorgar descuentos en los precios totales de compra de una tienda departamental, a partir de $100 de compra, pero no lo hace en general, el descuento se aplica diferente, dependiendo de el departamento del cual es comprada la mercancía, por lo tanto podemos decir que cada departamento es una clase y al elegir un tipo de departamento se le asigna un evento para el cual calcular el monto total a pagar esto es posible mediante la instrucción switch que asigna casos diferentes, que pueden ser asignadas a las clases.

Pantalla







jueves, 4 de noviembre de 2010

Reporte #6


Lenguajes Imperativos

Los lenguajes imperativos, en contraposicion a la programacion declarativa es un paradigama de programacion, y son un conjunto de instrucciones que le indican al computador como realizar una tarea. También es importante saber que la implementación de hardware de la mayoria de los computadores, es imperativa, ya que estan diseñadas para ejecutar código máquina.

Características:
  • Permite y depende de efectos colaterales.
  • Uso de variables globales.
  • Dificulta la depuracion y paralelización.
  • Implementa el paradigma de las Maquinas Turing.


Formula Translating System por sus siglas en ingles, es un lenguaje de programación de alto nivel de propósito general, procedimental e imperativo, que está especialmente adaptado al calculo numérico y a la computación científica. Es usado para aplicaciones científicas y de ingeniería.

Características:
  • El lenguaje fue diseñado para que los programas fueran escritos en tarjetas perforadas.
  • Tiene una sintaxis considerada arcaica o antigua para programadores que aprenden lenguajes más modernos.
  • Es difícil codificar la instrucción "for".
  • Errores en la escritura de sólo un carácter pueden llevar a errores durante el tiempo de ejecución en vez de compilación.
  • Posee comandos mucho más breves para efectuar operaciones matemáticas.
  • Es de los mejores lenguajes para realizar tareas de computación numérica de alto rendimiento.


Programa:

    1. PROGRAM POLAR_CARTES
    2. REAL X, Y, RHO, THETA
    3. READ (*,*) RHO, THETA
    4. CALL POLARES (X, Y, RHO, THETA)
    5. PRINT *, X, Y
    6. END

    7. SUBROUTINE POLARES (X, Y, RHO, THETA)
    8. REAL X, Y, RHO, THETA
    9. X = RHO * COS (THETA)
    10. Y = RHO * SIN (THETA)
    11. END


Descripción:
  • 1 En esta linea se le asigna el nombre del programa.
  • 2 Se hacen saber las variables de tipo reales.
  • 3 En esta linea la función "read" leerá los parámetros que se le asignen a al argumento, es decir a lo que esta dentro del paréntesis.
  • 4 en esta linea la instrucción "call" sirve para llamar a otra instrucción que se define en lineas más abajo del programa.
  • 7 en esta linea se define una subrutina "subrutine" la cual puede ser llamada tantas veces como se desee en el programa con la instrucción previa "call" más el nombre de dicha subrutina.
  • 8 esta linea forma parte de la subrrutina abierta en la linea anterior y asigna las variables de tipo real de la subrutina.
  • 9 en esta linea se asigna una función para calcular el valor de la variable "X".
  • 10 esta linea también asigna una funcion para calcular el valor de la variable "Y".
  • 11 se cierra la subrutina.
  • 5 en esta linea se imprimen o se ven en pantalla, los valores calculados por las funciones de las funciones de la subrutina, mediante la instruccion "print".
  • 6 fin del programa.
____________________________________________



COmmon Business -Oriented Language, por sus siglas en ingles; fue creado con el objetivo de crear un lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 60's existían numerosos modelos de ordenadores incompatibles entre sí. También se busco que estuviera orientado principalmente a los negocios, es decir, a lo que llamamos como informática de gestión.

Características:
  • Es un lenguaje el cual fue dotado con una excelente capacidad de auto documentación.
  • Su sintaxis fue creada para evitar el uso de símbolos o caracteres, para facilitar la creación de programas.
  • Permite la reserva de memoria dinámica y la programación estructurada.
  • Posteriormente se siguieron implementando mejoras al lenguaje, por ejemplo se le añadió la orientación a objetos.
  • Existen varios compiladores que permiten emplear este lenguaje como scripting y de servicio web.
Programa:

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. SALUDOS.
  3. *
  4. ENVIROMENT DIVISION.
  5. *
  6. DATA DIVISION.
  7. WORKING-STORAGE SECTION.
  8. *
  9. PROCEDURE DIVISION.
  10. INICIO.
  11. DISPLAY ‘Hola Mundo- ‘.
  12. STOP RUN.
Descripción:
  • 2 y 3 son las lineas para asignar el nombre al programa,por lo tanto las instrucciones "IDENTIFICATION DIVISION" y "PROGRAM-ID" son obligatorios.
  • 4, 6 y 9 son asteriscos ( * ) y sirven para poner comentarios en el programa, es decir no saldrán impresos en pantalla.
  • 5 y 7 la instrucción "ENVIROMENT DIVISION" y "DATA DIVISION" permiten definir el tipo de ordenador para el que fue escrito el programa, asi como los dispositivos perifericos necesarios para soportar los ficheros utilizados en el programa.
  • 8 la instrucción "WORKING-STORAGE SECTION" sirve para asignar a una constante figurativa o predefinida su valor a un campo.
  • 11 con la palabra "INICIO" se comienza un bloque.
  • 12 la instrucción "DISPLAY" sirve para imprimir en pantalla lo que se encuentre entrecomillas.
  • 13 y por ultimo la instruccion "END RUN" finaliza el programa.


____________________________________________



Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth publicado en los años 70's. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Pero con el tiempo su utilización se convirtió en una herramienta para la creación de aplicaciones de todo tipo y no se quedo estancado en un simple lenguaje académico. El nombre de Pascal fue escogido en honor al matemático Blaise Pascal.


Características:
  • El código esta dividido en porciones llamadas funciones o procedimientos.
  • Por lo tanto usa una programación estructurada en la manera de crear sus códigos.
  • Es necesario declarar el tipo de dato de las variables previamente para poder usarlas.
  • es un lenguaje imperativo.

Programa:

1. PROGRAM PARES_E_IMPARES;
2. USES CRT;
3.
4. VAR num:INTEGER;
5. BEGIN
6. ClrScr;
7. WRITE ('Introduzca un numero entero: '); READLN (num);
8. IF num = 0 THEN
9. WRITE ('El numero introducido no es par ni impar, es 0')
10. ELSE IF ((num mod 2 = 0)) THEN
11. WRITE ('El numero introducido es par')
12. ELSE
13. WRITE ('El numero introducido es impar')
14. END.
15. PROGRAM EJER34;
16. USES CRT;
17. VAR num:INTEGER;
18. BEGIN
19. ClrScr;
20. WRITE('Introduzca un numero: ');
21. READLN(num);
22. IF (num mod 2 = 0) THEN
23. WRITE('NUMERO PAR')
24. ELSE
25. WRITE('NUMERO IMPAR');
26. END.


Descripción:

  • 1 en esta línea se le asigna el nombre al programa.
  • 2 la instrucción “USES” es una llamada a una librería del lenguaje, y “CRT” es una librería en especifico del lenguaje.
  • 4 se especifican las variables mediante la instrucción “VAR” y se especifica que es una variable de tipo entera por la instrucción “INTEGER”.
  • 5 la instrucción “BEGIN” abre un bloque dentro del programa.
  • 6 la instrucción “ClrSrc” sirve para limpiar la pantalla.
  • 7 mediante la instrucción “WRITE” se imprime en pantalla lo escrito (‘dentro del paréntesis y de las comillas ’) y mediante la instrucción “READLN” asigna lo escrito a una variable dentro del paréntesis.
  • 8 la instrucción “IF” indica que es una estructura condicional y nos condiciona que si el número escrito es igual “THEN” (Entonces) hará lo siguiente:
  • 9 después de la condición si se cumple imprimirá el texto indicado, es decir, que el número no es impar ni par.
  • 10 de otro modo “ELSE IF” si el modulo del número es igual a cero “THEN” (entonces):
  • 11 si cumple con la condición imprimirá que el número es par.
  • 12 la instrucción “ELSE” indica que si no se cumplen las condiciones anteriores entonces hará:
  • 13 imprimir que es impar, al no haberse cumplido las condiciones anteriores.
  • 14 finaliza el programa.
  • 15 – 26 es la aplicación del programa al ejecutarse.


____________________________________________



C es un lenguaje orientado a la implementación de de sistemas operativos. Es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. Uno de los objetivos de diseño del lenguaje C es que sólo sean necesarias pocas instrucciones en lenguaje maquina para traducir cada elemento del lenguaje, sin que haga falta un soporte intenso en tiempo de ejecución. C se desarrolló originalmente en conjunto con el sistema operativo Unix, por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programación de sistemas, para la que se diseñó originalmente.

Características:
  • Interacción con diversas plataformas de computación.
  • Es muy flexible, permitiendo programar en múltiples estilos.
  • Acceso a memoria de bajo nivel por medio del uso de punteros.
  • Punteros a funciones y variables estáticas, que permite el encapsulado y el polimorfismo.
  • Permite que datos relacionados entre si se combinen y se manipulen como un todo, es decir, todo en una única variable.
  • Soporta la programación orientada a objetos (OO).
  • Permite anidar funciones.
Programa:
  1. #include (stdio.h)
  2. #include (conio.h)
  3. int main()
  4. {
  5. int n, i, p=0, s=1, f;
  6. printf("Hasta que numero deseas ver la serie de Fibonacci: ");
  7. scanf("%d", &n);
  8. printf("%d \n%d", p, s);
  9. for(i=3;i<=n;i++)
  10. {
  11. f=p+s;
  12. p=s;
  13. s=f;
  14. printf("\n%d", f);
  15. }
  16. getche();
  17. }
Descripción:
  • 1 y 2 van al principio del código, y son las librerías de las cuales el lenguaje toma las funciones necesarias para leer y correr el programa. *En estas lineas substituí los paréntesis ( ) por los signos de mayor y menor <>, por que no aparecen las librerías en la publicación*
  • 3 en esta linea se introduce el principio de la función principal "main ( )"
  • 4 y 10 son llaves de apertura de bloques.
  • 5 se especifican las variables de tipo entero "int".
  • 6 mediante la instrucción "printf" se imprimirá en pantalla lo que contenga ("dentro del paréntesis y las comillas").
  • 7 la instrucción "scanf" asignara a una variable al valor que se le de a lo puesto anteriormente, el "%d" indica que la variable asignada debe ser de tipo entero, y el símbolo "&" es el que asigna la variable a algún carácter.
  • 8 imprimirá los valores previamente asignados de las variables "p" y "s", es decir, 0 y 1 respectivamente.
  • 9 se inicia un ciclo de iteracción "for" donde se especifica que la variable entera "i " tiene el valor de 3 o que comenzar el ciclo con el valor de 3, que el ciclo existirá mientras que la variable "i " sea menor o igual a "n" (valor que se nos pregunto anteriormente) y que la variable "i " incrementara en 1 cada ciclo.
  • 11 se asigna una ecuación para darle el valor a una variable llamada "f".
  • 12 y 13 después de haberse efectuado la operación anterior los valores de las variables "p" y "s" cambiaran por el nuevo valor asignado.
  • 13 imprimirá el valor obtenido de la variable "f ".
  • 14 y 16 son llaves de cierre de bloques.
  • 15 mediante la instrucción "getche()" permite visualizar el resultado en pantalla.
____________________________________________


Referencias:

domingo, 17 de octubre de 2010

Reporte #5


Problema Lógico

Cajas de Fruta:
Estás en una isla y hay tres cajas de fruta que se han arrojado delante de ti. Una caja contiene solo manzanas, otra contiene únicamente naranjas y la otra caja contiene las dos, manzanas y naranjas.

Cada caja tiene una etiqueta una dice "manzanas", otra "naranjas", y otra "manzanas y naranjas". Usted sabe que NINGUNA de las cajas se han etiquetado correctamente - que están mal.

Si sólo se puede sacar y ver sólo una de las piezas de fruta de una sola de las cajas, ¿Cómo se puede saber el contenido real de las 3 cajas?


Solución:

Tomamos un pedazo de fruta de la caja de "Manzanas y Naranjas", Si se trata de una Manzana, entonces sabemos que es la caja de "Manzanas", ya que todas las cajas están MAL ETIQUETADAS. Esto significa que la caja MARCADA como "Manzanas" debe ser "Naranjas" y la caja MARCADA como "Naranjas" debe ser "Manzanas y Naranjas".


PROLOG

A continuación pondré el problema lógico anterior programado en Prolog, para ello use el Block de Notas para codificar los enunciados, y después los abría en Prolog para conocer la respuesta.



En esta primera prueba, estoy dando por echos, las 3 primeras lineas, le estoy asignando los valores del argumento de la prueba, y en la ultima linea pregunto, por decir así, si la "cajax" es de "manzanas" en alguna prueba.


Este ya es el programa GNU Prolog y nos arroja el resultado "yes" en respuesta al código anterior, es decir, que SI es cierto o verdadero lo que preguntamos, que en este caso fue que si las "manzanas" pertenecian a la "cajax".


En este segundo ejemplo, las 3 primeras oraciones son las mismas, solo cambiamos la pregunta que si las "naranjas" pertenecen a la "cajac".


Y por lo tanto la respuesta es "no" ya que no pertenece la "cajac" a las "naranjas", en base a los hechos que pusimos. Por eso es una oración falsa.



miércoles, 13 de octubre de 2010

Reporte #4


Lenguajes Funcionales

Los Lenguajes Funcionales son un paradigma de programación declarativa basado en el uso de funciones. Los programas escritos en estos lenguajes se componen solo por definición de funciones, entendiéndose como funciones puramente matemáticas.

Características:

  • No hay asignación de variables.
  • Carece de estructuras secuenciales o iteraciones.
  • Todas las repeticiones de instrucciones se hacen por funciones recursivas.
  • Se programa por medio de funciones.
  • Carece de efectos laterales.
Un ejemplo de este tipo de lenguajes funcionales es el Dr.Scheme.


Dr. Scheme

Este lenguaje, forma parte de los Dialectos de Lisp, y facilita la programación funcional.

Características:
  • Es un dialecto de Lisp.
  • Tiene una sintaxis muy reducida.
  • No necesita reglas de precedencia, ya que, carece de operadores.
  • Una una notación prefija para todas las llamadas a una función.
  • Permite la creación de procedimientos anónimos.
  • Tiene un estándar minimalista, es decir, es fácil de escribir un compilador o interprete fiel a este estándar, que implementar uno en común con sus antecesores de Lisp.

Como Codificar en Dr.Scheme:

  • Primero que nada se debe saber que todo va entre paréntesis.
  • Se define el nombre de la función, a la cual sera llamada cada ves que se desee usar. Mediante la instrucción " (define(NOMBRE_DE_LA_FUNCION... "
  • Se debe de tomar en cuenta que no debe haber espacios entre el nombre de la función.
  • En la parte de arriba de la pantalla se crea la función, es decir, se generaliza para cualquier dato que ingresemos, y ne la parte de abajo, se aplica dicha función conforme a la función ya determinada, por medio de valores de entrada, dándonos enseguida el valor de salida de dicha función.
  • Ver ejemplos.

Ejemplos:

Circunferencia de un Circulo

En este ejemplo, hice una función con la cual se pueda determinar la circunferencia de un circulo, a partir de un radio determinado. Se puede observar en la imagen que a la función llamada "circunferencia" se le asigna el valor de "pi" y al momento de usar la función solo se tiene que dar el valor del radio para el cual se desea saber su circunferencia.



Cuadrado de un Numero

En esta función, se asigna un numero del cual queremos saber el cuadrado de ese numero, solo se llama a la función y se le ingresa el numero del cual saber su cuadrado.



Falso y Verdadero (True & False)

En esta función, se desea saber SI un numero dado es o NO es mayor o igual que un numero determinado en la función, por lo tanto al ingresar un numero queremos saber si es VERDADERO ó FALSO, entonces el resultado de salida sera "#f" para una respuesta "falsa" y "#t" para una respuesta "verdadera".


Números Positivos

En esta función, se desea saber si un numero dado es positivo, y mediante una condición el programa nos arroja si lo es o no lo es.



Comparación de Números

Esta función es muy especifica, ya que se desea saber si un numero es igual o no que otro, entonces solo habrá una sola respuesta correcta, es decir, solo el mismo numero puede ser igual a si mismo y por lo tanto todos los demás numero serán respuestas falsas.


Fuentes de Información