Está en la página 1de 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

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)

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.

Artculo por

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

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

+ 8*10

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

Hemos descompuesto el valor expresado "18598" multiplicndolo por la base del sistema (10)
elevada a la posicin del digito en la expresin.
El nmero 1 se encuentra iniciando la expresin y guarda en su interior 10 000 (Para
comprobarlo: si eliminamos el 1 el resultado ser (18598-10 000)) por lo tanto 10 000 es igual
a 10 4 (1*104)=10 000 + (8*103)= 8 000
En el sistema de numeracin binario la misma formula es aplicable:
10 (nmero binario) = 1*2

+ 0*2 0

Lo que indica que 10, en el sistema decimal es igual 2, en realidad en el sistema de


numeracin binario se puede definir cualquier nmero entero mayor o igual a 0, sin embargo la
estructura de almacenamiento Byte solo fue diseada desde su origen para almacenar hasta
256 porque incluye como mximo 8 bits (28 = 256) (recordemos que se toma en cuenta el 0
por lo cual 255 equivaldr a 256) y se escogi este valor como mximo porque es la totalidad
de caracteres disponibles en la tabla ASCII, que incluye todos los caracteres validos dentro de
un computador, para comprobar esto podemos guardar un carcter en un archivo sin formato y
como resultado tendremos que siempre ocupar 1 byte, si colocamos 2 caracteres el tamao
del archivo ser igual a 2 bytes. Lo que justifica que 1 byte = 8 bits = puede almacenar hasta
256. y 1 bit es la mnima unidad en la que se puede almacenar informacin, Ejemplo: el tipo
booleano (bool) ocupa en memoria 1 bit, por tanto TRUE = 1 FALSE=0.
Por esta razn la mayora de los hardwares con capacidad de almacenamiento tales como
Discos duros, memorias, y otros dispositivos; su capacidad siempre ser divisible entre 2 , al
igual que las dems estructuras de almacenamiento ( Kb, Mb, Gb, Tb, etc)
Como refera anteriormente, la tabla ASCII incluye todos los caracteres validos dentro del
computador, desde todas las letras en minsculas y maysculas, nmeros y otros especiales,
estos ltimos utilizados en su mayora como delimitadores o separadores gua dentro de un
formato de archivo de contenido binario (PDF, DOC, EXE, DLL, OCX, ENTRE OTROS) Ejemplo de
delimitadores: La direccin IP incluye 4 pares de cuyo valor mximo es 255 para poder
representarlo en decimal se hace ms que necesario, obligatorio el uso de delimitadores por lo
cual se emplea un ". (Punto)" de modo tal que 255.255.255.255, para reducir esta informacin
a 4 bytes podremos acudir a la tabla ASCII.
Por ejemplo el carcter "A" dentro de la tabla ASCII en el sistema decimal ocupa 64, podemos
ejecutar una funcin ampliamente reconocida por lenguajes de programacin entre ellos
(Delphi, C++, VB, Php, etc) llamada ORD que producir como resultado de ord(64) "A" si por el
contrario ejecutamos chr('A') es resultado ser 64 en decimal, el cual representado en binario
equivaldra a "1000000" , auque 64 no ocupe fsicamente los 255 (1 byte completo) su tamao
en disco siempre ser 1 byte, porque la mayora de sistemas operativos y hardware desde su
ensamblaje esta orientados para reservar un mnimo de espacio en memoria y en disco
tomando en cuenta que ese valor puede ser modificado a 255 (mximo) 0 (mnimo) en
cualquier momento.

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

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

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.

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.

22

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

Fin desde

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)

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.

26

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

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.

27

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:

Artculo por

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

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

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.

30

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:

Artculo por

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

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

Funcin

and

Devuelve el valor TRUE cuando los dos condiciones son verdaderas

or

Devuelve el valor TRUE cuando una de las dos condiciones es verdadera

not

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

Propsito

ABS(n)

Nos devuelve el valor absoluto de n

CEIL(n)

Nos devuelve el valor entero igual o inmediatamente


superior a n

FLOOR(n)

Nos devuelve el valor entero igual o inmediatamente


inferior a n

MOD(m,n)

Nos devuelve el resto de la divisin de m entre n

POWER(m,
exponente)

Calcula la potencia de m elevado a exponente

SIGN(valor)

Nos devuelve el signo de valor

NVL(valor,
expresin)

Funcin que nos sustituye valor por expresin siempre


que valor sea NULL

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)

Nos devuelve el valor mximo de expresin

MIN (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

Propsito

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

Proposito
Nos devuelve el nombre del usuario actual

VSIZE(expresin)

Nos devuelve el nmero de bytes que ocupa la


expresin.

UID

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

También podría gustarte