You are on page 1of 62

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.

com

Manual de iniciacin a la programacin


Este manual trata de introducirnos a los terminos generales de la programacin, para as sentar las bases para una buena programacin en cualquier lenguaje.

Autores del manual


Este manual ha sido realizado por los siguientes colaboradores de DesarrolloWeb.com:
Sara Alvarez
Equipo DesarrolloWeb.com http://www.desarrolloweb.com (36 captulos)

Emmanuel Garca De Caro


Webmaster de Blasten.com http://www.blasten.com (1 captulo)

Miguel Angel Alvarez


Director de DesarrolloWeb.com http://www.desarrolloweb.com (1 captulo)

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Conceptos bsicos y definiciones sobre programacin


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,

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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.
Artculo por

Sara Alvarez

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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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
Sara Alvarez

Artculo por

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

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

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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:
Artculo por

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.
Sara Alvarez

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 n la

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com posicin que ocupa el digito "N" dentro del Nmero. Ejemplos en sistema decimal (base:10): 18598 1*10
4

+ 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
1

+ 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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

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 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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

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 2 bits

b. 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. 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 2 bits 3 bits 4 bits

Se emplea 2 por ser la base del sistema de numeracin binario. Operador de lgica OR | Recordemos que llamaremos 0 en binario False y 1 True, entonces el operador OR

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

10

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com esfuerzos en esa direccin. Conclusin: 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.
Artculo por

Emmanuel Garca De Caro

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:

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

11

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

12

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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).
Artculo por

Sara Alvarez

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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

13

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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.
Artculo por

Sara Alvarez

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

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

14

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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.
Artculo por

Sara Alvarez

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 grfica Proceso: que debe aparecer en la parte central de la representacin grfica Salidas: que debe aparecer en la parte inferior

Smbolos para los dispositivos de entrada/salida

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

15

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Dibujo

Dispositivo

Tipo

teclado

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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

16

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

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

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

17

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Para entender mejor el diagrama tenemos estos tres ejemplos: Diagrama que refleja la suma de 3 nmeros ledos por teclado, el resultado aparece por pantalla

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

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

18

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Diagrama que refleja la unin de varios ficheros en uno solo.

Artculo por

Sara Alvarez

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

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

19

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

20

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

21

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

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


Artculo por

Sara Alvarez

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.
22

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Es un mtodo que facilita la programacin y solucin al algoritmo del programa.

Todo documento en pseudocdigo debe permitir la descripcin de: Instrucciones Instrucciones Instrucciones Instrucciones Instrucciones primitivas de proceso de control compuestas 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

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

23

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com


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.
Artculo por

Sara Alvarez

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.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

24

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

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.
Artculo por

Sara Alvarez

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

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

25

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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
Artculo por

Sara Alvarez

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 de entrada (leer x) de asignacin (x<-3) de salida (visualizar x)
26

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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: 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
27

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com 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.
Artculo por

Sara Alvarez

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){

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

28

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com


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

Artculo por

Miguel Angel Alvarez

Introduccin a las bases de datos


Comenzamos con los conceptos bsicos para conocer lo que es una base de datos.
Las bases de datos se ingeniaron gracias a la necesidad de las grandes empresas de almacenar ingentes cantidades de informacin de una forma rpida, sencilla y fiable, y que a su vez pudieran acceder a ella en cualquier momento sin necesidad de desplazarse a salas dedicadas a archivar documentacin, como hasta hace poco se venia haciendo. Cuando comenz el despegue de los programas informticos se empezaron a almacenar datos en los archivos de los programas, lo cual era ms cmodo pero aun as tenan grandes dificultades a la hora de querer modificar registros, estructuras o simplemente buscar informacin. A finales de los aos sesenta nacen las bases de datos. En estas bases de datos se guardan los datos utilizados por los usuarios, empresas, etc. Y los programas que los utilizan no se tienen que preocupar de su mantenimiento ni almacenaje por lo que un cambio en la base de datos no tiene porque afectar en principio a los programas que la utilizan. Como definicin de base de datos entendemos que se trata de un conjunto de datos interrelacionados y almacenados sin redundancias innecesarias, los cuales sirven a las aplicaciones sin estar relacionados de una manera directa entre ellos.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

29

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Una base de datos puede ser utilizada por varias aplicaciones y usuarios. Toda base de datos debe permitir insertar, modificar y borrar datos por lo que en las bases de datos se guarda informacin de dos tipos: Los datos de usuarios (datos usados por las aplicaciones) Los datos de sistema (datos que la base de datos utiliza para su gestin. Ej. Datos de los usuarios que tienen acceso a la base de datos)

Organizacin de una base de datos Para considerar a una base de datos organizada debe cumplir los siguientes objetivos: Tiene que ser verstil: esto quiere decir que, dependiendo de los usuarios o las aplicaciones, puedan hacer diferentes cosas o traten a los datos de formas distintas. Tiene que atender con la rapidez adecuada a cada aplicacin o empresa, atendiendo a lo que se la requiera. Tiene que tener un ndice de redundancia lo ms bajo posible. Tener una alta capacidad de acceso para ganar el mayor tiempo posible en la realizacin de consultas. Tener un alto ndice de integridad, esto significa que al tener muchos usuarios atacando a una misma base de datos no puede haber fallos en la insercin de datos, errores por redundancia o lenta actualizacin. Por supuesto tienen que tener un nivel altsimo de seguridad y privacidad ya que los datos que se pueden almacenar en una base de datos pueden ser altamente confidenciales o importantes. En este punto tambin entran los medios fsicos de proteccin contra fuego, robo, etc. Por ultimo tiene que ser posible su constante actualizacin para no dejar a la base de datos anticuada e inservible. Cuando hacemos un cambio en la organizacin fsica de los datos no debe afectar a los programas por lo que tambin tiene que tener una independencia fsica de los datos. Al igual que tiene que tener total independencia lgica con los datos, esto quiere decir que si hacemos cambios en la estructura lgica de los datos (agregar nuevos campos a una tabla) no deben afectar a las aplicaciones que utilicen esos datos.
Sara Alvarez

Artculo por

Arquitectura de las bases de datos


Mostramos los tres principales niveles que presentan las bases de datos.
Los usuarios no tienen porque conocer como estn organizados y almacenados los datos. Por este motivo una base de datos debe presentar los datos de forma que el usuario pueda interpretarlos y modificarlos. Evidentemente esto no lo podemos aplicar a un informtico que necesite saber donde se encuentran fsicamente los datos para poder tratarlos. Podemos destacar tres niveles principales segn la visin y la funcin que realice el usuario sobre la base de datos: Nivel Interno: es el nivel ms cercano al almacenamiento fsico de los datos. Permite escribirlos tal y como estn almacenados en el ordenador. En este nivel se disean los
30

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com archivos que contienen la informacin, la ubicacin de los mismos y su organizacin, es decir se crean los archivos de configuracin. Nivel conceptual: En este nivel se representan los datos que se van a utilizar sin tener en cuenta aspectos como lo que representamos en el nivel interno. Nivel externo: es el ms cercano al usuario. En este nivel se describen los datos o parte de los datos que ms interesan a los usuarios.

Estos tres niveles de visin de usuarios los proporcionan los sistemas gestores de base de datos (ya veremos ms adelante que significa esto). Una base de datos especifica tiene un nico nivel interno y un nico nivel conceptual pero puede tener varios niveles externos.

Artculo por

Sara Alvarez

Sistemas gestores de bases de datos


Introduccin a este concepto y caractersticas especiales.
Un sistema gestor de base de datos se define como el conjunto de programas que administran y gestionan la informacin contenida en una base de datos. Ayuda a realizar las siguientes acciones: Definicin de los datos Mantenimiento de la integridad de los datos dentro de la base de datos Control de la seguridad y privacidad de los datos

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

31

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Manipulacin de los datos

Un sistema gestor de base de datos est compuesto de: El gestor de la base de datos Se trata de un conjunto de programas no visibles al usuario final que se encargan de la privacidad, la integridad, la seguridad de los datos y la interaccin con el sistema operativo. Proporciona una interfaz entre los datos, los programas que los manejan y los usuarios finales. Cualquier operacin que el usuario hace contra la base de datos est controlada por el gestor. El gestor almacena una descripcin de datos en lo que llamamos diccionario de datos, as como los usuarios permitidos y los permisos. Tiene que haber un usuario administrador encargado de centralizar todas estas tareas. Diccionario de datos Es una base de datos donde se guardan todas las propiedades de la base de datos, descripcin de la estructura, relaciones entre los datos, etc. El diccionario debe contener: La descripcin externa, conceptual e interna de la base de datos Las restricciones sobre los datos El acceso a los datos Las descripciones de las cuentas de usuario Los permisos de los usuarios Los esquemas externos de cada programa

El administrador de la base de datos Es una persona o grupo de personas responsables del control del sistema gestor de base de datos. Las principales tareas de un administrador son: La definicin del esquema lgico y fsico de la base de datos La definicin de las vistas de usuario La asignacin y edicin de permisos para los usuarios Mantenimiento y seguimiento de la seguridad en la base de datos Mantenimiento general del sistema gestor de base de datos

Los lenguajes Un sistema gestor de base de datos debe proporcionar una serie de lenguajes para la definicin y manipulacin de la base de datos. Estos lenguajes son los siguientes: Lenguaje de definicin de datos (DDL). Para definir los esquemas de la base de datos Lenguaje de manipulacin de datos (DML). Para manipular los datos de la base de datos Lenguaje de control de datos(DCL). Para la administracin de usuarios y seguridad en la base de datos.
Sara Alvarez

Artculo por

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

32

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Modelos de bases de datos


Despus de realizar el diseo conceptual de una base de datos es necesario traducirlo al modelo lgico de datos.
Los modelos ms conocidos y utilizados son: Modelo de datos jerrquico Este modelo utiliza rboles para la representacin lgica de los datos. Este rbol esta compuesto de unos elementos llamados nodos. El nivel ms alto del rbol se denomina raz. Cada nodo representa un registro con sus correspondientes campos. La representacin grfica de este modelo se realiza mediante la creacin de un rbol invertido, los diferentes niveles quedan unidos mediante relaciones.

En este modelo solo se pueden representar relaciones 1:M, por lo que presenta varios inconvenientes: No se admiten relaciones N:M Un segmento hijo no puede tener ms de un padre. No se permiten ms de una relacin entre dos segmentos. Para acceder a cualquier segmento es necesario comenzar por el segmento raz El rbol se debe de recorrer en el orden designado.

Modelo de datos en red En este modelo las entidades se representan como nodos y sus relaciones son las lneas que los unen. En esta estructura cualquier componente puede relacionarse con cualquier otro. A diferencia del modelo jerrquico, en este modelo, un hijo puede tener varios padres. Los conceptos bsicos en el modelo en red son: El tipo de registro, que representa un nodo. Elemento, que es un campo de datos.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

33

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Agregado de datos, que define un conjunto de datos con nombre.

Este modelo de datos permite representar relaciones N:M Modelo de datos relacional Este modelo es el ms utilizado actualmente ya que utiliza tablas bidimensionales para la representacin lgica de los datos y sus relaciones. Algunas de sus principales caracteristicas son: Puede ser entendido y usado por cualquier usuario. Permite ampliar el esquema conceptual sin modificar las aplicaciones de gestin. Los usuarios no necesitan saber donde se encuentran los datos fsicamente.

El elemento principal de este modelo es la relacin que se representa mediante una tabla.
Artculo por

Sara Alvarez

Arquitectura cliente-servidor
Caractersticas principales de este tipo de arquitectura de cara a base de datos.
Esta arquitectura se divide en dos partes claramente diferenciadas, la primera es la parte del servidor y la segunda la de un conjunto de clientes. Normalmente el servidor es una mquina bastante potente que acta de depsito de datos y funciona como un sistema gestor de base de datos (SGBD). Por otro lado los clientes suelen ser estaciones de trabajo que solicitan varios servicios al servidor. Ambas partes deben estar conectadas entre s mediante una red. Una representacin grfica de este tipo de arquitectura sera la siguiente.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

34

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Este tipo de arquitectura es la ms utilizada en la actualidad, debido a que es la ms avanzada y la que mejor ha evolucionado en estos ltimos aos. Podemos decir que esta arquitectura necesita tres tipos de software para su correcto funcionamiento: Software de gestin de datos: Este software se encarga de la manipulacin y gestin de los datos almacenados y requeridos por las diferentes aplicaciones. Normalmente este software se aloja en el servidor. Software de desarrollo: este tipo de software se aloja en los clientes y solo en aquellos que se dedique al desarrollo de aplicaciones. Software de interaccin con los usuarios: Tambin reside en los clientes y es la aplicacin grfica de usuario para la manipulacin de datos, siempre claro a nivel usuario (consultas principalmente).

A parte de estos existen ms aplicaciones software para el correcto funcionamiento de esta arquitectura pero ya estn condicionados por el tipo de sistema operativo instalado, el tipo de red en la que se encuentra, etc.
Artculo por

Sara Alvarez

Modelo entidad-relacin
Mostramos las caractersticas bsicas de uno de los modelos conceptuales ms utilizados.
Este modelo se obtiene en tiempo de diseo de la base de datos. Fue propuesto por Peter Chen en 1976 y desde entonces se viene utilizando de una forma muy global. Se caracteriza por utilizar una serie de smbolos y reglas para representar los datos y sus relaciones. Con este modelo conseguimos representar de manera grafica la estructura lgica de una base de datos. Los principales elementos del modelo entidad-relacin son las entidades con sus atributos y las relaciones entre entidades.

Elementos del modelo entidad-relacin


Entidad Se trata de un objeto del que se recoge informacin de inters de cara a la base de datos. Grficamente se representan mediante un rectngulo. Un ejemplo seria la entidad banco, donde se recogeran los datos relativos a ese banco, como puede ser el nombre, el nmero de sucursal, la direccin, etc. Dentro de las entidades pueden ser fuertes o dbiles. Las fuertes son las que no dependen de otras entidades para existir, mientras que las entidades dbiles siempre dependen de otra entidad sino no tienen sentido por ellas mismas. Relacin Podemos definir la relacin como una asociacin de dos o ms entidades. A cada relacin se le

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

35

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com asigna un nombre para poder distinguirla de las dems y saber su funcin dentro del modelo entidad-relacin. Otra caracterstica es el grado de relacin, siendo las de grado 1 relaciones que solo relacionan una entidad consigo misma. Las de grado 2 son relaciones que asocian dos entidades distintas, y las de grado n que se tratan de relaciones que unen mas de dos entidades. Las relaciones se representas grficamente con rombos, dentro de ellas se coloca el nombre de la relacin. Otra caracterstica es el tipo de correspondencia entre dos relaciones; 1:1. Uno a uno, a cada ocurrencia de una entidad le corresponde como mximo una ocurrencia de la otra entidad relacionada. 1:N. Uno a Mucho, a cada ocurrencia de la entidad A le pueden corresponder varias de la entidad B. N:M. Muchos a muchos, cada ocurrencia de una entidad puede contener varias de la otra entidad relacionada y viceversa.

Para finalizar las caractersticas de la relacin tenemos la cardinalidad que define el nmero mximo y mnimo de ocurrencias de cada tipo de entidad. Se representa con los valores mximo coma mnimo encerrados entre parntesis encima de la relacin. (mximo, mnimo) Atributo Se define como cada una de las propiedades de una entidad o relacin. Cada atributo tiene un nombre y todos los posibles valores que puede tener. Dentro de una entidad tiene que haber un atributo principal que identifica a la entidad y su valor tiene que ser nico. Un ejemplo de atributo principal seria el dni dentro de la entidad persona. Ponemos un ejemplo de lo que seria un esquema del modelo entidad-relacion.

Artculo por

Sara Alvarez

Estructura del modelo relacional


Qu es, como se construye y como se utiliza este simple pero potente modelo relacional de datos.
Se trata de un modelo bastante potente y a la vez bastante simple , que nos representas

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

36

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com problemas. El elemento principal de este modelo es la relacin. Por lo que podemos decir que una base de datos relacional est compuesta por un conjunto de relaciones. Relacin La relacin se representa mediante una tabla, esta tabla representa a lo que en el modelo entidad-relacin llambamos entidad. Esta tabla contiene los atributos (columnas) y las tuplas (filas). Atributo: se trata de cada una de las columnas de la tabla. Vienen definidas por un nombre y pueden contener un conjunto de valores. Tupla: se trata de cada una de las filas de la tabla. Es importante sealar que no se pueden tener tuplas duplicadas en una tabla.

Dominios El dominio dentro de la estructura del modelo relacional es el conjunto de valores que puede tomar un atributo. Existen dos tipos de dominios: dominios generales: son aquellos que estn comprendidos entre un mximo y un mnimo. dominios restringidos: son los que pertenecen a un conjunto de valores especficos.

Claves Cada tupla de una tabla tiene que estar asociada a una clave nica que permita identificarla. Una clave puede estar compuesta por uno o ms atributos. Una clave tiene que ser nica dentro de su tabla y no se puede descartar ningn atributo de la misma para identificar una fila. Existen dos tipos de claves: Clave prmaria (Primary Key): es el valor o conjunto de valores que identifican una fila dentro de una tabla. Nunca puede ser NULL. Un ejemplo claro de clave primaria seria el DNI, que es nico para cada persona y no puede ser NULL. Clave ajena (Foreign Key): es el valor o valores de una tabla que corresponde con el valor de una clave primaria en otra tabla. Esta clave es la que representa las relaciones entre las tablas.

Vistas Se trata de una tabla ficticia la cual muestra atributos de otras tablas relacionadas. De esta forma obtenemos los datos que nos interesan de una o varias tablas. Es importante sealar que no se pueden realizar operaciones sobre vistas.
Artculo por

Sara Alvarez

Paso del modelo E/R al modelo relacional


Pasamos a tablas los datos que tenemos en el modelo entidad-relacin.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

37

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Para pasar a tablas todos los datos sin dejarnos nada y que las tablas tengan sentido por si solas tenemos que seguir unos pasos: Toda entidad se transforma en una tabla todo atributo se transforma en una columna dentro de la tabla a la que pertenece El identificador de la entidad se convierte en la clave primaria de la tabla Toda relacin N:M se convierte en una tabla que tendr como clave primaria las dos claves primarias de las entidades que se asocian En las relaciones 1:N la clave primaria de la entidad con cardinalidad 1 pasa a la tabla de la entidad cuya cardinalidad es N en las relaciones N:M existen tres posibilidades: Si la cardinalidad es (0,1) en ambas entidades, se crea tabla. Mientras que si la cardinalidad de una es (0,1) y de la otra es (1,1) se suele pasar la clave primaria de (1,1) a la de (0,1). Si la cardinalidad de ambas es (1,1) se pasa la clave de cualquiera de ellas a la otra.

Para este modelo de entidad-relacin el paso a tablas quedara de la siguiente forma:

Os recomiendo que practiqueis el paso a tablas, ya que es un factor sumamente importante de cara a la construccin de tu base de datos para la web.
Artculo por

Sara Alvarez

Operaciones bsicas sobre tablas


Pasamos a describir los tipos de consultas bsicas que se pueden hacer sobre tablas de una base de datos.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

38

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Las operaciones que vamos a ver estn basadas en el algebra relacional. Los operandos de de cada operacin lo constituyen una o varias tablas y el resultado es una nueva tabla. Dentro de las operaciones bsicas tenemos las operaciones unarias (se utiliza una sola tabla) y las operaciones binarias (se utilizan dos tablas). Operaciones unarias Seleccin: Mediante esta operacin se obtiene un conjunto de filas con todas las columnas de la tabla. Se seleccionan determinadas filas incluyendo una condicin. Se utilizan los operadores booleanos "and" (Y)," or" (O), "not" (NO). La representacin sera la siguiente: Ejemplo de seleccin. Partimos de la siguiente tabla de empleados:

Realizamos la siguiente operacin de seleccin: La tabla resultante sera la siguiente:

Proyeccin: esta operacin nos devuelve una nueva tabla con las columnas seleccionadas de otra. La representacin sera la siguiente: Ejemplo de proyeccin: Sobre la tabla anterior proyectamos la columna salario y nombre quedando como resultado la siguiente tabla

Operaciones binarias Unin: Esta operacin solo se puede hacer si las tablas tienes las mismas columnas, es decir,

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

39

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com por ejemplo si tuviramos una tabla llamada empleados2 con las mismas columnas tan solo tendramos que aadir las filas de ambas tablas en una nica tabla. Su representacin sera la siguiente: Tabla1

u Tabla2

Diferencia: de la misma forma que la unin la diferencia tan solo se puede realizar si las dos tablas tienen las mismas columnas. Su representacin sera la siguiente: Tabla1 - Tabla2 Con las siguientes tablas:

El resultado sera el siguiente:

Producto cartesiano: se realiza con dos tablas distintas pero relacionadas por alguna columna, siempre y cuando el nombre de la columna no sea el mismo. Su representacin sera la siguiente: Tabla1

x Tabla2

Ejemplo de producto cartesiano: partimos de las dos tablas siguientes:

Como resultado del producto cartesiano tendramos la siguiente tabla:

Artculo por

Sara Alvarez

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

40

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Caractersticas de un sistema gestor de base de datos relacional


Pasamos a redactar las reglas que hacen que un sistema gestor de base de datos sea relacional.
Antes de poner las reglas recordamos lo que era un sistema gestor de base de datos: Un sistema gestor de base de datos se define como el conjunto de programas que administran y gestionan la informacin contenida en una base de datos. Se establecen 12 reglas por las cuales la base de datos es relacional: Regla de informacin: Toda la informacin est representada lgicamente en tablas. Tratamiento sistemtico de valores nulos: debe soportar valores nulos de forma automtica independientemente del tipo de dato. Regla de acceso garantizado: Se tiene que poder acceder a cada dato mediante la combinacin del nombre de la tabla, la columna que lo contiene y la clave primaria de la fila. Regla de sublenguaje completo: Debe permitir un lenguaje cuya sintaxis este bien definida para la manipulacin de la base de datos. Catalogo on-line: Un usuario tiene que poder acceder a dicho catalogo con su usuario y contrasea. Insercin, modificacin y borrado de alto nivel: Debe ser posible realizar dichas operaciones sin alterar los dems datos. Actualizacin de vista: Se debe poder actualizar las vistas por el sistema gestor. Independencia fsica de los datos: la forma de almacenar los datos no influye en la manipulacin de los mismos. Independencia lgica de los datos: los cambios sobre los objetos de la base de datos no tienen porque afectar a los usuarios y programas. Independencia de distribucin: los programas no se tienen porque alterar al redistribuir los datos. Independencia de integridad: las restricciones de integridad se almacenan y crean en el sistema gestor y no en los programas. Regla de no subversin: Si un sistema gestor de base de datos tiene un lenguaje de bajo nivel, este lenguaje no se puede utilizar para destruir o evitar las reglas de integridad o las restricciones expresadas en el lenguaje relacional de alto nivel.

Si tu sistema gestor de base de datos cumple con estas doce reglas puedes afirmar que se trata de un sistema gestor de base de datos relacional o lo que es lo mismo SGBDR
Artculo por

Sara Alvarez

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

41

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Tipos de sentencias SQL y sus componentes sintcticos


Pasamos a describir los tipos de sentencias sql que podemos encontrarnos y sus componentes sintcticos.
En SQL tenemos bastantes sentencias que se pueden utilizar para realizar diversas tareas. Dependiendo de las tareas, estas sentencias se pueden clasificar en tres grupos principales (DML, DDL,DCL), aunque nos quedara otro grupo que a mi entender no est dentro del lenguaje SQL sino del PLSQL. DESCRIPCIN DML SENTENCI A Manipulacin de datos SELECT INSERT DELETE UPDATE

Recupera datos de la base de datos. Aade nuevas filas de datos a la base de datos. Suprime filas de datos de la base de datos. Modifica datos existentes en la base de datos. DDL Definicin de datos CREATE TABLE DROP TABLE ALTER TABLE CREATE VIEW DROP VIEW CREATE INDEX DROP INDEX CREATE SYNOYM DROP SYNONYM Aade una nueva tabla a la base de datos. Suprime una tabla de la base de datos. Modifica la estructura de una tabla existente. Aade una nueva vista a la base de datos. Suprime una vista de la base de datos. Construye un ndice para una columna. Suprime el ndice para una columna. Define un alias para un nombre de tabla. Suprime un alias para un nombre de tabla. DCL Control de acceso GRANT REVOKE Control de transacciones COMMIT

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

42

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com ROLLBACK Concede privilegios de acceso a usuarios. Suprime privilegios de acceso a usuarios Finaliza la transaccin actual. Aborata la transaccin actual. PLSQL SQL Programtico DECLARE OPEN FETCH CLOSE Define un cursor para una consulta. Abre un cursor para recuperar resultados de consulta. Recupera una fila de resultados de consulta. Cierra un cursor.

Componentes sintcticos
La mayora de sentencias SQL tienen la misma estructura. Todas comienzan por un verbo (select, insert, update, create), a continuacin le sigue una o ms clausulas que nos dicen los datos con los que vamos a operar (from, where), algunas de estas son opcionales y otras obligatorias como es el caso del from.

Artculo por

Sara Alvarez

Tipos de datos en SQL


Os presentamos una tabla con todos los datos con los que puedes trabar en SQL y sus principales caractersticas.
En sql tenemos varios tipos de datos. Cuando creamos una tabla con la instruccin create table, tenemos que especificar el tipo de dato de cada columna.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

43

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com En la siguiente tabla mostramos los diferentes tipos de datos y sus principales caractersticas: Almacena informacin de fechas y horas. De forma predeterminada almacena un dato con el siguiente formato: siglo/ao/mes/dia/hora/minutos/segundos. Este formato se puede cambiar con otros parmetros. Almacena datos binarios. Puede almacenar como mucho 2000 bytes. Se trata de un campo que representa una cadena hexadecimal que indica la direccin de una fila en su tabla

Es similar al varchar2 pero el tamao de un carcter depende de la eleccion del juego de caracteres. El tamao mximo es 2000 bytes. Similar al char y con las mismas caracteristicas que el nvarchar2 Similar al LONG y se usua para objectos carcter Similar al CLOB solo que el tamao del carcter depende del juego de caracteres utilizado Similar al LONG RAW. Este se usa para objetos binarios.

Como procesa un SGBD una sentencia El sistema gestos de base de datos (SGBD) realiza una serie de pasos para ejecutar una sentencia: 1. Lo primero que hace es analizar la sentencia y comprueba que esta bien escrita. 2. Valida la sentencia. Comprueba la sentencia semnticamente. Comprobando que tanto las tablas, columnas y datos existen. 3. Despus optimiza la sentencia, buscando la forma ms rpida de ejecutar dicha sentencia. 4. Genera un plan de aplicacin de la sentencia. Genera el cdigo necesario para ejecutar dicha sentencia. 5. Y por ltimo ejecuta el plan de aplicacin.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

44

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com El anlisis de la sentencia no requiere que se acceda a la base de datos por lo que se realiza rpidamente mientras que la optimizacin si que lo requiere por lo que requiere ms tiempo y ms trabajo por parte de la CPU.
Artculo por

Sara Alvarez

Consulta de datos
Explicamos detalladamente la sentencia select, la ms utilizada en acceso a base de datos.
Para recuperar informacin de las base de datos, utilizamos la sentencia select, que tiene la siguiente sintaxis:
select [ALL|DISTINCT] [expre_column1, expre_colum2, ..., expre_column | *] FROM [nombre_tabla1, nombre_tabla2, ..., nombre_tablan] [WHERE condicion] [ORDER BY expre_colum [DESC|ASC] [,expre_colum [DESC|ASC]]...];

Donde expre_colum puede ser una columna de una tabla, una constante, una o varias funciones, incluso expresiones aritmticas. La nica clusula obligatoria es la clusula FROM, las dems son opcionales todas. FROM Nos indica la tabla o lista de tablas de las que vamos a recuperar la informacin. Si un usuario de la base de datos no es el propietario de la tabla, tendr que especificar el nombre de usuario delante de la tabla, como se ve en el siguiente ejemplo.
select * from profesor.alumnos;

Donde profesor seria el nombre de usuario y alumnos el nombre de la tabla. Tambin podemos darles nombres distintos o ms cortos a las tablas mediante lo que se donomina alias.
select a.nombre, a.edad from alumnos a;

La tabla alumnos toma el alias a. WHERE Nos devuelve las filas que cumplen la condicin expresada. El formato de la condicin es el siguiente: expresin operador expresin. Podemos construir condiciones mltiples usando los operadores lgicos AND OR y NOT, as mismo podemos utilizar los parentesis para forzar el orden de ejecucin de las expresiones. Un ejemplo de utilizacion del where muy simple es la siguiente:
select nombre from alumno where nota>7 and edad<7;

Esta sentencia solo nos mostrara el nombre de los alumnos que cumplieran las dos condiciones expresadas.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

45

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com ALL Con esta clusula recuperamos todas las filas aunque tengamos repetidas, es la clusula por defecto. DISTINCT Es la contraria que la anterior, solo nos recupera las filas que no estn repetidas. ORDER BY Esta clusula nos especifica el criterio de ordenacin del resultado obtenido en la consulta. ASC nos especifica una ordenacin ascendente y DES descendente. Podemos anidar criterios siendo el situado ms a la izquierda el principal. Ponemos un ejemplo para verlo ms claro:
select * from alumnos oder by nombre, curso desc;

Esta sentencia nos mostraria todos los datos de los alumnos ordenados primero por nombre ascendente y por curso descendente.
Artculo por

Sara Alvarez

Operadores en la consulta select


Artculo donde vamos a hablar de los operadores dentro de la sentencia de seleccin.
Operadores aritmticos Los operadores aritmticos sirven para formar expresiones con constantes, funciones de valores de columnas.

Operador aritmtico + * /

Operacin suma resta multiplicacin divisin

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

46

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Operadores de comparacin y lgicos

Operadores lgicos Opera dor and or not Funcin Devuelve el valor TRUE cuando los dos condiciones son verdaderas Devuelve el valor TRUE cuando una de las dos condiciones es verdadera Devuelve el valor TRUE si la condicin es falsa.

Operadores de comparacin Operador = > >= < <= = <> Funcin Igual a Mayor que Mayor o igual que Menor que Menor o igual que Distinto de

Operadores de comparacin de cadenas de caracteres Para comparar cadenas de caracteres utilizamos el smbolo =. Ponemos un ejemplo. Select * from emple where oficion='analista' Este operador no nos sirve si queremos hacer una consulta del tipo de: "sacar los datos del empleado cuyo oficio empiece por P" Para especificar este tipo de consultas, en SQL usamos el operador LIKE que permite utilizar los siguientes caracteres especiales en las cadenas de comparacin: % Comodn: Representa cualquier cadena de 0 o ms caracteres

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

47

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com '_' Marcador de posicin: representa un carcter cualquiera. Ponemos un ejemplo para que quede algo ms claro: Select * from emple where nombre LIKE 'P%' Esta consulta nos mostrara todos los datos de los empleados cuyo nombre empezar por P
Artculo por

Sara Alvarez

Operadores en la consulta select II


Continuamos explicando los posibles operadores que pueden aparecer en la consulta select en SQL.
Null y Not Null Se dice que una columna de una fila es NULL si est completamente vaca. Podemos utilizar estos trminos a la hora de hacer consultas si queremos saber si una columna esta vaca o no. Por ejemplo, A partir de una tabla de empleados consultamos los apellidos de aquellos que no tengan comisin, que es lo mismo que decir, aquellos que su comisin sea nula. Select apellido from empleado where comisin IS NULL; De esta misma forma podemos preguntar por los que tengan comisin. Select apellido from empleado where comisin IS NOT NULL; Operador IN Hasta ahora todas las comprobaciones lgicas que hemos visto comparan una columna o expresin con valor, pero tambin podemos comparar conjunto de valores. El operador IN nos permite comprobar si una expresin pertenece a un conjunto de valores. Su sintaxis es la siguiente: IN (lista de valores separados por comas) De la misma forma utilizamos el NOT IN para saber si no estn dentro de ese conjunto de valores. Un ejemplo de utilizacin de IN y NOT IN: Queremos mostrar los apellidos de la tabla empleado cuyo nmero de departamento sea el 10 o el 30 Select apellido from empleado where departamento IN (10,30); Queremos mostrar los apellidos de la tabla empleado cuyo nmero de departamento no sea ni el 10 ni el 30 Select apellido from empleado where departamento NOT IN (10,30); Tambin lo podemos aplicar a lista de valores con cadenas:

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

48

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Queremos mostrar los apellidos de la tabla empleado cuyo oficio sea pen o capataz Select apellidos from empleado where oficio IN ('peon','capataz'); Operador between Este operador comprueba si un valor est comprendido o no dentro de un rango de valores. Su sintaxis es la siguiente: <expresin> [NOT] between valor_inicial AND valor_final Ponemos un ejemplo: Queremos mostrar el apellido y el salario de los empleados cuyo salario este comprendido entre 2000 y 2500 euros Select apellido,salario from empleado where salario between 2000 and 2500 Operadores AND y OR combinados Estos operadores se pueden combinar para sacar resultados ms complicados en nuestras sentencias selects, pero siempre con cuidado y utilizando los parntesis para agrupar las expresiones que se desean evaluar. El orden de prioridad de los operadores lgicos es el siguiente, primero NOT, luego AND y por ltimo OR. Ejemplo de uso: Queremos obtener el apellido, salario y departamento de los empleados cuyo salario sea mayor de 1000 euros en los departamentos 10 o 30 Select apellido,salario, departamento from empleado where salario>1000 and (departamento=10 or departamento=30);
Artculo por

Sara Alvarez

Subconsultas
Para realizar alguna operacin de consulta a veces necesitamos los datos obtenidos en otras consultas, esto lo podemos hacer en una nica consulta, utilizando las subconsultas.
Una subconsulta no es ms que un select dentro de otro select. Las subconsultas son aquellas sentencias select que forman parte de la clausula where de otra sentencia select. El formato es el siguiente: SELECT FROM . WHERE columna operador_comparativo (SELECT.. FROM WHERE); Cuando se ejecuta esta sentencia primero se realiza la subconsulta y luego el resto de sentencia. Condiciones de bsqueda en subconsultas Las subconsultas normalmente aparecen como parte de la condicin de una bsqueda dentro del where o having. Condiciones de bsqueda que puede haber dentro de una subconsulta: Comparacin de subconsultas: Comparan el valor de la expresin con un valor nico obtenido

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

49

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com en la subconsulta. Son los simbolos tpicos de comparacin (<,>,=,<=,>=).
Select * from empleado where oficio=(select oficio from empleado where apellido='Lopez');

Pertenencia a un conjunto de valores devueltos por la subconsulta: Comprueba si el valor esta dentro del conjunto de valores devuelto por la subconsulta.
Select * from empleado where oficio IN (select oficio from empleado where departamento=20);

Existencia: nos dice si la subconsulta devuelve alguna fila o no. Para ello utilizamos las palabras EXISTS o NOT EXITS.
Select * from departamento where EXISTS (select * from empleado where empleado.id_departamento = departamento.id_departamento);

Comparacin cuantificada: Para esto tambin utilizamos los comparadores basicos unidos a ANY o ALL. ANY compara el valor de una expresin con cada uno del conjunto de valores obtenidos en la subconsulta. Con que una de las comparaciones de TRUE la consulta da TRUE
Select * from empleado where salario = ANY (select salario from empleado where id_departamento=30);

ALL compara el valor de una expresin con cada uno del conjunto de valores obtenidos en la subconsulta. Tienen que ser todos TRUE para que la subconsulta devuelva TRUE
Select * from empleado where salario < ALL (select salario from emple where id_departamento=20);

Subconsultas que generan valores simple Son las subconsultas que obtienen un solo registro. Para ello utilizamos los operadores de comparacin bsicos. Si la subconsutla devuelve ms de un registro nos sale un mensaje de error. Subconsultas que generan listas de valores Son las subconsultas que nos devuelven ms de un registro. Para estas subconsultas utilizamos el operador IN. Subconsultas correlacionadas Estas subconsultas hacen referencia a una columna o varias de la consulta principal. Para verlo mejor ponemos un ejemplo. Queremos obtener los datos de los empleados cuyo salario sea el mximo salario del departamento.
Select * from empleado E where salario = (select max(salario) form empleado where id_empleado=E.id_empleado);

Esta sentencia devuelve para cada fila que se obtiene el mximo salario del departamento que se est obteniendo en la consulta principal.
Artculo por

Sara Alvarez

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

50

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Funciones aritmticas en SQL


Pasamos a describir los distintos tipos de funciones aritmticas que nos podemos encontrar en SQL.
Este tipo de funciones trabajan nicamente con datos nmericos del tipo number, y se pueden dividir en tres grupos principales. Funciones de valores simples Estas funciones son las ms sencillas y trabajan con un nico numero, variable o columna de la tabla.

Funcin ABS(n) CEIL(n)

Propsito Nos devuelve el valor absoluto de n Nos devuelve el valor entero igual o inmediatamente superior a n Nos devuelve el valor entero igual o inmediatamente inferior a n Nos devuelve el resto de la divisin de m entre n Calcula la potencia de m elevado a exponente Nos devuelve el signo de valor Funcin que nos sustituye valor por expresin siempre que valor sea NULL

FLOOR(n) MOD(m,n) POWER(m, exponente) SIGN(valor) NVL(valor, expresin)

ROUND(nmero[, Nos redondea numero a m decimales m]) SQRT(n) Nos devuelve la raz cuadrada de n

TRUNC(nmero[, Trunca los nmeros para que tengan m decimales. m ])

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

51

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Pasamos a poner algunos ejemplos para que os quede ms claro como se utilizan:
Select ceil(2.3) from tabla; (esta consulta nos devolvera 3)

Select mod (11,4) from tabla; ( nos devolvera 3) Select round(22.38,1) from tabla; (nos devolvera 22.4)

Funciones de grupos de valores Este tipo de funciones se utilizan principalmente para realizar estadsticas, por lo que los valores nulos no se toman en cuenta. Dentro de este grupo se encuentran las siguientes funciones:

Funcin AVG(n)

Propsito Nos devuelve la media de n

Nos devuelve el nmero de veces que aparece COUNT(*|expresin) expresin. MAX(expresin) MIN (expresin) Nos devuelve el valor mximo de expresin Nos devuelve el valor mnimo de expresin

VARIANCE(expresin Nos devuelve la varianza de expresin ) SUM(expresin) Nos devuelve la suma de valores de expresin.

Pasamos a poner algunos ejemplos:


Select avg(salario) from empleado; (nos devolvera el salario medio de todos los empleados) Select count(*)from empleado; (nos devuelve el numero de empleados que tenemos) Select min(salario) from empleado; (nos devuelve el menor salario encontrado en la tabla empleado)

Funciones de listas Estas funciones trabajan con grupos de columnas dentro de una misma fila.

Dentro de este grupo de funciones se encuentran las siguientes :

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

52

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Funcin GREATEST(valor1, valor2, ) LEAST(valor1, valor2,...)

Propsito Obtiene el mayor valor de la lista Obtiene el menor valor de la lista

Para explicar estas funciones vamos a poner un ejemplo un poco ms complicado, donde el enunciado sera el siguiente: Queremos mostrar por cada alumno su mayor nota de todas las que tiene.
Select alumno, greatest(nota1,nota2,nota2,nota4,nota5) "nota" from alumnos;
Artculo por

Sara Alvarez

Funciones de cadena en SQL


Pasamos a describir y explicar las funciones de cadenas dentro de sql y las dividimos en dos grupos, las que devuelven caracteres y las que devuelven nmeros.
Las funciones de cadena trabajan con campos char y varchar por lo que los literales que escribamos se deben encerrar entre comillas simples. Estas funciones que vamos a explicar a continuacin pueden manipular cadenas de letras u otros caracteres por lo que las vamos a dividir en dos grupos: Funciones que devuelven caracteres Este tipo de funciones devuelven un carcter o varios caracteres. RTRIM(cad[,set]) Hace lo mismo que LTRIM pero por la derecha REPLACE(cad,cadena_buscada [,cadena_sustitucion] ) Sustituye un conjunto de caracteres de 0 o ms caracteres, devuelve cad con cada ocurrencia de cadena_buscada sustituida por cadena_sustitucion SUBSTR(cad, m[,n]) Devuelve la subcadena de cad que abarca desde m hasta el numero de caracteres dados por n. TRANSLATE(cad1,cad2,cad3) Convierte caracteres de una cadena en caracteres diferentes. Devuelve cad1 con los caracteres encontrados en cad2 y sustituidos por los caracteres de cad3 Ponemos algunos ejemplos de utilizacin de estas funciones: Sentencia sql que nos devuelve las letras cuyo valor asccii es el 45 y el 23
select CHR(45), CHR(23) FROM TABLA;

Sentencia sql que obtiene el nombre de los alumnos sacando por pantalla la siguiente frase: el nombre del alumno es (nombre que esta almacenado en la tabla)

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

53

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

select CONCAT ('el nombre de alumno es', nombre) from alumno;

Sentencia sql que me devuelve los nombres de los alumnos en maysculas


select UPPER(nombre) from alumno;

Sentencia sql que obtiene de un campo nombre, las 3 primeras letras


select SUBSTR(nombre,0,3) from alumno;

Y asi con el resto de funciones Funciones que devuelven valores numricos Estas funciones nos devuelven nmeros a modo de informacin.

Funciones para fechas en SQL


Pasamos a describir las posibles funciones que te permiten trabajar con las fechas en el lenguaje SQL.
Dentro de SQL tenemos un tipo de dato denominado DATE. Este campo tiene el siguiente formato predeterminado: 'dd/mm/yy' Este formato lo podemos modificar con la funcin TO_CHAR de la cual hablaremos ms adelante en el siguiente artculo. Cabe sealar que el tipo de dato DATE tambin almacena la siguiente informacin en el siguiente orden: Siglo/Ao/Mes/Da/Hora/Minutos/Segundos A continuacin mostramos una tabla con las funciones para el manejo de fechas en SQL:

Funcin SYSDATE

Propsito Devuelve la fecha del sistema

ADD_MONT HS (fecha, Devuelve la fecha incrementada en n meses n) LAS_DAY (fecha) Devuelve la fecha del ltimo da del mes que contiene fecha

MONTHS_B Devuelve la diferencia en meses entre la fecha1 y la ETWEEN

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

54

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

(fecha1, fecha2)

fecha2

Devuelve la fecha del primer da de la semana indicado NEXT_DAY por cad despus de la fecha indicada por fecha. Cad ser (fecha, siempre un da de la semana escrito con letras, por cad) ejemplo Monday.

Ahora pasamos a poner algn ejemplo prctico para que os hagis una idea de cmo es. De la primera funcin no hace falta ya que es bastante sencilla, tan solo tenis que poner la funcin y os devuelve la fecha actual del sistema. Ejemplo1: vamos a sumar 2 meses a la fecha de alta de los usuarios
Select fecha_alta, add_months(fecha_alta,2) from usuarios;

Ejemplo2: vamos a obtener el ltimo da del mes para cada una de las fechas de alta de cada usuario
Select fecha_alta, last_day(fecha_alta) from usuarios;

Ejemplo3: vamos a obtener el da que ser el prximo lunes


Select next_day(sysdate, 'Monday') "siguiente dia" from tabla;
Artculo por

Sara Alvarez

Otras funciones Sql


En este artculo vamos a revisar las funciones que nos cambian un tipo de dato en otro y el resto de funciones que nos podemos encontrar.
Vamos a comenzar con las funciones de conversin que pasamos a mostrar en la siguiente tabla:

Funcin

Propsito

TO_CHAR(fecha,'fo Esta funcin nos convierte una fecha de tipo date a una rmato') fecha de tipo varchar2 TO_CHAR(numero,'f Nos convierte un dato de tipo number a un tipo varchar2 ormato')

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

55

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

TO_DATE(cad,'form Convierte un tipo de dato varchar2 o char a un valor de tipo date con el formato especificado ato') TO_NUMBER(caden Convierte una cadena a tipo de dato number, y si se le pasa, con el formato especificado a,['formato'])

Ponemos algn ejemplo para que quede todo mas claro. Ejemplo 1:
Select TO_CHAR(fecha,'mon aaa y yyy') "fecha nueva" from emple;

Esta sentencia nos devolvera una fecha con este aspecto: jun 160 1 991 Donde lo jun seria el nombre del mes, 160 el nmero del ao, 1 el ultimo digito del ao y 991 los ltimos tres dgitos del ao. Ejemplo 2:
Select TO_CHAR(TO_DATE('01012007','ddmmyyyy'),'Month') "mes" from fechas;

Esta sentencia nos devolvera algo como esto: Enero. Para llegar a este resultado lo primero que hacemos es convertir la cadena a tipo fecha y despus el tipo fecha a cadena con el formato de mes. Ahora pasamos a describir 5 funciones ms que nos podemos encontrar pero que se suelen utilizar poco

Funcin USER VSIZE(expresin) UID

Proposito Nos devuelve el nombre del usuario actual Nos devuelve el nmero de bytes que ocupa la expresin. Nos devuelve el identificador del usuario actual

DECODE(var,val1,co Funcin que sustituye un valor por otro. Si var d1,val2,cod2,valor- es igual a cualquier val de la lista lo sustituye por su correspondiente cod por-defecto) DUMP(cadena, Visualiza el valor de cadena desde el comienzo [,formato[,comienzo[ hasta longitud, con el formato especificado. ,longitud]]])
Pasamos a poner algunos ejemplos.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

56

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Ejemplo 1: Mostramos el nombre de los alumnos y si su asignatura es lengua le ponemos un cdigo 1, si es matemticas un cdigo 2 y si no es ninguna de esas un 3.
Select alumnos, DECODE (asignatura, 'lenguaje',1, 'matemticas', 2, 3) "cdigo" from alumnos;

Ejemplo 2: Mostramos el usuario que est conectado.


Show USER;

Ejemplo 3: Mostramos el nmero de bytes que tiene la columna nombre de la tabla usuarios.
Selec t VSIZE(nombre) "tamao", nombre from usuarios;
Artculo por

Sara Alvarez

Agrupacin de elementos en SQL


Pasamos a explicar el funcionamiento de las clusulas GROUP BY y HAVING.
Con estas clausulas vamos a poder hacer consultas ms complejas y avanzadas que nos permitiran filtrar mejor la informacin o sacar conjuntos de informaciones ordenadas de una determinada forma. La sentencia select nos deja agrupar uno o ms conjuntos de filas si utilizamos la clusula gruop by por las columnas especificas y el orden especificado, siendo el formato el siguiente:
select ... from ... group by columna1, columna2, columnaN.... having condicion order by....

Los datos seleccionados en la sentencia que lleva el group by deben ser o una constante, o una funcion de grupo o una columna que aparezca en el group by tambin. En general group by lo utilizamos para calcular propiedades de uno o ms conjuntos de filas. La clusula having es muy parecida a where pero funciona para grupos de filas y controla cal de los conjuntos de filas se visualiza. Os pongo un ejemplo para que se entienda mejor: Visualizar el nmero de alumnos por cada asignatura si el departamento tiene mas de 4 alumnos. select asignatura, count(*) from alumno group by asignatura having count(*) > 4; Tambin podriamos ordenar dicha consulta aadiendo un order by al final, por ejemplo por asignatura, quedando asi la consulta:

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

57

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

select asignatura, count(*) from alumno group by asignatura having count(*) > 4 order by asignatura; Podemos realizar consultas un poco ms complicadas utilizando tambin funciones de grupo. Por ejemplo: Visualizar el nmero de departamento, la suma de los salarios, el salario mximo y el salario mnimo de cada departamento. select departamento, sum(salario) as suma, max(salario) as maximo, min(salario) as minimo from empleado group by departamento; Con esta sentencia nos saldrian 4 columnas, en la primera nos saldria el departamento, en la segunda la suma de todos los salarios de ese departamento, en la siguiente el salario ms alto y el la ltima el salario ms bajo del departamento. Con estas clusulas ya puedes realizar casi cualquier consulta, por lo que viene en prximos artculos ya es algo ms complicado, pero nada imposible.
Artculo por

Sara Alvarez

Clausulas avanzadas de seleccin


Seguimos con las clausulas avanzadas, esta vez pasamos a explicar el outer join, unin, intersect y minus.
Para comenzar os comento un poco que en artculos anteriores hemos hablado de la combinacin de tablas, concepto que vamos a necesitar tener bastante claro para poder entender el resto de clausulas avanzadas de seleccin. Combinacin externa (outer join) Esta clausula nos permite seleccionar filas de una tabla aunque no tengan correspondencia con flas de la otra tabla con la que se la combina. Su formato es el siguiente:
select tabla1.columna1, tabla1.columna2, tabla2.columna2 from tabla1, tabla2 where tabla1.columna1=tabla2.columna1;

Como veis es bastante fcil y no crea mayor duda. Los registros que no tengan correspondencia con la otra tabla no aparecern. Para que aparezcan tendremos que colocar el smbolo (+) al final del where y la columna que queremos que aparezca. Un ejemplo de select seria el siguiente:
select departamento.num, departamento.nombre, emple.nombre from departamento, nombre where departamento.num=emple.num;

Aqu agrupamos por el num del departamento que se encuentra en las dos tablas.

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

58

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Operador unin Este operador combina los resultados de dos columnas. Si existe alguna fila duplicada solo aparece una en el resultado. Su formato es el siguiente:
select col1, col2, ... from tabla1 where condicin union select col1, col2, ... from tabla2 where condicin;

Si queremos que nos aparezcan tambin las filas duplicadas tenemos que utilizar el operador unin all Por ejemplo si quisiramos mostrar todos los trabajadores de una empresa, tanto los nuevos como los dados de baja tendramos que hacer una sentencia como esta:
select nombre from trabajadores_nuevos union select nombre from trabajadores_viejos;

Operador intersect Este operador nos devuelve las filas que son iguales en ambas consultas. Como en el anterior por defecto las filas duplicadas se eliminan y no se muestran en el resultado. Su formato es el siguiente:
select col1, col2, ... from tabla1 where condicin intersect select col1, col2, ... from tabla2 where condicin;

Un ejemplo muy sencillo seria mostrar los alumnos que todava estn estudiando.
select nombre from alumnos_activos intersect select nombre from alumnos;

Operador minus El operador minus nos devuelve las flas que estn en la primera select y no en la segunda. Como en los casos anteriores las filas duplicadas no se muestran en el resultado. Su formato es:
select col1, col2, ... from tabla1 where condicin minus select col1, col2, ... from tabla2 where condicin;

Un ejemplo para este operador seria mostrar los alumnos que no estn en actives
select nombre from alumnos minus select nombre from alumnos_activos;

Para finalizar os comento que estos tres ltimos operadores los podemos encadenar, teniendo

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

59

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com en cuenta que siempre se evalan de izquierda a derecha. Adems es importante saber que si vas a realizar este tipo de consultas siempre tiene que haber el mismo nmero de columnas en las dos select y que los tipos de datos deben coincidir.
Artculo por

Sara Alvarez

Manipulacin de datos I. Orden Insert


Empezamos con la manipulacin de datos explicando la orden insert que nos ayuda a insertar datos en nuestras tablas.
Para insertar datos en una tabla utilizaremos la orden insert con el siguiente formato:
Insert into nombre_tabla [(columna [, columna]...)] values (valor [,valor]...);

Donde el nombre_tabla es el nombre de la tabla donde queremos insertar los nuevos datos. [(columna [, columna])] representas las columnas donde vamos a insertar los datos. Si no las especificamos por defecto se entiende que vamos a introducir datos en todas las columnas de la tabla. (valor [,valor]) representan los valores que vamos a insertar en dichas columnas. Estos valores deben estar colocados en las mismas posiciones que las columnas a las que pertenecen. Cualquier columna que no aparezca en el insert se rellenara con NULL siempre y cuando dicha columna no est definida como NOT NULL. Si la columna es NOT NULL y no aparece en el insert la orden nos devolver error. Ejemplo: Damos de alta un nuevo alumno en la tabla alumno
Insert into alumno (nombre, dni, apellidos) values ('PEPE','47334562T','SANCHEZ');

Ejemplo 2: Damos de alta una asignatura nueva


Insert into asignatura (nombre, horas, dept_no) values ('Lengua',4,10);

Tambin podemos aadir valores directamente desde una consulta select. Para ello realizamos una consulta select en la que aadimos un insert y como resultado tendremos tantas nuevas filas como resultados tenemos en el select. El formato de estas inserciones es el siguiente:
Insert into nombre_tabla1 [(columna[,columna]...)] Select {columna [,columna?|*} From nombretabla2 [clasulas de select];

Para que se vea mejor os dejo un ejemplo donde se ve bastante bien. Ejemplo: Insertamos los datos de los empleados del departamento 10 (tabla emple10) en la tabla de emple.
Insert into emple

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

60

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com


Select * from emple10 Where Departamento=10;

Como veis es bastante sencillo insertar datos en una tabla, lo nico que tenemos que tener en cuenta es que necesitamos conocer las columnas de la tabla donde queremos insertar dichos datos. En el siguiente artculo pasaremos a actualizar datos ya existentes en las tablas con la orden UPDATE, y a borrar datos con la orden DELETE.
Artculo por

Sara Alvarez

Update con select y orden delete


Pasamos a explicar cmo hacer una actualizacin a partir de un select y cmo podemos borrar registros de nuestra base de datos.
Update con select Muy a menudo tenemos la necesidad de actualizar ciertos campos que requieren de una consulta previa, para estos casos podemos realizar todo en una misma sentencia. Para realizar dicha sentencia utilizaremos un update y dentro del where o el set colocaremos el select con la consulta que necesitemos. Tenemos que tener en cuenta que cuando la consulta forma parte del set debemos seleccionar una nica fila y el mismo nmero de columnas que hay entre parntesis al lado del set. La sintaxis es la siguiente:
update <nombre tabla> set columna1=valor1, columna1=valor2, .. where columna3=(select ...);

Si utilizamos el set seria esta otra:


update <nombre tabla> set (columna1,columna2, ?)=(select col1, col2,..) where condicin;

Y podramos mezclar los dos casos sin ningn tipo de problema. Os dejo un ejemplo para que veis como funciona: Tenemos que cambiar el salario a la mitad y la comisin ponerla a 0 a todos los empleados que pertenezcan al departamento con mayor nmero de empleados.
Update empleado set salario=salario/2, comision=0 where departamento=(select departamento from empleado group by departamento having count(*)=(select max(count(*)) from empleado group by departamento));

Como veis la sentencia puede asustar un poco es sencilla de comprender. Actualizamos los

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

61

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com datos que nos piden y hacemos en el where la bsqueda de aquellos empleados que cumplen esos criterios. Delete Esta orden nos permite borrar una o varias filas de una tabla. En esta orden la clusula where es esencial ya que si no la ponemos adecuadamente corremos el riesgo de eliminar registros no deseados. Si no ponemos un where en la sentencia, esta nos borrar todos los registros de la tabla. Hay que recordar que al igual que el update esta sentencia tambin puede llevar una subconsulta aadida. La sintaxis general es bastante sencilla:
delete from nombretabla where condicin;

Os pongo dos ejemplos de utilizacin de la orden delete: Borra los empleados del departamento 20
delete from empleado where departamento=20;

Borra los departamentos con menos de cuatro empleados


delete from depart where departamento in (select departamento from empleado group by departamento having count(*)<4); Referencia: Tenemos un tutorial de SQL para aprender a utilizar el estndar utilizado para la consulta de bases de datos.

Artculo por

Sara Alvarez

Manual de iniciacin a la programacin:www.desarrolloweb.com/manuales/manual-iniciacion-programacion.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

62

You might also like