Ads 468x60px

Perfil

lunes, 18 de febrero de 2013

EStructura de Datos (Pilas)



1.- Recorrido

Definición:

Ya que las pilas son LIFO(Last in - First Out) el Recorrido se hace sacando el ultimo dato que se inserto hasta que no encuentre ningún otro.

Detalle:

Apuntador toma el Top, después ve si la condición cumple para efectuar un Ciclo mientras Apuntador sea diferente de Nulo, si cumple lo que hace es que despliega el contenido de la Pila(Pila[Apuntador]), después Apuntador se le resta 1. Este proceso se repite hasta que Apuntador sea igual Nulo(Cuando llega a este punto la Pila ya fue Recorrida).

Algoritmo:

Recorrido(Pila, Top)

Apuntador ←- Top

Repetir mientras Apuntador ≠ Nulo

Imprimir Pila[Apuntador]

Apuntador ←- Apuntador - 1

Fin del ciclo

Salir

Diagrama:



Push

Definición:

Push es simplemente el método por el cual va agregando un Dato nuevo a la Pila tomando en cuenta la Capacidad Máxima (Max) de almacenar un dato.

Detalle:

Compara en un principio el Top con Max, si la condición no cumple es imposible insertar mas datos a la Pila, de otra forma lo que hace es Incrementar el valor de Top, y copia el valor de Elemento en Pila[Top]. De esta forma el dato ya esta insertado.

Algoritmo:

Push(Pila, Top, Max, Elemento)

Si Top ≠ Max

Top ←- Top + 1

Pila[Top] ←- Elemento

Si no:

Imprimir “Pila Llena”

Salir

Diagrama:



Pop

Definición:

Pop es simplemente el método por el cual va sacando el ultimo Dato de la Pila, basándose únicamente en el Top.

Detalle:

Compara para determinar si la pila esta vacio, de otra forma lo que hace es Imprimir el valor de Pila[Top] (Que es el dato que esta apunto de Eliminar) y enseguida a Top le resta 1, de esta forma el dato ya no existe.

Algoritmo:

Pop(Pila, Top)

Si Top ≠ Nulo

Imprimir Pila[Top]

Top ←- Top - 1

Si no:

Imprimir “Pila Vacía”

Salir

Diagrama:



Búsqueda

Definición:

Este método usa el recorrido para encontrar Elemento y desplegar un mensaje si la búsqueda es exitosa.

Detalle:

El algoritmo compara para determinar si la Pila tiene algún dato, si no simplemente desplegara Lista Vacía y saldrá. De otra manera hará un Recorrido y comparara con cada uno de los Datos de la Pila hasta encontrar el dato que desea buscar. Si lo encuentra desplegara “El Dato fue encontrado” de otra manera “El Dato no se encontró”.

Algoritmo:

Busqueda(Pila, Top, Elemento)

Si Top ≠ Nulo

Apuntador ←- Top

Repetir mientras Apuntador ≠ Nulo

Si Pila[Apuntador] = Elemento

Imprimir “El Dato fue encontrado” y Salir

Apuntador ←- Apuntador - 1

Fin del ciclo

Imprimir “El Dato no se encontró”

Si no:

Imprimir “Pila Vacía”

Salir

Diagrama:



Eliminacion

Definición:

Este método busca un Dato dentro de la pila y lo elimina.

Detalle:

El algoritmo compara para determinar si la Pila tiene algún dato, si no simplemente desplegara Pila Vacía y saldrá. De otra manera hará un Recorrido y comparara con cada uno de los Datos de la Pila hasta encontrar el dato que desea eliminar, mientras hace esto copia cada uno de los datos a un arreglo Temp para cuando encuentre el Dato regresar esos valores a la Pila. Si lo encuentra desplegara “Eliminado el Dato” y le restara 1 a Top, de otra manera “El Dato no encontrado”.

Algoritmo:

Borrar(Pila, Temp, Top, Elemento)

Si Top ≠ Nulo

Apuntador1 ←- Top

Repetir mientras Apuntador1 ≠ Nulo

Si Pila[Apuntador1] = Elemento

Imprimir “Eliminando el Dato…”

Repetir mientras Apuntador2 ≠ Nulo

Pila[Apuntador1]=Temp[Apuntador2]

Fin del ciclo

Top ←- Top - 1 y Salir

Si No:

Temp[Apuntador2] ←- Pila[Apuntador1]

Apuntador1 ←- Apuntador1 - 1

Apuntador2 ←- Apuntador2 + 1

Fin del ciclo

Imprimir “Dato no encontrado”

Si no:

Imprimir “Pila Vacía”

Salir

Diagrama:


Consejo rápido: Una visión rápida de Querious (MySQL Manager)

En punta vídeo rápido de hoy, vamos a tener un rápido (no patrocinado) visión general de un gestor de base de datos MySQL para Mac que me encontré ayer, llamado Querious . Como menciono en el screencast, me gusta especialmente esta, porque simplemente funciona - sin ser demasiado complicado o abrumador en la forma en que phpMyAdmin puede ser para algunos.


Algunos ejercicios de programacion para principiantes


Ejercicios Programacion

1.- Conocidos cada uno de los 150 números enteros de un conjunto, desarrolle un algoritmo para determinar:
a.) Cuantos son menores que -5
b.) Cuantos son mayores que 30
c.) Cuantos están comprendidos entre -25 y 35
d.) Cual es el mayor de todos
e.) Cual es el menor de todos
f.) Cual es el promedio de todos ellos
g.) ¿Hay mas positivos que negativos en el conjunto?
h.) Calcular el valor de: (numero – 1)2
i.) Cuantos números son pares y cuantos son impares negativos.

2.- Una empresa arrendadora de automóviles, necesita automatizar la facturación de manera que cuando cada cliente que entregue el auto alquilado se de entrada a la siguiente información: Nombre del Cliente, Número de Kilómetros que marcaba el odómetro cuando este recibió el auto y cuando lo entregó. Elabore un algoritmo que permita:

a.)    Emitir la factura inmediatamente a cada cliente que entregue un auto, indicando el monto a pagar de acuerdo a la siguiente tarifa:
Bs. 6500                                                                Si recorrió hasta un máximo de 560Km.
Bs. 6500 + 2000 Bs./cada Km. Adicional                        Si recorrió entre 560 y 720 Km (inclusive) Bs. 6500 + (2000 Bs,/cada Km entre 560 y 720)+           Si recorrió mas de 720 Km.
                               1200 Bs./cada Km adicional)

b.)    Obtener el total recaudado en Bs.
c.)    Obtener el número de clientes que pagó la tarifa mínima
d.)    Obtener el cliente que pago la mayor factura
e.)    Obtener el porcentaje de clientes que pagaron entre 10350 y 18450 Bs.

3.- El conductor de un vehículo llega a una Estación de Servicio a solicitar que le sea llenado el tanque de combustible. En la estación se despacha gasolina de tres tipos de octanaje “A”, “B” y “C”; de los que se conoce su precio en Bs./litro. Una vez que el conductor solicite uno de los tipos y conocida la capacidad del tanque en litros, elabore un algoritmo que calcule el monto a pagar por el conductor, en Bs.

4.-  En vista de la poca asistencia de público, un cine ha decidido ofrecer determinadas ofertas para llamar la atención, sobre todo en algunos días de la semana. El cine tiene dos salas disponible (A y B) y en cada una ofrece una película distinta, con precios de entrada diferente, pero conocidos.

En la Sala A, se ofrece un 5% de descuento: para las mujeres, sólo los días miércoles y jueves, mientras que para los hombres se da solo el día viernes.
En la Sala B, se ofrece un 12% de descuento, el día martes, sólo para mujeres.

A cada persona que llega a la taquilla se le solicita: a que sala desea entrar y se toma nota de su sexo. Considerando que al menos una persona vaya a cine, diseñe un algoritmo que permita atender a todas las personas que lleguen un día conocido, a solicitar entrada al cine y determine:
a) El precio definitivo que debe pagar cada persona
b) La sala más visitada, ese día, una vez finalizado el ingreso de personas
c) El porcentaje de mujeres que ingreso en cada sala


5.- En un laboratorio de Física, se lleva a cabo un experimento en donde un dispositivo lanza burbujas (esferas) de aire dentro de un campo eléctrico. Para cada burbuja, el dispositivo muestra el valor de su radio en mm., y la velocidad que ésta adquiere en cm/s. Una burbuja se considera válida si cumple lo indicado en cualquiera de los casos, especificados en la siguiente tabla

Caso
Volumen (mm3)
Velocidad (cm/s)
A
Hasta 0.015
Entre 0.1 y 0.3  (ambos inclusive)
B
Más de 0.015
Entre 0.05 y 0.095 (ambos inclusive)

El experimento se considera comprobado si se cumple:
  • Se lacen al menos 45 burbujas, considerando que por motivos de calibración del dispositivo, no se deben tomar en cuenta las primeras cinco
  • El 78% de las burbujas, como mínimo, sean validas.

Diseñe un algoritmo que permita, tomar como datos de entrada los valores que suministra el dispositivo y verifique si un experimento puede considerar o no comprobado, tomando en cuenta que el dispositivo se encuentre averiado y no haya sido posible el lanzamiento de alguna esfera.

Nota: Volumen de una esfera: V=4/3 * Pi * r3

Los porqués y cuandos para patrones de diseño en PHP


Hay un montón de artículos que explican qué son los patrones de diseño, y cómo ponerlas en práctica, la web no tiene todavía otro de esos artículos! En su lugar, en este artículo, vamos a discutir más el cuando ypor qué , en lugar de la que y cómo .

Voy a presentar diferentes situaciones y casos de uso para los patrones, y también proporcionará definiciones cortas para ayudar a aquellos de ustedes que no están tan familiarizados con estos patrones específicos. Vamos a empezar.

Utilice un patrón de la fábrica
El patrón de la fábrica se inventó para ayudar a los programadores organizar la información relativa a la creación de objetos. Objetos veces tienen muchos parámetros del constructor, en otras ocasiones, se debe llenarse con información predeterminada inmediatamente después de su creación. Estos objetos deben ser creados en las fábricas, manteniendo toda la información relativa a su creación e inicialización contenido en un solo lugar.

Cuando se utilice un patrón de fábrica cuando se encuentre escribiendo código para reunir la información necesaria para crear objetos.
Por qué: Las fábricas ayudan a contener la lógica de la creación de objetos en un solo lugar.También pueden romper dependencias para facilitar el acoplamiento suelto y la inyección de dependencia para permitir un mejor análisis.

El patrón de puerta de enlace

Este patrón define un canal de comunicación entre una solución de persistencia y la lógica de negocio.Para aplicaciones más sencillas, se puede recuperar o recrear objetos completos por sí mismo, sino la creación de objetos es la responsabilidad de las fábricas en la mayoría de aplicaciones complejas.Gateways simplemente recuperar y conservar los datos en bruto.

Cuándo: Cuando usted necesita para recuperar o conservar la información.
Por qué: Ofrece una interfaz sencilla pública para las operaciones de persistencia complicados. También encapsula conocimiento persistencia y la lógica de negocios desacopla de la lógica de persistencia.
De hecho, el patrón de puerta de enlace es sólo una implementación particular de otro patrón de diseño que vamos a discutir en breve: el patrón del adaptador.

Vaya con el Proxy

Hay momentos en los que no pueden (o no quieren) exponer el conocimiento de la capa de persistencia a las clases de su negocio. El patrón de poder es una buena manera de engañar a sus clases de negocios en el pensamiento de que están utilizando objetos ya existentes.
Cuándo: Usted tiene que recuperar información de una capa de persistencia o una fuente externa, pero no quiere que su lógica de negocio para saber esto.
Por qué: Para ofrecer un enfoque no invasivo para la creación de objetos detrás de las escenas. También se abre la posibilidad de recuperar estos objetos sobre la marcha, perezosamente, y de diferentes fuentes.
La representación efectiva implementa la misma interfaz que un objeto real e imita su funcionalidad. La lógica de negocio simplemente se utiliza como si fuera un objeto real, pero de hecho, el proxy crea el objeto si no existe uno.

Conecte un adaptador
El patrón adaptador simplemente se crea una correspondencia entre la lógica de negocio y algo más. Ya hemos visto un patrón en acción: el patrón de puerta de enlace.
Cuándo: Es necesario crear una conexión con un módulo de pre-existente y cambiar potencialmente, una biblioteca o API.
Por qué: Para que la lógica empresarial a confiar sólo en los métodos públicos del adaptador ofrece, y permite el cambio del otro lado del adaptador fácilmente.
Si cualquiera de los modelos anteriores no se ajuste a su situación, entonces usted podría usar ...

El patrón de puente

Este es un patrón muy complicado. Yo personalmente no me gusta porque por lo general es más fácil tomar un enfoque diferente. Pero para aquellos casos especiales, cuando otras soluciones fallen, se puede considerar el patrón de puente.
Cuándo: El patrón adaptador no es suficiente, y que cambiar de clase en ambos lados de la tubería.
Por qué: Para ofrecer una mayor flexibilidad a costa de una complejidad considerable.

O acepte una visitantes

Si su problema de extender la funcionalidad es diferente - por ejemplo, usted tiene un complejo árbol-como la estructura de los objetos, y desea agregar funcionalidad a muchos nodos a la vez - una iteración simple no es posible, pero un visitante podría ser una solución viable. La desventaja, sin embargo, es que un patrón de aplicación visitante requiere una modificación a la vieja clase si no se ha diseñado para aceptar un visitante.
Cuándo: Un decorador no es adecuada y cierta complejidad adicional es aceptable.
Por qué: Para que organizó y enfoque para definir la funcionalidad de varios objetos, pero a costa de una mayor complejidad.