Está en la página 1de 104

VISUAL BASIC.

NET
Formularios de Windows
Un formulario Windows representa la conocida ventana utilizada en los Sistemas Operativos de tipo Windows.
Por otra parte, un control es aquel elemento situado dentro de una ventana o formulario y que permite al
usuario de la aplicacin Windows interactuar con la misma, para introducir datos o recuperar informacin.
Dentro de .NET, las ventanas clsicas Windows reciben la denominacin de Windows Forms o WinForms.
Los formularios Windows Forms y sus controles proporcionan una arquitectura ms extensible y compleja
para el desarrollo de aplicaciones basadas en Windows; sin embargo, hay algunas diferencias entre los
formularios y los controles de Windows Forms, y los formularios y controles de Visual Basic 6.0. Los temas
siguientes se han concebido para ayudarle a comprender las diferencias.
En Visual Basic 6.0 (y en todas las versiones anteriores de Visual Basic), las aplicaciones basadas en
Windows se creaban mediante formularios que formaban parte del motor en tiempo de ejecucin de Visual
Basic. En Visual Basic 2008, las aplicaciones basadas en Windows se crean utilizando formularios Windows
Forms proporcionados por .NET Framework.
Controles
Como ya se ha comentado anteriormente, los controles proporcionan el nico medio por el cual un usuario
puede interactuar con una aplicacin Windows Forms, con nuestro formulario en este caso.
El Cuadro de Herramientas
El Cuadro de Herramientas es el componente de Visual Basic .NET a travs del cual podremos crear e
insertar todo tipo de controles en nuestra aplicacin de una forma rpida y sencilla.
Propiedades de los controles
Todos los controles, de la misma forma que ocurre con los formularios, disponen de multitud de parmetros
configurables que permiten darle una forma o comportamiento determinado y personalizado a cada uno de
ellos. Todo eso se hace a travs de la ventana Propiedades que nos informa acerca de esas propiedades para
el control o formulario que hayamos preseleccionado con el ratn. De esa manera podremos consultar y
modificar las propiedades de cada uno de los controles para adaptarlos a nuestras necesidades.
Controles ms comunes
A continuacin, se van a comentar brevemente los controles ms habituales en aplicaciones Windows Forms.
Button
Label
TextBox
ListBox
ComboBox
CheckBox
RadioButton
GroupBox
Eventos sobre controles
Los eventos son sucesos provocados por los controles cuando un usuario acta sobre ellos, y que pueden ser
capturados para asociar cdigo a los mismos, de manera que cada vez que se produzca una accin
determinada del usuario (pulsar un botn) se producir un evento (Click, en este caso) y el programador podr
escribir cdigo asociado a ese evento. Lo que se consigue es que cuando un usuario pulse sobre un botn se
lleven a cabo una serie de acciones en el programa (mostrar un texto en el caso ms sencillo).
Ahora, se va a mostrar un ejemplo de implementacin de eventos sobre controles, en concreto sobre un
control de tipo Button. Implementaremos un evento de manera que cuando pulsemos sobre un botn, ste
acte mostrandonos un mensaje de texto sobre la pantalla a travs del mtodo MessageBox.Show(). Una
forma sencilla de codificar el evento sobre un control es hacer doble click sobre ese control desde la vista
Diseo de Visual Studio. De esta manera, se nos implementa la cabecera del evento ms comn de ese
control. As, bastar simplemente con escribir el cdigo que queramos que se ejecute cada vez que se
produzca ese evento. En el caso que se ha expuesto, quedara como sigue:
Private Sub boton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles boton.Click
MessageBox.Show(Acabas de pulsar este botn)
End Sub
Eventos sobre formularios

Tambin es posible, asociar cdigo a eventos sobre formularios. Por ejemplo, al evento que lanza un
formulario cuando el usuario cierra el mismo. Este evento se llama Closing y puede ser capturado y
programado para realizar alguna accin, por ejemplo, la de confirmar el cierre del formulario (o aplicacin):
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
Handles MyBase.Closing
If MessageBox.Show(Cerrar la ventana?, Atencin, MessageBoxButtons.YesNo, MessageBoxIcon.Hand)
= DialogResult.No Then
e.Cancel = True
End I
f End Sub
Label
Muestra un texto informativo al usuario. Su utilizacin puede ser conjunta con otro control. Por ejemplo,
podremos colocar un Label cerca de una TextBox que informe acerca del contenido de ste control. Se trata
de un control esttico por lo que el usuario no podr interactuar con l ya que simplemente se limita a mostrar
un determinado texto.
TextBox
Muestra una caja capaz de almacenar un texto introducido por el usuario y cuyo contenido puede cambiar a lo
largo del programa. Las propiedades ms importantes de este control son las siguientes:
Text : Almacena el texto del control.
Multiline : Permite indicar si queremos permitir almacenar una sola lnea o varias en el mismo control.
Enabled : Permite habilitar/deshabilitar la caja de texto.
ReadOnly : Permite indicar que el contenido de la caja de texto sea de slo lectura por lo que el usuario no
podr alterar su contenido.
MaxLength : Permite indicar el mximo de caracteres que ser capaz de almacenar la caja de texto.
TextLength : Devuelve la longitud del texto que actualmente est almacenado en este control.
CheckBox
Este control muestra una casilla de verificacin, que podemos marcar o no para activar alguna opcin de
nuestro programa. Internamente este control funciona como un Boolean ya que su estado podr ser
Verdadero (ha sido seleccionado) o Falso (no est seleccionado). Las propiedades ms importantes de este
control son las siguientes:
Checked : Indica True o False dependiendo de si el control ha sido seleccionado o no, respectivamente.
RadioButton
Un control RadioButton permite definir conjuntos de opciones autoexcluyentes. Es decir, se mostrar por
ejemplo un grupo de 3 RadioButton de manera que slo se pueda seleccionar uno de ellos e indique asi la
opcin escogida por el usuario. Para poder detectar cuando ha sido seleccionada la opcin de un determinado
RadioButton disponemos del evento CheckedChange, el cual podremos implementar convenientemente de
manera que cada vez que se pulse dicho RadioButton se ejecuten las acciones que correspondan.
GroupBox
Este control permite agrupar controles en su interior de manera que, en cierta manera, permanezcan aislados
del resto de controles del formulario. Este control nos ser til para crear ms de un grupo de RadioButton ya
que sino los separasemos con un control de este tipo se relacionaran entre ellos y representaran la misma
opcin.
ListBox
Este control es capaz de almacenar una lista de valores, y a la vez permite al usuario seleccionar uno o varios
de estos valores. Las propiedades ms importantes de este control son:
Items: Contiene la lista de valores que almacena el ListBox. Se trata de un objeto Collection, el cual
proporciona una serie de mtodos para poder trabajar sobre ese conjunto de valores:
o Add(item) : Permite aadir un nuevo elemento a la lista.
Sorted: Si almacena el valor True, se ordenarn todos los elementos de la lista (tanto los que ya estaban
almacenados como los que se inserten posteriormente) y se le asigna el valor False ya no se ordenarn los
nuevos elementos que se inserten (aunque los que ya estaban insertados mantendrn el orden).
SelectedItem: Devuelve el elemento de la lista que se encuentra seleccionado por el usuario.
ComboBox
Se trata de un control mezcla de otros dos que ya hemos visto, el TextBox y el ListBox, ya que realmente se
trata de un ListBox pero con apariencia de TextBox en el sentido de que es capaz de almacenar una lista de

valores (ListBox) pero visualmente parece ser un TextBox. A diferencia de este ltimo, si pulsamos sobre l
desplegar la lista de los valores que almacena.
Condiciones en VB
Visual Basic permite probar condiciones y realizar diferentes operaciones en funcin de los resultados de la
prueba.Puede comprobar si una condicin es verdadera o falsa, los distintos valores de una expresin o las diferentes
excepciones que se generan al ejecutar una serie de instrucciones.
En el siguiente ejemplo se muestra una estructura de decisin que prueba si el valor de una condicin es true y
emprende distintas acciones en funcin del resultado.

Condicin IF:
La sintaxis a emplear con Visual Basic con la sustitucin del Si por If, del Entonces por Then, del SiNo por
Else y del Finsi por End If. La nica salvedad a tener en cuenta es que Visual Basic permite adems de la
escritura en bloques la escritura en una sola lnea.

Tambin es posible encadenar varias acciones derivadas de un Then o de un Else en una sola lnea. Sin
embargo, recomendamos usar la opcin de sintaxis en una sola lnea exclusivamente para desarrollos
sencillos como puede ser una instruccin en caso de que se cumpla la condicin y otra en caso de que no se
cumpla. Si intervienen varias instrucciones, siempre resultar ms legible usar el formato de bloque.
Ejemplo:
If A > 7 And B < 5 Then
MsgBox ("A es mayor que 7 y B menor que 5")
End If
Else:
If A > 7 And B < 5 Then
MsgBox ("A es mayor que 7 y B menor que 5")
Else
MsgBox ("A no es mayor que 7 B no es menor que 5")
End If

Switch o Select
Esta estructura condicional de seleccin mltiple, le damos un valor (puede ser una variable) y una lista de
casos y si cumple alguno de los casos ejecuta las instrucciones asociadas a ella, en caso de que ninguna sea
podemos indicarle que hace por defecto, normalmente se usa para indicar de un error con un mensaje. Su
sintaxis es:

Los case de un select se pueden escribir con rangos con To, por ejemplo, 1 TO 5, tambin podemos usar
comas para indicar varios valores. Por ejemplo:

Ciclos
Un ciclo es una estructura de control que nos ayuda a repetir un conjunto de instrucciones un X nmero de
veces.
Las estructuras de bucles de Visual Basic permiten ejecutar una o varias lneas de cdigo de forma repetitiva. Puede
repetir las instrucciones de una estructura de bucles hasta que una condicin sea True, una condicin sea False, un
nmero de veces especificado o una vez para cada objeto de una coleccin.
En el siguiente ejemplo se muestra una estructura de bucle que ejecuta un conjunto de instrucciones hasta que una
condicin se convierta en verdadera.

While:
Ejecuta una serie de instrucciones siempre que una condicin dada sea True (verdadera).
While significa mientras. Si condition es True, se ejecutan todas las statements hasta que se encuentra la
instruccin End WhileEl Control se devuelve a While el fragmento, y condition se comprueba de nuevo.Si
condition an es True, se repite el proceso.Si es False, el control que se va a extraer que sigue el fragmento
de End While .
Utilice una estructura While...End While si desea repetir un conjunto de instrucciones un nmero indefinido de
veces, siempre que una condicin sea True.
While index <= 10
Write(index.ToString & " ")
index += 1
End While
WriteLine("")
' salida: 0 1 2 3 4 5 6 7 8 9 10
For:
La construccin For...Next ejecuta el bucle un nmero fijo de veces.Utiliza una variable de control de bucle,
tambin denominada contador para realizar el seguimiento de las repeticiones.Especifica los valores de inicio
y fin de este contador, y puede especificar opcionalmente la cantidad en la que se incrementa de una
repeticin a la siguiente.
Ya el codigo dentro del form seria este:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim i As Integer
For i = 1 To 10
MsgBox(i * CInt(TextBox1.Text))
Next i

End Sub
End Class

For Each
La construccin For Each...Next ejecuta un conjunto de instrucciones una vez para cada elemento de una
coleccin.Especifica la variable de control de bucle pero no tiene que determinar los valores de inicio y fin para
ella.
Do While
La construccin Do...Loop le permite probar una condicin al comienzo o al final de una estructura de
bucle.Tambin puede especificar si repite el bucle mientras la condicin sigue siendo True o hasta que se
convierta en True.

Arreglos y vectores
Los Arreglos se utilizan para almacenar un conjunto de variables, que sean del mismo tipo de dato, y todas
estas bajo un mismo nombre.
Por ejemplo tenemos 20 variables de tipo String que almacenan nombres (nombre1, nombre2, etc..). si yo
ahora quisiera pasar todas estas cadenas a minsculas tendra que utilizar la funcin Lcase con cada variable:
nombre1 = Lcase(nombre1), nombre2 = Lcase(nombre2), etc..
En cambio si utilizara un arreglo solucionara mi problema solo a esto
Dim nombres(30) As String
For x = 0 To 30
nombres(x) = LCase(nombres(x))
Next
Siguiendo el ejemplo anterior: en vez de escribir la sentencia Lcase 30 veces para cada variable, hemos
utilizado un arreglo llamado nombres con un nmero de ndice 30 , es decir que almacena 30 datos de tipo
String.
Declaracin de los arreglos en el cdigo:

Para crear un arreglo se debe en primer lugar declararlo como cualquier otra variable, la nica diferencia es
que debemos indicar la cantidad de elementos que contendr el arreglo, colocando el nmero de ndice entre
parntesis.
Lo siguiente crea un arreglo de 15 elementos o datos de tipo integer
Dim miArreglo (1 to 15) as integer
Esto crea un arreglo de 11 elementos o datos de tipo String
Dim empleados (10) as String
Declaracin e inicializacin del vector con los nombres de los meses, de tipo string
Dim Meses() As String = {"Enero", "Febrero", "Marzo", _
"Abril", "Mayo", "Junio", _
"Julio", "Agosto", "Septiembre", _
"Octubre", "Noviembre", "Diciembre"}
Dim mes as Integer = 1
Console.writeln(NomMeses[mes])
Los arrays son direccionables, no hay que buscar un elemento para utilizarlo, si es que conoces su direccin,
por el contrario, en segn qu acciones son mucho ms lentos que las listas.
Las listas no son direccionables, para utilizar un elemento hay que llegar a l, hay que buscarlo.
Las listas son unas estructuras dinmicas en cuanto a su tamao, los arrays por principio no, aunque en
muchos lenguajes se dispone de instrucciones para cambiar su tamao en tiempo de ejecucin.
En cuanto a la discrepancia entre listas o arrays, es una historia absurda, lo adecuado es tener claro el
funcionamiento de ambas estructuras y utilizarlas cada una en el momento adecuado, pero para ello hay que
tener un criterio abierto, o no hay que cerrarse en banda, igual que con los lenguajes de programacin.
Matrices
Las matrices son arreglos de ms de 1 dimensin (2 o ms), a diferencia de los vectores que poseen una sola
dimensin.
Podemos imaginar una matriz bidimensional (2 dimensiones), como una cuadrcula con filas y columnas,
donde las filas representaran las coordenadas x y las columnas las coordenadas y.
A una matriz de 3 dimensiones o tridimensional se la puede imaginar con las coordenadas x, y, z, y esta es
ideal para representar figuras en el espacio por ejemplo.
Las matrices se declaran en el cdigo de manera igual que los vectores, con la diferencia que debemos
indicar ms subndices de acuerdo a la cantidad de dimensiones que posea la matriz. Por lo general no se
suele utilizar matrices de ms de 3 dimensiones..
Ejemplo de matriz de 2 dimensiones:
Matriz bidimensional de 6 x 8 (de 2 dimensiones).
Ejemplo:
Dim personas (1 to 6, 1 to 8) as string
Si no se declara el tipo de variable el array ser tipo Variant u Object (segn la versin de Visual Basic que
utilicemos) por defecto. Conviene tener cuidado con esto y seguir las mismas pautas que hemos indicado para
las variables. La declaracin de una matriz tradicional de m x n elementos podra ser:
Dim A(3, 2) As Integer

El nmero de elementos declarados se calcula teniendo en cuenta que la numeracin de los ndices empieza
en cero, aunque ya hemos comentado que en algunas versiones existe una clusula denominada Option Base
que permite fijar como primer ndice de los arrays el uno. En las versiones ms recientes de Visual Basic (o
con Option Base fijado en cero) tendremos una fila cero y una columna cero para la matriz declarada, con lo
que el nmero de elementos ser de 4 x 3 = 12. Decimos que hay 4 filas que son 0, 1, 2, 3 y tres columnas
que son 0, 1, y 2. Si la versin de Visual Basic lo permite y fijamos Option Base en uno, la matriz ser de 3
filas (1, 2 y 3) y dos columnas (1 y 2) siendo por tanto el nmero de elementos 3 x 2 = 6
Vamos a definir una matriz, array o arreglo de dos dimensiones a modo de ejemplo: queremos almacenar en
una matriz el nmero de alumnos con que cuenta una academia ordenados en funcin del nivel y del idioma
que se estudia. Tendremos 3 filas que representarn Nivel bsico, medio o de perfeccionamiento y 4
columnas que representarn los idiomas (1 = Ingls, 2 = Francs, 3 = Alemn y 4 = Ruso). La declaracin de
dicha matriz sera:
Dim Alumnosfxniveleidioma(3, 4)
Podramos asignar contenidos de la siguiente manera:
Alumnosfxniveleidioma(1, 1) = 7
Alumnosfxniveleidioma(1, 2) = 14
Alumnosfxniveleidioma(1, 3) = 8
Alumnosfxniveleidioma(1, 4) = 3
Alumnosfxniveleidioma(2, 1) = 6
Alumnosfxniveleidioma(2, 2) = 19
Alumnosfxniveleidioma(2, 3) = 7
Alumnosfxniveleidioma(2, 4) = 2
Alumnosfxniveleidioma(3, 1) = 3
Alumnosfxniveleidioma(3, 2) = 13
Alumnosfxniveleidioma(3, 3) = 4
Alumnosfxniveleidioma(3, 4) = 1
Los elementos de ndice cero no los estamos utilizando, aunque podramos hacerlo si quisiramos.
La representacin grfica que podramos asociar a esta asignacin de datos sera esta matriz:

Manipulacin de Errores
La notificacin de la excepcin ocurre muy tarde: cuando se recibe la notificacin, la aplicacin ya no podr
responder a la excepcin.
2. La aplicacin terminar abruptamente si la excepcin ocurre en el hilo principal o en cualquier otro hilo que
sea iniciado por cdigo no administrado (el hilo principal de la aplicacin obviamente es ejecutado por
Windows no administrado)
3. No tenemos acceso a ninguna informacin valiosa acerca del error, excepto la excepcin misma. No se
podrn cerrar conexiones a bases de datos, hacer rollback de transacciones ni nada til.
As que mi recomendacin es nunca basar el manejo de excepciones en los eventos
Application.ThreadException ni AppDomain.UnhandledException. Ellos deben ser usados y existen como las
redes de seguridad de los acrbatas; su funcin es la de hacer un registro de la excepcin en algn
mecanismo de log, para alguna examinacin futura. As que hay que darse la pela y manejar cada excepcin
en su sitio y actuar en concordancia.

Esta ltima invitacin conlleva a tener en cuenta otra serie de factores que generalmente se omiten cuando
uno comienza a desarrollar en forma:
1. El cdigo metido entre try, catch se ejecuta muy lento. Consume muchos recursos. As que slo manejemos
excepciones cuando realmente se necesite. Cundo es eso?
Las excepciones estn construidas para manejar condiciones que no se pueden controlar con la lgica de la
aplicacin. Por ejemplo que se cae la conexin con el servidor, o que el disco est lleno, o que el hardware
fall
Antes de lanzar excepciones por todo, fijmonos si realmente es necesario. Evitemos tambin poner mucho
cdigo en el try; solo afectemos con el try el cdigo que realmente puede fallar. Por ejemplo es preferible:
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
a:
try
{
conn.Close();
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.GetType().FullName);
Console.WriteLine(ex.Message);
}
2. No emita Exception(). O es que eso le da mucha informacin?
El framework .net tiene un nmero de excepciones que nos permite controlar argumentos y operaciones
invlidas, timeouts, conexiones, overflows, etc. Usemos esas excepciones que realmente nos indican qu fue
lo que sucedi.
3. Use bloques try/finally. Recuerde que las instrucciones en el Finally siempre se ejecutan
independientemente de si se produjo o no la excepcin. Esto es muy til para liberar recursos, cerrar
conexiones, etc.
4. Siempre use un catch para cada tipo de excepcin que se pueda generar y ordnelos desde el ms
especfico hasta el menos especfico. Esto ayuda a identificar plenamente el error que se gener y no terminar
con excepciones como: Object reference not set to a instance of an Object.
5. Cuando cree excepciones propias del aplicativo, asegrese de distribuir el Assembly a una ubicacin
compartida para todos los posibles dominios que tengan que ver con ellas.
6. De acuerdo a como el mecanismo de excepciones funciona, es muy importante siempre que creemos
excepciones propias, proveerlas al menos con los tres constructores de excepciones bsicos.
7. Siempre es recomendable usar las excepciones de .Net. Las personalizadas solo tendrn que ver con
escenarios programticos.
8. Siempre se ha pensado que para las excepciones personalizadas se debera heredar de
ApplicationException; sin embargo en la prctica se ha demostrado que no se agrega valor significativo y
adems se pierde cierto performance. As que es mejor heredar siempre de Exception.
9. Use mensajes gramticamente correctos.
10. Las excepciones pueden incluir propiedades. Estas propiedades pueden ser accedidas
programticamente para tomar acciones. Incluya informacin extra relevante en estas propiedades cuando
sea til.
11. En vez de retornar null, lance excepciones en la mayora de casos. Eso evita inconvenientes que a veces
son difciles de detectar. Evite tambin retornar cdigos de error.
Estas son solo unas pocas recomendaciones a la hora de manejar excepciones. Hay muchas ms que se
aprenden con el pasar de las lneas de cdigo.
OPERACIONES ENTRADA/SALIDA EN VISUAL BASIC
Publicado en 10 octubre 2012 por Prof. Luis E. Aponte I.

Compartir este post


Mens
Dos tipos de men, el que podemos encontrarnos en el formulario principal de la aplicacin en la barra de
men, y el que se obtiene a partir del botn secundario del ratn.
El primero es genrico para toda la aplicacin, el segundo es personalizado para el objeto que se crea,
podramos decir que es una forma ms rpida de acceder a las mismas opciones.
50.4. Creacin del men clsico.
Arrancaremos de la ventana principal de la aplicacin, el formulario MDI, en el que colocaremos un objeto que
contendr las distintas opciones del men.

El objeto
que contiene el men, puede utilizarse indistintamente
en un formulario contenedor, o en formulario normal, no hay diferencia en su uso, el objeto es del tipo
MenuStrip, y lo encontraremos en la caja de herramientas en el bloque de men y barras de
herramientas.
La creacin es sencilla.
Colocamos, arrastramos, el objeto hacia el formulario y quedar
colocado en la barra de objetos inferior de la ventana de diseo de
formularios y en el mismo formulario, le daremos un nombre
adecuado despus, en el ejemplo BarraMenu
Colocado el objeto en el formulario, la forma ms sencilla de crear el men, es la de ir escribiendo en la zona
que l mismo habilita cuando est seleccionado.
Como podemos ver en la imagen, al colocar el ratn para escribir nos aparece inmediatamente la opcin de
poder escribir posteriormente en la parte inferior o en la lateral.
De esta forma lo que hacemos es ir escribiendo los distintos elementos que
componen el men.

Pero eso es la parte visible, ahora hay que conectar esa opcin del men con nuestros programas.
Lo ms sencillo es hacer doble clic en la opcin que deseemos, de esa forma el entorno de VB, nos
visualizar la ventana de cdigo con el evento clic del objeto seleccionado disponible para escribir nuestro
cdigo.
Private Sub ProcToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles ProcToolStripMenuItem.Click
End Sub
Pero esto es solo la parte del evento ahora hay que aadir la parte de enlace con el programa.
Dim Programa As Form = New MantenRandom
Programa.MdiParent = Me
Programa.Show()
Me.CenterToParent()
Y todo junto quedara
Private Sub ProcToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles ProcToolStripMenuItem.Click
Dim Programa As Form = New NombreFormulario
Programa.MdiParent = Me
Programa.Show()
Me.CenterToParent()
End Sub
Como esto es muy largo, se puede desarrollar un procedimiento que reduzca el volumen de cdigo escrito.
La parte que se ha desarrollado es la de creacin de un men de forma habitual, que es la que nos
encontramos habitualmente, pero tambin podemos desarrollar un men de forma algo ms personalizada o
avanzada, como deseemos verlo.
Para ello podemos acceder con la opcin de Editar Elementos, del men contextual que se despliega al hacer
clic con el botn secundario del ratn, encima de la barra de men que se ha aadido.
En esa opcin se habilita una ventana con los objetos que componen el men que hemos creado, o bien sin
ningn elementos y de esa forma podemos aadirlos pero con la ventaja de que podrn ser de uno de entre
tres tipos posibles, el visto , MenuItem, o bien del tipo ComboBox o TextBox, aunque hay que decir que son
poco habituales, pero cada uno tiene su estilo a la hora de hacer los programas y cada programa a su vez es
un mundo, por lo tanto lo importante es conocer su existencia y usarlas cuando sea conveniente.
A continuacin podemos ver la ventana que se abre al seleccionar dicha opcin.

Sin embargo el men del ejemplo es mnimo, para de verdad poder ver las caractersticas mejor uno hecho, y
para ello podemos seleccionar la opcin de
Proyecto > Agregar Windows Form
Y seleccionar la opcin de Formulario Primario MDI, el cual incorpora un men por defecto, que podemos
aprovechar para poder obtener nuestras propias conclusiones, adems, dispone de cdigo escrito para
algunas opciones que pueden ser interesantes y podemos aprovechar.
Cada opcin del men puede tener a su vez submens, solo hace falta ir aadiendo objetos a la coleccin de
elementos del men. Para ello en la ventana de parametrizacin hay que ir a la propiedad DropDownItems, y
al seleccionarla se vuelve a abrir una ventana igual que la actual pero con los elementos existentes en el
submen, o bien vaca para aadirlos.

En la ventana de parametrizacin, o personalizacin como deseemos llamarla, podemos encontrar la forma


de aadir o quitar algunas caractersticas.
Asignar teclas de acceso rpido.
ShortCutKeys
ShowShortCutKeys
ShortCutKeysDisplayString

Definir las teclas de acceso rpido


Activar o no su visualizacin
El texto que se visualiza para informar de las teclas

Texto de ayuda en formato de globo,


ToolTipText
El texto que se desea visualizar
AutoToolTip
Si se activa o no.
Si deseamos visualizar un vise de checked en la opcin.
Checked
Si se visualiza o no el vise del checked
CheckState
El estado por defecto del checked.
Esta opcin depender del valor de la propiedad DisplayStyle, pues si est en el modo texto e imagen, no se
visualiza el checked, y al revs.
Si deseamos visualizar un icono con la opcin, si se activa hay que asignar que imagen se visualiza.
DisplayStyle
Dispone de varios valores, texto, texto imagen, imagen y nada.
Image
Icono que se visualizar.
TextImageRelatin
Posicin de la imagen respecto al texto.
Y aunque en el ejemplo de men, a la opcin le hemos asignado la carga de un programa, evidentemente en
el evento podemos realizar cualquier tipo de accin que podamos necesitar.
Creacin de un men contextual.
Para incluir un men contextual en la ventana, seleccionamos en la caja de herramientas el objeto
ContextMenuStrip, de la seccin de men y barra de
herramientas.
Lo arrastramos encima de la ventana y lo dejamos en
cualquier punto de la misma. Como es un objeto no
visualizable se creara la referencia en la barra de objetos
inferior.
Le asignamos en la ventana de propiedades el nombre que deseemos.
Vamos a la propiedad tems y la seleccionamos, aparecer una ventana que nos permitir aadir los
elementos que deseemos en el men.
Si desplegamos el combo que tenemos
en la parte superior podemos
seleccionar el tipo de componente que
deseamos en nuestro men,
normalmente ser un menuItem ,
opcin por defecto.
Pulsamos en agregar y a continuacin
en la ventana de la derecha
seleccionamos la propiedad Text, para
escribir el texto que deseemos se
visualice.
Conviene tambin en la propiedad
Name asignar un valor acorde a su
utilizacin.
Despus solo queda ir asignando los
valores a cada grupo de propiedades para darle la apariencia que nos parezca adecuada.
Se puede anidar opciones dentro de cada uno de los elementos del men, creando ms elementos en la
propiedad DropDownItems del elemento del men que necesitemos.

Creado el men el siguiente paso es asignarlo al objeto de la ventana con el cual


queremos interactuar.
Para ello seleccionamos el objeto en cuestin y acudimos a la propiedad
ContextMenuStrip, al seleccionar la propiedad y desplegar el combo podremos ver el
nombre que le hemos asignado a nuestro objeto, lo seleccionamos.
Ejecutamos el programa y cuando hagamos clic con el botn secundario en el objeto que le hemos asignado
el men, ste se desplegar.
Ahora hemos de asignarle a cada opcin del men el cdigo correspondiente, para ello
solo basta que seleccionemos el objeto en la barra inferior de objetos en la vista de diseo
de formulario, y hacer doble clic, aparecer el evento y ah asignamos nuestro cdigo.
Private Sub Alta_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Alta.Click
MsgBox("Eureka, funciona", MsgBoxStyle.Information)
End Sub
50.6. Barra de herramientas.
Igual que hemos creado un men, podemos crear una barra de herramientas, todo
es cuestin de si es o no necesaria, y que no la hagamos solo como elemento
decorativo y que no sea imprescindible, al fin y al cabo una barra de herramientas
en algunos casos no es nada ms que un acceso rpido a determinadas acciones.
El objeto que contiene los elementos de la barra de herramientas es del tipo
ToolStrip, y est en el mismo bloque de objetos que el men.
Una barra de herramientas puede contener cualquier objeto de los habituales en el formulario.
Podemos comprobarlo fcilmente en el formulario MDI utilizado como ejemplo anteriormente, si accedemos a
la opcin de editar elementos del men contextual, bien a Items de la ventana de propiedades, - del objeto
barra de herramientas -, podemos acceder desde ah a la ventana de personalizacin de la misma, y
podemos comprobar que los objetos que podemos aadir a la barra son ms amplios que en el caso de la
barra de men.
Y ya solo queda seleccionar el objeto ms adecuado para la accin que deseemos realizar y aadirlo a la
barra.

La forma de asignarle cdigo a cada uno de los objetos de la barra es idntica que en el caso del men,
podemos hacer doble clic en el objeto y nos aparecer en la ventana de cdigo el evento del objeto en
cuestin.
Private Sub SaveToolStripButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles SaveToolStripButton.Click
End Sub
Y solo queda colocar el cdigo adecuado.
Como habr objetos que tendrn un equivalente en la barra de men, en funcin del tipo de
programa, lo adecuado es que la accin a realizar este albergada en un procedimiento y se llame a dicho
procedimiento desde ambos eventos.
Formularios de Interfaz
Formularios de Interfaz Mltiple (MDI) en Visual Basic .Net
Aplicaciones de estilo MDI
Cuando se habla de una Interfaz de Documento Mltiple (MDI), se hace referencia a una aplicacin que
tendr entre sus formularios uno que actuar como principal, el cual encerrar los dems formularios que
formarn parte de la aplicacin, en donde al resto de los formularios que se carguen en el formulario principal
se le denomina formularios hijos.
Creacin del Formularios MDI
Para continuar, veamos cmo podemos implementar este tipo de interfaz en una aplicacin:
Iniciaremos por definir un nuevo proyecto de Visual Studio desde:
Men Archivo/Nuevo/Proyecto/Visual Basic/Windows/Aplicacin de Windows Forms
Para este ejemplo llamaremos al nuevo proyecto: AplicacionMDI, a como se puede ver en la imagen No.1.

Imagen No.1. Ventana de Nuevo Proyecto


Ajustar las Propiedades del Formulario MDI
Una vez dentro del proyecto, lo primero que haremos ser confeccionar el formulario que funcionar como
contenedor MDI o Formulario Padre, siguiendo los siguientes pasos:
Cambiar el nombre del Formulario por MDIPrincipal, haciendo clic derecho sobre el formulario, seleccionando
la opcin propiedades, ver imagen No.2

Imagen No.2. Acceso a las propiedades del formulario


Cuando llevamos a cabo esta accin se nos debe habilitar el panel de propiedades que se ubica normalmente
en la parte derecha del proyecto, y estando en este panel lo primero que haremos ser, ha como ya hemos
indicado anteriormente, cambiar el nombre en la propiedad Name, reemplazando el nombre del formulario por
MDIPrincipal, ver imagen No.3.

Imagen No.3. Panel de propiedades, Propiedad Name


Acto seguido configuraremos el formulario para que sea de tipo MDI, en la propiedadisMDIContainer y la
estableceremos en True (Verdadero) a como se ve en la imagen No.4, en donde prueba de que la propiedad
fue correctamente aplicada, el formulario deber cambiar su color gris claro a uno ms oscuro ver figura No.5.

Imagen No.4. Panel de Propiedades,Propiedad IsMdiContainer

Imagen No.5. Aspecto de un Formulario MDI


A continuacin debemos cambiar la propiedad Windows State de Normal aMaximized, ver imagen No.6, con
el objetivo de que el formulario ocupe todo es espacio del monitor de nuestra computadora.

Imagen No.6. Panel de propiedades, Propiedad WindowsState


Ahora agregaremos al formulario una barra de men, con el objetivo de utilizarla para hacer los llamados a los
dems formularios que necesitemos, y lo haremos haciendo clic en el cuadro de herramientas, sobre la opcin
Mens y Barras de herramientas y seleccionar de sta el control MenuStrip, arrastrando y soltar sobre el
formulario principal a como se puede apreciar en la imagen No.7

Imagen No.7. Formulario MDI, Control MenuStrip.


A continuacin procederemos a crear cada uno de los elementos de men que necesitemos, haciendo clic
sobre la barra de herramienta exactamente sobre el texto que dice Escriba Aqu, a como se ver en la imagen

No.8, y de esta manera podremos agregar la cantidad de men tanto como sean necesarios para llamar o
todos los formularios que tengamos en la aplicacin.

Imagen No.8. Formulario MDI, Agregando elementos de men al control MenuStrip.


Agregando los Formularios Necesarios para la Aplicacin
Luego de ellos agregaremos un nuevo formulario, al que llamaremos frmHijo1, con la combinacin de teclas
Ctrl + Shift + A y de la ventana que nos aparecer, seleccionar Windows Forms e indicar el nombre que antes
hemos mencionado y hacer clic sobre la opcin Agregar, ver imagen No.9.

Imagen No.9. Ventana para Agregar Nuevos Elementos al proyecto.


En este nuevo formulario no haremos nada, sola mente usarlo en los llamados desde el formulario
MDIPrincipal, para lo cual ser necesario regresar a este para culminar con el ejercicio, haciendo doble clic
sobre el mismo.
Creando los Formularios Hijos
Una vez de regreso en el formulario MDPPrincipal, haremos doble clic sobre el elemento de men que se
utilizar para hacer el llamado al formulario hijo, en este caso se utilizara el elemento que se rotula Formulario

Hijo 1, hacemos doble clic sobre este y una vez en la ventana de cdigo agregamos las siguientes lneas de
cdigo, ver imagenNo.10
Dim f As New frmHijo1
Declaramos una nueva variable segn el formulario a utilizar
f.MdiParent = Me
Indicamos a la variable que hemos declarado el formulario MDI,
Donde el Me, representa el formulario actual donde se est trabajando
f.Show()
Por ltimo, de indicamos a la variable que se muestre
Nota: El proceso de agregacin de nuevos formularios y su posterior llamado depender del tamao de la
aplicacin en la que estemos trabajando, por lo cual habr que repetir el proceso para todos los formularios de
la aplicacin, exceptos est el Formulario MDI que se est utilizando.

Imagen No.10. Ventana de cdigo de Visual Studio.


Para finalizar se guardan los cambios presionando la combinacin de teclas Ctrl + S y luego ejecutamos el
programa presionando la tecla F5 para ver los resultados, y si est todo bien se debe mostrar la aplicacin a
como se puede apreciar en la imagen No.11., haciendo clic sobre el elemento de men destinado para hacer
el llamado al Formulario Hijo1.

Imagen No.11. Formulario MDI y en su interior un formulario hijo.

De esta manera hemos aprendido a Arreglos en Visual Basic


Un arreglo es un elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo y
acceder a ellos a travs de una misma variable o identificador.
En visual basic los arreglos son equivalentes a los vectores o matrices en matemticas, estos pueden ser
unidimensionales o multidimensionales. Los arreglos se definen haciendo uso de la CLASE ARRAY la cual
est contenida en el espacio de nombres System y es una de las muchas clases incluidas en el .NET
Framework que est a disposicin de los programadores para efectuar operaciones con estas.
Los arreglos se pueden declarar de diferentes formas, desde la tradicional usada en Visual Basic 6.0 hasta la
forma orientada a objetos que posee Visual Basic 2008.

Sintaxis
basic

para declarar un arreglo en visual

En el
cdigo se puede ver que los
elementos parten desde el ndice 0, as cuando decimos aNombres(n), donde n es el nmero de elementos,
estamos hablando que se crearn n+1 elementos. aNombres(2) crea 2+1 = 3 elementos, sus indices sern
0,1 y 2 respectivamente.
Otra forma de declarar un arreglo es asignar los valores al array al mismo tiempo que se declara
Al igual que la primera forma, los elementos quedan asignados en la forma en que fueron declarados, es decir
aNombres(0) ser igual a "Mara", y as respectivamente.
Como los arreglo sen visual basic son una clase, al hacer la declaracin de la variable con la sentencia Dim, la
clase hereda todas sus propiedades al objeto creado, en este caso a la variable aNombres. Algunas de estas
propiedades son:
Propiedades de los arreglos:
Length: Devuelve la cantidad de elementos que contiene el array.
Se obtendr el
valor 7, que son
la cantidad de
elementos que contiene el arreglo.
Ahora bien, que pasa si se quiere imprimir la cantidad de elementos del arreglo
podemos hacer la siguiente rutina.

Como puede observarse el ciclo comienza desde 0 porque es el ndice inicial de los arreglos en visual basic.
El ciclo finaliza cuando el arreglo llega al indice 6, es decir al elemento 7, es por eso que se resta 1 a la
propiedad.
Colecciones en VB
Las colecciones son como una enumeracin, a la que se le pueden aadir o quitar elementos.
Podramos definirlas como un array que en lugar de ser esttico en el nmero de elementos, permite la
adicin y la eliminacin de elementos, o sea que es dinmico, y que adems esos elementos pueden ser
objetos. Desde el momento en que podemos declarar un array del tipo de un objeto determinado, un array es
muy similar a una coleccin.

En VB las clases que gestionan colecciones son:


Array System.Collections:
La clase array para la gestin con matrices.
La clase Collections dispone de dos clases a su vez:
Generic
Specialized
Los mtodos para una coleccin son los necesarios para la gestin de la misma, y dado que no disponemos
de un ndice propiamente dicho, la gestin se basa en su recorrido, adicin y eliminacin.
Las colecciones disponen de un Enumerador que es un objeto que recorre en iteracin su coleccin asociada.
Todas las colecciones pueden copiarse en una matriz usando el mtodo CopyTo, sin embargo, el orden de los
elementos de la nueva matriz se basar en la secuencia en la que los devuelve el enumerador.
La matriz resultante siempre es unidimensional, vector, y su lmite inferior es cero.
Algunas clases Collections tienen capacidades de ordenacin y la mayor parte estn indexadas.
La administracin de la memoria se controla automticamente y la capacidad de una coleccin se expande si
es necesario.
Las clases System Collections pueden dividirse en tres tipos:
Colecciones utilizadas normalmente.
Son las variaciones habituales de las colecciones de datos, como tablas hash, colas, pilas, diccionarios y
listas. Las colecciones que su usan habitualmente tienen versiones genricas y no genricas.
Colecciones de bits.
Se trata de colecciones cuyos elementos son indicadores de bits. Se comportan de forma ligeramente
diferente de las dems.
Colecciones especializadas.
Se trata de colecciones con fines muy especficos, normalmente para tratar un tipo concreto de elemento,
como StringDictionary.
Los tipos de colecciones a utilizar se basan en la forma en la que se realiza el acceso.
Lista Secuencial en la que se descarta el miembro tras su recuperacin.
Snack, Pilas,Quieue, Colas
Si se desea acceder por un ndice
StringCollection
ArrayList
List
HashTable
SortedList
ListDictionary
StringDictionary
A su vez cada una de ellas en casos concretos son mejores que otras, por ejemplo ListDictionary es ms
rpida que HashTable en colecciones pequeas.
Creacin de Colecciones
La definicin de una coleccin es como sigue.
Dim Coleccion As System.Collections.SortedList
La forma de aadir elementos
Coleccion.add(123,"Mesas")

Conviene que realice la creacin de la coleccin con distintos tipos de coleccin y observe el cambio de los
mtodos disponibles en la misma en funcin del tipo elegido.
Dim Coleccion As System.Collections.Queue
En este tipo de coleccin el insertar un elemento tiene una sintaxis distinta.
Dim Algo as New Object
Dim Objetos As New System.Collections.Queue
Objetos.Enqueue(Algo)
Se est utilizando una cola, una lista.
Todo esto va englobado despus en una estructura repetitiva en la cual se crea la coleccin para tratarla
posteriormente.
Pero el uso de una coleccin no se limita al uso de algo tan sencillo como un string.
Podemos utilizar objetos en una coleccin.
Podemos hacer ste otro uso en una coleccin:
Creamos una clase de la que instanciar luego objetos.
Public Class Datos
Public Nombre As String
Public Sub New()
End Sub
End Class
Para despus realizar algo parecido a lo siguiente:
Module Module1
Sub Main()
Console.WriteLine("Carga coleccin de objetos.")
Dim Coleccion As System.Collections.Generic.List(Of Datos)
Dim Item As New Datos
Item.Nombre = "Silla"
Coleccion.Add(Item)
Item = New Datos()
Item.Nombre = "Naranja"
Coleccion.Add(Item)
End Sub
End Module

El ejemplo anterior funciona correctamente tal como se describe, sin embargo como prueba de lo que a veces
la lgica te puede llevar a hacer, conviene probarlo comentando la siguiente lnea.
Item = new Datos()
El resultado es que al recorrer la coleccin, se muestra solo el ltimo valor introducido en la misma.

Interfaces (Visual Basic)


Las interfaces definen las propiedades, los mtodos y los eventos que pueden implementar las clases.Las interfaces
permiten definir caractersticas como grupos pequeos de propiedades, mtodos y eventos estrechamente relacionados;
esto reduce los problemas de compatibilidad porque se pueden desarrollar implementaciones mejoradas para las
interfaces sin comprometer el cdigo existente.En cualquier momento se pueden agregar nuevas caractersticas
mediante el desarrollo de implementaciones e interfaces adicionales.
Hay otras razones por las que se podran usar las interfaces en vez de la herencia de clases:
Las interfaces se adaptan mejor a situaciones en las que las aplicaciones necesitan que muchos tipos de objetos
posiblemente no relacionados proporcionen una funcionalidad determinada.
Las interfaces son ms flexibles que las clases base porque puede definir una nica implementacin que puede
implementar interfaces mltiples.
Las interfaces son mejores en situaciones en las que no es necesario heredar una implementacin de una clase base.
Las interfaces son tiles cuando no se puede usar la herencia de clases.Por ejemplo, las estructuras no pueden heredar
de clases, pero pueden implementar interfaces.
Declarar interfaces
Las definiciones de interfaz se encuentran dentro de las instrucciones Interface y End Interface. Instrucciones
Event, Sub, Function, Property, Interface, Class, Structure y Enum.Las interfaces no pueden contener cdigo de
implementacin ni instrucciones asociadas al cdigo de implementacin, como End Sub o End Property.
En un espacio de nombres, las instrucciones de interfaz son Friend de forma predeterminada, pero tambin se pueden
declarar explcitamente como Public o Friend.Las interfaces definidas dentro de clases, mdulos, interfaces y
estructuras son Public de forma predeterminada, pero tambin se pueden declarar explcitamente
como Public, Friend, Protected o Private.
Por ejemplo, el cdigo siguiente define una interfaz con una funcin, una propiedad y un evento.

Interface IAsset
Event ComittedChange(ByVal Success As Boolean)
Property Division() As String
Function GetID() As Integer
End Interface
Implementar interfaces
La palabra reservada de Visual Basic Implements se usa de dos maneras.La instruccin Implements significa que una
clase o estructura implementa una interfaz.La palabra clave Implements significa que un miembro de clase o de
estructura implementa un miembro de interfaz especfico.
Implements (Instruccin)
Si una clase o estructura implementa una o ms interfaces, debe incluir la instruccin Implements inmediatamente
despus de la instruccinClass o Structure.La instruccin Implements requiere una lista separada por comas de las
interfaces que implementar una clase.La clase o estructura debe implementar todos los miembros de interfaz mediante
la palabra clave Implements.
Implements (palabra clave)
La palabra clave Implements requiere una lista separada por comas de los miembros de interfaz que se
implementarn.Por lo general solo se especifica un miembro de interfaz, pero pueden especificarse varios.La
especificacin de un miembro de interfaz consta del nombre de la interfaz que debe especificarse en una instruccin
implements dentro de la clase, un punto y el nombre de la funcin miembro, propiedad o evento que se va a
implementar.El nombre de un miembro que implementa un miembro de interfaz puede usar cualquier identificador
permitido y no se limita a la convencin InterfaceName_MethodName que se usaba en versiones anteriores de Visual
Basic.
Por ejemplo, el cdigo siguiente muestra cmo declarar una subrutina denominada Sub1 que implementa un mtodo de
una interfaz:

Class Class1
Implements interfaceclass.interface2

Sub Sub1(ByVal i As Integer) Implements interfaceclass.interface2.Sub1


End Sub
End Class

Los tipos de parmetro y los tipos devueltos del miembro implementador deben coincidir con la declaracin de miembro o
de propiedad de interfaz de la interfaz.La manera ms habitual de implementar un elemento de una interfaz es mediante
un miembro que tenga el mismo nombre que la interfaz, tal como se muestra en el ejemplo anterior.
Para declarar la implementacin de un mtodo de interfaz, puede usar cualquier atributo permitido en las declaraciones
de mtodo de instancia, incluidos Overloads, Overrides, Overridable, Public, Private, Protected, Friend, Protected
Friend, MustOverride, Default y Static.El atributo Shared no est permitido, ya que define una clase en lugar de un
mtodo de instancia.
Con Implements tambin se puede escribir un nico mtodo que implemente varios mtodos definidos en una interfaz,
como en el ejemplo siguiente:

VB
Class Class2
Implements I1, I2
Protected Sub M1() Implements I1.M1, I1.M2, I2.M3, I2.M4
End Sub
End Class
Se puede usar un miembro privado para implementar un miembro de interfaz.Cuando un miembro privado implementa un
miembro de una interfaz, ese miembro pasa a estar disponible por medio de la interfaz incluso si no est disponible
directamente en las variables de objeto de la clase.
Ejemplos de implementacin de interfaces
Las clases que implementan una interfaz deben implementar todas sus propiedades, mtodos y eventos.
En el ejemplo siguiente se definen dos interfaces.La segunda interfaz, Interface2, hereda Interface1 y define un mtodo y
una propiedad adicionales.

Interface Interface1
Sub sub1(ByVal i As Integer)
End Interface
' Demonstrates interface inheritance.
Interface Interface2
Inherits Interface1
Sub M1(ByVal y As Integer)
ReadOnly Property Num() As Integer
End Interface
En el ejemplo siguiente se implementa Interface1, la interfaz definida en el ejemplo anterior:

Public Class ImplementationClass1


Implements Interface1
Sub Sub1(ByVal i As Integer) Implements Interface1.sub1
' Insert code here to implement this method.
End Sub
End Class
En el ejemplo final se implementa Interface2, incluido un mtodo heredado de Interface1:

VB
Public Class ImplementationClass2
Implements Interface2
Dim INum As Integer = 0
Sub sub1(ByVal i As Integer) Implements Interface2.sub1

' Insert code here that implements this method.


End Sub
Sub M1(ByVal x As Integer) Implements Interface2.M1
' Insert code here to implement this method.
End Sub
ReadOnly Property Num() As Integer Implements Interface2.Num
Get
Num = INum
End Get
End Property
End Class
Puede implementar una propiedad de solo lectura con una propiedad de lectura y escritura (es decir, no tiene que
declararla de solo lectura en la clase implementadora).Al implementar una interfaz, se implementarn al menos los
miembros que declara la interfaz, pero se puede ofrecer ms funcionalidad como, por ejemplo, permitir que se pueda
escribir en la propiedad.

Delegados en VB.NET
Un delegado es un tipo que guarda una referencia a un mtodo , este permite pasar un mtodo como un
parmetro a otro mtodo.
Ejemplo
En nuestro ejemplo tenemos una clase Calculadora con un mtodo Sumar. El mtodoSumar realmente no
sabe (o no quiere saber) cmo llevar a cabo esta operacin, as que adems de pedir 2 nmeros tambin pide
una operacin. Realmente es aqu donde aparece el delegado, es decir Qu significa que el
mtodo Sumar est pidiendo una operacin? Lo que est haciendo el mtodo Sumar es pedir un mtodo para
poder realizar la operacin, es decir, estamos pasando un mtodo como parmetro al mtodo Sumar que se
llamar cuando el propio Sumar tenga que realizar la operacin de suma. En otros palabras Sumar est
delegando en un mtodo para llevar a cabo su implementacin.
' Declaramos el delegado y determinamos que recibir 2 nmeros y devolver otro nmero
Public Delegate Function TuOperacionDeSuma(ByVal numero1 As Integer, ByVal numero2 AsInteger) As Integ
er
Public Class Calculadora
' Este mtodo recibe una variable del tipo TuOperacionDeSuma (delegado)
Public Function Sumar(ByVal numero1 As Integer, ByVal numero2 As Integer, ByVal operacionAs TuOperacion
DeSuma) As Integer
' Sumar realmente no sabe sumar, delega en el mtodo que ha recibido como parmetro
Return operacion(numero1, numero2)
End Function
End Class
Viendo este cdigo est claro que si queremos utilizar el mtodo Sumar tenemos que ser nosotros mismos
quien hagamos un mtodo que sume y pasrselo al mtodoSumar (Cmo tiene que ser ese mtodo? Pues
es la propia declaracin del delegado quin nos est diciendo que firma tiene que tener, es decir, el delegado
guarda una referencia a un mtodo con una determinada firma . De este modo, haramos lo siguiente:
' Este mtodo encaja en la definicin del delegado TuOperacionDeSuma
Public Function MiOperacionDeSuma(ByVal numero1 As Integer, ByVal numero2 As Integer)As Integer
Return numero1 + numero2 ' Super implementacin dificil de la muerte ;-)
End Function
Sub Main()

Dim calc As New Calculadora


' Declaramos una variable del tipo del delegado
' En el constructor le pasamos la referencia al mtodo al que queremos referenciar
Dim metodo As New TuOperacionDeSuma(AddressOf MiOperacionDeSuma)
' Llamamos a Sumar y le pasamos nuestra variable del tipo TuOperacionDeSuma
' Es decir, le pasamos la operacin con la que podr Sumar
calc.Sumar(5, 5, metodo)
End Sub
Respecto a este cdigo cabe aclarar que en VB.NET la forma de obtener una referencia a un mtodo es con
el operador AddressOf.
En realidad, AddressOf es an ms verstil (o engaa-bobos segn se mire) y podramos haber escrito este
otro cdigo que sera equivalente:
Sub Main()
Dim calc As New Calculadora
calc.Sumar(5, 5, AddressOf MiOperacionDeSuma)
End Sub
Si nos fijamos, aqu no hemos declarado una variable del tipo TuOperacionDeSuma, sino que simplemente
hemos utilizado AddressOf. Esto es porque AddressOf crea de forma implcita una instancia del
delegado TuOperacionDeSuma y le pasa la referencia al mtodo MiOperacionDeSuma.
Finalmente, un delegado permite pasar como parmetro un mtodo a otro mtodo, y que este ltimo ejecute el
mtodo suministrado, o dicho de otro modo, un delegado es un objeto que permite llamar a mtodos de otros
objetos.
Un delegado no es lo mismo que un evento, pero los eventos se basan en delegados para su correcto
funcionamiento. Digo esto porque siempre que se habla de delegados tambin aparecen los eventos en la
conversacin, pero hay tener claro que no son lo mismo.
Un ejemplo de una clase con un evento en VB:
Public Class Calculadora
' Declarar evento
Public Event PrevioSumar(ByVal resultadoPrevio As Integer)
Public Function Sumar(ByVal numero1 As Integer, ByVal numero2 As Integer) As Integer
RaiseEvent PrevioSumar(numero1 + numero2) ' Lanzar evento
Return numero1 + numero2
End Function
End Class
Module Module1
' Mtodo que encaja en la definicin del evento
Public Sub PrevioSumar(ByVal resultadoPrevio As Integer)
' TODO
End Sub
Sub Main()
Dim calc As New Calculadora
' Agregar un manejador de evento
AddHandler calc.PrevioSumar, AddressOf PrevioSumar
calc.Sumar(5, 5)
End Sub
End Module
En VB.NET los eventos no parecen ser delegados, es decir no se ve la palabra delegate ni nada parecido,
pero se utiliza AddressOf.
Cmo funcionan los eventos?
Segn la MSDN, Los eventos proporcionan un medio de que una clase u objeto informe a otras clases u
objetos cuando sucede algo relevante. La clase que enva (o produce) el evento recibe el nombre de editor y
las clases que reciben (o controlan) el evento se denominan suscriptores., los eventos sirven para informar
de algo (no para invocar cdigo de otros objetos como sucede con los delegados

Y si un evento no es un delegado porque siempre aparece la palabra evento cuando hablamos de


delegados? Pues porque los eventos y en concreto los editores, tienen que mantener una lista de mtodos de
sus suscriptores a los que llamar cuando se lance el evento y justamente esa lista de mtodos a los que
llamar, se mantiene con delegados, es decir, los eventos utilizan delegados para notificar el evento a sus
suscriptores Cmo sino podra un editor ejecutar mtodos en sus suscriptores?
El problema est en que (como de costumbre), VB.NET nos abstrae de todo esto y no podemos ver que pasa
realmente cuando utilizamos AddHandler, estamos simplemente utilizando un atajo para asignar un delegado.

AddHanlder nos pide un evento (en nuestro caso calc.PrevioSumar) y un delegado. El delegado lo
conseguimos con AddressOf (que recuerda creaba de forma implcita un delegado del tipo adecuado), pero
Qu delegado? Yo slo declar un evento
Si abrimos el explorador de objetos para buscar un delegado de tipo PrevioSumar o algo parecido, vemos que
no aparece por ninguna parte pero, sin embargo, te prometo que est por ah esperando que alguien lo
descubra.
Cmo descubrirlo? Pues es sencillo si compilamos la clase Calculadora en un ensamblado (librera de
clases) y ahora creamos un nuevo proyecto en C# de tipo consola y agregamos la referencia a nuestro
ensamblado Calculadora. De este modo, C# nos iluminar el camino!

Lo cierto es que a veces VB.NET me saca un poco de mis casillas. Con el explorador de objetos en VB.NET
no aparecera nada pero en C# aparece como por arte de magia el delegado PrevioSumarEventHandler. Lo
de EventHandler es porque todos los eventos heredan de MulticastDelegate (para poder mantener una lista de
delegados y no slo uno) y adems el delegado que se crea para el evento siempre tiene el
nombre<Evento>EventHandler.
crear una aplicacin de tipo MDI, si por alguna razn has tenido alguna dificulta en llevar a cabo este ejercicio,
puedes repetir nuevamente los pasos, o puedes dejar un comentario en el blog respecto al problema que
hayas tenido.

Sql server

SQL SERVER 2008.


Introduccin.
SQL Server es un sistema de gestin de bases de datos relacionales (RDBMS) de Microsoft que est
diseado para el entorno empresarial. SQL Server se ejecuta en T-SQL (Transact -SQL), un conjunto de
extensiones de programacin de Sybase y Microsoft que aaden varias caractersticas a SQL estndar,
incluyendo control de transacciones, excepcin y manejo de errores, procesamiento fila, as como variables
declaradas.
Es un sistema cliente/servidor, por lo que permite trabajar como servidor multiusuario y de subprocesamiento
mltiple, o sea, cada vez que se crea una conexin con el servidor, el programa servidor establece un proceso
para manejar la solicitud del cliente, controlando as el acceso simultneo de un gran nmero de usuarios a
los datos y asegurando el acceso a usuarios autorizados solamente. Es uno de los sistemas gestores de
bases de datos ms utilizado en la actualidad, utilizado por grandes corporaciones como Yahoo! Finance,
Google, Motorola, entre otras.
El cdigo original de SQL Server ha sido desarrollado por Sybase; a finales de 1980, Microsoft, Sybase y
Ashton-Tate colaboraron para producir la primera versin del producto, SQL Server 4.2 para OS/2.

Posteriormente, tanto Sybase como Microsoft ofrecieron productos de SQL Server. Sybase cambi despus el
nombre de su producto a Adaptive Server Enterprise.
SQL Server es un sistema gestor de base de datos relacionales producido por Microsoft. Es un sistema
cliente/servidor que funciona como una extensin natural del sistema operativo Windows. Entre otras
caractersticas proporciona integridad de datos, optimizacin de consultas, control de concurrencia y backup y
recuperacin.
Sistema manejador de base de datos.
Tambin es un sistema para la gestin de bases de datos producido por Microsoft basado en el modelo
relacional. Sus lenguajes para consultas son T-SQL y ANSI SQL. Constituye la alternativa de Microsoft a otros
potentes sistemas gestores de bases de datos como son Oracle o MySQL. Y posee algunas caractersticas
tales como Soporte de transacciones, Escalabilidad, estabilidad y seguridad, Soporta procedimientos
almacenados, entre otras.
T-SQL:
Transact-SQL (T-SQL) es una extensin al SQL de Microsoft y Sybase. SQL, que frecuentemente se dice ser
un Lenguaje de Bsquedas Estructurado (por sus siglas en ingls), es un lenguaje de cmputo estandarizado,
desarrollado originalmente por IBM para realizar bsquedas, alterar y definir bases de datos relacionales
utilizando sentencias declarativas. T-SQL expande el estndar de SQL para incluir programacin procedural,
variables locales, varias funciones de soporte para procesamiento de strings, procesamiento de fechas,
matemticas, etc, y cambios a las sentencias DELETE y UPDATE. Estas caractersticas adicionales hacen de
T-SQL un lenguaje que cumple con las caractersticas de un autmata de Turing.
INTERBASE:
Es un Sistema de Administracin y gestin de Base de Datos Relacionales, desarrollado y comercializado por
la compaa Borland Software Corporation y actualmente desarrollado por su ex-filial CodeGear. InterBase se
destaca de otros sistemas administrativos por su bajo consumo de recursos, su casi nula necesidad de
administracin y su arquitectura multi-generacional. InterBase corre en plataformas Linus, Microsoft Windows
y Solaris. Los servidores InterBase normalmente no requieren de administradores a tiempo completos.
Explorando una base de datos.
Exploracin de Datos.
Puede usar el cuadro de dilogo Explorar datos del Diseador de vistas del origen de datos de SQL Server
Data Tools (SSDT) para explorar los datos de una tabla, vista o consulta con nombre en una vista del origen
de datos (DSV).Al explorar los datos en el Diseador de vistas del origen de datos, puede ver el contenido de
cada columna de datos de una tabla, vista o consulta con nombre seleccionada. Observar el contenido real le
puede ayudar a determinar si todas las columnas son necesarias, si se necesitan clculos con nombre para
mejorar la facilidad de uso, y si los clculos o consultas con nombre devuelven los valores previstos.
Para ver datos, debe tener una conexin activa con el origen u orgenes de datos del objeto seleccionado en
la DSV. En la consulta tambin se envan todos los clculos con nombre de la tabla.
Los datos se devuelven en formato tabular, y pueden ordenarse y copiarse. Haga clic en los encabezados de
columna para reordenar las filas por esa columna. Tambin puede resaltar datos en la cuadrcula y presionar
Ctrl+C para copiar la seleccin en el portapapeles.
Asimismo, puede controlar el mtodo de muestreo y el nmero de muestras. De forma predeterminada, se
devuelven las 5000 principales filas.
En un momento dado, alguien puede modificar los datos de una tabla sensible. En otra ocasin, algn
despistado puede borrar una tabla o incluso unos registros de otra tabla que no debera. Si ese "alguien" se
da cuenta y honestamente nos lo comenta no pasa nada, como dba seguro que tenemos alguna copia de
respaldo para poder recuperar esos datos: ya sea desde el backup nocturno, al combinado del backup con
alguna copia del registro de transacciones si es una tabla que cambia continuamente (intentamos hacer un
restore a una hora concreta). El problema lo podemos tener con tablas que no se usan apenas o que alguien
ha borrado y no ha confesado. Para poder empezar nuestra bsqueda necesitamos habilitado el seguimiento
de cambios para la base de datos en cuestin. En este post veremos como examinar el contenido del log con
una base de datos de prueba.
Es cierto que existen algunas herramientas que ya permiten explorar de forma ms automatizada el registro
de transacciones.
Tipo SQL_Variant.

El tipo de datos sql_variant funciona de la misma manera que el tipo de datos variant en Microsoft Visual
Basic. El tipo de datos sql_variant permite que una columna, una parmetro o una variable almacenen valores
de datos de distintos tipos. Por ejemplo, una columna sql_variant puede contener valores int, decimal, char,
binary y nchar. Cada instancia de una columna sql_variant registra el valor de los datos y la informacin de
metadatos. Estos datos incluyen el tipo de datos base, el tamao mximo, la escala, la precisin y la
intercalacin.
En el siguiente ejemplo, el valor de VariantCol est establecido en NULL sin ningn tipo de datos asociado,
aunque el valor NULL venga de una variable int:
DECLARE @IntVar int
SET @IntVar = NULL
UPDATE SomeTable SET VariantCol = @IntVar WHERE PriKey = 123
Optimizador de consultas en SQL.
El proceso ms importante que se debe llevar a cabo en cualquiera es la consulta de la informacin
almacenada. Como su nombre indica, Microsoft SQL Server es una herramienta que nos permite,
precisamente, gestionar la informacin almacenada en la BBDD. Para garantizar un acceso rpido y eficaz los
datos que almacenan tus bases de datos, aqu tienes algunos consejos de cmo realizar consultas en SQL.
1. Uso de cursores
Si la consulta utiliza cursores, determina antes si es posible escribirla con un tipo de cursor ms eficaz (uno de
avance rpido) o con una nica consulta. Las consultas nicas mejoran las operaciones de cursor.
Dado que un conjunto de instrucciones de cursor suele constituir una operacin de bucle externo, en la que
cada fila se procesa una vez con una instruccin interna, puedes contemplar la posibilidad de usar en su lugar
una instruccin GROUP BY o CASE. Quiz incluso una subconsulta.
2. Uso de alias
Utilizar varios alias para una sola tabla en la misma consulta para simular la interseccin de ndices ya no es
necesario. SQL Server tiene en cuenta automticamente la interseccin de ndices y puede utilizar varios en la
misma tabla.
3. Uso de la parametrizacin
Utiliza la parametrizacin de consultas para permitir la reutilizacin de los planes de ejecucin de consulta
almacenados en la memoria cach. Si un conjunto de consultas comparte el mismo hash de consulta y hash
de plan de consulta podras mejorar el rendimiento creando una consulta parametrizada.
Adems, si llamas a una consulta con parmetros, en lugar de a varias consultas con valores literales, podrs
reutilizar el plan de ejecucin de consulta almacenado en la memoria cach.
4. Uso de Exists
Cuando queramos hacer una sub-consulta en una base de datos utilizando la sentencia NOT IN, analicemos
si podemos cambiar nuestro queries con el uso de la sentencia Exists que es mucho ms eficiente que la
anterior. O en todo caso, utilizar IN en vez de NOT IN, ya que esto hace un escaneo completo en la tabla
descartando opciones a omitir.
5. Uso de Distinct
Utilizar distinct para excluir datos duplicados es muy usado por los programadores para evitar errores de
diseo de base de datos y as esconder algunos duplicidad de informacin, pero esto es un grave error. Es
una de las sentencias que ms necesita hacer I/O en el disco y forzar bastante el procesador. Por tal motivo,
si no es necesario evitemos utilizarla.
6. Uso de Tops
Cuando se quiere traer un grupo de registros es mejor utilizar la sentencia Top y no Rowcount, ya que esta
ltima presenta inconvenientes con listas no ordenadas. En cambio, si la lista es ordenada es ms eficiente
que la sentencia Top.
7. Uso de*.
Cuando se realizan consultas que van a devolver muchos campos es mejor definir todos los campos que
queremos devolver en nuestro queries, ya que el uso de * o All impide el uso de ndices de forma eficiente.
8. Verificar si existe un registro

Muchos programadores utilizan el count(*) para ver si un registro existe en la base de datos, pero una forma
ms eficiente de hacerlo es con Exists. Cuando ste encuentra un registro detiene la bsqueda del mismo.
9. Uso de ORDER BY
Usar ORDER BY en las QUERIES que se lancen slo si es absolutamente indispensable. Es decir, que si es
posible realizar la ordenacin en el lado del cliente siempre ser mejor que realizarla desde el lado del
servidor SQL Server.
En caso de que sea absolutamente necesario realizar la ordenacin en el lado del servidor SQL Server
deberemos atender a las siguientes recomendaciones:
Mantener el nmero de filas a ordenar al mnimo
Mantener el nmero de columnas a ordenar al mnimo
Mantener el ancho (tamao fsico) de las columnas a ordenar al mnimo
Ordenar columnas con datos numricos (NO tipos de datos carcter)
Cuando usemos cualquier mecanismo de ordenacin en Transact SQL, debemos tener en mente todas estas
recomendaciones para la mejora del rendimiento.
Si se ha de ordenar por una columna a menudo, debemos considerar el realizar un Clustered Index sobre
esa columna para la mejora del rendimiento.
10. No usar el comando GROUP BY
No usarlo al menos sin una funcin de agregacin. La clusula GROUP BY puede usarse con o sin una
funcin de agregacin. Pero si queremos obtener un mejor rendimiento, no usaremos la clusula GROUP BY
sin una funcin de agregacin. Esto es porque produce el mismo resultado usar DISTINCT y es ms rpido.
Para acelerar el uso de la clusula GROUP BY debemos seguir las siguientes recomendaciones:
Mantener al mnimo el nmero de filas a devolver por la Query.
Mantener al mnimo el nmero de agrupaciones
No agrupar columnas redundantes
Cambiar un JOIN por una SUBQUERY cuando hay uno en la misma SELECT que tiene un GROUP BY.
Si es posible hacer esto, el rendimiento ser mayor. Si se tiene que usar un JOIN, intentaremos hacer el
GROUP BY por columna desde la misma tabla que la columna o columnas sobre la cual la se usa la funcin.
Componentes del Diseador - Consultas.
Servicios de Transformacin de Datos, o DTS, es un conjunto de objetos y utilidades para permitir la
automatizacin de extraccin transformacin y carga a o desde una base de datos . Los objetos son paquetes
DTS y sus componentes, y sus utilidades son llamadas herramientas DTS. DTS estaba incluido en las
versiones ms antiguas de Microsoft SQL Server, y se usaba casi siempre en base de datos SQL, sin
embargo puede ser usado independientemente con otras bases de datos.
Consultas en SQL.
Hay cuatro instrucciones para realizar estas tareas:
INSERT: Inserta filas en una tabla. Se corresponde con la C de CRUD.
Ejemplo:
INSERT INTO "nombre_tabla" ("columna1", "columna2", ...)
VALUES ("valor1", "valor2", ...);
SELECT: muestra informacin sobre los datos almacenados en la base de datos. Dicha informacin puede
pertenecer a una o varias tablas. Es la R.
Ejemplo:
SELECT * FROM oficinas
O bien
SELECT oficinas.* FROM oficinas
UPDATE: Actualiza informacin de una tabla. Es, obviamente, la U.
Ejemplo:
UPDATE Store_Information
SET Sales = 500
WHERE Store_Name = 'Los Angeles'
AND Txn_Date = '08-Jan-1999';

DELETE: Borra filas de una tabla. Se corresponde con la D.


Ejemplo:
DELETE FROM "nombre_tabla"
WHERE "condicin";
Consulta de datos
Ahora nos vamos a centrar en la R de CRUD, es decir, en cmo recuperar la informacin que nos interesa
de dentro de una base de datos, usando para ello el lenguaje de consulta o SQL. Ya nos preocuparemos
luego de cmo llegamos a introducir los datos primeramente.
Para realizar consultas sobre las tablas de las bases de datos disponemos de la instruccin SELECT. Con ella
podemos consultar una o varias tablas. Es sin duda el comando ms verstil del lenguaje SQL.
Existen muchas clusulas asociadas a la sentencia SELECT (GROUP BY, ORDER, HAVING, UNION).
El resultado de una consulta SELECT nos devuelve una tabla lgica. Es decir, los resultados son una relacin
de datos, que tiene filas/registros, con una serie de campos/columnas.
Ejemplo:
SELECT [ ALL / DISTINC ] [ * ] / [ListaColumnas_Expresiones] AS [Expresion]
FROM Nombre_Tabla_Vista
WHERE Condiciones
ORDER BY ListaColumnas [ ASC / DESC ]
Los nombres indicados deben coincidir exactamente con los nombre de los campos de la tabla, pero si
queremos que en nuestra tabla lgica de resultados tengan un nombre diferente podemos utilizar:
AS.
Permite renombrar columnas si lo utilizamos en la clusula SELECT, o renombrar tablas si lo utilizamos en la
clusula FROM. Es opcional. Con ello podremos crear diversos alias de columnas y tablas.
Ejemplo:
WITH
DINFO (DEPTNO, AVGSALARY, EMPCOUNT) AS
(SELECT OTHERS.WORKDEPT, AVG(OTHERS.SALARY), COUNT(*)
FROM EMPLOYEE OTHERS
GROUP BY OTHERS.WORKDEPT
),
DINFOMAX AS
(SELECT MAX(AVGSALARY) AS AVGMAX FROM DINFO)
SELECT THIS_EMP.EMPNO, THIS_EMP.SALARY,
DINFO.AVGSALARY, DINFO.EMPCOUNT, DINFOMAX.AVGMAX
FROM EMPLOYEE THIS_EMP, DINFO, DINFOMAX
WHERE THIS_EMP.JOB = 'SALESREP'
AND THIS_EMP.WORKDEPT = DINFO.DEPTNO
FROM.
Esta clusula permite indicar las tablas o vistas de las cuales vamos a obtener la informacin. De momento
veremos ejemplos para obtener informacin de una sola tabla.
Como se ha indicado anteriormente, tambin se pueden renombrar las tablas usando la instruccin AS.
Ejemplo:
SELECT *
FROM Personas
WHERE Nombre=Lucero
WHERE.
Especifica la condicin de filtro de las filas devueltas. Se utiliza cuando no se desea que se devuelvan todas
las filas de una tabla, sino slo las que cumplen ciertas condiciones. Lo habitual es utilizar esta clusula en la
mayora de las consultas.
Ejemplo:
SELECT *
FROM Personas
WHERE Apellidos ='Trejo Lemus'
Condiciones.

Son expresiones lgicas a comprobar para la condicin de filtro, que tras su resolucin devuelven para cada
fila TRUE o FALSE, en funcin de que se cumplan o no. Se puede utilizar cualquier expresin lgica y en ella
utilizar diversos operadores como:
* > (Mayor)
* >= (Mayor o igual)
* < (Menor)
* <= (Menor o igual)
* = (Igual)
* <> o != (Distinto)
* IS [NOT] NULL (para comprobar si el valor de una columna es o no es nula, es decir, si contiene o no
contiene algn valor)
Between not between.
Este operador simplifica condiciones que en ocasiones se manejan con un and, between realiza un intervalo o
rango entre dos valores asignados. La principal funcin es mostrar resultados que se encuentren entre dos
valores (between) o mostrar resultados que NO se encuentren entre dos valores (not between).
Sintaxis.
Con este operador lo nico que se debe de tener en cuenta son las condiciones necesarias como un inicio y
un fin.
1.- Tener una sentencia Where
2.- Escribir el campo con el que se trabajara
3.- Ingresar el operador between o not between
4.- Entre apostrofes ingresar el valor inicial o la primera condicin (de donde empezar)
5.- Utilizar un operador and
6.- Entre apostrofes ingresar el limite o la segunda condicin (hasta donde llegar)
Para mostrar resultados que se encuentren dentro de un rango:
Select Columnas
From Tabla
Where Campo between 'Condicin1' and 'Condicin2'
En otro caso, mostrar resultados omitiendo o excluyendo los que se encuentren dentro de un rango:
Select Columnas
From Tabla
Where Campo not between 'Condicin1' and 'Condicin2'
Consultas agrupadas.
En el apartado anterior tratamos la forma de relacionar varias tablas en una sentencia SQL, pero an hay
ms. Mediante la clusula GROUP BY puedes utilizar uno o varios campos para agrupar registros y realizar
determinadas operaciones con ellos. Algunas de estas funciones son las mismas que ya tratamos en el
captulo de consultas y permiten:
COUNT: Cuenta el total de elementos de un grupo.
Ejemplo:
SELECT COUNT("nombre_columna")
FROM "nombre_columna";
SUM: Suma los valores numricos de los registros agrupados. Ejemplo:
SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;
MIN: Muestra el valor ms pequeo de un grupo.
Ejemplo:
SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'Espaa';
MAX: Muestra el valor mximo de todo el conjunto de registros agrupados. Ejemplo:

SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'Espaa';


AVERAGE: Calcula la media de todos los valores seleccionados. Ejemplo:
SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100;
Group by: Combina los registros con valores idnticos, en la lista de campos especificados, en un nico
registro. Para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como por
ejemplo Sum o Count, en la instruccin SELECT. Ejemplo:
SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo
UNION (Transact-SQL)
Combina los resultados de dos o ms consultas en un solo conjunto de resultados que incluye todas las filas
que pertenecen a las consultas de la unin. La operacin UNION es distinta de la utilizacin de combinaciones
de columnas de dos tablas.
A continuacin se muestran las reglas bsicas para combinar los conjuntos de resultados de dos consultas
con UNION:
El nmero y el orden de las columnas debe ser el mismo en todas las consultas.
Los tipos de datos deben ser compatibles.
Sintaxis
{ <query_specification> | ( <query_expression> ) }
UNION [ ALL ]
<query_specification | ( <query_expression> )
[ UNION [ ALL ] <query_specification> | ( <query_expression> )
[ ...n ] ]
Argumentos
<query_specification> | ( <query_expression> )
Es una especificacin o expresin de consulta que devuelve datos que se van a combinar con los datos de
otra especificacin o expresin de consulta. No es preciso que las definiciones de las columnas que forman
parte de una operacin UNION sean iguales, pero deben ser compatibles a travs de una conversin
implcita. Cuando los tipos de datos difieren, el tipo de datos resultante se determina segn las reglas
de prioridad de tipos de datos. Cuando los tipos son los mismos pero varan en cuanto a precisin, escala o
longitud, el resultado se determina segn las mismas reglas para combinar expresiones. Para obtener ms
informacin, vea Precisin, escala y longitud (Transact-SQL).
Las columnas del tipo de datos xml deben ser equivalentes. Todas las columnas deben tener un tipo de
esquema XML o no tener tipo. Si tienen tipo, debe ser el de la misma coleccin de esquemas XML.
UNION
Especifica que se deben combinar varios conjuntos de resultados para ser devueltos como un solo conjunto
de resultados.
ALL
Agrega todas las filas a los resultados. Incluye las filas duplicadas. Si no se especifica, las filas duplicadas se
quitan.
Ejemplos
A.Usar una instruccin UNION simple
En el siguiente ejemplo, el conjunto de resultados incluye el contenido de las
columnas ProductModelID y Name de las tablas ProductModel yGloves.
USE AdventureWorks2012;
GO
IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL
DROP TABLE dbo.Gloves;
GO
-- Create Gloves table.
SELECT ProductModelID, Name
INTO dbo.Gloves
FROM Production.ProductModel
WHERE ProductModelID IN (3, 4);

GO
-- Here is the simple union.
USE AdventureWorks2012;
GO
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves
ORDER BY Name;
GO
B.Usar SELECT INTO con UNION
En el siguiente ejemplo, la clusula INTO de la segunda instruccin SELECT especifica que la tabla
denominada ProductResults contiene el conjunto final de resultados de la unin de las columnas designadas
de las tablas ProductModel y Gloves. Tenga en cuenta que la tabla Gloves se crea en la primera
instruccin SELECT.
USE AdventureWorks2012;
GO
IF OBJECT_ID ('dbo.ProductResults', 'U') IS NOT NULL
DROP TABLE dbo.ProductResults;
GO
IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL
DROP TABLE dbo.Gloves;
GO
-- Create Gloves table.
SELECT ProductModelID, Name
INTO dbo.Gloves
FROM Production.ProductModel
WHERE ProductModelID IN (3, 4);
GO
USE AdventureWorks2012;
GO
SELECT ProductModelID, Name
INTO dbo.ProductResults
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves;
GO
SELECT ProductModelID, Name
FROM dbo.ProductResults;
C. Usar UNION con dos instrucciones SELECT y ORDER BY
El orden de algunos parmetros empleados con la clusula UNION es importante. En el siguiente ejemplo se
muestra el uso correcto e incorrecto de UNION en dos instrucciones SELECT en las que se va a cambiar el
nombre de una columna en el resultado.
USE AdventureWorks2012;
GO
IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL
DROP TABLE dbo.Gloves;
GO

-- Create Gloves table.


SELECT ProductModelID, Name
INTO dbo.Gloves
FROM Production.ProductModel
WHERE ProductModelID IN (3, 4);
GO
/* INCORRECT */
USE AdventureWorks2012;
GO
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
ORDER BY Name
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves;
GO
/* CORRECT */
USE AdventureWorks2012;
GO
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves
ORDER BY Name;
GO
CREAR LOGIN EN SQL SERVER
Usar SQL Server Management Studio
Para crear un inicio de sesin de SQL Server
En el Explorador de objetos, expanda la carpeta de la instancia de servidor en la que desea crear el nuevo
inicio de sesin.
Haga clic con el botn secundario en la carpeta Seguridad, seleccione Nuevo y, a continuacin,
seleccione Inicio de sesin.
En el cuadro de dilogo Tipo de regla , seleccione Puerto , y luego pulse en Siguiente . Como alternativa,
haga clic en (Buscar) para abrir el cuadro de dilogo Seleccionar usuarios o grupos.
Si hace clic en Buscar:
En Seleccionar este tipo de objeto, haga clic en Tipos de objeto... para abrir el cuadro de dilogo Tipos de
objetos y seleccione alguna o todas las opciones siguientes: Entidades de seguridad
integradas, Grupos y Usuarios.Las opciones Entidades de seguridad integradas y Usuarios estn
seleccionadas de forma predeterminada.Cuando termine, haga clic en Aceptar.
En Desde esta ubicacin, haga clic en Ubicaciones para abrir el cuadro de dilogo Ubicaciones y
seleccione una de las ubicaciones de servidor disponibles.Cuando termine, haga clic en Aceptar.
En Escribir los nombres de objeto para seleccionar (ejemplos), escriba el usuario o el nombre de grupo
que desea buscar.Para obtener ms informacin, vea Seleccionar usuarios, equipos o grupos (cuadro de
dilogo).
Click Para obtener ms informacin, vea Seleccionar usuarios, equipos o grupos (cuadro de dilogo) - Pgina
Avanzadas.
Click

Para crear un inicio de sesin basado en una entidad de seguridad de Windows, seleccione Autenticacin de
Windows.Esta es la seleccin predeterminada.
Para crear un inicio de sesin que se guarde en una base de datos de SQL Server, seleccione Autenticacin
de SQL Server.
En el cuadro de dilogo Tipo de regla, seleccione Puerto , y luego pulse en Siguiente . Vuelva a escribir la
contrasea en el cuadro Confirmar contrasea.
Al cambiar una contrasea existente, seleccione Especificar contrasea anterior y escriba la contrasea
anterior en el cuadroContrasea anterior.
Para aplicar las opciones de la directiva de contraseas a efectos de complejidad y exigencia,
seleccione Exigir directivas de contraseas.Para obtener ms informacin, vea Directiva de contraseas.
Esta es una opcin predeterminada cuando se seleccionaAutenticacin de SQL Server.
Para aplicar las opciones de la directiva de contraseas a efectos de expiracin, seleccione Exigir expiracin
de contrasea.Debe seleccionar la opcin Exigir directivas de contraseas para habilitar esta casilla.Esta
es una opcin predeterminada cuando se selecciona Autenticacin de SQL Server.
Para obligar al usuario a crear una nueva contrasea despus de utilizarse el inicio de sesin por primera vez,
seleccione El usuario debe cambiar la contrasea en el siguiente inicio de sesin.Debe seleccionar la
opcin Exigir expiracin de contrasea para habilitar esta casilla.Esta es una opcin predeterminada
cuando se selecciona Autenticacin de SQL Server.
Para asociar el inicio de sesin a un certificado de seguridad independiente, seleccione Asignado a
certificado y seleccione el nombre de un certificado existente de la lista.
Para asociar el inicio de sesin a una clave asimtrica independiente, seleccione Asignado a clave
asimtrica y seleccione el nombre de una clave existente de la lista.
Para asociar el inicio de sesin a una credencial de seguridad, active la casilla de Asignado a credencial y
seleccione una credencial existente de la lista o haga clic en Agregar para crear una nueva credencial.Para
quitar una asignacin a una credencial de seguridad del inicio de sesin, seleccione la credencial
en Credenciales asignadas y haga clic en Quitar.Para obtener ms informacin sobre las credenciales en
general, vea Credenciales (motor de base de datos).
En la lista Base de datos predeterminada, seleccione una base de datos predeterminada para el inicio de
sesin. Maestra es el valor predeterminado para esta opcin.
En la lista Idioma predeterminado, seleccione un idioma predeterminado para el inicio de sesin.
Haga clic en Aceptar.
Opciones adicionales
El cuadro de dilogo Inicio de sesin - Nuevo tambin ofrece opciones en cuatro pginas adicionales: Roles
de servidor, Asignacin de usuario, Elementos protegibles y Estado.
Roles de servidor
La pgina Roles de servidor enumera todos los roles posibles que se pueden asignar al nuevo inicio de
sesin.Las siguientes opciones estn disponibles:
Casilla bulkadmin
Solo los miembros del rol fijo de servidor bulkadmin pueden ejecutar la instruccin BULK INSERT.
Casilla dbcreator
Los miembros del rol fijo de servidor dbcreator pueden crear, modificar, quitar y restaurar cualquier base de
datos.
Casilla diskadmin
Los miembros del rol fijo de servidor diskadmin pueden administrar archivos de disco.
Casilla processadmin
Los miembros del rol fijo de servidor processadmin pueden finalizar procesos mediante la ejecucin de una
instancia del Motor de base de datos.
Casilla public
Todos los usuarios, grupos y roles de SQL Server pertenecen al rol fijo de servidor public de forma
predeterminada.
Casilla securityadmin
Los miembros del rol fijo de servidor securityadmin administran los inicios de sesin y sus
propiedades.Administran los permisos de servidor GRANT, DENY y REVOKE.Tambin administran los
permisos de base de datos GRANT, DENY y REVOKE.Asimismo, pueden restablecer contraseas para inicios
de sesin de SQL Server.
Casilla serveradmin

Los miembros del rol fijo de servidor serveradmin pueden cambiar opciones de configuracin en el servidor y
cerrar el servidor.
Casilla setupadmin
Los miembros del rol fijo de servidor setupadmin pueden agregar y quitar servidores vinculados, y ejecutar
algunos procedimientos almacenados del sistema.
Casilla sysadmin
Los miembros del rol fijo de servidor sysadmin pueden realizar cualquier actividad en el Motor de base de
datos.
Asignacin de usuarios
La pgina Asignacin de usuarios enumera todas las bases de datos posibles y las pertenencias al rol de
base de datos en esas bases de datos que se pueden aplicar al inicio de sesin.Las bases de datos
seleccionadas determinan las pertenencias a roles disponibles para el inicio de sesin.En esta pgina estn
disponibles las opciones siguientes:
Usuarios asignados a este inicio de sesin
Selecciona las bases de datos a las que se puede obtener acceso con este inicio de sesin.Cuando se
seleccione una base de datos, sus roles de bases de datos vlidos se mostrarn en el panel Miembros del
rol de base de datos para:database_name.
Mapa
Permite que el inicio de sesin obtenga acceso a las bases de datos que se muestran a continuacin.
Base de datos
Muestra las bases de datos disponibles en el servidor.
Usuario
Especifica el usuario de base de datos que se va a asignar al inicio de sesin.De forma predeterminada, el
nombre del usuario de base de datos coincide con el inicio de sesin.
Esquema predeterminado
Especifica el esquema predeterminado del usuario.Cuando se crea un usuario por primera vez, el esquema
predeterminado es dbo.Es posible especificar un esquema predeterminado que an no existe.No puede
especificar un esquema predeterminado para un usuario asignado a un grupo, un certificado o una clave
asimtrica de Windows.
Cuenta de invitado habilitada para: database_name
Atributo de solo lectura que indica si la cuenta de invitado est habilitada en la base de datos
seleccionada.Utilice la pgina Estado del cuadro de dilogo Propiedades de inicio de sesin de la cuenta
de invitado para habilitarla o deshabilitarla.
Miembros del rol de base de datos para: database_name
Selecciona los roles para el usuario en la base de datos especificada.Todos los usuarios son miembros del
rol public de todas las bases de datos, y no pueden eliminarse.Para obtener ms informacin acerca de los
roles de base de datos, vea Roles de nivel de base de datos.
Elementos protegibles
La pgina Elementos protegibles muestra todos los elementos protegibles posibles y los permisos en esos
elementos protegibles que se pueden conceder al inicio de sesin.En esta pgina estn disponibles las
opciones siguientes:
Cuadrcula superior
Contiene uno o ms elementos para los que se pueden establecer permisos.Las columnas mostradas en la
cuadrcula superior varan dependiendo de la entidad de seguridad o el elemento protegible.
Para agregar elementos a la cuadrcula superior:
Click
En el cuadro de dilogo Tipo de regla , seleccione Puerto , y luego pulse en Siguiente . Haga clic
en Aceptar.
Nota

Cuando se selecciona Servidorserver_name, se rellena automticamente la cuadrcula superior con to


los objetos protegibles de ese servidor.
Si selecciona Objetos especficos:
En el cuadro de dilogo Tipo de regla , seleccione Puerto , y luego pulse en Siguiente .

En el cuadro de dilogo Tipo de regla , seleccione Puerto , y luego pulse en Siguiente . Haga clic
en Aceptar.
En Escribir los nombres de objeto para seleccionar (ejemplos), haga clic en Examinar.
En el cuadro de dilogo Tipo de regla , seleccione Puerto , y luego pulse en Siguiente .
En el cuadro de dilogo Tipo de regla , seleccione Puerto , y luego pulse en Siguiente .
Si selecciona Todos los objetos de los tipos..., en el cuadro de dilogo Seleccionar tipos de objeto,
seleccione alguno o todos los tipos de objeto siguientes: Extremos, Inicios de sesin, Servidores, Grupos
de disponibilidad y Roles de servidor. Haga clic en Aceptar.
Name
El nombre de cada entidad de seguridad o elemento protegible que se agrega a la cuadrcula.
Tipo
Describe el tipo de cada elemento.
Pestaa Explcito
Enumere los posibles permisos del elemento protegible seleccionados en la cuadrcula superior.No todas las
opciones estn disponibles para todos los permisos explcitos.
Permisos
Nombre del permiso.
Otorgante de permisos
La entidad de seguridad que concedi el permiso.
Conceder
Active esta casilla para conceder el permiso al inicio de sesin.Desactvela para revocar el permiso.
WITH GRANT
Refleja el estado de la opcin WITH GRANT para el permiso indicado.Este cuadro es de solo lectura.Para
aplicar este permiso, use la instruccin GRANT.
Denegar
Active esta casilla para denegar el permiso al inicio de sesin.Desactvela para revocar el permiso.
Estado
La pgina Estado enumera algunas de las opciones de autenticacin y autorizacin que se pueden configurar
en el inicio de sesin de SQL Server seleccionado.
En esta pgina estn disponibles las opciones siguientes:
Permiso para conectarse al motor de la base de datos
Cuando trabaje con esta configuracin, debe pensar en el inicio de sesin seleccionado como una entidad de
seguridad a la que se le puede otorgar o denegar un permiso para un elemento protegible.
Seleccione Conceder para conceder el permiso CONNECT SQL al inicio de sesin.Seleccione Denegar para
denegar el permiso CONNECT SQL al inicio de sesin.
Inicio de sesin
Cuando trabaje con esta configuracin, debe pensar en el inicio de sesin seleccionado como un registro de
una tabla.Los cambios que se realicen en los valores que se muestran aqu se aplicarn al registro.
Un inicio de sesin que se ha deshabilitado sigue existiendo en el registro.Pero si intenta conectarse a SQL
Server, el inicio de sesin no se autenticar.
Seleccione esta opcin para habilitar o deshabilitar este inicio de sesin.Esta opcin utiliza la instruccin
ALTER LOGIN con las opciones ENABLE o DISABLE.
Autenticacin de SQL Server
La casilla Inicio de sesin bloqueado solo est disponible si el inicio de sesin se conecta utilizando la
Autenticacin de SQL Server y si ste se ha bloqueado. Este valor es solo de lectura. Para desbloquear un
inicio de sesin fuera el que se bloquea, ejecute ALTER LOGIN con la opcin de UNLOCK.
Usar Transact-SQL
Para crear un inicio de sesin utilizando la autenticacin de Windows
En el Explorador de objetos, conctese a una instancia del Motor de base de datos.
En la barra Estndar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
-- Create a login for SQL Server by specifying a server name and a Windows domain account name.
CREATE LOGIN [<domainName>\<loginName>] FROM WINDOWS;
GO

Para crear un inicio de sesin utilizando la autenticacin de SQL Server


En el Explorador de objetos, conctese a una instancia del Motor de base de datos.
En la barra Estndar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
-- Creates the user "shcooper" for SQL Server using the security credential "RestrictedFaculty"
-- The user login starts with the password "Baz1nga," but that password must be changed after the first login.
CREATE LOGIN shcooper
WITH PASSWORD = 'Baz1nga' MUST_CHANGE,
CREDENTIAL = RestrictedFaculty;
GO
Crear una base de datos
En el Explorador de objetos, conctese a una instancia del Motor de base de datos de SQL Server y
expndala.
Haga clic con el botn secundario en Bases de datos y, a continuacin, en Nueva base de datos.
En Nueva base de datos, especifique un nombre de base de datos.
Si desea crear la base de datos aceptando todos los valores predeterminados, haga clic en Aceptar; de lo
contrario, contine con siguientes los pasos opcionales.
Para cambiar el nombre de nombre del propietario, haga clic en () para seleccionar otro.
Nota
La opcin Usar indizacin de texto completo siempre est activada y atenuada porque, a partir de SQL
Server 2008, todas las bases de datos de usuario estn habilitadas para texto completo.
Para cambiar los valores predeterminados de los archivos de datos y de registro de transacciones principales,
en la cuadrcula Archivos de la base de datos, haga clic en la celda correspondiente y especifique el nuevo
valor. Para ms informacin, consulte Agregar archivos de datos o de registro a una base de datos.
Para cambiar la intercalacin de la base de datos, seleccione la pgina Opciones y una intercalacin de la
lista.
Para cambiar el modelo de recuperacin, seleccione la pgina Opciones y un modelo de recuperacin de la
lista.
Para cambiar opciones de base de datos, seleccione la pgina Opciones y modifique las opciones de la base
de datos. Para obtener una descripcin de cada una de las opciones, vea Opciones de ALTER DATABASE
SET (Transact-SQL).
Para agregar un nuevo grupo de archivos, haga clic en la pgina Grupos de archivos. Haga clic
en Agregar y especifique los valores para el grupo de archivos.
Para agregar una propiedad extendida a la base de datos, seleccione la pgina Propiedades extendidas.
En la columna Nombre, escriba un nombre para la propiedad extendida.
En la columna Valor, escriba el texto de la propiedad extendida. Por ejemplo, especifique una o varias
instrucciones que describan la base de datos.
Para crear la base de datos, haga clic en Aceptar.
Usar Transact-SQL
Para crear una base de datos
Conctese con el Motor de base de datos.
En la barra Estndar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. Este ejemplo crea la
base de datos Sales. Debido a que no se usa la palabra clave PRIMARY, el primer archivo (Sales_dat) se
convierte en el archivo principal. Como no se especifica MB ni KB en el parmetro SIZE del archivo Sales_dat,
se utiliza MB y el tamao se asigna en megabytes. El tamao del archivo Sales_log se asigna en megabytes
porque el sufijo MB se ha indicado explcitamente en el parmetro SIZE.
Transact-SQL
USE master ;
GO

CREATE DATABASE Sales


ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
Tipos de datos
En SQL Server, cada columna, variable local, expresin y parmetro tiene un tipo de datos relacionado. Un
tipo de datos es un atributo que especifica el tipo de datos que el objeto puede contener: datos de enteros,
datos de caracteres, datos de moneda, datos de fecha y hora, cadenas binarias, etc.
SQL Server proporciona un conjunto de tipos de datos del sistema que define todos los tipos de datos que
pueden utilizarse con SQL Server. Tambin puede definir sus propios tipos de datos en Transact-SQL o
Microsoft .NET Framework. Los tipos de datos de alias estn basados en los tipos de datos proporcionados
por el sistema. Para obtener ms informacin acerca de los tipos de datos de alias, vea CREATE TYPE
(Transact-SQL). Los tipos definidos por el usuario obtienen sus caractersticas de los mtodos y los
operadores de una clase que se crean mediante uno de los lenguajes de programacin compatibles con .NET
Framework.
Cuando dos expresiones que tienen tipos de datos, intercalaciones, precisin, escala o longitud diferentes son
combinadas por un operador, las caractersticas del resultado vienen determinadas por lo siguiente:
El tipo de datos del resultado viene determinado por la aplicacin de las reglas de precedencia de tipos de
datos a los tipos de datos de las expresiones de entrada. Para obtener ms informacin, vea Prioridad de tipo
de datos (Transact-SQL).
La intercalacin del resultado viene determinada por las reglas de precedencia de intercalacin cuando el tipo
de datos del resultado es char,varchar, text, nchar, nvarchar o ntext. Para obtener ms informacin,
vea Prioridad de intercalacin (Transact-SQL).
La precisin, escala y longitud del resultado dependen de la precisin, escala y longitud de las expresiones de
entrada. Para obtener ms informacin, vea Precisin, escala y longitud (Transact-SQL).
SQL Server proporciona sinnimos de tipos de datos para la compatibilidad con ISO. Para obtener ms
informacin, vea Sinnimos de tipos de datos (Transact-SQL).
Categoras de tipos de datos
Los tipos de datos en SQL Server estn organizados en las siguientes categoras:
Numricos exactos

Cadenas de caracteres Unicode

Numricos aproximados

Cadenas binarias

Fecha y hora

Otros tipos de datos

Cadenas de caracteres
En SQL Server, basado en sus caractersticas de almacenamiento, algunos tipos de datos estn designados
como pertenecientes a los siguientes grupos:
Tipos de datos de valores grandes: varchar(max), nvarchar(max) y varbinary(max)
Tipos de datos de objetos grandes: text, ntext, image, varchar(max), nvarchar(max), varbinary(max) y xml

Nota
sp_help devuelve -1 como longitud de los tipos de datos de valores grandes y xml.
Numricos exactos
bigint

numeric

bit

smallint

decimal

smallmoney

int

tinyint

money
Numricos aproximados
float

real

Fecha y hora
date

datetimeoffset

datetime2

smalldatetime

datetime

time

Cadenas de caracteres
char

varchar

text
Cadenas de caracteres Unicode
nchar

nvarchar

ntext
Cadenas binarias
binary

varbinary

image
Otros tipos de datos
cursor

timestamp

hierarchyid

uniqueidentifier

sql_variant

xml

tabla

Tipos espaciales

Datos Unicode
La especificacin Unicode define un esquema de codificacin nico para la mayor parte de los caracteres
usados con ms frecuencia en todo el mundo. Todos los equipos traducen de forma coherente los patrones de
bits de los datos Unicode a caracteres, con la especificacin nica de Unicode. Esto asegura que el mismo
patrn de bits se convierte siempre al mismo carcter en todos los equipos. Los datos se pueden transferir
libremente de unas bases de datos o unos equipos a otros, sin preocuparse de que el sistema que los reciba
traduzca los patrones de bits de forma incorrecta.
Un problema con los tipos de datos que usan un byte para codificar cada carcter es que el tipo de datos slo
puede representar 256 caracteres distintos. Esto exige varias especificaciones de codificacin, o pginas de
cdigos, para distintos alfabetos, como los europeos, que son relativamente pequeos. Tampoco se pueden
administrar sistemas como el alfabeto kanji japons o el hangul coreano, que tienen miles de caracteres.
Cada intercalacin de Microsoft SQL Server dispone de una pgina de cdigos que define los patrones de bits
que representan cada carcter en los valores char, varchar y text. Es posible asignar una pgina de cdigos
diferente a constantes de caracteres y columnas individuales. Los equipos cliente usan la pgina de cdigos
asociada a la configuracin regional del sistema operativo para interpretar los patrones de bits de caracteres.
Existe un gran nmero de pginas de cdigos diferentes y algunos caracteres aparecen en algunas pginas,
pero no en otras. Algunos caracteres se definen con un patrn de bits en algunas pginas de cdigos y con un
patrn de bits distinto en otras. Cuando se crean sistemas internacionales que deben manejar distintos
idiomas, resulta difcil elegir pginas de cdigos para todos los equipos que cumplan los requisitos de los
idiomas de varios pases y regiones. Asimismo, es difcil asegurar que cada equipo realiza las traducciones
correctas cuando interactan con un sistema que utiliza una pgina de cdigos distinta.
La especificacin Unicode resuelve este problema al utilizar 2 bytes para codificar cada carcter. Hay
suficientes patrones distintos (65.536) en 2 bytes para establecer una nica especificacin que abarque la
mayor parte de los idiomas comerciales comunes. Dado que todos los sistemas Unicode usan de forma
coherente los mismos patrones de bits para representar todos los caracteres, se resuelve el problema que
plantea el hecho de que los caracteres se pudieran convertir de forma incorrecta al pasarlos de un sistema a
otro. Puede minimizar los problemas de la conversin de caracteres si utiliza tipos de datos Unicode en su
sistema.
En SQL Server, stos son los tipos de datos que admiten datos Unicode:
nchar
nvarchar
ntext
Nota
El prefijo n de estos tipos de datos procede del estndar ISO para los tipos de datos National (Unicode).
El uso de nchar, nvarchar y ntext es el mismo que el de char, varchar y text, respectivamente, excepto en
los siguientes aspectos:
Unicode admite una gama ms amplia de caracteres.
Se necesita ms espacio para almacenar caracteres Unicode.
El tamao mximo de las columnas nchar es de 4.000 caracteres, no 8.000 como en char y varchar.
El tamao mximo de las columnas nvarchar, si se utiliza el especificador max, es de 2^31-1 bytes. Para
obtener ms informacin acerca de nvarchar(max), vea Usar tipos de datos de valores grandes.
Las constantes Unicode se especifican con una N a la izquierda: N'Cadena Unicode'.
Todos los datos Unicode utilizan el juego de caracteres definido por la norma Unicode. Las intercalaciones
Unicode que se utilizan en las columnas Unicode se basan en atributos como la distincin de maysculas y
minsculas, la distincin de acentos, la distincin de tipos de kana, la distincin de ancho y los binarios.

Tipos de datos Numricos

Los tipos de datos numricos, en SQL Server, son los que utilizamos para almacenar cantidades numricas
con las cuales tenemos la posibilidad de realizar operaciones aritmticas y lgicas.
Los datos numricos se dividen en 2, que son Numricos exactos y numricos aproximados, dentro de los
cuales se encuentran las siguientes variaciones:
Numricos exactos
bigint

numeric

float
bit

smallint

decimal

Numricos aproximados
real

Para almacenar valores NUMERICOS SQL Server dispone de varios tipos.


Para almacenar valores ENTEROS, por ejemplo, en campos que hacen referencia
a cantidades, usamos:
int
tinyint
1) integer o int: su rango es de -2000000000 a 2000000000 aprox. El tipo "integer"
tiene subtipos:
- smallint: Puede contener hasta 5 digitos. Su rango va desde 32000 hasta 32000 aprox.
- tinyint: Puede almacenar valores entre 0 y 255.
- bigint: De 9000000000000000000 hasta 9000000000000000000 aprox.
Para almacenar valores numricos EXACTOS con decimales, especificando la cantidad de cifras a la
izquierda y derecha del separador decimal, utilizamos:
2) decimal o numeric (t,d): Pueden tener hasta 38 digitos, guarda un valor exacto. El primer argumento indica
el total de dgitos y el segundo, la cantidad de decimales.
Por ejemplo, si queremos almacenar valores entre -99.99 y 99.99 debemos definir el campo como tipo
"decimal(4,2)". Si no se indica el valor del segundo argumento, por defecto es "0". Por ejemplo, si definimos
"decimal(4)" se pueden guardar valores entre -9999 y 9999.
El rango depende de los argumentos, tambin los bytes que ocupa.
Se utiliza el punto como separador de decimales.
Si ingresamos un valor con ms decimales que los permitidos, redondea al ms cercano; por ejemplo, si
definimos "decimal(4,2)" e ingresamos el valor "12.686", guardar "12.69", redondeando hacia arriba; si
ingresamos el valor "12.682", guardar "12.67", redondeando hacia abajo.
Para almacenar valores numricos APROXIMADOS con decimales utilizamos:
3) float y real: De 1.79E+308 hasta 1.79E+38. Guarda valores aproximados.
4) real: Desde 3.40E+308 hasta 3.40E+38. Guarda valores aproximados.
Para todos los tipos numricos:
- si intentamos ingresar un valor fuera de rango, no lo permite.
- si ingresamos una cadena, SQL Server intenta convertirla a valor numrico, si dicha cadena consta
solamente de dgitos, la conversin se realiza, luego verifica si est dentro del rango, si es as, la ingresa,
sino, muestra un mensaje de error y no ejecuta la sentencia. Si la cadena contiene caracteres que SQL Server
no puede convertir a valor numrico, muestra un mensaje de error y la sentencia no se ejecuta.
Por ejemplo, definimos un campo de tipo decimal(5,2), si ingresamos la cadena '12.22', la convierte al valor
numrico 12.22 y la ingresa; si intentamos ingresar la cadena '1234.56', la convierte al valor numrico
1234.56, pero como el mximo valor permitido es 999.99, muestra un mensaje indicando que est fuera de
rango. Si intentamos ingresar el valor '12y.25', SQL Server no puede realizar la conversin y muestra un
mensaje de error.
Es importante elegir el tipo de dato adecuado segn el caso, el ms preciso. Por ejemplo, si un campo
numrico almacenar valores positivos menores a 255, el tipo "int" no es el ms adecuado, conviene el tipo
"tinyint", de esta manera usamos el menor espacio de almacenamiento posible.
Tipo
Bytes de almacenamiento
_______________________________________
int
4
smallint
2
tinyint
1
bigint
8
decimal
2 a 17
float
4u8

real

4u8

Ejemplo:
Para declarar como tipo numrico a un campo de nuestra tabla, a la par de nuestro nombre del campo,
colocamos nuestro tipo de dato, veamos el cdigo:
CREATE TABLE dbo.MyTable
(
MyBigIntColumn bigint
,MyIntColumn int
,MySmallIntColumn smallint
,MyTinyIntColumn tinyint
);
Tipos de datos Monetarios
Son los que utilizamos para almacenar cantidades de dinero en nuestra base de datos.
Para almacenar valores MONETARIOS empleamos:
1) money: Puede tener hasta 19 digitos y slo 4 de ellos puede ir luego del separador decimal; entre
900000000000000.5808 aprox y 900000000000000.5807.
2) smallmoney: Entre 200000.3648 y 200000.3647 aprox.
Ejemplo:
Para declarar como tipo monetario a un campo de nuestra tabla, a la par de nuestro nombre del campo,
colocamos nuestro tipo de dato, veamos el cdigo:
CREATE TABLE dbo.Products
(ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription text NULL
Tipos de Datos de fecha y hora
Son los que utilizamos para el almacenamiento de fechas, dentro de las cuales se tiene la posibilidad de
almacenar tambin la hora exacta en la cual se realiza un evento u operacin que deba ser registrado de
manera exacta.

Tipo de
datos

Tamao de
almacenamien
to (bytes)

Precisi
n de
fraccione
s de
segundo
definida
por el
usuario

Ajust
e de
zona
horari
a

Formato

Intervalo

Precisin

time

hh:mm:ss[.nnnnn
nn]

De
00:00:00.00000
00 a
23:59:59.99999
99

100
nanosegund
os

De 3 a 5

Si

No

date

AAAA-MM-DD

De 0001-01-01
a 9999-12-31

1 da

No

No

smalldatetim
e

AAAA-MM-DD
hh:mm:ss

De 1900-01-01
a 2079-06-06

1 minuto

No

No

datetime

AAAA-MM-DD
hh:mm:ss[. nnn]

De 1753-01-01
a 9999-12-31

0,00333
segundos

No

No

datetime2

AAAA-MM-DD
hh:mm:ss[.nnnnn
nn]

De 0001-01-01
00:00:00.00000
00 a 9999-1231
23:59:59.99999
99

100
nanosegund
os

De 6 a 8

Si

No

datetimeoffs
et

AAAA-MM-DD
hh:mm:ss[.nnnnn
nn] [+|-]hh:mm

De 0001-01-01
00:00:00.00000
00 a 9999-1231
23:59:59.99999
99 (en UTC)

100
nanosegund
os

De 8 a 10

Si

Si

Nota
El tipo de datos rowversion de Transact-SQL no es un tipo de datos de fecha y hora. timestamp es un
sinnimo desusado de rowversion.
Funciones de fecha y hora
En las tablas siguientes se enumeran las funciones de fecha y hora de Transact-SQL.
Funciones que obtienen valores de fecha y hora del sistema
Todos los valores de fecha y hora del sistema se derivan del sistema operativo del equipo en el que se ejecuta
la instancia de SQL Server.
Funciones de fecha y hora del sistema de precisin elevada
SQL Server 2014 obtiene los valores de fecha y hora utilizando la API de
Windows GetSystemTimeAsFileTime(). La exactitud depende del hardware del equipo y de la versin de
Windows en las que la instancia de SQL Server se est ejecutando. La precisin de esta API se fija en 100
nanosegundos. La precisin se puede determinar mediante la API de
Windows GetSystemTimeAdjustment().
Tipo de datos
devuelto

Determinis
mo

Devuelve un
valor datetime2(7) que
contiene la fecha y hora
del equipo en el que se
est ejecutando la
instancia de SQL
Server. El ajuste de
zona horaria no est
incluido.

datetime2(7)

No
determinista

Devuelve un
valor datetimeoffset(7)
que contiene la fecha y
hora del equipo en el
que la instancia de SQL

datetimeoffset
(7)

No
determinista

Funcin

Sintaxis

Valor devuelto

SYSDATETIME

SYSDATETIME ()

SYSDATETIMEOFFS
ET

SYSDATETIMEOFFS
ET ( )

Server se est
ejecutando. El ajuste de
zona horaria est
incluido.
SYSUTCDATETIME

SYSUTCDATETIME (
)

Devuelve un
valor datetime2(7) que
contiene la fecha y hora
del equipo en el que la
instancia de SQL Server
se est ejecutando. La
fecha y hora se
devuelven como hora
universal coordinada
(UTC).

datetime2(7)

No
determinista

Funciones que obtienen partes de fecha y hora


Tipo de
datos
devuelto

Funcin

Sintaxis

Valor devuelto

Determinismo

DATENAME

DATENAME
(datepart , date )

Devuelve una cadena de caracteres


que representa
el datepartespecificado de la fecha
especificada.

nvarchar

No
determinista

DATEPART

DATEPART
(datepart , date )

Devuelve un entero que representa


el datepart especificado
deldate especificado.

int

No
determinista

DAY

DAY ( date )

Devuelve un entero que representa la


parte del da de dateespecificado.

int

Determinista

MONTH

MONTH ( date )

Devuelve un entero que representa el


mes de un fechaespecificado.

int

Determinista

YEAR

YEAR ( date )

Devuelve un entero que representa el


ao de una fecha especfica.

int

Determinstico

Funciones que obtienen diferencias de fecha y hora


Funcin

Sintaxis

Valor devuelto

DATEDIFF

DATEDIFF
( datepart ,startdate , enddate )

Devuelve el nmero de
lmites datepart de fecha y
hora entre dos fechas
especificadas.

Tipo de
datos
devuelto

Determinismo

int

Determinista

Funciones que modifican valores de fecha y hora


Funcin

Sintaxis

Valor devuelto

Tipo de datos devuelto

Determinis
mo

DATEAD
D

DATEADD
(datepart ,number , date
)

Devuelve un nuevo
valor datetime agrega
ndo un intervalo
al datepart especificad
o del date indicado.

El tipo de datos del


argumento date.

Determinstic
o

EOMONT
H

EOMONTH
(start_date [,month_to_a
dd ] )

Devuelve el ltimo da
del mes que contiene
la fecha especificada,
con un desplazamiento
opcional.

El tipo de valor devuelto


es start_date odatetime2
(7).

Determinstic
o

Tipos de datos Binarios


Son los que utilizamos para el almacenamiento de registros con binarios en nuestras bases de datos, existen
dos tipos:
binary [ ( n ) ]
Datos binarios de longitud fija con una longitud de n bytes, donde n es un valor que oscila entre 1 y 8.000. El
tamao de almacenamiento es de n bytes.
varbinary [ ( n | max) ]
Datos binarios de longitud variable. n puede ser un valor de 1 a 8.000. max indica que el tamao mximo de
almacenamiento es de 2^31-1 bytes. El tamao de almacenamiento es la longitud real de los datos
especificados + 2 bytes. Los datos especificados pueden tener una longitud de 0 bytes. El sinnimo de ANSI
SQL para varbinary es binary varying.
Ejemplo:
Los tipos de datos binary y varbinary almacenan cadenas de bits. Aunque los datos de caracteres se
interpretan segn la pgina de cdigos de SQL Server , los datos binary yvarbinary son simplemente una
secuencia de bits.
Los datos binary pueden almacenar un mximo de 8.000 bytes. varbinary, con el especificador de mximo,
puede almacenar un mximo de 2^31 bytes.
Las constantes binarias tienen un 0x (un cero y una letra x en minscula) a la izquierda, seguido de la
representacin hexadecimal del patrn de bits. Por ejemplo, 0x2A especifica el valor hexadecimal 2A, que es
equivalente al valor decimal 42 o un patrn de bits de un byte de 00101010.
Use datos binarios cuando almacene valores hexadecimales tales como un nmero de identificacin de
seguridad (SID), un GUID (con el tipo de datos uniqueidentifier) o un nmero complejo que se puede
almacenar con una abreviatura hexadecimal.
A continuacin se muestra un ejemplo de Transact-SQL que almacena un SID y un literal hexadecimal:
CREATE TABLE MyCcustomerTable
(
user_login varbinary(85) DEFAULT SUSER_SID()
,data_value varbinary(1)
);
INSERT INTO MyCustomerTable (data_value)
VALUES (0x4F);
Creacin de Tablas en SQL

Create Table
Las tablas son la estructura bsica donde se almacena la informacin en la base de datos. Dado que en la
mayora de los casos, no hay forma de que el proveedor de base de datos sepa con antelacin cuales son sus
necesidades de almacenamiento de datos, es probable que necesite crear tablas en la base de datos usted
mismo. Muchas herramientas de base de datos le permiten crear tablas sin ingresar SQL, pero debido a que
las tablas son los contenedores de toda la informacin, es importante incluir la sintaxis CREATE TABLE en
esta gua de referencia.
Antes de sumergirnos en la sintaxis SQL para CREATE TABLE, es una buena idea comprender lo que se
incluye en una tabla. Las tablas se dividen en filas y columnas. Cada fila representa una parte de los datos, y
cada columna puede pensarse como la representacin de un componente de aquella parte de los datos.
Entonces, por ejemplo, si tenemos una tabla para registrar la informacin del cliente, las columnas pueden
incluir informacin tal como Primer Nombre, Apellido, Direccin, Ciudad, Pas, Fecha de Nacimiento y dems.
Como resultado, cuando especificamos una tabla, incluimos los ttulos de columna y los tipos de datos para
esta columna en particular.
Entonces Qu son los tipos de datos? Generalmente, los datos se generan en formas variadas. Podra ser
un entero (tal como 1), un nmero real (tal como 0,55), una lnea (tal como 'sql'), una fecha/expresin de
tiempo (tal como '25-ene-2000 03:22:22'), o incluso en formato binario. Cuando especificamos una tabla,
necesitamos especificar el tipo de dato asociado con cada columna (es decir, especificaremos que
First_Name es de char(50) tipo lo que significa que es una lnea con 50 caracteres). Una cosa a tener en
cuenta es que las diferentes bases de datos relacionales permiten diferentes tipos de datos, entonces es
prudente consultar primero una referencia especfica de base de datos.
La sintaxis SQL para CREATE TABLE es
CREATE TABLE "nombre_tabla"
("columna 1" "tipo_de_datos_para_columna_1",
"columna 2" "tipo_de_datos_para_columna_2",
... );
Entonces, si debemos crear una tabla para el cliente tal como se especifica anteriormente, ingresaramos
CREATE TABLE Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date datetime);
A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado
cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor
predeterminado, agregue [valor] Predeterminado luego de la instruccin de tipo de datos. En el ejemplo
anterior, si deseamos predeterminar una columna Address como Desconocida y Ciudad como Barcelona,
ingresaramos
CREATE TABLE Customer
(First_Name char(50),
Last_Name char(50),
Address char(50) default 'Unknown',
City char(50) default 'Barcelona',
Country char(25),
Birth_Date datetime);

java

JAVA
Errores sintcticos y lgicos
Confeccionaremos un problema y agregaremos adrede una serie de errores tipogrficos. Este tipo de errores
siempre son detectados por el COMPILADOR, antes de ejecutar el programa. A los errores tipogrficos, como
por ejemplo la falta de puntos y comas, nombres de variables incorrectas, falta de parntesis, palabras claves
mal escritas, etc. los llamamos errores SINTACTICOS.
Un programa no se puede ejecutar sin corregir absolutamente todos los errores sintcticos. Existe otro tipo de
errores llamados ERRORES LOGICOS. Este tipo de errores en programas grandes (miles de lneas) son ms
difciles de localizar. Por ejemplo un programa que permite hacer la facturacin pero la salida de datos por
impresora es incorrecta.
Ejemplo: Hallar la superficie de un cuadrado conociendo el valor de un lado.
Proyecto: Creemos un proyecto llamado Superficie Cuadrado y una clase llamada Superficie Cuadrado.
Codificamos el algoritmo en Java e introducimos dos errores sintctico:
1 - Disponemos el nombre del objeto System con minsculas.
2 - Tratamos de imprimir el nombre de la variable superficie con el primer carcter en maysculas.

Como podemos observar aparece subrayado la lnea donde disponemos System con minsculas como en la
lnea que imprimimos la variable superficie con maysculas. Si modificamos y corregimos los dos errores
sintcticos podremos ejecutar nuestro programa.
Programa correctamente codificado:
import java.util.Scanner;

public class SuperficieCuadrado {


public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int lado;
int superficie;
System.out.print("Ingrese el valor del lado del cuadrado:");
lado=teclado.nextInt();
superficie=lado * lado;
System.out.print("La superficie del cuadrado es:");
System.out.print(superficie);
}
}
Programa con un error lgico:
import java.util.Scanner;
public class SuperficieCuadrado {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int lado;
int superficie;
System.out.print("Ingrese el valor del lado del cuadrado:");
lado=teclado.nextInt();
superficie=lado * lado * lado;
System.out.print("La superficie del cuadrado es:");
System.out.print(superficie);
}
}
Como podemos observar si ejecutamos el programa no presenta ningn error de compilacin. Pero luego de
ingresar el valor del lado del cuadrado (por ejemplo el valor 10) obtenemos como resultado un valor incorrecto
(imprime el 1000), esto debido que definimos incorrectamente la frmula para calcular la superficie del
cuadrado:
superficie=lado * lado * lado

Estructura de programacin secuencial


Cuando en un problema slo participan operaciones, entradas y salidas se la denomina una estructura
secuencial. Los problemas diagramados y codificados previamente emplean solo estructuras secuenciales. La
programacin requiere una prctica ininterrumpida de diagramacin y codificacin de problemas.
Problema:
Realizar la carga de dos nmeros enteros por teclado e imprimir su suma y su producto.
Tenemos dos entradas num1 y num2 (recordar cules son los nombres de variables correctas), dos
operaciones: realizacin de la suma y del producto de los valores ingresados y dos salidas, que son los
resultados de la suma y el producto de los valores ingresados. En el smbolo de impresin podemos indicar
una o ms salidas, eso queda a criterio del programador, lo mismo para indicar las entradas por teclado.
Programa:
import java.util.Scanner;
public class SumaProductoNumeros {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int num1,num2,suma,producto;
System.out.print("Ingrese primer valor:");
num1=teclado.nextInt();
System.out.print("Ingrese segundo valor");

num2=teclado.nextInt();
suma=num1 + num2;
producto=num1 * num2;
System.out.print("La suma de los dos valores es:");
System.out.println(suma);
System.out.print("El producto de los dos valores es:");
System.out.println(producto);
}
}
Recordemos que tenemos que seguir todos los pasos vistos para la creacin de un proyecto, su clase,
definicin de la funcin main y la codificacin del diagrama de flujo.
Algunas cosas nuevas que podemos notar:
Podemos definir varias variables en la misma lnea:
int num1,num2,suma,producto;
Si llamamos a la funcin println en lugar de print, la impresin siguiente se efectuar en la prxima lnea:
System.out.println(suma);

Condiciones Compuestas con operadores lgicos


Operadores lgicos (&&, ||).
Estos dos operadores se emplean fundamentalmente en las estructuras condicionales para agrupar varias
condiciones simples.
Operador &&
Cuando vinculamos dos o ms condiciones con el operador ?&&?, las dos condiciones deben ser verdaderas
para que el resultado de la condicin compuesta de Verdadero y contine por la rama del verdadero de la
estructura condicional.

Problema:
Confeccionar un programa que lea por teclado tres nmeros distintos y nos muestre el mayor.
Diagrama de flujo:

Programa:
import java.util.Scanner;
public class CondicionesCompuestas1 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int num1,num2,num3;
System.out.print("Ingrese primer valor:");
num1=teclado.nextInt();
System.out.print("Ingrese segundo valor:");
num2=teclado.nextInt();
System.out.print("Ingrese tercer valor:");
num3=teclado.nextInt();
if (num1>num2 && num1>num3) {
System.out.print(num1);
} else {
if (num2>num3) {
System.out.print(num2);
}else {
System.out.print(num3);
}
}
}
}
Operador ||

Problema:
Se carga una fecha (da, mes y ao) por teclado. Mostrar un mensaje si corresponde al primer trimestre del
ao (enero, febrero o marzo) Cargar por teclado el valor numrico del da, mes y ao.
Ejemplo: dia:10 mes:1 ao:2010.

Diagrama de flujo:

Programa:
import java.util.Scanner;
public class CondicionesCompuestas2 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int dia,mes,ao;

System.out.print("Ingrese nro de da:");


dia=teclado.nextInt();
System.out.print("Ingrese nro de mes:");
mes=teclado.nextInt();
System.out.print("Ingrese nro de ao:");
ao=teclado.nextInt();
if (mes==1 || mes==2 || mes==3) {
System.out.print("Corresponde al primer trimestre");
}
}
}
Estructuras repetitivas
Estructuras WHILE
Una estructura repetitiva permite ejecutar una instruccin o un conjunto de instrucciones varias veces.

Funcionamiento: En primer lugar se verifica la condicin, si la misma resulta verdadera se ejecutan las
operaciones que indicamos por la rama del Verdadero.
El bloque se repite MIENTRAS la condicin sea Verdadera. En caso que la condicin sea Falsa contina por
la rama del Falso y sale de la estructura repetitiva para continuar con la ejecucin del algoritmo.
Importante: Si la condicin siempre retorna verdadero estamos en presencia de un ciclo repetitivo infinito.
Dicha situacin es un error de programacin, nunca finalizar el programa.
while (num >= 0){
suma = suma + num;
System.out.print("Introduzca un nmero: ");
num = sc.nextInt();
}
Problema 1:
Escribir un programa que solicite la carga de un valor positivo y nos muestre desde 1 hasta el valor ingresado
de uno en uno.
Ejemplo: Si ingresamos 30 se debe mostrar en pantalla los nmeros del 1 al 30.
Es de FUNDAMENTAL importancia analizar los diagramas de flujo y la posterior codificacin en Java de los
siguientes problemas,
.
Diagrama de Flujo

Programa
import
public class
public static
Scanner
int n,x;

java.util.Scanner;
EstructuraRepetitivaWhile2 {
void main(String[] ar) {
teclado=new Scanner(System.in);
System.out.print("Ingrese el valor final:");
n=teclado.nextInt();

x=1;
while (x<=n)
System.out.print(x);
System.out.print(" - ");
x = x + 1;
}

}
}
Podemos observar que se ingresa por teclado la variable n. El operador puede cargar cualquier valor.
Si el operador carga 10 el bloque repetitivo se ejecutar 10 veces, ya que la condicin es ?Mientras x<=n ?,
es decir ?mientras x sea menor o igual a 10?; pues x comienza en uno y se incrementa en uno cada vez que
se ejecuta el bloque repetitivo.
PROBLEMA2
Una planta que fabrica perfiles de hierro posee un lote de n piezas.
Confeccionar un programa que pida ingresar por teclado la cantidad de piezas a procesar y luego ingrese la
longitud de cada perfil; sabiendo que la pieza cuya longitud est comprendida en el rango de 1,20 y 1,30 son
aptas. Imprimir por pantalla la cantidad de piezas aptas que hay en el lote

PROGRAMA
import java.util.Scanner;
public class EstructuraRepetitivaWhile4 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int x,cantidad,n;
float largo;
x=1;
cantidad=0;
System.out.print("Cuantas piezar procesar:");
n=teclado.nextInt();
while (x<=n) {
System.out.print("Ingrese la medida de la pieza:");
largo=teclado.nextFloat();
if (largo>=1.20 && largo<=1.30) {
cantidad = cantidad +1;
}
x=x + 1;
}
System.out.print("La cantidad de piezas aptas son:");
System.out.print(cantidad);
}
}
Estructuras FOR
En general, la estructura for se usa en aquellas situaciones en las cuales CONOCEMOS la cantidad de veces
que queremos que se ejecute el bloque de instrucciones. Ejemplo: cargar 10 nmeros, ingresar 5 notas de
alumnos, etc. Conocemos de antemano la cantidad de veces que queremos que el bloque se repita.
int i;
for(i=1; i<=10;i++)
System.out.println(i + " ");

Realizar un programa que imprima en pantalla los nmeros del 1 al 100.

Programa:
public class EstructuraRepetitivaFor1 {
public static void main(String[] ar) {
int f;
for(f=1;f<=100;f++) {
System.out.print(f);
System.out.print("-");
}
}
}
- Estructura repetitiva do while
La estructura do while es otra estructura repetitiva, la cual ejecuta al menos una vez su bloque repetitivo, a
diferencia del while o del for que podan no ejecutar el bloque.
do {
System.out.print("Escribe un entero < 100: ");
valor = in.nextInt();
}while (valor >= 100);
System.out.println("Ha introducido: " + valor);
}
Representacin grfica:

El bloque de operaciones se repite MIENTRAS que la condicin sea Verdadera.


Si la condicin retorna Falso el ciclo se detiene. En Java, todos los ciclos repiten por verdadero y cortan por
falso.
Es importante analizar y ver que las operaciones se ejecutan como mnimo una vez.
Problema 1:
Escribir un programa que solicite la carga de un nmero entre 0 y 999, y nos muestre un mensaje de cuntos
dgitos tiene el mismo. Finalizar el programa cuando se cargue el valor 0.
Diagrama de flujo:

No hay que confundir los rombos de las estructuras condicionales con los de las estructuras repetitivas do
while.
En este problema por lo menos se carga un valor. Si se carga un valor mayor o igual a 100 se trata de un
nmero de tres cifras, si es mayor o igual a 10 se trata de un valor de dos dgitos, en caso contrario se trata de
un valor de un dgito. Este bloque se repite hasta que se ingresa en la variable valor el nmero 0 con lo que la
condicin de la estructura do while retorna falso y sale del bloque repetitivo finalizando el programa.
Programa:
import java.util.Scanner;
public class EstructuraRepetitivaDoWhile1 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int valor;
do {
System.out.print("Ingrese un valor entre 0 y 999 (0 finaliza):");
valor=teclado.nextInt();
if (valor>=100) {
System.out.println("Tiene 3 dgitos.");
} else {
if (valor>=10) {
System.out.println("Tiene 2 dgitos.");

} else {
System.out.println("Tiene 1 dgito.");
}
}
} while (valor!=0);
}
}
Problema 2:
Escribir un programa que solicite la carga de nmeros por teclado, obtener su promedio. Finalizar la carga de
valores cuando se cargue el valor 0.
Cuando la finalizacin depende de algn valor ingresado por el operador conviene el empleo de la estructura
do while, por lo menos se cargar un valor (en el caso ms extremo se carga 0, que indica la finalizacin de la
carga de valores)
Diagrama de flujo:

Es importante analizar este diagrama de flujo.


Definimos un contador cant que cuenta la cantidad de valores ingresados por el operador (no lo incrementa si
ingresamos 0)
El valor 0 no es parte de la serie de valores que se deben sumar.
Definimos el acumulador suma que almacena todos los valores ingresados por teclado.
La estructura repetitiva do while se repite hasta que ingresamos el valor 0. Con dicho valor la condicin del
ciclo retorna falso y contina con el flujo del diagrama.

Disponemos por ltimo una estructura condicional para el caso que el operador cargue nicamente un 0 y por
lo tanto no podemos calcular el promedio ya que no existe la divisin por 0.
En caso que el contador cant tenga un valor distinto a 0 el promedio se obtiene dividiendo el acumulador
suma por el contador cant que tiene la cantidad de valores ingresados antes de introducir el 0.
Programa:
import java.util.Scanner;
public class EstructuraRepetitivaDoWhile2 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int suma,cant,valor,promedio;
suma=0;
cant=0;
do {
System.out.print("Ingrese un valor (0 para finalizar):");
valor=teclado.nextInt();
if (valor!=0) {
suma=suma+valor;
cant++;
}
} while (valor!=0);
if (cant!=0) {
promedio=suma/cant;
System.out.print("El promedio de los valores ingresados es:");
System.out.print(promedio);
} else {
System.out.print("No se ingresaron valores.");}}}
El contador cant DEBE inicializarse antes del ciclo, lo mismo que el acumulador suma. El promedio se calcula
siempre y cuando el contador cant sea distinto a 0.

Definicin de una clase


El elemento bsico de la programacin orientada a objetos en Java es la clase. Una clase define la forma y
comportamiento de un objeto.
Para crear una clase slo se necesita un archivo fuente que contenga la palabra clave reservada class
seguida de un identificador legal y un bloque delimitado por dos llaves para el cuerpo de la clase.
class MiPunto {
}
Una clase es una plantilla para un objeto. Por lo tanto define la estructura de un objeto y su interfaz funcional,
en forma de mtodos. Cuando se ejecuta un programa en Java, el sistema utiliza definiciones de clase para
crear instancias de las clases, que son los objetos reales. Los trminos instancia y objeto se utilizan de
manera indistinta. La forma general de una definicin de clase es:
class Nombre_De_Clase {
tipo_de_variable nombre_de_atributo1;
tipo_de_variable nombre_de_atributo2;
// . . .
tipo_devuelto nombre_de_mtodo1( lista_de_parmetros ) {
cuerpo_del_mtodo1;
}

tipo_devuelto nombre_de_mtodo2( lista_de_parmetros ) {


cuerpo_del_mtodo2;
}
// . . .
}
Los tipos tipo_de_variable y tipo_devuelto, han de ser tipos simples Java o nombres de otras clases ya
definidas. Tanto Nombre_De_Clase, como los nombre_de_atributo y nombre_de_mtodo, han de ser
identificadores Java vlidos.
Los atributos
Los datos se encapsulan dentro de una clase declarando variables dentro de las llaves de apertura y cierre de
la declaracin de la clase, variables que se conocen como atributos. Se declaran igual que las variables
locales de un mtodo en concreto.
Por ejemplo, este es un programa que declara una clase MiPunto, con dos atributos enteros llamados x e y.
class MiPunto {
int x, y;
}
Los mtodos
Los mtodos son subrutinas que definen la interfaz de una clase, sus capacidades y comportamiento.
Un mtodo ha de tener por nombre cualquier identificador legal distinto de los ya utilizados por los nombres de
la clase en que est definido. Los mtodos se declaran al mismo nivel que las variables de instancia dentro de
una definicin de clase.
En la declaracin de los mtodos se define el tipo de valor que devuelven y a una lista formal de parmetros
de entrada, de sintaxis tipo identificador separadas por comas. La forma general de una declaracin de
mtodo es:
tipo_devuelto nombre_de_mtodo( lista-formal-de-parmetros ) {
cuerpo_del_mtodo;
}
Por ejemplo el siguiente mtodo devuelve la suma de dos enteros:
int metodoSuma( int paramX, int paramY ) {
return ( paramX + paramY );
}
En el caso de que no se desee devolver ningn valor se deber indicar como tipo la palabra reservada void.
As mismo, si no se desean parmetros, la declaracin del mtodo debera incluir un par de parntesis vacos
(sin void):
void metodoVacio( ) { };
Los mtodos son llamados indicando una instancia individual de la clase, que tendr su propio conjunto nico
de variables de instancia, por lo que los mtodos se pueden referir directamente a ellas.
El mtodo inicia() para establecer valores a las dos variables de instancia sera el siguiente:
void inicia( int paramX, int paramY ) {
x = paramX;

y = paramY;
}

Declaracin de una clase y definicin de objetos.


La programacin orientada a objetos se basa en la programacin de clases; a diferencia de la programacin
estructurada, que est centrada en las funciones.
Una clase es un molde del que luego se pueden crear mltiples objetos, con similares caractersticas.
Una clase es una plantilla (molde), que define atributos (variables) y mtodos (funciones)
La clase define los atributos y mtodos comunes a los objetos de ese tipo, pero luego, cada objeto tendr sus
propios valores y compartirn las mismas funciones.
Debemos crear una clase antes de poder crear objetos (instancias) de esa clase. Al crear un objeto de una
clase, se dice que se crea una instancia de la clase o un objeto propiamente dicho.
La estructura de una clase es:
class [nombre de la clase] {
[atributos o variables de la clase]
[mtodos o funciones de la clase]
[main]
}
Problema 1:
Confeccionar una clase que permita carga el nombre y la edad de una persona. Mostrar los datos cargados.
Imprimir un mensaje si es mayor de edad (edad>=18)
Programa:
import java.util.Scanner;
public class Persona {
private Scanner teclado;
private String nombre;
private int edad;
public void inicializar() {
teclado=new Scanner(System.in);
System.out.print("Ingrese nombre:");
nombre=teclado.next();
System.out.print("Ingrese edad:");
edad=teclado.nextInt();
}
public void imprimir() {
System.out.println("Nombre:"+nombre);
System.out.println("Edad:"+edad);
}
public void esMayorEdad() {
if (edad>=18) {
System.out.print(nombre+" es mayor de edad.");
} else {
System.out.print(nombre+" no es mayor de edad.");
}
}
public static void main(String[] ar) {

Persona persona1;
persona1=new Persona();
persona1.inicializar();
persona1.imprimir();
persona1.esMayorEdad();
}
}
El nombre de la clase debe hacer referencia al concepto (en este caso la hemos llamado Persona):
public class Persona {
Los atributos los definimos dentro de la clase pero fuera de la main:
private Scanner teclado;
private String nombre;
private int edad;
Veremos ms adelante que un atributo es normalmente definido con la clusula private (con esto no
permitimos el acceso al atributo desde otras clases)
A los atributos se tiene acceso desde cualquier funcin o mtodo de la clase (salvo la main)
Luego de definir los atributos de la clase debemos declarar los mtodos o funciones de la clase. La sintaxis es
parecida a la main (sin la clusula static):
public void inicializar() {
teclado=new Scanner(System.in);
System.out.print("Ingrese nombre:");
nombre=teclado.next();
System.out.print("Ingrese edad:");
edad=teclado.nextInt();
}
En el mtodo inicializar (que ser el primero que deberemos llamar desde la main) creamos el objeto de la
clase Scanner y cargamos por teclado los atributos nombre y edad. Como podemos ver el mtodo inicializar
puede hacer acceso a los tres atributos de la clase Persona.
El segundo mtodo tiene por objetivo imprimir el contenido de los atributos nombre y edad (los datos de los
atributos se cargaron al ejecutarse previamente el mtodo inicializar:
public void imprimir() {
System.out.println("Nombre:"+nombre);
System.out.println("Edad:"+edad);
}
El tercer mtodo tiene por objetivo mostrar un mensaje si la persona es mayor o no de edad:
public void esMayorEdad() {
if (edad>=18) {
System.out.print(nombre+" es mayor de edad.");
} else {
System.out.print(nombre+" no es mayor de edad.");
}
}
Por ltimo en la main declaramos un objeto de la clase Persona y llamamos a los mtodos en un orden
adecuado:
public static void main(String[] ar) {
Persona persona1;
persona1=new Persona();
persona1.inicializar();
persona1.imprimir();
persona1.esMayorEdad();
}
Persona persona1; //Declaracin del objeto
persona1=new Persona(); //Creacin del objeto
persona1.inicializar(); //Llamada de un mtodo
Problema 2:

Desarrollar un programa que cargue los lados de un tringulo e implemente los siguientes mtodos: inicializar
los atributos, imprimir el valor del lado mayor y otro mtodo que muestre si es equiltero o no.
Programa:
import java.util.Scanner;
public class Triangulo {
private Scanner teclado;
private int lado1,lado2,lado3;
public void inicializar() {
teclado=new Scanner(System.in);
System.out.print("Medida lado 1:");
lado1=teclado.nextInt();
System.out.print("Medida lado 2:");
lado2=teclado.nextInt();
System.out.print("Medida lado 3:");
lado3=teclado.nextInt();
}
public void ladoMayor() {
System.out.print("Lado mayor:");
if (lado1>lado2 && lado1>lado3) {
System.out.println(lado1);
} else {
if (lado2>lado3) {
System.out.println(lado2);
} else {
System.out.println(lado3);
}
}
}
public void esEquilatero() {
if (lado1==lado2 && lado1==lado3) {
System.out.print("Es un tringulo equiltero");
} else {
System.out.print("No es un tringulo equiltero");
}
}
public static void main(String []ar) {
Triangulo triangulo1=new Triangulo();
triangulo1.inicializar();
triangulo1.ladoMayor();
triangulo1.esEquilatero();
}
}
Todos los problemas que requieran la entrada de datos por teclado debemos definir un atributo de la clase
Scanner:
private Scanner teclado;
Este problema requiere definir tres atributos de tipo entero donde almacenamos los valores de los lados del
tringulo:
private int lado1,lado2,lado3;
El primer mtodo que deber llamarse desde la main es el inicializar donde creamos el objeto de la clase
Scanner y cargamos los tres atributos por teclado:
public void inicializar() {
teclado=new Scanner(System.in);

System.out.print("Medida lado 1:");


lado1=teclado.nextInt();
System.out.print("Medida lado 2:");
lado2=teclado.nextInt();
System.out.print("Medida lado 3:");
lado3=teclado.nextInt();
}
El mtodo ladoMayor muestra el valor mayor de los tres enteros ingresados:
public void ladoMayor() {
System.out.print("Lado mayor:");
if (lado1>lado2 && lado1>lado3) {
System.out.println(lado1);
} else {
if (lado2>lado3) {
System.out.println(lado2);
} else {
System.out.println(lado3);
}
}
}
Como podemos observar cuando un problema se vuelve ms complejo es ms fcil y ordenado separar los
distintos algoritmos en varios mtodos y no codificar todo en la main.
El ltimo mtodo de esta clase verifica si los tres enteros ingresados son iguales:
public void esEquilatero() {
if (lado1==lado2 && lado1==lado3) {
System.out.print("Es un tringulo equiltero");
} else {
System.out.print("No es un tringulo equiltero");
}
}
En la main creamos un objeto de la clase Triangulo y llamamos los mtodos respectivos:
public static void main(String []ar) {
Triangulo triangulo1=new Triangulo();
triangulo1.inicializar();
triangulo1.ladoMayor();
triangulo1.esEquilatero();
}

TECNOLOGIA
1er bimestre
Qu es Automatizacin?
La automatizacin es un tema clave en nuestra ciencia y tecnologa actuales, dedicando innumerables
esfuerzos, recursos y tiempo en nuestra sociedad.
Hoy en da los sistemas de informacin conforman un marco de dependencia tecnolgica determinante en
procura de resolver innumerables problemas a mediano y a largo plazo, dejando de lado el corto plazo por
considerarlo imposible de concretar.
Los altos costos representados por los servicios informticos en empresas e instituciones dificultan la labor
operacional que juega la creatividad del ser humano, que como sabemos siempre est intentando mejorar su
calidad laboral a diario para poder liberarse de la incesante rutina a la que se ve sometido. La inmutabilidad
del costoso software de gestin no hace ms que agravar su situacin, haciendo que el material humano
encargado de su uso se conforme con los escasos perodos de modificacin existentes, realizadas por
profesionales idneos, pero ajenos al devenir cotidiano del usuario final.
TIPOS DE PUESTOS
1. Descriptor de puesto Analista Programador
Debe crear y ejecutar las aplicaciones de los equipos; trasladando la requisicin de los usuarios en una
herramienta informtica til y de fcil acceso. Analiza y depura la transferencia de la informacin. Es el
encargado de manejar los controles de requerimiento de trabajo de acuerdo a las normas y procedimientos
establecidos por la oficina de IT. Desarrolla e implementa pruebas para asegurar el correcto funcionamiento
de los sistemas informticos.
2. Descriptor de puesto Analista de Sistemas
Asiste a usuarios para resolver problemas en el sistema, da mantenimiento y coordina la actualizacin de los
mismos. Esta orientado al servicio del cliente y coordina la mejora de los procesos con el departamento de
tecnologa. Se encarga de analizar un programa desde el punto de vista de un usuario. Debe conocer las
necesidades de sus clientes y saber con qu fin se ha creado el programa, qu tipo de usuarios tendrn
acceso para elaborar un sistema ms amigable.
3. Descriptor de puesto Asistente de Sistemas
Persona encargada de brindar soporte tcnico y apoyar las diferentes actividades del departamento de IT y
Desarrollo. Debe tener conocimientos tcnicos en mantenimiento y reparacin de computadoras. Manejo de
equipo perifrico, instalacin y configuracin de Software y hardware. Es necesario que sepa del manejo legal
adecuado para cada programa que instala. Es responsable de apoyar y velar por el buen funcionamiento de
las instalaciones de red.
4. Descriptor de puesto Auditor de Sistemas
Se encarga de velar por que los programas creados cumplan con los requisitos solicitados. Verifica que
realmente sean eficientes para la funcin que se han creado. Incrementa la satisfaccin de los usuarios en
los sistemas computarizados Asegurar la honestidad y privacidad de la informacin a travs de propuestas y
mejoras en los procedimientos.
5. Descriptor de puesto Director de Sistemas
Responsable de la automatizacin de funciones y de proveer informacin a todas las reas. Recomienda
mejoras en el equipo de acuerdo a los requerimientos de la compaa. Tiene capacidades administrativas y
tcnicas.
6. Descriptor de puesto Gerente de Informtica

Administrar la tecnologa e informacin de una empresa y optimizar los sistemas computacionales son las
funciones principales de esta gerencia. Ejecuta de manera sencilla y segura los sistemas informticos,
supervisando el soporte tcnico y asegurando la integridad de la informacin.
7. Descriptor de puesto Jefe de Informtica
Maneja los sistemas de informacin de acuerdo a las necesidades de la empresa, organizacin o institucin.
Inspecciona los proyectos y planes a desarrollar por el departamento de tecnologa en coordinacin con la
gerencia. Vigila el progreso y perfeccionamiento de los sistemas. Compara los estndares actuales del
departamento con las normas establecidas por la empresa. Vela por la legalidad y eficiencia de los programas
que maneja la organizacin.
8. Descriptor de puesto Operador de Sistemas
Realiza labores menores de administracin y soporte de plataformas. Recibe las requisiciones de servicio de
los clientes y se relaciona de forma directa con ellos. Reporta y soluciona incidentes. Asiste a reuniones con
la gerencia del departamento de informtica. Se encarga de verificar cada aspecto importante de la plataforma
administrativa de sistemas. Debe conocer conceptos de Hardware, servidor de Windows o Linux, entre otros.
Planifica, ejecuta y monitorea el mantenimiento preventivo o correctivo de los sistemas.
9. Descriptor de puesto Programador
Disear y elaborar los sistemas a desarrollar por medio de una metodologa estndar definida. Capacita
continuamente al personal en el uso de las aplicaciones y herramientas de anlisis implementadas. Es quien
modifica los sistemas, documentando las fases del desarrollo.
10. Descriptor de puesto Soporte Tcnico
Configura estaciones de trabajo e instala equipos antiguos o de reciente adquisicin. Verifica nuevos puntos
de conexin a la red, ejecuta un plan de mantenimiento preventivo y correctivo, asistiendo tanto en hardware
como software. En general la funcin principal de esta plaza es brindar soluciones creativas a los problemas
del usuario con el objetivo de lograr un funcionamiento eficiente del sistema.

11. Descriptor de puesto Tcnico en Internet


Se encarga de dar un empuje a la publicidad de la empresa por medio del Internet. Tiene la capacidad para
atender los problemas de los usuarios y clientes ya sea por va telefnica o presencialmente. Utiliza
herramientas y procesos adecuados, asegurando un servicio y soluciones de calidad.
12. Descriptor de puesto Web Master
La persona que se desempee en esta posicin debe asumir la implementacin, el mantenimiento y el
desarrollo de la Web global que funciona dentro de la organizacin. Tiene que disear, publicar y crear nuevos
sitios webs donde de a conocer el funcionamiento y todos los aspectos relevantes de la empresa.
Qu es sistematizar?
Es el proceso por el cual se pretende ordenar una serie de elementos, pasos, etapas, etc., con el fin de
otorgar jerarquas a los diferentes elementos.
Qu es un Sistema?
Un sistema es aquel que apoya a los trabajadores de datos, quienes por lo general no generan conocimientos

nuevos, sino ms bien analizan la informacin con el propsito de transformar los datos o manipularlos de
alguna manera antes de compartirlos o, en su caso distribuirlos formalmente con el resto de la organizacin
Mtodo de los procedimientos de oficina
- Recopilacin de la informacin sobre los modelos y procedimientos de oficina existentes.
- Anlisis de la informacin recopilada.
- Propuesta de nuevos modelos y procedimientos de oficina.
Explicando cada paso podemos ver que:
- La informacin a recopilar es de carcter general y particular. La general incluye las condiciones generales
del trabajo (adecuacin de locales, limpieza y condiciones higinicas, iluminacin y ventilacin, color y ruido)
pues todos influyen en la mejora de los mtodos de trabajo.
Recorrido en profundidad-primero Etapas de sistematizacin
rbol binario
Preorden: (raz, izquierdo, derecho). Para recorrer un rbol binario no vaco en preorden, hay que
realizar las siguientes operaciones recursivamente en cada nodo, comenzando con el nodo de
raz:
Visite la raz
Atraviese el sub-rbol izquierdo
Atraviese el sub-rbol derecho
Inorden: (izquierdo, raz, derecho). Para recorrer un rbol binario no vaco en inorden (simtrico), hay que
realizar las siguientes operaciones recursivamente en cada nodo:
Atraviese el sub-rbol izquierdo
Visite la raz
Atraviese el sub-rbol derecho
Postorden: (izquierdo, derecho, raz). Para recorrer un rbol binario no vaco en postorden, hay que realizar
las siguientes operaciones recursivamente en cada nodo:
Atraviese el sub-rbol izquierdo
Atraviese el sub-rbol derecho
Estructuras de Datos
Tipos de datos
Tipos intrnsecos
Hay 5 tipos de datos predefinidos llamados intrnsecos para constantes y variables, cada uno de estos tipos
de datos intrnsecos admiten varias longitudes de memoria, dependiendo de la anchura de la palabra del
computador, conocidas como clases.
Variables
def: Una variable es un nombre asociado a un elemento de datos que est situado en posiciones contiguas
de la memoria principal, y su valor puede cambiar durante la ejecucin de un programa.
Toda variable pertenece a un tipo de dato concreto. En la declaracin de una variable se debe indicar el tipo al
que pertenece. As tendremos variables enteras, reales, booleanas, etc. Por otro lado, distinguimos tres partes
fundamentales en la vida de una variable:
Declaracin
Iniciacin
Utilizacin

Declaracin de variables
Esta es la primera fase en la vida de cualquier variable. La declaracin se realiza en la seccin que comienza
con la palabra var. La forma de declarar variables es muy sencilla. Esta seccin debe comenzar con la
palabra reservada var, seguida de una lista de parejas lista_de_variables=tipo_al_que_pertenecen. Cada par
debe ir seguido por un punto y coma. La lista_de_variables es uno o ms nombres de variables separados por
comas:

Tipos definidos por el usuario


Que es un tipo de dato definido por el usuario (DDU)?
Es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase de
datos sobre los que se va a procesar.
Para que se pueden utilizar los DDU
Puede representar un conjunto de enteros de 32 bits cuyo rango va desde el -2.147.483.648 al 2.147.483.647,
as como las operaciones que se pueden realizar con los enteros, como la suma, resta y multiplicacin.
Como se conforma un DDU
Existen dos diferentes tipos: enumerados y subrango. Tipos enumerados. Los tipos enumerados se componen
de una lista de identificadores encerrados entre parntesis y separados por comas.
Caractersticas de un DDU
Permite la creacin de tipos de datos abstractos definidos por el usuario: Estructuras Uniones, Listas, Etc.
DECLARACION DE LOS ARREGLOS
Declaracin de un arreglo:
int A[]; // A es un arreglo de enteros
int A[10]; // error, el tamao no va aqu
int[] A; // A es un arreglo de enteros
int A,B[]; // A es un entero, B un arreglo
int[] A,B; // A y B son arreglos
String S[]; // S es un arreglo de strings
S[1]="" // error, el arreglo no ha sido
// creado
Creacin de un arreglo
int A[]= new int[10]; // 10 enteros
Subindicacin de un arreglo:
A[0], A[1], ..., A[9] // correcto
A[10]
// error, ndice fuera
// de rango
Modificacin de un arreglo:
A[3]= 8;
Tamao de un arreglo:
A.length // correcto
A.length() // error, sin parntesis
Inicializacin de un arreglo:
for (int i=0; i<A.length; i++)
A[i]= i;
Asignacin de punteros a arreglos
int B[];
B= A;
// A y B son el mismo arreglo
if (A==B) // Comparacin de punteros
// true!
...
A[0]= 10;
B[0]
// tambin 10
Copia de un arreglo:
B= (int[])A.clone();

ASIGNACION DE DATOS
La asignacin es colocar un nuevo contenido en la variable destruyendo el valor anterior
Si se quiere asignar valores a todos los componentes del vector, se debe recurrir a las estructuras repetitivas.
Por ejemplo, si se desea poner en cero al vector V(30) la solucin se muestra en la siguiente pantalla.

15 V(20) = 15

asigna el valor 15 al elemento

20 del vector V

COPIAS
Muchas veces nos vamos a encontrar ante la disyuntiva de tener que copiar los elementos de Un arreglo en
otros. Normalmente ser para manipular el contenido del mismo guardando en uno de los arreglos los datos
originales.
Asumida ya la situacin, lo primero que se nos ocurrira, independientemente del lenguaje en el que nos
encontremos, ser el montar un algoritmo que recorriendo el primer arreglo vaya copiando dichos elementos
en el segundo.
Arreglo de una dimensin

ARREGLOS DE DOS DIMENSIONES


Los arreglos de dos dimensiones o matrices son como tener ms de un arreglo unidimensional o vector que
se manejen de forma paralela, digo el primer valor del vector 1 con el primer valor del vector 2 y as con los
dems.
Arreglos Bsquedas
El mtodo de bsqueda secuencial es de los mas fciles que podemos utilizar para buscar datos(es
aconsejable utilizarlo cuando el vector no es de gran tamao), ya que no requiere que el vector este ordenado,
el mtodo consiste en recorrer el vector de manera secuencial hasta encontrar el dato a buscar.

Las operaciones en arreglos


Pueden clasificarse de la siguiente forma:
Lectura
Escritura
Asignacin
Actualizacin
a) LECTURA
Este proceso consiste en leer un dato de un arreglo y asignar un valor a cada uno de sus componentes.
b) ESCRITURA
Consiste en asignarle un valor a cada elemento del arreglo.
c) ASIGNACION
No es posible asignar directamente un valor a todo el arreglo, por lo que se realiza de la manera siguiente:
para i desde 1 hasta N haz
arreglo[i]<--algn_valor
d) ACTUALIZACION
Dentro de esta operacin se encuentran las operaciones de eliminar, insertar y modificar datos. Para realizar
este tipo de operaciones se debe tomar en cuenta si el arreglo est o no ordenado.
Estructuras de repeticin
Mientras: ejecuta un bloque de acciones mientras que una condicin dada se cumpla, es decir, cuando la
condicin se evala verdadera. La condicin es evaluada antes de ejecutar el bloque de acciones y si la
condicin no se cumple, el bloque no se ejecuta. De esta manera es que el nmero de repeticiones del bloque
de acciones sea cero, pues, si la condicin de entrada se evala falsa, el bloque no ser ejecutado alguna
vez.
Hacer Mientras: es similar al ciclo mientras, la diferencia radica en el momento de evaluacin de la condicin.
En el ciclo hacer-mientras la condicin se evala antes de la ejecucin del bloque, en el ciclo HACERMIENTRAS la condicin se evala despus de ejecutar el bloque de acciones, por lo tanto, el bloque se
ejecuta por lo menos una vez. El bloque se ejecuta nuevamente si la condicin se evala a verdadero y no se
ejecuta ms si se evala falso.
Para: permite la ejecucin repetida de un conjunto de acciones. El nmero de veces que el bloque es
ejecutado est determinado por los valores que puede tomar una variable contadora (de tipo entero), en un
rango definido por un lmite inferior (inclusive) y un lmite superior (inclusive). Despus de ejecutar el bloque
de acciones en cada iteracin la variable contadora es incrementada en uno (1) automticamente y en el
momento en que la variable sobrepasa el lmite superior el ciclo termina.
Sintaxis de operadores lgicos
And: La operatoria es como sigue: El primer operando (de la izquierda) es convertido a bool. Para ello, si es
una expresin, se evala para obtener el resultado (esta computacin puede tener ciertos efectos laterales). A
continuacin, el valor obtenido es convertido a bool cierto/falso siguiendo las reglas de conversin estndar. Si
el resultado es false, el proceso se detiene y este es el resultado, sin que en este caso sea necesario evaluar
la expresin de la derecha (recurdese que en el diseo de C++ prima la velocidad).

Or:Este operador sigue un funcionamiento anlogo al anterior. El primer operando (izquierdo) es convertido
a bool. Para ello, si es una expresin, se evala para obtener el resultado (esta computacin puede tener
ciertos efectos laterales). A continuacin el valor obtenido es convertido a bool cierto/falso siguiendo las reglas
de conversin estndar. Si el resultado es true, el proceso se detiene y este es el resultado, sin que en este
caso sea necesario evaluar la expresin de la derecha (recurdese que en el diseo de C++ prima la
velocidad).
Not: El operando expresion-cast (que puede ser una expresin que se evala a un resultado es convertido a
tipo bool, con lo que solo puede ser uno de los valores cierto/falso. A continuacin el operador cambia su
valor: Si es cierto es convertido a falso y viceversa.
COMMUNITY MANAGER.
Un Community Manager o Social Media Manager es la persona encargada de gestionar, construir y moderar
comunidades en torno a una marca en Internet. Esta profesin se perfila dentro de las empresas que
descubren que las conversaciones sociales en lnea, son cada vez ms relevantes y que necesitan un
profesional que conozca sobre comunicacin en lnea, haciendo uso de los nuevos canales de comunicacin
a travs de herramientas sociales. En la actualidad muchas empresas buscan un Community Manager con un
determinado perfil, algunas han cometido errores en su bsqueda, quizs por falta de conocimiento del mismo
medio Es aquella persona encargada o responsable de sostener, acrecentar y, en cierta forma, defender las
relaciones de la empresa con sus clientes en el mbito digital, gracias al conocimiento de las necesidades y
los planteamientos estratgicos de la organizacin y los intereses de los clientes. Una persona que conoce los
objetivos y actuar en consecuencia para conseguirlos.
Funciones y responsabilidades del Community Manager
Funciones
Se habla mucho de los community managers pero, cules son realmente sus funciones? Lo cierto es que
sus tareas pueden variar mucho de una empresa a otra, pero en una situacin ideal, el community manager
debera asumir estas 5 responsabilidades que desgrana a continuacin HubSpot:
1. Crear y gestionar perfiles
Un community manager se encarga de crear y de gestionar perfiles en nombre de la empresa para la que
trabaja, procurando adems que estos tengan uniformidad y que reflejen verdaderamente el espritu de la
marca.
2. Escuchar el ruido social
Un buen comunity manager escucha el ruido generado por la marca en las redes sociales y trata de
responder a preguntas como las siguientes: de qu habla la gente?, quines son los rivales de la marca en
el universo 2.0?, qu interesa a los fans y seguidores de la compaa?, qu contenidos estn ms
predispuestos a compartir con otros usuarios?, conocen realmente la marca?, quines son los principales
influencers con los que la empresa debera desarrollar una relacin a largo plazo? Asimismo, el community
manager est obligado a investigar sobre las diversas herramientas de automatizacin disponibles en el
mercado y estar al tanto de la actualidad generada por la tecnologa, el marketing y la industria de la marca
para la que trabaja.
3. Hacer crecer la comunidad
Los community managers deben hacer crecer las comunidades para la que trabajan interactuando todos los
das con sus miembros tanto en plataformas online (redes sociales, blogs y foros) como en platformas offline
(eventos, conferencias y encuentros). Al mismo tiempo, deben preocuparse de publicar actualizaciones de
estado, posts y tweets en los que la calidad sea siempre la principal sea de identidad del contenido. Su labor
es incrementar la cantidad y la calidad de la comunidad de usuarios de la marca en las redes sociales. Mil
amigos en Facebook procedentes de la industria equivocada son definitivamente menos valiosos que 20
amigos influyentes con las conexiones adecuadas en esta red social.
4. Distribuir contenido
El comunity manager promociona el contenido generado por la marca en la Web Social con el objetivo de
conectar con el pblico objetivo de la compaa y hacer que sta gane nuevos clientes. Para conseguirlo, su
principal arma son los dilogos, no los monlogos.
5. Sumarse a la conversacin
Esta labor implica responder a preguntas y comentarios online de manera inmediata, poner rostro a la marca
en las plataformas sociales y entablar relaciones con los clientes potenciales de la compaa. El community
manager es la voz de la empresa en las redes sociales, pero debe ser capaz tambin de trasladar al cliente su

propia personalidad individual. De lo contrario, su voz sera percibida por el consumidor como impostada y
artificial.
Principales responsabilidades de todo Community Manager o CM.
Monitoreo
Respuesta
Difusin
Branding
Anlisis
A su vez, estas responsabilidades implican que da a da el Community Manager asuma los siguientes
roles para cumplir con los objetivos pautados:
Detective
Su funcin de monitoreo, implica que a diario investigue por fuera de su propia comunidad, sobre lo que se
est diciendo acerca de la marca o sus productos. Adems de que acte, ya sea respondiendo en nombre de
la empresa o poniendo en alerta a sus directivos.
Terapeuta
Dentro de su propia comunidad, los CMs sacan a relucir a diario su empata y capacidad de respuesta ante
reclamos y conflictos relativos a tus productos y servicios, brindando soluciones y evitando que el malestar se
propague hacia otros usuarios y afecte tu imagen de marca.
Domador
Las redes sociales se prestan para que algunos pcaros quieran dejar mal parada a tu empresa en busca de
algn beneficio o por el slo hecho de molestar. Estamos hablando de los oportunistas y los trolls. En tal
sentido, otro de los roles del Community Manager ser detectarlos, mantenerlos a raya y el ms difcil: poder
evangelizarlos.
Fan Nmero 1
El Community Manager es la cara visible de tu marca en las redes, por lo cual debermantener su nivel de
entusiasmo al 100% a la hora de compartir contenidos y promociones, estimulando constantemente
el engagement de la comunidad.
Analista
Otros de los roles cotidianos del CM implica analizar los resultados que van generando los diferentes contenidos
y acciones de promocin publicadas en las redes. A partir de estas mtricas, deber generar reportes y sugerir
acciones e ideas al Social Media Manager que procuren alcanzar los objetivos previstos.
Diplomtico
Situaciones tales como una falla en el servicio o un problema en la distribucin de tu producto, harn que tu
Community Manager requiera de toda su habilidad para comunicar esta situacin y evitar que un contratiempo
se convierta en una crisis.
Redactor
Un Community Manager escribe y mucho. Publicaciones en el muro, posts en blogs, tweets, etc. Por lo tanto,
deber mantener su mente siempre alerta y abierta para poderser creativo y evitar la repeticin. Y tener sus
dedos en buena forma!

Herramientas para facilitar el trabajo del Community Manager


Lecturas para Community Managers
Una lista actualizada de artculos sobre las funciones, responsabilidades y hbilidades que debe desarrollar
todo gestor de comunidades.
4 administradores sociales
Descubre algunas herramientas gratuitas que te permiten la administracin de diversos perfiles en redes
sociales y optimiza tu tiempo como Community Manager.
Hootsuite: administrar mltiples fan page en Facebook: Es un administrador de redes sociales, cuenta con la
opcin de ingresar varios perfiles de diferentes redes sociales como: Twitter, Facebook, LinkedIn, WordPress,
My Space y Foursquare. Sus opciones permiten realizar todo un monitoreo de rede sociales, sacar
estadsticas, se integra con Analytics, menciones de la marca o persona y cuenta con una versin gratuita
(limitada) y otra de pago (ilimitada $5.99 al mes).

Hellotxt: actualiza tu perfil desde dispositivos mviles Esta es otra opcin de administracin de redes sociales, se

integra con Web, funciona en dispositivos mviles, permite el acceso a correo, chat y cuenta con una
aplicacin para instalar en la computadora. Adems, su servicios es gratuito y cuenta con un API y
documentacin por si te interesa seguir desarrollando.
Ping.fm: actualiza desde el GTalk Es una de las opciones de administracin de redes sociales ms populares en
el medio, al igual que las anteriores permite agregar todas las redes sociales a su servicio, funciona para
dispositivos mviles, administra correos y te permite chatear
Kazle: administra ms de 5 perfiles sociales Es una plataforma que te permite administrar las mltiples redes
sociales, su panel es muy fcil de utilizar e instalar. Es un servicio gratuito y al igual que las opciones
anteriores facilita la actualizacin de informacin de las cuentas sociales de una empresa, marca o persona.
La comunicacin a travs de Internet se vuelve ms compleja para las empresas y se requiere de un
administrador de estos diversos canales sociales de comunicacin. Por ello, si tu eres el Community
Manager de una empresa, marca o servicio te recomiendo que aparte de realizar lecturas, revises
estas herramientas que te permiten administrar los perfiles sociales.

Herramientas selectas para Community Manager:

una serie de herramientas que te ayudarn en el monitoreo, anlisis, gestin, optimizacin del tiempo y
administracin de informacin.
Monitoreo de contenido
Empecemos con las herramientas que te permiten filtrar, buscar informacin general y especfica. Adems, a
travs de ellas puedes suscribirte, corroborar datos y realizar anlisis de informacin:
Google News: es uno de los ms populares servicio en lnea para el monitoreo de noticias personalizadas, por
temtica, pas, idioma y alertas.
Wikio: un servicio en espaol que te permite la bsqueda de blogs temticos y medios.
Boardreader: un servicio que te permite buscar informacin especfica en: foros, blogs, redes sociales y ms.
Alexa: uno de los servicio ms populares para realizar el anlisis de sitios, blogs y contenido. Con tiles
estadsticas para evaluar sitios.
Alianzo: un servicio disponible en 3 idiomas, que te permite buscar informacin de blogs, adems te
proporciona un ranking en blogs y redes sociales.
Brandfo: con este servicio podrs revisar la reputacin de una persona, empresa o marca en lnea. Te permite
hacer una bsqueda de todo lo que se ha dicho o escrito de manera especfica.
Anlisis en redes sociales e influencia de marca
El monitoreo y anlisis del contenido que se maneja en las redes sociales es la labor ms compleja del
Comunity Manager, el cruce de datos y sacar reportes. Revisa estar herramientas que te facilitarn la tarea.
TwitterGrader: una opcin que permite medir el nivel de influencia que tiene un usuario en Twitter, con tiles
datos y parmetros de resultados.
Trendistic: te permite analizar la frecuencia con la que se ha mencionado una marca en los medios digitales,
tambin puedes ingresar el nombre o URL.
Google Trends: realiza la bsqueda de informacin a travs de grficas con un parmetro de tiempo y
frecuencia.
BlogPulse: toma el pulso de tu blog, un buscador que te permite revisar los enlaces a tu blog, rankings y
bsquedas en otros blogs. Con opciones bsicas y avanzadas.
Statbrain: ofrece un mtodo diferentes de anlisis de datos de un blog o sitio web. Utiliza el nmero de visitas y
el Ranking de Alexa como referencias..
Administracin de contenido y productividad
Pasar tanto tiempo en lnea puede hacer que nuestro trabajo se estanque, mantener actualizados los perfiles
y administrar la comunicacin en lnea puede ser abrumado. Aprende a utilizar herramientas que permitan
optimizar tu tiempo y te hagan productivo.
Gmail Priority Inbox: una de las propuestas de Gmail para dar prioridad a tus correos a travs de una algoritmo.
ActiveInbox: otra til herramienta que te permite la gestin de tus correos electrnicos en Gmail a travs de un
plugin en tu navegador.
AwayFind: gestiona tus correos, se encuentra en beta y es gratuito.

Administradores de redes sociales: una serie de herramientas que te permiten la gestin de varias cuentas

sociales de personas, productos, servicios o marcas.


Evernote: la aplicacin ms popular para realizar recordatorios, una herramienta que se caracteriza por su
conectividad con dispositivos mviles y aplicaciones.
Ofimtica: no dupliques contenido, revisa estas opciones en lnea para la administracin de tus documentos
digitales.
Google en Vanguardia
La condicin innovadora, la figuracin capaz de asumir globalmente en el lenguaje de las formas
arquitectnicas las diferentes novedades tcnicas que puedan producirse y las nuevas ideas de organizacin
tipolgica que la vanguardia ensaye, constituye el modo de operar propio de los grupos de vanguardia.
2004: llega Gmail, el correo de Google.

El 15 de abril de 2004 Google lanza la versin de prueba de su servicio de correo electrnico, Gmail. Poco a
poco se van aadiendo otras funciones comoGoogle Talk, Google Docs (que ahora se llama Google Drive)
oGoogle Calendar. Ocho aos despus, a finales de 2012, un estudio de la consultara ComScore constata que
Gmail es el servidor de correo electrnico ms usado del mundo con 282 millones de usuarios, por delante de
otros como Hotmail, Outlook o Yahoo! Mail. (Foto: Wikipedia)
4 En 2005 Google compra Android

Android es un sistema operativo para smartphones. Google lo compra en 2005, aunque tarda unos aos en
salir al mercado. El primer telfono Android fue el HTC Dream, que se puso a la venta en octubre de 2008.
Esto supone el inicio de la competencia con otros dispositivos como iPhone o Blacberry.
5 y en 2006 YouTube.

YouTube es una plataforma online de vdeos. La gente puede subir sus grabaciones y al mismo tiempo ver
las de usuarios de todo el mundo. Fue creada por un grupo de tres particulares en 2005, y en 2006 Google la
compra.
6 2008: llega Google Chrome.

De buscador a navegador. En septiembre de 2008 Google lanzaGoogle Chrome, un navegador. Presenta un


diseo limpio y sencillo y funciona con mucha rapidez. Pronto se convierte en el competidor de grandes
navegadores como Internet Explorer, Mozilla Firefoz o Safari.
7 2011: Google estrena la funcin autocompletado

Escribe lo que quieres encontrar y haz clic en buscar. Este ha sido siempre el funcionamiento bsico de
Google, pero en 2011 esto cambi. Aadi la funcin autocompletar, que te sugiere posibles bsquedas a
medida que ests escribiendo en la caja de texto. El buscador sigue varios criterios a la hora de proponerte
cadenas de palabras, como por ejemplo tu historial o las bsquedas ms populares.
8 y Google+ tambin.

El 28 de junio de 2011 Google se convierte en red social. Esta es la fecha en la que nace Google+, que
pretende competir de forma directa con Facebook. La plataforma presenta un diseo innovador. Los
contactosse agrupan en crculos que se clasifican categoras: amigos, familia, conocidos, etc. Otras funciones
atractivas son la posibilidad de crear gifs animados o incluso crearcomunidades temticas.
Dominios de alto nivel
Los dominios de alto nivel genricos tienen tres o ms letras y su organizacin y gestin ha sido modificada
muy recientemente.
Desde el comienzo del TCP/IP hasta el ao 2000 hubo slo siete dominios genricos de alto nivel:
Actualmente
gestionados por

Primeros dominios genricos de alto nivel


.com

para empresas

.net

para grandes redes

.org

para organizaciones sin fines de lucro

.edu

para instituciones educativas acreditadas en USA

Educause

.gov

para el gobierno USA

US General Services Administration

.mil

para las fuerzas armadas de USA

US DoD Network Information Center

.int

para organizaciones internacionales

IANA .int Domain Registry

VeriSign Global Registry Services

Dominios genricos de reciente creacin

Actualmente
gestionados por

.aero

para la industria de transporte aero

SITA

.biz

para empresas en general

NeuLevel, Inc.

.coop

para empresas cooperativas

Dot Cooperation LLC.

.info

sin orientacin especfica

Afilias Limited.

.museum

para museos

Museum Domain Management Association.

.name

para individuos

Global Name Registry

Robotica
La robtica es la rama de la ingeniera mecnica, ingeniera elctrica, ingeniera electrnica y ciencias de la
computacin que se ocupa del diseo, construccin, operacin, disposicin estructural, manufactura y aplicacin de
los robots.1 2
La robtica combina diversas disciplinas como son: la mecnica, la electrnica, la informtica, la inteligencia
artificial, la ingeniera de control y la fsica.3 Otras reas importantes en robtica son el lgebra, los autmatas
programables, la animatrnica y las mquinas de estados.
El trmino robot se populariz con el xito de la obra R.U.R. (Robots Universales Rossum), escrita por Karel apek
en 1920. En la traduccin al ingls de dicha obra, la palabra checa robota, que significa trabajos forzados, fue
traducida al ingls como robot.4
4. Generacin.
Robots inteligentes. Son similares a los anteriores, pero adems poseen sensores que envan informacin a la
computadora de control sobre el estado del proceso. Esto permite una toma inteligente de decisiones y el
control del proceso en tiempo real.
5. Hbridos
Corresponden a aquellos de difcil clasificacin, cuya estructura se sita en combinacin con alguna de las
anteriores ya expuestas, bien sea por conjuncin o por yuxtaposicin. Por ejemplo, un dispositivo segmentado
articulado y con ruedas, es al mismo tiempo, uno de los atributos de los Robots mviles y de los Robots
zoomrficos.

Actualidad del software


La capacidad de un software de ser comprendido, aprendido, usado y ser atractivo para el usuario, en
condiciones especficas de uso. En la actualidad, gracias a los avances de la Informtica, el software se
encuentra en diversos campos de la actividad humana, por lo que resulta sumamente necesario que rena
ciertos criterios de calidad para satisfacer en gran medida las necesidades de los usuarios. La expansin del
uso de ordenadores a una gran parte de la sociedad ha hecho que la usabilidad del software adquiera una
gran importancia en el desarrollo de sistemas informticos.
En la actualidad el software se usa, por ejemplo, en:
Aplicaciones para Control de sistemas y automatizacin industrial
Aplicaciones ofimticas
Software educativo
Software empresarial
Bases de datos
Telecomunicaciones (por ejemplo Internet y toda su estructura lgica)
Videojuegos
Software mdico
Software de clculo numrico y simblico.
Macros en Excel
Si utilizas Excel frecuentemente es posible que alguna ocasin te hayas encontrado ejecutando con una
misma serie de acciones un y otra vez. Esas acciones que haces repetidas veces se podran automatizar con
una macro.
Una macro es un conjunto de comandos que se almacena en un lugar especial de Excel de manera que
estn siempre disponibles cunado necesites ejecutar.
Por ejemplo, si todas las maanas creas un reporte de venta y en se reporte siempre das el mismo formato a
los textos, se podra crear una macro para que lo haga automticamente por ti. Las macros se utilizan
principalmente para eliminar la necesidad de repetir los pasos de aquellas tareas que realizas una y otra vez.

Programacin (Excel Empresarial)


En Microsoft Excel, hay dos lenguajes de programacin de macros: Microsoft Visual Basic para Aplicaciones y
el lenguaje de macros de Microsoft Excel versin 4.0. Microsoft incluye ambos lenguajes para facilitar la
transicin a Visual Basic. Aunque ambos lenguajes ofrece control completo de Microsoft Excel, debe utilizar el
lenguaje de Visual Basic porque es ms flexible y ms eficaz que el lenguaje de macros de Microsoft Excel
versin 4.0. Adems, Visual Basic puede ser el nico lenguaje de programacin ofrecido en futuras versiones
de Microsoft Excel. Con la programacin en Excel, se pueden realizar calculos de gran utilidad y muy
complejos, asi como funciones combinando celdas de filas y columnas.
Ejemplos de programacin con macros:
Desplazarnos a la ltima hoja del libro
Sub ultima_hoja()
Sheets(Sheets.Count).Select
End Sub
Desplazarnos a la primera hoja del libro
Sub primera_hoja()
Sheets(1).Select
End Sub
Copiar el contenido seleccionado en otra hoja

Sub CopiaColumnas()
Dim mirango As Range
Dim col As Range
Dim NuevaHoja As Worksheet
Dim i As Integer
Set mirango = Selection
Worksheets.Add
i=0
For Each col In mirango.Columns
col.Copy ActiveSheet.Range(A1).Offset(, i)
i=i+1
Next col
End Sub

3er Bimestre
Proceso, mtodo y herramientas
Herramientas:
Las Herramienta CASE son herramientas computacionales (software) que estn destinadas a asistir en los
procesos de ciclo de vida de un software, facilitan la produccin del software, varias se basan principalmente
en la idea de un modelo grfico.
Etapas del proceso
La ingeniera de software requiere llevar a cabo numerosas tareas agrupadas en etapas, al conjunto de estas
etapas se le denomina ciclo de vida. Las etapas comunes a casi todos los modelos de ciclo de vida son las
siguientes:
Obtencin de los requisitos
Se debe identificar sobre que se est trabajando, es decir, el tema principal que motiva el inicio del estudio y
creacin del nuevo software o modificacin de uno ya existente. A su vez identificar los recursos que se
tienen, en esto entra el conocer los recursos humanos y materiales que participan en el desarrollo de las
actividades. Es importante entender el contexto del negocio para identificar adecuadamente los requisitos.
Anlisis de requisitos
Extraer los requisitos de un producto software es la primera etapa para crearlo. Durante la fase de anlisis, el
cliente plantea las necesidades que se presenta e intenta explicar lo que debera hacer el software o producto
final para satisfacer dicha necesidad mientras que el desarrollador acta como interrogador, como la persona
que resuelve problemas. Con este anlisis, el ingeniero de sistemas puede elegir la funcin que debe realizar
el software y establecer o indicar cul es la interfaz ms adecuada para el mismo.
Limitaciones
El software tiene la capacidad de emular inteligencia creando un modelo de ciertas caractersticas de la
inteligencia humana pero slo posee funciones predefinidas que abarcan un conjunto de soluciones que en
algunos campos llega a ser limitado.
Especificacin
La especificacin de requisitos describe el comportamiento esperado en el software una vez desarrollado.
Gran parte del xito de un proyecto de software radicar en la identificacin de las necesidades del negocio
(definidas por la alta direccin), as como la interaccin con los usuarios funcionales para la recoleccin,
clasificacin, identificacin, priorizacin y especificacin de los requisitos del software.
Mtodos
Desarrollo de la infraestructura: Esta fase permite el desarrollo y la organizacin de los elementos que
formaran la infraestructura de la aplicacin, con el propsito de finalizar la aplicacin eficientemente.

Adaptacin del paquete: El objetivo principal de esta fase es entender de una manera detallada el
funcionamiento del paquete, esto tiene como finalidad garantizar que el paquete pueda ser utilizado en su
mximo rendimiento, tanto para negocios o recursos. Todos los elementos que componen el paquete son
inspeccionados de manera detallada para evitar errores y entender mejor todas las caractersticas del
paquete.
Desarrollo de unidades de diseo de interactivas: En esta fase se realizan los procedimientos que se
ejecutan por un dilogo usuario-sistema. Los procedimientos de esta fase tienen como objetivo principal:
Establecer especficamente las acciones que debe efectuar la unidad de diseo.
La creacin de componentes para sus procedimientos.
Ejecutar pruebas unitarias y de integracin en la unidad de diseo.
Desarrollo de unidades de diseo batch: En esta fase se utilizan una serie de combinacin de tcnicas,
como diagrama de flujo, diagramas de estructuras, tablas de decisiones, etc. Cualquiera a utilizar ser
beneficioso para plasmar de manera clara y objetiva las especificaciones y que as el programador tenga
mayor comprensin a la hora de programar y probar los programas que le corresponden.

VISIN GENERAL DEL PROCESO DE DESARROLLO DE SOFTWARE


VISIN GENERAL DEL PROCESO DE DESARROLLO DE SOFTWARE
Es proceso es afectado por la creatividad y juicio de las personas involucradas. En el desarrollo de software
hay una serie de desafos adicionales, relativos esencialmente a la naturaleza del producto obtenido. Un
proceso de desarrollo de software tiene como propsito la produccin eficaz y eficiente de un producto
software que rena los requisitos del cliente.
Es actividades requeridas para desarrollar un sistema de software de alta calidad y proporciona el marco de
trabajo desde el cual se puede establecer un plan detallado para el desarrollo del software. Actividades:
Diseo, validacin, evolucin, especificacin.

Proceso de software
La meta de la ingeniera de software es construir productos de software, o mejorar los existentes; en
ingeniera de procesos, la meta es desarrollar o mejorar procesos.
Un proceso de desarrollo de software es un conjunto de personas, estructuras de organizacin, reglas,
polticas, actividades y sus procedimientos, componentes de software, metodologas, y herramientas utilizadas
o creadas especficamente para definir, desarrollar, ofrecer un servicio, innovar y extender un producto de
software.
Un proceso de software efectivo habilita a la organizacin a incrementar su productividad al desarrollar
software:
Permite estandarizar esfuerzos, promover reso, repeticin y consistencia entre proyectos.
Provee la oportunidad de introducir mejores prcticas de la industria.
Permite entender que las herramientas deben ser utilizadas para soportar un proceso.
Establece la base para una mayor consistencia y mejoras futuras.
Un proceso de software mejora los esfuerzos de mantenimiento y soporte:
Define cmo manejar los cambios y liberaciones a sistemas de software existentes.
Define cmo lograr la transicin del software a la operacin, y cmo ejecutar los esfuerzos de operacin y
soporte.
EL MODELO DRA
Es un modelo de proceso de software incremental que resalta un ciclo de desarrollo corto. Es una adaptacin
de "alta velocidad" del modelo de cascada. El proceso de DRA permite que un equipo de desarrollo cree un
sistema completamente funcional dentro de un periodo muy corto de 60 a 90 das.

El desarrollo rpido de aplicaciones o RAD (Rapid Application Development) es un proceso de desarrollo de


software, DRA es una adaptacin de"Alta velocidad" en el que se logra el desarrollo rpido utilizando un
enfoque de construccin basado en componentes. Si se comprenden bien los requisitos y se limita el mbito
del proyecto, el proceso DRA permite al equipo de desarrollo crear un "sistema completamente funcional"
dentro de periodos cortos de tiempo.
Fases
Modelado de Gestin:
El flujo de informacin entre las funciones de gestin se modela de forma que responda a las siguientes
preguntas: Qu informacin conduce el proceso de gestin? Qu informacin se genera? Quin la
genera? A dnde va la informacin? Quin la proceso?..
Modelado de Datos: El flujo de informacin definido como parte de la fase de modelado de gestin se refina
como un conjunto de objetos de datos necesarios para apoyar la empresa. Se definen las caractersticas
(llamadas atributos) de cada uno de los objetos y las relaciones entre estos objetos.
Modelado de Procesos:
Los objetos de datos definidos en la fase de modelado de datos quedan transformados para lograr el flujo de
informacin necesario para implementar una funcin de gestin. Las descripciones del proceso se crean para
aadir, modificar, suprimir, o recuperar un objeto de datos. Es la comunicacin entre los objetos.
Generacin de Aplicaciones:
El DRA asume la utilizacin de tcnicas de cuarta generacin. En lugar de crear software con lenguajes de
programacin de tercera generacin, el proceso DRA trabaja para volver a utilizar componentes de programas
ya existentes (cuando es posible) o a crear componentes reutilizables (cuando sea necesario).
Pruebas de Entrega
Como el proceso DRA enfatiza la reutilizacin, ya se han comprobado muchos de los componentes de los
programas. Esto reduce tiempo de pruebas.
Sin embargo, se deben probar todos los componentes nuevos y se deben ejercitar todas las interfaces a
fondo.

MODELO EVOLUTIVO
Los evolutivos son modelos iterativos, permiten desarrollar versiones cada vez ms completas y complejas,
hasta llegar al objetivo final deseado; incluso evolucionar ms all, durante la fase de operacin. Los modelos
Iterativo Incremental y Espiral (entre otros) son dos de los ms conocidos y utilizados del tipo evolutivo.
La idea detrs de este modelo es el desarrollo de una implantacin del sistema inicial, exponerla a los
comentarios del usuario, refinarla en N versiones hasta que se desarrolle el sistema adecuado. Una ventaja
de este modelo es que se obtiene una rpida realimentacin del usuario, ya que las actividades de
especificacin, desarrollo y pruebas se ejecutan en cada iteracin.
Existen dos tipos de desarrollo evolutivo:


Desarrollo Exploratorio: El objetivo de este enfoque es explorar con el usuario los requisitos hasta llegar
a un sistema final. El desarrollo comienza con las partes que se tiene ms claras. El sistema evoluciona
conforme se aaden nuevas caractersticas propuestas por el usuario.

Enfoque utilizando prototipos: El objetivo es entender los requisitos del usuario y trabajar para mejorar la
calidad de los requisitos. A diferencia del desarrollo exploratorio, se comienza por definir los requisitos que no
estn claros para el usuario y se utiliza un prototipo para experimentar con ellos. El prototipo ayuda a terminar
de definir estos requisitos.
Desarrollo basado en componentes
La ingeniera de software basada en componentes (CBSE), tambin conocida como desarrollo basado en
componentes (CBD), es una rama de la ingeniera de software que enfatiza la separacin de asuntos, por lo que
se refiere a la funcionalidad de amplio rango disponible a travs de un sistema de software dado. Es un
acercamiento basado en la reutilizacin para definir, implementar, y componer componentes de
software dbilmente acoplados en sistemas. Esta prctica persigue un amplio grado de beneficios tanto en el
corto como el largo plazo, para el software en s mismo y para las organizaciones que patrocinan tal software.
Un componente de software individual es un paquete de software, un servicio web, o
un mdulo que encapsula un conjunto de funciones relacionadas (o de datos).
Con respecto a la coordinacin a lo largo del sistema, los componentes se comunican uno con el otro por
medio de interfaces.
Cuando un componente ofrece servicios al resto del sistema, este adopta una interfaz proporcionada que
especifica los servicios que otros componentes pueden utilizar, y cmo pueden hacerlo. Esta interfaz puede
ser vista como una firma del componente - el cliente no necesita saber sobre los funcionamientos internos del
componente (su implementacin) para hacer uso de ella. Este principio resulta en componentes referidos
como encapsulados. Las ilustraciones UML de este artculo representan a las interfaces proporcionadas, con un
smbolo lollipop unido al borde externo del componente.
TECNICAS DE CUARTA GENERACION
Las tcnicas de cuarta generacin son un conjunto muy diverso de mtodos y herramientas que tienen por
objeto el de facilitar el desarrollo del software, facilitan al que desarrolla el software la propiedad de especificar
algunas caractersticas del mismo a alto nivel, mas tarde, la herramienta genera automticamente el cdigo
fuente a partir de esta especificacin.
Los tipos ms comunes de generadores de cdigo cubren uno o varios de los siguientes aspectos:
1.-Acceso a base de datos: utilizando lenguajes de consulta de alto nivel.
Generadores de cdigos: a partir de una especificacin de los requisitos se genera automticamente toda la
aplicacin
2.-Generacin de pantallas: permitiendo disear la pantalla dibujndola directamente, incluyendo adems el
control del cursor y la gestin de los errores de los datos de entrada.
3.-Gestin de entornos grficos.
4.-Generacin de informes.:Como otros paradigmas, T4G comienza con el paso de recoleccin de
requerimientos. En el mejor de los casos el cliente debera describir los requerimientos y stos traducirse
directamente a un prototipo operacional pero en general esto no es as. El cliente puede no estar seguro de lo
que necesita, puede ser ambiguo en la especificacin de hechos que son conocidos y puede ser incapaz o no
desear especificar la informacin en la forma que una herramienta T4G puede construirla, adems las
herramientas actuales T4G no son lo suficientemente sofisticadas para acomodar realmente lenguaje natural y
no lo sern por algn tiempo.

Estructura de datos

En programacin, una estructura de datos es una forma particular de organizar datos en una computadora
para que pueda ser utilizado de manera eficiente.
Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de aplicaciones, y algunos son
altamente especializados para tareas especficas.
Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para
usos tales como grandes bases de datos y servicios de indizacin de Internet. Por lo general, las estructuras
de datos eficientes son clave para disear algoritmos eficientes. Algunos mtodos formales de diseo y
lenguajes de programacin destacan las estructuras de datos, en lugar de los algoritmos, como el factor clave
de organizacin en el diseo de software.
ARBOL BINARIO
Un rbol binario es una estructura de datos en la cual cada nodo puede tener un hijo izquierdo y un hijo
derecho. No pueden tener ms de dos hijos (de ah el nombre "binario"). Si algn hijo tiene como referencia a
null, es decir que no almacena ningn dato, entonces este es llamado un nodo externo. En el caso contrario el
hijo es llamado un nodo interno. Usos comunes de los rboles binarios son los rboles binarios de bsqueda,
los montculos binarios y Codificacin de Huffman.
Un rbol binario es un rbol en el que ningn nodo puede tener ms de dos subrboles. En un rbol binario
cada nodo puede tener cero, uno o dos hijos (subrboles). Se conoce el nodo de la izquierda como hijo
izquierdo y el nodo de la derecha como hijo derecho.
Operaciones bsicas
Una tarea muy comn a realizar con un rbol es ejecutar una determinada operacin con cada uno de los
elementos del rbol. Esta operacin se considera entonces como un parmetro de una tarea ms general que
es la visita de todos los nodos o, como se denomina usualmente, del recorrido del rbol.
Si se considera la tarea como un proceso secuencial, entonces los nodos individuales se visitan en un orden
especfico, y pueden considerarse como organizados segn una estructura lineal. De hecho, se simplifica
considerablemente la descripcin de muchos algoritmos si puede hablarse del proceso del siguiente elemento
en el rbol, segn un cierto orden subyacente.
Hay dos formas bsicas de recorrer un rbol: El recorrido en amplitud y el recorrido en profundidad.
TEORIA DE GRAFOS
En teora de grafos, un rbol es un grafo en el que cualesquiera dos vrtices estn conectados por
exactamente un camino. Un bosque es una unin disjunta de rboles. Un rbol a veces recibe el nombre de
rbol libre.
Un rbol es un grafo simple no dirigido G que satisface:
1.
G es conexo y no tiene ciclos .
2.
G no tiene ciclos y, si se aade alguna arista se forma un ciclo.
3.
G es conexo y si se le quita alguna arista deja de ser conexo.
4.
G es conexo y el grafo completo de 3 vrtices no es un menor de G.
5.
Dos vrtices cualquiera de G estn conectados por un nico camino simple.
Las condiciones anteriores son todas equivalentes, es decir, si se cumple una de ellas otras tambin se
cumplen. Para rboles finitos adems se cumple que: Si un rbol G tiene un nmero finito de vrtices, n,
entonces tiene n 1 aristas.
Clasificacin de rboles Binarios
Existen cuatro tipos de rbol binario:.
A. B. Distinto.
A. B. Similares.
A. B. Equivalentes.
A. B. Completos.
A continuacin se har una breve descripcin de los diferentes tipos de rbol binario as como un ejemplo de
cada uno de ellos.
A. B. DISTINTO
Se dice que dos rboles binarios son distintos cuando sus estructuras son diferentes. Ejemplo:

A. B. SIMILARES
Dos rboles binarios son similares cuando sus estructuras son idnticas, pero la informacin que contienen
sus nodos es diferente. Ejemplo:

A. B. EQUIVALENTES
Son aquellos arboles que son similares y que adems los nodos contienen la misma informacin. Ejemplo:

A. B. COMPLETOS
Son aquellos arboles en los que todos sus nodos excepto los del ultimo nivel, tiene dos hijos; el sub-arbol
izquierdo y el sub-arbol derecho.
Recorrido en profundidad-primero
rbol binario

Preorden: (raz, izquierdo, derecho). Para recorrer un rbol binario no vaco en preorden, hay que
realizar las siguientes operaciones recursivamente en cada nodo, comenzando con el nodo de raz:
1.
Visite la raz
2.
Atraviese el sub-rbol izquierdo
3.
Atraviese el sub-rbol derecho

Inorden: (izquierdo, raz, derecho). Para recorrer un rbol binario no vaco en inorden (simtrico), hay
que realizar las siguientes operaciones recursivamente en cada nodo:
1.
Atraviese el sub-rbol izquierdo
2.
Visite la raz
3.
Atraviese el sub-rbol derecho

Postorden: (izquierdo, derecho, raz). Para recorrer un rbol binario no vaco en postorden, hay que
realizar las siguientes operaciones recursivamente en cada nodo:
1.
Atraviese el sub-rbol izquierdo
2.
Atraviese el sub-rbol derecho
3.
Visite la raz
En general, la diferencia entre preorden, inorden y postorden es cundo se recorre la raz. En los tres, se
recorre primero el sub-rbol izquierdo y luego el derecho.

En preorden, la raz se recorre antes que los recorridos de los subrboles izquierdo y derecho

En inorden, la raz se recorre entre los recorridos de los rboles izquierdo y derecho, y

En postorden, la raz se recorre despus de los recorridos por el subrbol izquierdo y el derecho
Preorden (antes), inorden (en medio), postorden (despus).
rbol genrico
Para recorrer un rbol no vaco en orden de profundidad-primero, hay que realizar las siguientes operaciones
recursivamente en cada nodo:
1.
Realice la operacin pre-orden
2.
Para i=1 a n-1 haga
1.
Visite al hijo[i], si existe
2.
Realice la operacin in-orden
3.
Visite al hijo[n], si existe

4.
Realice la operacin post-orden
donde n es el nmero de nodos hijos. Dependiendo del problema actual, las operaciones de pre-orden, inorden o post-orden pueden ser vacas (void), o usted puede querer visitar solamente un nodo de hijo
especfico, as que estas operaciones pueden ser consideradas opcionales. Tambin, en la prctica, ms de
una de las operaciones de pre-orden, in-orden y post-orden pueden ser requeridas. Por ejemplo, al insertar en
un rbol ternario, una operacin de pre-orden es realizada comparando elementos. Una operacin de postorden puede luego ser necesitada para rebalancear el rbol.
Recorridos en Pre orden
En este tipo de recorrido se realiza cierta accin (quizs simplemente imprimir por pantalla el valor de la clave
de ese nodo) sobre el nodo actual y posteriormente se trata el subrbol izquierdo y cuando se haya concluido,
el subrbol derecho. Otra forma para entender el recorrido con este mtodo seria seguir el orden: nodo raz,
nodo izquierda, nodo derecha.
Para recorrer un rbol binario no vaco en pre orden, hay que realizar las siguientes operaciones
recursivamente en cada nodo, comenzando con el nodo de raz (raz, izquierdo, derecho):
1. Visite la raz
2. Atraviese el sub-rbol izquierdo
3. Atraviese el sub-rbol derecho
Pre orden: ABDGEHICFJK
En pre orden, la raz se recorre antes que los recorridos de los subrboles izquierdo y derecho.
Postorden: (izquierdo, derecho, raz). Para recorrer un rbol binario no vaco en postorden, hay que realizar
las siguientes operaciones recursivamente en cada nodo:
1.
Atraviese el sub-rbol izquierdo
2.
Atraviese el sub-rbol derecho

Inorden
(izquierdo, raz, derecho). Para recorrer un rbol binario no vaco en inorden (simtrico),
hay que realizar las siguientes operaciones recursivamente en cada nodo:
1. Atraviese el sub-rbol izquierdo
2. Visite la raz
3. Atraviese el sub-rbol derecho
Colas, pilas y listas
Colas (Queue)
Las colas no son ms que listas lineales de informacin a las cuales se accede de un modo determinado
siendo el de tipo (FIFO) lo que quiere decir que el primer dato en entrar es tambin el primer dato en salir, en
las colas no se permite el acceso aleatorio a ningn elemento concreto(como ejemplo podemos imaginar la
cola de un supermercado, la de un cine,.....), las inserciones para las colas se hacen al final de la lista.

Pilas
Una pila es lo contrario de una cola, ya que su acceso es de tipo LIFO, el ltimo que entra es el primero que
sale, imaginar un montn de libros unos encima de otros y que para acceder al segundo por arriba primero es
necesario coger el primero, su utilizacin principal es para el software de sistemas, compiladores, interpretes.

Las dos operaciones bsicas, son las de almacenamiento y la de recuperacin, que se llaman push (la de
almacenamiento ) y pop (la de recuperacin), para implementar una pila se necesitan las dos operaciones
mencionadas con anterioridad y una zona de memoria para utilizarla como pila, se puede utilizar un array, o
una zona asignada mediante asignacin dinmica de memoria. Al igual que en las colas, la funcin de
recuperacin elimina el valor de la lista, y si este no se almacena en algn lugar, este se destruye.
La variable top es el ndice de la siguiente posicin libre de la pila. Cuando se implementan estas funciones, lo
ms importante es evitar el desbordamiento de la pila por los dos extremos, si top =0 la pila esta vaca y si top
>que la ultima posicin de almacenamiento la pila est llena.
Listas enlazadas
Al contrario que las pilas y las colas las listas enlazadas pueden acceder a una zona de memoria de forma
aleatoria, ya que cada trozo de informacin lleva un enlace al siguiente elemento de la cadena. Una lista
enlazada requiere una estructura de datos compleja, al contrario que las colas o las pilas, que pueden operar
con elementos simples o complejos, adems una operacin de recuperacin en una lista enlazada no elimina
ni destruye el elemento de la lista. Para poder eliminar un elemento de una lista es necesario utilizar una
operacin especifica de eliminacin.
Las listas enlazadas se utilizan principalmente para dos propsitos, crear arrays de un tamao desconocido
en memoria, y los archivos de almacenamiento en disco para bases de datos, las listas enlazadas permiten
insertar y eliminar nuevos elementos.
Las listas pueden ser simplemente enlazadas o doblemente enlazadas, las simplemente enlazadas contienen
un enlace al elemento siguiente, las doblemente enlazadas tanto al siguiente elemento como al elemento
anterior del la lista.
Listas simplemente enlazadas
Una lista simplemente enlazada necesita que cada elemento contenga un enlace con el siguiente elemento,
cada elemento consiste en una estructura de campos de informacin a punteros de enlace.
Existen dos formas de construir una lista simplemente enlazada , la primera es aadir un nuevo elemento al
principio o al final de la lista, la otra aade los elementos en un punto especifico de la lista.
Si la lista ya esta ordenada, es conveniente mantenerla as, insertando los nuevos elementos en su lugar
apropiado para lo cual se explora la lista de forma secuencial hasta encontrar el lugar apropiado, la nueva
direccin se inserta en ese punto y los enlaces se vuelven a colocar como sea necesario.
Se pueden dar tres posibles situaciones al insertar un elemento en una lista enlazada.
Primero : El elemento se puede convertir en el primer elemento.
Segundo : Puede ser insertado entre otros dos elementos.
Tercero: Se puede convertir en el ultimo elemento de la lista.
Tener en cuenta que al cambiar el primer elemento hay que actualizar el punto de entrada en alguna parte del
programa, tambin se puede utilizar un centinela, que no es
ms que el primer elemento no cambia nunca con un valor especial, con lo que siempre ser el primer
elemento de la lista pero se necesita una posicin ms de memoria. Para recuperar un elemento de la lista es
como seguir una cadena, una rutina basada en el campo nombre. Para borrar un elemento al igual que para
insertar un elemento se pueden dar los mismos tres casos, si se borra el primer elemento de la lista el puntero
previo ha de hacerse nulo, y la funcin tiene que devolver un puntero al comienzo de la lista para que cuando
se borre el primer elemento de la lista, el programa conozca la direccin del nuevo primer elemento de la lista.

Las listas simplemente enlazadas solo se pueden recorrer en sentido ascendente y no en sentido
descendente, para lo cual se pueden utilizar las listas doblemente enlazadas.

Operaciones con Listas, Colas y Pilas


Pilas
PUSH (pila, elemento): Introduce un elemento en la pila. Tambin Se le conoce como poner o meter.
POP (pila): Elimina un elemento de la pila. Tambin se le conoce como sacar o quitar.
VACIA (pila): Funcin booleana que indica si la pila est vaca o no.

Colas
Insertar: Almacena al final de la cola el elemento que se recibe como parmetro.
Eliminar: Saca de la cola el elemento que se encuentra al frente.
Vaca: Regresa un valor booleano indicando si la cola tiene o no elementos (true si la cola est vaca, false si
la cola tiene al menos un elemento).
Llena: Regresa un valor booleano indicando si la cola tiene espacio disponible para insertar nuevos elementos
(true - si est llena y false si existen espacios disponibles).
Crear: Se crea la cola vaca.
Encolas (aadir, entrar, insertar): se aade un elemento a la cola. Se aade al final de esta.
Desencolar (sacar, salir, eliminar): Se elimina el elemento frontal de la cola, es decir, el primer elemento que
entr.
Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer elemento que entr.
Listas

Recorrer los elementos hacia adelante


Recorrer los elementos hacia atrs
Insertar un nuevo elemento al principio
Insertar un nuevo elemento al final
Insertar un nuevo elemento antes de otro
Insertar un nuevo elemento despus de otro
Remover un elemento del principio
Remover un elemento que este antes que otro
Remover un elemento que este despus de otro
Remover un elemento del principio
Remover un elemento del final

INSERTAR ELEMENTOS
Las pilas son otro tipo de estructura de datos lineales, las cuales presentan restricciones en cuanto a la
posicin en la cual pueden realizarse las inserciones y las extracciones de elementos.
Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos slo por uno de los
extremos. Como consecuencia, los elementos de una pila sern eliminados en orden inverso al que se
insertaron. Es decir, el ltimo elemento que se meti a la pila ser el primero en salir de ella.
En la vida cotidiana existen muchos ejemplos de pilas, una pila de platos en una alacena, una pila de latas en
un supermercado, una pila de papeles sobre un escritorio, etc.
Borrar un elemento
^
Para borrar un elemento tambin nos basamos en el algoritmo de bsqueda. Si el elemento no est en el
rbol no lo podremos borrar. Si est, hay dos casos posibles:
1.
Se trata de un nodo hoja: en ese caso lo borraremos directamente.
2.
Se trata de un nodo rama: en ese caso no podemos eliminarlo, puesto que perderamos todos los
elementos del rbol de que el nodo actual es padre. En su lugar buscamos el nodo ms a la izquierda del
subrbol derecho, o el ms a la derecha del subrbol izquierdo e intercambiamos sus valores. A continuacin,
eliminamos el nodo hoja.
Necesitamos un puntero auxiliar para conservar una referencia al padre del nodo raz actual. El valor inicial
para ese puntero es NULL.
Padre = NULL
Si el rbol est vaco: el elemento no est en el rbol, por lo tanto, salimos sin eliminar ningn elemento.
Borrar un nodo hoja
Borrar un nodo rama con intercambio de un nodo hoja.
En el rbol de ejemplo, borrar el nodo 4.
1.
Localizamos el nodo a borrar ('raz').
2.
Buscamos el nodo ms a la derecha del rbol izquierdo de 'raz', en este caso el 3, al tiempo que
mantenemos un puntero a 'Padre' a 'nodo'.
3.
Intercambiamos los elementos 3 y 4.
4.
Hacemos que el puntero de 'Padre' que apuntaba a 'nodo', ahora apunte a NULL.
5.
Borramos el 'nodo'.

APROVECHAMIENTO DE LA MEMORIA
Sin lugar a dudas, uno de los componentes fundamentales para que una computadora funcione de manera
correcta es su memoria RAM, la cual debe encontrarse perfectamente colocada en los zcalos

correspondientes que dispone la motherboard, y deben respectar ciertos parmetros de configuracin en el


software para que el sistema operativo las detecte de forma adecuada.
Junto con la placa madre, el procesador y el disco rgido, la memoria RAM, denominada as por el acrnimo
en ingls del nombre Random Access Memory, es uno de los elementos que determinarn no slo el
funcionamiento correcto de nuestra PC, sino tambin la capacidad en la velocidad de transferencia y proceso
de datos.
Tcnicas De Pruebas de Software

Generalmente se comienza probando las partes ms pequeas y se continua con las ms grandes

Para el software convencional


o
El mdulo (componente) se prueba primero
o
Se continua con la integracin de mdulos

Para el software orientado a objetos


o
Se prueba primero una clase (atributos, mtodos, colaboracin)
Pruebas unitarias

Se concentran en probar cada componente individualmente para asegurar que funcione de manera
apropiada como unidad

Emplean tcnicas de prueba que recorren caminos especficos en la estructura de control de los
componentes (pruebas estructurales)
Pruebas de integracin

Las pruebas de integracin tienen dos objetivos principales:


o
Descubrir errores asociados con las interfaces de los mdulos
o
Ensamblar sistemticamente los mdulos individuales para formar subsistemas y al final un sistema
completo

Principalmente se utilizan tcnicas que verifican el correcto manejo de las entradas y salidas del
software (pruebas funcionales)

Tambin pueden emplearse tcnicas que recorren rutas especficas en la estructura de control del
software (pruebas estructurales)

Pruebas de alto nivel

Pruebas de validacin, se enfocan en los requerimientos.

Prueba del sistema, se enfoca en la integracin del sistema (Hw, informacin, personas)
o
Prueba de recuperacin, forza el software a fallar en diferentes formas y verifica que ste se recupere
adecuadamente
o
Prueba de seguridad, verifica que los mecanismos de proteccin integrados en el sistema realmente
impidan irrupciones inapropiadas
o
Prueba de resistencia, ejecutan un sistema de manera que se demanden recursos en cantidades,
frecuencias o volmenes anormales
o
Prueba de desempeo, prueba el desempeo del software en tiempo de ejecucin dentro del contexto
de un sistema integrado
Pruebas de caja blanca

Los mtodos de caja blanca o estructurales permiten derivar casos de prueba que:
o
Garanticen que todas las rutas independientes dentro del mdulo se ejecuten al menos una vez
o
Ejecuten los lados verdadero y falso de todas las decisiones lgicas
o
Ejecuten todos los ciclos dentro y en sus lmites operacionales
o
Ejerciten las estructuras de datos internas para asegurar su validez

Pruebas de Caja negra

Los mtodos de caja negra o funcionales permiten derivar casos de prueba que buscan encontrar los
siguientes tipos de errores:
o
Funciones incorrectas o faltantes
o
Errores de interfaz
o
Errores en estructuras de datos o en acceso a BD externas
o
Errores de comportamiento o desempeo
o
Errores de inicializacin o trmino
Tcnicas de prueba de Software (Facilidad de Prueba)
Facilidad de Prueba del software.- es simplemente la facilidad con la que se puede probar el programa de
computadora. Se usa para indicar lo adecuadamente que un conjunto particular de pruebas va a cubrir un
producto.

Proceso de ISBC
La ingeniera de software basada en componentes (ISBC) es un proceso que se centra en el diseo y
construccin de sistemas basados en computadora que utilizan componentes de software reutilizables.
La ISBC representa la filosofa de comprar, no construir.
Pasa de programar el software a componer sistemas de software.
En muchos sistemas de software existe una base comn suficiente como para justificar los componentes
reutilizables.
En el contexto de la ingeniera del software, la reutilizacin se puede considerar una idea nueva y antigua. Los
programadores han reutilizado ideas, abstracciones y procesos desde el principio de la era de los
computadores, pero el primer enfoque de reutilizacin era muy concreto. Hoy en da, los sistemas complejos y
de alta calidad basados en computadora se deben construir en perodos de tiempo muy cortos. Esto se mitiga
con un enfoque de reutilizacin ms organizado. Superficialmente, la ISBC parece bastante similar a la
ingeniera del software orientada a objetos. El proceso comienza cuando un equipo de software establece los
requisitos del sistema que se va a construir utilizando las tcnicas convencionales de obtencin de requisitos.
Se establece un diseo arquitectnico, pero en lugar de entrar inmediatamente en tareas de diseo
detalladas, el equipo examina los requisitos para determinar cul es el subsistema que est dispuesto para la
composicin, y no para la construccin.
INGENIERIA DEL DOMINIO
La finalidad de la ingeniera del Dominio es identificar, construir, catalogar diseminar un conjunto de
componentes de software que sean aplicables para el software existente y futuro en un dominio de aplicacin
particular.
Ingeniera del dominio, tambin llamado (lnea de productos ingeniera) es el proceso entero de reusing
conocimiento del domino en la produccin de nuevo software sistemas. Es un concepto dominante en
sistemtico reutilizacin del software.
Una idea dominante en la reutilizacin sistemtica del software esdominio, un rea del software que contiene
los sistemas que comparten concordancias. La mayora del trabajo de las organizaciones en solamente
algunos dominios. Construyen en varias ocasiones sistemas similares dentro de un dominio dado con
variaciones a diversas necesidades de cliente de la reunin. Ms bien que construyendo cada nueva variante
del sistema del rasguo, al igual que la prctica comn hoy, los aumentos significativos son realizables
reusing las porciones de sistemas anteriores en el dominio para construir nuevos.
El proceso de identificar dominios, de limitarlos, y de descubrir concordancias y variabilidades entre los
sistemas en el dominio se llama anlisis del dominio.

Esta informacin se captura en los modelos que se utilizan en la fase de la puesta en prctica del dominio
para crear los artefactos tales como componentes reutilizables, a lenguaje de programacin dominioespecfico, o generadores del uso que se pueden utilizar para construir nuevos sistemas en el dominio.
El objetivo fundamental de la ingeniera de dominio es la optimizacin del proceso de desarrollo del software
en un espectro de mltiples aplicaciones que representan un negocio comn o problema de dominio.
La ingeniera de dominio:
La ingeniera del dominio se centra en el desarrollo de elementos reutilizables que formarn la familia de
productos.
La ingeniera de aplicacin:
La ingeniera de aplicacin se orienta hacia la construccin o desarrollo de productos individuales,
pertenecientes a la familia de productos, y que satisfacen un conjunto de requisitos y restricciones expresados
por un usuario especfico.
El desarrollo de software basado en componentes
El desarrollo de software basado en componentes permite reutilizar piezas de cdigo pre-elaborado que
permiten realizar diversas tareas, conllevando a diversos beneficios como las mejoras a la calidad, la
reduccin del ciclo de desarrollo y el mayor retorno sobre la inversin. Al comparar la evolucin del ambiente
de IT con el crecimiento de las metrpolis actuales, podemos entender el origen de muchos problemas que se
han presentado histricamente en la construccin de software y vislumbrar las posibles y probables
soluciones que nos llevarn hacia la industrializacin del software moderno.
Este proceso de industrializacin ha dado ya sus inicios con implementaciones como la plataforma .net, la
cual impulsa la idea de industrializar el software utilizando tecnologas de componentes. Los avances y
mejoras presentados en esta plataforma van mucho ms all de las implementaciones iniciales como COM y
CORBA, convirtiendo a los componentes .net en verdaderas piezas de ensamblaje, en un estilo muy similar a
las lneas de ensamblaje modernas. Asimismo, los nuevos paradigmas como las Fbricas de Software
proveen de los medios para hacer la transicin desde el 'hacer a mano' hacia la fabricacin o manufactura de
software.

Ingeniera del Software del Comercio Electrnico


A finales de siglo, el desarrollo de una nueva generacin de mquinas herramientas capaces de soportar
fuertes tolerancias dieron poder a los ingenieros que diseaban un pro- A ceso nuevo de fabricacin llamado
produccin en masa. Antes de la llegada de esta tecnologa avanzada de mquinas herramientas, no se
podan soportar fuertes tolerancias. Pero con esta tecnologa se podan construir piezas intercambiables y
fcilmente ensamblables - la piedra angular de la produccin en masa-.
Cuando se va a desarrollar un sistema basado en computadora, un ingeniero de software se ve restringido por
las limitaciones de las tecnologas existentes y potenciadas cuando las tecnologas nuevas proporcionan
capacidades que no estaban disponibles para las generaciones anteriores de ingenieros. La evolucin de las
arquitecturas distribuidas de computadora ha capacitado a los ingenieros de sistemas y del software para
desarrollar nuevos enfoques sobre cmo se estructura el trabajo y cmo se procesa la informacin dentro de
una empresa.
Tecnologas y Comercio electrnico
Herramientas de competitividad y la efectividad de las nuevas tecnologas para concretar negocios, son base
para el gran impulso que tiene el comercio electrnico en la actualidad, el cual se ha extendido gracias a la
forma de comprar o vender un producto o servicio por medio de la web 2.0.

Con esta forma de compensacin de bienes y servicios se encuentran beneficios para los usuarios tales como
creacin y acceso a nuevos canales de venta, los cuales permiten interacciones directas con la informacin
necesaria para que el usuario conozca el producto al cual quiere acceder con el fin de compartir bases de
datos para acordar dichas transacciones.
Ingeniera de seguridad
La Ingeniera de la seguridad es una rama de la ingeniera, que usa todo tipo de ciencias para desarrollar los
procesos y diseos en cuanto a las caractersticas de seguridad, controles y sistemas de seguridad. La
principal motivacin de esta ingeniera ha de ser el dar soporte de tal manera que impidan comportamientos
malintencionados.
El campo de esta ingeniera puede ser muy amplio, podra desarrollarse en muchas tcnicas:
Equipos: Como el diseo de cerraduras, cmaras, sensores,...
Procesos: polticas de control, procedimientos de acceso,...
Informtico: control de passwords, criptografa,...
Uno de los pioneros en la Ingeniera de seguridad como un campo de estudio es Ross Anderson.

También podría gustarte