jueves, 9 de septiembre de 2010

Presentación #2





Definición:
El ordenamiento rápido (Quicksort en inglés) es un algoritmo basado en la técnica de divide y vencerás, no solo nos sirve para organizar una lista de datos desorganizados, si no también, para optimizar el tiempo que se ocupa en realizar esta labor, ya que permite ordenar "n" elementos en un tiempo proporcional de O(n log n), lo cual es muy eficiente.

Funcionamiento:
Primero tenemos que elegir un elemento al azar al que llamaremos pivote.
Después de elegir el pivote analizaremos y empezaremos acomodarlos de tal manera que los elementos menores al pivote van del lado izquierdo y los mayores del derecho :

elemento < pivote ="">
elemento > pivote = Derecha
De esta forma obtendremos la posición del pivote elegido y a partir de ahí ordenaremos los demás elementos que del pivote se dividen en 2 sublistas las cual de igual manera elegimos un pivote y lo ordenamos como la primera ves y así sucesivamente se irán dividiendo en 2 sublistas pero cada ves menores lo haremos siempre que tenga mas de un elemento y después ya nos queda ordenada.






Mejor y Peor Caso:
En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño. En este caso, el orden de complejidad del algoritmo es O(n·log n).
En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del arreglo, y el arreglo que le pasamos está ordenado, siempre va a generar a su izquierda un arreglo vacío, lo que es ineficiente.
Pseudocódigo:

funcion quicksort(arreglo)

variables lista, menor, mayor, elemento

if longitud(arreglo) ≤ 1

return arreglo

else

//seleccionar un valor pivote en el arreglo

for each elemento en arreglo

if elemento < pivote entonces añadir “elemento” a menor

else añadir “elemento” a mayor

return concadenar_lista(quicksort(menor), pivot, quicksort(mayor))






domingo, 29 de agosto de 2010

Reporte #3

Lenguajes Script


Introducción:

Los Lenguajes Script, como ya sabemos, son aquellos que son analizados por un interprete, el cual analiza el programa y hace correcciones sobre la marcha. A continuación voy a poner 4 codificaciones (3 de lenguajes script y 1 de un lenguaje de compilación) de programas que hagan la misma función, el primero lo haré en el lenguaje "C" ya que es el que la mayoría de nosotros lo conoce y de ahí poder diferenciar los demás lenguajes, en sus comandos y funciones, ya que los otros 3 códigos serán el mismo, pero en diferentes lenguajes. Y asi nos daremos cuenta que es lo que cambia y en que se parecen. Y seguido del código de comparación pondré otro de un grado de dificultad mayor, o en otras palabras, otro código mas funcional.
______________________________












Código:
Este programa esta compilado en lenguaje C. El programa solo imprimirá un mensaje en pantalla.

  1. #include
  2. #include
  3. main ()
  4. {
  5. char NOMBRE [30];
  6. printf("Dame tu nombre: ");
  7. scanf("%s", &NOMBRE);
  8. printf("\n\n¡Hola!,%s, Como estas?\n", NOMBRE);
  9. getche();
  10. }

Comentarios:
  • En las lineas 1 y 2 se representan como librerías.
  • En la linea 5 se asignan las variables.
  • En la linea 6 se pide un dato de entrada de tipo carácter.
  • En la linea 7 se asigna la variable a un dato.
  • En la linea 8 solo imprime el resultado.
  • Las 9 y 10 son de cierre del programa y para ver la impresión.


Visualización


______________________________











Código:
Este código ó Script puede ser interpretado por medio de HTML y ser visualizado en algún navegador de Internet. Por su versatilidad es fácil de codificarlo sin necesidad de tener un programa para interpretar el código, simplemente con un procesador de textos como bloc de notas o word, es fácil, solo que hay que poner la extensión deseada al archivo para darle la propiedad que se necesita en este caso para verlo en un navegador es la extensión ".html"

  1. (HTML)
  2. (HEAD)
  3. (TITLE)Lenguajes de Programacion(/TITLE)
  4. (/HEAD)
  5. (BODY)
  6. (SCRIPT LANGUAGE="JavaScript")
  7. (!--
  8. document.write(("(H1)Hola Ricky, este es un ejemplo de como hacer un comentario :) (/H1)"))
  9. //--)
  10. (/SCRIPT)
  11. (/BODY)
  12. (/HTML)

*En este caso substituí los signos de mayor y menor que "<>" por paréntesis "()", ya que no aparece en el blog de esa manera y los dobles paren tesis "(())" son uno normal. De todos modos en la imagen de abajo nos podemos apoyar para ver bien el código.


Comentarios:
  • 1 y 12 apertura y cierre del código.
  • 2, 3 y 4 titulo y encabezado de la pag.
  • 5 al 11 cuerpo del programa.
  • 6 con esta secuencia se indica la apertura de un script, es una linea que se tiene que poner siempre, es como poner las librerías en C. La linea 10 es el cierre de el script.
  • 7 y 9 sirven para que los navegadores antiguos que no soportan las etiquetas Script, no muestren el código fuente en la pagina.
  • 8 es la manera en que se imprimen los comentarios o palabras, es como un "printf" en C.

Visualización


Otro Ejemplo:Este es un ejemplo de como obtener los números de Fibonacci en Javascript, por medio de un navegador de Internet.

  1. (html)
  2. (head)
  3. (title)Serie Fibonacci(/title)
  4. (/head)
  5. (body bgcolor=blue text=white)
  6. (script language=javascript)

  7. var v1;
  8. var v2;
  9. var v3;
  10. v1=0;
  11. v2=1;

  12. document.write(("(h4)"));
  13. var m=prompt("Cuantos numeros de la Serie Fibonacci deseas que se desplieguen?", 0);
  14. document.write((v1 + "(br)");
  15. document.write((v2 + "(br)"));

  16. v3=v2+v1;

  17. document.write((v3 + "(br)"));
  18. for((var i=3; i<=m-1; i++) )
  19. {
  20. v1=v2;
  21. v2=v3;
  22. v3=v2+v1;

  23. document.write((v3 + "(br)"));
  24. }
  25. (/script)
  26. (/body)
  27. (/html)
Comentarios:

  • 1 y 34 apertura y cierre del código en HTML.
  • 2 y 4 apertura y cierre del encabezado de la ventana.
  • 3 El nombre del titulo en la ventana o pestaña.
  • 5 es una etiqueta, para darle formato al color de la pantalla en el navegador.
  • 6 se abre una una etiqueta, y damos a entender que se codificara en Javascript.
  • 8, 9 y 10 se especifican los nombres de las variables del código.
  • 12 y 13 se le asignan valores a las variables.
  • 15 se le asigna un tamaño de letra a la que aparecerá en la pantalla.
  • 16 se crea un cuadro en el navegador, que nos preguntara el limite de la serie Fibonacci.
  • 17, 18, 22 y 30 se le asigna una fuente a los números que se verán en pantalla.
  • 20 se asigna una función de suma entre v2 y v3 para obtener la variable v3.
  • 23 se crea un for, es decir una función iterativa, donde se especifica que la variable "i" empezara desde el valor de 3, y se incrementara en uno cada ciclo y terminara el ciclo hasta que la variable "i" sea igualada por "m" que fue el numero limite de la serie que se nos pregunto al principio.
  • 26, 27 y 28 es el ciclo que sigue la función iterativa y con los nuevos valores de las variables que van cambiando en cada ciclo se obtienen nuevos números, y así sucesivamente hasta que la condición del ciclo no sea cumplida.
  • 32 se cierra la etiqueta del script del lenguaje.
  • 33 se cierra el cuerpo del texto en colores visibles en la pantalla.
_________________________
















Código:
En este programa si es necesario tener un programa para interpretarlo, (en la bibliográfia de esta publicación, en la parte de abajo se encuentra el link para descargarla gratis) también hay que mencionar que este lenguaje solo puede ser interpretado por medio de UNIX, pero el interprete que les ofrezco para descargar emula al interprete para poderlo a adaptar a Windows, no significa que este interprete sea un traductor de un sistema a otro, NO se puede copiar y pegar, solo para creear.

  1. #!/bin/sh
  2. nombre=Ricky; mensaje=Hola; echo $mensaje $nombre "como" "estas?"; chmod [u+x]
  3. Hola Ricky como estas?

Comentarios: Solo observamos 3 lineas por que así es el modo de codificación de este lenguaje pero en relación a los otros lenguajes, cada punto y coma (;) podría expresarse como una linea.
  • 1 esta es la instrucción necesaria antes de codificar el programa, vendría siendo como expresar una librería en C.
  • 2 esta linea es todo el cuerpo del programa. NO puede haber espacios al momento de declarar variables, la instruccion "echo" sive para imprimir comentarios en la pantalla, y estos, estar encerrados entre comillas (" ") para poderlos imprimir; el signo de "$" es el comando con el que se expresan los valores de las variables, es como poner el signo de porcentaje (%) en C. Después la instruccion "chmod [u+x]" es el permiso para poder interpretar el codigo, sin embargo en esta modalidad no es necesario ya que como es un emulador de UNIX en Windows no es necesario.
  • 3 esta es la linea en la que se imprime el resultado del código.



Visualización


Otro Ejemplo: Este código nos imprimirá en pantalla la serie Fibonacci.

  1. #!/bin/sh
  2. fibo ( )
  3. {
  4. num=$1
  5. if [ $num –eq 0 ]; then
  6. print 0
  7. return
  8. fi
  9. if [ $num –eq 1 ]; then
  10. print 0, 1
  11. return
  12. fi
  13. print –n 0, 1
  14. first=0
  15. second=1
  16. counter=2
  17. while [ $counter –lt $num ]; do
  18. curr_total=$ ( ( first + second ) )
  19. print –n ”, $curr_total”
  20. first=$second
  21. second=$curr_total
  22. counter=$ ( ( counter + 1 ) )
  23. done
  24. print
  25. return
  26. }
  27. echo “Hasta que numero deseas que se despliegue la serie: “
  28. read x
  29. echo “La serie Fibonacci es: “
  30. fibo $x

Comentarios:
  • 1 esta es la instrucción necesaria antes de codificar el programa, para que pueda ser leído el código por el sistema.
  • 2 y 3 se nombra la función y se abre en el programa.
  • 4 se nombra una variable y se le asigna el valor con el signo de "$".
  • 6, 7 y 8 se inicia una condición, que nos dice que si el valor de la variable "num" es igual a cero, entonces imprimirá un cero.
  • 9 y 14 son cierres de condiciones.
  • 11, 12 y 13 se inicia otra condición, donde nos dice que si el valor de la variable "num" es igual a "1", entonces imprimirá un numero "1" después de haber impreso un "0" antes.
  • 16 imprime lo condicionado anteriormente.
  • 18 y 19 se asignan valores a 2 variables nuevas.
  • 21 se inicia un contador con un valor de 2.
  • 22 se abre un ciclo al contador y hará...
  • 24 la suma de la variable "first" + "second".
  • 25 imprimirá la suma anterior.
  • 27 y 28 cambiara los valores de estas variables en cada ciclo, para obtener nuevos números en la serie.
  • 30 el contador se ira incrementando en 1 cada ciclo.
  • 34 cierra la función iterativa "fibo"
  • 36 se pregunta hasta que numero se deseea desplegar la serie.
  • 37 asigna el valor dado a una variable.
  • 38 y 39 imprime la serie.

_________________________










Codigo: Este lenguaje es parecido al usado en el lenguaje C++ pero, mucho mas facil, se puede correr bajando el interprete o también tiene aplicaciones en paginas web por medio de scripts de python en HTML, osea que también es visualizable en un navegador de internet.

  1. #! /usr/bin/env python3.2
  2. nombre="Ricky"
  3. saludo="Hola!"
  4. print (saludo)
  5. Hola!
  6. print (nombre)
  7. Ricky
  8. print ("Este es un ejemplo :)")
  9. Este es un ejemplo :)

Comentarios:
  • 1 esta linea es el comando necesario para poderlo ejecutar en Windows, esta es diferente para cada sistema operativo diferente.
  • 2 y 3 son asignaciones de variables de tipo caracter. En este caso se tienen que poner entre comillas por que son letras.
  • 4 y 6 son los comandos para mandar a imprimir lo deseado.
  • 5 y 7 son las impresiones de las variables.
  • 8 es otra manera mas sencilla de imprimir cualquier frase en la pantalla solo encerrandolos primero entre paréntesis y despues entrecomillas. ("")
  • 9 impresion simple.


Visualizacion



Otro Ejemplo: Este ejemplo nos despliega la serie de Fibonacci en lenguaje Python.
  1. #! /usr/bin/env python3.2
  2. def fib ( n ):
  3. if n == 0:
  4. return 0
  5. elif n == 1:
  6. return 1
  7. else:
  8. return fib (n – 1) + fib (n – 2)
Comentarios:

  • 1 Es la expresión necesaria para correr el programa y que pueda ser leído por el sistema.
  • 2 se define la función con el nombre de "fib" con el parámetro "n".
  • 3 se abre la condición, donde nos dice que si el numero "n" es igual a cero...
  • 4 nos imprimirá el valor de cero.
  • 5 y de otra manera si el numero "n" es igual a 1...
  • 6 nos imprimirá el valor de 1.
  • 7 y 8 después de haber cumplido esto el programa nos imprimirá el resultado de la función.

_________________________


Bibliografia
Javascript --- Tutorial | Video

Shell --- Tutorial | Interprete

Python --- Interprete | Tutorial

martes, 17 de agosto de 2010

Reporte #2






Introducción:

Este lenguaje de programación, es un entorno de desarrollo de software basado para la programación en general, y hace énfasis en programación visual. Es en pocas palabras, la versión nueva y mejorada, muy mejorada de otros lenguajes que ya conocemos como el Pascal.

Características:

  • Herramienta de desarrollo más rápida y productiva para la web y desarrollo de Bases de Datos. No hay que olvidar que pronto, gracias al comercio electrónico, la gestión irá ligada a la web.
  • Velocidad de ejecución, compilación y enlace cercanas al C++, y por lo tanto mucho mejores que otros lenguajes existentes.
  • Programación Orientada a Objetos verdadera, permite encapsulamiento, herencia y polimorfismo.
  • Componente integrados dentro del lenguaje, lo que reduce considerablemente la utilización de librerías y controles externos, por lo tanto menos problemas para nosotros y el usuario.
  • Tratamiento de errores mediante excepciones, lo que impide el típico error de programa que nos echa fuera.

  • Soporte avanzado de Bases de Datos mediante BDE (Borland Database Engine), ADO (ActiveX Database Objects), tecnología de Microsoft de acceso a Bases de Datos e Internet, y finalmente InterBase Express, acceso nativo a InterBase, para desarrollo Cliente/Servidor off-line.
  • Modelo de datos y relaciones de forma visual.
  • Asistentes y componentes para Internet/Intranet.
  • Componentes compatibles con Microsoft Office.
  • Fácil integración de informes y gráficos de gestión.
  • Facilidad en la distribución de aplicaciones con el InstallShield Express.
Relación con otros lenguajes:

Pascal(es): En todos lo tipos de lenguajes derivados del Pascal, encontramos que son un antecesor del lenguaje Delphi, ya que este es una versión nueva y mejorada de este. Por lo tanto este lenguaje comparte muchas características de estos lenguajes antecesores.

Eiffel: Este lenguaje comparte varias características de sintaxis con el lenguaje de Pascal por lo tanto como Pascal es antecesor de Delphi, pues podemos decir que estas características sintácticas, también son parecidas entre si.






Este link es una pagina que encontré para descargar el manual de Delphi, hay dos maneras de descargarlo:

1. Para la versión completa tienes que mandar un SMS y te mandan un código de descarga (Cuesta $16.00).

2. La otra es una versión mas básica, y no te cobran solo necesitas registrarte.

3. Y por ultimo este es un link a un vídeo de youtube, de este se desglosan varios que podemos ver para entenderle.




Esta imagen es maso-menos un ejemplo de la pantalla del compilador del lenguaje, tal ves se parezca mucho al del lenguaje Pascal, pues hay que recordar que el lenguaje Delphi es una versión nueva de este mismo mejorada. en esta pagina lo puedes descargar gratuita pero solo es una versión de prueba de 30 días.


Este es un código que encontré en linea para este lenguaje, su función es la de bloquear el teclado:


Uses
SysUtils;
function PortIn(IOAddr : Word) :Byte;
begin
asm
mov dx,IOAddr
in al,dx
mov result,al
end;
end;
procedure PortOut(IOAddr : Word; Data : Byte);
begin
asm
mov dx,IOAddr
mov al,Data
out dx,al
end;
end;
procedure LockKeyboard(Lock:Boolean);
begin
if Lock then
PortOut($21,PortIn($21) or 2) else
PortOut($21,PortIn($21) and 253);
end;








"Para cualquier duda que tengan de este post o del lenguaje, déjame tu comentario y buscare la mejor manera de ayudarte" Attw. Ricky Tovar