lunes, 1 de agosto de 2011

Fundamentos De Programacion

Bien estos post son para los que recien comienzan en este vacil o los que estan haciendo su primer semestre en alguna carrera que tenga que ver con sistemas o informatica.

Bien para darte una breve introduccion a lo que es la programacion primero un consejo : En la informatica no solo existe la programacion , es cierto que se podria considerar como lo mas complejo del area pero existen otras ramas en las cuales te puedes desempeñar en dado caso no te guste la programacion.

Para empezar la programacion no es facil pero tampoco es dificil es cuestion que nos guste y veras que esto te dara de comer algun dia.

Programacion lo entenderemos como una forma de comunicarse con la computadora luego veamos unos conceptos basicos que los he sacado de varias fuentes de internet asi que no es invento mio.

¿Qué es un algoritmo?

Definición: Un algoritmo se entiende como una sucesión finita de pasos que debe cumplir las siguientes especificaciones:

  • Cada paso del algoritmo debe estar bien definido: Esto significa que la definición de un paso debe ser suficientemente clara, para que una persona pueda entenderla y realizarla. Si bien no se puede dar un criterio determinístico para decidir si un paso está bien definido, debemos apelar al sentido común para decidir que un paso está especificado sin ambigüedades.
  • Un algoritmo debe tener un principio y un fin: Un programa es un algoritmo escrito con un objetivo: conseguir un resultado. No tiene sentido crear un programa que espere ~ segundos (infinitos segundos) y luego escriba en pantalla "Hola Mundo!", del mismo modo que un algoritmo debe tener un principio bien definido
¿Qué instrucciones ejecuta un ordenador?

Lenguaje de máquina
Cada tipo de microprocesador contiene un conjunto de instrucciones que realizan ciertas operaciones sobre una o más
palabras de bits; las instrucciones van también codificadas en bits.Se entiende que escribir sólo con dos teclas, el 0 y el 1

Lenguaje ensamblador
El código máquina tenía dos grandes inconvenientes para los programadores:
  • Las instrucciones eran difíciles de recordar, ya que no guardaban relación con la operación que se está realizando.
  • Puede haber, y de hecho hay, diferencias entre las instrucciones de un procesador a otro.
Todo esto ha llevado a "poner nombre" a las instrucciones de código máquina de manera que a una secuencia concreta de bits que realiza una operación se le pone un nombre sencillo que identifique la operación. Esta traducción a un lenguaje más sencillo para las personas resulta en una mayor comodidad para el programador, además el proceso de traducción inverso de
lenguaje ensamblador a código máquina puede ser realizado por un sencillo programa.

Programación para seres humanos

Lenguajes de alto nivel
Estos son los que se codifican los algoritmos son los códigos fuente; siguen las reglas sintácticas de un determinado lenguaje de programación. Existen numerosos lenguajes de programación, y se utiliza uno u otro según sus características se adecúen más o menos a la resolución de nuestro problema

Lenguajes interpretados vs. lenguajes compilados

Para los lenguajes compilados todo eso no es gran derroche de recursos para un ordenador medio actualmente, pero dura sus 10 o 15 segundos.

En cambio, con un lenguaje interpretado, el programa intérprete analiza el fichero de código y lo va ejecutando en tiempo real, sin compilarlo ni ensamblarlo. Otra de las ventajas de los lenguajes interpretados es que son multiplataforma: un programa en Perl, por ejemplo, no debe ser compilado dos veces (una para Unix y otra para Windows).

Con que haya diferentes versiones del intérprete en cada uno de esos ordenadores, específicamente compilados para ellos, basta.

Estructura de un programa

En la programación estructurada hay un inicio y un fin perfectamente bien definido de acuerdo al diagrama de flujo que se planteó al concebir la idea del programa.

Un programa bien estructurado debería tener algún subprograma que capture cualquier error dentro del programa principal o de cualquier subprograma dentro de la aplicación de tal modo que el subprograma que captura los errores genere un registro de datos que describa el error generado y/o en qué subprograma se generó el error para posteriormente corregirlo.

Para facilitar la corrección de estos errores se hace uso de los comentarios agregados en el código fuente.

Variables y constantes
Antes de conocer un concepto tenemos que saber los tipos de datos que existen .
  • entero - es lo que comunmente conocemos como un numero natural sin decimales.
  • ejemplos (edad,numero de telefono,año de nacimiento)
  • real - este si puede contener datos decimales. ejemplos (dinero)
  • cadena de caracteres - esto es lo que conocemos como una serie de palabras ejemplo(codigo rojo,
  • vacil mio,programacion)
  • caracter - esto es solo un simbolo por ejemplo (A,%,5)
  • logico - de los tipos falso y verdadero
  • colecciones - vectores y matrices
Despues de esta pequeña explicacion veamos que es una variable:

Las variables son un espacio de memoria (espacio de almacenamiento de datos, La memoria es donde son ejecutados los programas y procesos de una computadora) en el que se almacena un dato de un tipo dado. La característica más importante de las variables es que, como su nombre lo indica, es posible cambiar el valor que almacenan en el transcurso del programa.

Cada variable tiene asignado un identificador, formado por uno o más caracteres que permiten referirse a su contenido dentro de su dominio.

Cuando creamos una variable tenemos que seguir ciertas reglas no son todas pero si las mas importantes.
  • El nombre de la variable tiene que expresar para que fue creada un nombre que la identifique para que sirve ni muy corto ni muy largo.
  • Evitemos contractar nombres de variables
  • Evitemos crear variables con una sola letra de nombre para bucles que lo veremos mas adelante se podria pensar asi pero no es recomendable.
Ahora veamos que son las constantes :

como lo dice su palabra es un espacion de memoria que siempre va mantener su valor esa es la unica diferencia a una variable ya que esta ultima puede agarrar cualquier valor que le asignemos.

Bien hasta aca tenemos una breve introduccion como todos unos programadores siempre nos toca investigar mas de la cuenta asi que te dejo este libro muy bueno aunque se requiere un poco de investigacion aparte de este libro te ayudara bastante.

Fundamentos de programacion Luis Joyanes Aguilar 3° Edicion

comenten no sean bayuncos....

jueves, 21 de julio de 2011

Web Services En PHP Parte 3

bueno hoy veremos la ultima parte de web services en PHP la cual esta orientada a mandar arreglos y retornar arreglos algo que a veces ayuda mucho en la parte de la programacion a la hora de devolver muchos datos.

bien primero veamos como declaramos dentro de la estructura del WS las variables complejas que en este caso son Arrays.

Y las declaraciones de los arreglos los hacemos asi , como un arreglo normal en php,especificando primero un nombre,un tipo y luego declarando el nombre del arrays .Nombre es el nombre del campo del arrays luego va el tipo .

Luego registramos las funciones del WS solo que debes que sean string ahora seran del tipo tns: mas el nombre del arreglo.Despues la declaracion normal que hemos visto en los anteriores post.


Creamos las funciones de servidor como que si fueran funciones normales con arreglos luego llenamos el arreglo de retorno . y por ultima la configuracion del web service.

Y en el cliente hacemos un metodo que nos devuelva el servicio para solo invocar el metodo y mandarle el parametro que sera un arreglo.

El archivo de pruebas creamos un arreglo instanciamos la clase cliente hacemos la llamada al metodo y le mandamos el arreglo con los datos y el nos devolvera un arreglo con la informacion concatenada en una variable string luego solo la imprimimos en pantalla.

Y tendremos esto como resultado , bien con esto terminamos la serie de Web services en PHP bueno en este lenguaje falta mucho por lograr hay muy poca documentacion acerca de esto y no esta al 100% para produccion.

Espero que les haya servido a entender esto que es tan importante, despues los veremos en otros lenguajes y veremos las comparacion en cual es mejor implementar esto.

descargar


Proximamente tutoriales de Logica de Programacion

comenten no sean bayuncos

lunes, 11 de julio de 2011

Web Services en PHP Parte 2

Hoy seguiremos con el tema anterior que son los web Services en PHP solo que ahora si veremos codigo y como se estructura uno con Nusoap que es el framework para WS en PHP.

Bien comenzemos estructurando nuestro proyecto , en donde tendremos la carpeta con todas las librerias que trae Nusoap a la carpeta le llamaremos WebServicesLib.

Primero creamos el objeto de tipo soap_server luego especificamos que queremos que se configure un WSDL antes de todo esto hacemos un require para el archivo que vemos descrito arriba y poder usar sus metodos.

Aca tenemos la forma en que vamos a registrar las funciones del WS esta mas que explicada la estructura que se maneja con nusoap , en el ejemplo tenemos 3 ejemplos una funcion que recibe un valor y devuelve ese valor , el otro que no recibe ningun parametro pero devuelve un string y la ultima que recibe dos parametros y lo devuelve concatenados.

Para registrar la funcion hacemos uso de la metodo register que recibe un array de parametros los cuales son los parametros de entrada los de salida el namespace que fue configurado mas arriba el archivo action de soap el estilo que lo dejamos rpc por defaul el codificado mas los comentarios del metodo o la documentacion.

Despues de declarar la estructura veremos donde de verdad estan las funciones , mas abajo se declaran y se crean como una funcion normal hecha en php con parametros de entrada con toda su logica y devolviendo un valor.


y por ultimo configuramos las opciones de salida del WS .

Si todo lo hemos hecho bien nos vamos a nuestro servidor y buscamos nuestro proyecto y vemos si se ha creado el WSDL junto con la informacion de los metodos.

Bien ahora veremos el cliente que consumira el WS aca creamos una clase java en la cual tendremos un metodo que nos devuelva la direccion del wsdl donde se almacenan todos los metodos que ocuparemos.

Aca podemos usar una clase abstracta que herede a las clases hijas el WS pero esa mejora la haran ustedes , sigamos aca creamos los metodos para que los mandemos al WS , al WS lo llamamos con el objeto soapClient con su metodo call y en arreglo le mandamos todos los parametros que necesite el procedimiento, junto con el nombre de la funcion del WS.

Ahora vamos a nuestro archivo de pruebas para invocar el cliente y que el cliente nos llame a la funcion WS.

Luego nos vamos a nuestro servidor y vemos si funciono si todo esta bien te mostrara esto en pantalla:


Descargar archivos

comenten no sean bayuncos ...

viernes, 24 de junio de 2011

Web Services En PHP

Hoy veremos una parte fundamental en el area de programacion y son los famosos servicios web de los que tanto mencionan en internet.

Primero es lo primero tenemos que saber y entender lo basico de los servicios web:

Pero que es un Servicio Web ??????

Web Service Es un sistema software diseñado para soportar la interoperabilidad máquina - máquina a través de una red. Este tiene una interfaz descripta en un formato que puede ser procesado por una máquina (específicamente WSDL,que veremos más adelante). Otros sistemas interactúan con el Web service utilizando mensajes SOAP los cuales se encuentran establecidos previamente.

En nuestro caso seria un archivo PHP en el cual se almacenen una serie de metodos los cuales tengan un objetivo especifico y general para hacerlo web service.

Tambien hay otros conceptos los cuales hay que ponerles atencion:

XML es un Lenguaje de Etiquetado Extensible muy simple, pero estricto que juega un papel fundamental en el intercambio de una gran variedad de datos. Es un lenguaje muy similar a HTML pero su función principal es describir datos y no mostrarlos como es el caso de HTML. XML es un formato que permite la lectura de datos a través de diferentes aplicaciones.

SOAP (siglas de Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML.


UDDI es uno de estándares básicos de los servicios web. Está diseñado para ser interrogado por mensajes SOAP y proveer acceso documentos de WSDL (Web Services Description Language), en los que se describen los requisitos del protocolo y los formatos del mensaje solicitado para interactuar con los servicios Web del catálogo de registros.

Ventajas de los servicios web :
  • Aportan interoperabilidad entre aplicaciones de software independientemente de sus propiedades o de las plataformas sobre las que se instalen.
  • Los servicios Web fomentan los estándares y protocolos basados en texto, que hacen más fácil acceder a su contenido y entender su funcionamiento.
  • Permiten que servicios y software de diferentes compañías ubicadas en diferentes lugares geográficos puedan ser combinados fácilmente para proveer servicios integrados.
  • Basado en estandares

Desventajas de los Web Services:
  • Al apoyarse en HTTP, pueden esquivar medidas de seguridad basadas en firewall cuyas reglas tratan de bloquear
  • la comunicación entre programas.
  • Existe poca información de servicios web para algunos lenguajes de programación
  • No es la solucion a todos los problemas
  • Relativamente nuevo, algunos estandares no definidos
  • Dependencia de la disponibilidad de servidores y comunicaciones
Como lo trabajaremos en PHP usaremos unas librerias que hagan el trabajo de los protocolos y los mensajes , de eso no nos preocupemos aunque es bueno darle un vistazo a esas librerias .

¿Que es NuSOAP?

NuSOAP es un kit de herramientas (ToolKit) para desarrollar Web Services bajo el lenguaje PHP. Está compuesto por una serie de clases que nos harán mucho más fácil el desarrollo de Web Services. Provee soporte para el desarrollo de clientes (aquellos que consumen los Web Services) y de servidores (aquellos que los proveen). NuSOAP está basado en SOAP 1.1, WSDL 1.1 y HTTP 1.0/1.1

no es el único, existen otros, pero es uno de los que están en una fase de desarrollo mucho más avanzada. Sin ir más lejos, PHP a partir de su versión 5 comienza a dar soporte para SOAP, pero aún está en fase de pruebas.

¿Por qué NuSOAP y no otro?
  • Está en una fase madura de desarrollo.
  • No necesita módulos adicionales.
  • Es muy fácil su instalación y uso
¿Cómo instalo NuSOAP?

La instalación es bastante sencilla, sólo basta ir a la pagina en sourceforge de NuSOAP
y bajar el archivo comprimido (es un .zip).

Lo descomprimimos en un directorio de nuestro servidor web (como puede ser /lib que es el directorio por default o ponerle el nombre que queramos), y listo, ya podemos hacer uso de
NuSOAP.

comenten no sean bayuncos...

jueves, 23 de junio de 2011

Creacion de Metodos para Clase Conexion PHP

Hoy veremos como crear metodos con la clase conexion siempre usando el estilo orientado a objetos que hemos ido desarrollando .

Nuestro proyecto tendra una estructura como la que vemos en la imagen con una capa de persistencia donde haremos todos los procedimientos que tengan que ver con la base de datos,dentro de la capa de persistencia esta el action que es donde estan los archivos de todos los procedimientos del sistema , conexion es donde estan las clases de conexion , luego van las entidades que nos ayudaran al traer y devolver informacion de nuestras entidades en la base de datos no son mas que clases con getter y setter, luego esta el SQLClass que es la encargada de construir las consultas sql .

Ahora veremos la parte del action :

Como aplicaremos conceptos orientados a objetos entonces necesitaremos una clase abstracta en el action que nos retorne la conexion con un metodo y asi solo heredar esa caracteristica que los hace familia a las demas clases .

Pero primero como todo buen sistema tenemos que guardar lo que sucede en cada momento importante, he creado una clase historial la cual hace lo que su nombre dice guarda el historial.

Pero antes tenemos que ver la clase que construira el SQL para mayor comodidad y poner en practica la teoria orientada a objetos.

Esta clase contiene todas las funciones que retornaran un sql , si en dado caso necesitamos parametros solo los indicamos y retornamos el string concatenado .

La clase historial heredara de la abstracta para obtener la conexion a la base de datos , luego creamos un metodo el cual pedira un Objeto usuario que es la clase entidad de usuario, y un string de accion que es lo que se esta realizando a la hora de guardar el historial.

Antes de ver el action veremos como esta formado la clase entidad , no es mas que una clase que contendra getter y setter de los atributos de esa entidad , y esa entidad la tomaremos como una tabla de nuestra base de datos.

Esto nos servira para traer la informacion y devolverla de una manera facil y exacta de lo que queremos ocupar , esto nos evita el estar declarando propiedad por propiedad en nuestro metodo .

Bien esta es la clase que contendra toda la logica de la aplicacion primero vemos que hereda de la abstracta y luego tenemos un metodo publico que sirve para logearse vemos que tenemos como parametro a la clase entidad haciendo uso de type hinting que significa tipos sugeridos , luego llamamos a la conexion con self que sirve para traer metodos de la misma clase , antes de eso instanciamos la clase sql para enviarle los valores a la funcion y que nos retorne la sql con esos valores.

Luego ejecutamos la consulta por medio de la conexion y lo recorremos para ver si trajo resultados o no ,si trajo resultados pues simplemente llama a otro metodo privado para que cree la sesion y guarde el historial.

El otro metodo sirve para cerrar la sesion.

Ahora como ejecutamos esto en una aplicacion , solo veamos el codigo que esta aca abajo que es un fragmento del login.

Hemos visto como implementar las caracteristicas de la POO primero el principio de ocultacion , hemos ocultado muchas funciones para que la otra funcion no tenga que preocuparle caracteristicas mas profundas solo se hace una idea general del objeto , Generalizacion, y encapsulamiento, ciertas funciones son privadas y solo se pueden accesar a travez de la clase misma , ahora con la abstraccion lo que hemos hecho es separar los elementos singularmente para hacer asi mucho mejor su compresion ,La abstracción nos permite dividir nuestro programa en distintos objetos que se agrupan para formar cosas más complejas, cumplimos con una vieja regla de guerra: Divide y Vencerás. Es decir, lo que hacemos es seccionar nuestro código en grupos de código más pequeño que, al unirlos, hacen el trabajo.

Y el ultimo pero no menos importante que es la herencia ,la herencia nos permite, entre otras cosas, evitar tener que escribir el mismo código una y otra vez, puesto que al definir que una categoría (que en programación llamaremos clase) pertenece a otra, automáticamente estamos atribuyéndoles las características generales de la primera, sin tener que definirlas de nuevo.

Tambien usamos otros elementos que son caracteristica como interfaces metodos sobrecargados metodos asesores.

Comenten no sean bayuncos

Descargar archivo Completo