sábado, 11 de junio de 2011

Programas en C++

PRIMER EJERCICIO
// progama ingresar una extension en acres y la convierta en metros
# include<conio.h>
# include<stdio.h>
main ()
{
      float ext=0;
      float extension=0;
    
     printf("ingrese la extension del terrero en acres (recuerde que un acre aquivale a 40.47 areas)  \n");
     scanf("%f",&ext);
    
     extension=ext*(40.47*100);
    
     printf("la extension del terrero en metros cuadrados es %f" ,extension);
     getch();
}



SEGUNDO EJERCICIO
//programa que calcula el total a pagar en una gasolinera

#include <conio.h>
#include <stdio.h>

main ()
{
     float galones=0;
     float precio=0;
     float total=0;
    
     printf("ingrese el total de galones que adquirio el cliente \n");
     scanf ("%f",&galones);
    
     printf("ingrese el precio del galon \n");
     scanf ("%f",&precio);
    
     total= galones*precio;
     printf("el total a pagar es de %f",total);
    
     getch ();
}
        

TERCER EJERCICIO
//programa de km por hora

#include <conio.h>
#include <stdio.h>

main ()
{
     float km=0;
     float hora=0;
     float kmhora=0;
    
     printf("ingrese la distancia recorrida por el participante \n");
     scanf ("%f",&km);
    
     printf("ingrese el tiempo en horas que tardo el participante \n");
     scanf ("%f",&hora);
    
     kmhora= km/hora;
     printf("el participante tuvo un promedio de km/horas de %f",kmhora);
    
     getch ();
}
 

CUARTO EJERCICIO
// programa de vuelto

#include <conio.h>
#include <stdio.h>

main ()
{
     float costo=0;
     float pago=0;
     float vuelto=0;
    
     printf ("ingrese el precio del producto \n");
     scanf ("%f",&costo);
    
     printf ("ingrese la cantidad pagada por el cliente \n");
     scanf ("%f",&pago);
    
     vuelto=pago-costo;
     printf("el vuelto a dar es de %f",vuelto);
    
     getch ();
}
    
    
   

sábado, 4 de junio de 2011

LENGUAJE UNIFICADO DE MODELADO (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.

Es importante resaltar que UML es un "lenguaje de modelado" para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo.
Se puede aplicar en el desarrollo de software entregando gran variedad de formas para dar soporte a una metodología de desarrollo de software (tal como el Proceso Unificado Racional o RUP), pero no especifica en sí mismo qué metodología o proceso usar.
UML no puede compararse con la programación estructurada, pues UML significa Lenguaje Unificado de Modelado, no es programación, solo se diagrama la realidad de una utilización en un requerimiento. Mientras que, programación estructurada, es una forma de programar como lo es la orientación a objetos, sin embargo, la programación orientada a objetos viene siendo un complemento perfecto de UML, pero no por eso se toma UML sólo para lenguajes orientados a objetos.
UML cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las entidades representadas.
Diagramas

Jerarquía de los diagramas UML 2.0, mostrados como un diagrama de clases
En UML 2.0 hay 13 tipos diferentes de diagramas. Para comprenderlos de manera concreta, a veces es útil categorizarlos jerárquicamente.
Los Diagramas de Estructura enfatizan en los elementos que deben existir en el sistema modelado:
·        Diagrama de clases
·        Diagrama de componentes
·        Diagrama de objetos
·        Diagrama de estructura compuesta (UML 2.0)
·        Diagrama de despliegue
·        Diagrama de paquetes
Los Diagramas de Comportamiento enfatizan en lo que debe suceder en el sistema modelado:
·        Diagrama de actividades
·        Diagrama de casos de uso
·        Diagrama de estados
Los Diagramas de Interacción son un subtipo de diagramas de comportamiento, que enfatiza sobre el flujo de control y de datos entre los elementos del sistema modelado:
·        Diagrama de secuencia
·        Diagrama de comunicación, que es una versión simplificada del Diagrama de colaboración (UML 1.x)
·        Diagrama de tiempos (UML 2.0)
Estandarización de UML
Desde el año 2005. UML es un estándar aprobado por la ISO como ISO/IEC 19501:2005 Information technology — Open Distributed Processing — Unified Modeling Language (UML) Version 1.4.2.

Críticas a UML: A pesar de su status de estándar ampliamente reconocido y utilizado, UML siempre ha sido muy criticado por su carencia de una semántica precisa, lo que ha dado lugar a que la interpretación de un modelo UML no pueda ser objetiva. Otro problema de UML es que no se presta con facilidad al diseño de sistemas distribuidos. En tales sistemas cobran importancia factores como transmisión, serialización, persistencia, etc. UML no cuenta con maneras de describir tales factores. No se puede, por ejemplo, usar UML para señalar que un objeto es persistente o remoto, o que existe en un servidor que corre continuamente y que es compartido entre varias instancias de ejecución del sistema analizado. Sin embargo, UML sí acepta la creación de nuestros propios componentes para este tipo de modelado.


Historia
 Antes de UML 1.x: Después de que la Rational Software Corporation contratara a James Rumbaugh de General Electric en 1994, la compañíá se convirtió en la fuente de los dos esquemas de modelado orientado a objetos más populares de la época: el OMT (Object-modeling technique) de Rumbaugh, que era mejor para análisis orientado a objetos, y el Método Booch de Grady Booch, que era mejor para el diseño orientado a objetos. Poco después se les unió Ivar Jacobson, el creador del método de ingenieríá de software orientado a objetos. Jacobson se unió a Rational en 1995, después de que su compañía Objectory AB fuera comprada por Rational. Los tres metodologistas eran conocidos como los Tres Amigos, porque se sabia de sus constantes argumentos sobre las prácticas metodológicas.
En 1996 Rational concluyó que la abundancia de lenguajes de modelado estaba alentando la adopción de la tecnología de objetos, y para orientarse hacia un método unificado, encargaron a los Tres Amigos que desarrollaran un Lenguaje Unificado de Modelado abierto. Se consultó con representantes de compañías competidoras en el área de la tecnología de objetos durante la OOPSLA '96; eligieron cajas para representar clases en lugar de la notación de Booch que utilizaba simbolos de nubes.
Bajo la dirección técnica de los Tres Amigos fue organizado un consorcio internacional llamado UML Partners en 1996 para completar las especificaciones del Lenguaje Unificado de Modelado (UML), y para proponerlo como una respuesta al OMG RFP. El borrador de la especificación UML 1.0 de UML Partners fue propuesto a la OMG en enero de 1997. Durante el mismo mes la UML Partners formó una Fuerza de Tarea Semántica, encabezada por Cris Kobryn y administrada por Ed Eykholt, para finalizar las semánticas de la especificación y para integrarla con otros esfuerzos de estandarización. El resultado de este trabajo, el UML 1.1, fue presentado ante la OMG en agosto de 1997 y adoptado por la OMG en noviembre de 1997.
UML 1.x: Como notación de modelado, la influencia de la OMT domina UML (por ejemplo el uso de rectángulos para clases y objetos). Aunque se quitó la notación de "nubes" de Booch, si se adoptó la capacidad de Booch para especificar detalles de diseño en los niveles inferiores. La notación de Casos de Uso del Objectory y la notación de componentes de Booch fueron integrados al resto de la notación, pero la integración semántica era relativamente débil en UML 1.1, y no se arregló realmente hasta la revisión mayor de UML 2.0.
Conceptos de muchos otros métodos OO fueron integrados superficialmente en UML con el propósito de hacerlo compatible con todos los métodos OO. Además el grupo tomó en cuenta muchos otros métodos de la época, con el objetivo de asegurar amplia cobertura en el dominio de los sistemas en tiempo real. Como resultado, UML es útil en una variedad de problemas de ingeniería, desde procesos sencillos y aplicaciones de un sólo usuario a sistemas concurrentes y distribuidos.

viernes, 27 de mayo de 2011

Algoritmos

¿Qué tipos de algoritmos existen?
Existen dos tipos y son llamados así por su naturaleza:
ü      Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
ü            Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.

Existen distintos tipos de algoritmos de razonamiento, Algoritmos estáticos, es decir, algoritmos que funcionan siempre igual, independientemente del tipo de problema tratado. Por ejemplo, los sistemas basados en el método de resolución de algoritmos probabilístico, es decir, algoritmos que no utilizan valores de verdad (booleanos) sino continuos. Por ejemplo los sistemas basados en lógica difusa. Algoritmos adaptativos, es decir, algoritmos con cierta capacidad de aprendizaje. Por ejemplo, los sistemas basados en redes neuronales. Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso-, definiendo así una secuencia de estados “computacionales” por cada entrada valida (la entrada son los datos que se le suministran al algoritmo antes de comenzar)
 Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos)  de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploración acotada. La transacción de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre  cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.


¿En qué otras ciencias se apoyan la algoritmia para producir soluciones ingeniosas?
ü      Ciencias de la Computación
ü            Matemáticas
ü      Ciencias Sociales
ü      Ciencias Políticas


¿Cómo podemos determinar la complejidad de un algoritmo?
Es posible realizar la complejidad de un algoritmo solo en base a un conjunto reducido de sentencias, aquellas que caracterizan que el algoritmo sea lento o rápido en el sentido que nos interesa. También es posible distinguir entre los tiempos de ejecución de las diferentes operaciones elementales lo cual es necesario a veces por las características especificas del ordenador (por ejemplo, se podría considerar  que las operaciones + y / presentan complejidad diferentes debido a su implementación) sin embargo, en este texto tendremos en cuenta, a menos que se indique lo contrario, todas las operaciones elementales del lenguaje y supondremos que sus tiempo de ejecución son totalmente iguales.


lunes, 9 de mayo de 2011

Laboratorio No. 03


LABORATORIO
1) ¿Qué clase de pariente mío es el hijo de la hermana de mi madre?




2)   La persona que más quiero en este mundo es, precisamente, la suegra de la mujer de mi hermano. ¿Quién es esa persona?

Una fiesta familiar reunió a 1 abuelo, 1 abuela, 2 padres, 2 madres, 4 hijos, 3 nietos, 1 hermano, 2 hermanas, 2 hijos varones, 2 hijas mujeres, 1 suegro, 1 suegra y 1 nuera. ¿Cuántas personas se reunieron en realidad?
3)     
4)     Tenemos aquí tres enunciados falsos. ¿Será capaz usted de descubrir cuáles?
 4.1   2+2=4
 4.2   3x6=17                     Falsa
4.3      8/4=2
4.4     13-6=5                      Falsa
4.5    5+4=9
4.6   La expresión           Falsa

5)     Soy capicúa, del 2 al 10 solo hay un divisor mío, tengo cuatro cifras, pero algunos me ven como si fuera un 9. ¿Qué número soy?

 ü      1001







6)     Responda convenientemente a cada una de las preguntas propuestas.
            6.1) Como meto un elefante en un refrigerador



          •   Abro
          • Meto al elefante
          •  Cierro la puerta del refrigerador
              6.2) como meto una jirafa en un refrigerador



ü     Abro la puerta del refrigerador
ü     Sacó al elefante
ü     Meto a la jirafa
ü     Cierro la puerta

               6.3) el rey león convoco a una reunión a todos los animales del bosque. Todos llegaron, menos uno. ¿Quién fue y porque no llegó?

ü      La jirafa porque estaba dentro del refrigerador

               6.4) Un hombre quiere cruzar un río lleno de cocodrilos. Como le hace. Explique su respuesta.

ü      Lo puede hacer nadando porque todos los cocodrilos del río están en la reunión a la que convoco el rey León.

                      


jueves, 28 de abril de 2011

Tema de Exposición (Heuristica)

Heurística
Se denomina heurística a la capacidad de un sistema para realizar de forma inmediata innovaciones positivas para sus fines. La capacidad heurística es un rasgo característico de los humanos, desde cuyo punto de vista puede describirse como el arte y la ciencia del descubrimiento y de la invención o de resolver problemas mediante la creatividad y el pensamiento lateral o pensamiento divergente. La palabra heurística procede del griego εὑρίσκειν, significa «hallar, inventar» (etimología que comparte con Eureka) en la matemática, la heurística existe desde la Grecia antigua.

Sin embargo, la formalización y el alto grado de rigor en matemática le han restado importancia al estudio del descubrimiento, considerándolo más bien de interés para la psicología. En psicología, la heurística se relaciona con la creatividad y se ha propuesto que sea aquella regla sencilla y eficiente para orientar la toma de decisiones y para explicar en un plano práctico cómo las personas llegan a un juicio o solucionan un problema. Usualmente una heurística opera cuando un problema es complejo o el problema trae información incompleta.

En general, una heurística puede considerarse como un atajo a los procesos mentales activos y, por lo tanto, es una medida que ahorra o conserva recursos mentales. Las heurísticas funcionan efectivamente en la mayoría de las circunstancias, sin embargo, también pueden conducir a errores sistemáticos en la toma de decisiones o el desarrollo de juicios. La ideación de soluciones heurísticas frecuentemente arranca de un razonamiento por analogía.

Un ejemplo de un atajo mental es el uso de un estereotipo. Cuando se juzga a un individuo basándose en la descripción estereotípica de un grupo al cual pertenece, el uso del estereotipo puede resultar en un error, ya que el individuo puede ser poco representativo del estereotipo.

COMO SE APLICA
Como disciplina científica, la heurística es aplicable a cualquier ciencia e incluye la elaboración de medios auxiliares, principios, reglas, estrategias y programas que faciliten la búsqueda de vías de solución a problemas; o sea, para resolver tareas de cualquier tipo para las que no se cuente con un procedimiento algorítmico de solución. Los Procedimientos Heurísticos como Método científico pueden dividirse en principios, reglas y estrategias

Principios Heurísticos: constituyen sugerencias para encontrar (directamente) la idea de solución; posibilita determinar, por tanto, a la vez, los medios y la vía de solución. Dentro de estos principios se destacan la analogía y la reducción.

Reglas Heurísticas: actúan como impulsos generales dentro del proceso de búsqueda y ayudan a encontrar, especialmente, los medios para resolver los problemas.

Las Reglas Heurísticas que más se emplean son:
Separar lo dado de lo buscado.
Confeccionar figuras de análisis: esquemas, tablas, mapas, etc.
Representar magnitudes dadas y buscadas con variables.
Determinar si se tienen fórmulas adecuadas.
Utilizar números (estructuras más simples) en lugar de datos.
Reformular el problema.
Estrategias Heurísticas: se comportan como recursos organizativos del proceso de resolución, que contribuyen especialmente a determinar la vía de solución del problema abordado.
Existen dos estrategias: El trabajo hacia adelante: se parte de lo dado para realizar las reflexiones que han de conducir a la solución del problema.
El trabajo hacia atrás: se examina primeramente lo que se busca y, apoyándose de los conocimientos que se tienen, se analizan posibles resultados intermedios de lo que se puede deducir lo buscado, hasta llegar a los dados






Los métodos de búsqueda heurística disponen de alguna información sobre la proximidad de cada estado a un estado objetivo, lo que permite explorar en primer lugar los caminos más prometedores.
_ Son características de los métodos heurísticos:
_ No garantizan que se encuentre una solución, aunque existan soluciones.
_ Si encuentran una solución, no se asegura que ésta tenga las mejoresas propiedades (que sea de longitud mínima o de coste óptimo).
_ En algunas ocasiones (que, en general, no se podrán determinar a priori), encontrarán una solución (aceptablemente buena) en un tiempo razonable.

Actividad 3. Problema de Guarini (1512). En el siguiente tablero 3x3 intercambiar la posición de los caballos blancos y negros en el menor número de movimientos.
Actividad 3: Se trata de “girar” los caballos alrededor del tablero en la misma dirección. Como en cada fase se mueven los 4 caballos, hacen falta 16 movimientos.





                     

lunes, 25 de abril de 2011

Tarea No. 2

 TAREA 2

1) COMPRUEBE LAS SIGUIENTES TAUTOLOGÍAS FUNDAMENTALES:
ü  Ley de no contradicción     ¬(p ʌ ¬p)
p
¬p
(p ʌ ¬p)
¬(p ʌ ¬p)
0
1
0
1
1
0
0
1

ü  Modus ponendo ponens     ((p q) ʌ p) q
p
q
(p q)
(p q) ʌ p
((p q) ʌ p) q
0
0
0
0
1
0
1
0
0
1
1
0
1
0
1
1
1
0
1
1


ü  Modus tollendo tollens     ((p q) ʌ ¬q) ¬p
p
q
(p q)
¬q
((p q) ʌ ¬q)
¬p
((p q) ʌ ¬q) ¬p
0
0
1
1
1
1
1
0
1
1
0
0
1
1
1
0
0
1
0
0
1
1
1
1
0
0
0
1


ü  Silogismo Disyuntivo     ((p v q) ʌ ¬p) q
p
q
(p v q)
¬p
((p v q) ʌ ¬p)
((p v q) ʌ ¬p) q
0
0
0
1
0
1
0
1
1
1
1
1
1
0
1
0
0
1
1
1
1
0
0
1



2) DEMUESTRE LAS SIGUIENTES EQUIVALENCIAS
ü  Doble negación     p ¬(¬p)
p
(¬p)
¬(¬p)
0
1
0
1
0
1



ü  Implicación y disyunción     (p q) (¬p v q)
p
q
(p q)
¬p
¬p v q
0
0
1
1
1
0
1
1
1
1
1
0
0
0
0
1
1
1
0
1


ü  Contrapositiva    (p q) (¬q ¬p)
p
q
(p q)
¬q
¬p
(¬q ¬p)
0
0
1
1
1
1
0
1
1
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1


ü  Negación de la Implicación 
p
q
(p q)
¬(p q)
¬q
(p ʌ ¬q)
0
0
1
0
1
0
0
1
1
0
0
0
1
0
0
1
1
1
1
1
1
0
0
0


ü  Primera Ley de Morgan     ¬(p ʌ q) (¬p) v (¬q)
p
q
(p ʌ q)
¬(p ʌ q)
(¬p)
(¬q)
(¬p) v (¬q)
0
0
0
1
1
1
1
0
1
0
1
1
0
1
1
0
0
1
0
1
1
1
1
1
0
0
0
0


ü   Segunda Ley de Morgan     ¬(p v q) (¬p) ʌ (¬q)
p
q
(p v q)
¬(p v q)
(¬p)
(¬q)
(¬p) ʌ (¬q)
0
0
0
1
1
1
1
0
1
1
0
1
0
0
1
0
1
0
0
1
0
1
1
1
0
0
0
0






3) INDIQUE CUÁLES DE LAS SIGUIENTES AFIRMACIONES SON FALSAS O VERDADERAS Y PARA AMBAS RESPUESTAS PROVEA DE UN CONTRAEJEMPLO DE SU AFIRMACIÓN.

ü  Dos fórmulas lógicas son equivalentes si tienen los mismos valores de verdad para todos los posibles valores de verdad de sus componentes atómicos.      (VERDADERO)

 Ejemplo: (p → ¬q) v (¬p v r)  ↔  (¬p v ¬q v r)
p
q
r
¬q
¬p
(p ¬q)
(¬p v r)
(p ¬q) v (¬p v r)
¬p v ¬q
¬p v ¬q v r
0
0
0
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
0
1
0
0
1
1
1
1
1
1
0
1
1
0
1
1
1
1
1
1
1
0
0
1
0
1
0
1
1
1
1
0
1
1
0
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
0
0
0
1
1
0
1

                           
                        
ü  Dos proposiciones P y Q son lógicamente equivalentes si es una tautología, es decir, si las tablas de verdad de P y Q son iguales     (VERDADERO)    



ü  Si dos fórmulas lógicas son equivalentes entonces la fórmula que se obtiene al operarlas con la bicondiconal es una tautología.     (VERDADERO)
  
Ejemplo: (p ʌ q) (q ʌ p)

p
q
p ʌ q
q ʌ p
(p ʌ q) (q ʌ p)
0
0
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
1
1
1