Está en la página 1de 53

Unidad

Realizado por : Ing. Diosa Pérez


¿Cuál es el
objetivo de
esta clase?

Objetivos Específicos:
 Definir que es la Función Rnd y aprender la sintaxis de
la misma.
 Conocer la Función Randomize y cómo utilizarla
 Aprender a cargar e imprimir arreglos
unidimensionales con valores aleatorios.
 Definir lo que es una matriz cuadrada.
 Aprender a cargar e imprimir arreglos bidimensionales
con valores aleatorios.
¿Qué es la
función Rnd?

Genera un número aleatorio de doble precisión


entre 0 y 1 (1 no incluido).
Sintaxis
Rnd[(expresión numérica)]
Donde:
Expresión numérica es un número de tipo
single o cualquier expresión numérica válida
Elaborador por : Ingº Diosa Pérez
¿Cómo
funciona
Rnd?

Funcionamiento
La primera vez que se ejecuta Rnd, VB con un número
denominado semilla del número aleatorio ejecuta las
operaciones matemáticas relacionadas con esa semilla para
generar el primer número.
VB con el generador de semillas realiza los cálculos
matemáticos para producir un segundo número aleatorio y así
sucesivamente.
Rnd con la expresión numérica positiva genera el siguiente
número de la serie aleatoria basado en el valor de la semilla.
Rnd, con la expresión numérica cero repite el último número
generado
Rnd, con la expresión numérica negativa genera el mismo
número aleatorio todas las veces durante la ejecución.
Elaborador por : Ingº Diosa Pérez
¿Cómo
funciona
Rnd?

Ejemplo
Código
Corrida
Private Sub Form_Load()
Show
Print: Print
Print " "; Rnd(8)
Print " "; Rnd(0)
Print " "; Rnd(-8)
Print " "; Rnd
Print " "; Rnd(-8)
End Sub

Elaborador por : Ingº Diosa Pérez


¿Qué es la
función
Randomize?

Permite que la función Rnd arranque en un punto diferente


(semilla) en la secuencia de números aleatorios que se generan
cada vez que el programa se ejecuta, es decir, inicializa el
generador de número aleatorio.
Randomize[(expresión numérica)]
Donde:
Expresión numérica es un valor de tipo variant o cualquier
expresión numérica válida
Randomize utiliza expresión numérica para inicializar el
generador de números aleatorios de la función Rnd y le asigna
un nuevo valor de semilla. Si se omite expresión numérica, el
valor devuelto por el sistema se usa como el nuevo valor de
semilla.
Si se utiliza Randomize con el mismo valor de expresión
numérica se repite la secuencia anterior.
Elaborador por : Ingº Diosa Pérez
¿Cómo cargar
un arreglo con
números
aleatorios?

Para producir números aleatorios enteros en un intervalo dado, se


utiliza la siguiente fórmula:
Int((Límite_Superior – Limite_Inferior +1)* Rnd )+
Limite_inferior
Ejemplo
Para un arreglo definido

Dim A(1 to 10) as integer


Entonces la fórmula utilizada para producir números a ser incluidos
en el arreglo con valores de 10 a 50, es la siguiente:
Elaborador por : Ingº Diosa Pérez
¿Cómo cargar
un arreglo
con números
aleatorios?

Elabore una aplicación en Vbasic que


permita cargar un vector de N
elementos, con números aleatorios
entre x e y, donde x, y son números
enteros positivo; donde x < y

Elaborador por : Ingº Diosa Pérez


¿Cómo cargar
un arreglo con
números
aleatorios?

Elaborador por : Ingº Diosa Pérez


¿Cómo cargar un
arreglo con números
aleatorios?

‘ General
Dim n As Integer, x As Integer, y As Integer
Dim i As Integer, A() As Integer

Private Sub Form_Load()


Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Frame1.Visible = False
ImprimirV.Enabled = False
End Sub
Elaborador por : Ingº Diosa Pérez
¿Cómo cargar un
arreglo con
números
aleatorios?

Private Sub Text1_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case Asc(0) To Asc(9)
Case 8
Case Else
MsgBox "solo números enteros positivos"
KeyAscii = 0
End Select
End Sub

Elaborador por : Ingº Diosa Pérez


¿Cómo cargar un
arreglo con números
aleatorios?

Private Sub Text2_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case Asc(0) To Asc(9)
Case 8
Case Else
MsgBox "solo números enteros"
KeyAscii = 0
End Select
End Sub

Elaborador por : Ingº Diosa Pérez


¿Cómo cargar un
arreglo con números
aleatorios?

Private Sub Text3_KeyPress(KeyAscii As Integer)


Select Case KeyAscii
Case Asc(0) To Asc(9)
Case 8
Case Else
MsgBox "solo números enteros"
KeyAscii = 0
End Select
End Sub

Elaborador por : Ingº Diosa Pérez


Private Sub CargarV_Click()
N=val(text1.text): x=Val(text2.text): y=Val(text3.text)
If n > 0 Then
If x > 0 Then
If y > x Then
ReDim A(1 To n)
Randomize
For i = 1 To n
A(i) = Int((y - x + 1) * Rnd) + x
Next i
MsgBox "Vector Cargado"
ImprimirV.Enabled = True
Else
MsgBox "Debe incluir un valor mayor que el límite
inferior"
Text3.Text = ""
Text3.SetFocus
End If Elaborador por : Ingº Diosa Pérez
Else
MsgBox "Debe incluir un valor positivo para el
límite inferior"
Text2.Text = ""
Text2.SetFocus
End If
Else
MsgBox "Debe incluir un valor positivo para el
número de elementos del arreglo"
Text1.Text = ""
Text1.SetFocus
End If
End Sub Elaborador por : Ingº Diosa Pérez
¿Cómo cargar un
arreglo con números
aleatorios?

Private Sub ImprimirV_Click()


Frame1.Caption = “Vector cargado con " & n & "
valores aleatorios entre " & x & " y " & y
Text4.Text = ""
For i = 1 To n
Text4.Text = Text4.Text & A(i) & space(5)
Presione para
Next i correr la aplicación

Frame1.Visible = True
Private Sub Salir_Click()
End Sub End
End Sub

Elaborador por : Ingº Diosa Pérez


¿Cómo
cargar una
matriz?

Elabore una aplicación en VB que permita


cargar e imprimir un arreglo bidimensional o
matriz de orden n*m con números aleatorios
entre x e y, donde x, y son números enteros
positivo.

Elaborador por : Ingº Diosa Pérez


¿Cómo
cargar una
matriz?

Elaborador por : Ingº Diosa Pérez


¿Cómo
cargar una
matriz?

‘ General
Dim n As Integer, m As Integer, x As Integer, y As Integer
Dim A() As Integer, i As Integer, j As Integer

Private Sub Form_Load()


Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Frame3.Visible = False
ImprimirMatriz.Enabled = False
End Sub Elaborador por : Ingº Diosa Pérez
¿Cómo
cargar una
matriz?

‘ Se valida que lo tomado de la caja de texto 1 sea un


‘ número entero positivo
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc(0) To Asc(9)
Case 8
Case Else
MsgBox "solo números enteros positivos"
KeyAscii = 0
End Select
End Sub
Elaborador por : Ingº Diosa Pérez
¿Cómo
cargar una
matriz?

´Validación de un número entero para la caja de texto 2


Private Sub Text2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc(0) To Asc(9)
Case 8
Case Else
MsgBox "solo números enteros positivos"
KeyAscii = 0
End Select
End Sub
Elaborador por : Ingº Diosa Pérez
¿Cómo
cargar una
matriz?

‘ Se valida que lo tomado de la caja de texto 3 sea


‘ un número entero positivo
Private Sub Text3_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc(0) To Asc(9)
Case 8
Case Else
MsgBox "solo números enteros positivos"
KeyAscii = 0
End Select
End Sub

Elaborador por : Ingº Diosa Pérez


¿Cómo
cargar una
matriz?

‘ Se valida que lo tomado de la caja de texto 4 sea


‘ un número entero positivo
Private Sub Text4_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc(0) To Asc(9)
Case 8
Case Else
MsgBox "solo números enteros"
KeyAscii = 0
End Select
End Sub
Elaborador por : Ingº Diosa Pérez
Private Sub CargarMatriz_Click()
n=val(text1.text)
m=val(text2.text)
x=val(text3.text)
y=val(text4.text)
If n > 0 Then
If m > 0 Then
If x > 0 Then
If y > x Then
ReDim A(1 To n, 1 To m)
Randomize
For i = 1 To n
For j = 1 To m
A(i, j) = Int((y - x + 1) * Rnd) + x
Next j
Next i
MsgBox "Matriz Cargada"
ImprimirMatriz.Enabled = True
Elaborador por : Ingº Diosa Pérez
Else
MsgBox "Debe incluir un valor mayor que el límite inferior"
Text4.Text = ""
Text4.SetFocus
End If
Else
MsgBox "Debe incluir un valor positivo para el límite inferior"
Text3.Text = ""
Text3.SetFocus
End If
Else
MsgBox "Debe incluir un valor positivo para el número de
columnas"
Text2.Text = ""
Text2.SetFocus
End If
Else
MsgBox "Debe incluir un valor positivo para el número de filas"
Text1.Text = ""
Text1.SetFocus : End If: End Sub Elaborador por : Ingº Diosa Pérez
¿Cómo
cargar una
matriz?

Private Sub ImprimirMatriz_Click()


Dim tira As String
Frame3.Caption = “Matriz cargada con números aleatorios entre "
&x&"y"&y
List1.Clear
For i = 1 To n
tira = ""
Presione para correr
For j = 1 To m la aplicación
tira = tira & A(i, j) & Space(3)
Next j
List1.AddItem tira
Next i Private Sub Salir_Click()
Frame3.visible = True End
End Sub End Sub
Elaborador por : Ingº Diosa Pérez
¿Cómo
cargar una
‘General
matriz?

Dim n As Integer, m As Integer, x As Integer, y As Integer


Dim A() As Integer, i As Integer, j As Integer
Private Sub CargarMatriz_Click()
Do
n=val(inputbox(" De el número de filas "))
Loop until n>0
Do
m=val(inputbox("De el número de columnas "))
Loop until m>0
Do
x=val(inputbox("De el límite inferior "))
Loop until x>0
Do
y=val(inputbox("De el límite superior "))
Loop until y>x
ReDim A(1 To n, 1 To m)
Randomize Elaborador por : Ingº Diosa Pérez
¿Cómo
cargar una
matriz?

‘ Carga de la matriz por fila


For i = 1 To n
For j = 1 To m
A(i, j) = Int((y - x + 1) * Rnd) + x
Next j
Next i
MsgBox "Matriz Cargada"
Imprimir.enabled=True
End Sub
Private sub Form_Load()
Frame1.visible=false Private Sub Salir_Click()
Frame2.visible=false End
Frame3.visible=false End Sub
Imprimir.enabled=False
End Sub
Elaborador por : Ingº Diosa Pérez
¿Cómo
cargar una
matriz?

Private Sub ImprimirMatriz_Click()


Dim tira As String
Frame3.Caption = "Carga de una matriz con números aleatorios entre "
&x &"y"&y
Text1.text=n: Text2.text=m: Text3.text=x: Text4.text=y
Text5.text= ""
For i = 1 To n
tira = ""
For j = 1 To m
tira = tira & A(i, j) & Space(3)
Next j
text5.text=text5.text & tira & vbcrlf
Next i Presione para correr
la aplicación
Frame1.Visible = True
Frame2.Visible = True
Frame3.Visible = True
End Sub Elaborador por : Ingº Diosa Pérez
¿Cómocargar
una matriz?

Elabore una aplicación en VB que presente los


siguientes botones de comando:
CargarMatriz: Permite cargar una matriz de n
*m elementos, con valores aleatorios entre 10 y
80, la carga se realizará por columna
CargarVector: Permite cargar un vector con los
números aleatorios contenidos en la matriz
Imprimir: Permite en otro formulario imprimir
la matriz en una lista y el vector en una caja de
texto.
Elaborador por : Ingº Diosa Pérez
¿Qué es una matriz
cuaadrada?

Una Matriz cuadrada es un arreglo bidimensional que


tiene igual número de filas como de columnas.
Se dice que el orden de la matriz es n*n
Donde n es el número que representa tanto las filas
como las columnas

A 1 2 3

1 11 22 21

2 41 12 52

3 1 16 33
Elaborador por :
Ingº Diosa Pérez
¿Qué es una matriz
cuaadrada?

Por Encima Por Encima


Diagonal Secundaria Diagonal Principal
I+J<n+1 1 2 3 4 5 I<J
1 DP DS
2 DP DS
3 DP-DS Por Debajo
Por Debajo Diagonal Secundaria
4
Diagonal Principal DS DP I+J>n+1
I>J 5 DS DP

Diagonal Secundaria Diagonal Principal


I+J=n+1 I=J

Elaborador por :
Ingº Diosa Pérez
¿Qué es una matriz
cuaadrada?

Mitad
J=(n+1)\2 ,
Esquina n impar Esquina
I=1 and J=1 I=1 and J=n
1 2 3 4 5
1 DP DS
2 DP DS
Mitad
3 DP-DS
I=(n+1)\2
Esquina 4 DS DP n impar
I=n and J=1 5 DS DP Esquina
I=n and J=n
Contorno
I=1 or J=1 or I=n or J=n

Elaborador por :
Ingº Diosa Pérez
¿Cómo cargar
un arreglo con
números
aleatorios?

Elementos en Condición Se pregunta


Diagonal Principal I=J If I=Jthen

Diagonal Secundaria I+J=N+1 If (I+J)=(N+1) then

Por encima de la Diagonal Principal I<J If I<J then

Por debajo de la Diagonal Principal I>J If I>J then

Por encima de la Diagonal Secundaria I+J<N+1 If I+J<N+1 then

Por debajo de la Diagonal Secundaria I+J>N+1 If I+J>N+1 then

El contorno de la Matriz I=1 or I=N or If I=1 or I=N or J=1


J=1 or J=N or J=N then

Nota: Con i>=1 , J>=1


Elaborador por :
Ingº Diosa Pérez
¿Cómo cargar
un arreglo con
números
aleatorios?

Elabore una aplicación en VB que permita cargar e imprimir


en una caja de texto, la matriz cuadrada dada a continuación:
Int((Límite_Superior – Limite_Inferior +1)* Rnd )+ Limite_inferior
1 2 3 4 5

1 Rnd 3 4 5 Rnd1
2 9 Rnd 5 Rnd1 7
3 16 25 Rnd1 7 8
4 25 Rnd1 49 Rnd 9
5 Rnd1 49 64 81 Rnd

Rnd son números aleatorios entre 10 y 50


Rnd1 son números aleatorios entre 60 y 90
(Utilice tres botones de comando)
Elaborador por :
Ingº Diosa Pérez
‘ General
Dim A() As Integer, n As Integer, i As Integer, j As Integer

Private Sub Cargar_click()


Dim ct As Integer, ct2 As Integer, tira As String
do
n= val (inputbox(“De el valor de n”))
Loop until n>0 then
ReDim A(1 To n, 1 To n)
Randomize
ct2 = 11
ct = 10
For i = 1 To n
For j = 1 To n
' Int((Límite_Superior – Limite_Inferior +1)* Rnd) + Limite_inferior
If i = j Then
A(i, j) = Int(Rnd * (50 - 10 + 1)) + 1
End if
If i + j = n + 1 Then Elaborador por :
A(i, j) = Int(Rnd * (90 - 60 + 1)) + 60 Ingº Diosa Pérez
Continuación…..
If i < j And i + j <> n + 1 Then
A(i, j) = i+j
End If
If i > j And i + j <> n + 1 Then Continuación….
A(i, j) = (i+j)^2 Impresión de la matriz
End If Private Sub Imprimir_click()
Next j Dim tira as string
Next i For i = 1 To n
Msgbox “matriz cargada” tira=“”
Imprimir.enabled=True For j = 1 To n
CrearV.Enabled=True tira=tira & A(i,j) & space(2)
End Sub Next j
List1.additem tira
next i
Elaborador por :
End Sub Ingº Diosa Pérez
¿Cómo cargar
un arreglo con
números
aleatorios?

Además presente un botón que permita crear el siguiente


vector:
El primer elemento el mayor elemento de la matriz
Las demás posiciones es la cantidad de número pares que
haya por fila.
Imprima tanto la matriz como el vector
Solución:
Para ello se debe agregar a General la declaración del
Vector
‘ General
Dim A() As Integer, n As Integer, i As Integer, j As Integer
Elaborador por :
Dinm V() as integer Ingº Diosa Pérez
Private Sub CargarV_click()
dim max as integer For i=1 to n
ctp=0
dim ctp as integer
For j=1 to n
Redim V(1 to n+1)
If A(i,j) mod 2 =0 then
For i=1 to n
ctp=ctp+1
For j=1 to n
If A(i,j)>max then end if

max=A(i,j) next j

end if V(1+i)=ctp

next j Next i

next i Msgbox “Vector creado”

V(1)=max ImprimirV.Enabked=False
End Sub
Elaborador por :
Ingº Diosa Pérez
‘Impresión del Vector
Private Sub ImprimirV_Click()
text1.text=“” Tomar en cuenta el
tamaño del Vector,
Label2.caption=“Vector Creado” que se fija en el
Redim
For i=1 to n+1
text1.text=Text1.text & V(i) & space(5)
Next i
Frame1.visible=true
Private Sub Form_Load()
End sub
Frame1.visible=True
CargarV.enabled=false
End Sub
Elaborador por :
Ingº Diosa Pérez
¿Cómo cargar
un arreglo con
números
aleatorios?

Si se desea imprimir la matriz y vector en otro


formulario
Se debe crear un módulo para definir las
estructuras y variables a utilizar en los dos
formularios
Declaraciones en el Módulo
Public A() as integer, V() as integer
Public n as integer
Public i as integer, j as integer Elaborador por :
Ingº Diosa Pérez
Formulario 1 se mantiene la carga de la Matriz y el Vector
Private Sub Cargar_click()
Dim ct As Integer, ct2 As Integer, tira As String
do
n= val (inputbox(“De el valor de n”))
Loop until n>0 then
ReDim A(1 To n, 1 To n)
Randomize
ct2 = 11
ct = 10
For i = 1 To n
For j = 1 To n
' Int((Límite_Superior – Limite_Inferior +1)* Rnd) + Limite_inferior
If i = j Then
A(i, j) = Int(Rnd * (50 - 10 + 1)) + 10
End if
If i + j = n + 1 Then
A(i, j) = Int(Rnd * (90 - 60 + 1)) + 60
End if
Continuación…..
If i < j And i + j <> n + 1 Then
A(i, j) = ct
End If
If i > j And i + j <> n + 1 Then
A(i, j) = (i+j)^2
End If
Next j Private Sub Form_Load()
Next i
Ira2.enabled=false
Msgbox “Matriz cargada”
Form2.Frame1.visible=True
Ira2.enabled=True
CargarV.enabled=false
CargarV.enabled=True
End Sub
End Sub

Elaborador por :
Ingº Diosa Pérez
Private Sub CargarV_click()
dim max as integer
dim ctp as integer
For i=1 to n
Redim V(1 to n+1)
ctp=0
For i=1 to n
For j=1 to n
For j=1 to n
If A(i,j) mod 2 =0 then
If A(i,j)>max then
ctp=ctp+1
max=A(i,j)
end if
end if
next j
next j
V(1+i)=ctp
next i
Next i
V(1)=max
Msgbox “Vector creado”
End Sub Elaborador por :
Ingº Diosa Pérez
Private Sub Ira2_click()
form1.hide
form2.show
End Sub
Private Sub Imprimir_click()
Dim tira as string
label1.caption=“Matriz cuadrada”
list1.clear
for i=1 to n
tira=“”
for j=1 to n
tira=tira & (A(i,j)) & space(4)
next j
list1.additem tira Elaborador por :
Ingº Diosa Pérez
‘Impresión del Vector
text1.text=“”
Label2.caption=“Vector Creado”
For i=1 to n+1
text1.text=Text1.text & V(i) & space(5)
Next i
Frame1.visible=true
End sub
Private Sub Retornar_click()
Frame1.visible=false
Form2.hide
Form1.show
End sub Elaborador por :
Ingº Diosa Pérez
¿Cómo cargar
una matriz
con números
aleatorios?

Elabore una aplicación en VB que permita cargar e imprimir


sobre el formulario la siguiente matriz de orden N*N , con los
siguientes valores:
Int((Límite_Superior – Limite_Inferior +1)* Rnd )+ Limite_inferior

Rnd 12 14 16 Rnd1
13 Rnd 18 Rnd1 20
15 17 Rnd1 22 24
19 Rnd1 21 Rnd 26
Rnd1 23 25 27 Rnd

Rnd son números aleatorios entre 10y 20


Rnd1 números aleatororios entre 30 y 40 Elaborador por :
Ingº Diosa Pérez
¿Cómo cargar
un arreglo con
números
aleatorios?
Con el ejercicio anterior agregue un botón que
permita crear un vector que contenga los
siguientes elementos:
1. La primera posición será el mayor elemento
existente en el contorno de la matriz elevado
al cuadrado.
2. La segunda posición será la cantidad de
números pares que este en la diagonal
principal
3. El restos de los elementos será el mayor
elemento impar que haya por columna
Imprima en una caja de texto dicho vector.Elaborador por :
Ingº Diosa Pérez
¿Cómo cargar
un arreglo con
números
aleatorios?
Con el ejercicio anterior agregue un botón que
permita crear un vector 2 que contenga los
siguientes elementos:
1. Las primeras posiciones serán el mayor
elemento existente en cada columna.
2. La siguiente es el menor elemento de la
matriz
3. Las ultimas seran el menor elemento par
que haya por fila
Imprima en una caja de texto dicho vector.
Elaborador por :
Ingº Diosa Pérez
¿Cómo cargar
un arreglo con
números
aleatorios?
Con el ejercicio anterior agregue un botón que
permita crear un vector 3 que contenga los
siguientes elementos:
1. Las primeras posiciones serán los elementos
pares de la matriz
2. Las siguientes son los elementos impares de
la matriz
3. La ultima posición será el mayor elemento
ubicado en la fila central de la matriz,
Imprima en una caja de texto dicho vector.
Elaborador por :
Ingº Diosa Pérez
¿Cómo creo
esta matriz

Elabore una aplicación en VB que presente los


siguientes botones de comando
Cargar: permite cargar la siguiente matriz de orden
N*N , con los siguientes valores:

Rnd 4 5 6 Rnd
3 Rnd 8 10 12
4 7 Rnd 14 17
5 9 13 Rnd 22
Rnd 11 16 21 Rnd

Rnd son números aleatorios entre 10 y99


Elaborador por : Ingº Diosa Pérez
¿Cómo
creo este
vector?

Crear Vector: Permite crear un vector con los


siguientes valores:
Las primeras posiciones del vector estarà
conformado por los elementos de la matriz que están en
el contorno de la misma
La última será el promedio de los números aleatorios
que están en la matriz.
Ira2: permite ir a un segundo formulario donde se
imprimirán la matriz y el vector
¿Cómo
creo este
vector?

Crear Vector2: Permite crear un vector con los


siguientes valores:
Las primeras posiciones del vector estará
conformado por el mayor elemento por fila
multiplicado por la posición de la columna donde este
ubicado dicho elemento.
La última será el menor elemento ubicado en la
diagonal principal, multiplicado por el mayor elemento
ubicado en la columna mitad.
Ira3: permite ir a un tercer formulario donde se
imprimirán la matriz y el vector2
Salir: Finaliza la aplicación.

También podría gustarte