Archivos en la categoría Diccionario

Algoritmo (III)

Definición (I)

Especificación rigurosa (debe expresarse en forma univoca) de la secuencia de pasos. instrucciones, a realizar sobre un autómata para alcanzar un resultado deseado en un tiempo finito. Esto ultimo supone que el algoritmo empieza y termina, en el caso de los que no son de tiempo finito (ej. Sistemas en tiempo real) deben ser de numero finito dif instrucciones.
En definitiva un algoritmo es una especificación ordenada de la solución a un problema de la vida real. Son el fundamento de la programación de computadores en el paradigma de programación imperativo.
Bajo este paradigma desarrollar un programa significa indicarle al computador, con precisión, sin ambigüedad y en un lenguaje que este pueda entender, todos y cada uno de los pasos que debe ejecutar para lograr el objetivo propuesto.
Previo a la traducción en un lenguaje de programación es necesario poder entender el problema, conocer las pre condiciones, establecer cual debe ser la pos condición, o aquello que debe ser cierto al finalizar la ejecución del algoritmo, en definitiva entender claramente Que es lo que se debe hacer para luego avanzar en Como hacerlo. Aquí debe utilizarse todas las herramientas al alcance de la mano para el desarrollo del algoritmo como paso previo a la solución del problema por el computador.
Existen varias técnicas para representar formalmente un algoritmo, una descriptiva llamada pseudocódigo, y otras gráficas como los diagrama de flujo, diagrama Nassi Sneiderman, Diagramas de Lindsay, diagramas de Jackson, entre otros, en este caso se presentara una notación algorítmica similar a la presentada por Piere Scholl en el texto Esquemas algorítmicos fundamentales:

Secuencia e iteración.
Definición (II)
Secuencia finita de instrucciones, reglas o pasos que describen en forma precisa las operaciones que una computadora debe realizar para llevar a cabo una tarea en tiempo finito [Knuth. 1968].

Descripción de un esquema de comportamiento expresado mediante un repertorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y
denomina léxico[Scholl, 1988].

• Esta formado por reglas, pasos e instrucciones.
• Las reglas especifican operaciones.
• La computadora es el agente ejecutor.
• La secuencia de reglas y la duración de la ejecución son finitas. Características de un algoritmo.
Un algoritmo debe tener al menos las siguientes características:
Ser preciso: esto significa que las operaciones o pasos del algoritmo deben desarrollarse en un orden estricto, ya que el desarrollo de cada paso debe obedecer a un orden lógico.

Ser definido: Ya que en el área de programación, el algoritmo es el paso previo fundamental para desarrollar un programa, es necesario tener en cuenta que el computador solo desarrollará las tareas programadas y con los datos suministrados; es decir, no puede improvisar y tampoco inventará o adivinará el dato que necesite para realizar un proceso. Por eso, el algoritmo debe estar plenamente definido; esto es, que cuantas veces se ejecute, el resultado depende estrictamente de los datos suministrados. Si se ejecuta con un mismo conjunto de datos de entrada, el resultado deberá ser siempre el mismo.
•Ser finito: esta característica implica que el número de pasos de un algoritmo, por grande y complicado que sea el problema que soluciona, debe ser limitado. Todo algoritmo, sin importar el número de pasos que incluya, debe llegar a un final. Para hacer evidente esta característica, en la representación de un algoritmo siempre se incluyen los pasos inicio y fin.
Presentación formal: para que el algoritmo sea entendido por cualquier persona interesada es necesario que se exprese en alguna de las formas comúnmente aceptadas; pues, si se describe de cualquier forma puede no ser muy útil ya que solo lo entenderá quien lo diseñó. Las formas de presentación de algoritmos son: el pseudocódigo, diagrama de flujo y diagramas de Nassi/Schneiderman, entre otras. En esta publicación se propondrá una notación algorítmica y se darán las equivalencias entre la propuesta y las existentesy también con las sentencias de los lenguajes de programación, en particular Pascal y C.
Corrección: el algoritmo debe ser correcto, es decir debe satisfacer la necesidad o solucionar el problema para el cual fue diseñado. Para garantizar que el algoritmo logre el objetivo, es necesario ponerlo a prueba; a esto se le llama verificación o prueba de escritorio.
Eficiencia: hablar de eficiencia o complejidad de un algoritmo es evaluar los recursos de cómputo que requiere para almacenar datos y para ejecutar operaciones frente al beneficio que ofrece. En cuanto menos recursos requiere será más eficiente el algoritmo.
La vida cotidiana está llena de soluciones algorítmicas, algunas de ellas son tan comunes que no se requiere pensar en los pasos que incluye la solución. La mayoría de las actividades que se realizan diariamente están compuestas por tareas más simples que se ejecutan en un orden determinado, lo cual genera un algoritmo. Por ejemplo, son tareas comunes, realizar una llamada telefónica, buscar un número en el directorio telefónico, buscar un anuncio en las páginas amarillas del directorio, preparar café, regar las plantas, poner en funcionamiento un automóvil, cambiar una llanta, entre muchas otras.

continuara….

Algoritmo (I)

Algoritmo (II)

Algoritmo (II)

Cuando se analiza un problema, particularmente de programación, y éste es difícil de describir, el plan de acción recomendable para alcanzar la solución es comenzar trazando un esbozo de las formas más gruesas, para que sirvan de andamio a las demás; aunque algunas de ellas se deban cambiar posteriormente. Después, se agregan los detalles, (obteniéndose el algoritmo refinado), para dotar a estos esqueletos de una estructura más realista.
Durante la tarea de integración final, se descartan aquellas primeras ideas provisionales que ya no encajan en la solución. Por lo que. hasta que no se haya visto el conjunto global es imposible encontrarle sentido a ninguna de las partes por sí solas.
Siempre es mejor explicar un misterio en términos de lo que se conoce, pero cuando esto resulta difícil de hacer, se debe elegir entre seguir tratando de aplicar las antiguas teorías, o de descartarlas y probar con otras nuevas. Siguiendo este análisis, se define como reduccionistas a aquellas personas que prefieren trabajar sobre la base de ideas existentes, y como renovadores a los que les gusta impulsar nuevas hipótesis. En programación debe encontrarse un equilibrio entre ambas posturas.
La programación como toda actividad que requiere creatividad necesita que se produzca
un salto mental, los estudiantes acostumbran a decir “En un momento hice un clic y
encontré la solución, este clic no surge, solo responde a un esquema que se puede
sintetizar en:

1) Larga búsqueda, se requiere esfuerzo en analizar y buscar. . ;
2) Escaso avance aparente: el salto mental sobreviene tras un avance que parece escaso o no muy evidente, pero sobreviene.
3) Acontecimiento desencadenante: El típico proceso de hacer clic comienza con un acontecimiento que lo desencadena.
4) Chasquido cognitivo: De pronto aparece la solución la que sobreviene con rapidez que hace que las piezas encajen con precisión, aun cuando sea necesario todavía ajustar algunos detalles. Pero la idea generadora apareció.
5) Transformación. Este avance nos va modificando nuestro mundo mental.
6) En síntesis, la practica del salto de pensamiento requiere en primer lugar de buscar analogías, en segundo lugar juegan un papel importante las conexiones lógicas, luego la formulación de una pregunta crucial ocupa un papel decisivo. El repertorio de acciones tras el salto del pensamiento se expande para incluir no solo la analogía sino una extrapolación lógica y la formulación de la pregunta adecuada
7) Para encontrar una solución muchas veces se necesita desplazarse bastante por el entorno adecuado. Conforme a esto Thomas Edison declaro que la invención significa 99% de transpiración y 1% de inspiración, en contraposición con Platón que sostenía que las soluciones aparecen por inspiración divina.
8) Muchos problemas son razonables, cabe razonarlos paso a aso para alcanzar la solución. Otros son irrazonables no se prestan a un a reflexión por etapas.

Algoritmo (I)

Algoritmo (III)

Algoritmo

Algoritmo

El termino algoritmo es en honor del matemático árabe del siglo IX, Abu Jafar Mohamed ibn Musa Al Khowárizmí. Refiere conjunto de reglas, ordenadas de forma lógica, finitas y precisas para la solución de un problema, con utilización o no de un computador.

En la actualidad al término se lo vincula fuertemente con la programación, como paso previo a la realización de un programa de computación aunque en realidad es una metodología de resolución presente en muchas de las actividades que se desarrolla a lo largo de la vida.

Desde los primeros años de escuela se trabaja con algoritmos, en especial en el campo de las matemáticas. Los métodos utilizados para sumar, restar, multiplicar y dividir son algoritmos que cumplen perfectamente las características de precisión, finitud, definición y eficiencia.

Para que el algoritmo pueda ser fácilmente traducido a un lenguaje de programación y luego ser ejecutado la especificación debe ser clara, precisa, que pueda ser interpretada con precisión y corresponda a pocas acciones, si esto no ocurre será necesario acudir a desarrollar un mayor nivel de refinamiento. La utilización de refinamientos sucesivos es lo que permite alcanzar la solución modular que se propone. Diseño modular, entonces, es la aplicación del criterio de refinamientos sucesivos, partiendo de un plan de acción, determinando que hacer, por aplicación de los conocimientos estratégicos de resolución pasando luego al como hacerlo con los conocimientos tácticos para la realización del algoritmo.

La programación de algoritmos representa un caso de resolución de problemas que requiere representación mental del mundo real, adaptación para tener una solución computable y criterio para elegir una alternativa eficiente de implementación.

Algoritmo (II)

Algoritmo (III)

¿Que son las direcciones IP?

¿Que son las direcciones IP?

Las direcciones IP (IP es un acrónimo para Internet Protocol) son un número único e irrepetible con el cual se identifica una computadora conectada a una red que corre el protocolo IP.

Una dirección IP (o simplemente IP como a veces se les refiere) es un conjunto de cuatro numeros del 0 al 255 separados por puntos. Por ejemplo:

202.35.123.56 En realidad una dirección IP es una forma más sencilla de comprender números muy grandes, la dirección 200.36.127.40 es una forma más corta de escribir el numero 3357835048. Esto se logra traduciendo el numero en cuatro tripletes.

IP dinámica

Una dirección IP dinámica es una IP asignada mediante un servidor DHCP (Dynamic Host Configuration Protocol) al usuario. La IP que se obtiene tiene una duración máxima determinada. El servidor DHCP provee parámetros de configuración específicos para cada cliente que desee participar en la red IP. Entre estos parámetros se encuentra la dirección IP del cliente.

DHCP apareció como protocolo estándar en octubre de 1993. El estándar RFC 2131 especifica la última definición de DHCP (marzo de 1997). DHCP sustituye al protocolo BOOTP, que es más antiguo. Debido a la compatibilidad retroactiva de DHCP, muy pocas redes continúan usando BOOTP puro.

Las IPs dinámicas son las que actualmente ofrecen la mayoría de operadores. Éstas suelen cambiar cada vez que el usuario reconecta por cualquier causa.

Ventajas

  • Reduce los costos de operación a los proveedores de servicios internet (ISP).

Desventajas

  • Obliga a depender de servicios que redirigen un host a una IP.
  • Es ilocalizable; en unas horas pueden haber varios cambios de IP.

Asignación de direcciones IP

Dependiendo de la implementación concreta, el servidor DHCP tiene tres métodos para asignar las direcciones IP:

  • manualmente, cuando el servidor tiene a su disposición una tabla que empareja direcciones MAC con direcciones IP, creada manualmente por el administrador de la red. Sólo clientes con una dirección MAC válida recibirán una dirección IP del servidor.
  • automáticamente, donde el servidor DHCP asigna permanentemente una dirección IP libre, tomada de un rango prefijado por el administrador, a cualquier cliente que solicite una.
  • dinámicamente, el único método que permite la reutilización de direcciones IP. El administrador de la red asigna un rango de direcciones IP para el DHCP y cada ordenador cliente de la LAN tiene su software de comunicación TCP/IP configurado para solicitar una dirección IP del servidor DHCP cuando su tarjeta de interfaz de red se inicie. El proceso es transparente para el usuario y tiene un periodo de validez limitado.

IP fija

Una dirección IP fija es una IP la cual es asignada por el usuario, o bien dada por el proveedor ISP en la primera conexión.

Las IPs fijas actualmente en el mercado de acceso a Internet tienen un coste adicional mensual. Estas IPs son asignadas por el usuario después de haber recibido la información del proveedor o bien asignadas por el proveedor en el momento de la primera conexión.

Esto permite al usuario montar servidores web, correo, FTP, etc. y dirigir un nombre de dominio a esta IP sin tener que mantener actualizado el servidor DNS cada vez que cambie la IP como ocurre con las IPs dinámicas.

Ventajas

  • Permite tener servicios dirigidos directamente a la IP.

Desventajas

  • Son más vulnerables al ataque, puesto que el usuario no puede conseguir otra IP.
  • Es más caro para los ISPs puesto que esa IP puede no estar usándose las 24 horas del día.

ICANN es la organización encargada de distribuir las direcciones IP, dicha organización divide las direcciones en tres categorías: clase A, clase B, y clase C. La clase A se reserva para los gobiernos del mundo (aunque en el pasado se ha otorgado a empresas grandes), las direcciones clase B para medianas empresas, y las de clase C para el resto.

Fuentes: Wikipedia, uservers, alegsa.

Protocolo IPv6

IPv6

IPv6 es la versión 6 del Protocolo de Internet, un estándar del nivel de red encargado de dirigir y encaminar los paquetes a través de una red.
Diseñado por Steve Deering y Craig Mudge, IPv6 es la sucesión necesaria al estándar IPv4, cuyo límite en el número de direcciones de red admisibles está empezando a restringir el crecimiento de Internet y su uso, especialmente en China, India, y otros países asiáticos densamente poblados. Pero el nuevo estándar mejorará el servicio globalmente; por ejemplo, proporcionando a futuras celdas telefónicas y dispositivos móviles con sus direcciones propias y permanentes. Al día de hoy se calcula que las dos terceras partes de las direcciones que ofrece IPv4 ya están asignadas.
IPv4 soporta 4.294.967.296 (2 a la 32) direcciones de red diferentes, un número inadecuado para dar una dirección a cada persona del planeta, y mucho menos para cada coche, teléfono, PDA o tostadora; mientras que IPv6 soporta 340.282.366.920.938.463.463.374.607.431.768.211.456 (2128 ó 340 sextillones) direcciones, cerca de 665.000 trillones por metro cuadrado.

Adoptado por el Internet Engineering Task Force en 1994 (cuando era llamado “IP Next Generation” o IPng), IPv6 cuenta con un pequeño porcentaje de las direcciones públicas de Internet, que todavía están dominadas por IPv4. La adopción de IPv6 ha sido frenada por la traducción de direcciones de red NAT, que alivia parcialmente el problema de la falta de direcciones IP. Pero NAT hace difícil o imposible el uso de algunas aplicaciones P2P, como son la voz sobre IP (VoIP) y juegos multiusuario. Además, NAT rompe con la idea originaria de Internet donde todos pueden conectarse con todos.

Actualmente, el gran catalizador de IPv6 es la capacidad de ofrecer nuevos servicios, como la movilidad, Calidad de Servicio (QoS), privacidad, etc. El gobierno de los Estados Unidos ha ordenado el despliegue de IPv6 por todas sus agencias federales para el año 2008.
Se espera que IPv4 se siga soportando hasta por lo menos el 2011, dado que hay muchos dispositivos heredados que no se migrarán a IPv6 nunca y que seguirán siendo utilizados por mucho tiempo.
IPv6 es la segunda versión del Protocolo de Internet que se ha adoptado para uso general. También hubo un IPv5, pero no fue un sucesor de IPv4; mejor dicho, fue un protocolo experimental orientado al flujo de streaming que intentaba soportar voz, video y audio.
El cambio más drástico de IPv4 a IPv6 es la longitud de las direcciones de red. Las direcciones IPv6, definidas en el RFC 2373 y RFC 2374, son de 128 bits; esto corresponde a 32 dígitos hexadecimales, que se utilizan normalmente para escribir las direcciones IPv6

Como son las direcciones IPv6

Las direcciones IPv6, de 128 bits de longitud, se escriben como ocho grupos de cuatro dígitos hexadecimales

Cita:

Ejemplo 1
2001:0db8:85a3:08d3:1319:8a2e:0370:7334

Si un grupo de cuatro dígitos es nulo (es decir, toma el valor “0000″ ) , puede ser comprimido. Por ejemplo

Cita:

2001:0db8:85a3:0000:1319:8a2e:0370:7344 es lo mismo que 2001:0db8:85a3::1319:8a2e:0370:7344

Siguiendo esta regla, si más de dos grupos consecutivos son nulos, pueden comprimirse como “::”. Si la dirección tiene más

de una serie de grupos nulos consecutivos la compresión solo en uno de ellos. Así,

Cita:

2001:0DB8:0000:0000:0000:0000:1428:57ab
2001:0DB8:0000:0000:0000::1428:57ab
2001:0DB8:0:0:0:0:1428:57ab
2001:0DB8:0::0:1428:57ab
2001:0DB8::1428:57ab

son todas válidas y significan lo mismo, pero

Cita:

2001::25de::cade

Es inválido porque no queda claro cuantos grupos nulos hay en cada lado.

IPv4 no es un protocolo malo, todo lo contrario, el problema que tuvo es que cuando se creo, no tuvieron en cuenta el
crecimiento exponencial de Internet al nivel mundial, tengamos en cuenta que se lanzo IPv4 en la década de los 80. IPv6 es la evolución necesaria.

IPv6 y windows vista

Microsoft reconoce que existen “ciertas incompatibilidades” con Windows Vista e IPv6, entre
los distintos problemas esta que los mensajes de error ICMP (usados, entre otros, para hacer los famosos “pings”) no pueden ser leídos por las aplicaciones bajo Vista.

Fuente 1
Fuente 2
Fuente 3
Fuente 4

Descarga directa

Este es un Post didáctico en el cual estoy inaugurando una nueva sección que se llama Diccionario.

Descarga Directa

La descarga directa es un método de descarga de archivos en el que el usuario no tiene que esperar colas y cuya velocidad de transferencia es grande, a diferencia del P2P en el se producen esperas (a veces de varias horas) y la velocidad de transferencia depende del ancho de banda de subida del emisor y del ancho de banda de bajada del receptor. Otra característica es la de dividir los archivos en segmentos, para mayor facilidad de la persona que sube el archivo, aparte de permitir una mayor velocidad de descarga bajando dos o más archivos a la vez; los programas más comunes para partir estos archivos son WinRAR, Hacha, Hacha Pro, Leñador y File Splitter&Joiner. Todos estos programas permiten dividir un archivo en partes más pequeñas y poder unirlas posteriormente recuperando el archivo original, para poder colgar en servidores gratuitos, por ejemplo.

Continua leyendo »