jueves, 7 de junio de 2012

Programación Estructurada





programación Estructurada

La programación estructurada ofrece  beneficio que es el de facilidad para leer y el cual está compuesto de segmentos bien definidos tiende a ser simple, rápido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del hecho que, aunque el programa tenga una extensión significativa, en documentación  tiende siempre a estar al día, esto no suele suceder con los métodos convencionales de programación.


La programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.
Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en su acción están físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en circunstancias muy especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea.


Programación modular
Se presenta históricamente como una evolución de la programación para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver. Es un método de resolución de problemas que consiste en resolver de forma independiente los subproblemas que se obtienen de una descomposición del problema general.
Está basada en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
ventajas de programación modular
  • Fomenta la reutilización y extensión del código.
  • Permite crear sistemas más complejos.
  • Relacionar el sistema al mundo real.
  • Facilita la creación de programas visuales.
  • Construcción de prototipos
  • Agiliza el desarrollo de software
  • Facilita el trabajo en equipo
  • Facilita el mantenimiento del software

Estructura básicas de control

 Estructura secuencial 

Normalmente un programa, o una parte del mismo, consiste en una secuencia de instrucciones que se tienen que ejecutar una detrás de otra para realizar una operación. Esto se denomina una estructura secuencial y se compone de un grupo de acciones que se han de realizar todas y en el orden en que están escritas, sin posibilidad de omitir ninguna de ellas.

Por ejemplo, calcular la suma y el producto de dos números:
El problema es muy simple, lo primero que se tiene que hacer es leer dos números A y B. Después, sumarlos, luego multiplicarlos y por último, mostrar los resultados en la pantalla de la computadora. Estas acciones se deben ejecutar en este orden y secuencialmente.

Y el programa en pseudocódigo sería:

Código:

Inicio
      Leer A y B
      SUMA = A  B
      PRODUCTO = A * B
      Mostrar SUMA, PRODUCTO
Fin


Se ve que la estrucutra secuencial expresa perfectamente la solución al problema.




 Estructura condicional 

Cuando se esta construyendo un programa, es normal tener que seleccionar un conjunto de instrucciones entre varias posibles, dependiendo de que se cumpla o no una determinada condición.

Esto se denomina estructura condicional que presenta las variantes:

      Estructura condicional simple
En este tipo, si la condición se cumple, se ejecutan un conjunto de acciones, pero si no se cumple no se realiza ninguna accion.

El pseudocódigo de esta estructura es el siguiente:

Código:

Si condición
  Entonces
      Acción-1
      Acción-2
      ..........
      Acción-n
Fin_si

Por ejemplo, el problema a resolver consiste en leer por teclado un número, que se denominará NUM, y si es mayor que 20 visualizarlo en la pantalla.

Código:

Inicio
    Leer un número (NUM)
    Si NUM > 20
        Entonces
            Mostrar NUM
    Fin_si
Fin

En el ejemplo se señala que si, y sólo si, el valor NUM es mayor que 20 se debe mostrar este valor; pero si no se cumple la condición no se hace nada.

- Estructura condicional doble
En este tipo se ejecutará un bloque de instrucciones u otro, dependiendo de que la condición sea cierta o falsa.

El presudocódigo de esta variante es:

Código:

Si condición
  Entonces
      Acción-1
      Acción-2
      .....
      Acción-n
  Si no
      Acción-A
      Acción-B
      .....
      Acción-Z
Fin_si

Por ejemplo: seleccionar y visualizar el mayor de dos números leídos.

Código:

Inicio
  Leer A y B
  Si A > B
      Entonces
        Mostrar "El Mayor es:" A
      Si no
        Mostrar "El Mayor es:" B
  Fin_si
Fin

El problema es sencillo: primero se leen los dos números A y B. Si A es mayor que B entonces se visualiza en la pantalla el texto "El Mayor es:" y a continuación el valor de A. Y en caso contrario, es decir, si A no es mayor que B, se visualiza el texto "El Mayor es:" seguido del valor de B. El programa así diseñado es ilustrativo, pero no es totalmente correcto debido a que ambos números pueden ser iguales, y no contempla esta opción, que se comentará posteriormente.

- Estructura condicional múltiple
En este caso, dependiendo del valor que tome la variable númerica que controla la condición, se ejecutará una de las n acciones posibles definidas en la estructura.

El pseudocódigo de esta variante es el siguiente:

Código:

Según condición
  = 1 Acción-1
  = 2 Acción-2
  .....
  = n Acción-n
Fin_según

Por ejemplo: leer desde el teclado un valor numérico, denominado NUM-CARTA, asociado a una carta de una baraga (del 1 al 12), y mostrar en pantalla el nombre de la carta asociado a ese número.

Código:

Inicio
  Leer NUM-CARTA
  Según NUM-CARTA
      = 1 Mostrar "As"
      = 2 Mostrar "Dos"
      ..........
      = 12 Mostrar "Rey"
  Fin_según
Fin

En primer lugar, se lee un número de la carta y, a continuación, dependiendo del valor de la variable NUM-CARTA se mostrará el nombre de la carta. Las estructuras condicionales múltiples derivan de las estructuras condicionales dobles de tipo anidado, es decir, cuando la parte "si no" de una estructura condicional doble se transforma en otra estructura condicional.

Así, el ejemplo de seleccionar y visualizar el mayor de dos números dados debería quedar programado, teniendo en cuenta que pueden ser iguales, como sigue:

Código:

Inicio
  Leer A y B
  Si A > B
      Entonces
        Mostrar "El Mayor es:" A
  Si no
  Si A < B
      Entonces
        Mostrar "El Mayor es:" B
  Si no
        Mostrar "A y B son iguales"
  Fin_si
Fin

El programa lee dos números A y B, si A es mayor que B muestra A como el mayor, si no pregunta si A es menor que B y en caso afirmativo muestra B como el mayor. Pero si no se cumplen ninguna de las dos condiciones quiere decir que ambos números son iguales.

Transformado en una "estructura condicional múltiple" sería de la forma:

Código:

Inicio
  Leer A y B
  Según Comparación (A,B)
      = 1 Mostrar "El Mayor es:" A
      =-1 Mostrar "El Mayor es:" B
      = 0 Mostrar "A y B son iguales"
  Fin_según
Fin

En este caso, se compara A con B mediante la función Comparación (A,B) que devuelve el valor 1,-1,0 según sea el resultado de comparar A con B. Si el resultado de la comparación es igual a 1 quiere decir que A > B, si es -1 indica que A < B y si es 0, señala que A y B son iguales.
 Estructura repetitiva 

En un programa es normal tener que ejecutar repetidamente un conjunto de instrucciones, dependiendo de que sea cierta o no una condición. La condición se conoce como "condición de salida" y la instrucción se denomina "repetitiva" o "de bucle".

Existen tres versiones:
- Estructura tipo Mientras.
- Estructura tipo Hasta.
- Estructura tipo Para.

           Estructura tipo Mientras
En este tipo, el bloque de instrucciones (acciones) se repetirá mientras que la condición sea cierta. La condición se evalua al comienzo de la estructura. Esto implica que el bloque de instrucciones puede no ejecutarse ninguna vez si la condición de salida es inicialmente falsa.

El pseudocódigo de esta estructura es de la forma:

Código:

Mientras Condición
  Acción-1
  Acción-2
  ..........
  Acción-n
Fin_mientras

Por ejemplo: una empresa tienen grabados los datos personales de sus empleados. se desea imprimir el nombre de aquellos empleados mayores de 55 años.

Código:

Inicio
  Leer Empleado
  Mientras Haya-Empleado
      Si Empleado-Edad > 55
        Entonces
            Mostrar Empleado
      Fin_si
      Leer Empleado
  Fin_mientras
Fin

En primer lugar, se leen los datos de un empleado, a continuación se evalúa la condición de salida (Haya-Empleado), preguntando si existen empleados. Si la condición es cierta, porque realmente se han leído los datos de un empleado, entonces se comprueba, con una estructura condicional simple, si la edad del empleado es mayor de 55 años, si lo es se muestra el nombre del empleado. Después se vuelve a leer otro empleado y se retorna a la evaluación de la condición salida del bucle, cuya finalización se realiza cuando no existan más empleado. Observese que si en la primer lectura no hay empleados, el bucle Mientras no se realizará nunca, ya que se comprueba la condición al principio de la estructura Mientras y, sólo si es cierta, se entra en ello.

          Estructura tipo Hasta
En este tipo, el bloque de acciones se repetirá hasta que la condición sea cierta. Dicha condición se evalúa al final de la estructura. Esto implica que el bloque de instrucciones se ejecutará al menos una vez, aunque la condición de salida ya sea cierta al entrar en dicha estructura.
La diferencia fundamental entre ambas estructuras repetitivas es que, en el primer tipo (tipo Mientras), las acciones del bucle no se realizan nunca si la condición de salida del mismo es inicialmente falsa.
Por el contrario, las acciones del bucle, en el segundo tipo (tipo Hasta), se realizarán al menos una vez, ya que la condición se evalúa después de haber sido realizadas dichas acciones.

El pseudocódigo para esta estructura es:

Código:

Repetir
  Acción-1
  Acción-2
  ......
  Acción-n
Hasta Condición de Fin_repetir

Por ejemplo: "Visualizar la tabla de multiplicar del número 4"

Código:

Inicio
  CONT = 0
  Repetir
      CONT = CONT + 1
      PROD = CONT * 4
      Mostrar PROD
  Hasta CONT = 10
Fin 

Para resolver este problema se necesitan dos variables: CONT, que es un contador que almacena cuatos números se han visualizado (es la varibale que contiene la condición de salida del bucle); y PROD, que almacena el valor del número a mostrar y que corresponde a los números de la tabla.

        Estructura tipo Para
Si el número de repeticiones del bucle (iteraciones) es fijo o se conoce de antemano, se puede utilizar una estructura tipo "Para", en lugar de una estructura tipo "Mientras". La estructura "Para" indica que las acciones del bucle se realizan un número específico de veces y que la estructura controla automáticamente el número de repeticiones.
Para dicho control hay que definir dentro de la estructura el nombre de una variable, su valor inicial, su valor final y un incremento fijo.
Ello quiere decir que inicialmente el bloque de acciones se ejecuta con el valor inicial de la variable, incrementándose este valor en cada iteración con el valor del incremento y finalizan las iteraciones cuando el valor de la variable sobrepasa su valor final. La evaluación de la condición de salida se realiza al comienzo de cada iteración.

El pesudocódigo de este tipo de estructura es el siguiente:

Código:

Para VAR desde V1 hasta V2 incremento V3
  Acción-1
  Acción-2
  .....
  Acción-n
Fin_para

Por ejemplo: "Construir un programa en pseudocódigo estructurado que calcule la suma de los números comprendidos entre 1 y 100, ambos inclusive"

Código:

Inicio
  SUMA = 0
  Para NUM desde 1 hasta 100
      SUMA = SUMA + NUM
  Fin_para
  Mostrar SUMA
Fin

En el ejemplo se utiliza la variable SUMA para almacenar la suma de los 100 primeros números y la variable NUM para controlar el bucle. Éste empieza en 1 y llega hasta 100 con incremento 1, y cuando NUM sobrepasa el valor 100, indica que ya se han sumado todos los números, con lo que el bucle tipo "Para" termina y en SUMA se tendrá el valor buscado.
La diferencia fundamental entre los tipos "Mientras" y "Para" radica en que en la estructura "Mientras" hay que realizar, mediante instrucciones, la inicialización de la variable que controla el bucle y su incremento; mientras que en la estructura "Para" esto se hace automáticamente.

Así el ejemplo anterior desarrollado con una estructura del tipo Mientras daría lugar al siguiente código:

Código:

Inicio
  SUMA = 0
  NUM = 1
  Mientras NUM <= 100
      SUMA = SUMA + NUM
      NUM = NUM + 1
  Fin_mientras
  Mostrar SUMA
Fin

Observesé que en el código anterior hay que incorporar la instrucción de inicialización de NUM (NUM=1), y de incremento (NUM=NUM 1), cosa que no hizo falta en la estructura "Para". Pero recuérdese que la estructura "Para" sólo es aplicable cuando se conoce a priori el número de repeticiones del bucle, es decir el valor V3 de la variable VAR.



Programación en PHP



CONCEPTO PHP:

El PHP (acronimo de PHP: Hypertext Preprocessor), es un lenguaje interpretado de alto nivel embebido en páginas HTML y ejecutado en el servidor. El PHP inicio como una modificación a Perl escrita por Rasmus Lerdorf a finales de 1994. Su primer uso fue el de mantener un control sobre quien visitaba su curriculum en su web.

VARIABLE EN PHP:

En programación, una variable es un espacio de memoria reservado para almacenar un valor que corresponde a un tipo de dato soportado por el lenguaje de programación. Una variable es representada y usada a través de una etiqueta (un nombre) que le asigna un programador o que ya viene predefinida.

            Por ejemplo, en la variable de nombre "num", se almacena el número 8 (de tipo entero). De forma genérica, para utilizarla y sumarle un uno se debería programar:
num = num + 1.

Una variable puede ser del tipo boleano, entero, decimal de coma flotante, carácter, cadena de texto, arreglo, matriz, tipo definido por el usuario, etc. Estos son tipos de datos.

            Una variable, por lo general, como su nombre lo indica, puede variar su valor durante la ejecución del programa. Dependiendo del lenguaje de programación usado, también puede cambiar el tipo de dato que almacena.
ARREGLO EN PHP:

Los arreglos en php sencillamente son objetos donde podemos guardar múltiples variables (incluso otros arreglos). En phi también es importante mencionar que cuando creamos un arreglo podemos guardar variables de diferentes tipos, es decir, un arreglo puede contener variables de texto, numéricas, o incluso podemos guardar objetos (por ejemplo guardar otros arreglos).

FUNCIONES EN PHP:

Las funciones en PHP se definen con la sintaxis function. Las funciones se llaman sin ningún prefijo, pero puede llamarse a las funciones de manera dinámica al igual que las variables, con el prefijo dólar ($). En PHP3, las funciones deben definirse antes de que se referencien. En PHP4 no existe tal requerimiento, excepto cuando una función es definida condicionalmente. Cuando una función es definida condicionalmente su definición debe ser procesada antes que sea llamada.

EXTRUCTURAS DE CONTROL EN PHP:

En programación, una estructura de control permite controlar el flujo de la ejecución de instrucciones. Con estas estructuras, el programador puede determinar el orden en que se ejecutarán las instrucciones que están dentro de estas estructuras.



Originalmente las líneas de código de programación (instrucciones) eran ejecutadas secuencialmente, o sea, una después de la otra. Para alterar el orden de ejecución se utilizaba el enunciado goto, llamado "transferencia de control". Dos investigadores, Bohm y Jacopini, demostraron que el goto traía grandes problemas en el desarrollo de programas.


Existen 3 tipos fundamentales de estructuras de control:


 Secuencial.
 Alternativa.
 Repetitiva.
Dentro de las estructuras de control podemos encontrar:


Secuenciales: Son las más simples, cualquier instrucción que tenga tu programa es en si una estructura secuencial, ya que sigue siempre el mismo orden de ejecución a menos que lo alteres con alguna de las otras estructuras.


Ej: (Se ejecutan de a una, y desde arriba hacia abajo)


A = B +5;
C = A+ B;
PRINT C;


Selectiva o Condicional: 


Existen dos grupos las simples y las múltiples. Estas son los famosos IF, que te permiten dado una determinada condición seguir un camino de ejecución u otro.


En conclusión:
Las estructuras de control permiten alterar el flujo secuencial de los algoritmos que hemos visto hasta el momento.


Una estructura de control:


Tiene un único punto de entrada y un único punto de salida.Se compone de sentencias o de otras estructuras de control.


Existen tres tipos fundamentales de estructuras de control:


Secuencial.
Alternativa.
Repetitiva.


La estructura secuencial es una lista consecutiva de acciones donde el orden de aparición indica el orden de ejecución.


La estructura alternativa se presenta en tres formas:


Simple.
Doble.
Multialternativa .


La estructura alternativa simple permite evaluar una expresión lógica y
Ejecutar una acción si dicha expresión es cierta. 
Ejemplo: Sintaxis alternativa de estructuras de control
(PHP 4, PHP 5)
PHP ofrece una sintaxis alternativa para algunas de sus estructuras de control; a saber: if, while, for, foreach, y switch. En cada caso, la forma básica de la sintaxis alternativa es cambiar el corchete de apertura por dos puntos (:) y el corchete de cierre por endif;, endwhile;, endfor;, endforeach;, o endswitch;, respectivamente. 


php if ($a == 5): ?>
A es igual a 5
<?php endif; ?> 
En el ejemplo anterior, el bloque HTML "A es igual a 5" se anida dentro de una sentencia if escrita en la sintaxis alternativa. El bloque HTML se mostraría solamente si $a es igual a 5. 
La sintaxis alternativa también se aplica a else y elseif. El siguiente es una estructura if con elseif y else en el formato alternativo: 


<?php
if ($a == 5):
    echo "a igual 5";
    echo "...";
elseif ($a == 6):
    echo "a igual 6";
    echo "!!!";
else:
    echo "a no es 5 ni 6";
endif;
?> 


Nota: No se soporta la mezcla de sintaxis en el mismo bloque de control. 


PARAMETROS REALES Y FORMALES.
Un parámetro es un método para pasar información (valores a variables) del programa principal a un procedimiento y viceversa.
Un parámetro es, prácticamente, una variable cuyo valor debe ser ya sea proporcionado por el programa principal al procedimiento o ser devuelto desde el procedimiento hasta el programa principal. Por consiguiente, existen dos tipos de parámetros: 
Parámetros de entrada: Sus valores deben ser proporcionados por el programa principal.
-Parámetros de salida: Son parámetros cuyos valores se calcularán en el procedimiento y se deben devolver al programa principal para su proceso posterior.
Ejemplo 1:
(Parámetros de entrada)
Procedure RecuadroDos (N : Integer);
Var 
            J : Integer;
Begin 
            For J := 1 to  N do 
                        Write(`*´)
End; 
Ejemplo 2:
(Parámetros de entrada/salida)
El procedimiento Geometria recibe la longitud y anchura de un rectángulo, calcula el área y perímetro del rectángulo y devuelve los valores obtenidos al programa principal.
Procedure Geometria (Longitud, Anchura : Real; Var Area, Perímetro : Real);
Begin 
            Area := Longitud * Anchura;
            Perimetro := 2 * (Longitud + Anchura)
End; 
Parámetros actuales y formales 
Las sentencias llamadas a procedimientos constan de dos partes: un nombre de procedimiento y una lista de parámetros llamados actuales:
            Nombreproc (pa1,pa2, pa3,...);
Los parámetros actuales pa1, pa2, pa3, ... deben tener unos valores que se pasan al procedimiento nombreproc.
En la declaración de un procedimiento cuando se incluyen parámetros, éstos se denominan parámetros formales o ficticios (pf1, pf2, pf3, ...). Ellos sirven para contener los valores de los parámetros actuales cuando se invoca el procedimiento.
            Procedure nombreproc (pf1, pf2, pf3, ...)
El valor de los parámetros actuales no se conoce cuando se declara el procedimiento, sin embargo, cuando se ejecuta la sentencia de llamada al procedimiento es preciso que tengan valores asignados, ya que en caso contrario se producirá un error.
Program Correspondencia; 
Uses Wincrt; 
Var 
   X,Y,A,P : real;
Procedure Geometria (Longitud, Anchura : Real; Var Area, Perimetro : Real);
Begin (* Geometría *)
            Area := Longitud * Anchura;
            Perimetro := 2 * (Longitud + Anchura)
End; 
Begin 
            WriteLn ('Introducir longitud: ');
            Readln (X);
            WriteLn ('Introducir anchura: ');
            Readln (Y);
            Geometria (X,Y,A,P);  (* Llamada al procedimiento *)
            WriteLn ('El área es: ', A:6:2);
            WriteLn ('El perímetro es: ', P:6:2)
End. 
EJEMPLO PHP:
Estructura if … elseif .. . else 
Nos permite establecer  alternativas dentro de una secuencia de órdenes, es posible que en nuestro programa necesitemos que se ejecuten instrucciones, pero  solo si se cumplen ciertas condiciones, y por un caso contrario no hacer nada, o podemos determinar una circunstancia.


<?php
     $a = 66
    if ($a < 18)
      {echo "Es menor de edad...";}
    elseif($a >= 18 and $a < 65)
      {echo "Es mayor de edad..";}
    else
      {echo "Es de la tercera edad";}
?>
Estructura switch
Realiza una acción determinada según el valor tomado por una variable, la cual es evaluada dentro de la palabra reservada case, si no aparece la palabra reservada break, continua la comparación con el resto de las operaciones, si aparece break, se termina la ejecución de la estructura switch, la opción default, es opcional, se ejecuta en caso de que el valor evaluado no coincida con ninguno de las constantes expresadas en el case.


<?php
     $var = 1;
     switch($var) {
         case 1:   // Bloque 1
            echo "Voy a Eliminar";
            break;
         case 2:   // Bloque 2
            echo "Voy a Actualizar";
            break;
         default:   // Bloque 3
            echo "El valor no está entre los evaluados";
     }
?>
Estructura while
Esta estructura trabaja con una condición, que al evaluarse devuelve un valor verdadero o falso, el bucle se repite mientras la condición sea verdadera, cuando es falsa el salta las instrucciones que haya dentro del bucle (lo que este entre las llaves {}), y pasa a instrucción.


<?php
     $a = 0;
     $b = 7;
     while($a < 11)
       {   //tabla de multiplicar del 7
          $r = $b * $a;
          echo $b." * ".$a." = ".$r."<br>";
          $a +=1;
       }
?>
Estructura do – while
Al igual que la estructura while, repite el cuerpo de bucle (lo que este entre las llaves {}) mientras la condición sea verdadera, esta estructura como mínimo ejecuta el cuerpo del bucle una vez, ya que la condición se evalúa al final.


<?php
     $a=0;
     do {
         print $a;
        } while ($a > 0);
?>
Estructura for
Sirve para repetir un código dependiendo de un contador, el primer parámetro es un contador, el segundo parámetro es una condición contador <= 5 (las veces que se ejecutara el bloque de la estructura for), luego se incrementa el contador en 1, contador ++


<?php
     for ($i = 1; $i <= 10; $i++) {
          print $i;
       }
?>


Estructura foreach
Nos ayuda a recorrer los valores de un array, efectúa una lectura rápida del mismo.
<?php
     //Mundiales
     $mundial["2002"]="Brasil";
     $mundial["2006"]="Italia";
     $mundial["2010"]="España";
      Foreach ($mundial as $clave=>$valor)
            { //$clave es el índice, y $valor es el contenido.
               echo "Año: $clave Campeón: $valor<br>";
            }
?>

Ordenamiento y Búsqueda


Ordenamiento y Búsqueda:

ORDENAMIENTO

Uno de los procedimientos más comunes y útiles en el procesamiento de datos, es la clasificación u ordenación de los mismos. Se considera ordenar al proceso de reorganizar un conjunto dado de objetos en una secuencia determinada. Cuando se analiza un método de ordenación, hay que determinar cuántas comparaciones e intercambios se realizan para el caso más favorable, para el caso medio y para el caso más desfavorable.

La colocación en orden de una lista de valores se llama Ordenación. Por ejemplo, se podría disponer una lista de valores numéricos en orden ascendente o descendente, o bien una lista de nombres en orden alfabético. La localización de un elemento de una lista se llama búsqueda.
Tal operación se puede hacer de manera más eficiente después de que la lista ha sido ordenada.

Existen varios métodos para ordenamiento, clasificados en tres formas:

Intercambio
Selección
Inserción.

En cada familia se distinguen dos versiones: un método simple y directo, fácil de comprender pero de escasa eficiencia respecto al tiempo de ejecución, y un método rápido, más sofisticado en su ejecución por la complejidad de las operaciones a realizar, pero mucho más eficiente en cuanto a tiempo de ejecución. En general, para arreglos con pocos elementos, los métodos directos son más eficientes (menor tiempo de ejecución) mientras que para grandes cantidades de datos se deben emplear los llamados métodos rápidos.

Métodos de Ordenamiento Hechos en PHP

PHP (PHP Hypertext Pre-processor) es un lenguaje de programación usado en esencia para la creación de páginas web dinámicas.

El objetivo de este post es entregar una serie de métodos de ordenamiento codificados en PHP como se ha venido haciendo en otros lenguajes de programación. Seria buena idea evaluar el rendimiento con cada uno de los códigos y analizar en que casos es mejor cada uno de ellos, eso les dejo a cuenta suya .

  Tipos de método de ordenamiento:
Método Burbuja: Ordenamiento Burbuja.php
Método shell: Ordenamiento Shell.php
Método quick sort: Ordenamiento por método Quick Sort.php
Método Inserción Directa: Ordenamiento por inserción Directa.php
Método Inserción Binaria: Ordenamiento por inserción Binaria.php
Método de Selección: Ordenamiento método Selección.php
Método Heap Sort: Ordenamiento método Heap Sort.php

El siguiente post pertenece al topic:

Métodos de Ordenamiento codificados en PHP.

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método de la Burbuja:

METODO DE BUSQUEDA:

Como punto de partida, la información a buscar la tenemos que tener almacenada en una tabla de nuestra base de datos. Pongamos como ejemplo una tabla con artículos técnicos que llamaremos ARTICULOS. Esta tabla ARTICULOS tendrá como mínimo dos campos llamados TITULO y DESARROLLO, que almacenarán el título del artículo y su contenido respectivamente.


Los tipos de los campos a buscar deberán ser CHAR, VARCHAR o TEXT con sus variantes.

Ahora diseñaremos una página con un formulario y una caja de texto para escribir la cadena de consulta "busqueda" y llamar al script de búsqueda "buscar.php". Ejemplo:

<FORM METHOD=POST ACTION="buscar.php">
Buscar: <INPUT TYPE="text" NAME="búsqueda">
</FORM>

En el fichero buscar.php es donde está el click de la cuestión.
Hay que hacer la consulta que busque las palabras y devuelva como resultado los registros coincidentes. Hasta aquí parece fácil y podríamos resolverlo así:

SELECT * FROM ARTICULOS WHERE DESARROLLO LIKE '%$búsqueda%' OR TITULO LIKE '%$búsqueda%'

Pues esta consulta nos mostrará todos los artículos que en su titulo o en su contenido aparezca la frase de búsqueda tal y como nosotros la introducimos. Esto es muy limitado ya que un cambio en el orden de las palabras o un artículo de separación dará al traste con nuestra búsqueda no mostrando los resultados deseados.
Si bien podríamos depurar y mejorar la sintaxis de nuestra búsqueda utilizando el operador LIKE las búsquedas resultarían muy lentas y no tendrían el resultado esperado.

La solución mas eficiente es utilizar los índices FULLTEXT específicamente indicados para estos menesteres. Pues bien esto implica ir a nuestra base de datos, y crear un índice FULLTEXT con todos los campos que deseamos incluir en nuestra búsqueda, que en nuestro caso son TITULO y DESARROLLO. Para ello basta con el phpmyadmin o bien escribir la instrucción directamente:

ALTER TABLE ARTICULOS ADD FULLTEXT(TITULO, DESARROLLO);


Una vez creado el índice la instrucción SQL para buscar será:

SELECT * FROM ARTICULOS WHERE MATCH(TITULO, DESARROLLO) AGAINST ('$busqueda')

Esta línea utiliza la función MATCH ... AGAINST ... que encuentra el texto buscado, usando consultas en lenguaje natural parecido a como lo hacen los motores de búsqueda. Además, se calcula internamente una puntuación en función de cómo aparecen los términos buscados dentro de nuestro artículo.
Métodos de Ordenamiento

Es la operación de arreglar los registros de una tabla en algún orden secuencial de acuerdo a un criterio de ordenamiento.

El ordenamiento se efectúa con base en el valor de algún campo en un registro.

El propósito principal de un ordenamiento es el de facilitar las búsquedas de los miembros del conjunto ordenado.

Ej. De ordenamientos:

Dir. Telefónico, tablas de contenido, bibliotecas y re diccionarios, etc.
El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en una secuencia tal que represente un orden, el cual puede ser numérico, alfabético o incluso alfanumérico, ascendente o descendente.
Ejemplos:
Los métodos de ordenación por selección se basan en dos principios básicos:
Seleccionar el elemento más pequeño (o más grande) del arreglo.
Colocarlo en la posición más baja (o más alta) del arreglo.
A diferencia del método de la burbuja, en este método el elemento más pequeño (o más grande) es el que se coloca en la posición final que le corresponde.

Ejemplo:
<?php
    function selectionsort($A,$n)
    {
        for ($i=0; $i<$n-1; $i++)
            {
              $min=$i;
              for($j=$i+1; $j<$n; $j++)
                    if($A[$min] > $A[$j])
                       $min=$j;
              $aux=$A[$min];
              $A[$min]=$A[$i];
              $A[$i]=$aux ;
        }
      return $A;
    }
    function main()
    {
        $VectorA=array(5,4,3,2,1);
        $VectorB=selectionsort($VectorA,sizeof($VectorA));
        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";
    }
    main();
?>

Estructura Dinámica de Datos

Base de Datos


Una base de datos es un repositorio de información que contiene tablas(relaciones) columnas(campos) y filas(registros) que contienen información real de un objeto o personaje por ejemplo una base de datos de empleados; puede contener una relación de nombres y otra de puestos, ambas estarán compuestas por campos y registros, cada registro representa un objeto o personaje, en el ejemplo un empleado o un puesto especifico en el caso de la relación de puestos, los campos contienen información concreta como el nombre, apellidos, etc.

Ambas tablas se relacionan entre ellas por medio de un campo común denominado Llave primaria (primary key) para asociarle a cada empleado un puesto específico.
Vista de una base de datos en mysql:
CONSEJOS PARA DISEÑAR BASE DE DATOS:

Hoy en día difícilmente encontremos un sitios web que no utilice base de datos, en su gran mayoría se utiliza MySQL por ser robusto, confiable y gratis. Ahora bien, hace un tiempo había comentado sobre varios consejos para la optimización MySQL, ahora y gracias a Delicius encuentro una presentación muy buena con varios tips rápidos para el diseño de la base de datos, en donde nos da de manera rápida ciertas referencias en especial relacionadas con el tipo de datos que pueden resultar de mucha utilidad.

El diseño de base de datos no es algo que podamos tomar a la ligera, y dista mucho de ser algo sencillo, el principal problema es que casi siempre la base de datos responderá como nosotros queremos pero no utilizando los recursos mínimos e indispensables. La mayoría de los problemas de performance de un sitio web se debe a malas estructuras de datos, que utilizan tipos de datos incorrectos que terminan “castigando” al servidor de manera innecesaria, como también a consultas mal diseñadas.

En mi caso suelo consumir todo este tipo de contenidos, es indispensable si queremos crear aplicaciones que puedan escalar con facilidad y que tengan buenos índices de respuesta en cuando la popularidad de un proyecto siga creciendo. Después de leer cosas como esta presentación me doy cuenta de lo mucho que me queda por aprender, pero por suerte hay gente que regala estos conocimientos.

Usos de bases de datos en programas php:

Una de las principales ventajas que presenta el trabajar con páginas dinámicas del lado del servidor es el poder trabajar con contenidos que están alojados en bases de datos. De esta forma, podemos organizarlos, actualizarlos y buscarlos de una manera mucho más simple.

El lenguaje PHP, ya hemos dicho, ofrece interfaces para el acceso a la mayoría de las bases de datos existentes. Podrás encontrar bases de datos de código abierto, como MySQL, comerciales porpietarias como Oracle y además tiene librerías para acceso a datos por ODBC, lo que nos permite comunicar con todas las bases de datos posibles en sistemas Microsoft, como Access o SQL Server. Gracias a los juegos de funciones existentes para cada sistema gestor de base de datos, podremos realizar cualquier acción con los datos que necesitemos para el desarrollo de la más variada gama de aplicación web.

Esta interacción se realiza, por un lado, a partir de las funciones que PHP nos propone para cada tipo de base de datos y, por otro estableciendo un diálogo a partir de un idioma universal: SQL (Structured Query Language) el cual es común a todas las bases de datos. Este lenguaje resulta, como veremos en el tutorial de SQL, muy potente y fácil de aprender. A lo largo del manual de PHP nos limitaremos a la utilización las instrucciones SQL básicas, que serán aprendidas a medida que explicamos las diferentes formas de actuar sobre una base de datos, dejando para el tutorial de SQL los aspectos más avanzados de ese lenguaje de acceso a datos.

Como base ejemplo de estos capítulos hemos elegido MySQL, sin duda la base de datos más extendida en combinación con PHP. Su gratuidad, eficiencia y simplicidad la han hecho una buena candidata. No obstante, en caso de utilizar cualquier otra base compatible con PHP, las correcciones a llevar a cabo con respecto a nuestros ejemplos no son excesivamente grandes y la lectura de esos capítulos seguirá siendo de gran utilidad.

Desarrollo de Sistemas Web