🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
Variables y arreglos en .Net
1. VARIABLES Y ARREGLOS
CLASES Y MÓDULOS
Son tipos de referencia que buscan encapsular los elementos definidos en ellos, como por
ejemplo: constantes, variables funciones y procedimientos (para módulos) o atributos y
métodos (para clases).
Básicamente los módulos y/o clases nos servirán para declaraciones generales y para
tener una librería de código con funcionalidad e uso frecuente desde diferentes
formularios u otros elementos para todo el proyecto. Existen diferencias considerables
entre uno y otro, pero básicamente se difieren en la forma en que se realiza el acceso a los
elementos desde otros procedimientos.
CLASE
Sólo se puede utilizar Class en el nivel de espacio de nombres o de módulo. Esto significa
que el contexto de declaración para una clase debe de ser un archivo de código fuente,
espacio de nombres, clase, estructura, módulo o interfaz, y no puede ser procedimiento o
bloque.
Cada instancia de una clase tiene un periodo de duración independiente de todas las
demás instancias. Es decir, cada objeto es independiente a pesar de que provengan de la
misma clase; cada uno tiene sus propias propiedades e invoca a sus métodos
independientemente, así como su tiempo de vida es propio.
Una instrucción Class define un nuevo tipo de datos. Una clase es una unidad de creación
fundamental de la Programación Orientada a Objetos.
PROGRAMACIÓN ORIENTADA A OBJETOS
La Programación Orientada a Objetos (POO) es una manera de abstraer la realidad y
programar empleando un enfoque en el que la realidad se entiende basada en que los
elementos que nos rodean son objetos. Es decir, que cuentan con atributos propios y que
tienen un comportamiento según su naturaleza, y que pueden ser agrupados en clases por
su similitud.
- Clase. Conjunto de elementos con características similares o comunes. Se emplea
la palabra class para declararla y se incluyen propiedades y métodos para los
objetos que se generaran a partir de ella (Instancias).
- Propiedades. Característica o atributo del objeto. Para ello debe ser declarada en
la clase, tal como se hace con las variables.
2. - Método. Realiza alguna operación con las propiedades del objeto. Deben ser
declaradas en la clase como funciones y procedimientos, y describen el
comportamiento de los objetos que serán instanciados.
- Constructor. Es un método especial de una clase que permite inicializar valores de
los atributos del objeto que se están instanciando a partir de esta. Se llama al
constructor cuando usamos en la declaración de nuevos objetos (instancia) la
palabra new. Ejemplo: Clase persona
Persona
- edad
- nombre
- dni
}Atributos
+ comer
+ caminar
+ respirar
}Métodos
- Objeto. Es una instancia de una clase, es decir, es un elemento particular de eta,
que cuenta con atributos propios y comportamientos según métodos.
- Evento. Característica que permite que el objeto responda a una determinada
acción y ejecute un código asociado a un método o procedimiento.
- Encapsulamiento. Define el nivel de acceso. Dentro de una clase, se puede
declarar cada miembro con su propio nivel de acceso. De forma predeterminada,
los miembros de la clase tienen acceso al Public y las variables y constantes tienen
acceso al Private. Tenemos acceso también al Protected (protegido: privado en el
uso y públicos en la herencia) y Friend (amigo: público para elementos fuera del
clase),
- Polimorfismo. Permite que los objetos reaccionen de manera diferente ante
mensajes diferentes. Los mensajes serán atendidos como parámetros que son
entregados a los métodos de los objetos que permiten un comportamiento
diferente.
- Sobre carga de métodos, procedimientos y /o funciones. Es cuando dos o más
métodos de una clase tienen el mismo nombre y se diferencian por los argumentos
que reciben, y la funcionalidad que permiten. Esto permite que empleando un
mimo método, según el mensaje, podamos realizar tareas distintas en las
propiedades del objeto.
3. - Herencia. Permite tomar características de una clase padre o base y re utilizarlas
en una nueva clase. Se emplea en casos donde una clase es muy similar a otra,
entonces se hereda y se hacen las modificaciones en la clase hijo.
Ejemplo: Herencia de la clase persona.
persona
- edad
- nombre
- dni funcionario
+ comer - cargo
estudiante + caminar +funcionario
- notas + respirar
- horario
+ estudio
+ clases Profesor
- salario
+ profesor
+ materias
Agregar una clase al proyecto
4. Módulo (Module)
Module declara el nombre de un módulo e introduce la definición de las variables,
propiedades, eventos y procedimientos que incluye el módulo.
Define un tipo de referencia disponible en su espacio de nombres. Un módulo también
llamado módulo estándar, es similar a una clase pero con algunas distinciones
importantes. Cada módulo tiene exactamente una instancia y no necesita ni ser creado ni
asignado a una variable. No admiten la herencia ni permiten interfaces.
Sólo se puede usar en el nivel de espacio de nombre, siendo este un archivo de código
fuente o espacio de nombres. No puede anidar un módulo dentro de otro módulo ni
dentro de cualquier tipo.
Tiene el mismo periodo de duración que el programa.
5. El acceso es de tipo Friend. Pudiendo ajustar sus nivele de acceso con los modificadores de
acceso.
Tiene sus elementos compartidos para el proyecto, por lo que es ideal para emplearlo
como librería de funciones y procedimientos y, para la declaración de variables publicas.
Agregar un módulo al Proyecto
6. Diferencia entre clases y módulos
La diferencia principal entre clases y módulos consiste en que pueden crearse instancias
de clases como objetos pero no de módulos. Como sólo existe una copia de los datos de
un módulo estándar, cuando una parte del programa cambia una variable pública en un
módulo estándar, cualquier otra parte del programa obtendrá el mismo valor si lee luego
esa variable. En comparación, los datos de objetos existen individualmente para cada
objeto con instancias.
Crear una aplicación empleando un módulo
Crear una aplicación para el conteo de personas: adultos, jóvenes y niños que ingresan a
un centro comercial.
Form1
Form2
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
A = 0
7. J = 0
N = 0
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
A += 1
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
J += 1
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
N += 1
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button4.Click
Form2.ShowDialog()
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
TextBox1.Text = A.tostring
TextBox2.Text = J.tostring
TextBox3.Text = N.tostring
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
A = 0
J = 0
N = 0
TextBox1.Text = A.tostring
TextBox2.Text = J.tostring
TextBox3.Text = N.tostring
End Sub
End Class
Module Module1
Public A, J, N As Integer
End Module
8. Ámbito de variables y objetos
El ámbito de un elemento declarado es el conjunto de todo el código que puede hacer
referencia a él sin calificar su nombre como disponible mediante Imports.
Nivel de Ámbito Descripción
Ámbito disponible únicamente en el bloque de código en el que se
De bloque
ha declarado.
Ámbito disponible para todo el código dentro del procedimiento en
De Procedimiento
el que se ha declarado.
Ámbito disponible para todo el código dentro del módulo, clase o
De Módulo
estructura en el que se ha declarado.
De Espacio de Disponible para todo el código dentro del espacio de nombres en el
Nombres que se ha declarado.
Estos niveles de ámbito progresan desde el más restringido (bloque) al más amplio
(espacio de nombres), donde el ámbito más restringido significa el conjunto de código
más pequeño que pueda hacer referencia al elemento sin calificación.
Especificar ámbito
Se especifica al declararlo y puede depender de los factores siguientes:
La región (bloque, procedimiento, módulo, clase o estructura) donde se declara el
elemento.
El espacio de nombres que contiene la declaración del elemento.
El nivel de acceso que se declara para el elemento.
Al definir dos variables con el mismo nombre en ámbitos diferentes, la variable declarada
más local es la que se refiere.
9. Niveles de Ámbito.
1. Ámbito de bloque. Un bloque es un conjunto de instrucciones de declaración de
inicio y fin. Ejemplo: Do y Loop, For y Next, If y End If, Select y End Select,Try y End
Try, While y End While y With y End With.
Si se declara una variable dentro de un bloque, sólo puede utilizarla dentro de ese
bloque. Ejemplo:
2. Ámbito de procedimiento. Un elemento declarado en un procedimiento no está
disponible fuera de él. Solo el procedimiento hace uso de él. También
denominadas Variables Locales. Se declaran con la instrucción Dim (Variable
Dinámica), con o sin la palabra clave Static (Variable Estática).
Si se declara una variable dentro de un procedimiento, pero fuera de un bloque
dentro del procedimiento, puede considerarse que la variable tiene ámbito de
bloque, donde el bloque es el procedimiento completo.
Todos los elementos locales, aunque son Static, son privados para el
procedimiento en el que aparecen. No se puede declarar un elemento mediante la
palabra clave Public dentro de un procedimiento.
3. Ámbito de Módulo. Se aplica por igual a módulos, clases estructuras. Puede
declarar elementos a este nivel si se sitúa la instrucción de declaración fuera de
cualquier procedimiento o bloque pero dentro del módulo.
Cuando se incluye una declaración en el nivel del módulo, el nivel de acceso
selecciona determina el ámbito. El espacio de nombres que contiene el módulo, la
clase o la estructura también afecta al ámbito.
Los elementos para los que se declara el nivel de acceso Private están disponibles
para todos los procedimientos del módulo, pero no para el código de otros
módulos. La instrucción Dim en el nivel de módulo toma Private como valor
predeterminado sino utiliza ninguna palabra nivel de acceso. No obstante, el
10. ámbito y el nivel de acceso sea más apropiado si se utiliza la palabra clave Private
en lugar de la instrucción Dim.
4. Ámbito de Espacios de Nombres. Si se declara un elemento en el nivel de módulo
mediante las palabras clave Friend o Public, dicho elemento quedará disponible
para todos los procedimientos del espacio de nombres en los que se declare.
Incluye espacios de nombres anidados. Un elementos también estará disponible en
cualquier espacio de nombres anidado en su interior.
Crear una aplicación empleando diferentes ámbitos
Public Class Form1
Public B As Integer
'Ámbito local
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim C As Integer
' Ámbito de Procedimiento
C = 1
B = 2
A = 3
While A < 100
Dim D As Integer
'Ámbito de Bloque
D = A * B * C
A = D
End While
11. Form2.ShowDialog()
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
TextBox1.Text = A
End Sub
End Class
Module Module1
Public A As Integer
' Ámbito de módulo
End Module
ARREGLOS
Los arreglos o arrays son conjunto de variables del mismo tipo y con el mismo nombre,
que se pueden manejar juntas o individualmente, de allí su ventaja frente a variables
independientes.
Los arreglos toman un índice por cada dimensión para diferenciarse de cada elemento. Se
pueden tener arreglos desde una dimensión hasta un máximo de 32 dimensiones.
Arreglos vectoriales
Son los que se emplean con mayor frecuencia. Se les llama unidimensionales o vectores.
Su dimensión es uno, es decir, emplean sólo índice.
Para declarar un vector:
Dim x(3) As Integer
Arreglos Multidimensionales
12. Los arreglos multidimensionales son también conocidos como matrices, y son arreglos de
más de una dimensión (2 ó más), a diferencia de los vectores. Podemos imaginar una
matriz bidimensional (2 dimensiones), como una cuadricula con filas y columnas (tabla),
donde las filas representarían las coordenadas “x” y las columnas las coordenadas “y”.
A matriz de tres dimensiones se les puede imaginar con las coordenadas x, y, z siendo
ideal para representar figuras en el espacio como un cubo.
Podemos tener matrices de hasta 32 dimensiones. Estas se declaran en el código de
manera igual que los vectores, con la diferencia de que se debe de aumentar el número
de dimensiones:
Dim x(1,2) As Integer
DECLARACIÓN, ASIGNACIÓN Y LECTURA E ELEMENTOS
Declaración de arreglos
La declaración es la separación dele espacio que se requiere en la memoria RAM para
guardar datos, según el tipo elegido, considerando la cantidad de dimensiones que tendrá
el arreglo.
Los arreglos respetan los mismos ámbitos que las variables, siendo posible emplear para la
declaración de las mismas el alcance: Public, Private, Friend y Protected, incluso como
propiedades de clase.
La asignación de arreglos se realiza empleando la sintaxis en .Net:
<Alcance> NombreArreglo(D1,D2,D3,…,Dn ) As TipoDato
Ejemplos
Public vector(10) As Integer
Private doble(1,2) As Simgle
Dim triple(1,2,3) As String
Static cuatro(1,2,3,4) As Boolean
Asignación de Valores al arreglo
La asignación de arreglos se realiza empleando la siguiente sintaxis en .Net:
NombreArreglo(D1,D2,D3,…,Dn )=Valor
Ejemplos:
vector(10)=10
13. doble(1,2) =2.5
triple(1,2,3) = “Ejemplo”
cuatro(1,2,3,4) = True
Es muy usual usar sentencias for to next, para poder manejar por extensión los valores
asignados al arreglo.
Ejemplo: Todos los valores del arreglo vectorial en cinco.
For i = 0 To 5
vectorial(i) = 5
Next
Ejemplo: Todos los valores del arreglo en cinco.
For i = 0 To 5
For i = 0 To 5
dos(i,j) = 5
Next
Next
Ejemplo: Los valores del arreglo “Verde” si la tercera dimensión es par, “Rojo” si la
segunda dimensión es par, el resto de valores del arreglo es “Blanco”.
Dim i, j, k As Integer
Dim tres(5, 5, 5) As String
For i = 0 To 5
For j = 0 To 5
For k = 0 To 5
If (k Mod 2) = 0 Then
tres(i, j, k) = "Verde"
Else
If (j Mod 2) = 0 Then
tres(i, j, k) = "Rojo"
Else
tres(i, j, k) = "Blanco"
End If
End If
Next
Next
Next
Ejemplo: Los valores del arreglo en True, si la primera dimensión es mayor a la segunda
dimensión o, si la tercera dimensión es mayor que la cuarta dimensión.
Dim i, j, k, l As Integer
Dim cuatro(5, 5, 5, 5) As String
For i = 0 To 5
For j = 0 To 5
For k = 0 To 5
For l = 0 To 5
cuatro(i, j, k, l) = (i > j Or k > l)
14. Next
Next
Next
Next
Lectura e elementos del arreglo
La lectura del contenido de un arreglo se realiza cuando se requiere saber el valor de todo
el arreglo en general o de un dato específico, esta operación es inversa a la asignación.
<Porpiedad, Variable o Argumento>= Arreglo(D1,D2,D3,…,Dn)
Ejemplo:
uno = vector(10) = 10
dos = doble(1, 1)
tres = triple(1, 2, 1)
tetra = cuatro(4, 3, 2, 1)
Para llevar el contenido de un arreglo a una lista:
For i = 0 To 5
ListBox1.Items.Add(uno(i))
Next
Mostrar los datos de una matriz en cuadro de mensaje
Dim i, j, dos(5, 5) As Integer
Dim cadena As String
cadena = ""
For i = 0 To 5
For j = 0 To 5
cadena &= dos(i, j).ToString & Chr(9)
'Agrega el valor del arreglo y un TAB
Next
Next
cadena &= Chr(13)
'Agrega ENTER al final de la cadena
MsgBox(cadena)
Crear una aplicación empleando arreglos unidimensionales
Crear una aplicación para generar una “n” cantidad de términos de una serie que permita
la suma de los dos términos anteriores.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89,…
Parar esto crear la siguiente interface con el segundo TextBox con la propiedad Multiline
en True.
15. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim s(100) As Integer
Dim i, n As Integer
Dim serie As String
serie = ""
'Cambiamos el contenido del TextBox1 a entero
n = CType(TextBox1.Text, Integer)
'Asignamos el valor de las dos primeras variables
s(0) = 0
s(1) = 1
'Asignamos el valor de cada de las variables
'Asumiendo que el valor de una
'es la suma de las dos anteriores
For i = 2 To (n + 1)
s(i) = s(i - 1) + s(i - 2)
Next
'Guardamos el valor de la serie como cadena en la variable
For i = 2 To n
serie &= s(i).ToString & " , "
Next
serie &= s(n + 1) & "."
'Mostramos la serie en el TextBox2
TextBox2.Text = serie
End Sub
16. Crear una aplicación empleando arreglos multidimensionales
Crear una aplicación que permita realizar un juego de Tres en Raya para 2 personas.
Considerar el tablero como una matriz de dos dimensiones.
En el GroupBox colocar nueve TextBox en orden en modo sólo lectura (ReadOnly = True)
además cambiar la fuente a tamaño veinte y alineación central del texto.
Public Class Form1
'Definimos un arreglo como un conjunto de variables declarados como
caracteres
Dim M(2, 2) As Char
'Daclaramos la variable gano como booleana
'solo puede tener dos valores verdadero o falso
Dim gano As Boolean
'Creamos la función Marcar el cual agrupará todas las cajas de texto
como un arreglo de controles
Private Sub marcar(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TextBox1.Click, TextBox2.Click, TextBox3.Click,
TextBox4.Click, TextBox5.Click, TextBox6.Click, TextBox7.Click,
TextBox8.Click, TextBox9.Click
'Declaramos la variable C como un Objeto en este caso una caja de
texto
Dim C As TextBox
'Declaramos las variables a usar en la función
Dim x, i As Integer
Static turno As Boolean
C = sender
If (C.Text.Length > 0) Or gano Then
Exit Sub
End If
turno = Not turno
17. If turno Then
Label1.Text = "Turno de O"
C.Text = "X"
Else
Label1.Text = "Turno de X"
C.Text = "O"
End If
x = Me.GroupBox1.Controls.IndexOf(sender)
M(Int(x / 3), (x Mod 3)) = C.Text
For i = 0 To 2
If (M(i, 0) = M(i, 1) And M(i, 1) = M(i, 2)) Then
'Línea Horizontal
MsgBox("Ganó " & M(i, 1), MsgBoxStyle.Information +
MsgBoxStyle.Exclamation, "Tres en Raya")
Label1.Text = "Iniciar Juego"
gano = True
Exit Sub
End If
If (M(0, i) = M(1, i) And M(1, i) = M(2, i)) Then
'Línea Vertical
MsgBox("Ganó " & M(1, i), MsgBoxStyle.Information +
MsgBoxStyle.Exclamation, "Tres en Raya")
Label1.Text = "Iniciar Juego"
gano = True
Exit Sub
End If
Next
If (M(0, 0) = M(1, 1) And M(1, 1) = M(2, 2)) Or (M(0, 2) = M(1,
1) And M(1, 1) = M(2, 0)) Then
'Línea Diagonal
MsgBox("Ganó " & M(1, 1), MsgBoxStyle.Information +
MsgBoxStyle.Exclamation, "Tres en Raya")
Label1.Text = "Iniciar Juego"
gano = True
Exit Sub
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
gano = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim i, j As Integer
Dim obj As Object
gano = False
For i = 0 To 2
For j = 0 To 2
M(i, j) = (i + j * 3).ToString
Next
Next
For Each obj In Me.GroupBox1.Controls
'obj.clear()
18. Next
Label1.Text = "Turno de X"
End Sub
End Class
ARRAYLIST
Los arreglos tienen mucha similitud a lo que sería una lista. Y por facilidad se han creado
los ArrayList. Que son un tipo especial de arreglo con método y propiedades de lista
incluidos. Estos se encuentran en System.Collections.
Propiedades Frecuentes
Count. Devuelve el número de elementos actuales.
Capacity. Asigna o devuelve el máximo de elementos que contendrá el arrayList. Este
valor siempre será mayor o igual que el devuelto por Count. Si al añadir un nuevo
elemento, Count fuese mayor que Capacity, la capacidad del array interno se
duplicaría para que se pudiesen añadir nuevos elementos. Si se asigna directamente
un valor, el array interno se adaptaría a ese valor.
Item. Asigna o devuelve el elemento indicado, según el número del índice.
Métodos Frecuentes
Add. Añade un elemento al final del array.
Clear. Borra los elementos de la lista.
19. Clone. Hace una copia de la lista.
Insert. Inserta un elemento en el índice indicado.
Remove. Elimina el elemento del índice especificado.
Sort. Clasifica los elementos de la lista.
Crear una aplicación usando ArrayList
Crear una aplicación que permita ingresar datos a un objeto tipo ArrayList, además de
mostrarlos, contarlos y borrarlos.
Public Class Form1
'Declaración del ArrayList
Dim dat As New ArrayList
Private Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim x As String
'Ingreso de datos
x = InputBox("Ingresar el dato a almacenar en el ArrayList:")
'Compara la loongitud del ArrayList
If x.Length > 0 Then
dat.Add(x)
End If
TextBox1.Text = dat.Count.ToString
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button2.Click
Dim obj As Object
Dim cad As String
cad = ""
If dat.Count() = 0 Then
MsgBox("No se ha ingresado ningún dato.",
MsgBoxStyle.Information, "Observación:")
20. Exit Sub
End If
For Each obj In dat
cad &= obj.ToString & Chr(13)
Next
MsgBox(cad, MsgBoxStyle.Information, "Contenido:")
End Sub
Private Sub Button3_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button3.Click
dat.Clear()
TextBox1.Text = dat.Count.ToString
End Sub
End Class