Documentos de Académico
Documentos de Profesional
Documentos de Cultura
com
Autores del manual Este manual ha sido realizado por los siguientes colaboradores de DesarrolloWeb.com: Sara Alvarez Emmanuel Garca De Caro Miguel Angel Alvarez
Equipo DesarrolloWeb.com http://www.desarrolloweb.com (36 captulos) Webmaster de Blasten.com http://www.blasten.com (1 captulo)
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a lenguaje mquina. Compiladores Son programas que leen el cdigo fuente y lo traducen o convierten a otro lenguaje. Estos programas te muestran los errores existentes en el cdigo fuente.
Etapas del proceso de compilacin: 1. Edicin. Esta fase consiste en escribir el programa empleando algn lenguaje y un editor. Como resultado nos dar el cdigo fuente de nuestro programa. 2. Compilacin. En esta fase se traduce el cdigo fuente obtenido en la fase anterior a cdigo mquina. Si no se produce ningn error se obtiene el cdigo objeto. En caso de errores el compilador los mostrara para ayudarnos a corregirlos y se procedera a su compilacin de nuevo, una vez corregidos. 3. Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas rutinas internas del lenguaje, obteniendo el programa ejecutable. Existen dos tipos de linkados: linkado esttico: Los binarios de las libreras se aaden a nuestros binarios compilados generando el archivo ejecutable. Linkado dinmico: no se aaden las libreras a nuestro binario sino que har que se carguen en memoria las libreras que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecucin donde tambin podrn surgir problemas y fallos, para los cuales tendramos que volver a realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos. Por este motivo es importante realizar numerosas pruebas en tiempo de ejecucin antes de presentar el programa al cliente. Otro sistema para la ejecucin de nuestro cdigo fuente es mediante el uso de intrpretes
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
(estos no se encontraran dentro de los traductores). Intrpretes Los intrpretes realizan la traduccin y ejecucin de forma simultanea, es decir, un intrprete lee el cdigo fuente y lo va ejecutando al mismo tiempo. Las diferencias entre un compilador y un intrprete bsicamente son: Un programa compilado puede funcionar por si solo mientras que un cdigo traducido por un intrprete no puede funcionar sin ste. Un programa traducido por un intrprete puede ser ejecutado en cualquier mquina ya que, cada vez que se ejecuta el intrprete, tiene que compilarlo. Un archivo compilado es mucho ms rpido que uno interpretado.
Manejando bits
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 posicin que ocupa el digito "N" dentro del Nmero. Ejemplos en sistema decimal (base:10): 18598 1*10
4
+ 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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
Lo que indica que 10, en el sistema decimal es igual 2, en realidad en el sistema de numeracin binario se puede definir cualquier nmero entero mayor o igual a 0, sin embargo la estructura de almacenamiento Byte solo fue diseada desde su origen para almacenar hasta 256 porque incluye como mximo 8 bits (28 = 256) (recordemos que se toma en cuenta el 0 por lo cual 255 equivaldr a 256) y se escogi este valor como mximo porque es la totalidad de caracteres disponibles en la tabla ASCII, que incluye todos los caracteres validos dentro de un computador, para comprobar esto podemos guardar un carcter en un archivo sin formato y como resultado tendremos que siempre ocupar 1 byte, si colocamos 2 caracteres el tamao del archivo ser igual a 2 bytes. Lo que justifica que 1 byte = 8 bits = puede almacenar hasta 256. y 1 bit es la mnima unidad en la que se puede almacenar informacin, Ejemplo: el tipo booleano (bool) ocupa en memoria 1 bit, por tanto TRUE = 1 FALSE=0. Por esta razn la mayora de los hardwares con capacidad de almacenamiento tales como Discos duros, memorias, y otros dispositivos; su capacidad siempre ser divisible entre 2 , al igual que las dems estructuras de almacenamiento ( Kb, Mb, Gb, Tb, etc) Como refera anteriormente, la tabla ASCII incluye todos los caracteres validos dentro del computador, desde todas las letras en minsculas y maysculas, nmeros y otros especiales, estos ltimos utilizados en su mayora como delimitadores o separadores gua dentro de un formato de archivo de contenido binario (PDF, DOC, EXE, DLL, OCX, ENTRE OTROS) Ejemplo de delimitadores: La direccin IP incluye 4 pares de cuyo valor mximo es 255 para poder representarlo en decimal se hace ms que necesario, obligatorio el uso de delimitadores por lo cual se emplea un ". (Punto)" de modo tal que 255.255.255.255, para reducir esta informacin a 4 bytes podremos acudir a la tabla ASCII. Por ejemplo el carcter "A" dentro de la tabla ASCII en el sistema decimal ocupa 64, podemos ejecutar una funcin ampliamente reconocida por lenguajes de programacin entre ellos (Delphi, C++, VB, Php, etc) llamada ORD que producir como resultado de ord(64) "A" si por el contrario ejecutamos chr('A') es resultado ser 64 en decimal, el cual representado en binario equivaldra a "1000000" , auque 64 no ocupe fsicamente los 255 (1 byte completo) su tamao en disco siempre ser 1 byte, porque la mayora de sistemas operativos y hardware desde su ensamblaje esta orientados para reservar un mnimo de espacio en memoria y en disco tomando en cuenta que ese valor puede ser modificado a 255 (mximo) 0 (mnimo) en cualquier momento. Por tanto podemos decir que un bit tiene un valor de acuerdo a su posicin ubicacin y para hallar ese valor solo tenemos que descomponer 255. 128 62 32 16 8 4 2 1 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
128+32+16+8+2+1=187 Enhorabuena 10111011=187!, entonces podemos decir que para almacenar 256 necesitaremos que los 8 bits sean verdaderos es decir 8 bits y ya tendemos nuestro byte. Para hacer el proceso contrario es decir de decimales a binario, solo tenemos que descomponer el decimal dividindolo siempre entre 2 hasta que el valor sea igual a 1, la agrupacin de los residuos obtenidos ser nuestro valor binario; obviamente los residuos siempre sern (0 1). Los bits son ampliamente utilizados para codificar datos, comprimir informacin, etc. Por ejemplo el formato de imgenes diseado por Microsoft (.BMP) calcula el rea de la imagen es decir base por altura lo que es igual a ancho por alto la cual asume como la cantidad de puntos disponibles, estos puntos a su vez almacenan un color hexadecimal de 3 pares conocido como RGB que almacena los colores ROJOS, VERDE Y AZUL, por lo cual para el almacenamiento del color emplea 3 bytes (255,255,255) y los escribe con ASCII , por cada punto , lo que indica si una imagen es de 10 px x 10 px emplear 300 bytes para almacenar los puntos y otros adicionales que guardan informacin de propiedades y caractersticas de esencial importancia. Utilizando bytes delimitadores o separadores en caso de no conocer el final del valor, es decir si la cantidad de bytes a emplear por la cabecera del formato (que contiene informacin) se desconoce puede variar dependiendo de factores, se hace indispensable el uso de delimitadores (ASCII DEFINIDOS COMO DELIMITADORES), si por el contrario siempre se situar entre los bytes 10 y 20 por ejemplo (no ser necesario). Por tal motivo cuando leemos un archivo (con un programa desarrollado por nosotros) debemos especificar cuantos bytes leeremos por cada secuencia, en el caso de los colores del formato (BMP) bastara con leer de 3 en 3, cabe destacar que un archivo se puede leer hasta 1024 es decir 1 KB de secuencia que equivale a una lnea de informacin, a partir de esa base se han diseado mecanismos de comprensin que agrupa los bits repetido en matrices o arrays. Para hacer posible este manejo existen algunos operadores similares a los de lgica ( OR, AND, NOT, XOR, ETC) mejor conocidos como operadores bit a bit. Desplazando bits: Podemos definirlo como la accin de transportar bytes de un extremo de la expresin a otro, como la expresin esta conformada por 2 solo puede hacerse en dos sentidos, izquierda y derecha. a. Desplazando bits a la izquierda (<<) Consiste en mover la cantidad de bit indicada en la expresin, de la izquierda a la derecha, esta operacin equivale a multiplicar por 2. Por ejemplo: 16 <<2 desplazaremos 2 bits de la izquierda a la derecha 16 en binario equivale a 00010000 por lo cual moveremos los dos primeros bits a la parte de atrs del numero (derecha) de tal modo que quedar 01000000 lo cual equivale a 64. Por tanto si multiplicamos (16*2)=32 (32*2)=64 1 bit 2 bits
b. Desplazando bits a la derecha (>>) Consiste en mover la cantidad de bit indicada en la expresin, de la derecha a la
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 8
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 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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 9
Operador Not ~ Solo si el bit a comparar es igual a 0 (False) ser igual a 1. Expresin: ~5 5 en binario es igual a 00000101 Resultado : 00000010 = 2 Similar a (!FALSE) es igual a true Importancia del manejo de los bits Como programador dar una opinin muy personal, se hace indispensable en la construccin de aplicaciones a gran escala el desarrollo formatos personales basados en esquemas que almacenan la informacin empleada de modo comprimido para la utilizacin de un o unos recursos de nuestra aplicacin, permitindole al usuario final mayor comodidad y seguridad durante el transporte de la informacin y ofrecindole la capacidad de hacerlas compatibles con otras aplicaciones, y dejar a un lado (dependiendo del objetivo) el tpico uso de bases de datos que requieren recursos adicionales del computador adems de interpretadores, etc. Considero que la informacin redactada contribuye considerablemente a encaminar vuestros esfuerzos en esa direccin. Concuclusin: Podemos decir que el computador sin software solo tiene capacidades para hacer operaciones aritmticas simples (sumas, restas, multiplicacin, etc) Y es el software que valindose se esas simples operaciones con procesos como los antes explicados puede crear la interfaz como de la que hoy disfrutamos en materia de Sistemas Operativos, todos los lenguajes desde los ms altos como Php hasta los ms bajos como Assembler pasan por binario, cada vez que movemos el Mouse eso esta produciendo un procesamiento de datos binarios, en fin, orienta tus esfuerzos como programador a reducir al mximo el consumo de recursos, seguro lograras una suma consumiendo menor cantidad de recursos que lo habitual. Artculo por Emmanuel Garca De Caro
Tipos de programacin
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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
10
Esta programacin estructurada utiliza un nmero limitado de estructuras de control, reduciendo as considerablemente los errores. Esta tcnica incorpora: Diseo descendente (top-dow): el problema se descompone en etapas o estructuras jerrquicas. Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras ms simples capaces de ser resueltas con mayor facilidad. Estructuras bsicas: existen tres tipos de estructuras bsicas: Estructuras secunciales: cada accin sigue a otra accin secuencialmente. La salida de una accin es la entrada de otra. Estructuras selectivas: en estas estructuras se evalan las condiciones y en funcin del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lgicas. Estructuras repetitivas: son secuencias de instrucciones que se repiten un nmero determinado de veces.
Las principales ventajas de la programacin estructurada son: Los programas son mas fciles de entender Se reduce la complejidad de las pruebas Aumenta la productividad del programador Los programas queden mejor documentados internamente.
Un programa esta estructurado si posee un nico punto de entrada y slo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por ltimo, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos. Programacin modular En la programacin modular consta de varias secciones dividas de forma que interactan a travs de llamadas a procedimientos, que integran el programa en su totalidad. En la programacin modular, el programa principal coordina las llamadas a los mdulos secundarios y pasa los datos necesarios en forma de parmetros. A su vez cada modulo puede contener sus propios datos y llamar a otros mdulos o funciones. Programacin orientada a objetos (POO) Se trata de una tcnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilizacin de los objetos. El elemento principal de la programacin orientada a objetos es el objeto. El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organizacin. Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento. El polimorfismo y la herencia son unas de sus principales caractersticas y por ello dedicaremos ms adelante un artculo exclusivamente a tratar estos dos trminos.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 11
En DesarrolloWeb.com hemos publicado anteriormente una explicacin de lo que es la programacin orientada a objetos. Programacin concurrente Este tipo de programacin se utiliza cuando tenemos que realizar varias acciones a la vez. Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultanea. Se trata de una programacin ms lenta y laboriosa, obteniendo unos resultados lentos en las acciones. Programacin funcional Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones. Programacin lgica Se suele utilizar en la inteligencia artificial y pequeos programas infantiles. Se trata de una programacin basada en el clculo de predicados (una teora matemtica que permite lograr que un ordenador basndose en hecho y reglas lgicas, pueda dar soluciones inteligentes). Artculo por Sara Alvarez
Importancia de la documentacin
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
12
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
aplicacin en si. Dentro de esta categora tambin se encuentra la ayuda electrnica. La gua tcnica En la gua tcnica o manual tcnico se reflejan el diseo del proyecto, la codificacin de la aplicacin y las pruebas realizadas para su correcto funcionamiento. Generalmente este documento esta diseado para personas con conocimientos de informtica, generalmente programadores. El principal objetivo es el de facilitar el desarrollo, correccin y futuro mantenimiento de la aplicacin de una forma rpida y fcil. Esta gua esta compuesta por tres apartados claramente diferenciados: Cuaderno de carga: Es donde queda reflejada la solucin o diseo de la aplicacin. Esta parte de la gua es nicamente destinada a los programadores. Debe estar realizado de tal forma que permita la divisin del trabajo Programa fuente: Es donde se incluye la codificacin realizada por los programadores. Este documento puede tener, a su vez, otra documentacin para su mejor comprensin y puede ser de gran ayuda para el mantenimiento o desarrollo mejorado de la aplicacin. Este documento debe tener una gran claridad en su escritura para su fcil comprensin. Pruebas: es el documento donde se especifican el tipo de pruebas realizadas a lo largo de todo el proyecto y los resultados obtenidos.
La gua de uso Es lo que comnmente llamamos el manual del usuario. Contiene la informacin necesaria para que los usuarios utilicen correctamente la aplicacin. Este documento se hace desde la gua tcnica pero se suprimen los tecnicismos y se presenta de forma que sea entendible para el usuario que no sea experto en informtica. Un punto a tener en cuenta en su creacin es que no debe hacer referencia a ningn apartado de la gua tcnica y en el caso de que se haga uso de algn tecnicismo debe ir acompaado de un glosario al final de la misma para su fcil comprensin. La gua de instalacin Es la gua que contiene la informacin necesaria para implementar dicha aplicacin. Dentro de este documento se encuentran las instrucciones para la puesta en marcha del sistema y las normas de utilizacin del mismo. Dentro de las normas de utilizacin se incluyen tambin las normas de seguridad, tanto las fsicas como las referentes al acceso a la informacin. Artculo por Sara Alvarez
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
13
Metodologa de la programacin
Estructuras de un programa Un programa se va a dividir en 3 partes claramente diferenciadas: procesos de entrada proceso de datos procesos de salida
Todo programa esta constituido por un conjunto de instrucciones capaces de gestionar un conjunto de datos. Algoritmos Un algoritmo es la descripcin abstracta de todas las acciones que debe realizar un ordenador, que nos conduce a la solucin del problema. Debe ser conciso y detallado, as como finito, pero sobre todo tiene que ser claro y lo ms sencillo posible. Herramientas y tcnicas para el diseo de algoritmos Para el diseo de algoritmos lo que ms se utiliza son los diagramas de flujos. Diagramas de flujo Los diagramas de flujo son representaciones grficas que mediante el uso de smbolos unidos mediante lneas de flujo, muestran la secuencia lgica que se debe suceder para la solucin del problema. Los diagramas de flujo deber ser independientes del lenguaje de programacin empleado, deben ser flexibles y sencillos. Por otro lado tienen que estar normalizados con algn estndar como puede ser el ISO (a nivel mundial), ANSI (a nivel americano) o el IEEE ( a nivel europeo) Existen 3 tipos de diagramas de flujos: Organigramas: Representacin grfica sencilla con los elementos que representas las entradas y salida de datos del programa Ordinograma: Representacin grfica con secuencias lgicas y detalladas de todos los pasos a seguir para la resolucin del algoritmo. Pseudocdigo: Lenguaje intermedio entre el natural y el de programacin que representa mediante la palabra la solucin del algoritmo.
Dentro de estos tres los ms utilizados son los ordinogramas o pseudocdigos, ya que son los que ms ayudan a los programadores a la hora de pasar esos algoritmos a los distintos lenguajes de programacin. En los siguientes artculos profundizaremos ms en cada uno de ellos y aprenderemos a construirlos y leerlos para su posterior paso al lenguaje de programacin requerido. Artculo por Sara Alvarez
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 14
Diagrama de flujos
Un diagrama de flujos es una representacin grfica que presenta las entradas y salidas de datos al programa. Los diagramas de flujos se dividen en tres partes claramente diferenciadas: Entradas: que debe aparecer en la parte superior de la representacin grafica Proceso: que debe aparecer en la parte central de la representacin grafica Salidas: que debe aparecer en la parte inferior
Smbolos para los dispositivos de entrada/salida Dibujo Dispositivo teclado Tipo entrada
pantalla
salida
disquette
Entrada/Salida
Impresora
Salida
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: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
15
Fechas utilizadas en los flujos de datos Flechas Funcin Lineas de teleproceso Direccin del flujo de datos
Para entender mejor el diagrama tenemos estos tres ejemplos: Diagrama que refleja la suma de 3 numeros leidos por teclado, el resultado aparece por pantalla
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
16
Ordinogramas
Se trata de otro diagrama de flujos que muestra la secuencia lgica y detallada de las operaciones que necesitamos para la realizacin de un programa. Al igual que el organigrama, este tambin debe ser independiente del lenguaje de programacin que utilicemos. Estructura de un ordinograma Todo ordinograma debe estar compuesto de: Un smbolo de inicio de ejecucin del programa La secuencia de operaciones necesarias para el correcto funcionamiento del programa. Las operaciones seguirn un orden (de arriba abajo y de izquierda a derecha). Un smbolo que indique el final del programa.
Smbolos utilizados Simbolo Descripcin Para inicio/fin o para una parada indeterminada Smbolo de entrada/salida genrico Representa una operacin o proceso general con datos de memoria. Smbolo de subprograma o subrutina. Se utiliza para realizar una llamada a un modulo del programa.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
18
Smbolo de decisin para realizar una pregunta con dos posibles respuestas. Es lo que llamamos smbolo de seleccin simple.
Conector. Se utiliza para agrupar varias lneas de flujo que salen del mismo origen. Smbolo para poner comentarios
Reglas a la hora de hacer ordinogramas Todos los smbolos utilizados deben estar unidos por lneas de flujo. No se pueden cruzar las lneas de flujo A un smbolo de proceso pueden llegarle varias lneas de flujo pero solo puede salir una de l. Al smbolo de inicio no puede llegarle ninguna lnea de flujo De un smbolo de fin no puede salir ninguna lnea de flujo pero si le pueden llegar varias.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
19
Ejemplos
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
20
Este segundo te devuelve los grados introducidos en Kelvin y Fahrenheit. Artculo por Sara Alvarez
Pseudocdigo
El principal objetivo del pseudocdigo es el de representar la solucin a un algoritmo de la forma ms detallada posible, y a su vez lo ms parecida posible al lenguaje que posteriormente se utilizara para la codificacin del mismo. Las principales caractersticas de este lenguaje son: Se puede ejecutar en un ordenador Es una forma de representacin sencilla de utilizar y de manipular. Facilita el paso del programa al lenguaje de programacin. Es independiente del lenguaje de programacin que se vaya a utilizar. Es un mtodo que facilita la programacin y solucin al algoritmo del programa.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
21
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:
Para comentar en pseudocdigo se le antepone al comentario dos asteriscos (*) Ejemplos * Programa que calcula el rea de un cuadrado a partir de un lado dado por teclado.
Programa: area_cuadrado Modulo: main **( tambin se puede llamar principal) Variables: lado: natural area: natural Inicio Visualizar "Introduce el lado del cuadrado" Leer lado Area<- lado * lado Visualizar "El rea del cuadrado es", area Fin
* Programa que visualice la tabla de multiplicar del numero introducido por teclado
Programa: Tabla multiplicar Modulo: main Variables: t: entero num : entero Inicio Visualizar "Introduce un nmero" Leer num Desde t=1 hasta t=10 repetir Visualizar num, " X", t, "=", num*t Fin desde Fin
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
22
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
Antes de meternos de lleno en los diferentes tipos de datos os paso la descripcin de dato para que todo quede claro desde el principio. Dato Elemento que no manejamos o almacenamos en un sistema informtico. Los datos manejados en un algoritmo deben llevar asociado un identificador, un tipo de dato y su valor. Datos bsicos Dentro de los datos bsicos nos podemos encontrar con los datos estticos, derivados y estructurados. Los datos estticos son los siguientes: entero, real y natural para los nmeros carcter cadena lgico enumerado
Cmo dato derivado nos encontramos con los punteros que hoy en da no se utilizan casi, a no ser que se programe en C. Los ms complejos son los estructurados y los principales son: array Estructuras Listas, pilas, colas y rboles ( muy utilizados en C) Clases y objetos Ficheros Base de datos
Los cuatro primeros son los internos mientras que los dos ultimos correspondes a tipos de datos externos. Constantes y variables Se define como variable a una posicin de memoria referenciada por un identificador donde se
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 23
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
Los operadores se clasifican en aritmticos, alfanumricos, relacionales, lgicos y por ltimo un pequeo grupo de operadores especiales que depender de los diferentes lenguajes utilizados. Operadores aritmticos: Para la suma y la resta se utilizan respectivamente los smbolos; "+" "-" Para la divisin y hallar el resto de la misma se utilizan respectivamente los smbolos; "/" "%" Para multiplicar y elevar potencias se utilizan respectivamente los siguientes smbolos; "*" "**"
Operadores alfanumricos: Son los utilizados para trabajar con cadenas. Principalmente utilizamos el smbolo "+" para concatenar cadenas. Luego dependiendo de el lenguaje puede funcionar o no el smbolo "-" para concatenar cadenas eliminando los espacios en blanco. Operadores relacionales: El smbolo "==" nos compara dos valores El smbolo "!=" significa distinto y nos devuelve verdadero si los valores comparados son distintos. Luego tenemos lo dems signos como son; "<", ">", "<>", "<=", ">="
Operadores lgicos: Como operadores lgicos nos encontramos con el smbolo "!" o "not" para la negacin y el smbolo "&&" o "and" para la conjuncin. Ejemplos Aritmticos. A=3 B=2 X=a**2 donde x valdra 9 X=a/2 donde x valdra 1.5 X= a*2 donde x valdra 6 X= a%b donde x valdra 1 Alfanumricos: A="Hola"
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 24
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
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) 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
25
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
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 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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 26
empezar a practicar todo lo aprendido en este manual. Artculo por Sara Alvarez
En el caso de la funcin factorial, tenemos el caso bsico que factorial de 1 es igual a 1. As que lo podremos utilizar como punto de ruptura de las llamadas recursivas. As pues, vamos a realizar la codificacin de la funcin recursiva factorial. Primero veamos un pseudocdigo:
funcion factorial(n) si n=1 entonces factorial = 1 sino factorial = n * factorial(n-1) fin funcion
Ahora veamos cmo se implementara esta funcin con el lenguaje de programacin Javascript:
function factorial(n){ if(n==1) return 1 else return n * factorial(n-1) }
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
27
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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
29
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.
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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 30
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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
31
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. 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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
32
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
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.
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
33
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
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
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 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;
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
34
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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
36
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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
37
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, 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:
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
38
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
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
Recupera datos de la base de datos. Aade nuevas filas de datos a la base de datos.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
40
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 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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
41
e caracteres de una longitud variable. La longitud mxima son 4000 caracteres. con una longitud fija. Siendo 2000 caracteres el mximo
ricos, tanto enteros como decimales, con o sin signo. Precisin, indica el nmero mximo de digitos que va a tener el a derecha del punto decimal.
rios. Se emplea para el almacenamiento de grficos, sonidos, etc. Su tamao mximo es de 2 gigas
n de fechas y horas. De forma predeterminada almacena un dato con el siguiente formato: siglo/ao/mes/dia/hora/mi rmetros.
o que representa una cadena hexadecimal que indica la direccin de una fila en su tabla las mismas caracteristicas que el nvarchar2 usua para objectos carcter
2 pero el tamao de un carcter depende de la eleccion del juego de caracteres. El tamao mximo es 2000 bytes.
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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
42
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. 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
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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin. 43
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. 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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
44
Operadores lgicos Operador 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 '_' 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
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: 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.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
46
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
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 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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
47
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
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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
48
exponente) SIGN(valor) NVL(valor, expresin) Nos devuelve el signo de valor Funcin que nos sustituye valor por expresin siempre que valor sea NULL Nos devuelve la raz cuadrada de n
ROUND(nmero[, m]) Nos redondea numero a m decimales SQRT(n) TRUNC(nmero[,m ]) Trunca los nmeros para que tengan m decimales. 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) MAX(expresin) MIN (expresin) Propsito Nos devuelve la media de n 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.
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 : Funcin Propsito
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
49
GREATEST(valor1, valor2,) Obtiene el mayor valor de la lista LEAST(valor1, valor2,...) 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;
Nos devuelve CONCAT(cad cad1 1, cad2) concatenada con cad2 UPPER(cad) LOWER(cad) Convierte cad a maysculas Convierte cad a minsculas
LPAD(cad1,n Con esta [,cad2]) funcin aadimos caracteres a cad1 por la izquierda hasta una longitud mxima dada
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
50
por n Convierte la INITCAP(cad primera letra ) de cad a mayscula Elimina un conjunto de caracteres a la izquierda de cad, siendo set el conjunto de caracteres a eliminar
LTRIM(cad [,set])
Con esta funcin aadimos caracteres de la misma RPAD(cad1, forma que n[,cad2]) con la funcin LPAD pero esta vez los aadimos a la derecha Hace lo mismo que RTRIM(cad[, LTRIM pero set]) por la derecha Sustituye un conjunto de caracteres de 0 o ms REPLACE(ca caracteres, d,cadena_bu devuelve cad scada con cada [,cadena_su ocurrencia de stitucion] ) cadena_busc ada sustituida por cadena_sustit ucion Devuelve la subcadena de SUBSTR(cad cad que , m[,n]) abarca desde m hasta el numero de
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
51
caracteres dados por n. Convierte caracteres de una cadena en caracteres diferentes. Devuelve TRANSLATE( cad1 con los cad1,cad2,c caracteres ad3) 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)
select CONCAT ('el nombre de alumno es', nombre) from alumno;
Y asi con el resto de funciones Funciones que devuelven valores numricos Estas funciones nos devuelven nmeros a modo de informacin. Propsito Devuelve el valor ASCII de la primera letra de cad
Funcin que busca un conjunto de caracteres dentro de una cadena. Nos devuelve la posicin de cad2 en cad1 em Devuelve en nmero de caracteres de cad
Como con las funciones anteriores dejamos unos ejemplos para que veis su funcionamiento.
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
52
Sentencia que nos devuelve la posicin de la ocurrencia 'pe' dentro de la cadena 'Los perros estn bien' a partir de la posicin 2
select INSTR('Los perros estn bien','pe',2) from tabla;
Sentencia sql que nos devuelve el numero de caracteres de los nombres de los alumnos
select LENGTH(nombre) from alumnos;
e la fecha del primer da de la semana indicado por cad despus de la fecha indicada por fecha. Cad ser siempre un d 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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
53
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;
Funcin
Propsito Esta funcin nos convierte una fecha de tipo date a una fecha de tipo varchar2 Nos convierte un dato de tipo number a un tipo varchar2
O_CHAR(fecha,'formato')
TO_DATE(cad,'formato')
Convierte un tipo de dato varchar2 o char a un valor de tipo date con el formato especific Convierte una cadena a tipo de dato number, y si se le pasa, con el formato especificado
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;
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
54
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 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 Visualiza el valor de cadena desde el comienzo hasta longitud, con el formato especificado.
in
presin)
cod2,valor-por-defecto) Funcin que sustituye un valor por otro. Si var es igual a cualquier val de la lista lo sustituye
comienzo[,longitud]]])
Pasamos a poner algunos ejemplos. 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 3: Mostramos el nmero de bytes que tiene la columna nombre de la tabla usuarios.
Selec t VSIZE(nombre) "tamao", nombre from usuarios;
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
55
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: 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
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
56
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. 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;
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
57
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 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
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');
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
58
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 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 <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 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;
Manual de iniciacin a la programacin: http://www.desarrolloweb.com/manuales/74/ Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.
60