You are on page 1of 38

Para empezar a entender lo que es la programacin, primero tenemos que tener ciertos conocimientos sobre todo lo que la rodea.

Empezaremos con unas definiciones un poco tcnicas, pero que son imprescindibles para el aprendizaje.

Tecnologa

Dentro del campo que nos interesa a nosotros, la tecnologa tiene el objetivo de eliminar las tareas repetitivas, facilitando el trabajo y hacindolo ms eficiente as como aumentando la productividad y los beneficios de la empresa.

Programacin

La programacin es una de las etapas ms importantes del ciclo de vida de un proyecto (explicaremos ms adelante lo que es este termino), y requiere un mtodo de trabajo. La programacin es el resultado de dicho trabajo. La programacin es el instrumento que permite la ejecucin de las tareas automatizadas de un sistema informtico. Las herramientas que utilizaremos para programar son los lenguajes de programacin, a travs de las cuales codificaremos los programas.

Programa

Conjunto de instrucciones entendibles por el ordenador que permiten realizar un trabajo o resolver un problema. Un programa debe ser finito, es decir, tiene que tener un inicio y un fin. Tiene que estar bien confeccionado para que, al introducir un dato, salga una solucin y si se volviese a introducir el mismo dato, saliese de nuevo la misma solucin.

Metodologa de la programacin

Se entiende como metodologa de la programacin al conjunto de normas, mtodos y anotaciones que nos indican la forma de programar. Cada lenguaje de programacin sigue una metodologa distinta.

Lenguaje de programacin Es un conjunto de reglas semnticas as como sintcticas que los programadores usan para la codificacin de instrucciones de un programa o algoritmo de programacin. Existen varios lenguajes de programacin.

Entorno de programacin o entorno de desarrollo

Es el conjunto de herramientas utilizadas para la elaboracin de un programa.

Recursos

Conjunto de componentes hardware que utilizaremos para la elaboracin de un programa (cpu, disco duro..).

Una vez conocidos los conceptos bsicos necesarios para el aprendizaje de la programacin podemos empezar a ver los diferentes tipos de lenguajes de programacin.

Tipos de lenguajes de programacin


Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y los de alto nivel.
El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo mquina, consistente en ceros y unos. Es decir, slo utiliza 0 y 1 para codificar cualquier accin.

Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran ms cercanos a los programadores y usuarios se denominan lenguajes de alto nivel.

Lenguajes de bajo nivel

Son lenguajes totalmente dependientes de la mquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas.

Al estar prcticamente diseados a medida del hardware, aprovechan al mximo las

caractersticas del mismo.

Dentro de este grupo se encuentran:

El lenguaje maquina: este lenguaje ordena a la mquina las operaciones fundamentales para su funcionamiento. Cnsiste en la combinacin de 0's y 1's para formar las ordenes entendibles por el hardware de la maquina. Este lenguaje es mucho ms rpido que los lenguajes de alto nivel. La desventaja es que son bastantes difciles de manejar y usar, adems de tener cdigos fuente enormes donde encontrar un fallo es casi imposible.

El lenguaje ensamblador es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y nmeros llamadas mnemotcnicos. Con la aparicin de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje mquina. Como ventaja con respecto al cdigo mquina es que los cdigos fuentes eran ms cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prcticamente las mismas que las del lenguaje ensamblador, adiendo la dificultad de tener que aprender un nuevo lenguaje difcil de probar y mantener.

Lenguajes de alto nivel

Son aquellos que se encuentran ms cercanos al lenguaje natural que al lenguaje mquina. Estn dirigidos a solucionar problemas mediante el uso de EDD's.
Nota: EDD's son las abreviaturas de Estructuras Dinamicas de Datos, algo muy utilizado en todos los lenguajes de programacin. Son estructuras que pueden cambiar de tamao durante la ejecucin del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa.

Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una mquina a otra sin ningn tipo de problema.

Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que estn diseando el programa. Tan solo necesitan un traductor que entiendan el cdigo fuente como las caractersticas de la maquina.

Suelen usar tipos de datos para la programacin y hay lenguajes de propsito general (cualquier tipo de aplicacin) y de propsito especifico (como FORTRAN para trabajos cientficos).

Lenguajes de Medio nivel

Se trata de un termino no aceptado por todos, pero q seguramente habrs odo. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podra situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas caractersticas de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel.

Generaciones

La evolucin de los lenguajes de programacin se puede dividir en 5 etapas o generaciones.

Primera generacin: lenguaje maquina. Segunda generacin: se crearon los primeros lenguajes ensambladores. Tercera generacin: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol Cuarta generacin. Son los lenguajes capaces de generar cdigo por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aqu tambin se encuentran los lenguajes orientados a objetos, haciendo posible la reutilizacin d partes del cdigo para otros programas. Ej. Visual, Natural Adabes

Quinta generacin: aqu se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todava estn poco desarrollados. Ej. LISP

El potencial de Javascript para no programadores


Cules son las posibilidades de Javascript, un vdeo con una clase prctica, enfocada para las personas que no saben programacin y que quieren dar sus primeros pasos con Javascript como primer lenguaje.

En este artculo vas a poder encontrar un vdeo dedicado a la programacin en Javascript, pero pensado para las personas que no han empezado a programar y que les gustara dar los primeros pasos. Fue emitido el pasado jueves en DesarrolloWeb.com, en directo, usando la plataforma de los cursos de EscuelaIT, creada por el equipo de DesarrolloWeb.com. El contenido de esta clase est dividido en tres grandes bloques. En el primero se habl del potencial de Javascript, enfocado a los desarrolladores de sitios web. Luego vimos cmo se pueden dar los primeros pasos e integrar Javascript en una pgina web. Finalmente se hizo un ejemplo rpido con una funcionalidad sencilla de implementar en el navegador, que deshabilita el botn derecho del ratn del usuario que visita un sitio web. Todo esto nos sirvi tambin para presentar el prximo curso de Introduccin a la programacin con Javascript como primer lenguaje, que estaremos realizando durante 4 semanas de clases diarias.

Potencial de Javascript
Hoy en da todas las pginas utilizan Javascript del lado del cliente, en mayor o menor medida. Por lo menos todas las pginas modernas, ya que ayuda sensiblemente a mejorar la experiencia del usuario que visita nuestro sitio. De hecho Javascript y diversas capacidades del lenguaje, como Ajax, son los protagonistas de lo que se ha llamado la "Web 2.0". Adems, Javascript es uno de los puntos estrella de la especificacin del HTML5. Para que nos hagamos una idea, aproximadamente el 80% de la especificacin del HTML5 est basada en Javascript y alguna de las API para trabajar con elementos tan importantes en el panorama actual como la Geolocalizacin, Webshockets, Canvas, etc. Todo eso ya constituyen temas avanzados, pero no dejan de ser un motivo ms por el que interesa aprender Javascript, si es que nos dedicamos a hacer sitios web.

Insercin de cdigo javascript en un documento HTML


Como segundo bloque tratamos los primersimos conocimientos que cualquier persona debe poseer para comenzar a programar con Javascript. Se trata de saber cmo insertar un lenguaje de scripting del lado del cliente, dentro del contenido de una pgina web. Tenemos que saber que una pgina se escribe en HTML, pero dentro del HTML tambin podemos colocar otros lenguajes, como pueden ser las CSS o el propio Javascript. As que nos pusimos

manos a la obra en el lado ms prctico para mostrar, a las personas que no saben nada sobre Javascript, cmo podran comenzar a insertar lneas de cdigo en este lenguaje dentro de una pgina web.

Ejemplo prctico: desactivar el botn derecho del ratn


Para acabar el evento nos dispusimos a mostrar cmo hacer uno de los ejemplos ms tpicos en los que Javascript puede ayudarnos, y que podemos implementar de una manera muy sencilla. Es algo que ms tarde o ms temprano a todos los desarrolladores nos han pedido implementar en una web: Deshabilitar botn derecho del ratn, para que el usuario no pueda acceder al men contextual cuando pulsa sobre la pgina. Es un ejemplo muy prctico que adems nos ayud a conocer algo ms sobre los eventos, clave en la programacin Javascript, ya que es un lenguaje orientado a definir la interaccin del usuario con la pgina.

Curso de introduccin a la programacin


Con esto terminamos nuestra clase, pero para las personas que quieren aprender a programar y que de paso quieren aprender Javascript, vamos a hacer un curso completo de iniciacin a la programacin con Javascript. Se tratan de 4 semanas de formacin intensiva que tienen como objetivo ensear a programar a las personas que no han tenido experiencia alguna con la programacin, o para aquellas personas cuyas experiencias anteriores no han sido satisfactorias. Comenzaremos desde cero absoluto, explicando qu es un lenguaje de programacin y qu son los algoritmos, y poco a poco los estudiantes podrn crear sus primeros programas. Para facilitar las cosas pasaremos por los diagramas de flujo o el pseudocdigo, pasos previos a la escritura de lneas de cdigo, que pueden ayudar a las personas con menos experiencia. Adems incluso en las primeras clases del curso se irn compaginando prcticas con Javascript, de modo que la experiencia de aprender a programar sea lo ms agradable posible. Al final del curso tendremos la soltura suficiente para realizar programas con Javascript, usando las distintas estructuras de control y los objetos del navegador. Se completar todo esto con un par de clases de introduccin a jQuery, que nos darn una idea de cmo podemos continuar y cmo sacarle mejor partido a Javascript, una vez que ya lo sabes utilizar.

Esperamos encontraros en el curso de Javascript para no programadores, en EscuelaIT, la plataforma para la formacin tutorizada del equipo de DesarrolloWeb.com.

*********** http://www.youtube.com/watch?v=ht6tS2M1tDM http://www.youtube.com/watch?v=ht6tS2M1tDM

Proceso de traduccin de los lenguajes de programacin


Explicamos el proceso ms importante a la hora de hacer funcionar un programa realizado en lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es el cdigo fuente de ese programa.

Este cdigo fuente debe ser traducido a binario para que las instrucciones que contienen puedan ser entendidas y ejecutadas por la mquina. Para esto existe un programa encargado de realizar la traduccin, llamado traductor del lenguaje.

Estos traductores pueden ser de dos tipos:

Ensambladores

Son los encargados de traducir los programas escritos en lenguaje ensamblador a lenguaje mquina.

Compiladores

Son programas que leen el cdigo fuente y lo traducen o convierten a otro lenguaje. Estos programas te muestran los errores existentes en el cdigo fuente.

Etapas del proceso de compilacin: 1. Edicin. Esta fase consiste en escribir el programa empleando algn lenguaje y un editor. Como resultado nos dar el cdigo fuente de nuestro programa. 2. Compilacin. En esta fase se traduce el cdigo fuente obtenido en la fase anterior a cdigo mquina. Si no se produce ningn error se obtiene el cdigo objeto. En caso de errores el compilador los mostrara para ayudarnos a corregirlos y se procedera a su compilacin de nuevo, una vez corregidos. 3. Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas rutinas internas del lenguaje, obteniendo el programa ejecutable. Existen dos tipos de linkados:

linkado esttico: Los binarios de las libreras se aaden a nuestros binarios compilados generando el archivo ejecutable.

Linkado dinmico: no se aaden las libreras a nuestro binario sino que har que se carguen en memoria las libreras que en ese momento se necesiten.

Una vez traducido, compilado y linkado el archivo esta listo para su ejecucin donde tambin podrn surgir problemas y fallos, para los cuales tendramos que volver a realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.

Por este motivo es importante realizar numerosas pruebas en tiempo de ejecucin antes de presentar el programa al cliente.

Otro sistema para la ejecucin de nuestro cdigo fuente es mediante el uso de intrpretes (estos

no se encontraran dentro de los traductores).

Intrpretes

Los intrpretes realizan la traduccin y ejecucin de forma simultanea, es decir, un intrprete lee el cdigo fuente y lo va ejecutando al mismo tiempo.

Las diferencias entre un compilador y un intrprete bsicamente son:

Un programa compilado puede funcionar por si solo mientras que un cdigo traducido por un intrprete no puede funcionar sin ste. Un programa traducido por un intrprete puede ser ejecutado en cualquier mquina ya que, cada vez que se ejecuta el intrprete, tiene que compilarlo. Un archivo compilado es mucho ms rpido que uno interpretado.

Manejando bits
Importancia del manejo de los bits en el mundo de la programacin.
Como bien es conocido un Byte es la agrupacin de 8 bits respectivamente, cada bit forma parte del sistema de numeracin Binario a quien debe su nombre, es decir de base 2 en otras palabras puede almacenar valores comprendidos entre 0 y 1.

Si bien recordamos que un sistema de numeracin se conforma de un conjunto de reglas y principios que permite expresar o definir un nmero valido dentro del mismo, podemos afirmar que la mayora de ellos (Sistemas: binarios, octanos, decimales hexadecimales, etc..) se pueden representar mediante un polinomio sencillo que nos permitir entender su lgica:

Nmero = N*basen + N*basen-1+ N*basen-2 hasta que base quede elevado a la 0 siempre y cuando no contenga decimales el "Nmero" Donde Nmero es el valor expresado dentro del sistema, base como su nombre lo indica la base del sistema (si es binario : 2 , octano: 8, decimal: 10, hexadecimal : 16, etc) y que ocupa el digito "N" dentro del Nmero.
n

la posicin

Ejemplos en sistema decimal (base:10):

18598 1*10

+ 8*10

+ 5*10 2 + 9*10 1 + 8*10

Hemos descompuesto el valor expresado "18598" multiplicndolo por la base del sistema (10) elevada a la posicin del digito en la expresin.

El nmero 1 se encuentra iniciando la expresin y guarda en su interior 10 000 (Para comprobarlo: si eliminamos el 1 el resultado ser (18598-10 000)) por lo tanto 10 000 es igual a 10
4

(1*104)=10 000 + (8*103)= 8 000

En el sistema de numeracin binario la misma formula es aplicable:

10 (nmero binario) = 1*2

+ 0*2 0

Lo que indica que 10, en el sistema decimal es igual 2, en realidad en el sistema de numeracin binario se puede definir cualquier nmero entero mayor o igual a 0, sin embargo la estructura de almacenamiento Byte solo fue diseada desde su origen para almacenar hasta 256 porque incluye como mximo 8 bits (28 = 256) (recordemos que se toma en cuenta el 0 por lo cual 255 equivaldr a 256) y se escogi este valor como mximo porque es la totalidad de caracteres disponibles en la tabla ASCII, que incluye todos los caracteres validos dentro de un computador, para comprobar esto podemos guardar un carcter en un archivo sin formato y como resultado tendremos que siempre ocupar 1 byte, si colocamos 2 caracteres el tamao del archivo ser igual a 2 bytes. Lo que justifica que 1 byte = 8 bits = puede almacenar hasta 256. y 1 bit es la mnima unidad en la que se puede almacenar informacin, Ejemplo: el tipo booleano (bool) ocupa en memoria 1 bit, por tanto TRUE = 1 FALSE=0.

Por esta razn la mayora de los hardwares con capacidad de almacenamiento tales como Discos duros, memorias, y otros dispositivos; su capacidad siempre ser divisible entre 2 , al igual que las dems estructuras de almacenamiento ( Kb, Mb, Gb, Tb, etc)

Como refera anteriormente, la tabla ASCII incluye todos los caracteres validos dentro del computador, desde todas las letras en minsculas y maysculas, nmeros y otros especiales, estos ltimos utilizados en su mayora como delimitadores o separadores gua dentro de un formato de archivo de contenido binario (PDF, DOC, EXE, DLL, OCX, ENTRE OTROS) Ejemplo de delimitadores: La direccin IP incluye 4 pares de cuyo valor mximo es 255 para poder representarlo en decimal se hace ms que necesario, obligatorio el uso de delimitadores por lo

cual se emplea un ". (Punto)" de modo tal que 255.255.255.255, para reducir esta informacin a 4 bytes podremos acudir a la tabla ASCII.

Por ejemplo el carcter "A" dentro de la tabla ASCII en el sistema decimal ocupa 64, podemos ejecutar una funcin ampliamente reconocida por lenguajes de programacin entre ellos (Delphi, C++, VB, Php, etc) llamada ORD que producir como resultado de ord(64) "A" si por el contrario ejecutamos chr('A') es resultado ser 64 en decimal, el cual representado en binario equivaldra a "1000000" , auque 64 no ocupe fsicamente los 255 (1 byte completo) su tamao en disco siempre ser 1 byte, porque la mayora de sistemas operativos y hardware desde su ensamblaje esta orientados para reservar un mnimo de espacio en memoria y en disco tomando en cuenta que ese valor puede ser modificado a 255 (mximo) 0 (mnimo) en cualquier momento.

Por tanto podemos decir que un bit tiene un valor de acuerdo a su posicin ubicacin y para hallar ese valor solo tenemos que descomponer 255.

128 62 32 16 8 4 2 1 2 3

4 5 6 7 8(bits)

Como comentbamos anteriormente el bit se conforma de 0 y 1 respectivamente por tanto afirmaremos a partir de ahora que 0 ES IGUAL A FALSO (false) Y 1 ES IGUAL A VERDADERO (true) si tenemos un conjunto de 8 bits lo sumaremos segn su posicin, siempre y cuando el bit sea VERDADERO es decir su contenido sea igual a 1, ejemplo: dado los bits "10111011" para convertirlo a decimal aplicamos la tabla:

128 62 32 16 8 4 2 1 1 0 1 1 1 0 1 1

Y posteriormente sumamos solo los valores que son "VERDADEROS" entonces: 128+32+16+8+2+1=187 Enhorabuena 10111011=187!, entonces podemos decir que para almacenar 256 necesitaremos que los 8 bits sean verdaderos es decir 8 bits y ya tendemos nuestro byte.

Para hacer el proceso contrario es decir de decimales a binario, solo tenemos que descomponer el decimal dividindolo siempre entre 2 hasta que el valor sea igual a 1, la agrupacin de los residuos obtenidos ser nuestro valor binario; obviamente los residuos siempre sern (0 1).

Los bits son ampliamente utilizados para codificar datos, comprimir informacin, etc. Por ejemplo el formato de imgenes diseado por Microsoft (.BMP) calcula el rea de la imagen es decir base por altura lo que es igual a ancho por alto la cual asume como la cantidad de puntos disponibles, estos puntos a su vez almacenan un color hexadecimal de 3 pares conocido como RGB que almacena los colores ROJOS, VERDE Y AZUL, por lo cual para el almacenamiento del color emplea 3 bytes (255,255,255) y los escribe con ASCII , por cada punto , lo que indica si una imagen es de 10 px x 10 px emplear 300 bytes para almacenar los puntos y otros adicionales que guardan informacin de propiedades y caractersticas de esencial importancia. Utilizando bytes delimitadores o separadores en caso de no conocer el final del valor, es decir si la cantidad de bytes a emplear por la cabecera del formato (que contiene informacin) se desconoce puede variar dependiendo de factores, se hace indispensable el uso de delimitadores (ASCII DEFINIDOS COMO DELIMITADORES), si por el contrario siempre se situar entre los bytes 10 y 20 por ejemplo (no ser necesario). Por tal motivo cuando leemos un archivo (con un programa desarrollado por nosotros) debemos especificar cuantos bytes leeremos por cada secuencia, en el caso de los colores del formato (BMP) bastara con leer de 3 en 3, cabe destacar que un archivo se puede leer hasta 1024 es decir 1 KB de secuencia que equivale a una lnea de informacin, a partir de esa base se han diseado mecanismos de comprensin que agrupa los bits repetido en matrices o arrays.

Para hacer posible este manejo existen algunos operadores similares a los de lgica ( OR, AND, NOT, XOR, ETC) mejor conocidos como operadores bit a bit.

Desplazando bits:

Podemos definirlo como la accin de transportar bytes de un extremo de la expresin a otro, como la expresin esta conformada por 2 solo puede hacerse en dos sentidos, izquierda y derecha. a. Desplazando bits a la izquierda (<<) Consiste en mover la cantidad de bit indicada en la expresin, de la izquierda a la derecha, esta operacin equivale a multiplicar por 2.

Por ejemplo: 16 <<2 desplazaremos 2 bits de la izquierda a la derecha 16 en binario equivale a 00010000 por lo cual moveremos los dos primeros bits a la parte de atrs del numero (derecha) de tal modo que quedar 01000000 lo cual equivale

a 64.

Por tanto si multiplicamos

(16*2)=32 (32*2)=64 1 bit


b. c. Desplazando bits a la derecha (>>) Consiste en mover la cantidad de bit indicada en la expresin, de la derecha a la izquierda, esta operacin equivale a dividir por 2.

2 bits

Por ejemplo:

128 >>4 desplazaremos 4 bits de la derecha a la izquierda. 128 en binario es igual a: 10000000, moveremos los ltimos 4 bits a la parte inicial ( de derecha a izquierda) , el resultado ser 00001000 cuyo valor es igual a 8

por tanto si dividimos

(128 / 2)=64 (64/2)=32 (32/2)=16 (16/2)=8 1 bit


d. Se emplea 2 por ser la base del sistema de numeracin binario.

2 bits

3 bits

4 bits

Operador de lgica OR |

Recordemos que llamaremos 0 en binario False y 1 True, entonces el operador OR

Evaluara las expresiones y producir TRUE es decir 1 solo si el uno de los 2 bits a comparar es igual a 1. Ejemplo:

Expresin: 5 | 12 5 en binario es igual a 00000101

12 en binario = 00001100 Resultado : 00001101 = 13

Solo si un par de los bits a comparar es 1 el resultado ser 1, se comporta exactamente igual a una condicin: (true || false) es igual a true; (false || false) es igual a false, su razn se debe a que la condicin de dos o ms argumentos se transforma siempre a binarios para realizar la comparacin utilizando el procesador y la memoria de computador.

Operador de lgica AND &

Solo si el par de bits a comparar es igual a 1 el resultado ser 1.

Expresin: 5 & 12 5 en binario es igual a 00000101 12 en binario = 00001100 Resultado : 00000100 = 4

Es similar a (TRUE && TRUE) es igual a true, (False && True) es igual a false.

Operador XOR ^

Solo si el par de bits a comparar es diferente ser igual a 1. Expresin: 5 ^ 12 5 en binario es igual a 00000101 12 en binario = 00001100 Resultado : 00001001 = 9

Similar a (TRUE XOR FALSE) es igual a true, ( TRUE XOR TRUE) es igual a false.

Operador Not ~

Solo si el bit a comparar es igual a 0 (False) ser igual a 1. Expresin: ~5 5 en binario es igual a 00000101 Resultado : 00000010 = 2

Similar a (!FALSE) es igual a true

Importancia del manejo de los bits

Como programador dar una opinin muy personal, se hace indispensable en la construccin de aplicaciones a gran escala el desarrollo formatos personales basados en esquemas que almacenan la informacin empleada de modo comprimido para la utilizacin de un o unos recursos de nuestra aplicacin, permitindole al usuario final mayor comodidad y seguridad durante el transporte de la informacin y ofrecindole la capacidad de hacerlas compatibles con otras aplicaciones, y dejar a un lado (dependiendo del objetivo) el tpico uso de bases de datos que requieren recursos adicionales del computador adems de interpretadores, etc. Considero que la informacin redactada contribuye considerablemente a encaminar vuestros esfuerzos en esa direccin.

Concuclusin:

Podemos decir que el computador sin software solo tiene capacidades para hacer operaciones aritmticas simples (sumas, restas, multiplicacin, etc) Y es el software que valindose se esas simples operaciones con procesos como los antes explicados puede crear la interfaz como de la que hoy disfrutamos en materia de Sistemas Operativos, todos los lenguajes desde los ms altos como Php hasta los ms bajos como Assembler pasan por binario, cada vez que movemos el Mouse eso esta produciendo un procesamiento de datos binarios, en fin, orienta tus esfuerzos como programador a reducir al mximo el consumo de recursos, seguro lograras una suma consumiendo menor cantidad de recursos que lo habitual.

Tipos de programacin
Existen varias clases de programacin, dependiendo de los mtodos utilizados y las tcnicas empleadas.
Los tipos o tcnicas de programacin son bastante variados, aunque puede que muchos de los lectores slo conozcan una metodologa para realizar programas. En la mayora de los casos, las tcnicas se centran en programacin modular y programacin estructurada, pero existen otros tipos de programacin. Los explicaremos a lo largo del artculo.

Programacin estructurada (PE)

La programacin estructurada esta compuesta por un conjunto de tcnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuracin y mantenimiento del mismo.

Esta programacin estructurada utiliza un nmero limitado de estructuras de control, reduciendo as considerablemente los errores.

Esta tcnica incorpora:

Diseo descendente (top-dow): el problema se descompone en etapas o estructuras jerrquicas. Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras ms simples capaces de ser resueltas con mayor facilidad. Estructuras bsicas: existen tres tipos de estructuras bsicas:

Estructuras secunciales: cada accin sigue a otra accin secuencialmente. La salida de una accin es la entrada de otra.

Estructuras selectivas: en estas estructuras se evalan las condiciones y en funcin del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lgicas.

Estructuras repetitivas: son secuencias de instrucciones que se repiten un nmero determinado de veces.

Las principales ventajas de la programacin estructurada son:

Los programas son mas fciles de entender Se reduce la complejidad de las pruebas Aumenta la productividad del programador Los programas queden mejor documentados internamente.

Un programa esta estructurado si posee un nico punto de entrada y slo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por ltimo, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos.

Programacin modular En la programacin modular consta de varias secciones dividas de forma que interactan a travs de llamadas a procedimientos, que integran el programa en su totalidad. En la programacin modular, el programa principal coordina las llamadas a los mdulos secundarios y pasa los datos necesarios en forma de parmetros. A su vez cada modulo puede contener sus propios datos y llamar a otros mdulos o funciones. Programacin orientada a objetos (POO) Se trata de una tcnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilizacin de los objetos. El elemento principal de la programacin orientada a objetos es el objeto. El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organizacin. Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento. El polimorfismo y la herencia son unas de sus principales caractersticas y por ello dedicaremos ms adelante un artculo exclusivamente a tratar estos dos trminos. En DesarrolloWeb.com hemos publicado anteriormente una explicacin de lo que es la programacin orientada a objetos. Programacin concurrente Este tipo de programacin se utiliza cuando tenemos que realizar varias acciones a la vez. Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultanea. Se trata de una programacin ms lenta y laboriosa, obteniendo unos resultados lentos en las acciones. Programacin funcional Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones. Programacin lgica Se suele utilizar en la inteligencia artificial y pequeos programas infantiles. Se trata de una programacin basada en el clculo de predicados (una teora matemtica que permite lograr que un ordenador basndose en hecho y reglas lgicas, pueda dar soluciones inteligentes).

Importancia de la documentacin

Describimos los aspectos claves para el desarrollo de una buena documentacin del programa a entregar al cliente.
La documentacin de los programas es un aspecto sumamente importante, tanto en el desarrollo de la aplicacin como en el mantenimiento de la misma. Mucha gente no hace este parte del desarrollo y no se da cuenta de que pierde la posibilidad de la reutilizacin de parte del programa en otras aplicaciones, sin necesidad de conocerse el cdigo al dedillo.

La documentacin de un programa empieza a la vez que la construccin del mismo y finaliza justo antes de la entrega del programa o aplicacin al cliente. As mismo, la documentacin que se entrega al cliente tendr que coincidir con la versin final de los programas que componen la aplicacin.

Una vez concluido el programa, los documentos que se deben entregar son una gua tcnica, una gua de uso y de instalacin.

Tipos de documentacin

La documentacin que se entrega al cliente se divide claramente en dos categoras, interna y externa:

Interna: Es aquella que se crea en el mismo cdigo, ya puede ser en forma de comentarios o de archivos de informacin dentro de la aplicacin. Externa: Es aquella que se escribe en cuadernos o libros, totalmente ajena a la aplicacin en si. Dentro de esta categora tambin se encuentra la ayuda electrnica.

La gua tcnica

En la gua tcnica o manual tcnico se reflejan el diseo del proyecto, la codificacin de la aplicacin y las pruebas realizadas para su correcto funcionamiento. Generalmente este documento esta diseado para personas con conocimientos de informtica, generalmente programadores.

El principal objetivo es el de facilitar el desarrollo, correccin y futuro mantenimiento de la aplicacin de una forma rpida y fcil.

Esta gua esta compuesta por tres apartados claramente diferenciados:

Cuaderno de carga: Es donde queda reflejada la solucin o diseo de la aplicacin. Esta parte de la gua es nicamente destinada a los programadores. Debe estar realizado de tal forma que permita la divisin del trabajo

Programa fuente: Es donde se incluye la codificacin realizada por los programadores. Este documento puede tener, a su vez, otra documentacin para su mejor comprensin y puede ser de gran ayuda para el mantenimiento o desarrollo mejorado de la aplicacin. Este documento debe tener una gran claridad en su escritura para su fcil comprensin.

Pruebas: es el documento donde se especifican el tipo de pruebas realizadas a lo largo de todo el proyecto y los resultados obtenidos.

La gua de uso

Es lo que comnmente llamamos el manual del usuario. Contiene la informacin necesaria para que los usuarios utilicen correctamente la aplicacin.

Este documento se hace desde la gua tcnica pero se suprimen los tecnicismos y se presenta de forma que sea entendible para el usuario que no sea experto en informtica.

Un punto a tener en cuenta en su creacin es que no debe hacer referencia a ningn apartado de la gua tcnica y en el caso de que se haga uso de algn tecnicismo debe ir acompaado de un glosario al final de la misma para su fcil comprensin.

La gua de instalacin

Es la gua que contiene la informacin necesaria para implementar dicha aplicacin. Dentro de este documento se encuentran las instrucciones para la puesta en marcha del sistema y las normas de utilizacin del mismo.

Dentro de las normas de utilizacin se incluyen tambin las normas de seguridad, tanto las fsicas como las referentes al acceso a la informacin.

Metodologa de la programacin
En este artculo y los sucesivos veremos las herramientas y tcnicas que nos ayudan a disear algoritmos para la resolucin de los problemas en la programacin estructurada.
Estructuras de un programa

Un programa se va a dividir en 3 partes claramente diferenciadas:

procesos de entrada proceso de datos procesos de salida

Todo programa esta constituido por un conjunto de instrucciones capaces de gestionar un conjunto de datos.

Algoritmos

Un algoritmo es la descripcin abstracta de todas las acciones que debe realizar un ordenador, que nos conduce a la solucin del problema. Debe ser conciso y detallado, as como finito, pero sobre todo tiene que ser claro y lo ms sencillo posible.

Herramientas y tcnicas para el diseo de algoritmos

Para el diseo de algoritmos lo que ms se utiliza son los diagramas de flujos.

Diagramas de flujo

Los diagramas de flujo son representaciones grficas que mediante el uso de smbolos unidos mediante lneas de flujo, muestran la secuencia lgica que se debe suceder para la solucin del problema. Los diagramas de flujo deber ser independientes del lenguaje de programacin empleado, deben ser flexibles y sencillos. Por otro lado tienen que estar normalizados con algn estndar como puede ser el ISO (a nivel

mundial), ANSI (a nivel americano) o el IEEE ( a nivel europeo)

Existen 3 tipos de diagramas de flujos:

Organigramas: Representacin grfica sencilla con los elementos que representas las entradas y salida de datos del programa Ordinograma: Representacin grfica con secuencias lgicas y detalladas de todos los pasos a seguir para la resolucin del algoritmo. Pseudocdigo: Lenguaje intermedio entre el natural y el de programacin que representa mediante la palabra la solucin del algoritmo.

Dentro de estos tres los ms utilizados son los ordinogramas o pseudocdigos, ya que son los que ms ayudan a los programadores a la hora de pasar esos algoritmos a los distintos lenguajes de programacin.

En los siguientes artculos profundizaremos ms en cada uno de ellos y aprenderemos a construirlos y leerlos para su posterior paso al lenguaje de programacin requerido.

Diagrama de flujos
Explicamos lo que son, cmo se construyen y las representaciones grficas utilizadas para su construccin.
Un diagrama de flujos es una representacin grfica que presenta las entradas y salidas de datos al programa.

Los diagramas de flujos se dividen en tres partes claramente diferenciadas:

Entradas: que debe aparecer en la parte superior de la representacin grafica Proceso: que debe aparecer en la parte central de la representacin grafica Salidas: que debe aparecer en la parte inferior

Smbolos para los dispositivos de entrada/salida

Dibujo

Dispositivo teclado

Tipo entrada

pantalla

salida

disquette

Entrada/Salida

Impresora

Salida

Discos magnticos entrada/salida

Smbolos para los dispositivos de procesos

Smbolo

Proceso Cualquier proceso u operacin que realicemos, salvo que operemos con ficheros.

Clasificacin de datos en un fichero

Extraccin de datos de un fichero

Unin de varios ficheros en uno solo

Fechas utilizadas en los flujos de datos

Flechas

Funcin Lineas de teleproceso Direccin del flujo de datos

Para entender mejor el diagrama tenemos estos tres ejemplos:

Diagrama que refleja la suma de 3 numeros leidos por teclado, el resultado aparece por pantalla

Diagrama que refleja la actualizacin de un fichero de datos (nominas por ejemplo)

Diagrama que refleja la unin de varios ficheros en uno solo.

Ordinogramas
Uno de los diagramas de flujos ms utilizado. Muy parecido al Organigrama pero ms detallado y preciso.
Se trata de otro diagrama de flujos que muestra la secuencia lgica y detallada de las operaciones que necesitamos para la realizacin de un programa.

Al igual que el organigrama, este tambin debe ser independiente del lenguaje de programacin que utilicemos.

Estructura de un ordinograma

Todo ordinograma debe estar compuesto de:

Un smbolo de inicio de ejecucin del programa

La secuencia de operaciones necesarias para el correcto funcionamiento del programa. Las operaciones seguirn un orden (de arriba abajo y de izquierda a derecha). Un smbolo que indique el final del programa.

Smbolos utilizados

Simbolo

Descripcin Para inicio/fin o para una parada indeterminada Smbolo de entrada/salida genrico Representa una operacin o proceso general con datos de memoria. Smbolo de subprograma o subrutina. Se utiliza para realizar una llamada a un modulo del programa. Smbolo de decisin para realizar una pregunta con dos posibles respuestas. Es lo que llamamos smbolo de seleccin simple.

Smbolo de seleccin mltiple

Smbolo de bucle definido.

Conector. Se utiliza para agrupar varias lneas de flujo que salen del mismo origen. Smbolo para poner comentarios

Reglas a la hora de hacer ordinogramas

Todos los smbolos utilizados deben estar unidos por lneas de flujo. No se pueden cruzar las lneas de flujo A un smbolo de proceso pueden llegarle varias lneas de flujo pero solo puede salir una de l. Al smbolo de inicio no puede llegarle ninguna lnea de flujo De un smbolo de fin no puede salir ninguna lnea de flujo pero si le pueden llegar varias.

Ejemplos

Este primer ejemplo te dice el mayor de dos nmeros.

Este segundo te devuelve los grados introducidos en Kelvin y Fahrenheit.

Pseudocdigo
Lenguaje intermedio entre nuestro lenguaje y el lenguaje de programacin.

El principal objetivo del pseudocdigo es el de representar la solucin a un algoritmo de la forma ms detallada posible, y a su vez lo ms parecida posible al lenguaje que posteriormente se utilizara para la codificacin del mismo.

Las principales caractersticas de este lenguaje son:

Se puede ejecutar en un ordenador Es una forma de representacin sencilla de utilizar y de manipular. Facilita el paso del programa al lenguaje de programacin. Es independiente del lenguaje de programacin que se vaya a utilizar. Es un mtodo que facilita la programacin y solucin al algoritmo del programa.

Todo documento en pseudocdigo debe permitir la descripcin de:

Instrucciones primitivas Instrucciones de proceso Instrucciones de control Instrucciones compuestas Instrucciones de descripcin

Estructura a seguir en su realizacin:

Cabecera:

Programa: Modulo: Tipos de datos: Constantes: Variables:

Cuerpo:

Inicio Instrucciones Fin

Para comentar en pseudocdigo se le antepone al comentario dos asteriscos (*)

Ejemplos

* Programa que calcula el rea de un cuadrado a partir de un lado dado por teclado.

Programa: area_cuadrado Modulo: main **( tambin se puede llamar principal) Variables: lado: natural area: natural Inicio Visualizar "Introduce el lado del cuadrado" Leer lado Area<- lado * lado Visualizar "El rea del cuadrado es", area Fin

* Programa que visualice la tabla de multiplicar del numero introducido por teclado

Programa: Tabla multiplicar Modulo: main Variables: t: entero num : entero Inicio Visualizar "Introduce un nmero" Leer num Desde t=1 hasta t=10 repetir Visualizar num, " X", t, "=", num*t Fin desde Fin

Una vez que tenemos preparado un diagrama de flujos (ordinograma u organigrama) y un pseudocdigo ya podemos comenzar con la codificacin del programa en nuestro ordenador. A partir de aqu todo vara dependiendo del lenguaje de programacin que utilicemos, pero en todos los programas tendremos que definir los tipos de datos que utilizaremos. De todo esto hablar en el siguiente artculo.

Tipos de datos
En este artculo hablaremos de los posibles tipos de datos que podemos utilizar en la creacin de nuestros programas.
Antes de meternos de lleno en los diferentes tipos de datos os paso la descripcin de dato para que todo quede claro desde el principio.

Dato

Elemento que no manejamos o almacenamos en un sistema informtico. Los datos manejados en un algoritmo deben llevar asociado un identificador, un tipo de dato y su valor.

Datos bsicos

Dentro de los datos bsicos nos podemos encontrar con los datos estticos, derivados y estructurados.

Los datos estticos son los siguientes:

entero, real y natural para los nmeros carcter cadena lgico enumerado

Cmo dato derivado nos encontramos con los punteros que hoy en da no se utilizan casi, a no ser que se programe en C.

Los ms complejos son los estructurados y los principales son:

array Estructuras Listas, pilas, colas y rboles ( muy utilizados en C) Clases y objetos Ficheros Base de datos

Los cuatro primeros son los internos mientras que los dos ultimos correspondes a tipos de datos externos.

Constantes y variables

Se define como variable a una posicin de memoria referenciada por un identificador donde se puede almacenar un valor determinado (Tipo de dato).

Se define como constante a un valor que no se modifica a lo largo de toda la ejecucin del programa.

Operadores
Pasamos a detallar los diferentes operadores que hay y su funcionamiento.
Los operadores se clasifican en aritmticos, alfanumricos, relacionales, lgicos y por ltimo un pequeo grupo de operadores especiales que depender de los diferentes lenguajes utilizados.

Operadores aritmticos:

Para la suma y la resta se utilizan respectivamente los smbolos; "+" "-" Para la divisin y hallar el resto de la misma se utilizan respectivamente los smbolos; "/" "%" Para multiplicar y elevar potencias se utilizan respectivamente los siguientes smbolos; "*" "**"

Operadores alfanumricos: Son los utilizados para trabajar con cadenas. Principalmente utilizamos el smbolo "+" para concatenar cadenas. Luego dependiendo de el lenguaje puede funcionar o no el smbolo "-" para concatenar cadenas eliminando los espacios en blanco.

Operadores relacionales:

El smbolo "==" nos compara dos valores El smbolo "!=" significa distinto y nos devuelve verdadero si los valores comparados son distintos. Luego tenemos lo dems signos como son; "<", ">", "<>", "<=", ">="

Operadores lgicos: Como operadores lgicos nos encontramos con el smbolo "!" o "not" para la negacin y el smbolo "&&" o "and" para la conjuncin.

Ejemplos

Aritmticos. A=3 B=2 X=a**2 donde x valdra 9 X=a/2 donde x valdra 1.5 X= a*2 donde x valdra 6 X= a%b donde x valdra 1

Alfanumricos: A="Hola" B=" Que tal" X=a+b donde x valdra "Hola Que tal"

Relacionales: Si x==a entonces Instrucciones Sino Instrucciones Fin si

Lgicas Si !a entonces La variable esta vaca Fin si

Si a==3 and b==3 entonces A y b son iguales Fin si

Expresiones e instrucciones
Pasamos a describir estos dos trminos aplicados a la programacin y ponemos algn ejemplo.
Expresiones

Como definicin de expresiones entendemos que es un conjunto de operandos y operadores, que despus de ser evaluados devuelven un determinado resultado.

En funcin del resultado obtenido las podemos clasificar en:

Expresiones numricas Expresiones alfanumricas Expresiones lgicas booleanas

Instrucciones

Como definicin de instrucciones entendemos que es un hecho o suceso de duracin limitada que genera unos cambios en la ejecucin del programa. Existen varios tipos de instrucciones:

Instrucciones de definicin de datos X: entero Instrucciones primitivas

o o o

de entrada (leer x) de asignacin (x<-3) de salida (visualizar x)

Instrucciones compuestas: Son aquellas instrucciones que son ejecutadas directamente por el procesador y estn constituidas por un conjunto de acciones agrupadas en mdulos.

Instrucciones de control: Son utilizadas para controlar la secuencia de ejecucin del programa. Dentro de este tipo de instrucciones se encuentran las instrucciones de salto que son aquellas que alteran o rompen la secuencia de ejecucin de un programa. Este tipo de instrucciones no se utilizan en la programacin estructurada. A su vez tenemos las instrucciones alternativas que controlan la ejecucin o no de una o ms instrucciones en funcin de la condicin. Estn las instrucciones de alternativa simple, doble y mltiple. Por ultimo dentro de este grupo de instrucciones de control estn las instrucciones repetitivas que son aquellas que nos permiten alterar la secuencia normal de la ejecucin de un programa haciendo posible que un grupo de instrucciones se puedan repetir mas de una vez. Todo bucle esta compuesto de tres partes claramente diferenciadas:

o o o

A: Parte de la condicin, puede ser cualquier expresin. B: Cuerpo del bucle. Son el conjunto de instrucciones que se repetirn. C Parte final del bucle. Es el ultimo en ejecutarse cuando no se cumple la condicin.

Los elementos que intervienen en la expresin que conforma la condicin deben estar siempre reflejados en el cuerpo del bucle de tal forma que siempre exista la posibilidad de salir del mismo.

Existen dos tipos principales de bucles:

Bucle mientras (do, while) Se repiten las instrucciones hasta que no se cumpla la condicin Mientras <<condicin>> hacer Instrucciones Fin mientras

Bucle para (for) se repiten las instrucciones un nmero determinado de veces. Para v<-0 hasta vf[con i de incremento] hacer Instrucciones Fin para

Con esto ya tendramos vistos los conceptos bsicos para poder empezar a programar en cualquier lenguaje de programacin sabiendo eso si su sintaxis y los posibles cambios respecto a otros lenguajes de programacin. Ahora ya toca aprender algn lenguaje en concreto y empezar a practicar todo lo aprendido en este manual.

Funciones recursivas. Recursividad


Explicamos qu es una funcin recursiva y cmo implementar recursividad o hacer funciones recursivas en un lenguaje de programacin.
Dentro del manual de iniciacin a la programacin que venimos publicando en DesarrolloWeb.com, vamos a ver una de las primeras cosas que ensean en la creacin de algoritmos: la recursividad. Como definicin general, podemos decir que una funcin recursiva es aquella que se llama a si misma para resolverse. Dicho de otra manera, una funcin recursiva se resuelve con una llamada a si misma, cambiando el valor de un parmetro en la llamada a la funcin. A travs de las sucesivas llamadas recursivas a la funcin se van obteniendo valores que, computados, sirven para obtener el valor de la funcin llamada originalmente. El proceso de llamadas recursivas siempre tiene que acabar en una llamada a la funcin que se resuelve de manera directa, sin necesidad de invocar de nuevo la funcin. Esto ser siempre

necesario, para que llegue un momento que se corten las llamadas reiterativas a la funcin y no se entre en un bucle infinito de invocaciones. Quizs en la teora cueste ms ver lo que es una funcin recursiva que por la prctica. Un ejemplo tpico de recursividad sera la funcin factorial. El factorial es una funcin matemtica que se resuelve multiplicando ese nmero por todos los nmeros naturales que hay entre l y 1. Por ejemplo, factorial de 4 es igual a 4 * 3 * 2 * 1. Si nos fijamos, para el ejemplo de factorial de 4 (factorial se expresa matemticamente con un signo de admiracin hacia abajo, como 4!), se puede resolver como 4 * 3! (4 * factorial de 3). Es decir, podemos calcular el factorial de un nmero multiplicando ese nmero por factorial de ese nmero menos 1.

n! = n * (n-1)!

En el caso de la funcin factorial, tenemos el caso bsico que factorial de 1 es igual a 1. As que lo podremos utilizar como punto de ruptura de las llamadas recursivas. As pues, vamos a realizar la codificacin de la funcin recursiva factorial. Primero veamos un pseudocdigo:

funcion factorial(n) si n=1 entonces factorial = 1 sino factorial = n * factorial(n-1) fin funcion

Ahora veamos cmo se implementara esta funcin con el lenguaje de programacin Javascript:

function factorial(n){ if(n==1) return 1 else return n * factorial(n-1) }

Como se puede ver, la recursividad no representa ninguna dificultad y de hecho es una herramienta muy til para programacin de algoritmos. En desarrollo web .com hemos publicado

en diversos lugares funciones que trabajan de forma recursiva. Entiendo que en un principio puede resultar dificil de entender o de saber cuando utilizar, pero cuando dominemos el concepto veremos que es una manera excelente de resolver problemas con cualquier lenguaje de programacin. Hay muchos algoritmos que slo se resuelven con recursividad, o al menos cuya resolucin ms directa y elegante est basada en realizar funciones recursivas, que se llamen a si mismas para obtener el resultado final. Por ejemplo el recorrido de diversas estructuras de datos, como las de tipo rbol, siempre se acostumbran a realizar de manera recursiva, para poder estar seguros de que pasamos por todas las ramas del rbol.
Referencia: Doy algunas direcciones de artculos de DesarrolloWeb.com que resuelven problemas creando funciones recursivas:

Listar directorios y subdirectorios con PHP Crea tu propio buscador con ASP

http://www.desarrolloweb.com/articulos/listar-directorios-subdirectorios-php.html http://www.desarrolloweb.com/articulos/292.php

You might also like