EIQ 150 Apuntes Programacion Parte I

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 20

EIQ – 150: Métodos Numéricos y Programación

Apuntes Programación

Preparado por Samuel Carrasco Hidalgo

1.- Habilitar a Excel para que ejecute macros

Office 2003

Ir a Herramientas > Macros > Seguridad…

Figura 1 : Herramientas > Macro > Seguridad...

Luego aparecerá un cuadro donde nos permite elegir el nivel de seguridad,


escogeremos la opción “Bajo”.
Figura 2 : Cuadro de Seguridad

Luego de aceptar los cambios se debe reiniciar la aplicación.

Office 2007 // 2010

Ir a las “Opciones de Excel” y habilitar la opción “Mostrar Ficha Programador en la


Cinta de Opciones”.

Figura 3 : Opciones de Excel 2007


Luego ir a la pestaña “Programador” que acabamos de habilitar y presionar en
“Seguridad de Macros”.

Figura 4 : Seguridad de Macros

Aparecerá un cuadro similar al de la Figura 2, y escogeremos la opción “Bajo”.


Aceptar los cambios y reiniciar la aplicación.

2.- Crear un Botón para comenzar a programar

Office 2003

Lo primero es habilitar la barra de herramientas de Visual Basic. Para esto vamos


a Ver > Barras de Herramientas > Visual Basic.

Figura 5 : Ver > Barras de Herramientas > Visual Basic

Aparecerá la siguiente barra de herramientas.


Figura 6 : Barra de Visual Basic

Donde el botón señalado nos mostrará otra barra de herramientas, llamada el


“Cuadro de Controles”.

Figura 7 : Cuadro de Controles

Finalmente haciendo click en el botón señalado en rojo, podremos “dibujar”


nuestro botón. Una vez dibujado, le hacemos doble click y automáticamente se
abrirá el editor de códigos de Visual Basic.

Office 2007

Es más sencillo crear el botón, solo basta con hacer click donde se señala en la
siguiente figura.

Figura 8 : Creando botones en Office 2007


Se realiza el mismo procedimiento que para Office 2003, se “dibuja” el botón, se le
hace doble click y entraremos en el editor de códigos de Visual Basic.

3.- El sistema de variables de Visual Basic

Visual Basic se basa en un sistema de variables donde se puede almacenar lo que


el usuario desee.

Hay que tener en cuenta que Visual Basic “lee” las líneas de programación de
derecha a izquierda. Por ejemplo:

n = 145

El valor 145 se almacenará en la variable n.

También se puede trabajar con expresiones, por ejemplo:

x = 10
s=x+3

El valor 10 se almacenará en la variable x, luego la expresión x + 3 (con x


evaluado en 10) se almacenará en la variable s.

De eso se trata básicamente el sistema de variables de Visual Basic.

4.- Operadores básicos, datos de entrada y datos de salida.

Operadores básicos

Los operadores son los que nos permitirán manipular las variables para obtener
los resultados que queramos. Están los clásicos:

Suma: +

Resta: -

Multiplicación: *

División: /
Pero también hay otros que son bastante útiles, estos son:

Tabla 1: Operadores útiles


Nomenclatura Nomenclatura Visual
Función
Clásica Basic
Valor Absoluto |X| Abs(X)
Parte Entera [X] Fix(X)
Elevado a ab a^b
Exponencial eX Exp(X)
Logaritmo Natural Ln(X) Log(X)
Raiz Cuadrada X1/2 Sqr(X)
Raiz n X1/n X^(1/n)
Seno Sen(X) Sin(x)
Coseno Cos(X) Cos(X)
Tangente Tan(X) Tan(X)
Arcotangente Atan(X) Atn(X)

Existe otro operador útil que para su entendimiento necesita ser explicado paso a
paso. Se trata del comando mod, lo que hace este es entregar el resto de dividir a
en b. Por ejemplo:

a=5
b=3
x = a Mod b

El valor 5 se almacenará en la variable a.


El valor 3 se almacenará en la variable b.
El resto de dividir 5 en 3 (que es 2) se almacenará en la variable x.

Datos de entrada

Existen dos modos de leer los datos de entrada: por medio de las celdas de la
planilla Excel, o por medio del inputbox.

Para leerlos desde las celdas, se usará el comando cells. Este tiene la forma:

Cells( F , C )

Donde F y C representan Filas y Columnas respectivamente y denotan la posición


de la celda objetivo. Por ejemplo:
Para identificar la celda que está en la tercera fila y en la quinta columna, se
escribe: Cells(3,5).

Y para guardar el valor que tiene una celda dentro de una variable, se hace de la
siguiente manera:

n = Cells( F , C )

El valor que tiene la celda se almacenará en la variable n.

El ingreso de datos más usado es por medio del inputbox. Este tiene la forma:

n = inputbox ( “___TEXTO___” )

Donde en la línea de subrayado va el texto que el usuario desee. Por ejemplo:

n = inputbox ( “Ingrese un número” )

Y al momento de hacer funcionar el programa (haciendo click al botón creado),


aparecerá:

Figura 9 : Inputbox

Datos de salida

También existen dos formas, por medio de las celdas, y por medio del msgbox.

Para lanzar datos a las celdas se hace de la siguiente manera:

Cells ( F , C ) = n

El valor que está almacenado en la variable n se lanzará a la celda.


Por otra parte, los msgbox solo requieren saber la variable que va a ser lanzada a
pantalla. Tienen la forma:

MsgBox (“ TEXTO “ & variable )

Donde en la parte subrayada va el texto que el usuario desee y en “variable” va la


variable que el usuario quiere que sea lanzada.

Por ejemplo: El siguiente msgbox dará lugar al siguiente cuadro de texto.


(Suponiendo que n = 25)

MsgBox ( “El Resultado es “ & n )

Figura 10: MsgBox

Programas de ejemplo

I.- Programa que calcula la hipotenusa de un triángulo rectángulo

Private Sub Programa_I ()

n = InputBox(“Ingrese el primer cateto”)


m = InputBox(“Ingrese el segundo cateto”)

hip = Sqr(n^2+m^2)

MsgBox(“El valor de la Hipotenusa es ” & hip)

End Sub
Explicación

Se leen los valores de los catetos y se guardan en las variables n y m.


Se operan estas variables utilizando la formula del cálculo de la hipotenusa y
el resultado se guarda en la variable hip.
Finalmente se entrega el resultado.

II.- Programa que calcula los valores de los ángulos de un triángulo rectángulo.

Private Sub Programa_II ()

n = InputBox(“Ingrese el valor del cateto opuesto al ángulo”)


m = InputBox(“Ingrese el valor del cateto adyacente al ángulo”)

a1 = Atn(n/m)

a1 = a1*180/3.14

a2 = 90 – a1

MsgBox(“Los valores de los ángulos son: ” & a1 & “ y ” & a2 )

End Sub

Explicación

Se leen los valores de los catetos y se guardan en las variables n y m.


Se operan estas variables usando la función del arcotangente (que entrega el
valor del ángulo en radianes) y se guarda en la variable a1.
a1 se opera de manera tal de transformarlo a los grados comúnmente
usados, y se vuelve a guardar en a1 (se sobre escribe).
Se calcula el valor del otro ángulo sabiendo que ambos deben sumar 90º, se
guarda este valor en a2.
Finalmente se entregan los resultados.

5.- El comando condicional IF

Es un comando que nos permitirá comparar 2 valores, y así discriminar uno de


otro. Tiene la siguiente estructura:
If condición then

Instrucciones

End If

Donde en condición irá la que el usuario desee, por ejemplo: n > 7, n <= m, etc…

Y en instrucciones podrán ir los operadores que el usuario desee.

El comando If funciona de la siguiente manera: Si la condición que se impone es


verdadera (se cumple) entonces el programa ejecutará las instrucciones que están
dentro del If, por otro lado, si la condición que se impone es falsa (no se cumple),
entonces el programa seguirá con las líneas de programación posteriores al “End
If”, sin ejecutar las instrucciones que están dentro del If.

Existen otras dos variaciones de este comando:

If condición then

Instrucciones1

Else

Instrucciones2

End If

Esta variación funciona de la siguiente manera: Si la condición que se impone se


cumple, entonces el programa pasa a ejecutar las instrucciones1, luego de
ejecutarlas sigue con las líneas de programación posteriores al “End If”. Por otro
lado, si la condición que se impone es falsa, entonces, el programa pasa a
ejecutar las instrucciones2, luego de ejecutarlas sigue con las líneas de
programación posteriores al “End If”.
La otra variación es la siguiente:

If condicicón1 then

Instrucciones1

ElseIf condición2 then

Instrucciones2

.
.
.
.
.
.

End If

Esta última funciona de la siguiente manera: Si la condición1 se cumple, entonces


se pasa a ejecutar las instrucciones1. Por otro lado, si la condicion1 es falsa,
entonces se pasa a probar la condición2, si esta última es verdadera, entonces, se
pasa a ejecutar las instrucciones2. Y así sucesivamente hasta llegar al “End If”.

Cabe destacar que en la parte de colocar la condición también se pueden colocar


más de una:

Tabla 2: Colocar más de una condición


Tipo de condiciones Nomenclatura Visual Basic
(A) Condición1 y Condición2 Condición1 and Condición2
(B) Condición1 o Condición2 Condición1 or condición2
(C) Condición1 o exclusivo Condición2 Condición1 xor Condición2

Para entender la siguiente explicación, ver la primera variación del comando If.

Primer caso (A): Si ambas condiciones se cumplen, entonces el programa pasará


a ejecutar las instrucciones1. Por otro lado, si alguna de las condiciones no se
cumple, entonces el programa pasará a ejecutar las instrucciones2.
Segundo caso (B): Solo basta con que alguna de las dos condiciones se cumpla
para que el programa pase a ejecutar las instrucciones1. El programa sólo
ejecutara las instrucciones2 si ambas condiciones son falsas.

Tercer caso (C): Si y solo si una de las condiciones es verdadera, el programa


ejecutará las instrucciones1. Si ambas condiciones son falsas, o ambas
verdaderas, entonces el programa ejecutará las instrucciones2.

Además, las comparaciones (mayor que, menor igual que, etc…) tienen una
nomenclatura especial en Visual Basic:

Tabla 3: Comparaciones
Comparación Nomenclatura Visual Basic
Mayor que >
Menor que <
Mayor o igual que >=
Menor o igual que <=
Distinto que <>

Programas de ejemplo

I.- Programa que identifica si un número ingresado es par o impar.

Private Sub Programa_I ()

n = InputBox(“Ingrese un número”)

If n mod 2 = 0 then

MsgBox(“El número ingresado es par”)

Else

MsgBox(“El número ingresado es impar”)

End If

End Sub
Explicación

Se recibe el dato y se guarda en la variable n.


Utilizando el comando If se comprueba si al dividir el número ingresado por
2 el resto da 0, si da 0 entonces el número es par, sino, es impar.

II.- Programa que calcula el logaritmo de un número en cualquier base

Private Sub Programa_II ()

n = InputBox(“Ingrese el argumento del logaritmo”)


m = InputBox(“Ingrese la base del logaritmo”)

If n > 0 and n <> 0 then

resul = log(n)/log(m)

MsgBox(“El resultado es: ” & resul )

End If

End Sub

Explicación

Se leen los datos necesarios: el argumento y la base del logaritmo se


guardan en las variables n y m.
Se comprueba si los datos ingresados son correctos, ya que el logaritmo
admite solo argumentos positivos y distintos de cero. Si lo anterior se
cumple, entonces, se procede con el cálculo del logaritmo usando la fórmula
de cambio de base de los logaritmos.
Luego se entrega el resultado.

NOTA: Si el msgbox se hubiese colocado después del “End If”, entonces, cada
vez que se coloquen datos erróneos, saldrá un mensaje que dirá que el resultado
es cero. Para evitar lo anterior se coloca el msgbox dentro del mismo “If”.
6.- “End” y “GoTo”

La función del comando “End” es terminar con la ejecución del programa donde el
usuario desee. Por otro lado, el comando “GoTo” permite llevar la línea de
ejecución hacia donde el usuario desee.

El funcionamiento de estos quedará mejor explicado con los siguientes ejemplos.

Programas de ejemplo

I.- Programa que calcula el logaritmo de un número en cualquier base (primera


variación)

Private Sub Programa_I ()

n = InputBox(“Ingrese el argumento del logaritmo”)


m = InputBox(“Ingrese la base del logaritmo”)

If n < 0 or n = 0 then

MsgBox(“El número ingresado es incorrecto”)

End

End If

resul = log(n)/log(m)

MsgBox(“El resultado es: ” & resul )

End Sub

Explicación

Se leen los datos necesarios: el argumento y la base del logatirmo se


guardan en la variables n y m.
Se comprueba si el argumento ingresado es negativo o cero. Si alguna de las
dos se cumple, entonces se le dará a conocer al usuario que el dato
ingresado es erróneo y el programa inmediatamente terminará.
Por otro lado, si los datos ingresados son correctos se procede a calcular y
mostrar el resultado.
II.- Programa que calcula el logaritmo de un número en cualquier base (segunda
variación).

Private Sub Programa_I ()

10

n = InputBox(“Ingrese el argumento del logaritmo”)


m = InputBox(“Ingrese la base del logaritmo”)

If n < 0 or n = 0 then

MsgBox(“El número ingresado es incorrecto, ingrese otro número”)

GoTo 10

End If

resul = log(n)/log(m)

MsgBox(“El resultado es: ” & resul )

End Sub

Explicación

Se leen los datos necesarios: el argumento y la base del logatirmo se


guardan en la variables n y m.
Se comprueba si el argumento ingresado es negativo o cero. Si alguna de las
dos se cumple, entonces se le dará a conocer al usuario que el dato
ingresado es erróneo y el programa inmediatamente irá a la línea identificada
como 10.
Por otro lado, si los datos ingresados son correctos se procede a calcular y
mostrar el resultado.

7.- Ciclos. El comando For.

Se trata de un comando que nos permitirá, entre otras cosas, analizar listas de
datos y evaluar expresiones matemáticas (como sumatorias, productorias y
factoriales).
La estructura general es la siguiente:

For variable = límite inferior to límite superior

Instrucciones

Next variable

Donde en variable e instrucciones irán las que el usuario desee. Y límite inferior y
límite superior determinarán cuantas veces se ejecutarán las instrucciones.

También es posible determinar el “paso” del ciclo, ya sea de a 2 en 2, de a 3 en 3,


de adelante hacia atrás, etc… Para esto después del límite superior se debe
colocar step #, donde en # irá el paso que el usuario desee.

Estructura general de las sumatorias

n
i2
Sea la siguiente sumatoria: 
i 1 n
EXP 1

Se puede programar de la siguiente forma:

Private Sub Sumatoria ()

n = InputBox(“Ingrese el límite superior de la sumatoria”)

For i = 1 to n

suma = suma + (i^2/n)

Next i

MsgBox(“El resultado es:” & suma)

End Sub

Explicación

Se recibe el dato del límite superior.


Se define el For con el límite inferior y superior, definidos por la sumatoria
(Ver EXP 1). Luego se calcula el valor de la sumatoria, cada vez que el For
vuelve a calcular “suma”, sobre escribe el valor anterior pero también lo
considera; para el mejor entendimiento véase lo siguiente:(Supóngase n = 5).
Cuando i = 1, suma = 0 + (1^2/5), luego cuando i = 2, suma = 0 + (1^2/5) +
(2^2/5), y así sucesivamente hasta que i = n = 5.Finalmente se entrega el
resultado.

Estructura general de las productorias

Sea la siguiente productoria:  i


i 1
2
n  EXP 2

Se puede programar de la siguiente forma:

Private Sub Productoria ()

n = InputBox(“Ingrese límite superior de la productoria”)

prod = 1

For i = 1 to n

prod = prod * (i^2+n)

Next i

MsgBox(“El resultado es:” & prod)

End Sub

Explicación

Se lee el dato del límite superior de la productoria.


Es importante definir el valor inicial de la productoria como 1, ya que es el
neutro multiplicativo. Si no se hiciera esto, el valor final de la sumatoria sería
0.
Se define el For con el límite inferior y superior, definidos por la EXP 2. Al
igual que las sumatorias, la expresión que va calculando el valor, va sobre
escribiendo el valor de la variable con cada vuelta del For. Para un mejor
entendimiento véase lo siguiente: (Suponiendo que n = 5)
Cuando i = 1, prod = 1*(1^2+5), luego, cuando i = 2, prod = (1^2+5)*(2^2+5), y
así sucesivamente hasta que i = n = 5.
Finalmente se entrega el resultado.
Estructura general de los factoriales

Sea el siguiente factorial: i 2



 1 ! EXP 3

Se puede programar de la siguiente manera:

Private Sub Factorial ()

n = InputBox(“Ingrese el valor de i”)

fac = 1

For i = 1 to (n^2+1)

fac = fac * i

Next i

MsgBox(“El resultado es:” & fac)

End Sub

Explicación

Son muy similares a las productorias. Solo que hay que tener cuidado al
definir el límite superior, ya que viene dado por la EXP 3. Además la
expresión que va calculando del valor del factorial, sólo debe ser
multiplicada por i.

Programas de ejemplo

I.- Programa que determina los números pares e impares que hay en una lista de
números (la lista está desde la celda 1,1 hacia abajo).

Private Sub Programa_I ()

n = InputBox(“Ingrese el largo de la lista”)

For i = 1 to n

If Cells(i,1) mod 2 = 0 then

Cells(i,2) = “PAR”

Else
Cells(i,2) = “IMPAR”

End If

Next i

End Sub

Explicación

Se lee el dato del largo de la lista


Luego se pasa al For, que recorrerá el largo de la lista.
Se comprueba si el valor que está en la celda al dividirlo por 2, el resto da 0,
entonces, si lo anterior se cumple en la celda de la derecha se imprime la
palabra “PAR”. En el caso contrario, se imprime la palabra “IMPAR”.

II.- Programa que comprueba si un número ingresado es primo o no.

Private Sub Programa_II ()

n = InputBox(“Ingrese un número”)

For i = 1 to n

If n mod i = 0 then

k = k +1

End If

Next i

If k <= 2 then

MsgBox(“El número ingresado es primo”)

Else

MsgBox(“El número ingresado NO es primo”)

End If

End Sub
Explicación

Se lee el número a analizar.


Luego, se utiliza el For para recorrer los número que existen entre 1 y n, esto
ya que hay que analizar si alguno de estos números es divisor de n. Si se
encuentra un divisor, entonces está la variable k que funciona como
contador, que a fin de cuentas servirá de indicador.
Luego se comprueba si el valor de k es menor o igual a 2, ya que los
números primos son sólo divisibles por 1 y si mismos. Si lo anterior se
cumple, entonces se muestra un mensaje que dice al usuario que el número
ingresado es primo. En el caso contrario se muestra el mensaje que el
número ingresado NO es primo.

También podría gustarte