jueves, 3 de mayo de 2012

RECURSIÓN VS REUTILIZACIÓN

LA RECURSIÓN
Es una alternativa diferente para implementar estructuras de repetición (ciclos). Los módulos se hacen llamadas recursivas. Entonces, decimos que un objeto es recursivo si en su definición se nombra a sí mismo.
Las funciones recursivas se componen de:
Caso base: una solución simple para un caso particular
Caso recursivo: una solución que involucra volver a utilizar la función original, con parámetros que se acercan más al caso base. Los pasos que sigue el caso recursivo son los siguientes:

·         El procedimiento se llama a sí mismo
·         El problema se resuelve, resolviendo el mismo problema pero de tamaño menor
·         La manera en la cual el tamaño del problema disminuye asegura que el caso base eventualmente se alcanzará

Beneficios
·         Son más cercanos a la descripción matemática.
· Generalmente más fáciles de analizar
·  Se adaptan mejor a las estructuras de datos recursivas.
· Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y elegantemente simples.
Algunos Ejemplos
Una manera de definir el factorial de un número n>1 es:
Sin embargo una solución más elegante es usar la definición recursiva, y esta es:
!n= n*! (n-1)

Esto se puede resolver fácilmente con una función iterativa, esto es, una función con un ciclo que itere suficientes veces, incrementando un valor y entonces ir almacenando en una variable el resultado de esas multiplicaciones.
Una implementación de esta definición iterativa es:
(1) int i,n;
(2) long double valorAc; 
(4) valorAc=1.0;
(5) std::cout << "Numero entero:";
(6) std::cin>> n;
(7) for(i=1; i<=n; i++)  valorAc = valorAc*i;
(8) std::cout<<"El factorial de "<<n<<" es:"<<valorAc;

Un ejemplo clásico donde se presenta la recursividad es en la definición de un factorial: El factorial de N es la multiplicación de N por el Factorial de N-1.

REUTILIZACIÓN
Cuando se habla de reutilización de código se busca el ahorro de tiempo y esfuerzo y la Ingeniería del Software evoluciona para brindar nuevas y mejores estrategias para la industria del software.
Para reutilizar el código creamos nuevas clases pero, en lugar de partir de cero, partimos de clases, relacionadas con nuestra clase, que han sido ya creadas y depuradas. El truco está en usar las clases sin ensuciar el código existente.
En programación, es el uso de software existente para desarrollar un nuevo software. La reutilización de código ha sido empleada desde los primeros días de la programación. Los programadores siempre han reusado partes de un código, planillas, funciones o procedimientos.
La idea es que parte o todo el código de un programa de computadora escrito una vez, sea o pueda ser usado en otros programas. La reutilización de códigos programados es una técnica común que intenta ahorrar tiempo y energía, reduciendo el trabajo redundante.
Las bibliotecas o librerías de software son un buen ejemplo. Al utilizarlas se está reutilizando código.

El software más fácilmente reutilizable tiene ciertas características: modularidad, bajo acoplamiento, alta cohesión, ocultación de información, etc.
Por ejemplo.
Se está desarrollando un proyecto en el cual se tiene que actualizar las actividades realizadas a un servidor de tu empresa usando Internet. Para hacer esto, vas a escribir o usar mucho código sobre como conectarte a tu servidor, autentificarte como usuario, enviar información y recibir confirmación de recibido, o de mensajes de error, y cerrar la conexión una vez que terminaste.

Una vez que se crearon estos objetos y rutinas, se pueden usar dentro de varios lugares del programa (no se tienen que hacer una y otra vez), o se pueden usar con otros proyectos que requieren funcionalidad similar.
Aunque escribir código para que sea reutilizable puede llevar un esfuerzo de planeación mayor que simplemente sentarse y codificar, a la larga acorta los tiempos de desarrollo y hace más fácil desarrollar aplicaciones confiables.

TABLA COMPARATIVA DE PROGRAMACIÓN ESTRUCTURADA Y PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ESTRUCTURADA
PROGRAMACIÓN ORIENTADA A OBJETOS
Es una forma de escribir programación de computadora de forma clara, para ello utiliza únicamente tres estructuras: secuencial, selectiva e iterativa.
La programación orientada a objetos se basa en la idea de un objeto que es una combinación de variables locales y procedimientos llamados métodos que juntos conforman una entidad de programación.
El programa se puede tener listo para producción normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas o depuración se facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y corregir más fácilmente.
En el desarrollo de sistemas se desea evitar la definición múltiple de datos y funciones común. En la programación orientada a objetos esto se logra mediante la herencia (Evita la definición múltiple de propiedades comunes a muchos objetos).
La programación estructurada carece de polimorfismo.
El polimorfismo (permite la modificación de métodos heredados)


miércoles, 11 de abril de 2012

CONVERSIÓN DE UNIDADES

  1. 1.   ¿Cómo se convierte de decimal a cualquier otra base?
Por medio de divisiones sucesivas por el número que se desea convertir; y el residuo, ya sea cero o 1 es el que se coloca. Ejm:
Convertir el #50 (10) a base 2
50/2 = 25, (Como es exacta la división, se coloca el residuo 0)
Luego 25/2= 12 (Como la división no es exacta, se coloca el residuo 1)
Luego 12/2= 6 (Como es exacta la división, se coloca el residuo 0)
Luego 6/2= 3 (Como es exacta la división, se coloca el residuo 0)
Luego 3/2= 1 (Como la división no es exacta, se coloca el residuo 1)
Además, hay que tener en cuenta el último número 1, no es divisible por 2, por lo tanto hasta allí se realizan las divisiones sucesivas.
Después de tener todas las divisiones, se empieza por el último número (el divisor) en este caso 1, y luego se colocan los residuos o cocientes de abajo hacia arriba, tal y como lo indica la flecha.
Por lo tanto, el número convertido en binario es: 10010
  1. 2.   ¿Cómo se convierte de cualquier otra base a decimal?
Para pasar cualquier número de cualquier base a base 10. Para ello, se tiene que hacer uso del Teorema Fundamental de la Numeración.
Ejemplos:
El número está formado por un solo símbolo repetido tres veces. No obstante, cada uno de esos símbolos tiene un valor diferente, que depende de la posición que ocupa en el número. Así, el primer 1 (empezando por la izquierda) representa un valor de , el segundo de y el tercero de , dando como resultado el valor del número:
  1. 3.   ¿Cómo se convierte decimales (después del punto) en base 10 a cualquier otra base?
Para convertir una fracción decimal a binario, el sistema que se sigue es similar al que utilizamos para los enteros, sin embargo, se usa la multiplicación en lugar de la división, y los enteros se acumulan en lugar de los residuos.
Ejemplo: Convertir (0.6875)10 a base 2
Entero      Fracción             Coeficiente

  0.6875      *2 1 0.3750 a-1       =  1

  0.3750      *2 0 0.75a-2          =  0

  0.75        *2 1 0.5a-3           =  1

  0.5         *2 1 0.0a-4           =  1

(0.6875)10=(0.1011)2
  1. 4.   Como se convierte después del punto decimal a binario (y además en cualquier otra base)
Cuando deseamos hacer la conversión de un número decimal de una parte entera y una parte fraccionaria la conversión se hace por separado y posteriormente se combinan las dos respuestas, es decir, antes del punto se hacen divisiones consecutivas y después del punto multiplicaciones consecutivas.
Ejemplo:
  (41.6875)10 → (101001.1011)2

  1. 5.   Ejercicios
a) Convertir a binario octal y hexadecimal
• 119(10)  
Binario = 1110111
Octal = 167
Hexadecimal = 77
• ABEF2 (16)
Binario = 10101011111011110010
Octal = 25373662
• 0111011(2)
Octal = 73
Hexadecimal= 3B                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
• 545(6)
Decimal = 209
Binario = 11010001
Octal = 321
Hexadecimal = D1
• 345,2 (8)
Decimal = 229,125
Binario = 11100101,001
Hexadecimal = E5,2
b)  Convertir el numero decimal en: Binario, octal y hexadecimal
• 234
Binario = 11101010
Octal = 352
Hexadecimal = EA
• 100
Binario =1100100
Octal = 144
Hexadecimal = 64

• 12.5
Binario = 1100,1000
Octal = 14,4
Hexadecimal = 8
c) Los siguientes binarios convertirlos a la base pedida:
• 10111010101 a base 10 =1493
• 1001011.011 a base 10 y 16
Base 10= 75.375
Base 16= 46
• 1111111000111 a base 8 y 16
Base 8= 17707
Base 16= 1FC7