Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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.
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.
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.
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.
Sintaxis
basic
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.
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.
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
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:
VB
Public Class ImplementationClass2
Implements Interface2
Dim INum As Integer = 0
Sub sub1(ByVal i As Integer) Implements Interface2.sub1
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()
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
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';
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:
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
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
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
Numricos aproximados
Cadenas binarias
Fecha y hora
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.
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
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
Funcin
Sintaxis
Valor devuelto
Determinismo
DATENAME
DATENAME
(datepart , date )
nvarchar
No
determinista
DATEPART
DATEPART
(datepart , date )
int
No
determinista
DAY
DAY ( date )
int
Determinista
MONTH
MONTH ( date )
int
Determinista
YEAR
YEAR ( date )
int
Determinstico
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
Sintaxis
Valor 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.
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.
Determinstic
o
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;
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);
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;
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 + " ");
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:
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:
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.
y = paramY;
}
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);
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.
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:
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
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
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!
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.
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
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.
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
para empresas
.net
.org
.edu
Educause
.gov
.mil
.int
Actualmente
gestionados por
.aero
SITA
.biz
NeuLevel, Inc.
.coop
.info
Afilias Limited.
.museum
para museos
.name
para individuos
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.
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.
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.
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.
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
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
Generalmente se comienza probando las partes ms pequeas y se continua con las ms grandes
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
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)
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
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.
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.