Vous êtes sur la page 1sur 76

Algoritmos y Programación

Clase 6 - primera parte

Variables tipo arreglo (Arrays):


„ Vectores
„ Matrices

1
Repaso
„ Hasta ahora en el curso se estudió:
„ La representación de algoritmos usando
estructuras básicas: secuencia, selección
lógica, iteración.
„ Los tipos de datos
„ El concepto de variable Î Almacenan un solo
valor: numérico, cadena de caracteres, lógico,
etc.

2
Clase 6
Arreglos
„ Un arreglo (o array) es un conjunto de elementos
que tienen el mismo tipo de dato y se identifican
con un único nombre de variable.
„ Para referirse a un determinado elemento del
arreglo se utiliza un índice, que especifica su
posición relativa en el arreglo.
„ Los arreglos pueden ser de cualquier tipo de dato:
numérico, alfanuméricos, lógicos, etc.
A = A0 A1 A2 A3 … Ai … An-1 An
3
Clase 6
Clasificación de los arreglos
„ Los arreglos se clasifican de acuerdo al número
de dimensiones que tienen:
„ Unidimensionales (Vectores)
„ Bidimensionales (Matrices o Tablas)
„ Multidimensionales (tres o más dimensiones)
A0 A0,0 A0,1 … A0,n
A1 A1,0 A1,1 … A1,n
A2 A2,0 A2,1 … A2,n
… … … … …
An Am,0 Am,1 … Am,n 4
Clase 6
Dimensiones y Subíndices
„ El número de dimensiones especifican el tipo de
arreglo (vector, matriz, etc.).
„ Cada dimensión tiene un tamaño y se utiliza un
subíndice para hacer referencia a una posición en
esa dimensión.
„ Los vectores utilizan un solo subíndice que
especifica la posición del elemento en la
dimensión:
A(i)
5
Clase 6
Dimensiones y Subíndices
„ Las matrices tienen dos dimensiones: a la primera
dimensión se le llama Fila,
Fila a la segunda
dimensión se le llama Columna
„ Las matrices utilizan dos subíndices: uno para las
filas y otro para las columnas.
A(i, j)

Subíndice para
Subíndice para filas
columnas (segunda
(primera dimensión)
dimensión)
6
Clase 6
Declaración de arreglos
„ Un arreglo se declara con la instrucción Dim: Dim
Dim nombreArreglo(dimensiones) As tipoDato
„ nombreArreglo: es el nombre de una variable
„ tipoDato: Opcional. Es el tipo de dato del arreglo
(Integer, Long, Double, Boolean, String, etc.).
„ dimensiones: Opcional. Es una lista (separada por
coma) de las dimensiones del arreglo. VB acepta
hasta 60 dimensiones. Cada dimensión es de la
forma:
7
límiteInferior To
Clase 6 límiteSuperior
Declaración de arreglos
límiteInferior To límiteSuperior
„ límiteInferior: Opcional. Es un entero (positivo o
negativo) correspondiente al límite inferior del
arreglo en esa dimensión. Si se omite, también se
debe omitir la palabra clave To y su valor se
asume cero.
„ límiteSuperior: Requerido. Es un entero (positivo o
negativo) correspondiente al límite superior del
arreglo en esa dimensión. límiteSuperior debe ser
mayor o igual que límiteInferior. 8
Clase 6
Declaración de arreglos
„ Ejemplos:
Dim X(1 To 10) As Single, B() As Long
Dim Y(20) As Integer, W(10, 20) As Double
Dim Z(-30 To 50) As String
Dim A(5, -4 To 10) As Boolean
Dim C(5, 5, 5, 4) As Long
„ Observaciones:
„ Los paréntesis (después del nombre de la variable)
indican que la variable es un arreglo
„ Cuántos elementos tiene X? y B? y A? y C? 9
Clase 6
Tamaño de un arreglo
„ El tamaño de un arreglo se define como la
multiplicación de cada uno de los tamaños de las
dimensiones del arreglo.
„ El tamaño de una dimensión se calcula por la
siguiente fórmula:
Tamaño = límiteSuperior – límiteInferior + 1
„ Por ejemplo, en la declaración:
Dim Z(-30 To 50) As String
El tamaño del vector Z es 50 – (–30) + 1 = 81 elementos
10
Clase 6
Arreglos Estáticos
„ Un arreglo estático es aquel que, en su
declaración, se define el número de dimensiones
y el tamaño de cada dimensión. Es decir, tiene un
número constante de elementos.
„ Ejemplo:
Dim B(9) As Integer, A(7, 19) As Single
„ El vector B tendrá 10 elementos de tipo entero.
„ La matriz A tendrá 8 filas y 20 columnas, es decir,
160 elementos de tipo real simple.
11
Clase 6
Arreglos Dinámicos
„ Un arreglo dinámico es aquel cuyo tamaño y
número de dimensiones pueden cambiar. En la
declaración se colocan los paréntesis vacíos.
„ Ejemplo:
Dim X() As Long, B() As String
„ Para poder hacer referencia a un elemento del
arreglo dinámico, primero de debe
redimensionar la variable utilizando la instrucción
ReDim, especificando el número de dimensiones
y el tamaño de cada dimensión. 12
Clase 6
Arreglos Dinámicos
„ Sintaxis de la instrucción ReDim:
ReDim
ReDim nombreArreglo(dimensiones)
„ nombreArreglo: es el nombre de la variable a
redimensionar.
„ dimensiones: Requerido. Es una lista (separada por
coma) de las dimensiones del arreglo. Cada
dimensión es de la forma:
límiteInferior To límiteSuperior
„ límiteInferior es opcional. Si se omite se asume 0.
13
límiteSuperior es requerido.
Clase 6
Arreglos Dinámicos
„ Ejemplo:
Dim F() As Single ReDim permite cambiar
el número de elementos
... ó el número de
ReDim F(50) dimensiones del arreglo
pero NO su tipo de
... datos.
F(2) = 10.52
...
ReDim F(1 To 5, 5)
...
F(3, 0) = 4*F(1, 1) – 2.3 14
Clase 6
Arreglos Dinámicos
„ ReDim inicializa cada elemento del arreglo a su
valor por defecto (los numéricos a 0; String a “”;
Boolean a False; etc.).
„ ReDim Preserve permite conservar los datos del
arreglo.
„ Si utiliza la palabra clave Preserve sólo puede
cambiar el tamaño de la última dimensión del
arreglo y no es posible cambiar el número de
dimensiones. En este caso, los elementos del
arreglo no se inicializan a su valor por defecto. 15
Clase 6
Arreglos Dinámicos
„ Ejemplo:
A 0 A0
Dim A() As Integer
ReDim A(4)
-02 A1
A(2) = 5 0 A2
5
ReDim A(3)
8 A3
0
A(1) = -2
A(3) = 8 0 A4
K = 6 0 A5
ReDim Preserve A(K)
A(K) = -1 Memoria
-01 A6
16
RAM
Clase 6
Ejemplo 1
„ Para un vector x de n elementos reales,
hallar la suma, el promedio (μ) y la
desviación estándar (σ).

∑ (x i − μ)
2

σ= i =1
n −1
17
Clase 6
Ejemplo 1:
Definición de variables
„ Datos de entrada:
„ N Î Tamaño del vector X
„ Xi Î Elemento i-ésimo del vector X
„ Datos de salida:
„ Suma Î Suma de los elementos del vector X
„ Prom Î Promedio de los elementos del vector
„ Desv Î Desviación Estándar de los
elementos del vector.
18
Clase 6
Ejemplo 1: Código fuente
'Declaración de variables
Dim N As Integer, X() As Single, I As Integer
Dim Suma As Single, Prom As Single, Desv As Single
Dim Sum As Single
'Lectura de datos
N = Val(InputBox("Ingrese el valor de N:"))
ReDim X(1 To N)
For I = 1 To N
X(I) = Val(InputBox("X(" & I & ") ="))
Next I

19
Clase 6
Ejemplo 1: Código fuente
'Cálculo de la Suma y Promedio
Suma = 0
For I = 1 To N
Suma = Suma + X(I)
Next I
If N > 0 Then Prom = Suma / N
'Cálculo de la Desviación Estándar
Sum = 0
For I = 1 To N
Sum = Sum + (X(I) – Prom) ^ 2
Next I
If N > 1 Then Desv = Sqr(Sum / (N – 1))
20
Clase 6
Ejemplo 1: Código fuente
'Mostrar resultados
Text1.Text = "Vector Leído:" & vbCrLf
For I = 1 To N
Text1.Text = Text1.Text & "X(" & I & ")= " & _
X(I) & vbCrLf
Next I
Text1.Text = Text1.Text & "Suma = " & Suma & vbCrLf
Text1.Text = Text1.Text & "Prom = " & Prom & vbCrLf
Text1.Text = Text1.Text & "Desv = " & Desv & vbCrLf

21
Clase 6
Ejemplo 2
„ Realizar un algoritmo que permita sumar
dos matrices de orden nxm.
⎡a1,1 a1, 2 ... a1,m ⎤ ⎡b1,1 b1, 2 ... b1,m ⎤ ⎡c1,1 c1, 2 ... c1,m ⎤
⎢a a 2, 2 ... a 2,m ⎥⎥ ⎢⎢b2,1 b2, 2 ... b2,m ⎥⎥ ⎢⎢c2,1 c2, 2 ... c2,m ⎥⎥
⎢ 2,1
⎢a3,1 a 3, 2 ... a3,m ⎥ + ⎢b3,1 b3, 2 ... b3,m ⎥ = ⎢c3,1 c 3, 2 ... c 3, m ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢... ... ... ... ⎥ ⎢... ... ... ... ⎥ ⎢... ... ... ... ⎥
⎢a n,1 an, 2 ... a n,m ⎥⎦ ⎢⎣bn,1 bn, 2 ... bn,m ⎥⎦ ⎢⎣cn,1 cn, 2 ... cn,m ⎥⎦

22
Clase 6
Ejemplo 2:
Definición de variables
„ Datos de entrada:
„ N Î Número de filas
„ M Î Número de columnas
„ Ai,j Î Elementos de la matriz A
„ Bi,j Î Elementos de la matriz B
„ Datos de salida:
„ Ci,j Î Elementos de la matriz C

23
Clase 6
Ejemplo 2: Algoritmo
Inicio
Leer N, M
I = 1, N, 1
J = 1, M, 1
Leer Ai,j, Bi,j
I = 1, N, 1
J = 1, M, 1
Ci,j = Ai,j+Bi,j
Mostrar C
Terminar

24
Clase 6
Función LBound
„ Devuelve un tipo Long que contiene el subíndice más
pequeño disponible para la dimensión indicada de un
arreglo.
„ Sintaxis:
LBound(nombreArreglo, dimension)
„ nombreArreglo: Requerido. Nombre del arreglo.
„ dimensión: Opcional. Número entero que indica a qué
dimensión corresponde el límite inferior devuelto. Use 1
para la primera dimensión, 2 para la segunda y así
sucesivamente. Si dimensión se omite, se supone que es
1.
25
Clase 6
Función UBound
„ Devuelve un tipo Long que contiene el mayor subíndice
disponible para la dimensión indicada de un arreglo.
„ Sintaxis:
UBound(nombreArreglo, dimension)
„ nombreArreglo: Requerido. Nombre del arreglo.
„ dimensión: Opcional. Número entero que indica la
dimensión cuyo límite superior se devolverá. Use 1 para la
primera dimensión, 2 para la segunda y así
sucesivamente. Si dimensión se omite, se supone que es
1.

26
Clase 6
Ejemplos:
Función LBound y UBound
Dim A(1 To 100, 3, -3 To 4) As Integer

Instrucción Valor devuelto


LBound(A) 1
LBound(A, 1) 1
LBound(A, 2) 0
LBound(A, 3) -3
UBound(A) 100
UBound(A, 1) 100
UBound(A, 2) 3
UBound(A, 3) 4
UBound(A, 4) Error
27
Clase 6
Instrucción Erase
„ La instrucción Erase vuelve a inicializar (a su valor por
defecto) los elementos de los arreglos estáticos y elimina
los arreglos dinámicos.
„ Sintaxis:
Erase nombreArreglo
„ nombreArreglo Requerido. Nombre del arreglo.
nombreArreglo:
„ Antes de volver a utilizar un arreglo dinámico eliminado
con la instrucción Erase, se debe volver a declarar las
dimensiones del arreglo con la instrucción ReDim.

28
Clase 6
Tareas
„ Realizar un algoritmo para obtener el
mayor y el menor valor de un vector A de
n elementos enteros.
„ Realizar un algoritmo para obtener el
número de valores positivos, negativos y
ceros de un vector W de m elementos
enteros.
„ Realizar un algoritmo que permita
multiplicar dos matrices.
29
Clase 6
Algoritmos y Programación
Clase 6 – segunda parte
Graficación en Visual Basic:
„ Dibujar Puntos
„ Dibujar Líneas
„ Dibujar Circunferencias
„ Dibujar Elipses
„ Dibujar Texto
30
Visualización de gráficos
„ VB permite visualizar gráficos mediante:
„ El Formulario (Form)
„ El control PictureBox
„ La Impresora (Printer)
„ También se puede utilizar controles
especializados como Hojas de Excel,
Microsoft Chart, etc.

31
Clase 6
Visualización de gráficos
„ Ejemplo:

32
Clase 6
Caso de estudio:
Cómo graficar una función?

Escribir un algoritmo que permita graficar la


siguiente función f(x) con x∈[-1,2]:

1 1
f ( x) = + −6
( x − 0.3) + 0.01 ( x − 0.9) + 0.04
2 2

33
Clase 6
Graficar una función:
Procedimiento a seguir
„ Para graficar f(x) se define la función a través
de un subprograma.
„ Escalar el PictureBox entre el mínimo y el
máximo valor de la función en dicho intervalo.
„ Dibujar, con una estructura repetitiva, pequeños
trozos de línea para simular la forma suave de
la función, con x ∈[-1,2] en pasos de 0.01
34
Clase 6
Graficar una función: Definir
la función f(x)
En el objeto general del Formulario, definir la función de
la siguiente forma:

Public Function f(x As Single) As Single


f = 1 / ((x - 0.3) ^ 2 + 0.01) + _
1 / ((x - 0.9) ^ 2 + 0.04) - 6
End Function

35
Clase 6
Graficar una función: El
programa para dibujar
Dim X As Single
'Escalar el PictureBox
Picture1.Scale (-1, 100)-(2, -10)
'Dibujar los ejes X y Y
Picture1.DrawWidth = 4
Picture1.Line (-1, 0)-(2, 0) 'Eje X
Picture1.Line (0, 100)-(0, -10) 'Eje Y
'Dibujo de las líneas
Picture1.DrawWidth = 1
For X = -1 To 2 Step 0.01
Picture1.Line (X, f(X))-(X + 0.01, f(X + 0.01)), _
vbBlue
Next X
'Dibujar la ecuación de la función f(x)
Picture1.PaintPicture Picture2.Picture, 0.5, 95 36
Clase 6
Graficar una función: La
Interfaz

37
Clase 6
Graficar una función: La
Interfaz con escala

38
Clase 6
Tareas
„ Graficar para una función f(x), los rectángulos
resultantes al aplicarle el método de
integración rectangular.
„ Graficar la trayectoria (tiro parabólico) de un
proyectil que es disparado con una velocidad
inicial V0=20 m/s y un ángulo θ=45º. Considere,
además, la resistencia del aire.

V0

θ
39
Clase 6
Clase 6
Anexo

Graficación en Visual Basic:


„ Dibujar Puntos
„ Dibujar Líneas
„ Dibujar Circunferencias
„ Dibujar Elipses
„ Dibujar Texto
40
Graficar una función:
Dibujar la escala
Es muy conveniente dibujar las escalas de los ejes en la
graficación de una función f(x).

Picture1.Font.Name = "Courier New"


Picture1.Font.Size = 10
Picture1.Font.Bold = True
For X = -1 To 2 Step 0.5
Picture1.Line (X, 0.75)-(X, -0.75), vbBlack
Picture1.CurrentY = -0.75
Picture1.CurrentX = X - Picture1.TextWidth( _
Format(X, "0.0")) / 2
Picture1.Print Format(X, "0.0")
Next X
41
Clase 6
Sistema de Coordenadas
„ El sistema de coordenadas es una
cuadrícula bidimensional que define
ubicaciones en la pantalla, en un formulario
o en otro control.
„ Las ubicaciones de esta cuadrícula se
definen mediante las coordenadas del
objeto: (X, Y)

42
Clase 6
Sistema de Coordenadas
„ El valor de X es la ubicación del punto
sobre el eje x, con la ubicación
predeterminada 0 en el extremo izquierdo y
creciendo de izquierda a derecha.
„ El valor de Y es la ubicación del punto
sobre el eje y, con la ubicación
predeterminada 0 en el extremo superior y
creciendo de arriba hacia abajo.
43
Clase 6
Sistema de Coordenadas
(0, 0)

E
j
e
Propiedad Height Objeto
Y

(Width,
+
Height)
Eje X 44
Clase 6 Width
Propiedad +
Sistema de Coordenadas
„ La propiedad ScaleMode permite definir la unidad de
medida de las coordenadas de un objeto.
„ La unidad de medida por defecto es twip.
twip Un twip es 1/20
de punto de impresora (1.440 twips = 1 pulgada y 567
twips = 1 centímetro).
„ Otras unidades de medida: Punto, Píxel, Centímetros,
Milímetros, Pulgadas, etc.
„ Estas medidas definen el tamaño de un objeto cuando se
imprime. Las distancias físicas reales dentro de la pantalla
varían de acuerdo con el tamaño de la pantalla.
45
Clase 6
Modificar el Sistema de
Coordenadas: Método Scale
„ El método Scale permite definir un sistema de
coordenadas personalizado.
„ La sintaxis es:
objeto.Scale (x1,y1)-(x2,y2)

objeto Î Un objeto Form, PictureBox o Printer.


x1, y1 Î Valores Single que indican las coordenadas
horizontal (eje x) y vertical (eje y) que definen la
esquina superior izquierda del objeto.
x2, y2 Î Valores Single que indican las coordenadas
horizontal (eje x) y vertical (eje y) que definen la
46
esquina inferior Clase
derecha del objeto.
6
Método Scale
objeto.Scale (x1,y1)-(x2,y2)
(x1, y1)

Objeto

(x2, y2) 47
Clase 6
Método Scale: Ejemplo
Picture1.Scale (-100,100)-(100,-100)
(-100, 100)
Centro
relativo de
coordenadas

Picture1 (0, 0)

(100, -100) 48
Clase 6
Métodos Gráficos
„ VB proporciona varios métodos para la creación de gráficos:
„ Cls:
Cls Borra todos los gráficos y texto
„ Print:
Print Presenta texto
„ PSet:
PSet Establece el color de un píxel individual
„ Point:
Point Devuelve el color de un punto específico
„ Line:
Line Dibuja una línea, un rectángulo o un cuadro relleno
„ Circle:
Circle Dibuja un círculo, una elipse o un arco
„ PaintPicture:
PaintPicture Dibuja gráficos en ubicaciones arbitrarias

49
Clase 6
Propiedades Gráficas
„ Las propiedades gráficas son algunas propiedades que de
una forma u otra actúan en conjunto con los métodos
gráficos:
„ CurrentX:
CurrentX (Single) Devuelve o establece la coordenada
horizontal para el siguiente método gráfico o de impresión.
No disponible en tiempo de diseño.
„ CurrentY:
CurrentY (Single) Devuelve o establece la coordenada
vertical para el siguiente método gráfico o de impresión.
No disponible en tiempo de diseño.
„ AutoRedraw:
AutoRedraw (Boolean) Devuelve o establece el resultado
de un método gráfico como gráfico persistente. Un gráfico
persistente es un gráfico que no se “borra” cuando se
cubre con otra ventana. 50
Clase 6
Propiedades Gráficas
„ DrawWidth:
DrawWidth (1 a 32767) Devuelve o establece el ancho de
línea para el resultado de los métodos gráficos. El valor
predeterminado es 1, es decir, un píxel de ancho.
„ DrawStyle:
DrawStyle (0 a 6) Devuelve o establece un valor que
determina el estilo de línea del resultado de métodos
gráficos. Sólo tiene efecto si DrawWidth = 1. Estilos:
„ Sólido (vbSolid o 0):
„ Raya (vbDash o 1):
„ Punto (vbDot o 2):
„ Raya-Punto (vbDashDot o 3):
„ Raya-Punto-Punto (vbDashDotDot o 4):
„ Transparente (vbInvisible o 5) y Interior Sólido (vbInsideSolid o
51 6)
Clase 6
Propiedades Gráficas
„ ForeColor:
ForeColor (Long) Devuelve o establece el color de
primer plano utilizado para mostrar texto y gráficos en un
objeto.
„ FillColor:
FillColor (Long) Devuelve o establece el color usado
para llenar círculos y cuadros creados con los métodos
gráficos Circle y Line.
„ FillStyle (0 a 7) Devuelve o establece el patrón usado
FillStyle:
para llenar los círculos y los cuadros creados con los
métodos gráficos Circle y Line.

52
Clase 6
Propiedades Gráficas
Patrones propiedad FillStyle:
„ Sólido (vbFSSolid o 0):
„ Transparente (vbFSTransparent o 1):
„ Línea horizontal (vbHorizontalLine o 2):
„ Línea vertical (vbVerticalLine o 3):
„ Diagonal hacia arriba (vbUpwardDiagonal o 4):
„ Diagonal hacia abajo (vbDownwardDiagonal o 5):
„ Cruz (vbCross o 6):
„ Cruz diagonal (vbDiagonalCross o 7):
„ BackColor:
BackColor (Long) Devuelve o establece el color de fondo
de un objeto.
53
Clase 6
Método Cls
„ Borra los gráficos y el texto generados en tiempo de
ejecución de los controles Form o PictureBox.
„ Sintaxis:
objeto.
objeto Cls
„ Cls no borra los gráficos y texto colocados mientras la
propiedad AutoRedraw es True si AutoRedraw se
establece a False antes de llamar a Cls.
Cls Para borrar todo
asigne Nothing a la propiedad Picture:
Picture
objeto Picture = Nothing
Set objeto.
„ Después de llamar a Cls,
Cls las propiedades CurrentX y
CurrentY del objeto se restablecen a 0. 54
Clase 6
Método PSet
„ Establece un punto de un objeto Form, PictureBox o Printer a
un color especificado.
„ Sintaxis:
objeto.
objeto Pset (X,Y), color
„ (X,Y): Requerido. Valores de tipo Single que indican las
coordenadas del punto que se va a dibujar.
„ Color Opcional. Valor entero de tipo Long que indica el
Color:
color especificado para el punto.

„ Cuando se ejecuta PSet,


PSet las propiedades CurrentX y
CurrentY se establecen al punto especificado por los
argumentos (X, Y). 55
Clase 6
Método PSet: Ejemplo
Picture1.PSet (50,50), vbRed
(-100, 100)

Picture1

(100, -100) 56
Clase 6
Método Point
„ Devuelve, como un valor de tipo Long, el color rojo-verde-
azul (RGB) del punto especificado de un objeto Form o un
control PictureBox.
„ Sintaxis:
objeto.
objeto Point (X,Y)
„ (X,Y): Requerido. Valores de tipo Single que indican las
coordenadas del punto.

„ Si el punto definido por las coordenadas X e Y está fuera del


objeto, el método Point devuelve -1.
57
Clase 6
Método Line
„ Permite dibujar líneas y rectángulos.
„ Sintaxis:
objeto.
objeto Line (X1,Y1)-(X2,Y2),color,BF
„ (X1,Y1) Opcional. Coordenada del punto inicial para la
(X1,Y1):
línea. Si se omite, la línea empieza en la posición indicada
por CurrentX y CurrentY.
CurrentY
„ (X2,Y2) Requerido. Coordenada del punto final para la
(X2,Y2):
línea.
„ color:
color Opcional. Color de la línea. Si se omite, se usará el
valor de la propiedad ForeColor.
ForeColor
58
Clase 6
Método Line
„ B: Opcional. Si se incluye, hace que se dibuje un cuadro
usando las coordenadas para especificar las esquinas
opuestas del cuadro.
„ F: Opcional. La opción F especifica que el cuadro se llena
con el mismo color utilizado para dibujar el cuadro. No puede
usar F sin B. Si se utiliza B sin F, el cuadro se llena con los
valores actuales de FillColor y FillStyle.
FillStyle

„ Cuando se ejecuta Line,


Line las propiedades CurrentX y
CurrentY se establecen al punto final especificado por los
argumentos (X2, Y2).
59
Clase 6
Método Line: Ejemplo
Form1.Line (0,0)-(100,100),vbRed
Form1.PSet (-100,0),vbBlue
(-100, 100)
Form1.Line -(0,0),vbGreen
Form1.Line -(50,-50),vbBlack,B
Form1.Line -(25,100),vbRed,BF
Form1.FillStyle = vbFSSolid
Form1.Line (-10,10)-(-50,50), _
vbBlack,B

(100, -60
100)
Clase 6
Método Circle
„ Dibuja un círculo, una elipse o un arco en un objeto.
„ Sintaxis:
objeto.
objeto Circle (X,Y),r,color,inic,fin,asp
„ (X,Y): Requerido. Coordenada del punto central para el
círculo, elipse o arco.
„ r: Requerido. Radio del círculo, elipse o arco.
„ color Opcional. Color del contorno del círculo. Si se omite,
color:
se usará el valor de la propiedad ForeColor.
ForeColor
„ inic Opcional. Cuando se dibuja un arco o un círculo o una
inic:
elipse parcial, inic especifica (en radianes) la posición de
inicio del arco. El intervalo es de -2π radianes a 2π radianes.
El valor predeterminado para inic es 0 radianes. 61
Clase 6
Método Circle
„ fin Opcional. Cuando se dibuja un arco o un círculo o una
fin:
elipse parcial, fin especifica (en radianes) la posición de fin
del arco. El intervalo es de -2π radianes a 2π radianes. El
valor predeterminado para fin es 2π radianes.
„ asp Opcional. Indica la relación entre el diámetro vertical y
asp:
el diámetro horizontal. El valor predeterminado para asp es
1, lo que produce un círculo perfecto (no elíptico).

„ El método Circle siempre dibuja en dirección contraria a las


agujas del reloj (positiva).
62
Clase 6
Método Circle
„ Cuando dibuja un círculo o una elipse parcial, si inic es
negativo, Circle dibujará un radio hasta inic y tratará el
ángulo como positivo; si fin es negativo, Circle dibujará
un radio hasta fin y tratará el ángulo como positivo.

„ Cuando se ejecuta Circle,


Circle las propiedades CurrentX y
CurrentY se establecen al punto central especificado por
los argumentos (X, Y).

63
Clase 6
Método Circle: Ejemplo
Form1.Circle (0,0),50,vbRed
Form1.Circle (0,0),50,vbBlue,,,0.5
Form1.Cls (-100, 100)
Form1.Circle (0,0),50,vbRed, _
0, 3.1416
Form1.FillColor = vbYellow
Form1.FillStyle = vbFSSolid
Form1.Circle (0,0),25,vbRed, _
-0.000001, _
-1.5708

(100, -64
100)
Clase 6
Método Print
„ Dibuja texto en un objeto Form, PictureBox o Printer.
„ Sintaxis:
objeto.
objeto Print texto poscar
„ texto Opcional. Texto que se desea imprimir.
texto:
„ poscar Opcional. Especifica el punto de inserción del
poscar:
carácter siguiente. Utilice un punto y coma (;) para situar el
punto de inserción inmediatamente a continuación del último
carácter mostrado. Utilice una coma (,) para situar el punto
de inserción al principio de la siguiente zona de impresión
(cada 14 columnas). Si se omite poscar,
poscar el carácter
siguiente se imprimirá en la línea siguiente. En cada siguiente
línea se restablece la propiedad CurrentX a 0.
65
Clase 6
Método Print
„ El método Print comienza a imprimir a partir del valor de las
propiedades CurrentX y CurrentY.
CurrentY

„ De forma predeterminada, el método Print imprime el texto


y pasa a la línea siguiente. Si no hay texto, Print
simplemente salta una línea.

„ Después de ejecutar el método Print,


Print las propiedades
CurrentX y CurrentY cambian a la siguiente posición de
impresión (La siguiente posición de impresión depende del
tipo, tamaño y estilo de la fuente utilizada en el objeto).
66
Clase 6
Método Print: Ejemplo
Form1.Scale(-100,100)-(100,-100)
Form1.Print "Visual Basic"
Form1.Print (-100, 100)
Form1.Print "Pi = "; e= 2.718281828
Form1.Print 4*Atn(1)
Form1.ForeColor = vbMagenta
Form1.CurrentX = -100
Form1.CurrentY = 100
Form1.Print vbCrLf & "e=", _ Hola
Visual Basic
2.71828182845905 Pi = 3.14159265358
Form1.Cls
Form1.Print "Hola"

(100, -67
100)
Clase 6
Método TextHeight
„ Devuelve el alto de una cadena de texto tal y como se
imprimiría con la fuente actual de un objeto Form, PictureBox
o Printer.
„ Sintaxis:
objeto.
objeto TextHeight(texto)
„ texto Requerido. Una cadena para la que se quiere
texto:
determinar el alto del texto. Debe ir entre paréntesis.
„ Si el texto contiene retornos de carro, TextHeight devuelve
el alto de las líneas acumuladas, incluyendo el espacio que
hay por encima y por debajo de cada línea.
„ TextHeight retorna un valor negativo si el eje Y aumenta de
68
abajo hacia arriba, de lo contrario,
Clase 6
retorna un valor positivo.
Método TextWidth
„ Devuelve el ancho de una cadena de texto tal y como se
imprimiría con la fuente actual de un objeto Form, PictureBox
o Printer.
„ Sintaxis:
objeto.
objeto TextWidth(texto)
„ texto Requerido. Una cadena para la que se quiere
texto:
determinar el ancho del texto. Debe ir entre paréntesis.
„ Si el texto contiene retornos de carro, TextWidth devuelve
el ancho de la línea más larga.
„ TextWidth retorna un valor negativo si el eje X aumenta de
derecha a izquierda, de lo contrario, retorna un valor positivo.
69
Clase 6
Método Print: Ejemplo 2
Form1.Scale(-100,100)-(100,-100)
Form1.Font.Name = "Courier New"
Form1.Font.Size = 20 (-100, 100)
Form1.Font.Bold = True
Msg = "ABCDEFG"
Form1.Print Msg
Form1.Cls
X = -Form1.TextWidth(Msg)/2
Y = -Form1.TextHeight(Msg)/2
ABCDEFG
ABCDEFG
Form1.CurrentX = X
Form1.CurrentY = Y
Form1.Print Msg
(100, -70
100)
Clase 6
Método PaintPicture
„ Dibuja el contenido de un archivo gráfico (.bmp, .wmf, .emf,
.cur, .ico o .dib) en un objeto Form, PictureBox o Printer.
„ Sintaxis:
objeto.
objeto PaintPicture imagen, x1, y1

„ imagen Requerido. El origen del gráfico que se va a


imagen:
presentar en el objeto. Debe ser la propiedad Picture de un
objeto Form o control PictureBox.
PictureBox
„ y1 Requerido. Coordenada de destino del objeto.
x1, y1:

71
Clase 6
Instrucción SavePicture
„ Guarda una imagen ó gráfico en un archivo.
„ Sintaxis:
SavePicture imagen, archivo
„ imagen Requerido. La imagen que se desea guardar. Debe
imagen:
ser la propiedad Picture ó Image de un objeto Form o
control PictureBox.
PictureBox Para guardar el gráfico producido por
los métodos gráficos se utiliza la propiedad Image del objeto
„ archivo Requerido. El nombre del archivo gráfico. Puede
archivo:
incluir la ruta.
„ El gráfico se guarda en formato BMP (Mapa de Bits).
72
Clase 6
Trabajar con Colores
„ Un color se representa mediante un entero de tipo Long y
este valor tiene el mismo significado en todos los contextos
en los que se especifica un color.

„ Hay cuatro maneras de especificar un valor de color en


tiempo de ejecución:
„ Usar la función RGB

„ Usar la función QBColor

„ Usar una de las constantes intrínsecas de VB

„ Escribir un valor de color directamente (un número entre 0

y 16777215 (&HFFFFFF))
73
Clase 6
Función RGB
„ Devuelve un número entero tipo Long que representa un
valor de color RGB.
„ Sintaxis:
RGB(red, green, blue)
„ red Requerido. Un número en el intervalo [0,255] que
red:
representa el componente rojo del color.
„ green Requerido. Un número en el intervalo [0,255] que
green:
representa el componente verde del color.
„ blue Requerido. Un número en el intervalo [0,255] que
blue:
representa el componente azul del color.
74
Clase 6
Función QBColor
„ Devuelve un tipo Long que representa el código de color
RGB correspondiente al número de color especificado.
„ Sintaxis:
QBColor(num)
„ num:
num Requerido. Un número en el intervalo [0,15] que representa un
color según la siguiente tabla:
0: Negro 6: Amarillo 12: Rojo claro
1: Azul 7: Blanco 13: Fucsia claro
2: Verde 8: Gris 14: Amarillo claro
3: Aguamarina 9: Azul claro 15: Blanco brillante
4: Rojo 10: Verde claro
5: Fucsia 11: Aguamarina claro
75
Clase 6
Constantes de Colores
„VB define las siguientes constantes de colores:
Constante Valor Color
vbBlack 0
vbRed 255 (&HFF)
vbGreen 65280 (&HFF00)
vbYellow 65535 (&HFFFF)
vbBlue 16711680 (&HFF0000)
vbMagenta 16711935 (&HFF00FF)
vbCyan 16776960 (&HFFFF00)
vbWhite 16777215 (&HFFFFFF)
76
Clase 6

Vous aimerez peut-être aussi